From 22636f673b6d7fd6696a5f919175f8cec7123b47 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 28 Jan 2021 15:25:57 +0000 Subject: [PATCH] Fix bug when no DXIL reflection information is present * We generate a simple uint array but we were doubling up with a trailing ubyte array. --- renderdoc/driver/shaders/dxil/dxil_reflect.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp index 7e6a076b4..79590e902 100644 --- a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp @@ -970,6 +970,8 @@ DXBC::Reflection *Program::GetReflection() var.type.descriptor.varClass = DXBC::CLASS_SCALAR; var.type.descriptor.varType = VarType::UInt; + uint32_t remainingBytes = var.type.descriptor.bytesize * 16; + bind.variables.push_back(var); // add any remaining bytes if the struct isn't a multiple of float4 size @@ -977,8 +979,7 @@ DXBC::Reflection *Program::GetReflection() var.type.descriptor.bytesize = var.type.descriptor.elements = 1; var.type.descriptor.varType = VarType::UByte; - for(uint32_t remainingBytes = var.type.descriptor.bytesize * 16; - remainingBytes < bind.descriptor.byteSize; remainingBytes++) + for(; remainingBytes < bind.descriptor.byteSize; remainingBytes++) { bind.variables.push_back(var); }