From fb263266247bbd905ddd28cefdeeca8480d2ada7 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 26 Jul 2023 11:57:28 +0100 Subject: [PATCH] Ensure D3D12 barrier API is kept happy by matching access to layout --- renderdoc/driver/d3d12/d3d12_manager.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/renderdoc/driver/d3d12/d3d12_manager.cpp b/renderdoc/driver/d3d12/d3d12_manager.cpp index 1cf84a70d..99726dc39 100644 --- a/renderdoc/driver/d3d12/d3d12_manager.cpp +++ b/renderdoc/driver/d3d12/d3d12_manager.cpp @@ -803,6 +803,8 @@ void AddStateResetBarrier(D3D12ResourceLayout srcState, D3D12ResourceLayout dstS b.AccessAfter = D3D12_BARRIER_ACCESS_COMMON; b.SyncAfter = D3D12_BARRIER_SYNC_ALL; b.LayoutAfter = dstState.ToLayout(); + if(b.LayoutBefore == D3D12_BARRIER_LAYOUT_UNDEFINED) + b.AccessBefore = D3D12_BARRIER_ACCESS_NO_ACCESS; if(b.LayoutAfter == D3D12_BARRIER_LAYOUT_UNDEFINED) b.AccessAfter = D3D12_BARRIER_ACCESS_NO_ACCESS; b.Subresources.IndexOrFirstMipLevel = (UINT)subresource; @@ -838,6 +840,8 @@ void AddStateResetBarrier(D3D12ResourceLayout srcState, D3D12ResourceLayout dstS b.AccessAfter = D3D12_BARRIER_ACCESS_COMMON; b.SyncAfter = D3D12_BARRIER_SYNC_ALL; b.LayoutAfter = dstState.ToLayout(); + if(b.LayoutBefore == D3D12_BARRIER_LAYOUT_UNDEFINED) + b.AccessBefore = D3D12_BARRIER_ACCESS_NO_ACCESS; if(b.LayoutAfter == D3D12_BARRIER_LAYOUT_UNDEFINED) b.AccessAfter = D3D12_BARRIER_ACCESS_NO_ACCESS; b.Subresources.IndexOrFirstMipLevel = (UINT)subresource;