Blender
V4.5
source
blender
gpu
vulkan
render_graph
tests
vk_render_graph_test_present.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2024 Blender Authors
2
*
3
* SPDX-License-Identifier: Apache-2.0 */
4
5
#include "testing/testing.h"
6
7
#include "
vk_render_graph_test_types.hh
"
8
9
namespace
blender::gpu::render_graph
{
10
11
class
VKRenderGraphTestPresent
:
public
VKRenderGraphTest
{};
12
13
TEST_F
(
VKRenderGraphTestPresent
, transfer_and_present)
14
{
15
VkHandle<VkImage>
back_buffer(1u);
16
17
resources.add_image(back_buffer, 1);
18
{
19
render_graph::VKSynchronizationNode::CreateInfo
synchronization = {};
20
synchronization.
vk_image
= back_buffer;
21
synchronization.
vk_image_layout
= VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
22
synchronization.
vk_image_aspect
= VK_IMAGE_ASPECT_COLOR_BIT;
23
render_graph
->add_node(synchronization);
24
}
25
26
submit(
render_graph
, command_buffer);
27
28
EXPECT_EQ
(1,
log
.size());
29
EXPECT_EQ
(
30
"pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "
31
"dst_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"
+
32
endl
() +
33
" - image_barrier(src_access_mask=, dst_access_mask=, "
34
"old_layout=VK_IMAGE_LAYOUT_UNDEFINED, "
35
"new_layout=VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, image=0x1, subresource_range="
+
36
endl
() +
37
" aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
38
"base_array_layer=0, layer_count=4294967295 )"
+
39
endl
() +
")"
,
40
log
[0]);
41
}
42
43
TEST_F
(
VKRenderGraphTestPresent
, clear_and_present)
44
{
45
VkHandle<VkImage>
back_buffer(1u);
46
47
resources.add_image(back_buffer, 1);
48
49
VKClearColorImageNode::CreateInfo
clear_color_image = {};
50
clear_color_image.
vk_image
= back_buffer;
51
render_graph
->add_node(clear_color_image);
52
53
{
54
render_graph::VKSynchronizationNode::CreateInfo
synchronization = {};
55
synchronization.
vk_image
= back_buffer;
56
synchronization.
vk_image_layout
= VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
57
synchronization.
vk_image_aspect
= VK_IMAGE_ASPECT_COLOR_BIT;
58
render_graph
->add_node(synchronization);
59
}
60
61
submit(
render_graph
, command_buffer);
62
63
EXPECT_EQ
(3,
log
.size());
64
65
EXPECT_EQ
(
66
"pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "
67
"dst_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT"
+
68
endl
() +
69
" - image_barrier(src_access_mask=, dst_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
70
"old_layout=VK_IMAGE_LAYOUT_UNDEFINED, "
71
"new_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, image=0x1, subresource_range="
+
72
endl
() +
73
" aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
74
"base_array_layer=0, layer_count=4294967295 )"
+
75
endl
() +
")"
,
76
log
[0]);
77
EXPECT_EQ
(
"clear_color_image(image=0x1, image_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)"
,
78
log
[1]);
79
EXPECT_EQ
(
80
"pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT, "
81
"dst_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"
+
82
endl
() +
83
" - image_barrier(src_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
84
"dst_access_mask=, "
85
"old_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
86
"new_layout=VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, image=0x1, subresource_range="
+
87
endl
() +
88
" aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
89
"base_array_layer=0, layer_count=4294967295 )"
+
90
endl
() +
")"
,
91
log
[2]);
92
}
93
94
}
// namespace blender::gpu::render_graph
EXPECT_EQ
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
blender::gpu::render_graph::VKNodeInfo< VKNodeType::SYNCHRONIZATION, VKSynchronizationCreateInfo, VKSynchronizationData, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VKResourceType::IMAGE|VKResourceType::BUFFER >::CreateInfo
VKSynchronizationCreateInfo CreateInfo
Definition
vk_node_info.hh:162
blender::gpu::render_graph::VKRenderGraphTestPresent
Definition
vk_render_graph_test_present.cc:11
blender::gpu::render_graph::VKRenderGraphTest::VKRenderGraphTest
VKRenderGraphTest()
Definition
vk_render_graph_test_types.hh:498
log
#define log
Definition
gpu_glsl_cpp_stubs.hh:774
blender::gpu::render_graph
Definition
vk_begin_query_node.hh:13
blender::gpu::render_graph::endl
BLI_INLINE std::string & endl()
Definition
vk_render_graph_test_types.hh:16
blender::gpu::render_graph::TEST_F
TEST_F(VKRenderGraphTestCompute, dispatch_read_back)
Definition
vk_render_graph_test_compute.cc:13
blender::gpu::render_graph::VKClearColorImageData::vk_image
VkImage vk_image
Definition
vk_clear_color_image_node.hh:19
blender::gpu::render_graph::VKSynchronizationCreateInfo::vk_image
VkImage vk_image
Definition
vk_synchronization_node.hh:24
blender::gpu::render_graph::VKSynchronizationCreateInfo::vk_image_aspect
VkImageAspectFlags vk_image_aspect
Definition
vk_synchronization_node.hh:26
blender::gpu::render_graph::VKSynchronizationCreateInfo::vk_image_layout
VkImageLayout vk_image_layout
Definition
vk_synchronization_node.hh:25
blender::gpu::render_graph::VkHandle
Definition
vk_render_graph_test_types.hh:555
vk_render_graph_test_types.hh
Generated on
for Blender by
doxygen
1.18.0