diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-06-28 15:08:46 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-06-28 15:08:46 +0000 |
| commit | c985d342626ba289fc2db833ba482f3a40ae05b5 (patch) | |
| tree | dc14bd3eaeca7bdbf6169c5d85620adbe22722e6 /Graphics | |
| parent | Only creating default SRB if pipeline state has static and no other resources... (diff) | |
| download | DiligentCore-c985d342626ba289fc2db833ba482f3a40ae05b5.tar.gz DiligentCore-c985d342626ba289fc2db833ba482f3a40ae05b5.zip | |
Unified implementation of IPipelineState::BindShaderResources()
Diffstat (limited to 'Graphics')
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) { |
