@@ -400,7 +400,7 @@ class RenderStateCacheImpl final : public ObjectBase<IRenderStateCache>
400400 {
401401 std::lock_guard<std::mutex> Guard{m_ReloadableShadersMtx};
402402
403- auto it = m_ReloadableShaders.find (pShader);
403+ auto it = m_ReloadableShaders.find (pShader-> GetUniqueID () );
404404 if (it == m_ReloadableShaders.end ())
405405 return {};
406406
@@ -457,14 +457,14 @@ class RenderStateCacheImpl final : public ObjectBase<IRenderStateCache>
457457 std::mutex m_ShadersMtx;
458458 std::unordered_map<XXH128Hash, RefCntWeakPtr<IShader>> m_Shaders;
459459
460- std::mutex m_ReloadableShadersMtx;
461- std::unordered_map<IShader* , RefCntWeakPtr<IShader>> m_ReloadableShaders;
460+ std::mutex m_ReloadableShadersMtx;
461+ std::unordered_map<UniqueIdentifier , RefCntWeakPtr<IShader>> m_ReloadableShaders;
462462
463463 std::mutex m_PipelinesMtx;
464464 std::unordered_map<XXH128Hash, RefCntWeakPtr<IPipelineState>> m_Pipelines;
465465
466- std::mutex m_ReloadablePipelinesMtx;
467- std::unordered_map<IPipelineState* , RefCntWeakPtr<IPipelineState>> m_ReloadablePipelines;
466+ std::mutex m_ReloadablePipelinesMtx;
467+ std::unordered_map<UniqueIdentifier , RefCntWeakPtr<IPipelineState>> m_ReloadablePipelines;
468468};
469469
470470static size_t ComputeDeviceAttribsHash (IRenderDevice* pDevice)
@@ -582,7 +582,7 @@ bool RenderStateCacheImpl::CreateShader(const ShaderCreateInfo& ShaderCI,
582582 {
583583 std::lock_guard<std::mutex> Guard{m_ReloadableShadersMtx};
584584
585- auto it = m_ReloadableShaders.find (pShader);
585+ auto it = m_ReloadableShaders.find (pShader-> GetUniqueID () );
586586 if (it != m_ReloadableShaders.end ())
587587 {
588588 if (auto pReloadableShader = it->second .Lock ())
@@ -615,7 +615,7 @@ bool RenderStateCacheImpl::CreateShader(const ShaderCreateInfo& ShaderCI,
615615 ReloadableShader::Create (this , pShader, _ShaderCI, ppShader);
616616
617617 std::lock_guard<std::mutex> Guard{m_ReloadableShadersMtx};
618- m_ReloadableShaders.emplace (pShader, RefCntWeakPtr<IShader>{*ppShader});
618+ m_ReloadableShaders.emplace (pShader-> GetUniqueID () , RefCntWeakPtr<IShader>{*ppShader});
619619 }
620620 }
621621 else
@@ -1050,7 +1050,7 @@ bool RenderStateCacheImpl::CreatePipelineState(const CreateInfoType& PSOCreateIn
10501050 {
10511051 std::lock_guard<std::mutex> Guard{m_ReloadablePipelinesMtx};
10521052
1053- auto it = m_ReloadablePipelines.find (pPSO);
1053+ auto it = m_ReloadablePipelines.find (pPSO-> GetUniqueID () );
10541054 if (it != m_ReloadablePipelines.end ())
10551055 {
10561056 if (auto pReloadablePSO = it->second .Lock ())
@@ -1065,7 +1065,7 @@ bool RenderStateCacheImpl::CreatePipelineState(const CreateInfoType& PSOCreateIn
10651065 ReloadablePipelineState::Create (this , pPSO, PSOCreateInfo, ppPipelineState);
10661066
10671067 std::lock_guard<std::mutex> Guard{m_ReloadablePipelinesMtx};
1068- m_ReloadablePipelines.emplace (pPSO, RefCntWeakPtr<IPipelineState>(*ppPipelineState));
1068+ m_ReloadablePipelines.emplace (pPSO-> GetUniqueID () , RefCntWeakPtr<IPipelineState>(*ppPipelineState));
10691069 }
10701070 }
10711071 else
0 commit comments