lots of updates
This commit is contained in:
@@ -62,7 +62,11 @@ CVkImage::CVkImage( uint32_t nWidth, uint32_t nHeight, uint32_t nDepth, EImageFo
|
||||
m_eMultisampleType = eMultisampleType;
|
||||
m_eImageType = eImageType;
|
||||
m_eFormat = eFormat;
|
||||
m_ePreferredLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||
if (eFormat == IMAGE_FORMAT_D32_SFLOAT)
|
||||
m_ePreferredLayout = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL;
|
||||
else
|
||||
m_ePreferredLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||
|
||||
CreateImage(nWidth, nHeight, eFormat, eMultisampleType, eUsage);
|
||||
CreateImageView();
|
||||
}
|
||||
@@ -211,7 +215,7 @@ CVkBuffer::CVkBuffer( uint32_t nSize, VkBufferUsageFlags2 eUsage, uint32_t nAlig
|
||||
|
||||
CVkBuffer::~CVkBuffer()
|
||||
{
|
||||
|
||||
vmaDestroyBuffer(s_vkAllocator, m_buffer, m_allocation);
|
||||
}
|
||||
|
||||
|
||||
@@ -233,7 +237,9 @@ void *CVkBuffer::Map()
|
||||
void *pData;
|
||||
|
||||
pData = NULL;
|
||||
vmaMapMemory(s_vkAllocator, m_allocation, &pData);
|
||||
VkResult r = vmaMapMemory(s_vkAllocator, m_allocation, &pData);
|
||||
VULKAN_RESULT_PRINT(r, vmaMapMemory);
|
||||
|
||||
return pData;
|
||||
}
|
||||
|
||||
@@ -295,6 +301,10 @@ private:
|
||||
|
||||
CUtlVector<VulkanWindow_t> m_renderWindows;
|
||||
CUtlVector<CVkMaterial*> m_pMaterials;
|
||||
|
||||
CUtlVector<CVkRenderCommandList*> m_scheduledRemovalLists;
|
||||
CUtlVector<CVkBuffer*> m_scheduledRemovalBuffers;
|
||||
CUtlVector<CVkImage*> m_scheduledRemovalImages;
|
||||
};
|
||||
EXPOSE_INTERFACE(CVkRenderContext, IRenderContext, RENDER_CONTEXT_INTERFACE_VERSION);
|
||||
|
||||
@@ -366,7 +376,7 @@ IImage *CVkRenderContext::CreateStorageImage( uint32_t x, uint32_t y, EImageForm
|
||||
|
||||
void CVkRenderContext::DestroyBuffer( IBuffer *pBuffer )
|
||||
{
|
||||
delete (CVkBuffer*)pBuffer;
|
||||
m_scheduledRemovalBuffers.AppendTail((CVkBuffer*)pBuffer);
|
||||
}
|
||||
|
||||
void CVkRenderContext::DestroyImage( IImage *pImage )
|
||||
@@ -412,7 +422,7 @@ IRenderCommandList *CVkRenderContext::CreateCommandList()
|
||||
|
||||
void CVkRenderContext::DestroyCommandList( IRenderCommandList *pCommandList )
|
||||
{
|
||||
|
||||
m_scheduledRemovalLists.AppendTail((CVkRenderCommandList*)pCommandList);
|
||||
}
|
||||
|
||||
void CVkRenderContext::SubmitCommandList(IRenderCommandList *pList)
|
||||
@@ -711,6 +721,21 @@ void CVkRenderContext::Frame( float fDeltaTime )
|
||||
s.m_uCurrentFrame = (s.m_uCurrentFrame + 1) % FRAMES_IN_FLIGHT;
|
||||
}
|
||||
m_pCommandBufferManager->RenderingFinished();
|
||||
vkDeviceWaitIdle(s_vkDevice);
|
||||
|
||||
for (auto &a: m_scheduledRemovalBuffers)
|
||||
{
|
||||
delete a;
|
||||
}
|
||||
for (auto &a: m_scheduledRemovalLists)
|
||||
{
|
||||
delete a;
|
||||
}
|
||||
m_scheduledRemovalLists = {};
|
||||
m_scheduledRemovalBuffers = {};
|
||||
m_pCommandBufferManager->FreeCommandBufferWithCommands(s_pPresentCommandBuffer);
|
||||
vkDeviceWaitIdle(s_vkDevice);
|
||||
|
||||
}
|
||||
|
||||
VulkanWindow_t CVkRenderContext::CreateSwapchain( IGameWindow *pWindow )
|
||||
|
||||
Reference in New Issue
Block a user