added renderpass manager

This commit is contained in:
2026-08-29 12:31:10 +03:00
parent eef7d2b046
commit ee9bffcca4
12 changed files with 319 additions and 106 deletions
+9 -1
View File
@@ -156,8 +156,9 @@ VkFormat CVkImage::GetImageFormat( enum EImageFormat eImageFormat )
case IMAGE_FORMAT_D32_SFLOAT:
return VK_FORMAT_D32_SFLOAT;
default:
return VK_FORMAT_UNDEFINED;
}
return VK_FORMAT_UNDEFINED;
}
VkSampleCountFlagBits CVkImage::GetMultisampling( enum EMultisampleType eImageFormat )
@@ -514,6 +515,7 @@ public:
virtual void *GetVulkanPhysicalDevice() override;
virtual void *GetVulkanDevice() override;
virtual IImage *CreateImageFromVkImage( uint64_t pVkImage, uint32_t x, uint32_t y, uint64_t optimalLayout, EImageFormat eFormat, EMultisampleType eMultisampleType ) override;
private:
VkPhysicalDevice SelectPhysicalDevice( CUtlVector<VkPhysicalDevice> physicalDevices );
CUtlVector<const char *> GetDeviceExtensions();
@@ -538,6 +540,7 @@ private:
CUtlVector<CVkImage*> m_scheduledRemovalImages;
CVkSampler m_defaultSampler;
CRenderPassMgr m_renderPassMgr = {};
};
EXPOSE_INTERFACE(CVkRenderContext, IRenderContext, RENDER_CONTEXT_INTERFACE_VERSION);
@@ -681,6 +684,7 @@ IRenderCommandList *CVkRenderContext::CreateCommandList()
{
CVkRenderCommandList *pList = new CVkRenderCommandList;
pList->m_pCommandBufferManager = m_pCommandBufferManager;
pList->m_pRenderPassMgr = &m_renderPassMgr;
return pList;
}
@@ -941,6 +945,8 @@ void CVkRenderContext::Init()
samplerInfo.minLod = 0.0f;
samplerInfo.maxLod = VK_LOD_CLAMP_NONE;
vkCreateSampler(s_vkDevice, &samplerInfo, nullptr, &m_defaultSampler.m_sampler);
m_renderPassMgr.m_hDevice = s_vkDevice;
}
#include "time.h"
@@ -1127,6 +1133,8 @@ void CVkRenderContext::Frame( float fDeltaTime )
m_scheduledRemovalTextureArrays = {};
m_scheduledRemovalBuffers = {};
m_renderPassMgr.Frame();
}
VulkanWindow_t CVkRenderContext::CreateSwapchain( IGameWindow *pWindow )