From 6f89357f59b507c0dcdc177bc1ecfbbc94d6fed3 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.9 6.8 Change-Id: I517d23e076039543361d2bca1b91cddd47abcfaa Reviewed-by: Jonas Karlsson --- 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 21ddf406365..01c0658b873 100644 --- a/src/gui/rhi/qrhid3d11.cpp +++ b/src/gui/rhi/qrhid3d11.cpp @@ -3707,6 +3707,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 8ec0345ad7d..40e589128d1 100644 --- a/src/gui/rhi/qrhid3d12.cpp +++ b/src/gui/rhi/qrhid3d12.cpp @@ -1110,6 +1110,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);