summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineD3D11
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2019-03-04 04:59:33 +0000
committerEgor Yusov <egor.yusov@gmail.com>2019-03-04 04:59:33 +0000
commit05aa92315c10fe7e3a2bb84d69026933e1831f95 (patch)
treec47b4f534d329d5f95e76d17efa54a2e808791bf /Graphics/GraphicsEngineD3D11
parentFinal changes to complete d3d11 backend refactor (diff)
downloadDiligentCore-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.h12
-rw-r--r--Graphics/GraphicsEngineD3D11/src/PipelineStateD3D11Impl.cpp9
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 )