Make sure lists don't leak even in failure cases

This commit is contained in:
baldurk
2016-11-17 14:22:48 +01:00
parent 648d48672a
commit d3964efc13
+15 -15
View File
@@ -3400,6 +3400,12 @@ ResourceId D3D12DebugManager::RenderOverlay(ResourceId texid, FormatComponentTyp
psoDesc.RasterizerState.MultisampleEnable = FALSE;
psoDesc.RasterizerState.AntialiasedLineEnable = FALSE;
float clearColour[] = {0.0f, 0.0f, 0.0f, 0.5f};
list->ClearRenderTargetView(rtv, clearColour, 0, NULL);
list->Close();
list = NULL;
ID3D12PipelineState *pso = NULL;
HRESULT hr = m_WrappedDevice->CreateGraphicsPipelineState(
&psoDesc, __uuidof(ID3D12PipelineState), (void **)&pso);
@@ -3410,12 +3416,6 @@ ResourceId D3D12DebugManager::RenderOverlay(ResourceId texid, FormatComponentTyp
return m_OverlayResourceId;
}
float clearColour[] = {0.0f, 0.0f, 0.0f, 0.5f};
list->ClearRenderTargetView(rtv, clearColour, 0, NULL);
list->Close();
list = NULL;
D3D12RenderState prev = rs;
rs.pipe = GetResID(pso);
@@ -3475,6 +3475,9 @@ ResourceId D3D12DebugManager::RenderOverlay(ResourceId texid, FormatComponentTyp
psoDesc.PS.pShaderBytecode = red->GetBufferPointer();
psoDesc.PS.BytecodeLength = red->GetBufferSize();
list->Close();
list = NULL;
ID3D12PipelineState *redPSO = NULL;
HRESULT hr = m_WrappedDevice->CreateGraphicsPipelineState(
&psoDesc, __uuidof(ID3D12PipelineState), (void **)&redPSO);
@@ -3502,9 +3505,6 @@ ResourceId D3D12DebugManager::RenderOverlay(ResourceId texid, FormatComponentTyp
return m_OverlayResourceId;
}
list->Close();
list = NULL;
D3D12RenderState prev = rs;
rs.pipe = GetResID(redPSO);
@@ -3565,6 +3565,12 @@ ResourceId D3D12DebugManager::RenderOverlay(ResourceId texid, FormatComponentTyp
psoDesc.RasterizerState.MultisampleEnable = FALSE;
psoDesc.RasterizerState.AntialiasedLineEnable = FALSE;
overlayConsts[3] = 0.0f;
list->ClearRenderTargetView(rtv, overlayConsts, 0, NULL);
list->Close();
list = NULL;
ID3D12PipelineState *pso = NULL;
HRESULT hr = m_WrappedDevice->CreateGraphicsPipelineState(
&psoDesc, __uuidof(ID3D12PipelineState), (void **)&pso);
@@ -3575,12 +3581,6 @@ ResourceId D3D12DebugManager::RenderOverlay(ResourceId texid, FormatComponentTyp
return m_OverlayResourceId;
}
overlayConsts[3] = 0.0f;
list->ClearRenderTargetView(rtv, overlayConsts, 0, NULL);
list->Close();
list = NULL;
D3D12RenderState prev = rs;
rs.pipe = GetResID(pso);