From 8cb615e2179cc82f63812ff0e6361bfc47f6ef90 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 15 Aug 2024 14:43:18 +0100 Subject: [PATCH] Fix assert when disassembling unorm or snorm typed resources --- .../driver/shaders/dxil/dxil_disassemble.cpp | 7 ++++++ .../driver/shaders/dxil/dxil_reflect.cpp | 24 +++---------------- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp index c6d56c16a..a16e3e699 100644 --- a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp @@ -3405,6 +3405,13 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection) { VarType varType = VarTypeForComponentType(compType); typeStr += "<"; + if(compType == ComponentType::UNormF64 || + compType == ComponentType::UNormF32 || compType == ComponentType::UNormF16) + typeStr += "unorm "; + else if(compType == ComponentType::SNormF64 || + compType == ComponentType::SNormF32 || + compType == ComponentType::SNormF16) + typeStr += "snorm "; typeStr += ToStr(varType); if(compCount > 1) typeStr += StringFormat::Fmt("%d", compCount); diff --git a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp index 83e9ed195..0925bf23c 100644 --- a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp @@ -988,29 +988,11 @@ VarType VarTypeForComponentType(ComponentType compType) case ComponentType::F32: varType = VarType::Float; break; case ComponentType::F64: varType = VarType::Double; break; case ComponentType::SNormF16: - varType = VarType::Half; - RDCERR("Unexpected type in cbuffer annotations"); - break; - case ComponentType::UNormF16: - varType = VarType::Half; - RDCERR("Unexpected type in cbuffer annotations"); - break; + case ComponentType::UNormF16: varType = VarType::Half; break; case ComponentType::SNormF32: - varType = VarType::Float; - RDCERR("Unexpected type in cbuffer annotations"); - break; - case ComponentType::UNormF32: - varType = VarType::Float; - RDCERR("Unexpected type in cbuffer annotations"); - break; + case ComponentType::UNormF32: varType = VarType::Float; break; case ComponentType::SNormF64: - varType = VarType::Double; - RDCERR("Unexpected type in cbuffer annotations"); - break; - case ComponentType::UNormF64: - varType = VarType::Double; - RDCERR("Unexpected type in cbuffer annotations"); - break; + case ComponentType::UNormF64: varType = VarType::Double; break; } return varType; }