mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-04 17:10:47 +00:00
Use the cached resource ResourceId inside views
* Slightly faster than calling to get the resource in WrappedView1 then looking up its ID.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user