SpiecsEngine
 
Loading...
Searching...
No Matches

◆ CreateParallelCommandBuffers()

VkCommandBuffer Spices::VulkanCmdThreadPool::CreateParallelCommandBuffers ( uint32_t threadId)

Create second CommandBuffer in rhi threadPool thread.

Parameters
[in]threadId.
Returns
Returns second CommandBuffer.

Definition at line 173 of file VulkanCmdThreadPool.cpp.

174 {
176
177 if (!m_CmdPools[threadId])
178 {
180 }
181
182 VkCommandBufferAllocateInfo allocInfo{};
183 allocInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
184 allocInfo.commandPool = m_CmdPools[threadId];
185 allocInfo.level = VK_COMMAND_BUFFER_LEVEL_SECONDARY;
186 allocInfo.commandBufferCount = 1;
187
188 VkCommandBuffer cmdBuffer;
189
190 VK_CHECK(vkAllocateCommandBuffers(m_VulkanState.m_Device, &allocInfo, &cmdBuffer))
191 DEBUGUTILS_SETOBJECTNAME(VK_OBJECT_TYPE_COMMAND_BUFFER, (uint64_t)cmdBuffer, m_VulkanState.m_Device, "ParallelGraphicCommandBuffer")
193
194 m_CmdBuffers[FrameInfo::Get().m_FrameIndex][threadId].push_back(cmdBuffer);
195
196 return cmdBuffer;
197 }
#define SPICES_PROFILE_ZONE
#define SPICES_PROFILE_VK_COLLECT(cmdbuf)
#define VK_CHECK(expr)
Vulkan Check macro. Verify Vulkan API Effectiveness.
Definition VulkanUtils.h:68
std::vector< VkCommandPool > m_CmdPools
Parallel CommandPools.
std::array< std::vector< std::vector< VkCommandBuffer > >, MaxFrameInFlight > m_CmdBuffers
Parallel Secondary CommandBuffers.
static VkCommandPool & GetThreadGraphicCommandPool()
Get Thread Graphic VkCommandPool by thread id.
VulkanState & m_VulkanState
The global VulkanState Referenced from VulkanRenderBackend.