DXIL Debugger foundation refactoring

Removed "rdcstr Program::GetResourceReferenceName(ResourceClass resClass, const BindingSlot &slot) const"
Moved "DXIL::BindingSlot" to "DXILDebug::BindingSlot"
This commit is contained in:
Jake Turner
2024-06-03 13:06:54 +01:00
parent ccde0a261f
commit 38340e3cb1
4 changed files with 23 additions and 34 deletions
@@ -1513,7 +1513,6 @@ public:
rdcarray<ShaderEntryPoint> GetEntryPoints();
void FillEntryPointInterfaces();
size_t GetInstructionCount() const;
rdcstr GetResourceReferenceName(ResourceClass resClass, const BindingSlot &slot) const;
void FillRayPayloads(
Program *executable,
rdcflatmap<ShaderEntryPoint, rdcpair<DXBC::CBufferVariableType, DXBC::CBufferVariableType>>
@@ -146,19 +146,6 @@ enum class SamplerFeedbackType : uint8_t
MipRegionUsed = 1,
LastEntry = 2
};
struct BindingSlot
{
BindingSlot() : shaderRegister(UINT32_MAX), registerSpace(UINT32_MAX) {}
BindingSlot(uint32_t shaderReg, uint32_t regSpace)
: shaderRegister(shaderReg), registerSpace(regSpace)
{
}
uint32_t shaderRegister;
uint32_t registerSpace;
};
}; // namespace DXIL
DECLARE_STRINGISE_TYPE(DXIL::ComponentType);
@@ -30,6 +30,29 @@
namespace DXILDebug
{
struct BindingSlot
{
BindingSlot() : shaderRegister(UINT32_MAX), registerSpace(UINT32_MAX) {}
BindingSlot(uint32_t shaderReg, uint32_t regSpace)
: shaderRegister(shaderReg), registerSpace(regSpace)
{
}
BindingSlot(const DXIL::ResourceReference &resRef)
: shaderRegister(resRef.resourceBase.regBase), registerSpace(resRef.resourceBase.space)
{
}
bool operator<(const BindingSlot &o) const
{
if(registerSpace != o.registerSpace)
return registerSpace < o.registerSpace;
return shaderRegister < o.shaderRegister;
}
uint32_t shaderRegister;
uint32_t registerSpace;
};
struct Debugger : public DXBCContainerDebugger
{
Debugger() : DXBCContainerDebugger(true){};
@@ -1752,26 +1752,6 @@ void Program::GetLocals(const DXBC::DXBCContainer *dxbc, size_t instruction, uin
locals.clear();
}
rdcstr Program::GetResourceReferenceName(ResourceClass resClass, const BindingSlot &slot) const
{
for(const ResourceReference &resRef : m_ResourceReferences)
{
if(resRef.resourceBase.resClass != resClass)
continue;
if(resRef.resourceBase.space != slot.registerSpace)
continue;
if(resRef.resourceBase.regBase > slot.shaderRegister)
continue;
if(resRef.resourceBase.regBase + resRef.resourceBase.regCount < slot.shaderRegister)
continue;
return resRef.handleID;
}
RDCERR("Failed to find DXIL %s Resource Space %d Register %d", ToStr(resClass).c_str(),
slot.registerSpace, slot.shaderRegister);
return "UNKNOWN_RESOURCE_HANDLE";
}
const ResourceReference *Program::GetResourceReference(const rdcstr &handleStr) const
{
if(m_ResourceHandles.count(handleStr) > 0)