From e71708a6e5e0d9f95682551ca5c4650bd6fa6e74 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Tue, 25 Feb 2025 11:33:32 +0100 Subject: [PATCH] rhi: d3d: Fix 3D textures exposed via UAV The docs for D3D11_TEX3D_UAV do not mention accepting -1 as WSize, unlike D3D12_TEX3D_UAV. Hence passing in m_depth for D3D11. Fixes: QTBUG-129300 Pick-to: 6.8 Change-Id: I517d23e076039543361d2bca1b91cddd47abcfaa Reviewed-by: Jonas Karlsson (cherry picked from commit 6f89357f59b507c0dcdc177bc1ecfbbc94d6fed3) Reviewed-by: Qt Cherry-pick Bot --- src/gui/rhi/qrhid3d11.cpp | 1 + src/gui/rhi/qrhid3d12.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/gui/rhi/qrhid3d11.cpp b/src/gui/rhi/qrhid3d11.cpp index 5ba590b56ca..eb922857158 100644 --- a/src/gui/rhi/qrhid3d11.cpp +++ b/src/gui/rhi/qrhid3d11.cpp @@ -3651,6 +3651,7 @@ ID3D11UnorderedAccessView *QD3D11Texture::unorderedAccessViewForLevel(int level) } else if (is3D) { desc.ViewDimension = D3D11_UAV_DIMENSION_TEXTURE3D; desc.Texture3D.MipSlice = UINT(level); + desc.Texture3D.WSize = UINT(m_depth); } else { desc.ViewDimension = D3D11_UAV_DIMENSION_TEXTURE2D; desc.Texture2D.MipSlice = UINT(level); diff --git a/src/gui/rhi/qrhid3d12.cpp b/src/gui/rhi/qrhid3d12.cpp index 2e8c0a167bd..295fe790226 100644 --- a/src/gui/rhi/qrhid3d12.cpp +++ b/src/gui/rhi/qrhid3d12.cpp @@ -1061,6 +1061,7 @@ void QD3D12CommandBuffer::visitStorageImage(QD3D12Stage s, } else if (is3D) { uavDesc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE3D; uavDesc.Texture3D.MipSlice = UINT(d.level); + uavDesc.Texture3D.WSize = UINT(-1); } else { uavDesc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2D; uavDesc.Texture2D.MipSlice = UINT(d.level);