MCPcopy Create free account
hub / github.com/a2flo/floor / create_cmd_buffer

Method create_cmd_buffer

graphics/vulkan/vulkan_renderer.cpp:102–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

100}
101
102bool vulkan_renderer::create_cmd_buffer() {
103 const auto& vk_queue = (const vulkan_queue&)cqueue;
104#if defined(FLOOR_DEBUG)
105 const char* cmd_buffer_label = (!cur_pipeline->get_description(multi_view).debug_label.empty() ?
106 cur_pipeline->get_description(multi_view).debug_label.c_str() :
107 "vk_renderer_cmd_buffer");
108#else
109 static constexpr const char* cmd_buffer_label = "vk_renderer_cmd_buffer";
110#endif
111 render_cmd_buffer = vk_queue.make_command_buffer(cmd_buffer_label);
112 const VkCommandBufferBeginInfo begin_info{
113 .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
114 .pNext = nullptr,
115 .flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
116 .pInheritanceInfo = nullptr,
117 };
118 VK_CALL_ERR_EXEC(vkBeginCommandBuffer(render_cmd_buffer.cmd_buffer, &begin_info),
119 "failed to begin command buffer", valid = false; return false;)
120
121 // register completion callback to destroy all framebuffers once we're done
122 vk_queue.add_completion_handler(render_cmd_buffer, [this]() {
123 for (const auto& fb : framebuffers) {
124 vkDestroyFramebuffer(((const vulkan_device&)cqueue.get_device()).device, fb, nullptr);
125 }
126 framebuffers.clear();
127 });
128
129 // can now use this cmd buffer + reuse it for every begin/end until commit is called
130 did_begin_cmd_buffer = true;
131 return true;
132}
133
134bool vulkan_renderer::begin(const dynamic_render_state_t dynamic_render_state) {
135#if defined(FLOOR_DEBUG)

Callers

nothing calls this directly

Calls 5

make_command_bufferMethod · 0.80
get_deviceMethod · 0.80
emptyMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected