Graphics/FrameGraph: Make use of RenderPassCache

This commit is contained in:
Jérôme Leclercq 2021-07-17 21:11:45 +02:00
parent 7e4f624ca7
commit 7fb5109dfa
4 changed files with 13 additions and 1 deletions

View File

@ -12,6 +12,7 @@
#include <Nazara/Graphics/TextureSamplerCache.hpp>
#include <Nazara/Renderer/Renderer.hpp>
#include <Nazara/Renderer/RenderDevice.hpp>
#include <Nazara/Renderer/RenderPassCache.hpp>
#include <Nazara/Renderer/RenderPipelineLayout.hpp>
#include <optional>
@ -38,6 +39,7 @@ namespace Nz
inline PixelFormat GetPreferredDepthStencilFormat() const;
inline const std::shared_ptr<RenderPipelineLayout>& GetReferencePipelineLayout() const;
inline const std::shared_ptr<RenderDevice>& GetRenderDevice() const;
inline const RenderPassCache& GetRenderPassCache() const;
inline TextureSamplerCache& GetSamplerCache();
struct Config
@ -58,6 +60,7 @@ namespace Nz
void BuildFullscreenVertexBuffer();
void SelectDepthStencilFormats();
std::optional<RenderPassCache> m_renderPassCache;
std::optional<TextureSamplerCache> m_samplerCache;
std::shared_ptr<AbstractBuffer> m_fullscreenVertexBuffer;
std::shared_ptr<RenderDevice> m_renderDevice;

View File

@ -42,6 +42,12 @@ namespace Nz
return m_renderDevice;
}
inline const RenderPassCache& Graphics::GetRenderPassCache() const
{
assert(m_renderPassCache);
return *m_renderPassCache;
}
inline TextureSamplerCache& Graphics::GetSamplerCache()
{
return *m_samplerCache;

View File

@ -851,7 +851,8 @@ namespace Nz
BuildPhysicalPassDependencies(colorAttachmentCount, depthStencilAttachmentIndex.has_value(), renderPassAttachments, subpassesDesc, subpassesDeps);
m_pending.renderPasses.push_back(renderDevice->InstantiateRenderPass(std::move(renderPassAttachments), std::move(subpassesDesc), std::move(subpassesDeps)));
m_pending.renderPasses.push_back(Graphics::Instance()->GetRenderPassCache().Get(renderPassAttachments, subpassesDesc, subpassesDeps));
//m_pending.renderPasses.push_back(renderDevice->InstantiateRenderPass(std::move(renderPassAttachments), std::move(subpassesDesc), std::move(subpassesDeps)));
physicalPassIndex++;
}

View File

@ -60,6 +60,7 @@ namespace Nz
if (!m_renderDevice)
throw std::runtime_error("failed to instantiate render device");
m_renderPassCache.emplace(*m_renderDevice);
m_samplerCache.emplace(m_renderDevice);
MaterialPipeline::Initialize();
@ -78,6 +79,7 @@ namespace Nz
Graphics::~Graphics()
{
MaterialPipeline::Uninitialize();
m_renderPassCache.reset();
m_samplerCache.reset();
m_fullscreenVertexBuffer.reset();
m_fullscreenVertexDeclaration.reset();