Submit a group of commands to secondary command buffer, and execute all of them.
2274 {
2276
2278
2279 VkCommandBufferInheritanceInfo inheritanceInfo {};
2280 inheritanceInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO;
2281 inheritanceInfo.renderPass =
m_Pass->Get();
2282 inheritanceInfo.subpass = subPass;
2284 inheritanceInfo.occlusionQueryEnable = VK_TRUE;
2285
2286#ifdef SPICES_DEBUG
2287
2289
2290#endif
2291
2292 VkCommandBufferBeginInfo cmdBufferBeginInfo {};
2293 cmdBufferBeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
2294 cmdBufferBeginInfo.flags = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT;
2295 cmdBufferBeginInfo.pInheritanceInfo = &inheritanceInfo;
2296
2297 VK_CHECK(vkBeginCommandBuffer(cmdBuffer, &cmdBufferBeginInfo))
2298
2299 func(cmdBuffer);
2300
2301 VK_CHECK(vkEndCommandBuffer(cmdBuffer))
2302
2303 return cmdBuffer;
2304 });
2305 }
#define SPICES_PROFILE_ZONE
#define VK_CHECK(expr)
Vulkan Check macro. Verify Vulkan API Effectiveness.
static FrameInfo & Get()
Get FrameInfo.
std::shared_ptr< RendererPass > m_Pass
RendererPass.
static auto AsyncRHITask(ThreadPoolEnum pool, F &&func, Args &&... args) -> std::future< decltype(func(nullptr, std::forward< Args >(args)...))>