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

Method create_cmd_buffer

src/device/vulkan/vulkan_renderer.cpp:150–180  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

148}
149
150bool vulkan_renderer::create_cmd_buffer() {
151 const auto& vk_queue = (const vulkan_queue&)cqueue;
152#if defined(FLOOR_DEBUG)
153 const char* cmd_buffer_label = (!cur_pipeline->get_description(multi_view).debug_label.empty() ?
154 cur_pipeline->get_description(multi_view).debug_label.c_str() :
155 "vk_renderer_cmd_buffer");
156#else
157 static constexpr const char* cmd_buffer_label = "vk_renderer_cmd_buffer";
158#endif
159 render_cmd_buffer = vk_queue.make_command_buffer(cmd_buffer_label);
160 const VkCommandBufferBeginInfo begin_info{
161 .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
162 .pNext = nullptr,
163 .flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
164 .pInheritanceInfo = nullptr,
165 };
166 VK_CALL_ERR_EXEC(vkBeginCommandBuffer(render_cmd_buffer.cmd_buffer, &begin_info),
167 "failed to begin command buffer", valid = false; return false;)
168
169 // register completion callback to destroy all framebuffers once we're done
170 vk_queue.add_completion_handler(render_cmd_buffer, [this]() {
171 for (const auto& fb : framebuffers) {
172 vkDestroyFramebuffer(((const vulkan_device&)cqueue.get_device()).device, fb, nullptr);
173 }
174 framebuffers.clear();
175 });
176
177 // can now use this cmd buffer + reuse it for every begin/end until commit is called
178 did_begin_cmd_buffer = true;
179 return true;
180}
181
182bool vulkan_renderer::begin(const dynamic_render_state_t dynamic_render_state) {
183#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