From f2d69e9f9e52aad86b0d915da731a9d230ee7cba Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 20 Apr 2020 11:05:40 +0100 Subject: [PATCH] Fix handling of ResourceMinLODClamp for cubemap textures on D3D12 --- .../PipelineState/D3D12PipelineStateViewer.cpp | 9 ++++++++- renderdoc/driver/d3d12/d3d12_replay.cpp | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp index ef7bb497a..ddb438a1d 100644 --- a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp @@ -577,6 +577,13 @@ void D3D12PipelineStateViewer::setViewDetails(RDTreeWidgetItem *node, const D3D1 viewdetails = true; } + if(view.res.minLODClamp != 0.0f) + { + text += tr("The texture has a ResourceMinLODClamp of %1.\n").arg(view.res.minLODClamp); + + viewdetails = true; + } + text = text.trimmed(); node->setToolTip(text); @@ -2271,7 +2278,7 @@ QVariantList D3D12PipelineStateViewer::exportViewHTML(const D3D12Pipe::View &vie viewParams += tr("First Slice: %1, Array Size: %2").arg(view.firstSlice).arg(view.numSlices); } - if(view.minLODClamp > 0.0f) + if(view.minLODClamp != 0.0f) { if(!viewParams.isEmpty()) viewParams += lit(", "); diff --git a/renderdoc/driver/d3d12/d3d12_replay.cpp b/renderdoc/driver/d3d12/d3d12_replay.cpp index 93ec13d1f..d6bb1f87c 100644 --- a/renderdoc/driver/d3d12/d3d12_replay.cpp +++ b/renderdoc/driver/d3d12/d3d12_replay.cpp @@ -795,6 +795,21 @@ void D3D12Replay::FillResourceView(D3D12Pipe::View &view, const D3D12Descriptor view.numMips = srv.Texture3D.MipLevels; view.minLODClamp = srv.Texture3D.ResourceMinLODClamp; } + else if(srv.ViewDimension == D3D11_SRV_DIMENSION_TEXTURECUBE) + { + view.numSlices = 6; + view.firstMip = srv.TextureCube.MostDetailedMip; + view.numMips = srv.TextureCube.MipLevels; + view.minLODClamp = srv.TextureCube.ResourceMinLODClamp; + } + else if(srv.ViewDimension == D3D11_SRV_DIMENSION_TEXTURECUBEARRAY) + { + view.numSlices = srv.TextureCubeArray.NumCubes * 6; + view.firstSlice = srv.TextureCubeArray.First2DArrayFace; + view.firstMip = srv.TextureCubeArray.MostDetailedMip; + view.numMips = srv.TextureCubeArray.MipLevels; + view.minLODClamp = srv.TextureCube.ResourceMinLODClamp; + } } else if(desc->GetType() == D3D12DescriptorType::UAV) {