From 2fc0bc04cb95499635f63986a55bc6f67849dd9f Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 1 Jul 2026 11:17:07 +0100 Subject: [PATCH] Ignore swizzles on resources and ensure no OOB swizzles are processed --- qrenderdoc/Windows/ShaderViewer.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/qrenderdoc/Windows/ShaderViewer.cpp b/qrenderdoc/Windows/ShaderViewer.cpp index c89ea7de9..7c57ed119 100644 --- a/qrenderdoc/Windows/ShaderViewer.cpp +++ b/qrenderdoc/Windows/ShaderViewer.cpp @@ -3499,6 +3499,7 @@ const RDTreeWidgetItem *ShaderViewer::evaluateVar(const RDTreeWidgetItem *item, } else { + // out of bounds swizzle return NULL; } } @@ -3625,7 +3626,12 @@ const RDTreeWidgetItem *ShaderViewer::evaluateVar(const RDTreeWidgetItem *item, if(ret.type == VarType::Sampler || ret.type == VarType::ReadOnlyResource || ret.type == VarType::ReadWriteResource) + { dataSize = 16; + // ignore swizzle for resources - some representations like DXBC will generate these for + // instructions but it's not a 'real' swizzle to evaluate + swizzle = ~0U; + } // only support swizzling on vectors if(swizzle != ~0U && (ret.rows > 1 || mapping.variables.size() > 4)) @@ -3650,6 +3656,11 @@ const RDTreeWidgetItem *ShaderViewer::evaluateVar(const RDTreeWidgetItem *item, { ret.columns = i + 1; } + else + { + // out of bounds swizzle + return NULL; + } } const DebugVariableReference &r = mapping.variables[swiz_i];