Skip to content

Commit 8a72523

Browse files
committed
DXIL debugger handle all float types for DXOp::Saturate
1 parent eebb66e commit 8a72523

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

renderdoc/driver/shaders/dxil/dxil_debug.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3125,16 +3125,30 @@ bool ThreadState::ExecuteInstruction(DebugAPIWrapper *apiWrapper,
31253125
{
31263126
ShaderVariable arg;
31273127
RDCASSERT(GetShaderVariable(inst.args[1], opCode, dxOpCode, arg));
3128-
RDCASSERTEQUAL(arg.type, VarType::Float);
3129-
RDCASSERTEQUAL(result.type, VarType::Float);
3130-
result.value.f32v[0] = dxbc_min(1.0f, dxbc_max(0.0f, arg.value.f32v[0]));
3128+
RDCASSERT(IsFloatingPointType(arg.type));
3129+
RDCASSERTEQUAL(result.type, arg.type);
3130+
if(result.type == VarType::Double)
3131+
{
3132+
result.value.f64v[0] = dxbc_min(1.0, dxbc_max(0.0, arg.value.f64v[0]));
3133+
break;
3134+
}
3135+
else if(result.type == VarType::Float)
3136+
{
3137+
result.value.f32v[0] = dxbc_min(1.0f, dxbc_max(0.0f, arg.value.f32v[0]));
3138+
break;
3139+
}
3140+
else if(result.type == VarType::Half)
3141+
{
3142+
result.value.u16v[0] =
3143+
ConvertToHalf(dxbc_min(1.0f, dxbc_max(0.0f, ConvertFromHalf(arg.value.u16v[0]))));
3144+
break;
3145+
}
31313146
break;
31323147
}
31333148
case DXOp::Dot2:
31343149
case DXOp::Dot3:
31353150
case DXOp::Dot4:
31363151
{
3137-
// Float or Int
31383152
// 2/3/4 Vector
31393153
// Result type must match input types
31403154
uint32_t numComps = 4;

0 commit comments

Comments
 (0)