mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-08 08:40:55 +00:00
Move Subresources into D3D11ResourceRecord, not needed in other APIs
This commit is contained in:
@@ -83,16 +83,6 @@ void ResourceRecord::Delete(ResourceRecordHandler *mgr)
|
||||
|
||||
DeleteChunks();
|
||||
|
||||
for(int i=0; i < NumSubResources; i++)
|
||||
{
|
||||
for(auto it=SubResources[i]->m_Chunks.begin(); it != SubResources[i]->m_Chunks.end(); ++it)
|
||||
SAFE_DELETE(it->second);
|
||||
|
||||
SAFE_DELETE(SubResources[i]);
|
||||
}
|
||||
|
||||
SAFE_DELETE_ARRAY(SubResources);
|
||||
|
||||
if(ResID != ResourceId())
|
||||
mgr->RemoveResourceRecord(ResID);
|
||||
|
||||
|
||||
@@ -89,8 +89,7 @@ struct ResourceRecord
|
||||
ResourceRecord(ResourceId id, bool lock)
|
||||
: RefCount(1), ResID(id), UpdateCount(0),
|
||||
DataInSerialiser(false), DataPtr(NULL), DataOffset(0),
|
||||
Length(-1), DataWritten(false), SpecialResource(false),
|
||||
NumSubResources(0), SubResources(NULL)
|
||||
Length(-1), DataWritten(false), SpecialResource(false)
|
||||
{
|
||||
m_ChunkLock = NULL;
|
||||
|
||||
@@ -152,12 +151,7 @@ struct ResourceRecord
|
||||
}
|
||||
|
||||
if(!dataWritten)
|
||||
{
|
||||
recordlist.insert(m_Chunks.begin(), m_Chunks.end());
|
||||
|
||||
for(int i=0; i < NumSubResources; i++)
|
||||
SubResources[i]->Insert(recordlist);
|
||||
}
|
||||
}
|
||||
|
||||
void AddRef() { RefCount++; }
|
||||
@@ -255,9 +249,6 @@ struct ResourceRecord
|
||||
void SetDataPtr(byte *ptr)
|
||||
{
|
||||
DataPtr = ptr;
|
||||
|
||||
for(int i=0; i < NumSubResources; i++)
|
||||
SubResources[i]->SetDataPtr(ptr);
|
||||
}
|
||||
|
||||
void MarkResourceFrameReferenced(ResourceId id, FrameRefType refType);
|
||||
@@ -268,20 +259,16 @@ struct ResourceRecord
|
||||
ids.insert(it->first);
|
||||
}
|
||||
|
||||
int UpdateCount;
|
||||
|
||||
bool DataInSerialiser;
|
||||
int32_t Length;
|
||||
|
||||
bool SpecialResource; // like the swap chain back buffers
|
||||
int UpdateCount : 29;
|
||||
bool DataInSerialiser : 1;
|
||||
bool SpecialResource : 1; // like the swap chain back buffers
|
||||
bool DataWritten : 1;
|
||||
|
||||
int NumSubResources;
|
||||
ResourceRecord **SubResources;
|
||||
|
||||
protected:
|
||||
byte *DataPtr;
|
||||
uint64_t DataOffset;
|
||||
bool DataWritten;
|
||||
|
||||
int RefCount;
|
||||
|
||||
|
||||
@@ -46,7 +46,8 @@ struct D3D11ResourceRecord : public ResourceRecord
|
||||
static byte markerValue[32];
|
||||
|
||||
D3D11ResourceRecord(ResourceId id)
|
||||
: ResourceRecord(id, true)
|
||||
: ResourceRecord(id, true),
|
||||
NumSubResources(0), SubResources(NULL)
|
||||
{
|
||||
RDCEraseEl(ShadowPtr);
|
||||
RDCEraseEl(contexts);
|
||||
@@ -55,6 +56,14 @@ struct D3D11ResourceRecord : public ResourceRecord
|
||||
|
||||
~D3D11ResourceRecord()
|
||||
{
|
||||
for(int i=0; i < NumSubResources; i++)
|
||||
{
|
||||
SubResources[i]->DeleteChunks();
|
||||
SAFE_DELETE(SubResources[i]);
|
||||
}
|
||||
|
||||
SAFE_DELETE_ARRAY(SubResources);
|
||||
|
||||
FreeShadowStorage();
|
||||
}
|
||||
|
||||
@@ -123,8 +132,42 @@ struct D3D11ResourceRecord : public ResourceRecord
|
||||
contexts[ctx] = false;
|
||||
}
|
||||
|
||||
bool ignoreSerialise;
|
||||
void SetDataPtr(byte *ptr)
|
||||
{
|
||||
DataPtr = ptr;
|
||||
|
||||
for(int i=0; i < NumSubResources; i++)
|
||||
SubResources[i]->SetDataPtr(ptr);
|
||||
}
|
||||
|
||||
void Insert(map<int32_t, Chunk *> &recordlist)
|
||||
{
|
||||
bool dataWritten = DataWritten;
|
||||
|
||||
DataWritten = true;
|
||||
|
||||
for(auto it = Parents.begin(); it != Parents.end(); ++it)
|
||||
{
|
||||
if(!(*it)->DataWritten)
|
||||
{
|
||||
(*it)->Insert(recordlist);
|
||||
}
|
||||
}
|
||||
|
||||
if(!dataWritten)
|
||||
{
|
||||
recordlist.insert(m_Chunks.begin(), m_Chunks.end());
|
||||
|
||||
for(int i=0; i < NumSubResources; i++)
|
||||
SubResources[i]->Insert(recordlist);
|
||||
}
|
||||
}
|
||||
|
||||
bool ignoreSerialise;
|
||||
|
||||
int NumSubResources;
|
||||
ResourceRecord **SubResources;
|
||||
|
||||
private:
|
||||
byte *ShadowPtr[32][2];
|
||||
size_t ShadowSize[32];
|
||||
|
||||
@@ -754,16 +754,12 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
m_DeviceRecord = GetResourceManager()->AddResourceRecord(m_DeviceResourceID);
|
||||
m_DeviceRecord->DataInSerialiser = false;
|
||||
m_DeviceRecord->Length = 0;
|
||||
m_DeviceRecord->NumSubResources = 0;
|
||||
m_DeviceRecord->SpecialResource = true;
|
||||
m_DeviceRecord->SubResources = NULL;
|
||||
|
||||
m_ContextRecord = GetResourceManager()->AddResourceRecord(m_ContextResourceID);
|
||||
m_ContextRecord->DataInSerialiser = false;
|
||||
m_ContextRecord->Length = 0;
|
||||
m_ContextRecord->NumSubResources = 0;
|
||||
m_ContextRecord->SpecialResource = true;
|
||||
m_ContextRecord->SubResources = NULL;
|
||||
|
||||
// register VAO 0 as a special VAO, so that it can be tracked if the app uses it
|
||||
// we immediately mark it dirty since the vertex array tracking functions expect a proper VAO
|
||||
|
||||
@@ -306,9 +306,7 @@ WrappedVulkan::WrappedVulkan(const char *logFilename)
|
||||
m_FrameCaptureRecord = GetResourceManager()->AddResourceRecord(ResourceIDGen::GetNewUniqueID());
|
||||
m_FrameCaptureRecord->DataInSerialiser = false;
|
||||
m_FrameCaptureRecord->Length = 0;
|
||||
m_FrameCaptureRecord->NumSubResources = 0;
|
||||
m_FrameCaptureRecord->SpecialResource = true;
|
||||
m_FrameCaptureRecord->SubResources = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user