#ifndef RENDERPASSMGR_H #define RENDERPASSMGR_H #include "vulkan_state.h" struct RenderPassUsage { IImage *pImage; EImageFormat eFormat; EMultisampleType eMultisampleType; ELoadMode eLoadMode; EStoreMode eStoreMode; }; struct RenderPassHandle { uint32_t uWidth; uint32_t uHeight; CUtlVector usages; RenderPassUsage depth; VkRenderPass renderpass; VkFramebuffer framebuffer; bool bIsDepth; bool bIsUsed; }; class CRenderPassMgr { public: void CreateRenderPass(BeginInfo *pBeginInfo, VkRenderPass *prp, VkFramebuffer *pfb); void Frame(); VkDevice m_hDevice; private: RenderPassHandle *FindRenderPass(BeginInfo *pBeginInfo); CUtlVector m_renderPassHandles; CUtlVector m_scheduledReleasesFB; CUtlVector m_scheduledReleasesRP; }; #endif