diff --git a/renderdoc/driver/d3d11/d3d11_context1_wrap.cpp b/renderdoc/driver/d3d11/d3d11_context1_wrap.cpp index c9fd2f1ec..d4cde0397 100644 --- a/renderdoc/driver/d3d11/d3d11_context1_wrap.cpp +++ b/renderdoc/driver/d3d11/d3d11_context1_wrap.cpp @@ -460,7 +460,6 @@ void WrappedID3D11DeviceContext::ClearView(ID3D11View *pView, const FLOAT Color[ ID3D11Resource *viewRes = NULL; pView->GetResource(&viewRes); - m_MissingTracks.insert(GetIDForResource(pView)); m_MissingTracks.insert(GetIDForResource(viewRes)); SAFE_RELEASE(viewRes); @@ -472,13 +471,8 @@ void WrappedID3D11DeviceContext::ClearView(ID3D11View *pView, const FLOAT Color[ SCOPED_SERIALISE_CONTEXT(CLEAR_VIEW); m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearView(pView, Color, pRect, NumRects); - - ID3D11Resource *viewRes = NULL; - pView->GetResource(&viewRes); - ResourceId id = GetIDForResource(viewRes); - SAFE_RELEASE(viewRes); - D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord(id); + D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord(GetIDForResource(pView)); RDCASSERT(record); record->AddChunk(scope.Get()); diff --git a/renderdoc/driver/d3d11/d3d11_context_wrap.cpp b/renderdoc/driver/d3d11/d3d11_context_wrap.cpp index 1c19075fc..54cc74b8c 100644 --- a/renderdoc/driver/d3d11/d3d11_context_wrap.cpp +++ b/renderdoc/driver/d3d11/d3d11_context_wrap.cpp @@ -706,6 +706,7 @@ void WrappedID3D11DeviceContext::VSSetShaderResources(UINT StartSlot, UINT NumVi { ID3D11Resource *res = NULL; ppShaderResourceViews[i]->GetResource(&res); + MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); SAFE_RELEASE(res); } @@ -1067,6 +1068,7 @@ void WrappedID3D11DeviceContext::HSSetShaderResources(UINT StartSlot, UINT NumVi { ID3D11Resource *res = NULL; ppShaderResourceViews[i]->GetResource(&res); + MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); SAFE_RELEASE(res); } @@ -1427,6 +1429,7 @@ void WrappedID3D11DeviceContext::DSSetShaderResources(UINT StartSlot, UINT NumVi { ID3D11Resource *res = NULL; ppShaderResourceViews[i]->GetResource(&res); + MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); SAFE_RELEASE(res); } @@ -1787,6 +1790,7 @@ void WrappedID3D11DeviceContext::GSSetShaderResources(UINT StartSlot, UINT NumVi { ID3D11Resource *res = NULL; ppShaderResourceViews[i]->GetResource(&res); + MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); SAFE_RELEASE(res); } @@ -2559,6 +2563,7 @@ void WrappedID3D11DeviceContext::PSSetShaderResources(UINT StartSlot, UINT NumVi { ID3D11Resource *res = NULL; ppShaderResourceViews[i]->GetResource(&res); + MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); SAFE_RELEASE(res); } @@ -2930,6 +2935,7 @@ void WrappedID3D11DeviceContext::OMSetRenderTargets(UINT NumViews, ID3D11RenderT { ID3D11Resource *res = NULL; ppRenderTargetViews[i]->GetResource(&res); + MarkResourceReferenced(GetIDForResource(ppRenderTargetViews[i]), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); SAFE_RELEASE(res); } @@ -2939,6 +2945,7 @@ void WrappedID3D11DeviceContext::OMSetRenderTargets(UINT NumViews, ID3D11RenderT { ID3D11Resource *res = NULL; pDepthStencilView->GetResource(&res); + MarkResourceReferenced(GetIDForResource(pDepthStencilView), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); SAFE_RELEASE(res); } @@ -3129,6 +3136,7 @@ void WrappedID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews(UINT { ID3D11Resource *res = NULL; ppRenderTargetViews[i]->GetResource(&res); + MarkResourceReferenced(GetIDForResource(ppRenderTargetViews[i]), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); SAFE_RELEASE(res); } @@ -3138,6 +3146,7 @@ void WrappedID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews(UINT { ID3D11Resource *res = NULL; pDepthStencilView->GetResource(&res); + MarkResourceReferenced(GetIDForResource(pDepthStencilView), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); SAFE_RELEASE(res); } @@ -5336,10 +5345,7 @@ void WrappedID3D11DeviceContext::CopyStructureCount(ID3D11Buffer *pDstBuffer, UI MarkResourceReferenced(GetIDForResource(pDstBuffer), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(pDstBuffer), eFrameRef_Write); - ID3D11Resource *res = NULL; - pSrcView->GetResource(&res); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetIDForResource(pSrcView), eFrameRef_Read); } else if(m_State >= WRITING) { @@ -5348,7 +5354,7 @@ void WrappedID3D11DeviceContext::CopyStructureCount(ID3D11Buffer *pDstBuffer, UI D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord(GetIDForResource(pDstBuffer)); RDCASSERT(record); - D3D11ResourceRecord *srcRecord = ((WrappedID3D11UnorderedAccessView *)pSrcView)->GetResourceRecord(); + D3D11ResourceRecord *srcRecord = m_pDevice->GetResourceManager()->GetResourceRecord(GetIDForResource(pSrcView)); RDCASSERT(srcRecord); record->AddParent(srcRecord); @@ -5568,10 +5574,10 @@ void WrappedID3D11DeviceContext::GenerateMips(ID3D11ShaderResourceView *pShaderR pShaderResourceView->GetResource(&res); m_MissingTracks.insert(GetIDForResource(res)); - m_MissingTracks.insert(GetIDForResource(pShaderResourceView)); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); MarkResourceReferenced(GetIDForResource(res), eFrameRef_Write); + MarkResourceReferenced(GetIDForResource(pShaderResourceView), eFrameRef_Read); SAFE_RELEASE(res); } else if(m_State >= WRITING) @@ -5684,7 +5690,6 @@ void WrappedID3D11DeviceContext::ClearRenderTargetView(ID3D11RenderTargetView *p pRenderTargetView->GetResource(&res); m_MissingTracks.insert(GetIDForResource(res)); - m_MissingTracks.insert(GetIDForResource(pRenderTargetView)); SAFE_RELEASE(res); @@ -5736,7 +5741,10 @@ void WrappedID3D11DeviceContext::ClearRenderTargetView(ID3D11RenderTargetView *p pRenderTargetView->GetResource(&res); if(m_State == WRITING_CAPFRAME) + { MarkResourceReferenced(GetIDForResource(res), eFrameRef_Write); + MarkResourceReferenced(GetIDForResource(pRenderTargetView), eFrameRef_Read); + } if(m_State == WRITING_IDLE) m_pDevice->GetResourceManager()->MarkCleanResource(GetIDForResource(res)); @@ -5801,7 +5809,6 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewUint(ID3D11UnorderedAcc pUnorderedAccessView->GetResource(&res); m_MissingTracks.insert(GetIDForResource(res)); - m_MissingTracks.insert(GetIDForResource(pUnorderedAccessView)); SAFE_RELEASE(res); @@ -5813,12 +5820,7 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewUint(ID3D11UnorderedAcc m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearUnorderedAccessViewUint(pUnorderedAccessView, Values); - ID3D11Resource *viewRes = NULL; - pUnorderedAccessView->GetResource(&viewRes); - ResourceId id = GetIDForResource(viewRes); - SAFE_RELEASE(viewRes); - - D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord(id); + D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord(GetIDForResource(pUnorderedAccessView)); RDCASSERT(record); record->LockChunks(); @@ -5853,7 +5855,10 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewUint(ID3D11UnorderedAcc pUnorderedAccessView->GetResource(&res); if(m_State == WRITING_CAPFRAME) + { MarkResourceReferenced(GetIDForResource(res), eFrameRef_Write); + MarkResourceReferenced(GetIDForResource(pUnorderedAccessView), eFrameRef_Read); + } if(m_State == WRITING_IDLE) m_pDevice->GetResourceManager()->MarkCleanResource(GetIDForResource(res)); @@ -5919,7 +5924,6 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewFloat(ID3D11UnorderedAc pUnorderedAccessView->GetResource(&res); m_MissingTracks.insert(GetIDForResource(res)); - m_MissingTracks.insert(GetIDForResource(pUnorderedAccessView)); SAFE_RELEASE(res); @@ -5931,12 +5935,7 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewFloat(ID3D11UnorderedAc m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearUnorderedAccessViewFloat(pUnorderedAccessView, Values); - ID3D11Resource *viewRes = NULL; - pUnorderedAccessView->GetResource(&viewRes); - ResourceId id = GetIDForResource(viewRes); - SAFE_RELEASE(viewRes); - - D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord(id); + D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord(GetIDForResource(pUnorderedAccessView)); RDCASSERT(record); record->LockChunks(); @@ -5971,7 +5970,10 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewFloat(ID3D11UnorderedAc pUnorderedAccessView->GetResource(&res); if(m_State == WRITING_CAPFRAME) + { MarkResourceReferenced(GetIDForResource(res), eFrameRef_Write); + MarkResourceReferenced(GetIDForResource(pUnorderedAccessView), eFrameRef_Read); + } if(m_State == WRITING_IDLE) m_pDevice->GetResourceManager()->MarkCleanResource(GetIDForResource(res)); @@ -6039,7 +6041,6 @@ void WrappedID3D11DeviceContext::ClearDepthStencilView(ID3D11DepthStencilView *p pDepthStencilView->GetResource(&res); m_MissingTracks.insert(GetIDForResource(res)); - m_MissingTracks.insert(GetIDForResource(pDepthStencilView)); SAFE_RELEASE(res); @@ -6051,12 +6052,7 @@ void WrappedID3D11DeviceContext::ClearDepthStencilView(ID3D11DepthStencilView *p m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearDepthStencilView(pDepthStencilView, ClearFlags, Depth, Stencil); - ID3D11Resource *viewRes = NULL; - pDepthStencilView->GetResource(&viewRes); - ResourceId id = GetIDForResource(viewRes); - SAFE_RELEASE(viewRes); - - D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord(id); + D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord(GetIDForResource(pDepthStencilView)); RDCASSERT(record); record->LockChunks(); @@ -6091,7 +6087,10 @@ void WrappedID3D11DeviceContext::ClearDepthStencilView(ID3D11DepthStencilView *p pDepthStencilView->GetResource(&res); if(m_State == WRITING_CAPFRAME) + { MarkResourceReferenced(GetIDForResource(res), eFrameRef_Write); + MarkResourceReferenced(GetIDForResource(pDepthStencilView), eFrameRef_Read); + } if(m_State == WRITING_IDLE) m_pDevice->GetResourceManager()->MarkCleanResource(GetIDForResource(res)); diff --git a/renderdoc/driver/d3d11/d3d11_device.cpp b/renderdoc/driver/d3d11/d3d11_device.cpp index 5ca02c838..e1cae6115 100644 --- a/renderdoc/driver/d3d11/d3d11_device.cpp +++ b/renderdoc/driver/d3d11/d3d11_device.cpp @@ -3269,46 +3269,6 @@ bool WrappedID3D11Device::Serialise_ReleaseResource(ID3D11DeviceChild *res) D3D11ResourceRecord *record = GetResourceManager()->GetResourceRecord(resource); if(record) record->Delete(m_ResourceManager); - - switch(resourceType) - { - case Resource_RenderTargetView: - { - WrappedID3D11RenderTargetView* view = (WrappedID3D11RenderTargetView *)res; - - D3D11ResourceRecord *viewRecord = view->GetResourceRecord(); - if(viewRecord) - viewRecord->Delete(m_ResourceManager); - break; - } - case Resource_ShaderResourceView: - { - WrappedID3D11ShaderResourceView* view = (WrappedID3D11ShaderResourceView *)res; - - D3D11ResourceRecord *viewRecord = view->GetResourceRecord(); - if(viewRecord) - viewRecord->Delete(m_ResourceManager); - break; - } - case Resource_DepthStencilView: - { - WrappedID3D11DepthStencilView* view = (WrappedID3D11DepthStencilView *)res; - - D3D11ResourceRecord *viewRecord = view->GetResourceRecord(); - if(viewRecord) - viewRecord->Delete(m_ResourceManager); - break; - } - case Resource_UnorderedAccessView: - { - WrappedID3D11UnorderedAccessView* view = (WrappedID3D11UnorderedAccessView *)res; - - D3D11ResourceRecord *viewRecord = view->GetResourceRecord(); - if(viewRecord) - viewRecord->Delete(m_ResourceManager); - break; - } - } } if(m_State < WRITING && GetResourceManager()->HasLiveResource(resource)) { @@ -3339,8 +3299,6 @@ void WrappedID3D11Device::ReleaseResource(ID3D11DeviceChild *res) D3D11ResourceRecord *record = m_DeviceRecord; - bool removegpu = true; - if(m_State == WRITING_IDLE) { if(type == Resource_ShaderResourceView || @@ -3353,21 +3311,6 @@ void WrappedID3D11Device::ReleaseResource(ID3D11DeviceChild *res) type == Resource_Texture3D || type == Resource_CommandList) { - if(type == Resource_ShaderResourceView || - type == Resource_DepthStencilView || - type == Resource_UnorderedAccessView || - type == Resource_RenderTargetView - ) - { - ID3D11View *view = (ID3D11View *)res; - ID3D11Resource *viewRes = NULL; - view->GetResource(&viewRes); - idx = GetIDForResource(viewRes); - SAFE_RELEASE(viewRes); - - removegpu = false; - } - record = GetResourceManager()->GetResourceRecord(idx); RDCASSERT(record); @@ -3384,8 +3327,7 @@ void WrappedID3D11Device::ReleaseResource(ID3D11DeviceChild *res) } } - if(removegpu) - GetResourceManager()->MarkCleanResource(idx); + GetResourceManager()->MarkCleanResource(idx); if(type == Resource_DeviceContext) { diff --git a/renderdoc/driver/d3d11/d3d11_device_wrap.cpp b/renderdoc/driver/d3d11/d3d11_device_wrap.cpp index 569047db1..adf19abeb 100644 --- a/renderdoc/driver/d3d11/d3d11_device_wrap.cpp +++ b/renderdoc/driver/d3d11/d3d11_device_wrap.cpp @@ -694,16 +694,6 @@ bool WrappedID3D11Device::Serialise_CreateShaderResourceView( GetResourceManager()->AddLiveResource(pView, ret); } } - else if(m_State >= WRITING) - { - D3D11ResourceRecord *record = GetResourceManager()->GetResourceRecord(Resource); - - ((WrappedID3D11ShaderResourceView *)*ppSRView)->SetResourceRecord(record); - - RDCASSERT(record); - - record->AddRef(); - } return true; } @@ -740,8 +730,19 @@ HRESULT WrappedID3D11Device::CreateShaderResourceView( WrappedID3D11Texture3D::IsAlloc(pResource) || WrappedID3D11Buffer::IsAlloc(pResource)) { - D3D11ResourceRecord *record = GetResourceManager()->GetResourceRecord(GetIDForResource(pResource)); - RDCASSERT(record); + D3D11ResourceRecord *parent = GetResourceManager()->GetResourceRecord(GetIDForResource(pResource)); + + RDCASSERT(parent); + + WrappedID3D11ShaderResourceView *view = (WrappedID3D11ShaderResourceView *)wrapped; + ResourceId id = view->GetResourceID(); + + RDCASSERT(GetResourceManager()->GetResourceRecord(id) == NULL); + + D3D11ResourceRecord *record = GetResourceManager()->AddResourceRecord(id); + record->Length = 0; + + record->AddParent(parent); record->AddChunk(chunk); } @@ -792,16 +793,6 @@ bool WrappedID3D11Device::Serialise_CreateUnorderedAccessView( GetResourceManager()->AddLiveResource(pView, ret); } } - else if(m_State >= WRITING) - { - D3D11ResourceRecord *record = GetResourceManager()->GetResourceRecord(ResourceId(Resource)); - - ((WrappedID3D11UnorderedAccessView *)*ppUAView)->SetResourceRecord(record); - - RDCASSERT(record); - - record->AddRef(); - } return true; } @@ -838,9 +829,19 @@ HRESULT WrappedID3D11Device::CreateUnorderedAccessView( WrappedID3D11Texture3D::IsAlloc(pResource) || WrappedID3D11Buffer::IsAlloc(pResource)) { - D3D11ResourceRecord *record = GetResourceManager()->GetResourceRecord(GetIDForResource(pResource)); + D3D11ResourceRecord *parent = GetResourceManager()->GetResourceRecord(GetIDForResource(pResource)); - RDCASSERT(record); + RDCASSERT(parent); + + WrappedID3D11UnorderedAccessView *view = (WrappedID3D11UnorderedAccessView *)wrapped; + ResourceId id = view->GetResourceID(); + + RDCASSERT(GetResourceManager()->GetResourceRecord(id) == NULL); + + D3D11ResourceRecord *record = GetResourceManager()->AddResourceRecord(id); + record->Length = 0; + + record->AddParent(parent); record->AddChunk(chunk); } @@ -917,16 +918,6 @@ bool WrappedID3D11Device::Serialise_CreateRenderTargetView( GetResourceManager()->AddLiveResource(pView, ret); } } - else if(m_State >= WRITING) - { - D3D11ResourceRecord *record = GetResourceManager()->GetResourceRecord(ResourceId(Resource)); - - RDCASSERT(record); - - ((WrappedID3D11RenderTargetView *)*ppRTView)->SetResourceRecord(record); - - record->AddRef(); - } return true; } @@ -963,9 +954,19 @@ HRESULT WrappedID3D11Device::CreateRenderTargetView( WrappedID3D11Texture3D::IsAlloc(pResource) || WrappedID3D11Buffer::IsAlloc(pResource)) { - D3D11ResourceRecord *record = GetResourceManager()->GetResourceRecord(GetIDForResource(pResource)); + D3D11ResourceRecord *parent = GetResourceManager()->GetResourceRecord(GetIDForResource(pResource)); - RDCASSERT(record); + RDCASSERT(parent); + + WrappedID3D11RenderTargetView *view = (WrappedID3D11RenderTargetView *)wrapped; + ResourceId id = view->GetResourceID(); + + RDCASSERT(GetResourceManager()->GetResourceRecord(id) == NULL); + + D3D11ResourceRecord *record = GetResourceManager()->AddResourceRecord(id); + record->Length = 0; + + record->AddParent(parent); record->AddChunk(chunk); } @@ -1015,16 +1016,6 @@ bool WrappedID3D11Device::Serialise_CreateDepthStencilView( GetResourceManager()->AddLiveResource(pView, ret); } } - else if(m_State >= WRITING) - { - D3D11ResourceRecord *record = GetResourceManager()->GetResourceRecord(ResourceId(Resource)); - - ((WrappedID3D11DepthStencilView *)*ppDepthStencilView)->SetResourceRecord(record); - - RDCASSERT(record); - - record->AddRef(); - } return true; } @@ -1061,9 +1052,19 @@ HRESULT WrappedID3D11Device::CreateDepthStencilView( WrappedID3D11Texture3D::IsAlloc(pResource) || WrappedID3D11Buffer::IsAlloc(pResource)) { - D3D11ResourceRecord *record = GetResourceManager()->GetResourceRecord(GetIDForResource(pResource)); + D3D11ResourceRecord *parent = GetResourceManager()->GetResourceRecord(GetIDForResource(pResource)); - RDCASSERT(record); + RDCASSERT(parent); + + WrappedID3D11DepthStencilView *view = (WrappedID3D11DepthStencilView *)wrapped; + ResourceId id = view->GetResourceID(); + + RDCASSERT(GetResourceManager()->GetResourceRecord(id) == NULL); + + D3D11ResourceRecord *record = GetResourceManager()->AddResourceRecord(id); + record->Length = 0; + + record->AddParent(parent); record->AddChunk(chunk); } diff --git a/renderdoc/driver/d3d11/d3d11_renderstate.cpp b/renderdoc/driver/d3d11/d3d11_renderstate.cpp index 31667f4b9..ee18a6d1d 100644 --- a/renderdoc/driver/d3d11/d3d11_renderstate.cpp +++ b/renderdoc/driver/d3d11/d3d11_renderstate.cpp @@ -226,6 +226,7 @@ void D3D11RenderState::MarkReferenced(WrappedID3D11DeviceContext *ctx, bool init if(sh->SRVs[i]) { sh->SRVs[i]->GetResource(&res); + ctx->MarkResourceReferenced(GetIDForResource(sh->SRVs[i]), initial ? eFrameRef_Unknown : eFrameRef_Read); ctx->MarkResourceReferenced(GetIDForResource(res), initial ? eFrameRef_Unknown : eFrameRef_Read); SAFE_RELEASE(res); } @@ -241,7 +242,6 @@ void D3D11RenderState::MarkReferenced(WrappedID3D11DeviceContext *ctx, bool init { CSUAVs[i]->GetResource(&res); ctx->m_MissingTracks.insert(GetIDForResource(res)); - ctx->m_MissingTracks.insert(GetIDForResource(CSUAVs[i])); // UAVs we always assume to be partial updates ctx->MarkResourceReferenced(GetIDForResource(CSUAVs[i]), initial ? eFrameRef_Unknown : eFrameRef_Read); ctx->MarkResourceReferenced(GetIDForResource(CSUAVs[i]), initial ? eFrameRef_Unknown : eFrameRef_Write); @@ -348,6 +348,7 @@ void D3D11RenderState::MarkReferenced(WrappedID3D11DeviceContext *ctx, bool init { OM.RenderTargets[i]->GetResource(&res); ctx->m_MissingTracks.insert(GetIDForResource(res)); + ctx->MarkResourceReferenced(GetIDForResource(OM.RenderTargets[i]), initial ? eFrameRef_Unknown : eFrameRef_Read); if(viewportScissorPartial) ctx->MarkResourceReferenced(GetIDForResource(res), initial ? eFrameRef_Unknown : eFrameRef_Read); ctx->MarkResourceReferenced(GetIDForResource(res), initial ? eFrameRef_Unknown : eFrameRef_Write); @@ -361,7 +362,6 @@ void D3D11RenderState::MarkReferenced(WrappedID3D11DeviceContext *ctx, bool init if(OM.UAVs[i]) { OM.UAVs[i]->GetResource(&res); - ctx->m_MissingTracks.insert(GetIDForResource(OM.UAVs[i])); ctx->m_MissingTracks.insert(GetIDForResource(res)); // UAVs we always assume to be partial updates ctx->MarkResourceReferenced(GetIDForResource(OM.UAVs[i]), initial ? eFrameRef_Unknown : eFrameRef_Read); @@ -378,6 +378,7 @@ void D3D11RenderState::MarkReferenced(WrappedID3D11DeviceContext *ctx, bool init { OM.DepthView->GetResource(&res); ctx->m_MissingTracks.insert(GetIDForResource(res)); + ctx->MarkResourceReferenced(GetIDForResource(OM.DepthView), initial ? eFrameRef_Unknown : eFrameRef_Read); if(viewportScissorPartial) ctx->MarkResourceReferenced(GetIDForResource(res), initial ? eFrameRef_Unknown : eFrameRef_Read); ctx->MarkResourceReferenced(GetIDForResource(res), initial ? eFrameRef_Unknown : eFrameRef_Write); diff --git a/renderdoc/driver/d3d11/d3d11_resources.h b/renderdoc/driver/d3d11/d3d11_resources.h index 56a9e0935..3b6ef7578 100644 --- a/renderdoc/driver/d3d11/d3d11_resources.h +++ b/renderdoc/driver/d3d11/d3d11_resources.h @@ -981,13 +981,11 @@ class WrappedView : public WrappedDeviceChild { protected: ID3D11Resource *m_pResource; - D3D11ResourceRecord *m_pResourceRecord; ResourceId m_ResourceResID; WrappedView(NestedType* real, WrappedID3D11Device* device, ID3D11Resource* res) : WrappedDeviceChild(real, device), - m_pResource(res), - m_pResourceRecord(NULL) + m_pResource(res) { m_ResourceResID = GetIDForResource(m_pResource); // cast is potentially invalid but functions in WrappedResource will be identical across each @@ -1007,9 +1005,6 @@ protected: } public: - D3D11ResourceRecord *GetResourceRecord() { return m_pResourceRecord; } - void SetResourceRecord(D3D11ResourceRecord *r) { m_pResourceRecord = r; } - ResourceId GetResourceResID() { return m_ResourceResID; } HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject)