rendervulkan: Store queue and queue family in CVulkanCmdBuffer
This commit is contained in:
parent
6d0b0f5503
commit
ea15be6f1a
2 changed files with 13 additions and 6 deletions
|
@ -1104,7 +1104,7 @@ std::unique_ptr<CVulkanCmdBuffer> CVulkanDevice::commandBuffer()
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
cmdBuffer = std::make_unique<CVulkanCmdBuffer>(this, rawCmdBuffer);
|
||||
cmdBuffer = std::make_unique<CVulkanCmdBuffer>(this, rawCmdBuffer, queue(), queueFamily());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1146,7 +1146,7 @@ uint64_t CVulkanDevice::submit( std::unique_ptr<CVulkanCmdBuffer> cmdBuffer)
|
|||
.pSignalSemaphores = &m_scratchTimelineSemaphore,
|
||||
};
|
||||
|
||||
VkResult res = vk.QueueSubmit( queue(), 1, &submitInfo, VK_NULL_HANDLE );
|
||||
VkResult res = vk.QueueSubmit( cmdBuffer->queue(), 1, &submitInfo, VK_NULL_HANDLE );
|
||||
|
||||
if ( res != VK_SUCCESS )
|
||||
{
|
||||
|
@ -1206,8 +1206,8 @@ void CVulkanDevice::resetCmdBuffers(uint64_t sequence)
|
|||
m_pendingCmdBufs.erase(m_pendingCmdBufs.begin(), ++last);
|
||||
}
|
||||
|
||||
CVulkanCmdBuffer::CVulkanCmdBuffer(CVulkanDevice *parent, VkCommandBuffer cmdBuffer)
|
||||
: m_cmdBuffer(cmdBuffer), m_device(parent)
|
||||
CVulkanCmdBuffer::CVulkanCmdBuffer(CVulkanDevice *parent, VkCommandBuffer cmdBuffer, VkQueue queue, uint32_t queueFamily)
|
||||
: m_cmdBuffer(cmdBuffer), m_device(parent), m_queue(queue), m_queueFamily(queueFamily)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -1572,7 +1572,7 @@ void CVulkanCmdBuffer::insertBarrier(bool flush)
|
|||
.oldLayout = (state.discarded || state.needsImport) ? VK_IMAGE_LAYOUT_UNDEFINED : VK_IMAGE_LAYOUT_GENERAL,
|
||||
.newLayout = isPresent ? presentLayout : VK_IMAGE_LAYOUT_GENERAL,
|
||||
.srcQueueFamilyIndex = isExport ? m_device->queueFamily() : state.needsImport ? externalQueue : VK_QUEUE_FAMILY_IGNORED,
|
||||
.dstQueueFamilyIndex = isExport ? externalQueue : state.needsImport ? m_device->queueFamily() : VK_QUEUE_FAMILY_IGNORED,
|
||||
.dstQueueFamilyIndex = isExport ? externalQueue : state.needsImport ? m_queueFamily : m_queueFamily,
|
||||
.image = image->vkImage(),
|
||||
.subresourceRange = subResRange
|
||||
};
|
||||
|
|
|
@ -769,7 +769,7 @@ struct TextureState
|
|||
class CVulkanCmdBuffer
|
||||
{
|
||||
public:
|
||||
CVulkanCmdBuffer(CVulkanDevice *parent, VkCommandBuffer cmdBuffer);
|
||||
CVulkanCmdBuffer(CVulkanDevice *parent, VkCommandBuffer cmdBuffer, VkQueue queue, uint32_t queueFamily);
|
||||
~CVulkanCmdBuffer();
|
||||
CVulkanCmdBuffer(const CVulkanCmdBuffer& other) = delete;
|
||||
CVulkanCmdBuffer(CVulkanCmdBuffer&& other) = delete;
|
||||
|
@ -802,9 +802,16 @@ private:
|
|||
void markDirty(CVulkanTexture *image);
|
||||
void insertBarrier(bool flush = false);
|
||||
|
||||
VkQueue queue() { return m_queue; }
|
||||
uint32_t queueFamily() { return m_queueFamily; }
|
||||
|
||||
private:
|
||||
VkCommandBuffer m_cmdBuffer;
|
||||
CVulkanDevice *m_device;
|
||||
|
||||
VkQueue m_queue;
|
||||
uint32_t m_queueFamily;
|
||||
|
||||
// Per Use State
|
||||
std::unordered_map<CVulkanTexture *, std::shared_ptr<CVulkanTexture>> m_textureRefs;
|
||||
std::unordered_map<CVulkanTexture *, TextureState> m_textureState;
|
||||
|
|
Loading…
Reference in a new issue