From d6c94b20bc9c0788b41cdc41060754be6841b84b Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Thu, 6 Jun 2024 12:00:01 +0100 Subject: [PATCH] DXIL Debugger preparation changes Add DXILDebug::[Debugger,ThreadState] as friends to DXIL::Program Expose DXIL::isUndef(const DXIL::Value* v); for use in the DXIL Debugger Add more stubs to DXILDebug::[DebugAPIWrapper, ThreadState, GlobalState] --- renderdoc/driver/shaders/dxil/dxil_bytecode.h | 10 ++++++++++ renderdoc/driver/shaders/dxil/dxil_debug.h | 19 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/shaders/dxil/dxil_bytecode.h b/renderdoc/driver/shaders/dxil/dxil_bytecode.h index e4958bbd5..5f1b9032d 100644 --- a/renderdoc/driver/shaders/dxil/dxil_bytecode.h +++ b/renderdoc/driver/shaders/dxil/dxil_bytecode.h @@ -41,6 +41,12 @@ namespace LLVMBC struct BlockOrRecord; }; +namespace DXILDebug +{ +class Debugger; +struct ThreadState; +}; + namespace DXIL { struct BumpAllocator @@ -1498,6 +1504,8 @@ struct ResourceReference class Program : public DXBC::IDebugInfo { + friend DXILDebug::Debugger; + friend DXILDebug::ThreadState; public: Program(const byte *bytes, size_t length); Program(const Program &o) = delete; @@ -1667,6 +1675,8 @@ bool getival(const Value *v, T &out) return false; } +bool isUndef(const Value *v); + }; // namespace DXIL DECLARE_REFLECTION_ENUM(DXIL::Attribute); diff --git a/renderdoc/driver/shaders/dxil/dxil_debug.h b/renderdoc/driver/shaders/dxil/dxil_debug.h index 7420e2997..1e5d0670e 100644 --- a/renderdoc/driver/shaders/dxil/dxil_debug.h +++ b/renderdoc/driver/shaders/dxil/dxil_debug.h @@ -30,6 +30,9 @@ namespace DXILDebug { +typedef rdcstr Id; +class Debugger; +struct GlobalState; struct BindingSlot { BindingSlot() : shaderRegister(UINT32_MAX), registerSpace(UINT32_MAX) {} @@ -53,8 +56,22 @@ struct BindingSlot uint32_t registerSpace; }; -struct Debugger : public DXBCContainerDebugger +class DebugAPIWrapper { +}; + +struct ThreadState +{ +}; + +struct GlobalState +{ + GlobalState() = default; +}; + +class Debugger : public DXBCContainerDebugger +{ +public: Debugger() : DXBCContainerDebugger(true){}; };