From 0736a977a2513f2b523bc6bc63774ef6d05bd222 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 26 May 2020 13:53:25 +0100 Subject: [PATCH] Handle nested struct offsets properly in raw buffer viewer --- qrenderdoc/Windows/BufferViewer.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp index f78a7e189..83a0937eb 100644 --- a/qrenderdoc/Windows/BufferViewer.cpp +++ b/qrenderdoc/Windows/BufferViewer.cpp @@ -1812,7 +1812,7 @@ static int MaxNumRows(const ShaderConstant &c) return ret; } -static void UnrollConstant(rdcstr prefix, const ShaderConstant &constant, +static void UnrollConstant(rdcstr prefix, uint32_t baseOffset, const ShaderConstant &constant, rdcarray &columns, rdcarray &props) { @@ -1829,6 +1829,7 @@ static void UnrollConstant(rdcstr prefix, const ShaderConstant &constant, prop.format = GetInterpretedResourceFormat(constant); ShaderConstant c = constant; + c.byteOffset += baseOffset; if(isArray) { @@ -1855,8 +1856,8 @@ static void UnrollConstant(rdcstr prefix, const ShaderConstant &constant, { for(const ShaderConstant &child : constant.type.members) { - UnrollConstant(isArray ? QFormatStr("%1[%2]").arg(baseName).arg(a) : QString(baseName), child, - columns, props); + UnrollConstant(isArray ? QFormatStr("%1[%2]").arg(baseName).arg(a) : QString(baseName), + baseOffset + constant.byteOffset, child, columns, props); } } } @@ -1864,7 +1865,7 @@ static void UnrollConstant(rdcstr prefix, const ShaderConstant &constant, static void UnrollConstant(const ShaderConstant &constant, rdcarray &columns, rdcarray &props) { - UnrollConstant("", constant, columns, props); + UnrollConstant("", 0, constant, columns, props); } BufferViewer::BufferViewer(ICaptureContext &ctx, bool meshview, QWidget *parent)