Track resources created with a cubemap SRV, to mark them as cubemaps

This commit is contained in:
baldurk
2016-10-18 15:30:03 +02:00
parent b220a61d79
commit 17493e9158
3 changed files with 12 additions and 2 deletions
+3
View File
@@ -299,6 +299,8 @@ private:
map<ResourceId, SubresourceStateVector> m_ResourceStates;
Threading::CriticalSection m_ResourceStatesLock;
set<ResourceId> m_Cubemaps;
map<ResourceId, string> m_ResourceNames;
struct SwapPresentInfo
@@ -362,6 +364,7 @@ public:
ID3D12CommandAllocator *GetAlloc() { return m_Alloc; }
void ApplyBarriers(vector<D3D12_RESOURCE_BARRIER> &barriers);
bool IsCubemap(ResourceId id) { return m_Cubemaps.find(id) != m_Cubemaps.end(); }
// returns thread-local temporary memory
byte *GetTempMemory(size_t s);
template <class T>
@@ -674,6 +674,14 @@ void WrappedID3D12Device::CreateShaderResourceView(ID3D12Resource *pResource,
{
GetWrapped(DestDescriptor)->Init(pResource, pDesc);
}
if(m_State < WRITING && pDesc)
{
if(pDesc->ViewDimension == D3D12_SRV_DIMENSION_TEXTURECUBE ||
pDesc->ViewDimension == D3D12_SRV_DIMENSION_TEXTURECUBEARRAY)
m_Cubemaps.insert(GetResID(pResource));
}
return m_pDevice->CreateShaderResourceView(Unwrap(pResource), pDesc, Unwrap(DestDescriptor));
}
+1 -2
View File
@@ -170,8 +170,7 @@ FetchTexture D3D12Replay::GetTexture(ResourceId id)
case 3: ret.resType = eResType_Texture3D; break;
}
D3D12NOTIMP("Texture cubemap-ness from implicit usage");
ret.cubemap = false; // eResType_TextureCube, eResType_TextureCubeArray
ret.cubemap = m_pDevice->IsCubemap(id);
ret.creationFlags = eTextureCreate_SRV;