diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2019-03-04 04:59:33 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2019-03-04 04:59:33 +0000 |
| commit | 05aa92315c10fe7e3a2bb84d69026933e1831f95 (patch) | |
| tree | c47b4f534d329d5f95e76d17efa54a2e808791bf /Graphics/GraphicsEngineD3D11 | |
| parent | Final changes to complete d3d11 backend refactor (diff) | |
| download | DiligentCore-05aa92315c10fe7e3a2bb84d69026933e1831f95.tar.gz DiligentCore-05aa92315c10fe7e3a2bb84d69026933e1831f95.zip | |
Updated static sampler array in PipelineStateD3D11Impl to use raw allocator
Diffstat (limited to 'Graphics/GraphicsEngineD3D11')
| -rw-r--r-- | Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h | 12 | ||||
| -rw-r--r-- | Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp | 9 |
2 files changed, 16 insertions, 5 deletions
diff --git a/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h index 2cbe0ebc..71830432 100644 --- a/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/PipelineStateD3D11Impl.h @@ -116,7 +116,17 @@ private: Int8 m_ResourceLayoutIndex[6] = {-1, -1, -1, -1, -1, -1}; Uint16 m_StaticSamplerOffsets[MaxShadersInPipeline+1] = {}; - std::vector< std::pair< const D3DShaderResourceAttribs&, RefCntAutoPtr<ISampler> > > m_StaticSamplers; + struct StaticSamplerInfo + { + const D3DShaderResourceAttribs& Attribs; + RefCntAutoPtr<ISampler> pSampler; + StaticSamplerInfo(const D3DShaderResourceAttribs& _Attribs, + RefCntAutoPtr<ISampler> _pSampler) : + Attribs (_Attribs), + pSampler (std::move(_pSampler)) + {} + }; + std::vector< StaticSamplerInfo, STDAllocatorRawMem<StaticSamplerInfo> > m_StaticSamplers; }; } diff --git a/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp index 09754861..84bc1ef5 100644 --- a/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp @@ -36,7 +36,8 @@ PipelineStateD3D11Impl::PipelineStateD3D11Impl(IReferenceCounters* pRefCoun RenderDeviceD3D11Impl* pRenderDeviceD3D11, const PipelineStateDesc& PipelineDesc) : TPipelineStateBase(pRefCounters, pRenderDeviceD3D11, PipelineDesc), - m_SRBMemAllocator(GetRawAllocator()) + m_SRBMemAllocator(GetRawAllocator()), + m_StaticSamplers(STD_ALLOCATOR_RAW_MEM(StaticSamplerInfo, GetRawAllocator(), "Allocator for vector<StaticSamplerInfo>")) { if (PipelineDesc.IsComputePipeline) { @@ -131,7 +132,7 @@ PipelineStateD3D11Impl::PipelineStateD3D11Impl(IReferenceCounters* pRefCoun } #endif - decltype(m_StaticSamplers) StaticSamplers; + decltype(m_StaticSamplers) StaticSamplers(STD_ALLOCATOR_RAW_MEM(StaticSamplerInfo, GetRawAllocator(), "Allocator for vector<StaticSamplerInfo>")); std::array<size_t, MaxShadersInPipeline> ShaderResLayoutDataSizes = {}; std::array<size_t, MaxShadersInPipeline> ShaderResCacheDataSizes = {}; for (Uint32 s = 0; s < m_NumShaders; ++s) @@ -362,8 +363,8 @@ void PipelineStateD3D11Impl::SetStaticSamplers(ShaderResourceCacheD3D11& Resourc for (Uint32 s = m_StaticSamplerOffsets[ShaderInd]; s < m_StaticSamplerOffsets[ShaderInd+1]; ++s) { auto& SamplerInfo = m_StaticSamplers[s]; - const auto& SamAttribs = SamplerInfo.first; - auto* pSamplerD3D11Impl = SamplerInfo.second.RawPtr<SamplerD3D11Impl>(); + const auto& SamAttribs = SamplerInfo.Attribs; + auto* pSamplerD3D11Impl = SamplerInfo.pSampler.RawPtr<SamplerD3D11Impl>(); // Limiting EndBindPoint is required when initializing static samplers in a Shader's static cache auto EndBindPoint = std::min( static_cast<Uint32>(SamAttribs.BindPoint) + SamAttribs.BindCount, NumCachedSamplers); for (Uint32 BindPoint = SamAttribs.BindPoint; BindPoint < EndBindPoint; ++BindPoint ) |
