From fee719488d0476e1a64bf34672ea8715fb67131a Mon Sep 17 00:00:00 2001 From: assiduous Date: Tue, 23 Feb 2021 22:10:08 -0800 Subject: Added IShaderResourceBinding::StaticResourcesInitialized method --- .../GraphicsEngine/include/ShaderResourceBindingBase.hpp | 8 ++++---- Graphics/GraphicsEngine/interface/ShaderResourceBinding.h | 15 +++++++++------ .../include/ShaderResourceBindingD3D12Impl.hpp | 7 +------ .../src/ShaderResourceBindingD3D12Impl.cpp | 2 -- .../include/ShaderResourceBindingVkImpl.hpp | 2 +- 5 files changed, 15 insertions(+), 19 deletions(-) (limited to 'Graphics') diff --git a/Graphics/GraphicsEngine/include/ShaderResourceBindingBase.hpp b/Graphics/GraphicsEngine/include/ShaderResourceBindingBase.hpp index 060ccfce..20550786 100644 --- a/Graphics/GraphicsEngine/include/ShaderResourceBindingBase.hpp +++ b/Graphics/GraphicsEngine/include/ShaderResourceBindingBase.hpp @@ -100,14 +100,14 @@ public: return GetSignature(); } - ResourceSignatureType* GetSignature() const + virtual bool DILIGENT_CALL_TYPE StaticResourcesInitialized() const override final { - return m_pPRS.RawPtr(); + return m_bStaticResourcesInitialized; } - bool StaticResourcesInitialized() const + ResourceSignatureType* GetSignature() const { - return m_bStaticResourcesInitialized; + return m_pPRS.RawPtr(); } void SetStaticResourcesInitialized() diff --git a/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h b/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h index 0078926c..96e24276 100644 --- a/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h +++ b/Graphics/GraphicsEngine/interface/ShaderResourceBinding.h @@ -119,6 +119,9 @@ DILIGENT_BEGIN_INTERFACE(IShaderResourceBinding, IObject) VIRTUAL IShaderResourceVariable* METHOD(GetVariableByIndex)(THIS_ SHADER_TYPE ShaderType, Uint32 Index) PURE; + + /// Returns true if static resources have been initialized in this SRB. + VIRTUAL bool METHOD(StaticResourcesInitialized)(THIS) CONST PURE; }; DILIGENT_END_INTERFACE @@ -128,12 +131,12 @@ DILIGENT_END_INTERFACE // clang-format off -//# define IShaderResourceBinding_GetPipelineState(This) CALL_IFACE_METHOD(ShaderResourceBinding, GetPipelineState, This) -# define IShaderResourceBinding_GetPipelineResourceSignature(This) CALL_IFACE_METHOD(ShaderResourceBinding, GetPipelineResourceSignature, This) -# define IShaderResourceBinding_BindResources(This, ...) CALL_IFACE_METHOD(ShaderResourceBinding, BindResources, This, __VA_ARGS__) -# define IShaderResourceBinding_GetVariableByName(This, ...) CALL_IFACE_METHOD(ShaderResourceBinding, GetVariableByName, This, __VA_ARGS__) -# define IShaderResourceBinding_GetVariableCount(This, ...) CALL_IFACE_METHOD(ShaderResourceBinding, GetVariableCount, This, __VA_ARGS__) -# define IShaderResourceBinding_GetVariableByIndex(This, ...) CALL_IFACE_METHOD(ShaderResourceBinding, GetVariableByIndex, This, __VA_ARGS__) +# define IShaderResourceBinding_GetPipelineResourceSignature(This) CALL_IFACE_METHOD(ShaderResourceBinding, GetPipelineResourceSignature, This) +# define IShaderResourceBinding_BindResources(This, ...) CALL_IFACE_METHOD(ShaderResourceBinding, BindResources, This, __VA_ARGS__) +# define IShaderResourceBinding_GetVariableByName(This, ...) CALL_IFACE_METHOD(ShaderResourceBinding, GetVariableByName, This, __VA_ARGS__) +# define IShaderResourceBinding_GetVariableCount(This, ...) CALL_IFACE_METHOD(ShaderResourceBinding, GetVariableCount, This, __VA_ARGS__) +# define IShaderResourceBinding_GetVariableByIndex(This, ...) CALL_IFACE_METHOD(ShaderResourceBinding, GetVariableByIndex, This, __VA_ARGS__) +# define IShaderResourceBinding_StaticResourcesInitialized(This) CALL_IFACE_METHOD(ShaderResourceBinding, StaticResourcesInitialized, This) // clang-format on diff --git a/Graphics/GraphicsEngineD3D12/include/ShaderResourceBindingD3D12Impl.hpp b/Graphics/GraphicsEngineD3D12/include/ShaderResourceBindingD3D12Impl.hpp index 4a24603b..395cc66b 100644 --- a/Graphics/GraphicsEngineD3D12/include/ShaderResourceBindingD3D12Impl.hpp +++ b/Graphics/GraphicsEngineD3D12/include/ShaderResourceBindingD3D12Impl.hpp @@ -41,7 +41,7 @@ namespace Diligent { /// Implementation of the Diligent::IShaderResourceBindingD3D12 interface -// sizeof(ShaderResourceBindingD3D12Impl) == 104 (x64, msvc, Release) +// sizeof(ShaderResourceBindingD3D12Impl) == 96 (x64, msvc, Release) class ShaderResourceBindingD3D12Impl final : public ShaderResourceBindingBase { public: @@ -68,11 +68,6 @@ private: ShaderResourceCacheD3D12 m_ShaderResourceCache; ShaderVariableManagerD3D12* m_pShaderVarMgrs = nullptr; - - // Resource layout index in m_ShaderResourceCache array for every shader stage, - // indexed by the shader type pipeline index (returned by GetShaderTypePipelineIndex) - std::array m_ShaderVarIndex = {-1, -1, -1, -1, -1, -1}; - static_assert(MAX_SHADERS_IN_PIPELINE == 6, "Please update the initializer list above"); }; } // namespace Diligent diff --git a/Graphics/GraphicsEngineD3D12/src/ShaderResourceBindingD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/ShaderResourceBindingD3D12Impl.cpp index d96e2b4d..3d33710f 100644 --- a/Graphics/GraphicsEngineD3D12/src/ShaderResourceBindingD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/ShaderResourceBindingD3D12Impl.cpp @@ -46,8 +46,6 @@ ShaderResourceBindingD3D12Impl::ShaderResourceBindingD3D12Impl(IReferenceCounter { try { - m_ShaderVarIndex.fill(-1); - const auto NumShaders = GetNumShaders(); FixedLinearAllocator MemPool{GetRawAllocator()}; diff --git a/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp index b10b8067..54cd3b3a 100644 --- a/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp +++ b/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp @@ -44,7 +44,7 @@ namespace Diligent class PipelineResourceSignatureVkImpl; /// Implementation of the Diligent::IShaderResourceBindingVk interface -// sizeof(ShaderResourceBindingVkImpl) == 72 (x64, msvc, Release) +// sizeof(ShaderResourceBindingVkImpl) == 64 (x64, msvc, Release) class ShaderResourceBindingVkImpl final : public ShaderResourceBindingBase { public: -- cgit v1.2.3