From 06a04537620572b48c1a4adf002a0620bd2e0f50 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Wed, 28 May 2025 10:28:52 +0200 Subject: [PATCH] vkd3d-shader/msl: Implement VSIR_OP_DSX and VSIR_OP_DSY. --- libs/vkd3d-shader/msl.c | 6 ++++++ tests/hlsl/ddxddy.shader_test | 4 ++-- tests/hlsl/discard.shader_test | 2 +- tests/hlsl/fwidth.shader_test | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/libs/vkd3d-shader/msl.c b/libs/vkd3d-shader/msl.c index b280c3e89..a3b174f61 100644 --- a/libs/vkd3d-shader/msl.c +++ b/libs/vkd3d-shader/msl.c @@ -1318,6 +1318,12 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d case VSIR_OP_DP4: msl_dot(gen, ins, VKD3DSP_WRITEMASK_ALL); break; + case VSIR_OP_DSX: + msl_intrinsic(gen, ins, "dfdx"); + break; + case VSIR_OP_DSY: + msl_intrinsic(gen, ins, "dfdy"); + break; case VSIR_OP_ELSE: msl_else(gen); break; diff --git a/tests/hlsl/ddxddy.shader_test b/tests/hlsl/ddxddy.shader_test index 307c9063b..b860d200b 100644 --- a/tests/hlsl/ddxddy.shader_test +++ b/tests/hlsl/ddxddy.shader_test @@ -8,7 +8,7 @@ float4 main(float4 pos : sv_position) : sv_target } [test] -todo(sm<4 | glsl | msl) draw quad +todo(sm<4 | glsl) draw quad probe (0, 0, 640, 480) rgba (1.0, 1.0, 0.0, 0.0) @@ -29,7 +29,7 @@ float4 main(float4 pos : sv_position) : sv_target } [test] -todo(sm<4 | glsl | msl) draw quad +todo(sm<4 | glsl) draw quad todo(sm<4) probe (10, 10) rgba (-16.0, -5.0, 3.0, 0.0) todo(sm<4) probe (11, 10) rgba (-21.0, -5.0, 3.0, 0.0) todo(sm<4) probe (10, 11) rgba (-13.0, -5.0, 3.0, 0.0) diff --git a/tests/hlsl/discard.shader_test b/tests/hlsl/discard.shader_test index b2a1d5da0..5325ffba2 100644 --- a/tests/hlsl/discard.shader_test +++ b/tests/hlsl/discard.shader_test @@ -30,7 +30,7 @@ float4 main(float4 pos : sv_position) : sv_target } [test] -todo(sm<4 | glsl | msl) draw quad +todo(sm<4 | glsl) draw quad probe (0, 0) f32(1, 0, 0, 1) probe (1, 0) f32(1, 2, 3, 4) probe (0, 1) f32(1, 2, 3, 4) diff --git a/tests/hlsl/fwidth.shader_test b/tests/hlsl/fwidth.shader_test index 3a559f900..3ba116a57 100644 --- a/tests/hlsl/fwidth.shader_test +++ b/tests/hlsl/fwidth.shader_test @@ -18,7 +18,7 @@ float4 main(float4 pos : sv_position) : sv_target } [test] -todo(sm<4 | glsl | msl) draw quad +todo(sm<4 | glsl) draw quad probe (10, 10) rgba (8.0, 8.0, 8.0, 8.0) probe (11, 10) rgba (8.0, 8.0, 8.0, 8.0) probe (12, 10) rgba (10.0, 10.0, 10.0, 10.0)