diff --git a/source/platforms/sl.chi/d3d11.cpp b/source/platforms/sl.chi/d3d11.cpp index ce9d901..1739c13 100644 --- a/source/platforms/sl.chi/d3d11.cpp +++ b/source/platforms/sl.chi/d3d11.cpp @@ -931,7 +931,7 @@ ComputeStatus D3D11::getTextureDriverData(Resource res, ResourceDriverDataD3D11& ID3D11Resource* resource = (ID3D11Resource*)(res->native); - uint32_t hash = (mipOffset << 16) | mipLevels; + uint64_t hash = (((mipOffset << 16) | mipLevels) << 32 | kResourceHashTypeSrv); auto it = m_resourceData.find(resource); if (it == m_resourceData.end() || (*it).second.find(hash) == (*it).second.end()) @@ -974,7 +974,7 @@ ComputeStatus D3D11::getSurfaceDriverData(Resource res, ResourceDriverDataD3D11& ID3D11Resource* resource = (ID3D11Resource*)(res->native); - uint32_t hash = mipOffset << 16; + uint32_t hash = ((mipOffset << 48) | kResourceHashTypeUav); auto it = m_resourceData.find(resource); if (it == m_resourceData.end() || (*it).second.find(hash) == (*it).second.end()) diff --git a/source/platforms/sl.chi/d3d11.h b/source/platforms/sl.chi/d3d11.h index b1ea312..9b14de8 100644 --- a/source/platforms/sl.chi/d3d11.h +++ b/source/platforms/sl.chi/d3d11.h @@ -71,6 +71,9 @@ struct DispatchDataD3D11 class D3D11 : public Generic { + static constexpr uint32_t kResourceHashTypeSrv = 0; + static constexpr uint32_t kResourceHashTypeUav = 1; + struct PerfData { ID3D11Query *queryBegin{}; @@ -92,7 +95,7 @@ class D3D11 : public Generic ID3D11DeviceContext* m_immediateContext{}; UINT m_visibleNodeMask = 0; - std::map> m_resourceData; + std::map> m_resourceData; ID3D11SamplerState* m_samplers[eSamplerCount]; thread::ThreadContext m_dispatchContext;