diff --git a/renderdoc/driver/shaders/dxil/dxil_bytecode.h b/renderdoc/driver/shaders/dxil/dxil_bytecode.h index b8e40e42e..981b75885 100644 --- a/renderdoc/driver/shaders/dxil/dxil_bytecode.h +++ b/renderdoc/driver/shaders/dxil/dxil_bytecode.h @@ -1851,6 +1851,7 @@ DECLARE_REFLECTION_ENUM(DXIL::Attribute); DECLARE_STRINGISE_TYPE(DXIL::InstructionFlags); DECLARE_STRINGISE_TYPE(DXIL::AtomicBinOpCode); DECLARE_STRINGISE_TYPE(DXIL::WaveOpCode); +DECLARE_STRINGISE_TYPE(DXIL::WaveBitOpCode); DECLARE_STRINGISE_TYPE(DXIL::SignedOpKind); DECLARE_STRINGISE_TYPE(DXIL::QuadOpKind); DECLARE_STRINGISE_TYPE(DXIL::PackMode); diff --git a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp index 2d6f7e235..2f24eb323 100644 --- a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp @@ -4181,6 +4181,23 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection) } break; } + case DXOp::WaveActiveBit: + { + // WaveActiveBit(value, i8 waveBitOp) + WaveBitOpCode waveBitOpCode; + if(getival(inst.args[2], waveBitOpCode)) + { + lineStr += "WaveActiveBit" + ToStr(waveBitOpCode); + lineStr += "("; + lineStr += GetArgId(inst, 1); + lineStr += ")"; + } + else + { + showDxFuncName = true; + } + break; + } case DXOp::Pack4x8: { // Pack4x8(packMode,x,y,z,w) diff --git a/renderdoc/driver/shaders/dxil/dxil_stringise.cpp b/renderdoc/driver/shaders/dxil/dxil_stringise.cpp index b47f04d09..7d4f0953f 100644 --- a/renderdoc/driver/shaders/dxil/dxil_stringise.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_stringise.cpp @@ -852,3 +852,15 @@ rdcstr DoStringise(const DXIL::SignedOpKind &el) } END_ENUM_STRINGISE(); } + +template <> +rdcstr DoStringise(const DXIL::WaveBitOpCode &el) +{ + BEGIN_ENUM_STRINGISE(DXIL::WaveBitOpCode) + { + STRINGISE_ENUM_CLASS(And) + STRINGISE_ENUM_CLASS(Or) + STRINGISE_ENUM_CLASS(Xor) + } + END_ENUM_STRINGISE(); +}