From 848b47b80dddf14413415854f1f8d53484bcd31b Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 10 Sep 2025 12:56:27 +0100 Subject: [PATCH] Handle clears in pixel history view of UAV-only textures --- renderdoc/driver/d3d12/d3d12_pixelhistory.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/renderdoc/driver/d3d12/d3d12_pixelhistory.cpp b/renderdoc/driver/d3d12/d3d12_pixelhistory.cpp index d2c931f10..3062cdbd9 100644 --- a/renderdoc/driver/d3d12/d3d12_pixelhistory.cpp +++ b/renderdoc/driver/d3d12/d3d12_pixelhistory.cpp @@ -2916,6 +2916,17 @@ rdcarray D3D12Replay::PixelHistory(rdcarray event resourceState = D3D12_RESOURCE_STATE_RESOLVE_DEST; else if(IsCopyWrite(usage)) resourceState = D3D12_RESOURCE_STATE_COPY_DEST; + + // if we are assuming render target state but that's not allowed, this is a UAV clear + if(resourceState == D3D12_RESOURCE_STATE_RENDER_TARGET && + (resDesc.Flags & D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET) == 0) + { + RDCASSERT(usage == ResourceUsage::Clear && + (resDesc.Flags & D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS), + usage, resDesc.Flags); + resourceState = D3D12_RESOURCE_STATE_UNORDERED_ACCESS; + } + eventInfo.resourceState = resourceState; if(directWrite || clear)