Store API pipeline states in the replay controller

* Instead of storing the API pipeline states in the replay driver and returning
  pointers, we store them in the replay controller and write into it from the
  replay driver.
* This will allow us to remove the replay driver and still keep any previously
  obtained references/pointers to the pipeline state valid.
This commit is contained in:
baldurk
2021-08-18 20:12:06 +01:00
parent 0804ef63be
commit c319ac0234
22 changed files with 527 additions and 430 deletions
+8 -8
View File
@@ -66,10 +66,6 @@ public:
m_Resources[0].resourceId = m_TextureID;
m_Resources[0].autogeneratedName = false;
m_Resources[0].name = get_basename(m_Filename);
m_PipelineState.outputMerger.renderTargets.resize(1);
m_PipelineState.outputMerger.renderTargets[0].resourceResourceId = m_TextureID;
m_PipelineState.outputMerger.renderTargets[0].viewFormat = m_TexDetails.format;
}
virtual ~ImageViewer()
@@ -211,7 +207,14 @@ public:
// handle a couple of operations ourselves to return a simple fake log
APIProperties GetAPIProperties() { return m_Props; }
FrameRecord GetFrameRecord() { return m_FrameRecord; }
const D3D11Pipe::State *GetD3D11PipelineState() { return &m_PipelineState; }
void SetPipelineStates(D3D11Pipe::State *d3d11, D3D12Pipe::State *d3d12, GLPipe::State *gl,
VKPipe::State *vk)
{
d3d11->outputMerger.renderTargets.resize(1);
d3d11->outputMerger.renderTargets[0].resourceResourceId = m_TextureID;
d3d11->outputMerger.renderTargets[0].viewFormat = m_TexDetails.format;
}
// other operations are dropped/ignored, to avoid confusion
ReplayStatus ReadLogInitialisation(RDCFile *rdc, bool storeStructuredBuffers)
{
@@ -236,9 +239,6 @@ public:
return ret;
}
rdcarray<GPUDevice> GetAvailableGPUs() { return {}; }
const D3D12Pipe::State *GetD3D12PipelineState() { return NULL; }
const GLPipe::State *GetGLPipelineState() { return NULL; }
const VKPipe::State *GetVulkanPipelineState() { return NULL; }
void ReplayLog(uint32_t endEventID, ReplayLogType replayType) {}
rdcarray<uint32_t> GetPassEvents(uint32_t eventId) { return rdcarray<uint32_t>(); }
rdcarray<EventUsage> GetUsage(ResourceId id) { return rdcarray<EventUsage>(); }