5#include "testing/testing.h"
20 resources.add_buffer(buffer);
22 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
33 EXPECT_EQ(
"bind_pipeline(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, pipeline=0x2)",
36 "bind_descriptor_sets(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, layout=0x3, "
37 "p_descriptor_sets=0x4)",
39 EXPECT_EQ(
"dispatch(group_count_x=1, group_count_y=1, group_count_z=1)",
log[2]);
52 resources.add_buffer(buffer);
56 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
68 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
80 EXPECT_EQ(
"bind_pipeline(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, pipeline=0x2)",
83 "bind_descriptor_sets(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, layout=0x3, "
84 "p_descriptor_sets=0x4)",
86 EXPECT_EQ(
"dispatch(group_count_x=1, group_count_y=1, group_count_z=1)",
log[2]);
88 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, "
89 "dst_stage_mask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT" +
91 " - buffer_barrier(src_access_mask=VK_ACCESS_SHADER_WRITE_BIT, "
92 "dst_access_mask=VK_ACCESS_SHADER_WRITE_BIT, buffer=0x1, offset=0, "
93 "size=18446744073709551615)" +
96 EXPECT_EQ(
"dispatch(group_count_x=2, group_count_y=2, group_count_z=2)",
log[4]);
111 resources.add_buffer(buffer);
115 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
127 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
139 EXPECT_EQ(
"bind_pipeline(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, pipeline=0x2)",
142 "bind_descriptor_sets(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, layout=0x3, "
143 "p_descriptor_sets=0x4)",
145 EXPECT_EQ(
"dispatch(group_count_x=1, group_count_y=1, group_count_z=1)",
log[2]);
147 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, "
148 "dst_stage_mask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT" +
150 " - buffer_barrier(src_access_mask=VK_ACCESS_SHADER_WRITE_BIT, "
151 "dst_access_mask=VK_ACCESS_SHADER_WRITE_BIT, buffer=0x1, offset=0, "
152 "size=18446744073709551615)" +
156 "bind_descriptor_sets(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, layout=0x3, "
157 "p_descriptor_sets=0x5)",
159 EXPECT_EQ(
"dispatch(group_count_x=2, group_count_y=2, group_count_z=2)",
log[5]);
173 resources.add_buffer(buffer);
177 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
189 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
201 EXPECT_EQ(
"bind_pipeline(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, pipeline=0x2)",
204 "bind_descriptor_sets(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, layout=0x4, "
205 "p_descriptor_sets=0x5)",
207 EXPECT_EQ(
"dispatch(group_count_x=1, group_count_y=1, group_count_z=1)",
log[2]);
209 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, "
210 "dst_stage_mask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT" +
212 " - buffer_barrier(src_access_mask=VK_ACCESS_SHADER_WRITE_BIT, "
213 "dst_access_mask=VK_ACCESS_SHADER_WRITE_BIT, buffer=0x1, offset=0, "
214 "size=18446744073709551615)" +
217 EXPECT_EQ(
"bind_pipeline(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, pipeline=0x3)",
219 EXPECT_EQ(
"dispatch(group_count_x=2, group_count_y=2, group_count_z=2)",
log[5]);
227 dispatch_dispatch_read_back_with_changing_pipelines_descriptor_sets)
236 resources.add_buffer(buffer);
240 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
252 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
264 EXPECT_EQ(
"bind_pipeline(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, pipeline=0x2)",
267 "bind_descriptor_sets(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, layout=0x4, "
268 "p_descriptor_sets=0x5)",
270 EXPECT_EQ(
"dispatch(group_count_x=1, group_count_y=1, group_count_z=1)",
log[2]);
272 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, "
273 "dst_stage_mask=VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT" +
275 " - buffer_barrier(src_access_mask=VK_ACCESS_SHADER_WRITE_BIT, "
276 "dst_access_mask=VK_ACCESS_SHADER_WRITE_BIT, buffer=0x1, offset=0, "
277 "size=18446744073709551615)" +
280 EXPECT_EQ(
"bind_pipeline(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, pipeline=0x3)",
283 "bind_descriptor_sets(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, layout=0x4, "
284 "p_descriptor_sets=0x6)",
286 EXPECT_EQ(
"dispatch(group_count_x=2, group_count_y=2, group_count_z=2)",
log[6]);
300 resources.add_buffer(buffer);
301 resources.add_buffer(command_buffer);
304 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
315 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "
316 "dst_stage_mask=VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT" +
318 " - buffer_barrier(src_access_mask=, "
319 "dst_access_mask=VK_ACCESS_INDIRECT_COMMAND_READ_BIT, buffer=0x2, offset=0, "
320 "size=18446744073709551615)" +
323 EXPECT_EQ(
"bind_pipeline(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, pipeline=0x3)",
326 "bind_descriptor_sets(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, layout=0x4, "
327 "p_descriptor_sets=0x5)",
329 EXPECT_EQ(
"dispatch_indirect(buffer=0x2, offset=0)",
log[3]);
340 resources.add_buffer(buffer);
341 resources.add_buffer(command_buffer);
345 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
357 access_info.
buffers.append({buffer, VK_ACCESS_SHADER_WRITE_BIT});
371 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, "
372 "dst_stage_mask=VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT" +
374 " - buffer_barrier(src_access_mask=, "
375 "dst_access_mask=VK_ACCESS_INDIRECT_COMMAND_READ_BIT, buffer=0x2, offset=0, "
376 "size=18446744073709551615)" +
379 EXPECT_EQ(
"bind_pipeline(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, pipeline=0x3)",
382 "bind_descriptor_sets(pipeline_bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, layout=0x4, "
383 "p_descriptor_sets=0x5)",
385 EXPECT_EQ(
"dispatch_indirect(buffer=0x2, offset=0)",
log[3]);
387 "pipeline_barrier(src_stage_mask=VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, "
388 "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, "
389 "dst_stage_mask=VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT" +
391 " - buffer_barrier(src_access_mask=VK_ACCESS_SHADER_WRITE_BIT, "
392 "dst_access_mask=VK_ACCESS_SHADER_WRITE_BIT, buffer=0x1, offset=0, "
393 "size=18446744073709551615)" +
396 EXPECT_EQ(
"dispatch_indirect(buffer=0x2, offset=12)",
log[5]);
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
VKDispatchCreateInfo CreateInfo
BLI_INLINE std::string & endl()
static void submit(std::unique_ptr< VKRenderGraph > &render_graph, std::unique_ptr< CommandBufferLog > &command_buffer)
TEST_F(VKRenderGraphTestCompute, dispatch_read_back)
VKDispatchData dispatch_node
VKPipelineData pipeline_data
VKDispatchIndirectData dispatch_indirect_node
VKPipelineData pipeline_data
VkPipelineLayout vk_pipeline_layout
VkDescriptorSet vk_descriptor_set
Vector< VKBufferAccess > buffers