summaryrefslogtreecommitdiffstats
path: root/Graphics
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2021-02-24 06:10:08 +0000
committerassiduous <assiduous@diligentgraphics.com>2021-03-19 00:38:10 +0000
commitfee719488d0476e1a64bf34672ea8715fb67131a (patch)
treedff951683e271bfb402fc1daed24384d8e0c3a56 /Graphics
parentReplaced InitializeStaticResources and InitializeStaticResourcesWithSignature... (diff)
downloadDiligentCore-fee719488d0476e1a64bf34672ea8715fb67131a.tar.gz
DiligentCore-fee719488d0476e1a64bf34672ea8715fb67131a.zip
Added IShaderResourceBinding::StaticResourcesInitialized method
Diffstat (limited to 'Graphics')
-rw-r--r--Graphics/GraphicsEngine/include/ShaderResourceBindingBase.hpp8
-rw-r--r--Graphics/GraphicsEngine/interface/ShaderResourceBinding.h15
-rw-r--r--Graphics/GraphicsEngineD3D12/include/ShaderResourceBindingD3D12Impl.hpp7
-rw-r--r--Graphics/GraphicsEngineD3D12/src/ShaderResourceBindingD3D12Impl.cpp2
-rw-r--r--Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp2
5 files changed, 15 insertions, 19 deletions
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<ResourceSignatureType>();
+ return m_bStaticResourcesInitialized;
}
- bool StaticResourcesInitialized() const
+ ResourceSignatureType* GetSignature() const
{
- return m_bStaticResourcesInitialized;
+ return m_pPRS.RawPtr<ResourceSignatureType>();
}
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<IShaderResourceBindingD3D12, PipelineResourceSignatureD3D12Impl>
{
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<Int8, MAX_SHADERS_IN_PIPELINE> 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<IShaderResourceBindingVk, PipelineResourceSignatureVkImpl>
{
public: