Use more efficient storage for forced references on D3D12

This commit is contained in:
baldurk
2024-11-22 18:48:21 +00:00
parent f6f4bc9558
commit a19b7ea3c4
2 changed files with 6 additions and 4 deletions
+2 -2
View File
@@ -3346,7 +3346,7 @@ void WrappedID3D12Device::AddForcedReference(D3D12ResourceRecord *record)
{
{
SCOPED_LOCK(m_ForcedReferencesLock);
m_ForcedReferences.push_back(record);
m_ForcedReferences.insert(record);
}
// in case we're currently capturing, immediately consider the resource as referenced. If we're
@@ -3368,7 +3368,7 @@ void WrappedID3D12Device::ReleaseResource(ID3D12DeviceChild *res)
{
SCOPED_LOCK(m_ForcedReferencesLock);
m_ForcedReferences.removeOne(GetRecord(res));
m_ForcedReferences.erase(GetRecord(res));
}
{
+4 -2
View File
@@ -585,7 +585,7 @@ private:
rdcarray<WrappedID3D12CommandQueue *> m_RefQueues;
rdcarray<ID3D12Resource *> m_RefBuffers;
rdcarray<D3D12ResourceRecord *> m_ForcedReferences;
std::unordered_set<D3D12ResourceRecord *> m_ForcedReferences;
Threading::CriticalSection m_ForcedReferencesLock;
bool m_HaveSeenASBuild = false;
Intervals<ResourceId> m_ASDebugTracking;
@@ -598,7 +598,9 @@ private:
{
SCOPED_LOCK(m_ForcedReferencesLock);
ret = m_ForcedReferences;
ret.reserve(m_ForcedReferences.size());
for(auto it = m_ForcedReferences.begin(); it != m_ForcedReferences.end(); ++it)
ret.push_back(*it);
}
return ret;