diff --git a/libs/vkd3d-shader/msl.c b/libs/vkd3d-shader/msl.c index e292665db..4fd0d94f3 100644 --- a/libs/vkd3d-shader/msl.c +++ b/libs/vkd3d-shader/msl.c @@ -1320,6 +1320,7 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d break; case VSIR_OP_DSX: case VSIR_OP_DSX_COARSE: + case VSIR_OP_DSX_FINE: /* dfdx() and dfdy() are specified to return "a high precision * partial derivative", which would seem to correspond to * DSX_FINE/DSY_FINE. As of MSL 3.2, coarse/fast variants don't @@ -1328,6 +1329,7 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d break; case VSIR_OP_DSY: case VSIR_OP_DSY_COARSE: + case VSIR_OP_DSY_FINE: msl_intrinsic(gen, ins, "dfdy"); break; case VSIR_OP_ELSE: diff --git a/tests/hlsl/ddxddy.shader_test b/tests/hlsl/ddxddy.shader_test index 990b5304d..0a057cf56 100644 --- a/tests/hlsl/ddxddy.shader_test +++ b/tests/hlsl/ddxddy.shader_test @@ -74,7 +74,7 @@ float4 main(float4 pos : sv_position) : sv_target } [test] -todo(glsl | msl) draw quad +todo(glsl) draw quad probe (10, 10) rgba (-0.524999976, -0.164999843, 0.104999900, 0.0) 16 probe (11, 10) rgba (-0.689999819, -0.164999843, 0.114999890, 0.0) 32 probe (10, 11) rgba (-0.420000076, -0.154999852, 0.104999900, 0.0) 32