mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-21 21:26:12 +00:00
DXIL Disassembly support for Barrier
This commit is contained in:
@@ -613,6 +613,17 @@ enum class AtomicBinOpCode : uint32_t
|
||||
Invalid // Must be last.
|
||||
};
|
||||
|
||||
enum class BarrierMode : uint32_t
|
||||
{
|
||||
Invalid = 0,
|
||||
SyncThreadGroup = 0x00000001,
|
||||
UAVFenceGlobal = 0x00000002,
|
||||
UAVFenceThreadGroup = 0x00000004,
|
||||
TGSMFence = 0x00000008,
|
||||
};
|
||||
|
||||
BITMASK_OPERATORS(BarrierMode);
|
||||
|
||||
inline Operation DecodeBinOp(const Type *type, uint64_t opcode)
|
||||
{
|
||||
bool isFloatOp = (type->scalarType == Type::Float);
|
||||
@@ -1751,3 +1762,4 @@ DECLARE_STRINGISE_TYPE(DXIL::Type::ScalarKind);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::LLVMDbgOp);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::DIBase::Type);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::ValueKind);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::BarrierMode);
|
||||
|
||||
@@ -4052,6 +4052,20 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection)
|
||||
lineStr += ")";
|
||||
break;
|
||||
}
|
||||
case DXOp::Barrier:
|
||||
{
|
||||
// Barrier(barrierMode)
|
||||
BarrierMode barrierMode;
|
||||
if(getival<BarrierMode>(inst.args[1], barrierMode))
|
||||
{
|
||||
lineStr += "Barrier(" + ToStr(barrierMode) + ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
showDxFuncName = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DXOp::NumOpCodes: showDxFuncName = false; break;
|
||||
default: showDxFuncName = true; break;
|
||||
}
|
||||
|
||||
@@ -745,3 +745,17 @@ rdcstr DoStringise(const DXIL::ValueKind &el)
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
};
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const DXIL::BarrierMode &el)
|
||||
{
|
||||
BEGIN_BITFIELD_STRINGISE(DXIL::BarrierMode);
|
||||
{
|
||||
STRINGISE_BITFIELD_CLASS_BIT(Invalid);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(SyncThreadGroup);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(UAVFenceGlobal);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(UAVFenceThreadGroup);
|
||||
STRINGISE_BITFIELD_CLASS_BIT(TGSMFence);
|
||||
}
|
||||
END_BITFIELD_STRINGISE();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user