18 static std::string
endl;
29 bool is_recording_ =
false;
33 bool use_dynamic_rendering_ =
true,
34 bool use_dynamic_rendering_local_read_ =
true)
44 EXPECT_FALSE(is_recording_);
50 EXPECT_TRUE(is_recording_);
51 is_recording_ =
false;
54 void bind_pipeline(VkPipelineBindPoint pipeline_bind_point, VkPipeline pipeline)
override
56 EXPECT_TRUE(is_recording_);
58 ss <<
"bind_pipeline(";
59 ss <<
"pipeline_bind_point=" <<
to_string(pipeline_bind_point);
60 ss <<
", pipeline=" <<
to_string(pipeline);
62 log_.append(ss.str());
66 VkPipelineLayout layout,
68 uint32_t descriptor_set_count,
69 const VkDescriptorSet *p_descriptor_sets,
70 uint32_t dynamic_offset_count,
71 const uint32_t *p_dynamic_offsets)
override
80 EXPECT_TRUE(is_recording_);
82 ss <<
"bind_descriptor_sets(";
83 ss <<
"pipeline_bind_point=" <<
to_string(pipeline_bind_point);
85 ss <<
", p_descriptor_sets=" <<
to_string(p_descriptor_sets[0]);
87 log_.append(ss.str());
90 void bind_index_buffer(VkBuffer buffer, VkDeviceSize offset, VkIndexType index_type)
override
93 EXPECT_TRUE(is_recording_);
94 GTEST_FAIL() << __func__ <<
" not implemented!";
98 uint32_t binding_count,
99 const VkBuffer *p_buffers,
100 const VkDeviceSize *p_offsets)
override
102 UNUSED_VARS(first_binding, binding_count, p_buffers, p_offsets);
103 EXPECT_TRUE(is_recording_);
104 GTEST_FAIL() << __func__ <<
" not implemented!";
107 void draw(uint32_t vertex_count,
108 uint32_t instance_count,
109 uint32_t first_vertex,
110 uint32_t first_instance)
override
112 EXPECT_TRUE(is_recording_);
113 std::stringstream ss;
115 ss <<
"vertex_count=" << vertex_count;
116 ss <<
", instance_count=" << instance_count;
117 ss <<
", first_vertex=" << first_vertex;
118 ss <<
", first_instance=" << first_instance;
120 log_.append(ss.str());
124 uint32_t instance_count,
125 uint32_t first_index,
127 uint32_t first_instance)
override
129 EXPECT_TRUE(is_recording_);
130 std::stringstream ss;
131 ss <<
"draw_indexed(";
132 ss <<
"index_count=" << index_count;
133 ss <<
", instance_count=" << instance_count;
134 ss <<
", first_index=" << first_index;
135 ss <<
", vertex_offset=" << vertex_offset;
136 ss <<
", first_instance=" << first_instance;
138 log_.append(ss.str());
144 uint32_t stride)
override
147 EXPECT_TRUE(is_recording_);
148 GTEST_FAIL() << __func__ <<
" not implemented!";
154 uint32_t stride)
override
157 EXPECT_TRUE(is_recording_);
158 GTEST_FAIL() << __func__ <<
" not implemented!";
161 void dispatch(uint32_t group_count_x, uint32_t group_count_y, uint32_t group_count_z)
override
163 UNUSED_VARS(group_count_x, group_count_y, group_count_z);
164 EXPECT_TRUE(is_recording_);
165 std::stringstream ss;
167 ss <<
"group_count_x=" << group_count_x;
168 ss <<
", group_count_y=" << group_count_y;
169 ss <<
", group_count_z=" << group_count_z;
171 log_.append(ss.str());
176 EXPECT_TRUE(is_recording_);
177 std::stringstream ss;
178 ss <<
"dispatch_indirect(";
180 ss <<
", offset=" << offset;
182 log_.append(ss.str());
186 VkDeviceSize dst_offset,
187 VkDeviceSize data_size,
188 const void * )
override
190 EXPECT_TRUE(is_recording_);
191 std::stringstream ss;
192 ss <<
"update_buffer(";
193 ss <<
"dst_buffer=" <<
to_string(dst_buffer);
194 ss <<
", dst_offset=" << dst_offset;
195 ss <<
", data_size=" << data_size;
197 log_.append(ss.str());
201 uint32_t region_count,
202 const VkBufferCopy *p_regions)
override
204 EXPECT_TRUE(is_recording_);
205 std::stringstream ss;
206 ss <<
"copy_buffer(";
207 ss <<
"src_buffer=" <<
to_string(src_buffer);
208 ss <<
", dst_buffer=" <<
to_string(dst_buffer);
211 ss <<
" - region(" <<
to_string(region, 1) <<
")" << std::endl;
214 log_.append(ss.str());
218 VkImageLayout src_image_layout,
220 VkImageLayout dst_image_layout,
221 uint32_t region_count,
222 const VkImageCopy *p_regions)
override
224 EXPECT_TRUE(is_recording_);
225 std::stringstream ss;
227 ss <<
"src_image=" <<
to_string(src_image);
228 ss <<
", src_image_layout=" <<
to_string(src_image_layout);
229 ss <<
", dst_image=" <<
to_string(dst_image);
230 ss <<
", dst_image_layout=" <<
to_string(dst_image_layout);
233 ss <<
" - region(" <<
to_string(region, 1) <<
")" << std::endl;
236 log_.append(ss.str());
240 VkImageLayout src_image_layout,
242 VkImageLayout dst_image_layout,
243 uint32_t region_count,
244 const VkImageBlit *p_regions,
247 EXPECT_TRUE(is_recording_);
248 std::stringstream ss;
250 ss <<
"src_image=" <<
to_string(src_image);
251 ss <<
", src_image_layout=" <<
to_string(src_image_layout);
252 ss <<
", dst_image=" <<
to_string(dst_image);
253 ss <<
", dst_image_layout=" <<
to_string(dst_image_layout);
257 ss <<
" - region(" <<
to_string(region, 1) <<
")" << std::endl;
260 log_.append(ss.str());
265 VkImageLayout dst_image_layout,
266 uint32_t region_count,
267 const VkBufferImageCopy *p_regions)
override
269 EXPECT_TRUE(is_recording_);
270 std::stringstream ss;
271 ss <<
"copy_buffer_to_image(";
272 ss <<
"src_buffer=" <<
to_string(src_buffer);
273 ss <<
", dst_image=" <<
to_string(dst_image);
274 ss <<
", src_image_layout=" <<
to_string(dst_image_layout);
278 ss <<
" - region(" <<
to_string(region, 1) <<
")" << std::endl;
281 log_.append(ss.str());
285 VkImageLayout src_image_layout,
287 uint32_t region_count,
288 const VkBufferImageCopy *p_regions)
override
290 EXPECT_TRUE(is_recording_);
291 std::stringstream ss;
292 ss <<
"copy_image_to_buffer(";
293 ss <<
"src_image=" <<
to_string(src_image);
294 ss <<
", src_image_layout=" <<
to_string(src_image_layout);
295 ss <<
", dst_buffer=" <<
to_string(dst_buffer);
299 ss <<
" - region(" <<
to_string(region, 1) <<
")" << std::endl;
302 log_.append(ss.str());
306 VkDeviceSize dst_offset,
308 uint32_t
data)
override
310 EXPECT_TRUE(is_recording_);
311 std::stringstream ss;
312 ss <<
"fill_buffer(";
313 ss <<
"dst_buffer=" <<
to_string(dst_buffer);
314 ss <<
", dst_offset=" << dst_offset;
315 ss <<
", size=" <<
size;
316 ss <<
", data=" <<
data;
318 log_.append(ss.str());
322 VkImageLayout image_layout,
323 const VkClearColorValue *p_color,
324 uint32_t range_count,
325 const VkImageSubresourceRange *p_ranges)
override
328 EXPECT_TRUE(is_recording_);
329 std::stringstream ss;
330 ss <<
"clear_color_image(";
332 ss <<
", image_layout=" <<
to_string(image_layout);
334 log_.append(ss.str());
338 VkImageLayout image_layout,
339 const VkClearDepthStencilValue *p_depth_stencil,
340 uint32_t range_count,
341 const VkImageSubresourceRange *p_ranges)
override
343 UNUSED_VARS(image, image_layout, p_depth_stencil, range_count, p_ranges);
344 EXPECT_TRUE(is_recording_);
345 GTEST_FAIL() << __func__ <<
" not implemented!";
349 const VkClearAttachment *p_attachments,
351 const VkClearRect *p_rects)
override
353 UNUSED_VARS(attachment_count, p_attachments, rect_count, p_rects);
354 EXPECT_TRUE(is_recording_);
355 std::stringstream ss;
356 ss <<
"clear_attachments(";
357 for (
const VkClearAttachment &attachment :
360 ss <<
" - attachment(" <<
to_string(attachment, 1) <<
")" << std::endl;
363 ss <<
" - rect(" <<
to_string(rect, 1) <<
")" << std::endl;
367 log_.append(ss.str());
371 VkPipelineStageFlags dst_stage_mask,
372 VkDependencyFlags dependency_flags,
373 uint32_t memory_barrier_count,
374 const VkMemoryBarrier *p_memory_barriers,
375 uint32_t buffer_memory_barrier_count,
376 const VkBufferMemoryBarrier *p_buffer_memory_barriers,
377 uint32_t image_memory_barrier_count,
378 const VkImageMemoryBarrier *p_image_memory_barriers)
override
380 UNUSED_VARS(dependency_flags, memory_barrier_count, p_memory_barriers);
381 EXPECT_TRUE(is_recording_);
382 std::stringstream ss;
383 ss <<
"pipeline_barrier(";
387 for (VkImageMemoryBarrier image_barrier :
390 ss <<
" - image_barrier(" <<
to_string(image_barrier, 1) <<
")" << std::endl;
392 for (VkBufferMemoryBarrier buffer_barrier :
395 ss <<
" - buffer_barrier(" <<
to_string(buffer_barrier, 1) <<
")" << std::endl;
399 log_.append(ss.str());
403 VkShaderStageFlags stage_flags,
406 const void *p_values)
override
409 EXPECT_TRUE(is_recording_);
410 GTEST_FAIL() << __func__ <<
" not implemented!";
415 EXPECT_TRUE(is_recording_);
416 std::stringstream ss;
417 ss <<
"begin_rendering(";
418 ss <<
"p_rendering_info=" <<
to_string(*p_rendering_info);
420 log_.append(ss.str());
425 EXPECT_TRUE(is_recording_);
426 std::stringstream ss;
427 ss <<
"end_rendering()";
428 log_.append(ss.str());
433 EXPECT_TRUE(is_recording_);
434 std::stringstream ss;
435 ss <<
"begin_render_pass(";
436 ss <<
"p_render_pass_begin_info=" <<
to_string(*p_render_pass_begin_info);
438 log_.append(ss.str());
443 EXPECT_TRUE(is_recording_);
444 std::stringstream ss;
445 ss <<
"end_render_pass()";
446 log_.append(ss.str());
451 VkQueryControlFlags )
override
463 EXPECT_TRUE(is_recording_);
464 std::stringstream ss;
465 ss <<
"set_viewport(num_viewports=" << viewports.
size() <<
")";
466 log_.append(ss.str());
471 EXPECT_TRUE(is_recording_);
472 std::stringstream ss;
473 ss <<
"set_scissor(num_scissors=" << scissors.
size() <<
")";
474 log_.append(ss.str());
483 const VkDescriptorBufferBindingInfoEXT * )
override
491 const VkDeviceSize * )
override
533 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
538 "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
561 operator VKObjectType()
const
568 std::unique_ptr<CommandBufferLog> &command_buffer)
575 command_buffer->begin_recording();
577 command_buffer->end_recording();
BMesh const char void * data
unsigned long long int uint64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void begin_render_pass(const VkRenderPassBeginInfo *p_render_pass_begin_info) override
void clear_attachments(uint32_t attachment_count, const VkClearAttachment *p_attachments, uint32_t rect_count, const VkClearRect *p_rects) override
void begin_rendering(const VkRenderingInfo *p_rendering_info) override
void update_buffer(VkBuffer dst_buffer, VkDeviceSize dst_offset, VkDeviceSize data_size, const void *) override
void begin_debug_utils_label(const VkDebugUtilsLabelEXT *) override
virtual ~CommandBufferLog()
void push_constants(VkPipelineLayout layout, VkShaderStageFlags stage_flags, uint32_t offset, uint32_t size, const void *p_values) override
void clear_depth_stencil_image(VkImage image, VkImageLayout image_layout, const VkClearDepthStencilValue *p_depth_stencil, uint32_t range_count, const VkImageSubresourceRange *p_ranges) override
void pipeline_barrier(VkPipelineStageFlags src_stage_mask, VkPipelineStageFlags dst_stage_mask, VkDependencyFlags dependency_flags, uint32_t memory_barrier_count, const VkMemoryBarrier *p_memory_barriers, uint32_t buffer_memory_barrier_count, const VkBufferMemoryBarrier *p_buffer_memory_barriers, uint32_t image_memory_barrier_count, const VkImageMemoryBarrier *p_image_memory_barriers) override
void copy_image_to_buffer(VkImage src_image, VkImageLayout src_image_layout, VkBuffer dst_buffer, uint32_t region_count, const VkBufferImageCopy *p_regions) override
void draw(uint32_t vertex_count, uint32_t instance_count, uint32_t first_vertex, uint32_t first_instance) override
void end_recording() override
void begin_recording() override
void bind_pipeline(VkPipelineBindPoint pipeline_bind_point, VkPipeline pipeline) override
void draw_indirect(VkBuffer buffer, VkDeviceSize offset, uint32_t draw_count, uint32_t stride) override
void copy_image(VkImage src_image, VkImageLayout src_image_layout, VkImage dst_image, VkImageLayout dst_image_layout, uint32_t region_count, const VkImageCopy *p_regions) override
void bind_vertex_buffers(uint32_t first_binding, uint32_t binding_count, const VkBuffer *p_buffers, const VkDeviceSize *p_offsets) override
void reset_query_pool(VkQueryPool, uint32_t, uint32_t) override
void begin_query(VkQueryPool, uint32_t, VkQueryControlFlags) override
void dispatch_indirect(VkBuffer buffer, VkDeviceSize offset) override
void draw_indexed_indirect(VkBuffer buffer, VkDeviceSize offset, uint32_t draw_count, uint32_t stride) override
void copy_buffer_to_image(VkBuffer src_buffer, VkImage dst_image, VkImageLayout dst_image_layout, uint32_t region_count, const VkBufferImageCopy *p_regions) override
void set_scissor(const Vector< VkRect2D > scissors) override
void bind_descriptor_buffers(uint32_t, const VkDescriptorBufferBindingInfoEXT *) override
void end_render_pass() override
void fill_buffer(VkBuffer dst_buffer, VkDeviceSize dst_offset, VkDeviceSize size, uint32_t data) override
CommandBufferLog(Vector< std::string > &log, bool use_dynamic_rendering_=true, bool use_dynamic_rendering_local_read_=true)
void draw_indexed(uint32_t index_count, uint32_t instance_count, uint32_t first_index, int32_t vertex_offset, uint32_t first_instance) override
void end_rendering() override
void end_query(VkQueryPool, uint32_t) override
void clear_color_image(VkImage image, VkImageLayout image_layout, const VkClearColorValue *p_color, uint32_t range_count, const VkImageSubresourceRange *p_ranges) override
void copy_buffer(VkBuffer src_buffer, VkBuffer dst_buffer, uint32_t region_count, const VkBufferCopy *p_regions) override
void dispatch(uint32_t group_count_x, uint32_t group_count_y, uint32_t group_count_z) override
void bind_index_buffer(VkBuffer buffer, VkDeviceSize offset, VkIndexType index_type) override
void set_descriptor_buffer_offsets(VkPipelineBindPoint, VkPipelineLayout, uint32_t, uint32_t, const uint32_t *, const VkDeviceSize *) override
void set_viewport(const Vector< VkViewport > viewports) override
void bind_descriptor_sets(VkPipelineBindPoint pipeline_bind_point, VkPipelineLayout layout, uint32_t first_set, uint32_t descriptor_set_count, const VkDescriptorSet *p_descriptor_sets, uint32_t dynamic_offset_count, const uint32_t *p_dynamic_offsets) override
void blit_image(VkImage src_image, VkImageLayout src_image_layout, VkImage dst_image, VkImageLayout dst_image_layout, uint32_t region_count, const VkImageBlit *p_regions, VkFilter filter) override
void end_debug_utils_label() override
bool use_dynamic_rendering_local_read
bool use_dynamic_rendering
VKCommandBufferInterface()
void record_commands(VKRenderGraph &render_graph, VKCommandBufferInterface &command_buffer, Span< NodeHandle > node_handles)
void build_nodes(VKRenderGraph &render_graph, VKCommandBufferInterface &command_buffer, Span< NodeHandle > node_handles)
bool use_dynamic_rendering
std::unique_ptr< VKRenderGraph > render_graph
bool use_dynamic_rendering_local_read
VkImageLayout color_attachment_layout() const
VKResourceStateTracker resources
std::unique_ptr< CommandBufferLog > command_buffer
Vector< std::string > log
std::string color_attachment_layout_str() const
VKResourceStateTracker resources
bool use_dynamic_rendering
std::unique_ptr< VKRenderGraph > render_graph
Vector< std::string > log
bool use_dynamic_rendering_local_read
std::unique_ptr< CommandBufferLog > command_buffer
Span< NodeHandle > select_nodes(const VKRenderGraph &render_graph)
BLI_INLINE std::string & endl()
static void submit(std::unique_ptr< VKRenderGraph > &render_graph, std::unique_ptr< CommandBufferLog > &command_buffer)
const char * to_string(ShaderStage stage)
std::string to_string_vk_pipeline_stage_flags(const VkPipelineStageFlags vk_pipeline_stage_flags)
VkHandle(uint64_t handle)