Blender V4.3
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
11TEST(vk_render_graph, transfer_and_present)
12{
13 VkHandle<VkImage> back_buffer(1u);
14
16 VKResourceStateTracker resources;
17 VKRenderGraph render_graph(std::make_unique<CommandBufferLog>(log), resources);
18 resources.add_image(
19 back_buffer, 1, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, ResourceOwner::SWAP_CHAIN);
20
21 render_graph.submit_for_present(back_buffer);
22
23 EXPECT_EQ(1, log.size());
25 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "
26 "dst_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT" +
27 endl() +
28 " - image_barrier(src_access_mask=, dst_access_mask=, "
29 "old_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
30 "new_layout=VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, image=0x1, subresource_range=" +
31 endl() +
32 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
33 "base_array_layer=0, layer_count=4294967295 )" +
34 endl() + ")",
35 log[0]);
36}
37
38TEST(vk_render_graph, clear_and_present)
39{
40 VkHandle<VkImage> back_buffer(1u);
41
43 VKResourceStateTracker resources;
44 VKRenderGraph render_graph(std::make_unique<CommandBufferLog>(log), resources);
45 resources.add_image(back_buffer, 1, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, ResourceOwner::SWAP_CHAIN);
46
47 VKClearColorImageNode::CreateInfo clear_color_image = {};
48 clear_color_image.vk_image = back_buffer;
49 render_graph.add_node(clear_color_image);
50
51 render_graph.submit_for_present(back_buffer);
52
53 EXPECT_EQ(3, log.size());
54
56 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "
57 "dst_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT" +
58 endl() +
59 " - image_barrier(src_access_mask=, dst_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
60 "old_layout=VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, "
61 "new_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, image=0x1, subresource_range=" +
62 endl() +
63 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
64 "base_array_layer=0, layer_count=4294967295 )" +
65 endl() + ")",
66 log[0]);
67 EXPECT_EQ("clear_color_image(image=0x1, image_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)",
68 log[1]);
70 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TRANSFER_BIT, "
71 "dst_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT" +
72 endl() +
73 " - image_barrier(src_access_mask=VK_ACCESS_TRANSFER_WRITE_BIT, "
74 "dst_access_mask=, "
75 "old_layout=VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "
76 "new_layout=VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, image=0x1, subresource_range=" +
77 endl() +
78 " aspect_mask=VK_IMAGE_ASPECT_COLOR_BIT, base_mip_level=0, level_count=4294967295, "
79 "base_array_layer=0, layer_count=4294967295 )" +
80 endl() + ")",
81 log[2]);
82}
83
84} // namespace blender::gpu::render_graph
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
void submit_for_present(VkImage vk_swapchain_image)
void add_image(VkImage vk_image, uint32_t layer_count, VkImageLayout vk_image_layout, ResourceOwner owner, const char *name=nullptr)
ccl_device_inline float3 log(float3 v)
TEST(vk_render_graph, dispatch_read_back)