summaryrefslogtreecommitdiffstats
path: root/Graphics
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-06-28 15:08:46 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-06-28 15:08:46 +0000
commitc985d342626ba289fc2db833ba482f3a40ae05b5 (patch)
treedc14bd3eaeca7bdbf6169c5d85620adbe22722e6 /Graphics
parentOnly creating default SRB if pipeline state has static and no other resources... (diff)
downloadDiligentCore-c985d342626ba289fc2db833ba482f3a40ae05b5.tar.gz
DiligentCore-c985d342626ba289fc2db833ba482f3a40ae05b5.zip
Unified implementation of IPipelineState::BindShaderResources()
Diffstat (limited to 'Graphics')
-rw-r--r--Graphics/GraphicsEngine/include/PipelineStateBase.h6
-rw-r--r--Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h2
-rw-r--r--Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp16
-rw-r--r--Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.h4
-rw-r--r--Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp15
-rw-r--r--Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h4
-rw-r--r--Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp5
-rw-r--r--Graphics/GraphicsEngineVulkan/include/PipelineStateVkImpl.h4
-rw-r--r--Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp17
9 files changed, 12 insertions, 61 deletions
diff --git a/Graphics/GraphicsEngine/include/PipelineStateBase.h b/Graphics/GraphicsEngine/include/PipelineStateBase.h
index 80813fba..5496e01d 100644
--- a/Graphics/GraphicsEngine/include/PipelineStateBase.h
+++ b/Graphics/GraphicsEngine/include/PipelineStateBase.h
@@ -226,6 +226,12 @@ public:
return m_ShaderResourceLayoutHash != ValidatedCast<PipelineStateBase>(pPSO)->m_ShaderResourceLayoutHash;
}
+ virtual void BindShaderResources( IResourceMapping *pResourceMapping, Uint32 Flags )override
+ {
+ for(Uint32 s=0; s < m_NumShaders; ++s)
+ m_ppShaders[s]->BindResources(pResourceMapping, Flags);
+ }
+
protected:
std::vector<LayoutElement, STDAllocatorRawMem<LayoutElement> > m_LayoutElements;
diff --git a/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h
index e3d1a461..2180cc0a 100644
--- a/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h
+++ b/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h
@@ -67,8 +67,6 @@ public:
virtual ID3D11HullShader* GetD3D11HullShader()override final;
virtual ID3D11ComputeShader* GetD3D11ComputeShader()override final;
- virtual void BindShaderResources( IResourceMapping *pResourceMapping, Uint32 Flags )override final;
-
virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding )override final;
virtual bool IsCompatibleWith(const IPipelineState *pPSO)const override final;
diff --git a/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp
index cd91edef..437df242 100644
--- a/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp
+++ b/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp
@@ -161,22 +161,6 @@ ID3D11InputLayout* PipelineStateD3D11Impl::GetD3D11InputLayout()
return m_pd3d11InputLayout;
}
-void PipelineStateD3D11Impl::BindShaderResources(IResourceMapping* pResourceMapping, Uint32 Flags)
-{
- if( m_Desc.IsComputePipeline )
- {
- if(m_pCS)m_pCS->BindResources(pResourceMapping, Flags);
- }
- else
- {
- if(m_pVS)m_pVS->BindResources(pResourceMapping, Flags);
- if(m_pPS)m_pPS->BindResources(pResourceMapping, Flags);
- if(m_pGS)m_pGS->BindResources(pResourceMapping, Flags);
- if(m_pDS)m_pDS->BindResources(pResourceMapping, Flags);
- if(m_pHS)m_pHS->BindResources(pResourceMapping, Flags);
- }
-}
-
void PipelineStateD3D11Impl::CreateShaderResourceBinding(IShaderResourceBinding** ppShaderResourceBinding)
{
auto* pRenderDeviceD3D11 = ValidatedCast<RenderDeviceD3D11Impl>( GetDevice() );
diff --git a/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.h b/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.h
index e4550356..f4aed5d4 100644
--- a/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.h
+++ b/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.h
@@ -51,9 +51,7 @@ public:
virtual ID3D12PipelineState *GetD3D12PipelineState()const override final{return m_pd3d12PSO;}
- virtual void BindShaderResources( IResourceMapping *pResourceMapping, Uint32 Flags )override;
-
- virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding )override;
+ virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding )override final;
virtual bool IsCompatibleWith(const IPipelineState *pPSO)const override final;
diff --git a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp
index cf08754e..d99d2aad 100644
--- a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp
+++ b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp
@@ -244,21 +244,6 @@ PipelineStateD3D12Impl::~PipelineStateD3D12Impl()
IMPLEMENT_QUERY_INTERFACE( PipelineStateD3D12Impl, IID_PipelineStateD3D12, TPipelineStateBase )
-void PipelineStateD3D12Impl::BindShaderResources(IResourceMapping* pResourceMapping, Uint32 Flags)
-{
- if( m_Desc.IsComputePipeline )
- {
- if(m_pCS)m_pCS->BindResources(pResourceMapping, Flags);
- }
- else
- {
- if(m_pVS)m_pVS->BindResources(pResourceMapping, Flags);
- if(m_pPS)m_pPS->BindResources(pResourceMapping, Flags);
- if(m_pGS)m_pGS->BindResources(pResourceMapping, Flags);
- if(m_pDS)m_pDS->BindResources(pResourceMapping, Flags);
- if(m_pHS)m_pHS->BindResources(pResourceMapping, Flags);
- }
-}
void PipelineStateD3D12Impl::CreateShaderResourceBinding(IShaderResourceBinding** ppShaderResourceBinding)
{
diff --git a/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h
index c8c70731..5aabba85 100644
--- a/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h
+++ b/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h
@@ -47,9 +47,9 @@ public:
/// Queries the specific interface, see IObject::QueryInterface() for details
virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface )override;
- virtual void BindShaderResources( IResourceMapping *pResourceMapping, Uint32 Flags )override;
+ virtual void BindShaderResources( IResourceMapping *pResourceMapping, Uint32 Flags )override final;
- virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding )override;
+ virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding )override final;
virtual bool IsCompatibleWith(const IPipelineState *pPSO)const override final;
diff --git a/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp
index 4eeebc88..19503efb 100644
--- a/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp
+++ b/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp
@@ -143,10 +143,7 @@ void PipelineStateGLImpl::BindShaderResources(IResourceMapping *pResourceMapping
{
if( GetDevice()->GetDeviceCaps().bSeparableProgramSupported )
{
- for( Uint32 s = 0; s < m_NumShaders; ++s )
- {
- m_ppShaders[s]->BindResources( pResourceMapping, Flags );
- }
+ TPipelineStateBase::BindShaderResources(pResourceMapping, Flags);
}
else
{
diff --git a/Graphics/GraphicsEngineVulkan/include/PipelineStateVkImpl.h b/Graphics/GraphicsEngineVulkan/include/PipelineStateVkImpl.h
index a96017e7..07e6da7b 100644
--- a/Graphics/GraphicsEngineVulkan/include/PipelineStateVkImpl.h
+++ b/Graphics/GraphicsEngineVulkan/include/PipelineStateVkImpl.h
@@ -55,9 +55,7 @@ public:
virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject** ppInterface );
- virtual void BindShaderResources( IResourceMapping* pResourceMapping, Uint32 Flags )override;
-
- virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding )override;
+ virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding )override final;
virtual bool IsCompatibleWith(const IPipelineState* pPSO)const override final;
diff --git a/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp
index 07bed5f2..9763e0e4 100644
--- a/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp
@@ -378,7 +378,7 @@ PipelineStateVkImpl :: PipelineStateVkImpl(IReferenceCounters* pRefCounters
m_HasStaticResources = true;
if (Layout.GetResourceCount(SHADER_VARIABLE_TYPE_MUTABLE) != 0 ||
- Layout.GetResourceCount(SHADER_VARIABLE_TYPE_DYNAMIC) != 0)
+ Layout.GetResourceCount(SHADER_VARIABLE_TYPE_DYNAMIC) != 0)
m_HasNonStaticResources = true;
}
@@ -423,21 +423,6 @@ PipelineStateVkImpl::~PipelineStateVkImpl()
IMPLEMENT_QUERY_INTERFACE( PipelineStateVkImpl, IID_PipelineStateVk, TPipelineStateBase )
-void PipelineStateVkImpl::BindShaderResources(IResourceMapping *pResourceMapping, Uint32 Flags)
-{
- if ( m_Desc.IsComputePipeline )
- {
- if (m_pCS)m_pCS->BindResources(pResourceMapping, Flags);
- }
- else
- {
- if (m_pVS)m_pVS->BindResources(pResourceMapping, Flags);
- if (m_pPS)m_pPS->BindResources(pResourceMapping, Flags);
- if (m_pGS)m_pGS->BindResources(pResourceMapping, Flags);
- if (m_pDS)m_pDS->BindResources(pResourceMapping, Flags);
- if (m_pHS)m_pHS->BindResources(pResourceMapping, Flags);
- }
-}
void PipelineStateVkImpl::CreateShaderResourceBinding(IShaderResourceBinding **ppShaderResourceBinding)
{