From f4968172e395b202cd8aa2a1e79c413a62189f47 Mon Sep 17 00:00:00 2001 From: assiduous Date: Thu, 18 Mar 2021 13:14:05 -0700 Subject: PipelineResourceSignatureD3D11Impl: reworked resource allocation --- .../include/PipelineResourceSignatureGLImpl.hpp | 2 +- .../GraphicsEngineOpenGL/src/PipelineResourceSignatureGLImpl.cpp | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'Graphics/GraphicsEngineOpenGL') diff --git a/Graphics/GraphicsEngineOpenGL/include/PipelineResourceSignatureGLImpl.hpp b/Graphics/GraphicsEngineOpenGL/include/PipelineResourceSignatureGLImpl.hpp index 31bd3eaf..ccefba27 100644 --- a/Graphics/GraphicsEngineOpenGL/include/PipelineResourceSignatureGLImpl.hpp +++ b/Graphics/GraphicsEngineOpenGL/include/PipelineResourceSignatureGLImpl.hpp @@ -99,7 +99,7 @@ public: void InitSRBResourceCache(ShaderResourceCacheGL& ResourceCache); #ifdef DILIGENT_DEVELOPMENT - /// Verifies committed resource attribs using the SPIRV resource attributes from the PSO. + /// Verifies committed resource using the resource attributes from the PSO. bool DvpValidateCommittedResource(const ShaderResourcesGL::GLResourceAttribs& GLAttribs, RESOURCE_DIMENSION ResourceDim, bool IsMultisample, diff --git a/Graphics/GraphicsEngineOpenGL/src/PipelineResourceSignatureGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/PipelineResourceSignatureGLImpl.cpp index 2503c448..6ab6c50f 100644 --- a/Graphics/GraphicsEngineOpenGL/src/PipelineResourceSignatureGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/PipelineResourceSignatureGLImpl.cpp @@ -27,6 +27,9 @@ #include "pch.h" #include "PipelineResourceSignatureGLImpl.hpp" + +#include + #include "RenderDeviceGLImpl.hpp" namespace Diligent @@ -183,7 +186,11 @@ void PipelineResourceSignatureGLImpl::CreateLayout() CacheOffset += ResDesc.ArraySize; if (ResDesc.VarType == SHADER_RESOURCE_VARIABLE_TYPE_STATIC) - StaticResCounter[Range] += ResDesc.ArraySize; + { + // Since resources in the static cache are indexed by the same bindings, we need to + // make sure that there is enough space in the cache. + StaticResCounter[Range] = std::max(StaticResCounter[Range], CacheOffset); + } } } -- cgit v1.2.3