Blender V5.0
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
8
10
12
13TEST_F(VKRenderGraphTestPresent, transfer_and_present)
14{
15 VkHandle<VkImage> back_buffer(1u);
16
17 resources.add_image(back_buffer, false);
18 {
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());
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
44{
45 VkHandle<VkImage> back_buffer(1u);
46
47 resources.add_image(back_buffer, false);
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 {
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
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]);
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(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
#define log
static void submit(std::unique_ptr< VKRenderGraph > &render_graph, std::unique_ptr< CommandBufferLog > &command_buffer)
TEST_F(VKRenderGraphTestCompute, dispatch_read_back)