From 701220cc6329beaf9c576f0a9c1088539540a5e7 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Thu, 16 May 2024 11:08:14 +0100 Subject: [PATCH] RD DXIL Disassembly fix getival to work with Literal Inlined getival to get around template instantiation outside of the compilation unit --- renderdoc/driver/shaders/dxil/dxil_bytecode.h | 16 +++++++++++++++- .../driver/shaders/dxil/dxil_disassemble.cpp | 17 ----------------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/renderdoc/driver/shaders/dxil/dxil_bytecode.h b/renderdoc/driver/shaders/dxil/dxil_bytecode.h index 5b1eeb162..30975a09c 100644 --- a/renderdoc/driver/shaders/dxil/dxil_bytecode.h +++ b/renderdoc/driver/shaders/dxil/dxil_bytecode.h @@ -1649,7 +1649,21 @@ rdcstr escapeString(const rdcstr &str); rdcstr escapeStringIfNeeded(const rdcstr &name); template -bool getival(const Value *v, T &out); +bool getival(const Value *v, T &out) +{ + if(const Constant *c = cast(v)) + { + out = T(c->getU64()); + return true; + } + else if(const Literal *lit = cast(v)) + { + out = T(lit->literal); + return true; + } + out = T(); + return false; +} }; // namespace DXIL diff --git a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp index 4394f115b..0a0c13a3a 100644 --- a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp @@ -82,23 +82,6 @@ bool isUndef(const Value *v) return false; } -template -bool getival(const Value *v, T &out) -{ - if(const Constant *c = cast(v)) - { - out = T(c->getU64()); - return true; - } - else if(const Literal *lit = cast(v)) - { - out = T(c->getU64()); - return true; - } - out = T(); - return false; -} - static const char *shaderNames[] = { "Pixel", "Vertex", "Geometry", "Hull", "Domain", "Compute", "Library", "RayGeneration", "Intersection", "AnyHit",