18 static std::string
endl;
29 bool is_recording_ =
false;
41 EXPECT_FALSE(is_recording_);
47 EXPECT_TRUE(is_recording_);
48 is_recording_ =
false;
51 void bind_pipeline(VkPipelineBindPoint pipeline_bind_point, VkPipeline pipeline)
override
53 EXPECT_TRUE(is_recording_);
55 ss <<
"bind_pipeline(";
56 ss <<
"pipeline_bind_point=" <<
to_string(pipeline_bind_point);
57 ss <<
", pipeline=" <<
to_string(pipeline);
59 log_.append(ss.str());
63 VkPipelineLayout layout,
65 uint32_t descriptor_set_count,
66 const VkDescriptorSet *p_descriptor_sets,
67 uint32_t dynamic_offset_count,
68 const uint32_t *p_dynamic_offsets)
override
77 EXPECT_TRUE(is_recording_);
79 ss <<
"bind_descriptor_sets(";
80 ss <<
"pipeline_bind_point=" <<
to_string(pipeline_bind_point);
82 ss <<
", p_descriptor_sets=" <<
to_string(p_descriptor_sets[0]);
84 log_.append(ss.str());
87 void bind_index_buffer(VkBuffer buffer, VkDeviceSize offset, VkIndexType index_type)
override
90 EXPECT_TRUE(is_recording_);
91 GTEST_FAIL() << __func__ <<
" not implemented!";
95 uint32_t binding_count,
96 const VkBuffer *p_buffers,
97 const VkDeviceSize *p_offsets)
override
99 UNUSED_VARS(first_binding, binding_count, p_buffers, p_offsets);
100 EXPECT_TRUE(is_recording_);
101 GTEST_FAIL() << __func__ <<
" not implemented!";
104 void draw(uint32_t vertex_count,
105 uint32_t instance_count,
106 uint32_t first_vertex,
107 uint32_t first_instance)
override
109 EXPECT_TRUE(is_recording_);
110 std::stringstream ss;
112 ss <<
"vertex_count=" << vertex_count;
113 ss <<
", instance_count=" << instance_count;
114 ss <<
", first_vertex=" << first_vertex;
115 ss <<
", first_instance=" << first_instance;
117 log_.append(ss.str());
121 uint32_t instance_count,
122 uint32_t first_index,
124 uint32_t first_instance)
override
126 EXPECT_TRUE(is_recording_);
127 std::stringstream ss;
128 ss <<
"draw_indexed(";
129 ss <<
"index_count=" << index_count;
130 ss <<
", instance_count=" << instance_count;
131 ss <<
", first_index=" << first_index;
132 ss <<
", vertex_offset=" << vertex_offset;
133 ss <<
", first_instance=" << first_instance;
135 log_.append(ss.str());
141 uint32_t stride)
override
144 EXPECT_TRUE(is_recording_);
145 GTEST_FAIL() << __func__ <<
" not implemented!";
151 uint32_t stride)
override
154 EXPECT_TRUE(is_recording_);
155 GTEST_FAIL() << __func__ <<
" not implemented!";
158 void dispatch(uint32_t group_count_x, uint32_t group_count_y, uint32_t group_count_z)
override
160 UNUSED_VARS(group_count_x, group_count_y, group_count_z);
161 EXPECT_TRUE(is_recording_);
162 std::stringstream ss;
164 ss <<
"group_count_x=" << group_count_x;
165 ss <<
", group_count_y=" << group_count_y;
166 ss <<
", group_count_z=" << group_count_z;
168 log_.append(ss.str());
173 EXPECT_TRUE(is_recording_);
174 std::stringstream ss;
175 ss <<
"dispatch_indirect(";
177 ss <<
", offset=" << offset;
179 log_.append(ss.str());
183 VkDeviceSize dst_offset,
184 VkDeviceSize data_size,
185 const void * )
override
187 EXPECT_TRUE(is_recording_);
188 std::stringstream ss;
189 ss <<
"update_buffer(";
190 ss <<
"dst_buffer=" <<
to_string(dst_buffer);
191 ss <<
", dst_offset=" << dst_offset;
192 ss <<
", data_size=" << data_size;
194 log_.append(ss.str());
198 uint32_t region_count,
199 const VkBufferCopy *p_regions)
override
201 EXPECT_TRUE(is_recording_);
202 std::stringstream ss;
203 ss <<
"copy_buffer(";
204 ss <<
"src_buffer=" <<
to_string(src_buffer);
205 ss <<
", dst_buffer=" <<
to_string(dst_buffer);
208 ss <<
" - region(" <<
to_string(region, 1) <<
")" << std::endl;
211 log_.append(ss.str());
215 VkImageLayout src_image_layout,
217 VkImageLayout dst_image_layout,
218 uint32_t region_count,
219 const VkImageCopy *p_regions)
override
221 EXPECT_TRUE(is_recording_);
222 std::stringstream ss;
224 ss <<
"src_image=" <<
to_string(src_image);
225 ss <<
", src_image_layout=" <<
to_string(src_image_layout);
226 ss <<
", dst_image=" <<
to_string(dst_image);
227 ss <<
", dst_image_layout=" <<
to_string(dst_image_layout);
230 ss <<
" - region(" <<
to_string(region, 1) <<
")" << std::endl;
233 log_.append(ss.str());
237 VkImageLayout src_image_layout,
239 VkImageLayout dst_image_layout,
240 uint32_t region_count,
241 const VkImageBlit *p_regions,
244 EXPECT_TRUE(is_recording_);
245 std::stringstream ss;
247 ss <<
"src_image=" <<
to_string(src_image);
248 ss <<
", src_image_layout=" <<
to_string(src_image_layout);
249 ss <<
", dst_image=" <<
to_string(dst_image);
250 ss <<
", dst_image_layout=" <<
to_string(dst_image_layout);
254 ss <<
" - region(" <<
to_string(region, 1) <<
")" << std::endl;
257 log_.append(ss.str());
262 VkImageLayout dst_image_layout,
263 uint32_t region_count,
264 const VkBufferImageCopy *p_regions)
override
266 EXPECT_TRUE(is_recording_);
267 std::stringstream ss;
268 ss <<
"copy_buffer_to_image(";
269 ss <<
"src_buffer=" <<
to_string(src_buffer);
270 ss <<
", dst_image=" <<
to_string(dst_image);
271 ss <<
", src_image_layout=" <<
to_string(dst_image_layout);
275 ss <<
" - region(" <<
to_string(region, 1) <<
")" << std::endl;
278 log_.append(ss.str());
282 VkImageLayout src_image_layout,
284 uint32_t region_count,
285 const VkBufferImageCopy *p_regions)
override
287 EXPECT_TRUE(is_recording_);
288 std::stringstream ss;
289 ss <<
"copy_image_to_buffer(";
290 ss <<
"src_image=" <<
to_string(src_image);
291 ss <<
", src_image_layout=" <<
to_string(src_image_layout);
292 ss <<
", dst_buffer=" <<
to_string(dst_buffer);
296 ss <<
" - region(" <<
to_string(region, 1) <<
")" << std::endl;
299 log_.append(ss.str());
303 VkDeviceSize dst_offset,
305 uint32_t
data)
override
307 EXPECT_TRUE(is_recording_);
308 std::stringstream ss;
309 ss <<
"fill_buffer(";
310 ss <<
"dst_buffer=" <<
to_string(dst_buffer);
311 ss <<
", dst_offset=" << dst_offset;
312 ss <<
", size=" <<
size;
313 ss <<
", data=" <<
data;
315 log_.append(ss.str());
319 VkImageLayout image_layout,
320 const VkClearColorValue *p_color,
321 uint32_t range_count,
322 const VkImageSubresourceRange *p_ranges)
override
325 EXPECT_TRUE(is_recording_);
326 std::stringstream ss;
327 ss <<
"clear_color_image(";
329 ss <<
", image_layout=" <<
to_string(image_layout);
331 log_.append(ss.str());
335 VkImageLayout image_layout,
336 const VkClearDepthStencilValue *p_depth_stencil,
337 uint32_t range_count,
338 const VkImageSubresourceRange *p_ranges)
override
340 UNUSED_VARS(image, image_layout, p_depth_stencil, range_count, p_ranges);
341 EXPECT_TRUE(is_recording_);
342 GTEST_FAIL() << __func__ <<
" not implemented!";
346 const VkClearAttachment *p_attachments,
348 const VkClearRect *p_rects)
override
350 UNUSED_VARS(attachment_count, p_attachments, rect_count, p_rects);
351 EXPECT_TRUE(is_recording_);
352 std::stringstream ss;
353 ss <<
"clear_attachments(";
354 for (
const VkClearAttachment &attachment :
357 ss <<
" - attachment(" <<
to_string(attachment, 1) <<
")" << std::endl;
360 ss <<
" - rect(" <<
to_string(rect, 1) <<
")" << std::endl;
364 log_.append(ss.str());
368 VkPipelineStageFlags dst_stage_mask,
369 VkDependencyFlags dependency_flags,
370 uint32_t memory_barrier_count,
371 const VkMemoryBarrier *p_memory_barriers,
372 uint32_t buffer_memory_barrier_count,
373 const VkBufferMemoryBarrier *p_buffer_memory_barriers,
374 uint32_t image_memory_barrier_count,
375 const VkImageMemoryBarrier *p_image_memory_barriers)
override
377 UNUSED_VARS(dependency_flags, memory_barrier_count, p_memory_barriers);
378 EXPECT_TRUE(is_recording_);
379 std::stringstream ss;
380 ss <<
"pipeline_barrier(";
384 for (VkImageMemoryBarrier image_barrier :
387 ss <<
" - image_barrier(" <<
to_string(image_barrier, 1) <<
")" << std::endl;
389 for (VkBufferMemoryBarrier buffer_barrier :
392 ss <<
" - buffer_barrier(" <<
to_string(buffer_barrier, 1) <<
")" << std::endl;
396 log_.append(ss.str());
400 VkShaderStageFlags stage_flags,
403 const void *p_values)
override
406 EXPECT_TRUE(is_recording_);
407 GTEST_FAIL() << __func__ <<
" not implemented!";
412 EXPECT_TRUE(is_recording_);
413 std::stringstream ss;
414 ss <<
"begin_rendering(";
415 ss <<
"p_rendering_info=" <<
to_string(*p_rendering_info);
417 log_.append(ss.str());
422 EXPECT_TRUE(is_recording_);
423 std::stringstream ss;
424 ss <<
"end_rendering()";
425 log_.append(ss.str());
430 VkQueryControlFlags )
override
442 EXPECT_TRUE(is_recording_);
443 std::stringstream ss;
444 ss <<
"set_viewport(num_viewports=" << viewports.
size() <<
")";
445 log_.append(ss.str());
450 EXPECT_TRUE(is_recording_);
451 std::stringstream ss;
452 ss <<
"set_scissor(num_scissors=" << scissors.
size() <<
")";
453 log_.append(ss.str());
458 EXPECT_TRUE(is_recording_);
459 std::stringstream ss;
460 ss <<
"set_line_width(line_width=" << line_width <<
")";
461 log_.append(ss.str());
470 const VkDescriptorBufferBindingInfoEXT * )
override
478 const VkDeviceSize * )
override
514 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
519 "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
541 operator VKObjectType()
const
548 std::unique_ptr<CommandBufferLog> &command_buffer)
555 command_buffer->begin_recording();
557 command_buffer->end_recording();
BMesh const char void * data
unsigned long long int uint64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
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
CommandBufferLog(Vector< std::string > &log, bool use_dynamic_rendering_local_read_=true)
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 fill_buffer(VkBuffer dst_buffer, VkDeviceSize dst_offset, VkDeviceSize size, uint32_t data) override
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
void set_line_width(const float line_width) override
bool use_dynamic_rendering_local_read
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)
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
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)