From 8eb43427040877029df2b6668da60e9d33a9112f Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Wed, 21 Feb 2024 14:34:00 +0000 Subject: [PATCH] D3D12 Pixel History Test split barriers into new command list Record the draw command list before the barrier command list Submit the barrier command list before the draw command list --- util/test/demos/d3d12/d3d12_pixel_history.cpp | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/util/test/demos/d3d12/d3d12_pixel_history.cpp b/util/test/demos/d3d12/d3d12_pixel_history.cpp index f1af4194d..34272cd07 100644 --- a/util/test/demos/d3d12/d3d12_pixel_history.cpp +++ b/util/test/demos/d3d12/d3d12_pixel_history.cpp @@ -541,21 +541,14 @@ float4 main(v2f vertIn, uint primId : SV_PrimitiveID, uint sampleId : SV_SampleI while(Running()) { - ID3D12GraphicsCommandList1Ptr cmd = GetCommandBuffer(); - Reset(cmd); - for(int i = 0; i < numPasses; ++i) { PassResources &pass = passes[i]; + ID3D12GraphicsCommandList1Ptr cmd = GetCommandBuffer(); + Reset(cmd); pushMarker(cmd, pass.markerName); - ResourceBarrier(cmd, pass.main16DS, D3D12_RESOURCE_STATE_COMMON, - D3D12_RESOURCE_STATE_DEPTH_WRITE); - ResourceBarrier(cmd, pass.mainDS, D3D12_RESOURCE_STATE_COMMON, - D3D12_RESOURCE_STATE_DEPTH_WRITE); - ResourceBarrier(cmd, pass.mainRT, D3D12_RESOURCE_STATE_COMMON, - D3D12_RESOURCE_STATE_RENDER_TARGET); cmd->OMSetStencilRef(0x55); D3D12_VIEWPORT v; @@ -760,8 +753,25 @@ float4 main(v2f vertIn, uint primId : SV_PrimitiveID, uint sampleId : SV_SampleI D3D12_RESOURCE_STATE_COMMON); popMarker(cmd); + cmd->Close(); + { + ID3D12GraphicsCommandList1Ptr barrierCmd = GetCommandBuffer(); + Reset(barrierCmd); + ResourceBarrier(barrierCmd, pass.main16DS, D3D12_RESOURCE_STATE_COMMON, + D3D12_RESOURCE_STATE_DEPTH_WRITE); + ResourceBarrier(barrierCmd, pass.mainDS, D3D12_RESOURCE_STATE_COMMON, + D3D12_RESOURCE_STATE_DEPTH_WRITE); + ResourceBarrier(barrierCmd, pass.mainRT, D3D12_RESOURCE_STATE_COMMON, + D3D12_RESOURCE_STATE_RENDER_TARGET); + barrierCmd->Close(); + Submit({barrierCmd}); + } + + Submit({cmd}); } + ID3D12GraphicsCommandList1Ptr cmd = GetCommandBuffer(); + Reset(cmd); // Now blit the main render targets to the back buffer ID3D12ResourcePtr bb = StartUsingBackbuffer(cmd, D3D12_RESOURCE_STATE_RENDER_TARGET); for(int i = 0; i < numPasses; ++i)