Polyphase Game Engine
Loading...
Searching...
No Matches
RenderPassCache.h
Go to the documentation of this file.
1#pragma once
2
3#include "Image.h"
4#include "VulkanConstants.h"
5#include <vector>
6#include <unordered_map>
7
9{
10 // Config
11 VkFormat mDepthFormat = VK_FORMAT_UNDEFINED;
13 VkAttachmentLoadOp mLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
14 VkAttachmentStoreOp mStoreOp = VK_ATTACHMENT_STORE_OP_STORE;
15 VkAttachmentLoadOp mDepthLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
16 VkAttachmentStoreOp mDepthStoreOp = VK_ATTACHMENT_STORE_OP_STORE;
17 VkImageLayout mPreLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
18 VkImageLayout mPostLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
19
20 // Debug
21 const char* mDebugName = "";
22
23 bool operator==(const RenderPassConfig& other) const;
24 size_t Hash() const;
25};
26
28{
29 // Config
30 Image* mDepthImage = nullptr;
32 VkRenderPass mRenderPass;
33
34 // Debug
35 const char* mDebugName = "";
36
37 bool operator==(const FramebufferConfig& other) const;
38 size_t Hash() const;
39
40};
41
43{
44 size_t operator()(const RenderPassConfig& config) const
45 {
46 return config.Hash();
47 }
48};
49
51{
52 size_t operator()(const FramebufferConfig& config) const
53 {
54 return config.Hash();
55 }
56};
57
59{
60public:
61
62 void Create();
63 void Destroy();
64 void Clear(bool framebuffersOnly);
65
66 VkRenderPass ResolveRenderPass(const RenderPassConfig& config);
67 VkFramebuffer ResolveFramebuffer(const FramebufferConfig& config);
68
69protected:
70
71 std::unordered_map<RenderPassConfig, VkRenderPass, RenderPassHash> mRenderPassMap;
72 std::unordered_map<FramebufferConfig, VkFramebuffer, FramebufferHash> mFramebufferMap;
73
74};
#define MAX_RENDER_TARGETS
Definition VulkanConstants.h:11
Definition RenderPassCache.h:59
VkFramebuffer ResolveFramebuffer(const FramebufferConfig &config)
Definition RenderPassCache.cpp:161
std::unordered_map< FramebufferConfig, VkFramebuffer, FramebufferHash > mFramebufferMap
Definition RenderPassCache.h:72
void Destroy()
Definition RenderPassCache.cpp:11
std::unordered_map< RenderPassConfig, VkRenderPass, RenderPassHash > mRenderPassMap
Definition RenderPassCache.h:71
VkRenderPass ResolveRenderPass(const RenderPassConfig &config)
Definition RenderPassCache.cpp:41
void Create()
Definition RenderPassCache.cpp:6
Definition RenderPassCache.h:28
const char * mDebugName
Definition RenderPassCache.h:35
bool operator==(const FramebufferConfig &other) const
Definition RenderPassCache.cpp:276
Image * mColorImages[MAX_RENDER_TARGETS]
Definition RenderPassCache.h:31
VkRenderPass mRenderPass
Definition RenderPassCache.h:32
size_t Hash() const
Definition RenderPassCache.cpp:301
Image * mDepthImage
Definition RenderPassCache.h:30
Definition RenderPassCache.h:51
size_t operator()(const FramebufferConfig &config) const
Definition RenderPassCache.h:52
Definition RenderPassCache.h:9
VkAttachmentStoreOp mDepthStoreOp
Definition RenderPassCache.h:16
bool operator==(const RenderPassConfig &other) const
Definition RenderPassCache.cpp:220
VkImageLayout mPreLayout
Definition RenderPassCache.h:17
const char * mDebugName
Definition RenderPassCache.h:21
VkFormat mColorFormats[MAX_RENDER_TARGETS]
Definition RenderPassCache.h:12
VkFormat mDepthFormat
Definition RenderPassCache.h:11
VkImageLayout mPostLayout
Definition RenderPassCache.h:18
VkAttachmentStoreOp mStoreOp
Definition RenderPassCache.h:14
size_t Hash() const
Definition RenderPassCache.cpp:252
VkAttachmentLoadOp mLoadOp
Definition RenderPassCache.h:13
VkAttachmentLoadOp mDepthLoadOp
Definition RenderPassCache.h:15
Definition RenderPassCache.h:43
size_t operator()(const RenderPassConfig &config) const
Definition RenderPassCache.h:44