41 lines
822 B
C++
41 lines
822 B
C++
#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<RenderPassUsage> 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<RenderPassHandle> m_renderPassHandles;
|
|
CUtlVector<VkFramebuffer> m_scheduledReleasesFB;
|
|
CUtlVector<VkRenderPass> m_scheduledReleasesRP;
|
|
|
|
};
|
|
#endif
|