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:
baldurk
2017-06-08 13:17:31 +01:00
parent 61db91eb42
commit fec5b60c67
2 changed files with 61 additions and 176 deletions
+58 -167
View File
@@ -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);
}
}
+3 -9
View File
@@ -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);
}
}