File tree Expand file tree Collapse file tree 1 file changed +18
-4
lines changed
renderdoc/driver/shaders/dxil Expand file tree Collapse file tree 1 file changed +18
-4
lines changed Original file line number Diff line number Diff 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 ;
You can’t perform that action at this time.
0 commit comments