diff --git a/renderdoc/driver/d3d11/d3d11_context_wrap.cpp b/renderdoc/driver/d3d11/d3d11_context_wrap.cpp index ddd6a7d43..206f557ba 100644 --- a/renderdoc/driver/d3d11/d3d11_context_wrap.cpp +++ b/renderdoc/driver/d3d11/d3d11_context_wrap.cpp @@ -786,11 +786,8 @@ void WrappedID3D11DeviceContext::VSSetShaderResources( { if(ppShaderResourceViews[i] && m_State >= WRITING_CAPFRAME) { - ID3D11Resource *res = NULL; - ppShaderResourceViews[i]->GetResource(&res); MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(ppShaderResourceViews[i]), eFrameRef_Read); } SRVs[i] = UNWRAP(WrappedID3D11ShaderResourceView1, ppShaderResourceViews[i]); @@ -1191,11 +1188,8 @@ void WrappedID3D11DeviceContext::HSSetShaderResources( { if(ppShaderResourceViews[i] && m_State >= WRITING_CAPFRAME) { - ID3D11Resource *res = NULL; - ppShaderResourceViews[i]->GetResource(&res); MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(ppShaderResourceViews[i]), eFrameRef_Read); } SRVs[i] = UNWRAP(WrappedID3D11ShaderResourceView1, ppShaderResourceViews[i]); @@ -1595,11 +1589,8 @@ void WrappedID3D11DeviceContext::DSSetShaderResources( { if(ppShaderResourceViews[i] && m_State >= WRITING_CAPFRAME) { - ID3D11Resource *res = NULL; - ppShaderResourceViews[i]->GetResource(&res); MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(ppShaderResourceViews[i]), eFrameRef_Read); } SRVs[i] = UNWRAP(WrappedID3D11ShaderResourceView1, ppShaderResourceViews[i]); @@ -2000,11 +1991,8 @@ void WrappedID3D11DeviceContext::GSSetShaderResources( { if(ppShaderResourceViews[i] && m_State >= WRITING_CAPFRAME) { - ID3D11Resource *res = NULL; - ppShaderResourceViews[i]->GetResource(&res); MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(ppShaderResourceViews[i]), eFrameRef_Read); } SRVs[i] = UNWRAP(WrappedID3D11ShaderResourceView1, ppShaderResourceViews[i]); @@ -2476,6 +2464,7 @@ void WrappedID3D11DeviceContext::RSSetViewports(UINT NumViewports, const D3D11_V m_CurrentPipelineState->Change(m_CurrentPipelineState->RS.Viewports, pViewports, 0, NumViewports); m_CurrentPipelineState->Change(m_CurrentPipelineState->RS.NumViews, NumViewports); + m_CurrentPipelineState->CacheViewportPartial(); m_pRealContext->RSSetViewports(NumViewports, pViewports); VerifyState(); } @@ -2518,6 +2507,7 @@ void WrappedID3D11DeviceContext::RSSetScissorRects(UINT NumRects, const D3D11_RE m_CurrentPipelineState->Change(m_CurrentPipelineState->RS.Scissors, pRects, 0, NumRects); m_CurrentPipelineState->Change(m_CurrentPipelineState->RS.NumScissors, NumRects); + m_CurrentPipelineState->CacheViewportPartial(); m_pRealContext->RSSetScissorRects(NumRects, pRects); VerifyState(); } @@ -2564,6 +2554,7 @@ void WrappedID3D11DeviceContext::RSSetState(ID3D11RasterizerState *pRasterizerSt m_CurrentPipelineState->ChangeRefRead(m_CurrentPipelineState->RS.State, pRasterizerState); m_pRealContext->RSSetState( (ID3D11RasterizerState *)UNWRAP(WrappedID3D11RasterizerState2, pRasterizerState)); + m_CurrentPipelineState->CacheViewportPartial(); VerifyState(); } @@ -2808,11 +2799,8 @@ void WrappedID3D11DeviceContext::PSSetShaderResources( { if(ppShaderResourceViews[i] && m_State >= WRITING_CAPFRAME) { - ID3D11Resource *res = NULL; - ppShaderResourceViews[i]->GetResource(&res); MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(ppShaderResourceViews[i]), eFrameRef_Read); } SRVs[i] = UNWRAP(WrappedID3D11ShaderResourceView1, ppShaderResourceViews[i]); @@ -3215,21 +3203,15 @@ void WrappedID3D11DeviceContext::OMSetRenderTargets(UINT NumViews, { if(ppRenderTargetViews && ppRenderTargetViews[i]) { - ID3D11Resource *res = NULL; - ppRenderTargetViews[i]->GetResource(&res); MarkResourceReferenced(GetIDForResource(ppRenderTargetViews[i]), eFrameRef_Read); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(ppRenderTargetViews[i]), eFrameRef_Read); } } if(pDepthStencilView) { - ID3D11Resource *res = NULL; - pDepthStencilView->GetResource(&res); MarkResourceReferenced(GetIDForResource(pDepthStencilView), eFrameRef_Read); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(pDepthStencilView), eFrameRef_Read); } } @@ -3243,16 +3225,13 @@ void WrappedID3D11DeviceContext::OMSetRenderTargets(UINT NumViews, { if(m_State >= WRITING) { - ID3D11Resource *res = NULL; - ppRenderTargetViews[i]->GetResource(&res); // technically this isn't dirty until the draw call, but let's be conservative // to avoid having to track "possibly" dirty resources. // Besides, it's unlikely an application will set an output then not draw to it if(m_State == WRITING_IDLE) - MarkDirtyResource(GetIDForResource(res)); + MarkDirtyResource(GetViewResourceResID(ppRenderTargetViews[i])); else if(m_State == WRITING_CAPFRAME) - m_MissingTracks.insert(GetIDForResource(res)); - SAFE_RELEASE(res); + m_MissingTracks.insert(GetViewResourceResID(ppRenderTargetViews[i])); } RTs[i] = UNWRAP(WrappedID3D11RenderTargetView1, ppRenderTargetViews[i]); @@ -3261,16 +3240,14 @@ void WrappedID3D11DeviceContext::OMSetRenderTargets(UINT NumViews, if(pDepthStencilView && m_State >= WRITING) { - ID3D11Resource *res = NULL; - pDepthStencilView->GetResource(&res); - if(m_State == WRITING_IDLE) - MarkDirtyResource(GetIDForResource(res)); + MarkDirtyResource(GetViewResourceResID(pDepthStencilView)); else if(m_State == WRITING_CAPFRAME) - m_MissingTracks.insert(GetIDForResource(res)); - SAFE_RELEASE(res); + m_MissingTracks.insert(GetViewResourceResID(pDepthStencilView)); } + m_CurrentPipelineState->CacheViewportPartial(); + m_pRealContext->OMSetRenderTargets(NumViews, RTs, UNWRAP(WrappedID3D11DepthStencilView, pDepthStencilView)); VerifyState(); @@ -3457,21 +3434,15 @@ void WrappedID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews( { if(ppRenderTargetViews && ppRenderTargetViews[i]) { - ID3D11Resource *res = NULL; - ppRenderTargetViews[i]->GetResource(&res); MarkResourceReferenced(GetIDForResource(ppRenderTargetViews[i]), eFrameRef_Read); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(ppRenderTargetViews[i]), eFrameRef_Read); } } if(pDepthStencilView) { - ID3D11Resource *res = NULL; - pDepthStencilView->GetResource(&res); MarkResourceReferenced(GetIDForResource(pDepthStencilView), eFrameRef_Read); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(pDepthStencilView), eFrameRef_Read); } } } @@ -3511,16 +3482,13 @@ void WrappedID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews( { if(ppRenderTargetViews[i] && m_State >= WRITING) { - ID3D11Resource *res = NULL; - ppRenderTargetViews[i]->GetResource(&res); // technically this isn't dirty until the draw call, but let's be conservative // to avoid having to track "possibly" dirty resources. // Besides, it's unlikely an application will set an output then not draw to it if(m_State == WRITING_IDLE) - MarkDirtyResource(GetIDForResource(res)); + MarkDirtyResource(GetViewResourceResID(ppRenderTargetViews[i])); else if(m_State == WRITING_CAPFRAME) - m_MissingTracks.insert(GetIDForResource(res)); - SAFE_RELEASE(res); + m_MissingTracks.insert(GetViewResourceResID(ppRenderTargetViews[i])); } RTs[i] = UNWRAP(WrappedID3D11RenderTargetView1, ppRenderTargetViews[i]); @@ -3530,13 +3498,10 @@ void WrappedID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews( { if(ppUnorderedAccessViews[i] && m_State >= WRITING) { - ID3D11Resource *res = NULL; - ppUnorderedAccessViews[i]->GetResource(&res); if(m_State == WRITING_IDLE) - MarkDirtyResource(GetIDForResource(res)); + MarkDirtyResource(GetViewResourceResID(ppUnorderedAccessViews[i])); else if(m_State == WRITING_CAPFRAME) - m_MissingTracks.insert(GetIDForResource(res)); - SAFE_RELEASE(res); + m_MissingTracks.insert(GetViewResourceResID(ppUnorderedAccessViews[i])); } UAVs[i] = UNWRAP(WrappedID3D11UnorderedAccessView1, ppUnorderedAccessViews[i]); @@ -3544,16 +3509,14 @@ void WrappedID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews( if(pDepthStencilView && m_State >= WRITING) { - ID3D11Resource *res = NULL; - pDepthStencilView->GetResource(&res); - if(m_State == WRITING_IDLE) - MarkDirtyResource(GetIDForResource(res)); + MarkDirtyResource(GetViewResourceResID(pDepthStencilView)); else if(m_State == WRITING_CAPFRAME) - m_MissingTracks.insert(GetIDForResource(res)); - SAFE_RELEASE(res); + m_MissingTracks.insert(GetViewResourceResID(pDepthStencilView)); } + m_CurrentPipelineState->CacheViewportPartial(); + m_pRealContext->OMSetRenderTargetsAndUnorderedAccessViews( NumRTVs, ppRenderTargetViews ? RTs : NULL, UNWRAP(WrappedID3D11DepthStencilView, pDepthStencilView), UAVStartSlot, NumUAVs, @@ -4626,10 +4589,8 @@ void WrappedID3D11DeviceContext::CSSetShaderResources( { if(ppShaderResourceViews[i] && m_State >= WRITING_CAPFRAME) { - ID3D11Resource *res = NULL; - ppShaderResourceViews[i]->GetResource(&res); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - SAFE_RELEASE(res); + MarkResourceReferenced(GetIDForResource(ppShaderResourceViews[i]), eFrameRef_Read); + MarkResourceReferenced(GetViewResourceResID(ppShaderResourceViews[i]), eFrameRef_Read); } SRVs[i] = UNWRAP(WrappedID3D11ShaderResourceView1, ppShaderResourceViews[i]); @@ -4708,14 +4669,10 @@ void WrappedID3D11DeviceContext::CSSetUnorderedAccessViews( { if(ppUnorderedAccessViews[i] && m_State >= WRITING) { - ID3D11Resource *res = NULL; - ppUnorderedAccessViews[i]->GetResource(&res); - if(m_State == WRITING_IDLE) - MarkDirtyResource(GetIDForResource(res)); + MarkDirtyResource(GetViewResourceResID(ppUnorderedAccessViews[i])); else if(m_State == WRITING_CAPFRAME) - m_MissingTracks.insert(GetIDForResource(res)); - SAFE_RELEASE(res); + m_MissingTracks.insert(GetViewResourceResID(ppUnorderedAccessViews[i])); } UAVs[i] = UNWRAP(WrappedID3D11UnorderedAccessView1, ppUnorderedAccessViews[i]); @@ -6016,12 +5973,7 @@ void WrappedID3D11DeviceContext::CopyStructureCount(ID3D11Buffer *pDstBuffer, record->AddParent(srcRecord); - ID3D11Resource *res = NULL; - pSrcView->GetResource(&res); - - MarkDirtyResource(GetIDForResource(pDstBuffer)); - - SAFE_RELEASE(res); + MarkDirtyResource(GetViewResourceResID(pSrcView)); } m_pRealContext->CopyStructureCount(UNWRAP(WrappedID3D11Buffer, pDstBuffer), DstAlignedByteOffset, @@ -6257,23 +6209,17 @@ void WrappedID3D11DeviceContext::GenerateMips(ID3D11ShaderResourceView *pShaderR m_ContextRecord->AddChunk(scope.Get()); - ID3D11Resource *res = NULL; - pShaderResourceView->GetResource(&res); + ResourceId id = GetViewResourceResID(pShaderResourceView); - m_MissingTracks.insert(GetIDForResource(res)); + m_MissingTracks.insert(id); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Read); - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Write); + MarkResourceReferenced(id, eFrameRef_Read); + MarkResourceReferenced(id, eFrameRef_Write); MarkResourceReferenced(GetIDForResource(pShaderResourceView), eFrameRef_Read); - SAFE_RELEASE(res); } else if(m_State >= WRITING) { - ID3D11Resource *res = NULL; - pShaderResourceView->GetResource(&res); - ResourceId id = GetIDForResource(res); - MarkDirtyResource(id); - SAFE_RELEASE(res); + MarkDirtyResource(GetViewResourceResID(pShaderResourceView)); } m_pRealContext->GenerateMips(UNWRAP(WrappedID3D11ShaderResourceView1, pShaderResourceView)); @@ -6430,12 +6376,7 @@ void WrappedID3D11DeviceContext::ClearRenderTargetView(ID3D11RenderTargetView *p m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearRenderTargetView(pRenderTargetView, ColorRGBA); - ID3D11Resource *res = NULL; - pRenderTargetView->GetResource(&res); - - m_MissingTracks.insert(GetIDForResource(res)); - - SAFE_RELEASE(res); + m_MissingTracks.insert(GetViewResourceResID(pRenderTargetView)); m_ContextRecord->AddChunk(scope.Get()); } @@ -6445,10 +6386,7 @@ void WrappedID3D11DeviceContext::ClearRenderTargetView(ID3D11RenderTargetView *p m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearRenderTargetView(pRenderTargetView, ColorRGBA); - ID3D11Resource *viewRes = NULL; - pRenderTargetView->GetResource(&viewRes); - ResourceId id = GetIDForResource(viewRes); - SAFE_RELEASE(viewRes); + ResourceId id = GetViewResourceResID(pRenderTargetView); D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord(id); RDCASSERT(record); @@ -6480,18 +6418,10 @@ void WrappedID3D11DeviceContext::ClearRenderTargetView(ID3D11RenderTargetView *p record->AddChunk(scope.Get()); } - if(pRenderTargetView && m_State >= WRITING) + if(pRenderTargetView && m_State == WRITING_CAPFRAME) { - ID3D11Resource *res = NULL; - pRenderTargetView->GetResource(&res); - - if(m_State == WRITING_CAPFRAME) - { - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Write); - MarkResourceReferenced(GetIDForResource(pRenderTargetView), eFrameRef_Read); - } - - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(pRenderTargetView), eFrameRef_Write); + MarkResourceReferenced(GetIDForResource(pRenderTargetView), eFrameRef_Read); } } @@ -6604,12 +6534,7 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewUint( m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearUnorderedAccessViewUint(pUnorderedAccessView, Values); - ID3D11Resource *res = NULL; - pUnorderedAccessView->GetResource(&res); - - m_MissingTracks.insert(GetIDForResource(res)); - - SAFE_RELEASE(res); + m_MissingTracks.insert(GetViewResourceResID(pUnorderedAccessView)); m_ContextRecord->AddChunk(scope.Get()); } @@ -6619,8 +6544,8 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewUint( m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearUnorderedAccessViewUint(pUnorderedAccessView, Values); - D3D11ResourceRecord *record = - m_pDevice->GetResourceManager()->GetResourceRecord(GetIDForResource(pUnorderedAccessView)); + D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord( + GetViewResourceResID(pUnorderedAccessView)); RDCASSERT(record); m_pDevice->LockForChunkRemoval(); @@ -6650,18 +6575,10 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewUint( record->AddChunk(scope.Get()); } - if(pUnorderedAccessView && m_State >= WRITING) + if(pUnorderedAccessView && m_State == WRITING_CAPFRAME) { - ID3D11Resource *res = NULL; - pUnorderedAccessView->GetResource(&res); - - if(m_State == WRITING_CAPFRAME) - { - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Write); - MarkResourceReferenced(GetIDForResource(pUnorderedAccessView), eFrameRef_Read); - } - - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(pUnorderedAccessView), eFrameRef_Write); + MarkResourceReferenced(GetIDForResource(pUnorderedAccessView), eFrameRef_Read); } m_pRealContext->ClearUnorderedAccessViewUint( @@ -6776,12 +6693,7 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewFloat( m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearUnorderedAccessViewFloat(pUnorderedAccessView, Values); - ID3D11Resource *res = NULL; - pUnorderedAccessView->GetResource(&res); - - m_MissingTracks.insert(GetIDForResource(res)); - - SAFE_RELEASE(res); + m_MissingTracks.insert(GetViewResourceResID(pUnorderedAccessView)); m_ContextRecord->AddChunk(scope.Get()); } @@ -6791,8 +6703,8 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewFloat( m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearUnorderedAccessViewFloat(pUnorderedAccessView, Values); - D3D11ResourceRecord *record = - m_pDevice->GetResourceManager()->GetResourceRecord(GetIDForResource(pUnorderedAccessView)); + D3D11ResourceRecord *record = m_pDevice->GetResourceManager()->GetResourceRecord( + GetViewResourceResID(pUnorderedAccessView)); RDCASSERT(record); m_pDevice->LockForChunkRemoval(); @@ -6822,18 +6734,10 @@ void WrappedID3D11DeviceContext::ClearUnorderedAccessViewFloat( record->AddChunk(scope.Get()); } - if(pUnorderedAccessView && m_State >= WRITING) + if(pUnorderedAccessView && m_State == WRITING_CAPFRAME) { - ID3D11Resource *res = NULL; - pUnorderedAccessView->GetResource(&res); - - if(m_State == WRITING_CAPFRAME) - { - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Write); - MarkResourceReferenced(GetIDForResource(pUnorderedAccessView), eFrameRef_Read); - } - - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(pUnorderedAccessView), eFrameRef_Write); + MarkResourceReferenced(GetIDForResource(pUnorderedAccessView), eFrameRef_Read); } m_pRealContext->ClearUnorderedAccessViewFloat( @@ -6942,12 +6846,7 @@ void WrappedID3D11DeviceContext::ClearDepthStencilView(ID3D11DepthStencilView *p m_pSerialiser->Serialise("context", m_ResourceID); Serialise_ClearDepthStencilView(pDepthStencilView, ClearFlags, Depth, Stencil); - ID3D11Resource *res = NULL; - pDepthStencilView->GetResource(&res); - - m_MissingTracks.insert(GetIDForResource(res)); - - SAFE_RELEASE(res); + m_MissingTracks.insert(GetViewResourceResID(pDepthStencilView)); m_ContextRecord->AddChunk(scope.Get()); } @@ -6958,7 +6857,7 @@ void WrappedID3D11DeviceContext::ClearDepthStencilView(ID3D11DepthStencilView *p Serialise_ClearDepthStencilView(pDepthStencilView, ClearFlags, Depth, Stencil); D3D11ResourceRecord *record = - m_pDevice->GetResourceManager()->GetResourceRecord(GetIDForResource(pDepthStencilView)); + m_pDevice->GetResourceManager()->GetResourceRecord(GetViewResourceResID(pDepthStencilView)); RDCASSERT(record); m_pDevice->LockForChunkRemoval(); @@ -6988,18 +6887,10 @@ void WrappedID3D11DeviceContext::ClearDepthStencilView(ID3D11DepthStencilView *p record->AddChunk(scope.Get()); } - if(pDepthStencilView && m_State >= WRITING) + if(pDepthStencilView && m_State == WRITING_CAPFRAME) { - ID3D11Resource *res = NULL; - pDepthStencilView->GetResource(&res); - - if(m_State == WRITING_CAPFRAME) - { - MarkResourceReferenced(GetIDForResource(res), eFrameRef_Write); - MarkResourceReferenced(GetIDForResource(pDepthStencilView), eFrameRef_Read); - } - - SAFE_RELEASE(res); + MarkResourceReferenced(GetViewResourceResID(pDepthStencilView), eFrameRef_Write); + MarkResourceReferenced(GetIDForResource(pDepthStencilView), eFrameRef_Read); } } diff --git a/renderdoc/driver/d3d11/d3d11_renderstate.cpp b/renderdoc/driver/d3d11/d3d11_renderstate.cpp index 2edc2bda0..9dd430bb0 100644 --- a/renderdoc/driver/d3d11/d3d11_renderstate.cpp +++ b/renderdoc/driver/d3d11/d3d11_renderstate.cpp @@ -183,15 +183,12 @@ void D3D11RenderState::MarkReferenced(WrappedID3D11DeviceContext *ctx, bool init for(UINT i = 0; i < D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT; i++) { - ID3D11Resource *res = NULL; if(sh->SRVs[i]) { - sh->SRVs[i]->GetResource(&res); ctx->MarkResourceReferenced(GetIDForResource(sh->SRVs[i]), initial ? eFrameRef_Unknown : eFrameRef_Read); - ctx->MarkResourceReferenced(GetIDForResource(res), + ctx->MarkResourceReferenced(GetViewResourceResID(sh->SRVs[i]), initial ? eFrameRef_Unknown : eFrameRef_Read); - SAFE_RELEASE(res); } } @@ -200,20 +197,17 @@ void D3D11RenderState::MarkReferenced(WrappedID3D11DeviceContext *ctx, bool init for(UINT i = 0; i < D3D11_1_UAV_SLOT_COUNT; i++) { - ID3D11Resource *res = NULL; if(CSUAVs[i]) { - CSUAVs[i]->GetResource(&res); // 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); - ctx->MarkResourceReferenced(GetIDForResource(res), + ctx->MarkResourceReferenced(GetViewResourceResID(CSUAVs[i]), initial ? eFrameRef_Unknown : eFrameRef_Read); - ctx->MarkResourceReferenced(GetIDForResource(res), + ctx->MarkResourceReferenced(GetViewResourceResID(CSUAVs[i]), initial ? eFrameRef_Unknown : eFrameRef_Write); - SAFE_RELEASE(res); } }