From dbf3569d26a149147c2fd4da83b6d7211adbe35f Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Wed, 27 Nov 2024 13:21:32 +0000 Subject: [PATCH] DXIL Program added GetEntryPointInterface() Returns the parsed entry point metadata (Inputs, Outputs, Resources, etc.) --- renderdoc/driver/shaders/dxil/dxil_bytecode.h | 1 + renderdoc/driver/shaders/dxil/dxil_reflect.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/renderdoc/driver/shaders/dxil/dxil_bytecode.h b/renderdoc/driver/shaders/dxil/dxil_bytecode.h index b8f32ce29..150b9fb11 100644 --- a/renderdoc/driver/shaders/dxil/dxil_bytecode.h +++ b/renderdoc/driver/shaders/dxil/dxil_bytecode.h @@ -1579,6 +1579,7 @@ public: void FetchEntryPoint(); DXBC::Reflection *BuildReflection(); rdcstr GetDebugStatus(); + const DXIL::EntryPointInterface *GetEntryPointInterface() const; rdcarray GetEntryPoints(); void FillEntryPointInterfaces(); size_t GetInstructionCount() const; diff --git a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp index d02311339..f217fc134 100644 --- a/renderdoc/driver/shaders/dxil/dxil_reflect.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_reflect.cpp @@ -1439,6 +1439,18 @@ static void AddResourceBind(DXBC::Reflection *refl, const TypeInfo &typeInfo, co refl->UAVs.push_back(bind); } +const DXIL::EntryPointInterface *Program::GetEntryPointInterface() const +{ + RDCASSERT(!m_EntryPointInterfaces.isEmpty()); + for(size_t e = 0; e < m_EntryPointInterfaces.size(); ++e) + { + if(m_EntryPoint == m_EntryPointInterfaces[e].name) + return &m_EntryPointInterfaces[e]; + } + RDCERR("Couldn't find entry point interface for %s", m_EntryPoint.c_str()); + return NULL; +} + rdcarray Program::GetEntryPoints() { rdcarray ret;