Remove ownership tracked list

* This list on replay is used to free all replay-created resources, but we can
  re-use the resource map for this.
This commit is contained in:
baldurk
2025-12-12 13:08:22 +00:00
parent 72a16ffa97
commit 94df84d5d9
40 changed files with 21 additions and 599 deletions
+12 -26
View File
@@ -632,9 +632,6 @@ public:
///////////////////////////////////////////
// Replay-side methods
// resources which are owned by the resource manager and so automatically released on shutdown
void TakeResourceOwnership(WrappedResourceType res);
// when asked for a given id, return the resource for a replacement id
void ReplaceResource(ResourceId from, ResourceId to);
bool HasReplacement(ResourceId from);
@@ -744,9 +741,6 @@ protected:
// capture and replay.
std::unordered_map<ResourceId, WrappedResourceType> m_ResourceMap;
// used during replay - holds resources allocated for replay which should be automatically destroyed on shutdown
rdcarray<WrappedResourceType> m_OwnedResources;
// used during capture - holds resource records by id.
std::unordered_map<ResourceId, RecordType *> m_ResourceRecords;
Threading::RWLock m_ResourceRecordLock;
@@ -809,13 +803,18 @@ void ResourceManager<Configuration>::Shutdown()
{
FreeInitialContents();
while(!m_OwnedResources.empty())
if(!m_Capturing)
{
WrappedResourceType it = m_OwnedResources.back();
ResourceTypeRelease(it);
while(!m_ResourceMap.empty())
{
auto it = m_ResourceMap.begin();
ResourceId id = it->first;
ResourceTypeRelease(it->second);
if(it == m_OwnedResources.back())
m_OwnedResources.pop_back();
auto removeit = m_ResourceMap.find(id);
if(removeit != m_ResourceMap.end())
m_ResourceMap.erase(removeit);
}
}
RDCASSERT(m_ResourceRecords.empty());
@@ -824,7 +823,7 @@ void ResourceManager<Configuration>::Shutdown()
template <typename Configuration>
ResourceManager<Configuration>::~ResourceManager()
{
RDCASSERT(m_OwnedResources.empty());
RDCASSERT(m_ResourceMap.empty());
RDCASSERT(m_InitialContents.empty());
RDCASSERT(m_ResourceRecords.empty());
@@ -1829,14 +1828,6 @@ typename Configuration::WrappedResourceType ResourceManager<Configuration>::GetW
return m_WrapperMap[real];
}
template <typename Configuration>
void ResourceManager<Configuration>::TakeResourceOwnership(WrappedResourceType res)
{
RDCASSERT(!m_Capturing);
m_OwnedResources.push_back(res);
}
template <typename Configuration>
typename Configuration::WrappedResourceType ResourceManager<Configuration>::GetResource(ResourceId id,
bool optional)
@@ -1900,12 +1891,7 @@ void ResourceManager<Configuration>::ReleaseResource(ResourceId id)
if(IsActiveCapturing(m_State))
Prepare_InitialStateIfPostponed(id, true);
{
auto it = m_ResourceMap.find(id);
m_OwnedResources.removeOne(it->second);
m_ResourceMap.erase(it);
}
m_ResourceMap.erase(id);
m_DirtyResources.erase(id);
auto it = std::lower_bound(m_ResourceRefTimes.begin(), m_ResourceRefTimes.end(), id);
-7
View File
@@ -1036,7 +1036,6 @@ bool WrappedID3D11Device::ProcessChunk(ReadSerialiser &ser, D3D11Chunk context)
{
m_pImmediateContext->AddRef();
m_pImmediateContext->SetReplayResourceID(ImmediateContext);
m_ResourceManager->TakeResourceOwnership(m_pImmediateContext);
ResourceId descId = m_pImmediateContext->GetDescriptorsID();
AddResource(descId, ResourceType::DescriptorStore, "");
@@ -1734,8 +1733,6 @@ bool WrappedID3D11Device::Serialise_WrapSwapchainBuffer(SerialiserType &ser, IDX
wrapped->m_RealDescriptor = new D3D11_TEXTURE2D_DESC(realDescriptor);
SetDebugName(fakeBB, "Serialised Swap Chain Buffer");
GetResourceManager()->TakeResourceOwnership(fakeBB);
}
}
@@ -1800,10 +1797,6 @@ IUnknown *WrappedID3D11Device::WrapSwapchainBuffer(IDXGISwapper *swapper, DXGI_F
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(pTex);
}
}
if(buffer == 0 && IsCaptureMode(m_State) && m_SwapChains[swapper] == NULL)
@@ -107,14 +107,10 @@ bool WrappedID3D11Device::Serialise_CreateBlendState1(SerialiserType &ser,
ret->Release();
ret = (ID3D11BlendState1 *)GetResourceManager()->GetWrapper(ret);
ret->AddRef();
GetResourceManager()->TakeResourceOwnership(ret);
}
else
{
ret = new WrappedID3D11BlendState1(pState, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
}
@@ -225,14 +221,10 @@ bool WrappedID3D11Device::Serialise_CreateRasterizerState1(
ret->Release();
ret = (ID3D11RasterizerState1 *)GetResourceManager()->GetWrapper(ret);
ret->AddRef();
GetResourceManager()->TakeResourceOwnership(ret);
}
else
{
ret = new WrappedID3D11RasterizerState2(pState, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
}
@@ -97,8 +97,6 @@ bool WrappedID3D11Device::Serialise_CreateTexture2D1(SerialiserType &ser,
else
{
ret = new WrappedID3D11Texture2D1(pTexture, (ID3D11Texture2D1 *)ret, this, dispType);
GetResourceManager()->TakeResourceOwnership(ret);
}
const char *prefix = Descriptor.ArraySize > 1 ? "2D TextureArray" : "2D Texture";
@@ -163,10 +161,6 @@ HRESULT WrappedID3D11Device::CreateTexture2D1(const D3D11_TEXTURE2D_DESC1 *pDesc
record->AddChunk(chunk);
record->SetDataPtr(chunk->GetData());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppTexture2D = wrapped;
}
@@ -240,8 +234,6 @@ bool WrappedID3D11Device::Serialise_CreateTexture3D1(SerialiserType &ser,
else
{
ret = new WrappedID3D11Texture3D1(pTexture, (ID3D11Texture3D1 *)ret, this, dispType);
GetResourceManager()->TakeResourceOwnership(ret);
}
const char *prefix = "3D Texture";
@@ -302,10 +294,6 @@ HRESULT WrappedID3D11Device::CreateTexture3D1(const D3D11_TEXTURE3D_DESC1 *pDesc
record->AddChunk(chunk);
record->SetDataPtr(chunk->GetData());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppTexture3D = wrapped;
}
@@ -386,8 +374,6 @@ bool WrappedID3D11Device::Serialise_CreateShaderResourceView1(
else
{
ret = new WrappedID3D11ShaderResourceView1(pView, ret, pResource, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pView, ResourceType::View, "Shader Resource View");
@@ -525,8 +511,6 @@ bool WrappedID3D11Device::Serialise_CreateRenderTargetView1(SerialiserType &ser,
else
{
ret = new WrappedID3D11RenderTargetView1(pView, ret, pResource, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pView, ResourceType::View, "Render Target View");
@@ -634,8 +618,6 @@ bool WrappedID3D11Device::Serialise_CreateUnorderedAccessView1(
else
{
ret = new WrappedID3D11UnorderedAccessView1(pView, ret, pResource, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pView, ResourceType::View, "Unordered Access View");
@@ -757,14 +739,10 @@ bool WrappedID3D11Device::Serialise_CreateRasterizerState2(
ret->Release();
ret = (ID3D11RasterizerState2 *)GetResourceManager()->GetWrapper(ret);
ret->AddRef();
GetResourceManager()->TakeResourceOwnership(ret);
}
else
{
ret = new WrappedID3D11RasterizerState2(pState, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
}
@@ -873,8 +851,6 @@ bool WrappedID3D11Device::Serialise_CreateQuery1(SerialiserType &ser,
else
{
ret = new WrappedID3D11Query1(pQuery, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pQuery, ResourceType::Query, "Query");
@@ -126,8 +126,6 @@ bool WrappedID3D11Device::Serialise_CreateBuffer(SerialiserType &ser, const D3D1
else
{
ret = new WrappedID3D11Buffer(pBuffer, ret, Descriptor.ByteWidth, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pBuffer, ResourceType::Buffer, "Buffer");
@@ -243,10 +241,6 @@ HRESULT WrappedID3D11Device::CreateBuffer(const D3D11_BUFFER_DESC *pDesc,
record->AddChunk(chunk);
record->SetDataPtr(chunk->GetData());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppBuffer = wrapped;
}
@@ -438,8 +432,6 @@ bool WrappedID3D11Device::Serialise_CreateTexture1D(SerialiserType &ser,
else
{
ret = new WrappedID3D11Texture1D(pTexture, ret, this, dispType);
GetResourceManager()->TakeResourceOwnership(ret);
}
const char *prefix = Descriptor.ArraySize > 1 ? "1D TextureArray" : "1D Texture";
@@ -498,10 +490,6 @@ HRESULT WrappedID3D11Device::CreateTexture1D(const D3D11_TEXTURE1D_DESC *pDesc,
record->AddChunk(chunk);
record->SetDataPtr(chunk->GetData());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppTexture1D = wrapped;
}
@@ -575,8 +563,6 @@ bool WrappedID3D11Device::Serialise_CreateTexture2D(SerialiserType &ser,
else
{
ret = new WrappedID3D11Texture2D1(pTexture, ret, this, dispType);
GetResourceManager()->TakeResourceOwnership(ret);
}
const char *prefix = Descriptor.ArraySize > 1 ? "2D TextureArray" : "2D Texture";
@@ -639,10 +625,6 @@ HRESULT WrappedID3D11Device::CreateTexture2D(const D3D11_TEXTURE2D_DESC *pDesc,
record->AddChunk(chunk);
record->SetDataPtr(chunk->GetData());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppTexture2D = wrapped;
}
@@ -715,8 +697,6 @@ bool WrappedID3D11Device::Serialise_CreateTexture3D(SerialiserType &ser,
else
{
ret = new WrappedID3D11Texture3D1(pTexture, ret, this, dispType);
GetResourceManager()->TakeResourceOwnership(ret);
}
const char *prefix = "3D Texture";
@@ -775,10 +755,6 @@ HRESULT WrappedID3D11Device::CreateTexture3D(const D3D11_TEXTURE3D_DESC *pDesc,
record->AddChunk(chunk);
record->SetDataPtr(chunk->GetData());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppTexture3D = wrapped;
}
@@ -854,8 +830,6 @@ bool WrappedID3D11Device::Serialise_CreateShaderResourceView(
else
{
ret = new WrappedID3D11ShaderResourceView1(pView, ret, pResource, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pView, ResourceType::View, "Shader Resource View");
@@ -982,8 +956,6 @@ bool WrappedID3D11Device::Serialise_CreateUnorderedAccessView(
else
{
ret = new WrappedID3D11UnorderedAccessView1(pView, ret, pResource, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pView, ResourceType::View, "Unordered Access View");
@@ -1134,8 +1106,6 @@ bool WrappedID3D11Device::Serialise_CreateRenderTargetView(SerialiserType &ser,
else
{
ret = new WrappedID3D11RenderTargetView1(pView, ret, pResource, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pView, ResourceType::View, "Render Target View");
@@ -1234,8 +1204,6 @@ bool WrappedID3D11Device::Serialise_CreateDepthStencilView(
else
{
ret = new WrappedID3D11DepthStencilView(pView, ret, pResource, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pView, ResourceType::View, "Depth Stencil View");
@@ -1342,8 +1310,6 @@ bool WrappedID3D11Device::Serialise_CreateInputLayout(
else
{
ret = new WrappedID3D11InputLayout(pInputLayout, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pInputLayout, ResourceType::StateObject, "Input Layout");
@@ -1442,8 +1408,6 @@ bool WrappedID3D11Device::Serialise_CreateVertexShader(SerialiserType &ser,
{
ret = new WrappedID3D11Shader<ID3D11VertexShader>(pShader, ret, (const byte *)pShaderBytecode,
(size_t)BytecodeLength, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pShader, ResourceType::Shader, "Vertex Shader");
@@ -1531,8 +1495,6 @@ HRESULT WrappedID3D11Device::CreateVertexShader(const void *pShaderBytecode, SIZ
if(m_GlobalEXTUAV != ~0U)
w->SetShaderExtSlot(m_GlobalEXTUAV);
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppVertexShader = wrapped;
@@ -1577,8 +1539,6 @@ bool WrappedID3D11Device::Serialise_CreateGeometryShader(SerialiserType &ser,
{
ret = new WrappedID3D11Shader<ID3D11GeometryShader>(
pShader, ret, (const byte *)pShaderBytecode, (size_t)BytecodeLength, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pShader, ResourceType::Shader, "Geometry Shader");
@@ -1669,8 +1629,6 @@ HRESULT WrappedID3D11Device::CreateGeometryShader(const void *pShaderBytecode, S
if(m_GlobalEXTUAV != ~0U)
w->SetShaderExtSlot(m_GlobalEXTUAV);
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppGeometryShader = wrapped;
@@ -1721,8 +1679,6 @@ bool WrappedID3D11Device::Serialise_CreateGeometryShaderWithStreamOutput(
{
ret = new WrappedID3D11Shader<ID3D11GeometryShader>(
pShader, ret, (const byte *)pShaderBytecode, (size_t)BytecodeLength, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
D3D_PRIMITIVE_TOPOLOGY topo =
@@ -1890,8 +1846,6 @@ HRESULT WrappedID3D11Device::CreateGeometryShaderWithStreamOutput(
if(m_GlobalEXTUAV != ~0U)
w->SetShaderExtSlot(m_GlobalEXTUAV);
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppGeometryShader = wrapped;
@@ -1935,8 +1889,6 @@ bool WrappedID3D11Device::Serialise_CreatePixelShader(SerialiserType &ser,
{
ret = new WrappedID3D11Shader<ID3D11PixelShader>(pShader, ret, (const byte *)pShaderBytecode,
(size_t)BytecodeLength, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pShader, ResourceType::Shader, "Pixel Shader");
@@ -2025,8 +1977,6 @@ HRESULT WrappedID3D11Device::CreatePixelShader(const void *pShaderBytecode, SIZE
if(m_GlobalEXTUAV != ~0U)
w->SetShaderExtSlot(m_GlobalEXTUAV);
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppPixelShader = wrapped;
@@ -2069,8 +2019,6 @@ bool WrappedID3D11Device::Serialise_CreateHullShader(SerialiserType &ser, const
{
ret = new WrappedID3D11Shader<ID3D11HullShader>(pShader, ret, (const byte *)pShaderBytecode,
(size_t)BytecodeLength, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pShader, ResourceType::Shader, "Hull Shader");
@@ -2159,8 +2107,6 @@ HRESULT WrappedID3D11Device::CreateHullShader(const void *pShaderBytecode, SIZE_
if(m_GlobalEXTUAV != ~0U)
w->SetShaderExtSlot(m_GlobalEXTUAV);
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppHullShader = wrapped;
@@ -2205,8 +2151,6 @@ bool WrappedID3D11Device::Serialise_CreateDomainShader(SerialiserType &ser,
{
ret = new WrappedID3D11Shader<ID3D11DomainShader>(pShader, ret, (const byte *)pShaderBytecode,
(size_t)BytecodeLength, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pShader, ResourceType::Shader, "Domain Shader");
@@ -2296,8 +2240,6 @@ HRESULT WrappedID3D11Device::CreateDomainShader(const void *pShaderBytecode, SIZ
if(m_GlobalEXTUAV != ~0U)
w->SetShaderExtSlot(m_GlobalEXTUAV);
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppDomainShader = wrapped;
@@ -2342,8 +2284,6 @@ bool WrappedID3D11Device::Serialise_CreateComputeShader(SerialiserType &ser,
{
ret = new WrappedID3D11Shader<ID3D11ComputeShader>(
pShader, ret, (const byte *)pShaderBytecode, (size_t)BytecodeLength, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pShader, ResourceType::Shader, "Compute Shader");
@@ -2434,8 +2374,6 @@ HRESULT WrappedID3D11Device::CreateComputeShader(const void *pShaderBytecode, SI
if(m_GlobalEXTUAV != ~0U)
w->SetShaderExtSlot(m_GlobalEXTUAV);
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppComputeShader = wrapped;
@@ -2488,8 +2426,6 @@ bool WrappedID3D11Device::Serialise_CreateClassInstance(SerialiserType &ser, LPC
{
FlushPendingDead();
wrapped = new WrappedID3D11ClassInstance(pInstance, real, pClassLinkage, this);
GetResourceManager()->TakeResourceOwnership(wrapped);
}
AddResource(pInstance, ResourceType::ShaderBinding, "Class Instance");
@@ -2562,8 +2498,6 @@ bool WrappedID3D11Device::Serialise_GetClassInstance(SerialiserType &ser, LPCSTR
{
FlushPendingDead();
wrapped = new WrappedID3D11ClassInstance(pInstance, real, pClassLinkage, this);
GetResourceManager()->TakeResourceOwnership(wrapped);
}
AddResource(pInstance, ResourceType::ShaderBinding, "Class Instance");
@@ -2627,8 +2561,6 @@ bool WrappedID3D11Device::Serialise_CreateClassLinkage(SerialiserType &ser,
else
{
ret = new WrappedID3D11ClassLinkage(pLinkage, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pLinkage, ResourceType::ShaderBinding, "Class Linkage");
@@ -2702,14 +2634,10 @@ bool WrappedID3D11Device::Serialise_CreateBlendState(SerialiserType &ser,
ret->Release();
ret = (ID3D11BlendState *)GetResourceManager()->GetWrapper(ret);
ret->AddRef();
GetResourceManager()->TakeResourceOwnership(ret);
}
else
{
ret = new WrappedID3D11BlendState1(pState, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
}
@@ -2817,14 +2745,10 @@ bool WrappedID3D11Device::Serialise_CreateDepthStencilState(
ret->Release();
ret = (ID3D11DepthStencilState *)GetResourceManager()->GetWrapper(ret);
ret->AddRef();
GetResourceManager()->TakeResourceOwnership(ret);
}
else
{
ret = new WrappedID3D11DepthStencilState(pState, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
}
@@ -2930,14 +2854,10 @@ bool WrappedID3D11Device::Serialise_CreateRasterizerState(SerialiserType &ser,
ret->Release();
ret = (ID3D11RasterizerState *)GetResourceManager()->GetWrapper(ret);
ret->AddRef();
GetResourceManager()->TakeResourceOwnership(ret);
}
else
{
ret = new WrappedID3D11RasterizerState2(pState, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
}
@@ -3043,14 +2963,10 @@ bool WrappedID3D11Device::Serialise_CreateSamplerState(SerialiserType &ser,
ret->Release();
ret = (ID3D11SamplerState *)GetResourceManager()->GetWrapper(ret);
ret->AddRef();
GetResourceManager()->TakeResourceOwnership(ret);
}
else
{
ret = new WrappedID3D11SamplerState(pState, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
}
@@ -3151,8 +3067,6 @@ bool WrappedID3D11Device::Serialise_CreateQuery(SerialiserType &ser,
else
{
ret = new WrappedID3D11Query1(pQuery, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pQuery, ResourceType::Query, "Query");
@@ -3236,8 +3150,6 @@ bool WrappedID3D11Device::Serialise_CreatePredicate(SerialiserType &ser,
else
{
ret = new WrappedID3D11Predicate(pPredicate, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pPredicate, ResourceType::Query, "Predicate");
@@ -3329,8 +3241,6 @@ bool WrappedID3D11Device::Serialise_CreateCounter(SerialiserType &ser,
else
{
ret = new WrappedID3D11Query1(pCounter, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pCounter, ResourceType::Query, "Counter");
@@ -3418,8 +3328,6 @@ bool WrappedID3D11Device::Serialise_CreateDeferredContext(SerialiserType &ser,
ret = ctx;
AddDeferredContext((WrappedID3D11DeviceContext *)ret);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pDeferredContext, ResourceType::CommandBuffer, "Deferred Context");
@@ -3545,8 +3453,6 @@ bool WrappedID3D11Device::Serialise_OpenSharedResource(SerialiserType &ser, HAND
else
{
ret = new WrappedID3D11Buffer(pResource, ret, Descriptor.ByteWidth, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pResource, ResourceType::Buffer, "Shared Buffer");
@@ -3620,8 +3526,6 @@ bool WrappedID3D11Device::Serialise_OpenSharedResource(SerialiserType &ser, HAND
else
{
ret = new WrappedID3D11Texture1D(pResource, ret, this, dispType);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pResource, ResourceType::Texture, "Shared 1D Texture");
@@ -3665,8 +3569,6 @@ bool WrappedID3D11Device::Serialise_OpenSharedResource(SerialiserType &ser, HAND
else
{
ret = new WrappedID3D11Texture2D1(pResource, ret, this, dispType);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pResource, ResourceType::Texture, "Shared 2D Texture");
@@ -3710,8 +3612,6 @@ bool WrappedID3D11Device::Serialise_OpenSharedResource(SerialiserType &ser, HAND
else
{
ret = new WrappedID3D11Texture3D1(pResource, ret, this, dispType);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pResource, ResourceType::Texture, "Shared 3D Texture");
@@ -252,8 +252,6 @@ bool WrappedID3D12GraphicsCommandList::Serialise_Reset(SerialiserType &ser,
// always create a version of this list even if we're not re-recording, so the serialisation
// has an object to find
m_Cmd->m_RerecordCmdList.push_back(list);
GetResourceManager()->TakeResourceOwnership(list);
}
D3D12RenderState &state = m_Cmd->m_BakedCmdListInfo[m_Cmd->m_LastCmdListID].state;
@@ -314,8 +312,6 @@ bool WrappedID3D12GraphicsCommandList::Serialise_Reset(SerialiserType &ser,
m_pDevice->GetResourceDesc(BakedCommandList).SetCustomName(descr.name + " (Baked)");
}
GetResourceManager()->TakeResourceOwnership(list);
// whenever a command-building chunk asks for the command list, it
// will get our baked version.
if(GetResourceManager()->HasReplacement(CommandList))
@@ -558,8 +558,6 @@ WrappedID3D12CommandQueue::WrappedID3D12CommandQueue(ResourceId id, ID3D12Comman
WrappedID3D12CommandQueue::~WrappedID3D12CommandQueue()
{
SAFE_DELETE(m_ReplayList);
SAFE_DELETE(m_FrameReader);
SAFE_RELEASE(m_RayFence);
-11
View File
@@ -1898,8 +1898,6 @@ bool WrappedID3D12Device::Serialise_WrapSwapchainBuffer(SerialiserType &ser, IDX
fakeBB->SetName(L"Swap Chain Buffer");
GetResourceManager()->TakeResourceOwnership(fakeBB);
m_BackbufferFormat[wrapped->GetResourceID()] = SwapbufferFormat;
SubresourceStateVector &states = m_ResourceStates[wrapped->GetResourceID()];
@@ -1969,12 +1967,6 @@ IUnknown *WrappedID3D12Device::WrapSwapchainBuffer(IDXGISwapper *swapper, DXGI_F
states = {D3D12ResourceLayout::FromStates(D3D12_RESOURCE_STATE_PRESENT)};
}
}
else
{
WrappedID3D12Resource *wrapped = (WrappedID3D12Resource *)pRes;
GetResourceManager()->TakeResourceOwnership(wrapped);
}
}
if(IsCaptureMode(m_State))
@@ -4089,8 +4081,6 @@ bool WrappedID3D12Device::Serialise_CreateAS(SerialiserType &ser, ID3D12Resource
D3D12AccelerationStructure *accStructAtOffset = NULL;
if(asbWrappedResource->CreateAccStruct(asId, resourceOffset, type, byteSize, &accStructAtOffset))
{
GetResourceManager()->TakeResourceOwnership(accStructAtOffset);
if(D3D12_Debug_RT_Auditing())
{
RDCLOG("Creating %s AS %s at %s + %llu (%llu bytes): %llx remapped to %llx",
@@ -4777,7 +4767,6 @@ ID3D12GraphicsCommandListX *WrappedID3D12Device::GetNewList()
if(IsReplayMode(m_State))
{
GetResourceManager()->TakeResourceOwnership(ret);
// add a reference here so that when we release our internal resources on destruction we don't
// free this too soon before the resource manager can. We still want to have it tracked as a
// resource in the manager though.
@@ -261,8 +261,6 @@ bool WrappedID3D12Device::Serialise_CreateResource(
default: break;
}
GetResourceManager()->TakeResourceOwnership(ret);
if(desc.Flags & D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS)
m_ModResources.insert(GetResID(ret));
@@ -618,10 +616,6 @@ HRESULT WrappedID3D12Device::CreateResource(
GetResourceManager()->AddPlacedResource(wrapped->GetResourceID(), GetResID(pHeap));
}
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
{
SCOPED_LOCK(m_ResourceStatesLock);
@@ -826,8 +820,6 @@ bool WrappedID3D12Device::Serialise_OpenSharedHandle(SerialiserType &ser, HANDLE
else
{
ret = new WrappedID3D12Fence(resourceId, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(resourceId, ResourceType::Sync, "Fence");
@@ -898,8 +890,6 @@ bool WrappedID3D12Device::Serialise_OpenSharedHandle(SerialiserType &ser, HANDLE
else
{
ret = new WrappedID3D12Heap(resourceId, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(resourceId, ResourceType::Memory, "Heap");
+1 -55
View File
@@ -118,8 +118,6 @@ bool WrappedID3D12Device::Serialise_CreateCommandQueue(SerialiserType &ser,
ret = new WrappedID3D12CommandQueue(pCommandQueue, ret, this, m_State);
GetResourceManager()->TakeResourceOwnership(ret);
AddResource(pCommandQueue, ResourceType::Queue, "Command Queue");
WrappedID3D12CommandQueue *wrapped = (WrappedID3D12CommandQueue *)ret;
@@ -175,10 +173,6 @@ HRESULT WrappedID3D12Device::CreateCommandQueue(const D3D12_COMMAND_QUEUE_DESC *
wrapped->GetCreationRecord()->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
if(pDesc->Type == D3D12_COMMAND_LIST_TYPE_DIRECT && m_Queue == NULL)
{
@@ -251,8 +245,6 @@ bool WrappedID3D12Device::Serialise_CreateCommandAllocator(SerialiserType &ser,
m_CommandAllocators.push_back(ret);
GetResourceManager()->TakeResourceOwnership(ret);
AddResource(pCommandAllocator, ResourceType::Pool, "Command Allocator");
}
}
@@ -297,10 +289,6 @@ HRESULT WrappedID3D12Device::CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE type
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppCommandAllocator = (ID3D12CommandAllocator *)wrapped;
}
@@ -353,8 +341,6 @@ bool WrappedID3D12Device::Serialise_CreateCommandList(SerialiserType &ser, UINT
{
// close it immediately, we don't want to tie up the allocator
list->Close();
GetResourceManager()->TakeResourceOwnership(list);
}
AddResource(pCommandList, ResourceType::CommandBuffer, "Command List");
@@ -454,7 +440,7 @@ HRESULT WrappedID3D12Device::CreateCommandList(UINT nodeMask, D3D12_COMMAND_LIST
wrapped->GetCreationRecord()->AddParent(GetRecord(pInitialState));
}
// during replay, the caller is responsible for calling AddLiveResource as this function
// during replay, the caller is responsible for calling AddResource as this function
// can be called from ID3D12GraphicsCommandList::Reset serialising
if(riid == __uuidof(ID3D12GraphicsCommandList))
@@ -680,7 +666,6 @@ bool WrappedID3D12Device::Serialise_CreateGraphicsPipelineState(
.initialisationChunks.push_back((uint32_t)m_StructuredFile->chunks.size() - 2);
m_GlobalEXTUAV = ~0U;
}
GetResourceManager()->TakeResourceOwnership(wrapped);
}
return true;
@@ -742,8 +727,6 @@ void WrappedID3D12Device::ProcessCreatedGraphicsPSO(ID3D12PipelineState *real,
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
wrapped->graphics = new D3D12_EXPANDED_PIPELINE_STATE_STREAM_DESC(*pDesc);
D3D12_SHADER_BYTECODE *shaders[] = {
@@ -942,7 +925,6 @@ bool WrappedID3D12Device::Serialise_CreateComputePipelineState(
.initialisationChunks.push_back((uint32_t)m_StructuredFile->chunks.size() - 2);
m_GlobalEXTUAV = ~0U;
}
GetResourceManager()->TakeResourceOwnership(wrapped);
}
return true;
@@ -996,8 +978,6 @@ void WrappedID3D12Device::ProcessCreatedComputePSO(ID3D12PipelineState *real, ui
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
wrapped->compute = new D3D12_EXPANDED_PIPELINE_STATE_STREAM_DESC(*pDesc);
WrappedID3D12Shader *sh =
@@ -1117,8 +1097,6 @@ bool WrappedID3D12Device::Serialise_CreateDescriptorHeap(
ret = wrapped;
GetResourceManager()->TakeResourceOwnership(ret);
AddResource(pHeap, ResourceType::DescriptorStore, "Descriptor Heap");
DescriptorStoreDescription desc;
@@ -1168,10 +1146,6 @@ HRESULT WrappedID3D12Device::CreateDescriptorHeap(const D3D12_DESCRIPTOR_HEAP_DE
GetResourceManager()->MarkDirtyResource(wrapped->GetResourceID());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppvHeap = (ID3D12DescriptorHeap *)wrapped;
}
@@ -1220,14 +1194,10 @@ bool WrappedID3D12Device::Serialise_CreateRootSignature(SerialiserType &ser, UIN
ret->Release();
ret = (ID3D12RootSignature *)GetResourceManager()->GetWrapper(ret);
ret->AddRef();
GetResourceManager()->TakeResourceOwnership(ret);
}
else
{
ret = new WrappedID3D12RootSignature(pRootSignature, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
WrappedID3D12RootSignature *wrapped = (WrappedID3D12RootSignature *)ret;
@@ -1680,8 +1650,6 @@ bool WrappedID3D12Device::Serialise_CreateHeap(SerialiserType &ser, const D3D12_
else
{
ret = new WrappedID3D12Heap(pHeap, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pHeap, ResourceType::Memory, "Heap");
@@ -1730,10 +1698,6 @@ HRESULT WrappedID3D12Device::CreateHeap(const D3D12_HEAP_DESC *pDesc, REFIID rii
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppvHeap = (ID3D12Heap *)wrapped;
}
@@ -1777,8 +1741,6 @@ bool WrappedID3D12Device::Serialise_CreateFence(SerialiserType &ser, UINT64 Init
else
{
ret = new WrappedID3D12Fence(pFence, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pFence, ResourceType::Sync, "Fence");
@@ -1825,10 +1787,6 @@ HRESULT WrappedID3D12Device::CreateFence(UINT64 InitialValue, D3D12_FENCE_FLAGS
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
if(riid == __uuidof(ID3D12Fence))
*ppFence = (ID3D12Fence *)wrapped;
@@ -1869,8 +1827,6 @@ bool WrappedID3D12Device::Serialise_CreateQueryHeap(SerialiserType &ser,
else
{
ret = new WrappedID3D12QueryHeap(pQueryHeap, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pQueryHeap, ResourceType::Query, "Query Heap");
@@ -1910,10 +1866,6 @@ HRESULT WrappedID3D12Device::CreateQueryHeap(const D3D12_QUERY_HEAP_DESC *pDesc,
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppvHeap = (ID3D12QueryHeap *)wrapped;
}
@@ -1959,8 +1911,6 @@ bool WrappedID3D12Device::Serialise_CreateCommandSignature(SerialiserType &ser,
ret = wrapped;
GetResourceManager()->TakeResourceOwnership(ret);
AddResource(pCommandSignature, ResourceType::ShaderBinding, "Command Signature");
if(pRootSignature)
DerivedResource(pRootSignature, pCommandSignature);
@@ -2021,10 +1971,6 @@ HRESULT WrappedID3D12Device::CreateCommandSignature(const D3D12_COMMAND_SIGNATUR
record->AddParent(GetRecord(pRootSignature));
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
if(pDesc->pArgumentDescs[pDesc->NumArgumentDescs - 1].Type ==
D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS)
@@ -84,10 +84,6 @@ HRESULT WrappedID3D12Device::OpenExistingHeapFromAddress1(const void *pAddress,
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppvHeap = (ID3D12Heap *)wrapped;
}
@@ -113,14 +113,10 @@ bool WrappedID3D12Device::Serialise_CreateRootSignatureFromSubobjectInLibrary(
ret->Release();
ret = (ID3D12RootSignature *)GetResourceManager()->GetWrapper(ret);
ret->AddRef();
GetResourceManager()->TakeResourceOwnership(ret);
}
else
{
ret = new WrappedID3D12RootSignature(pRootSignature, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
WrappedID3D12RootSignature *wrapped = (WrappedID3D12RootSignature *)ret;
@@ -273,7 +273,6 @@ bool WrappedID3D12Device::Serialise_CreatePipelineState(SerialiserType &ser,
.initialisationChunks.push_back((uint32_t)m_StructuredFile->chunks.size() - 2);
m_GlobalEXTUAV = ~0U;
}
GetResourceManager()->TakeResourceOwnership(wrapped);
}
return true;
@@ -366,8 +365,6 @@ HRESULT WrappedID3D12Device::CreatePipelineState(const D3D12_PIPELINE_STATE_STRE
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
D3D12_EXPANDED_PIPELINE_STATE_STREAM_DESC *storedDesc =
new D3D12_EXPANDED_PIPELINE_STATE_STREAM_DESC(expandedDesc);
@@ -81,10 +81,6 @@ HRESULT WrappedID3D12Device::OpenExistingHeapFromAddress(const void *pAddress, R
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppvHeap = (ID3D12Heap *)wrapped;
}
@@ -150,10 +146,6 @@ HRESULT WrappedID3D12Device::OpenExistingHeapFromFileMapping(HANDLE hFileMapping
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppvHeap = (ID3D12Heap *)wrapped;
}
+1 -12
View File
@@ -72,11 +72,6 @@ bool WrappedID3D12Device::Serialise_CreateCommandList1(SerialiserType &ser, UINT
"Failed creating command list, HRESULT: %s", ToStr(hr).c_str());
return false;
}
else if(list)
{
// don't have to close it, as there's no implicit reset
GetResourceManager()->TakeResourceOwnership(list);
}
AddResource(pCommandList, ResourceType::CommandBuffer, "Command List");
}
@@ -162,7 +157,7 @@ HRESULT WrappedID3D12Device::CreateCommandList1(UINT nodeMask, D3D12_COMMAND_LIS
}
}
// during replay, the caller is responsible for calling AddLiveResource as this function
// during replay, the caller is responsible for calling AddResource as this function
// can be called from ID3D12GraphicsCommandList::Reset serialising
if(riid == __uuidof(ID3D12GraphicsCommandList))
@@ -278,8 +273,6 @@ bool WrappedID3D12Device::Serialise_CreateHeap1(SerialiserType &ser, const D3D12
else
{
ret = new WrappedID3D12Heap(pHeap, ret, this);
GetResourceManager()->TakeResourceOwnership(ret);
}
AddResource(pHeap, ResourceType::Memory, "Heap");
@@ -331,10 +324,6 @@ HRESULT WrappedID3D12Device::CreateHeap1(const D3D12_HEAP_DESC *pDesc,
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppvHeap = (ID3D12Heap *)wrapped;
}
@@ -239,7 +239,6 @@ bool WrappedID3D12Device::Serialise_CreateStateObject(SerialiserType &ser,
.initialisationChunks.push_back((uint32_t)m_StructuredFile->chunks.size() - 2);
m_GlobalEXTUAV = ~0U;
}
GetResourceManager()->TakeResourceOwnership(wrapped);
}
return true;
@@ -320,10 +319,6 @@ WrappedID3D12Device::CreateStateObject(const D3D12_STATE_OBJECT_DESC *pDesc, REF
record->AddChunk(vendorChunk);
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppStateObject = (ID3D12StateObject *)wrapped;
}
@@ -200,7 +200,6 @@ bool WrappedID3D12Device::Serialise_AddToStateObject(SerialiserType &ser,
.initialisationChunks.push_back((uint32_t)m_StructuredFile->chunks.size() - 2);
m_GlobalEXTUAV = ~0U;
}
GetResourceManager()->TakeResourceOwnership(wrapped);
}
return true;
@@ -287,10 +286,6 @@ HRESULT STDMETHODCALLTYPE WrappedID3D12Device::AddToStateObject(
record->AddChunk(vendorChunk);
record->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
*ppNewStateObject = (ID3D12StateObject *)wrapped;
}
@@ -101,8 +101,6 @@ bool WrappedID3D12Device::Serialise_CreateCommandQueue1(SerialiserType &ser,
ret = new WrappedID3D12CommandQueue(pCommandQueue, ret, this, m_State);
GetResourceManager()->TakeResourceOwnership(ret);
AddResource(pCommandQueue, ResourceType::Queue, "Command Queue");
WrappedID3D12CommandQueue *wrapped = (WrappedID3D12CommandQueue *)ret;
@@ -158,10 +156,6 @@ HRESULT WrappedID3D12Device::CreateCommandQueue1(const D3D12_COMMAND_QUEUE_DESC
wrapped->GetCreationRecord()->AddChunk(scope.Get());
}
else
{
GetResourceManager()->TakeResourceOwnership(wrapped);
}
if(pDesc->Type == D3D12_COMMAND_LIST_TYPE_DIRECT && m_Queue == NULL)
{
-2
View File
@@ -889,8 +889,6 @@ public:
m_DXBCFile = NULL;
m_Details = new ShaderReflection;
device->GetResourceManager()->TakeResourceOwnership(this);
if(!m_InternalResources)
{
device->AddResource(GetResourceID(), ResourceType::Shader, "Shader");
-8
View File
@@ -702,9 +702,6 @@ WrappedOpenGL::WrappedOpenGL(GLPlatform &platform)
m_DescriptorsID = GetResourceManager()->RegisterResource(
ResourceId(), GLResource(NULL, eResSpecial, eSpecialResDescriptorStorage));
GetResourceManager()->TakeResourceOwnership(
GLResource(NULL, eResSpecial, eSpecialResDescriptorStorage));
AddResource(m_DescriptorsID, ResourceType::DescriptorStore, "");
GetReplay()->GetResourceDesc(m_DescriptorsID).SetCustomName("Context Bindings");
GetReplay()->GetResourceDesc(m_DescriptorsID).initialisationChunks.clear();
@@ -887,7 +884,6 @@ void WrappedOpenGL::CreateReplayBackbuffer(const GLInitParams &params, ResourceI
if(params.depthBits > 0 || params.stencilBits > 0)
drv.glClearBufferfi(eGL_DEPTH_STENCIL, 0, 1.0f, 0);
GetResourceManager()->TakeResourceOwnership(FramebufferRes(GetCtx(), fbo));
AddResource(fboId, ResourceType::SwapchainImage, "");
GetReplay()->GetResourceDesc(fboId).SetCustomName(bbname + " FBO");
@@ -1716,8 +1712,6 @@ void WrappedOpenGL::ReplaceResource(ResourceId from, ResourceId to)
shadDetails.ProcessCompilation(*this, targetId, 0);
GetResourceManager()->TakeResourceOwnership(toresource);
// finally since programs have state (sigh) we have to copy that across as well.
GLuint progsrc = fromresource.name;
GLuint progdst = toresource.name;
@@ -3650,10 +3644,8 @@ bool WrappedOpenGL::ProcessChunk(ReadSerialiser &ser, GLChunk chunk)
GL.glGenVertexArrays(1, &m_Global_VAO0);
GetResourceManager()->RegisterResource(vao, VertexArrayRes(GetCtx(), m_Global_VAO0));
GetResourceManager()->TakeResourceOwnership(VertexArrayRes(GetCtx(), m_Global_VAO0));
glBindVertexArray(m_Global_VAO0);
GetResourceManager()->TakeResourceOwnership(VertexArrayRes(GetCtx(), m_Global_VAO0));
AddResource(vao, ResourceType::StateObject, "Vertex Array");
GetReplay()->GetResourceDesc(vao).SetCustomName("Default VAO");
@@ -86,7 +86,6 @@ bool WrappedOpenGL::Serialise_glGenBuffers(SerialiserType &ser, GLsizei n, GLuin
GLResource res = BufferRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(buffer, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(buffer, ResourceType::Buffer, "Buffer");
@@ -126,7 +125,6 @@ void WrappedOpenGL::glGenBuffers(GLsizei n, GLuint *buffers)
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
m_Buffers[id].resource = res;
m_Buffers[id].curType = eGL_NONE;
m_Buffers[id].creationFlags = BufferCategory::NoFlags;
@@ -151,7 +149,6 @@ bool WrappedOpenGL::Serialise_glCreateBuffers(SerialiserType &ser, GLsizei n, GL
GLResource res = BufferRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(buffer, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(buffer, ResourceType::Buffer, "Buffer");
@@ -191,7 +188,6 @@ void WrappedOpenGL::glCreateBuffers(GLsizei n, GLuint *buffers)
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
m_Buffers[id].resource = res;
m_Buffers[id].curType = eGL_NONE;
m_Buffers[id].creationFlags = BufferCategory::NoFlags;
@@ -3119,7 +3115,6 @@ bool WrappedOpenGL::Serialise_glGenTransformFeedbacks(SerialiserType &ser, GLsiz
GLResource res = FeedbackRes(GetCtx(), real);
m_ResourceManager->RegisterResource(feedback, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(feedback, ResourceType::StateObject, "Transform Feedback");
}
@@ -3153,10 +3148,6 @@ void WrappedOpenGL::glGenTransformFeedbacks(GLsizei n, GLuint *ids)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -3177,7 +3168,6 @@ bool WrappedOpenGL::Serialise_glCreateTransformFeedbacks(SerialiserType &ser, GL
GLResource res = FeedbackRes(GetCtx(), real);
m_ResourceManager->RegisterResource(feedback, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(feedback, ResourceType::StateObject, "Transform Feedback");
}
@@ -3211,10 +3201,6 @@ void WrappedOpenGL::glCreateTransformFeedbacks(GLsizei n, GLuint *ids)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -4554,7 +4540,6 @@ bool WrappedOpenGL::Serialise_glGenVertexArrays(SerialiserType &ser, GLsizei n,
GLResource res = VertexArrayRes(GetCtx(), real);
m_ResourceManager->RegisterResource(array, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(array, ResourceType::StateObject, "Vertex Array");
}
@@ -4588,10 +4573,6 @@ void WrappedOpenGL::glGenVertexArrays(GLsizei n, GLuint *arrays)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -4612,7 +4593,6 @@ bool WrappedOpenGL::Serialise_glCreateVertexArrays(SerialiserType &ser, GLsizei
GLResource res = VertexArrayRes(GetCtx(), real);
m_ResourceManager->RegisterResource(array, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(array, ResourceType::StateObject, "Vertex Array");
}
@@ -4646,10 +4626,6 @@ void WrappedOpenGL::glCreateVertexArrays(GLsizei n, GLuint *arrays)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -72,7 +72,6 @@ bool WrappedOpenGL::Serialise_glGenFramebuffers(SerialiserType &ser, GLsizei n,
GLResource res = FramebufferRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(framebuffer, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(framebuffer, ResourceType::RenderPass, "Framebuffer");
}
@@ -106,10 +105,6 @@ void WrappedOpenGL::glGenFramebuffers(GLsizei n, GLuint *framebuffers)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -132,7 +127,6 @@ bool WrappedOpenGL::Serialise_glCreateFramebuffers(SerialiserType &ser, GLsizei
GLResource res = FramebufferRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(framebuffer, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(framebuffer, ResourceType::RenderPass, "Framebuffer");
}
@@ -166,10 +160,6 @@ void WrappedOpenGL::glCreateFramebuffers(GLsizei n, GLuint *framebuffers)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -2409,7 +2399,6 @@ bool WrappedOpenGL::Serialise_glGenRenderbuffers(SerialiserType &ser, GLsizei n,
GLResource res = RenderbufferRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(renderbuffer, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(renderbuffer, ResourceType::Texture, "Renderbuffer");
@@ -2446,10 +2435,6 @@ void WrappedOpenGL::glGenRenderbuffers(GLsizei n, GLuint *renderbuffers)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -2473,7 +2458,6 @@ bool WrappedOpenGL::Serialise_glCreateRenderbuffers(SerialiserType &ser, GLsizei
GLResource res = RenderbufferRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(renderbuffer, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(renderbuffer, ResourceType::Texture, "Renderbuffer");
@@ -2510,10 +2494,6 @@ void WrappedOpenGL::glCreateRenderbuffers(GLsizei n, GLuint *renderbuffers)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -560,7 +560,6 @@ bool WrappedOpenGL::Serialise_glCreateMemoryObjectsEXT(SerialiserType &ser, GLsi
GLResource res = ExtMemRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(memory, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(memory, ResourceType::Memory, "Memory Object");
}
@@ -594,10 +593,6 @@ void WrappedOpenGL::glCreateMemoryObjectsEXT(GLsizei n, GLuint *memoryObjects)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -835,7 +830,6 @@ bool WrappedOpenGL::Serialise_glGenSemaphoresEXT(SerialiserType &ser, GLsizei n,
GLResource res = ExtSemRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(semaphore, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(semaphore, ResourceType::Sync, "Semaphore");
}
@@ -869,10 +863,6 @@ void WrappedOpenGL::glGenSemaphoresEXT(GLsizei n, GLuint *semaphores)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -78,8 +78,6 @@ bool WrappedOpenGL::Serialise_glFenceSync(SerialiserType &ser, GLsync real, GLen
GLResource res = SyncRes(GetCtx(), name);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(sync, ResourceType::Sync, "Sync");
}
@@ -109,10 +107,6 @@ GLsync WrappedOpenGL::glFenceSync(GLenum condition, GLbitfield flags)
GetContextRecord()->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
return sync;
}
@@ -213,7 +207,6 @@ bool WrappedOpenGL::Serialise_glGenQueries(SerialiserType &ser, GLsizei n, GLuin
GLResource res = QueryRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(query, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(query, ResourceType::Query, "Query");
}
@@ -247,10 +240,6 @@ void WrappedOpenGL::glGenQueries(GLsizei count, GLuint *ids)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -273,7 +262,6 @@ bool WrappedOpenGL::Serialise_glCreateQueries(SerialiserType &ser, GLenum target
GLResource res = QueryRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(query, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(query, ResourceType::Query, "Query");
}
@@ -307,10 +295,6 @@ void WrappedOpenGL::glCreateQueries(GLenum target, GLsizei count, GLuint *ids)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -51,7 +51,6 @@ bool WrappedOpenGL::Serialise_glGenSamplers(SerialiserType &ser, GLsizei n, GLui
GLResource res = SamplerRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(sampler, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(sampler, ResourceType::Sampler, "Sampler");
}
@@ -85,10 +84,6 @@ void WrappedOpenGL::glGenSamplers(GLsizei count, GLuint *samplers)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -109,7 +104,6 @@ bool WrappedOpenGL::Serialise_glCreateSamplers(SerialiserType &ser, GLsizei n, G
GLResource res = SamplerRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(sampler, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(sampler, ResourceType::Sampler, "Sampler");
}
@@ -143,10 +137,6 @@ void WrappedOpenGL::glCreateSamplers(GLsizei count, GLuint *samplers)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -614,7 +614,6 @@ bool WrappedOpenGL::Serialise_glCreateShader(SerialiserType &ser, GLenum type, G
GLResource res = ShaderRes(GetCtx(), real);
ResourceId id = GetResourceManager()->RegisterResource(Shader, res);
GetResourceManager()->TakeResourceOwnership(res);
m_Shaders[id].type = type;
@@ -649,10 +648,6 @@ GLuint WrappedOpenGL::glCreateShader(GLenum type)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
m_Shaders[id].type = type;
@@ -974,7 +969,6 @@ bool WrappedOpenGL::Serialise_glCreateShaderProgramv(SerialiserType &ser, GLenum
GLResource res = ProgramRes(GetCtx(), real);
ResourceId id = m_ResourceManager->RegisterResource(Program, res);
GetResourceManager()->TakeResourceOwnership(res);
WrappedOpenGL::ProgramData &progDetails = m_Programs[id];
@@ -1060,7 +1054,6 @@ bool WrappedOpenGL::Serialise_glCreateProgram(SerialiserType &ser, GLuint progra
GLResource res = ProgramRes(GetCtx(), real);
ResourceId id = m_ResourceManager->RegisterResource(Program, res);
GetResourceManager()->TakeResourceOwnership(res);
m_Programs[id].linked = false;
@@ -1099,10 +1092,6 @@ GLuint WrappedOpenGL::glCreateProgram()
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
m_Programs[id].linked = false;
@@ -1928,7 +1917,6 @@ bool WrappedOpenGL::Serialise_glGenProgramPipelines(SerialiserType &ser, GLsizei
GLResource res = ProgramPipeRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(pipeline, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(pipeline, ResourceType::StateObject, "Pipeline");
}
@@ -1962,10 +1950,6 @@ void WrappedOpenGL::glGenProgramPipelines(GLsizei n, GLuint *pipelines)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -1988,7 +1972,6 @@ bool WrappedOpenGL::Serialise_glCreateProgramPipelines(SerialiserType &ser, GLsi
GLResource res = ProgramPipeRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(pipeline, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(pipeline, ResourceType::StateObject, "Pipeline");
}
@@ -2022,10 +2005,6 @@ void WrappedOpenGL::glCreateProgramPipelines(GLsizei n, GLuint *pipelines)
record->AddChunk(chunk);
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
}
}
}
@@ -103,7 +103,6 @@ bool WrappedOpenGL::Serialise_glGenTextures(SerialiserType &ser, GLsizei n, GLui
GLResource res = TextureRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(texture, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(texture, ResourceType::Texture, "Texture");
@@ -142,7 +141,6 @@ void WrappedOpenGL::glGenTextures(GLsizei n, GLuint *textures)
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
m_Textures[id].resource = res;
m_Textures[id].curType = eGL_NONE;
}
@@ -168,7 +166,6 @@ bool WrappedOpenGL::Serialise_glCreateTextures(SerialiserType &ser, GLenum targe
GLResource res = TextureRes(GetCtx(), real);
ResourceId live = m_ResourceManager->RegisterResource(texture, res);
GetResourceManager()->TakeResourceOwnership(res);
AddResource(texture, ResourceType::Texture, "Texture");
@@ -212,7 +209,6 @@ void WrappedOpenGL::glCreateTextures(GLenum target, GLsizei n, GLuint *textures)
}
else
{
GetResourceManager()->TakeResourceOwnership(res);
m_Textures[id].resource = res;
m_Textures[id].curType = TextureTarget(target);
m_Textures[id].creationFlags |= TextureCategory::ShaderRead;
-2
View File
@@ -3591,7 +3591,6 @@ RDResult WrappedVulkan::ReadLogInitialisation(RDCFile *rdc, bool storeStructured
ResourceId id = ResourceIDGen::GetNewUniqueID();
GetResourceManager()->WrapResource(id, Unwrap(m_Device), m_Queue);
GetResourceManager()->AddLiveResource(id, m_Queue);
m_ExternalQueues[m_QueueFamilyIdx].queue = m_Queue;
}
@@ -4045,7 +4044,6 @@ void WrappedVulkan::ApplyInitialContents()
ResourceId id = ResourceIDGen::GetNewUniqueID();
GetResourceManager()->WrapResource(id, Unwrap(m_Device), queue);
GetResourceManager()->AddLiveResource(id, queue);
m_ExternalQueues[i].queue = queue;
}
-3
View File
@@ -2985,9 +2985,6 @@ void VulkanCreationInfo::DescSetPool::CreateOverflow(VkDevice device,
ResourceId poolid = resourceMan->WrapResource(ResourceId(), Unwrap(device), pool);
// register as a live-only resource, so it is cleaned up properly
resourceMan->AddLiveResource(poolid, pool);
overflow.push_back(pool);
}
-8
View File
@@ -177,25 +177,17 @@ public:
// if any objects leaked past, it's no longer safe to delete them as we would
// be calling Shutdown() after the device that owns them is destroyed. Instead
// we just have to leak ourselves.
RDCASSERT(m_OwnedResources.empty());
RDCASSERT(m_InitialContents.empty());
RDCASSERT(m_ResourceRecords.empty());
RDCASSERT(m_ResourceMap.empty());
RDCASSERT(m_WrapperMap.empty());
m_OwnedResources.clear();
m_InitialContents.clear();
m_ResourceRecords.clear();
m_ResourceMap.clear();
m_WrapperMap.clear();
}
template <typename realtype>
void AddLiveResource(ResourceId id, realtype obj)
{
ResourceManager::TakeResourceOwnership(GetWrapped(obj));
}
using ResourceManager::AddResourceRecord;
template <typename realtype>
@@ -459,10 +459,6 @@ VulkanShaderCache::VulkanShaderCache(WrappedVulkan *driver)
{
m_pDriver->GetResourceManager()->AddResourceRecord(m_PipelineCache);
}
else
{
m_pDriver->GetResourceManager()->AddLiveResource(id, m_PipelineCache);
}
}
}
@@ -1236,7 +1236,6 @@ bool WrappedVulkan::Serialise_vkCreateCommandPool(SerialiserType &ser, VkDevice
else
{
ResourceId live = GetResourceManager()->WrapResource(CmdPool, Unwrap(device), pool);
GetResourceManager()->AddLiveResource(CmdPool, pool);
}
AddResource(CmdPool, ResourceType::Pool, "Command Pool");
@@ -1280,10 +1279,6 @@ VkResult WrappedVulkan::vkCreateCommandPool(VkDevice device,
record->cmdPoolInfo->queueFamilyIndex = pCreateInfo->queueFamilyIndex;
record->AddChunk(chunk);
}
else
{
GetResourceManager()->AddLiveResource(id, *pCmdPool);
}
}
return ret;
@@ -1355,7 +1350,6 @@ bool WrappedVulkan::Serialise_vkAllocateCommandBuffers(SerialiserType &ser, VkDe
else
{
ResourceId live = GetResourceManager()->WrapResource(CommandBuffer, Unwrap(device), cmd);
GetResourceManager()->AddLiveResource(CommandBuffer, cmd);
ResourceId poolId = GetResID(AllocateInfo.commandPool);
auto cmdQueueFamilyIt = m_commandQueueFamilies.find(poolId);
if(cmdQueueFamilyIt == m_commandQueueFamilies.end())
@@ -1466,10 +1460,6 @@ VkResult WrappedVulkan::vkAllocateCommandBuffers(VkDevice device,
record->cmdInfo->beginCapture = false;
record->cmdInfo->endCapture = false;
}
else
{
GetResourceManager()->AddLiveResource(id, pCommandBuffers[i]);
}
}
}
@@ -1534,7 +1524,6 @@ bool WrappedVulkan::Serialise_vkBeginCommandBuffer(SerialiserType &ser, VkComman
VkDescriptorSet descset = MakeFakePushDescSet();
ResourceId id = GetResourceManager()->WrapResource(ResourceId(), Unwrap(device), descset);
m_BakedCmdBufferInfo[BakedCommandBuffer].pushDescriptorID[p][i] = id;
GetResourceManager()->AddLiveResource(id, descset);
}
}
}
@@ -1663,7 +1652,6 @@ bool WrappedVulkan::Serialise_vkBeginCommandBuffer(SerialiserType &ser, VkComman
else
{
GetResourceManager()->WrapResource(BakedCommandBuffer, Unwrap(device), cmd);
GetResourceManager()->AddLiveResource(BakedCommandBuffer, cmd);
}
#if ENABLED(VERBOSE_PARTIAL_REPLAY)
@@ -1745,7 +1733,6 @@ bool WrappedVulkan::Serialise_vkBeginCommandBuffer(SerialiserType &ser, VkComman
{
ResourceId live =
GetResourceManager()->WrapResource(BakedCommandBuffer, Unwrap(device), cmd);
GetResourceManager()->AddLiveResource(BakedCommandBuffer, cmd);
}
AddResource(BakedCommandBuffer, ResourceType::CommandBuffer, "Baked Command Buffer");
@@ -1668,7 +1668,6 @@ bool WrappedVulkan::Serialise_vkCreateDescriptorPool(SerialiserType &ser, VkDevi
else
{
ResourceId live = GetResourceManager()->WrapResource(DescriptorPool, Unwrap(device), pool);
GetResourceManager()->AddLiveResource(DescriptorPool, pool);
m_CreationInfo.m_DescSetPool[live].Init(GetResourceManager(), m_CreationInfo, &CreateInfo);
}
@@ -1712,10 +1711,6 @@ VkResult WrappedVulkan::vkCreateDescriptorPool(VkDevice device,
record->descPoolInfo = new DescPoolInfo;
}
else
{
GetResourceManager()->AddLiveResource(id, *pDescriptorPool);
}
}
return ret;
@@ -1791,7 +1786,6 @@ bool WrappedVulkan::Serialise_vkCreateDescriptorSetLayout(
else
{
live = GetResourceManager()->WrapResource(SetLayout, Unwrap(device), layout);
GetResourceManager()->AddLiveResource(SetLayout, layout);
m_CreationInfo.m_DescSetLayout[live].Init(GetResourceManager(), m_CreationInfo, live,
&CreateInfo);
@@ -1900,8 +1894,6 @@ VkResult WrappedVulkan::vkCreateDescriptorSetLayout(VkDevice device,
}
else
{
GetResourceManager()->AddLiveResource(id, *pSetLayout);
m_CreationInfo.m_DescSetLayout[id].Init(GetResourceManager(), m_CreationInfo, id, pCreateInfo);
}
}
@@ -1977,7 +1969,6 @@ bool WrappedVulkan::Serialise_vkAllocateDescriptorSets(SerialiserType &ser, VkDe
{
ResourceId live = GetResourceManager()->WrapResource(DescriptorSet, Unwrap(device), descset);
GetResourceManager()->AddLiveResource(DescriptorSet, descset);
// this is stored in the resource record on capture, we need to be able to look to up
m_DescriptorSetState[live].layout = layoutId;
@@ -2173,8 +2164,6 @@ VkResult WrappedVulkan::vkAllocateDescriptorSets(VkDevice device,
}
else
{
GetResourceManager()->AddLiveResource(id, pDescriptorSets[i]);
m_DescriptorSetState[id].layout = GetResID(pAllocateInfo->pSetLayouts[i]);
}
}
@@ -3039,7 +3028,6 @@ bool WrappedVulkan::Serialise_vkCreateDescriptorUpdateTemplate(
{
ResourceId live =
GetResourceManager()->WrapResource(DescriptorUpdateTemplate, Unwrap(device), templ);
GetResourceManager()->AddLiveResource(DescriptorUpdateTemplate, templ);
m_CreationInfo.m_DescUpdateTemplate[live].Init(GetResourceManager(), m_CreationInfo,
&CreateInfo);
@@ -3097,8 +3085,6 @@ VkResult WrappedVulkan::vkCreateDescriptorUpdateTemplate(
}
else
{
GetResourceManager()->AddLiveResource(id, *pDescriptorUpdateTemplate);
m_CreationInfo.m_DescUpdateTemplate[id].Init(GetResourceManager(), m_CreationInfo, pCreateInfo);
}
}
@@ -493,15 +493,9 @@ RDResult WrappedVulkan::Initialise(VkInitParams &params, uint64_t sectionVersion
// we'll add the chunk later when we re-process it.
if(params.InstanceID != ResourceId())
{
GetResourceManager()->AddLiveResource(params.InstanceID, m_Instance);
AddResource(params.InstanceID, ResourceType::Device, "Instance");
GetReplay()->GetResourceDesc(params.InstanceID).initialisationChunks.clear();
}
else
{
GetResourceManager()->AddLiveResource(GetResID(m_Instance), m_Instance);
}
InitInstanceExtensionTables(m_Instance, &m_EnabledExtensions);
@@ -1451,6 +1445,10 @@ bool WrappedVulkan::Serialise_vkEnumeratePhysicalDevices(SerialiserType &ser, Vk
pd = m_ReplayPhysicalDevices[bestIdx];
// we want to preserve the separate physical devices until we actually need the real handle,
// so don't remap multiple capture-time physical devices to one replay-time physical device
// yet. See below in Serialise_vkCreateDevice where this is decoded.
// Note this allocation is pooled so we don't have to explicitly delete it.
{
VkPhysicalDevice fakeDevice = MakePhysicalDeviceHandleFromIndex(PhysicalDeviceIndex);
@@ -1462,12 +1460,6 @@ bool WrappedVulkan::Serialise_vkEnumeratePhysicalDevices(SerialiserType &ser, Vk
GetResourceManager()->AddWrapper(wrapped, ToTypedHandle(fakeDevice));
fakeDevice = (VkPhysicalDevice)wrapped;
// we want to preserve the separate physical devices until we actually need the real handle,
// so don't remap multiple capture-time physical devices to one replay-time physical device
// yet. See below in Serialise_vkCreateDevice where this is decoded.
// Note this allocation is pooled so we don't have to explicitly delete it.
GetResourceManager()->AddLiveResource(PhysicalDevice, fakeDevice);
}
AddResource(PhysicalDevice, ResourceType::Device, "Physical Device");
@@ -4230,7 +4222,6 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
}
GetResourceManager()->WrapResource(Device, device, device);
GetResourceManager()->AddLiveResource(Device, device);
AddResource(Device, ResourceType::Device, "Device");
DerivedResource(origPhysDevice, Device);
@@ -5008,10 +4999,6 @@ VkResult WrappedVulkan::vkCreateDevice(VkPhysicalDevice physicalDevice,
InitDeviceExtensionTables(*pDevice, record->instDevInfo);
}
else
{
GetResourceManager()->AddLiveResource(id, *pDevice);
}
VkDevice device = *pDevice;
@@ -734,7 +734,6 @@ bool WrappedVulkan::Serialise_vkCreateSampler(SerialiserType &ser, VkDevice devi
else
{
live = GetResourceManager()->WrapResource(Sampler, Unwrap(device), samp);
GetResourceManager()->AddLiveResource(Sampler, samp);
m_CreationInfo.m_Sampler[live].Init(GetResourceManager(), m_CreationInfo, &CreateInfo);
}
@@ -853,8 +852,6 @@ VkResult WrappedVulkan::vkCreateSampler(VkDevice device, const VkSamplerCreateIn
}
else
{
GetResourceManager()->AddLiveResource(id, *pSampler);
m_CreationInfo.m_Sampler[id].Init(GetResourceManager(), m_CreationInfo, pCreateInfo);
}
}
@@ -953,7 +950,6 @@ bool WrappedVulkan::Serialise_vkCreateFramebuffer(SerialiserType &ser, VkDevice
else
{
live = GetResourceManager()->WrapResource(Framebuffer, Unwrap(device), fb);
GetResourceManager()->AddLiveResource(Framebuffer, fb);
NameVulkanObject(fb, StringFormat::Fmt("Framebuffer %s", ToStr(Framebuffer).c_str()));
@@ -989,9 +985,6 @@ bool WrappedVulkan::Serialise_vkCreateFramebuffer(SerialiserType &ser, VkDevice
ResourceId loadFBid =
GetResourceManager()->WrapResource(ResourceId(), Unwrap(device), fbinfo.loadFBs[s]);
// register as a live-only resource, so it is cleaned up properly
GetResourceManager()->AddLiveResource(loadFBid, fbinfo.loadFBs[s]);
NameVulkanObject(fbinfo.loadFBs[s], StringFormat::Fmt("Framebuffer %s loadFB %d",
ToStr(Framebuffer).c_str(), s));
}
@@ -1127,8 +1120,6 @@ VkResult WrappedVulkan::vkCreateFramebuffer(VkDevice device,
}
else
{
GetResourceManager()->AddLiveResource(id, *pFramebuffer);
VulkanCreationInfo::Framebuffer fbinfo;
fbinfo.Init(GetResourceManager(), m_CreationInfo, pCreateInfo);
@@ -1148,9 +1139,6 @@ VkResult WrappedVulkan::vkCreateFramebuffer(VkDevice device,
ResourceId loadFBid =
GetResourceManager()->WrapResource(ResourceId(), Unwrap(device), fbinfo.loadFBs[s]);
// register as a live-only resource, so it is cleaned up properly
GetResourceManager()->AddLiveResource(loadFBid, fbinfo.loadFBs[s]);
}
m_CreationInfo.m_Framebuffer[id] = fbinfo;
@@ -1251,7 +1239,6 @@ bool WrappedVulkan::Serialise_vkCreateRenderPass(SerialiserType &ser, VkDevice d
else
{
live = GetResourceManager()->WrapResource(RenderPass, Unwrap(device), rp);
GetResourceManager()->AddLiveResource(RenderPass, rp);
bool badIndirectArgDep = false;
@@ -1330,9 +1317,6 @@ bool WrappedVulkan::Serialise_vkCreateRenderPass(SerialiserType &ser, VkDevice d
{
ResourceId loadRPid =
GetResourceManager()->WrapResource(ResourceId(), Unwrap(device), rpinfo.loadRPs[s]);
// register as a live-only resource, so it is cleaned up properly
GetResourceManager()->AddLiveResource(loadRPid, rpinfo.loadRPs[s]);
}
}
@@ -1396,8 +1380,6 @@ VkResult WrappedVulkan::vkCreateRenderPass(VkDevice device, const VkRenderPassCr
}
else
{
GetResourceManager()->AddLiveResource(id, *pRenderPass);
VulkanCreationInfo::RenderPass rpinfo;
rpinfo.Init(GetResourceManager(), m_CreationInfo, pCreateInfo);
@@ -1443,9 +1425,6 @@ VkResult WrappedVulkan::vkCreateRenderPass(VkDevice device, const VkRenderPassCr
ResourceId loadRPid =
GetResourceManager()->WrapResource(ResourceId(), Unwrap(device), rpinfo.loadRPs[s]);
// register as a live-only resource, so it is cleaned up properly
GetResourceManager()->AddLiveResource(loadRPid, rpinfo.loadRPs[s]);
}
m_CreationInfo.m_RenderPass[id] = rpinfo;
@@ -1559,7 +1538,6 @@ bool WrappedVulkan::Serialise_vkCreateRenderPass2(SerialiserType &ser, VkDevice
else
{
live = GetResourceManager()->WrapResource(RenderPass, Unwrap(device), rp);
GetResourceManager()->AddLiveResource(RenderPass, rp);
// make a version of the render pass that loads from its attachments,
// so it can be used for replaying a single draw after a render pass
@@ -1608,9 +1586,6 @@ bool WrappedVulkan::Serialise_vkCreateRenderPass2(SerialiserType &ser, VkDevice
{
ResourceId loadRPid =
GetResourceManager()->WrapResource(ResourceId(), Unwrap(device), rpinfo.loadRPs[s]);
// register as a live-only resource, so it is cleaned up properly
GetResourceManager()->AddLiveResource(loadRPid, rpinfo.loadRPs[s]);
}
}
@@ -1675,8 +1650,6 @@ VkResult WrappedVulkan::vkCreateRenderPass2(VkDevice device,
}
else
{
GetResourceManager()->AddLiveResource(id, *pRenderPass);
VulkanCreationInfo::RenderPass rpinfo;
rpinfo.Init(GetResourceManager(), m_CreationInfo, pCreateInfo);
@@ -1722,9 +1695,6 @@ VkResult WrappedVulkan::vkCreateRenderPass2(VkDevice device,
ResourceId loadRPid =
GetResourceManager()->WrapResource(ResourceId(), Unwrap(device), rpinfo.loadRPs[s]);
// register as a live-only resource, so it is cleaned up properly
GetResourceManager()->AddLiveResource(loadRPid, rpinfo.loadRPs[s]);
}
m_CreationInfo.m_RenderPass[id] = rpinfo;
@@ -1770,7 +1740,6 @@ bool WrappedVulkan::Serialise_vkCreateQueryPool(SerialiserType &ser, VkDevice de
else
{
ResourceId live = GetResourceManager()->WrapResource(QueryPool, Unwrap(device), pool);
GetResourceManager()->AddLiveResource(QueryPool, pool);
m_CreationInfo.m_QueryPool[live].Init(GetResourceManager(), m_CreationInfo, &CreateInfo);
@@ -1877,10 +1846,6 @@ VkResult WrappedVulkan::vkCreateQueryPool(VkDevice device, const VkQueryPoolCrea
record->AddChunk(chunk);
}
else
{
GetResourceManager()->AddLiveResource(id, *pQueryPool);
}
}
return ret;
@@ -2303,7 +2268,6 @@ bool WrappedVulkan::Serialise_vkCreateSamplerYcbcrConversion(
else
{
live = GetResourceManager()->WrapResource(ycbcrConversion, Unwrap(device), conv);
GetResourceManager()->AddLiveResource(ycbcrConversion, conv);
m_CreationInfo.m_YCbCrSampler[live].Init(GetResourceManager(), m_CreationInfo, &CreateInfo);
}
@@ -2345,10 +2309,6 @@ VkResult WrappedVulkan::vkCreateSamplerYcbcrConversion(
VkResourceRecord *record = GetResourceManager()->AddResourceRecord(*pYcbcrConversion);
record->AddChunk(chunk);
}
else
{
GetResourceManager()->AddLiveResource(id, *pYcbcrConversion);
}
}
return ret;
@@ -65,7 +65,6 @@ bool WrappedVulkan::Serialise_vkGetDeviceQueue(SerialiserType &ser, VkDevice dev
else
{
GetResourceManager()->WrapResource(Queue, Unwrap(device), queue);
GetResourceManager()->AddLiveResource(Queue, queue);
}
if(remapFamily == m_QueueFamilyIdx && m_Queue == VK_NULL_HANDLE)
@@ -2247,7 +2246,6 @@ bool WrappedVulkan::Serialise_vkGetDeviceQueue2(SerialiserType &ser, VkDevice de
ObjDisp(device)->GetDeviceQueue2(Unwrap(device), &QueueInfo, &queue);
GetResourceManager()->WrapResource(Queue, Unwrap(device), queue);
GetResourceManager()->AddLiveResource(Queue, queue);
if(remapFamily == m_QueueFamilyIdx && m_Queue == VK_NULL_HANDLE)
{
@@ -365,7 +365,6 @@ bool WrappedVulkan::Serialise_vkAllocateMemory(SerialiserType &ser, VkDevice dev
else
{
ResourceId live = GetResourceManager()->WrapResource(Memory, Unwrap(device), mem);
GetResourceManager()->AddLiveResource(Memory, mem);
m_CreationInfo.m_Memory[live].Init(GetResourceManager(), m_CreationInfo, &AllocateInfo);
@@ -471,9 +470,6 @@ bool WrappedVulkan::Serialise_vkAllocateMemory(SerialiserType &ser, VkDevice dev
ObjDisp(device)->BindBufferMemory(Unwrap(device), Unwrap(buf), Unwrap(mem), 0);
// register as a live-only resource, so it is cleaned up properly
GetResourceManager()->AddLiveResource(bufid, buf);
m_CreationInfo.m_Memory[live].wholeMemBuf = buf;
}
else
@@ -911,16 +907,8 @@ VkResult WrappedVulkan::vkAllocateMemory(VkDevice device, const VkMemoryAllocate
}
else
{
GetResourceManager()->AddLiveResource(id, *pMemory);
m_CreationInfo.m_Memory[id].Init(GetResourceManager(), m_CreationInfo, &info);
if(dedicated == NULL && dedicatedNV == NULL && wholeMemBuf != VK_NULL_HANDLE)
{
// register as a live-only resource, so it is cleaned up properly
GetResourceManager()->AddLiveResource(bufid, wholeMemBuf);
}
m_CreationInfo.m_Memory[id].wholeMemBuf = wholeMemBuf;
}
}
@@ -2066,7 +2054,6 @@ bool WrappedVulkan::Serialise_vkCreateBuffer(SerialiserType &ser, VkDevice devic
else
{
ResourceId live = GetResourceManager()->WrapResource(Buffer, Unwrap(device), buf);
GetResourceManager()->AddLiveResource(Buffer, buf);
m_CreationInfo.m_Buffer[live].Init(GetResourceManager(), m_CreationInfo, &CreateInfo,
memoryRequirements);
@@ -2361,8 +2348,6 @@ VkResult WrappedVulkan::vkCreateBuffer(VkDevice device, const VkBufferCreateInfo
}
else
{
GetResourceManager()->AddLiveResource(id, *pBuffer);
m_CreationInfo.m_Buffer[id].Init(GetResourceManager(), m_CreationInfo, pCreateInfo, {});
}
}
@@ -2419,7 +2404,6 @@ bool WrappedVulkan::Serialise_vkCreateBufferView(SerialiserType &ser, VkDevice d
else
{
live = GetResourceManager()->WrapResource(View, Unwrap(device), view);
GetResourceManager()->AddLiveResource(View, view);
m_CreationInfo.m_BufferView[live].Init(GetResourceManager(), m_CreationInfo, &CreateInfo);
}
@@ -2478,8 +2462,6 @@ VkResult WrappedVulkan::vkCreateBufferView(VkDevice device, const VkBufferViewCr
}
else
{
GetResourceManager()->AddLiveResource(id, *pView);
m_CreationInfo.m_BufferView[id].Init(GetResourceManager(), m_CreationInfo, pCreateInfo);
}
}
@@ -2734,7 +2716,6 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device
else
{
ResourceId live = GetResourceManager()->WrapResource(Image, Unwrap(device), img);
GetResourceManager()->AddLiveResource(Image, img);
NameVulkanObject(img, StringFormat::Fmt("Image %s", ToStr(Image).c_str()));
@@ -3209,8 +3190,6 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo *
}
else
{
GetResourceManager()->AddLiveResource(id, *pImage);
m_CreationInfo.m_Image[id].Init(GetResourceManager(), m_CreationInfo, pCreateInfo, {});
}
@@ -3315,7 +3294,6 @@ bool WrappedVulkan::Serialise_vkCreateImageView(SerialiserType &ser, VkDevice de
else
{
live = GetResourceManager()->WrapResource(View, Unwrap(device), view);
GetResourceManager()->AddLiveResource(View, view);
m_CreationInfo.m_ImageView[live].Init(GetResourceManager(), m_CreationInfo, &CreateInfo);
}
@@ -3445,8 +3423,6 @@ VkResult WrappedVulkan::vkCreateImageView(VkDevice device, const VkImageViewCrea
}
else
{
GetResourceManager()->AddLiveResource(id, *pView);
m_CreationInfo.m_ImageView[id].Init(GetResourceManager(), m_CreationInfo, pCreateInfo);
}
}
@@ -3968,7 +3944,6 @@ bool WrappedVulkan::Serialise_vkCreateAccelerationStructureKHR(
else
{
live = GetResourceManager()->WrapResource(AccelerationStructure, Unwrap(device), acc);
GetResourceManager()->AddLiveResource(AccelerationStructure, acc);
m_CreationInfo.m_AccelerationStructure[live].Init(GetResourceManager(), m_CreationInfo,
&CreateInfo);
@@ -4105,8 +4080,6 @@ VkResult WrappedVulkan::vkCreateAccelerationStructureKHR(
}
else
{
GetResourceManager()->AddLiveResource(id, *pAccelerationStructure);
m_CreationInfo.m_AccelerationStructure[id].Init(GetResourceManager(), m_CreationInfo,
pCreateInfo);
}
@@ -308,7 +308,6 @@ bool WrappedVulkan::Serialise_vkCreatePipelineLayout(SerialiserType &ser, VkDevi
else
{
live = GetResourceManager()->WrapResource(PipelineLayout, Unwrap(device), layout);
GetResourceManager()->AddLiveResource(PipelineLayout, layout);
m_CreationInfo.m_PipelineLayout[live].Init(GetResourceManager(), m_CreationInfo, &CreateInfo);
}
@@ -376,8 +375,6 @@ VkResult WrappedVulkan::vkCreatePipelineLayout(VkDevice device,
}
else
{
GetResourceManager()->AddLiveResource(id, *pPipelineLayout);
m_CreationInfo.m_PipelineLayout[id].Init(GetResourceManager(), m_CreationInfo, pCreateInfo);
}
}
@@ -434,7 +431,6 @@ bool WrappedVulkan::Serialise_vkCreateShaderModule(SerialiserType &ser, VkDevice
else
{
live = GetResourceManager()->WrapResource(ShaderModule, Unwrap(device), sh);
GetResourceManager()->AddLiveResource(ShaderModule, sh);
m_CreationInfo.m_ShaderModule[live].Init(GetResourceManager(), m_CreationInfo, &CreateInfo);
}
@@ -478,8 +474,6 @@ VkResult WrappedVulkan::vkCreateShaderModule(VkDevice device,
}
else
{
GetResourceManager()->AddLiveResource(id, *pShaderModule);
m_CreationInfo.m_ShaderModule[id].Init(GetResourceManager(), m_CreationInfo, pCreateInfo);
}
}
@@ -537,7 +531,6 @@ bool WrappedVulkan::Serialise_vkCreateShadersEXT(SerialiserType &ser, VkDevice d
else
{
live = GetResourceManager()->WrapResource(Shader, Unwrap(device), sh);
GetResourceManager()->AddLiveResource(Shader, sh);
m_CreationInfo.m_ShaderObject[live].Init(GetResourceManager(), m_CreationInfo, live,
&CreateInfo);
@@ -616,7 +609,6 @@ VkResult WrappedVulkan::vkCreateShadersEXT(VkDevice device, uint32_t createInfoC
}
else
{
GetResourceManager()->AddLiveResource(id, pShaders[i]);
m_CreationInfo.m_ShaderObject[id].Init(GetResourceManager(), m_CreationInfo, id,
&pCreateInfos[i]);
}
@@ -655,8 +647,7 @@ bool WrappedVulkan::Serialise_vkCreatePipelineCache(SerialiserType &ser, VkDevic
}
else
{
ResourceId live = GetResourceManager()->WrapResource(PipelineCache, Unwrap(device), cache);
GetResourceManager()->AddLiveResource(PipelineCache, cache);
GetResourceManager()->WrapResource(PipelineCache, Unwrap(device), cache);
}
AddResource(PipelineCache, ResourceType::Pool, "Pipeline Cache");
@@ -697,10 +688,6 @@ VkResult WrappedVulkan::vkCreatePipelineCache(VkDevice device,
VkResourceRecord *record = GetResourceManager()->AddResourceRecord(*pPipelineCache);
record->AddChunk(chunk);
}
else
{
GetResourceManager()->AddLiveResource(id, *pPipelineCache);
}
}
return ret;
@@ -722,7 +709,6 @@ VkShaderModule WrappedVulkan::CreateFakeInlineShaderModule(ResourceId id, VkDevi
}
GetResourceManager()->WrapResource(id, Unwrap(device), module);
GetResourceManager()->AddLiveResource(id, module);
m_CreationInfo.m_ShaderModule[id].Init(GetResourceManager(), m_CreationInfo, pCreateInfo);
@@ -811,7 +797,6 @@ bool WrappedVulkan::Serialise_vkCreateGraphicsPipelines(
AddResource(Pipeline, ResourceType::PipelineState, "Graphics Pipeline");
ResourceId live = GetResourceManager()->WrapResource(Pipeline, Unwrap(device), pipe);
GetResourceManager()->AddLiveResource(Pipeline, pipe);
pipelinesToCompile.push_back({OrigCreateInfo, pipe});
@@ -899,9 +884,6 @@ bool WrappedVulkan::Serialise_vkCreateGraphicsPipelines(
ResourceId subpass0id =
GetResourceManager()->WrapResource(ResourceId(), Unwrap(device), pipeInfo.subpass0pipe);
// register as a live-only resource, so it is cleaned up properly
GetResourceManager()->AddLiveResource(subpass0id, pipeInfo.subpass0pipe);
pipelinesToCompile.push_back({OrigCreateInfo, pipeInfo.subpass0pipe});
}
@@ -1098,8 +1080,6 @@ VkResult WrappedVulkan::vkCreateGraphicsPipelines(VkDevice device, VkPipelineCac
}
else
{
GetResourceManager()->AddLiveResource(id, pPipelines[i]);
m_CreationInfo.m_Pipeline[id].Init(GetResourceManager(), m_CreationInfo, id,
&pCreateInfos[i]);
}
@@ -1180,7 +1160,6 @@ bool WrappedVulkan::Serialise_vkCreateComputePipelines(SerialiserType &ser, VkDe
AddResource(Pipeline, ResourceType::PipelineState, "Compute Pipeline");
ResourceId live = GetResourceManager()->WrapResource(Pipeline, Unwrap(device), pipe);
GetResourceManager()->AddLiveResource(Pipeline, pipe);
VkPipelineShaderStageCreateInfo shadInstantiated = OrigCreateInfo.stage;
@@ -1345,8 +1324,6 @@ VkResult WrappedVulkan::vkCreateComputePipelines(VkDevice device, VkPipelineCach
}
else
{
GetResourceManager()->AddLiveResource(id, pPipelines[i]);
m_CreationInfo.m_Pipeline[id].Init(GetResourceManager(), m_CreationInfo, id,
&pCreateInfos[i]);
}
@@ -1454,7 +1431,6 @@ bool WrappedVulkan::Serialise_vkCreateRayTracingPipelinesKHR(
AddResource(Pipeline, ResourceType::PipelineState, "RT Pipeline");
ResourceId live = GetResourceManager()->WrapResource(Pipeline, Unwrap(device), pipe);
GetResourceManager()->AddLiveResource(Pipeline, pipe);
VulkanCreationInfo::Pipeline &pipeInfo = m_CreationInfo.m_Pipeline[live];
@@ -1650,8 +1626,6 @@ VkResult WrappedVulkan::vkCreateRayTracingPipelinesKHR(
}
else
{
GetResourceManager()->AddLiveResource(id, pPipelines[i]);
m_CreationInfo.m_Pipeline[id].Init(GetResourceManager(), m_CreationInfo, id,
&pCreateInfos[i]);
}
@@ -129,8 +129,7 @@ bool WrappedVulkan::Serialise_vkCreateFence(SerialiserType &ser, VkDevice device
}
else
{
ResourceId live = GetResourceManager()->WrapResource(Fence, Unwrap(device), fence);
GetResourceManager()->AddLiveResource(Fence, fence);
GetResourceManager()->WrapResource(Fence, Unwrap(device), fence);
}
AddResource(Fence, ResourceType::Sync, "Fence");
@@ -172,10 +171,6 @@ VkResult WrappedVulkan::vkCreateFence(VkDevice device, const VkFenceCreateInfo *
VkResourceRecord *record = GetResourceManager()->AddResourceRecord(*pFence);
record->AddChunk(chunk);
}
else
{
GetResourceManager()->AddLiveResource(id, *pFence);
}
}
return ret;
@@ -357,8 +352,7 @@ bool WrappedVulkan::Serialise_vkCreateEvent(SerialiserType &ser, VkDevice device
}
else
{
ResourceId live = GetResourceManager()->WrapResource(Event, Unwrap(device), ev);
GetResourceManager()->AddLiveResource(Event, ev);
GetResourceManager()->WrapResource(Event, Unwrap(device), ev);
}
AddResource(Event, ResourceType::Sync, "Event");
@@ -394,10 +388,6 @@ VkResult WrappedVulkan::vkCreateEvent(VkDevice device, const VkEventCreateInfo *
VkResourceRecord *record = GetResourceManager()->AddResourceRecord(*pEvent);
record->AddChunk(chunk);
}
else
{
GetResourceManager()->AddLiveResource(id, *pEvent);
}
}
return ret;
@@ -583,7 +573,6 @@ bool WrappedVulkan::Serialise_vkCreateSemaphore(SerialiserType &ser, VkDevice de
else
{
live = GetResourceManager()->WrapResource(Semaphore, Unwrap(device), sem);
GetResourceManager()->AddLiveResource(Semaphore, sem);
}
}
@@ -626,10 +615,6 @@ VkResult WrappedVulkan::vkCreateSemaphore(VkDevice device, const VkSemaphoreCrea
VkResourceRecord *record = GetResourceManager()->AddResourceRecord(*pSemaphore);
record->AddChunk(chunk);
}
else
{
GetResourceManager()->AddLiveResource(id, *pSemaphore);
}
}
return ret;
@@ -165,10 +165,6 @@ VkResult WrappedVulkan::vkRegisterDeviceEventEXT(VkDevice device,
VkResourceRecord *record = GetResourceManager()->AddResourceRecord(*pFence);
record->AddChunk(chunk);
}
else
{
GetResourceManager()->AddLiveResource(id, *pFence);
}
}
return ret;
@@ -210,10 +206,6 @@ VkResult WrappedVulkan::vkRegisterDisplayEventEXT(VkDevice device, VkDisplayKHR
VkResourceRecord *record = GetResourceManager()->AddResourceRecord(*pFence);
record->AddChunk(chunk);
}
else
{
GetResourceManager()->AddLiveResource(id, *pFence);
}
}
return ret;
@@ -251,8 +243,6 @@ bool WrappedVulkan::Serialise_vkGetSwapchainImagesKHR(SerialiserType &ser, VkDev
RDCASSERT(SwapchainImageIndex < swapInfo.images.size(), SwapchainImageIndex,
swapInfo.images.size());
GetResourceManager()->AddLiveResource(SwapchainImage,
swapInfo.images[SwapchainImageIndex].userSwapImage);
AddResource(SwapchainImage, ResourceType::SwapchainImage, "Swapchain Image");
DerivedResource(device, SwapchainImage);
@@ -567,8 +557,6 @@ bool WrappedVulkan::Serialise_vkCreateSwapchainKHR(SerialiserType &ser, VkDevice
}
memid = GetResourceManager()->WrapResource(ResourceId(), Unwrap(device), mem);
// register as a live-only resource, so it is cleaned up properly
GetResourceManager()->AddLiveResource(memid, mem);
}
vkr = ObjDisp(device)->BindImageMemory(Unwrap(device), ims[i], Unwrap(mem), imageMemOffsets[i]);
@@ -888,10 +876,6 @@ void WrappedVulkan::WrapAndProcessCreatedSwapchain(VkDevice device,
}
}
}
else
{
GetResourceManager()->AddLiveResource(id, *pSwapChain);
}
}
VkResult WrappedVulkan::vkCreateSwapchainKHR(VkDevice device,