mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-23 10:54:14 +01:00
[dxvk] Add functionality to use secondary command buffers
This commit is contained in:
parent
7d35afdc37
commit
6c1bc35264
@ -441,6 +441,25 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void beginSecondaryCommandBuffer(
|
||||||
|
const VkCommandBufferInheritanceInfo& inheritanceInfo) {
|
||||||
|
m_execBuffer = std::exchange(m_cmd.cmdBuffers[uint32_t(DxvkCmdBuffer::ExecBuffer)],
|
||||||
|
m_graphicsPool->getSecondaryCommandBuffer(inheritanceInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VkCommandBuffer endSecondaryCommandBuffer() {
|
||||||
|
VkCommandBuffer cmd = getCmdBuffer();
|
||||||
|
|
||||||
|
if (m_vkd->vkEndCommandBuffer(cmd))
|
||||||
|
throw DxvkError("DxvkCommandList: Failed to end secondary command buffer");
|
||||||
|
|
||||||
|
m_cmd.cmdBuffers[uint32_t(DxvkCmdBuffer::ExecBuffer)] = m_execBuffer;
|
||||||
|
m_execBuffer = VK_NULL_HANDLE;
|
||||||
|
return cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void cmdBeginQuery(
|
void cmdBeginQuery(
|
||||||
VkQueryPool queryPool,
|
VkQueryPool queryPool,
|
||||||
uint32_t query,
|
uint32_t query,
|
||||||
@ -471,7 +490,7 @@ namespace dxvk {
|
|||||||
m_vkd->vkCmdBeginRendering(getCmdBuffer(), pRenderingInfo);
|
m_vkd->vkCmdBeginRendering(getCmdBuffer(), pRenderingInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void cmdBeginTransformFeedback(
|
void cmdBeginTransformFeedback(
|
||||||
uint32_t firstBuffer,
|
uint32_t firstBuffer,
|
||||||
uint32_t bufferCount,
|
uint32_t bufferCount,
|
||||||
@ -818,6 +837,15 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void cmdExecuteCommands(
|
||||||
|
uint32_t count,
|
||||||
|
VkCommandBuffer* commandBuffers) {
|
||||||
|
m_cmd.execCommands = true;
|
||||||
|
|
||||||
|
m_vkd->vkCmdExecuteCommands(getCmdBuffer(), count, commandBuffers);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void cmdFillBuffer(
|
void cmdFillBuffer(
|
||||||
DxvkCmdBuffer cmdBuffer,
|
DxvkCmdBuffer cmdBuffer,
|
||||||
VkBuffer dstBuffer,
|
VkBuffer dstBuffer,
|
||||||
@ -1143,6 +1171,7 @@ namespace dxvk {
|
|||||||
Rc<DxvkCommandPool> m_transferPool;
|
Rc<DxvkCommandPool> m_transferPool;
|
||||||
|
|
||||||
DxvkCommandSubmissionInfo m_cmd;
|
DxvkCommandSubmissionInfo m_cmd;
|
||||||
|
VkCommandBuffer m_execBuffer = VK_NULL_HANDLE;
|
||||||
|
|
||||||
PresenterSync m_wsiSemaphores = { };
|
PresenterSync m_wsiSemaphores = { };
|
||||||
uint64_t m_trackingId = 0u;
|
uint64_t m_trackingId = 0u;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user