lots of updates

This commit is contained in:
2026-02-19 00:39:20 +02:00
parent 898bf90504
commit 4dd2e13c48
53 changed files with 1495 additions and 250 deletions

View File

@@ -26,6 +26,7 @@ public:
virtual void Reset() override;
virtual void Submit( int iFrameIndex ) override;
virtual void Render() override;
void FreeWithCommands();
private:
void SortDependencies();
void TryBarrier( int iCurrent, int iCurrentBuffer );
@@ -40,9 +41,23 @@ private:
VkDevice m_hDevice;
IVkCommandBufferManager *m_pMgr;
VkCommandPool m_hPool;
VkCommandPool m_hPool = NULL;
};
void CVkCommandBuffer::FreeWithCommands()
{
if (m_hPool)
{
for ( auto &c: m_commands)
{
delete c;
};
vkFreeCommandBuffers(m_hDevice, m_hPool, m_hBuffers.GetSize(), m_hBuffers.GetData());
vkDestroyCommandPool(m_hDevice, m_hPool, NULL);
m_hPool = NULL;
}
}
void CVkCommandBuffer::SetVulkanHandlers( VkDevice hDevice, IVkCommandBufferManager *pManager )
{
m_hDevice = hDevice;
@@ -54,6 +69,8 @@ void CVkCommandBuffer::Reset()
VkCommandBufferAllocateInfo commandBufferAllocInfo = {};
VkCommandPoolCreateInfo stCreateInfo = {};
FreeWithCommands();
stCreateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
stCreateInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT;
vkCreateCommandPool(m_hDevice, &stCreateInfo, NULL, &m_hPool);
@@ -343,6 +360,7 @@ public:
virtual IVkCommandBuffer *CreateCommandBuffer() override;
virtual CVkCommand *CreateCommand( const char *szName ) override;
virtual CUtlVector<VkCommandBuffer> &GetVulkanCommands() override;
virtual void FreeCommandBufferWithCommands(IVkCommandBuffer* pCommandBuffer) override;
virtual void RenderingFinished() override;
private:
@@ -399,6 +417,12 @@ CUtlVector<VkCommandBuffer> &CVkCommandBufferManager::GetVulkanCommands()
{
return m_commands;
}
void CVkCommandBufferManager::FreeCommandBufferWithCommands(IVkCommandBuffer* pCommandBuffer)
{
CVkCommandBuffer *pVkBuffer = (CVkCommandBuffer*)pCommandBuffer;
pVkBuffer->FreeWithCommands();
delete pVkBuffer;
};
void CVkCommandBufferManager::RenderingFinished()
{