From 68dd93b7e8fec5d09b5dec92847a1856eabb2fcd Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 22 Sep 2025 16:30:42 +0200 Subject: [PATCH] vkd3d-shader/msl: Implement VSIR_OP_SIN. --- libs/vkd3d-shader/msl.c | 3 ++ tests/hlsl/trigonometry.shader_test | 53 ++++++++++++++--------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/libs/vkd3d-shader/msl.c b/libs/vkd3d-shader/msl.c index 16c091d06..2eb42bb13 100644 --- a/libs/vkd3d-shader/msl.c +++ b/libs/vkd3d-shader/msl.c @@ -1636,6 +1636,9 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d case VSIR_OP_RSQ: msl_intrinsic(gen, ins, "rsqrt"); break; + case VSIR_OP_SIN: + msl_intrinsic(gen, ins, "sin"); + break; case VSIR_OP_SQRT: msl_intrinsic(gen, ins, "sqrt"); break; diff --git a/tests/hlsl/trigonometry.shader_test b/tests/hlsl/trigonometry.shader_test index f3fe6aae6..00d7c06f1 100644 --- a/tests/hlsl/trigonometry.shader_test +++ b/tests/hlsl/trigonometry.shader_test @@ -13,24 +13,23 @@ float4 main(float tex : texcoord) : sv_target } [test] -todo(msl) draw quad -probe ( 0, 0) rgba ( 0.00000000, 1.00000000, 0.00000000, 0.0) -probe ( 1, 0) rgba ( 0.84147098, 0.54030231, 1.55740772, 0.0) 1024 -probe ( 2, 0) rgba ( 0.90929743, -0.41614684, -2.18503986, 0.0) 1024 -probe ( 3, 0) rgba ( 0.14112001, -0.98999250, -0.14254654, 0.0) 1024 -probe ( 4, 0) rgba (-0.75680250, -0.65364362, 1.15782128, 0.0) 1024 -probe ( 5, 0) rgba (-0.95892427, 0.28366219, -3.38051501, 0.0) 1024 -probe ( 6, 0) rgba (-0.27941550, 0.96017029, -0.29100619, 0.0) 1024 -probe ( 7, 0) rgba ( 0.65698660, 0.75390225, 0.87144798, 0.0) 1024 -probe ( 8, 0) rgba ( 0.98935825, -0.14550003, -6.79971146, 0.0) 1024 -probe ( 9, 0) rgba ( 0.41211849, -0.91113026, -0.45231566, 0.0) 1024 -probe (10, 0) rgba (-0.54402111, -0.83907153, 0.64836083, 0.0) 1024 -probe (11, 0) rgba (-0.99999021, 0.00442570, -225.95084645, 0.0) 2048 -probe (12, 0) rgba (-0.53657292, 0.84385396, -0.63585993, 0.0) 1024 -probe (13, 0) rgba ( 0.42016704, 0.90744678, 0.46302113, 0.0) 1024 -probe (14, 0) rgba ( 0.99060736, 0.13673722, 7.24460662, 0.0) 1024 -probe (15, 0) rgba ( 0.65028784, -0.75968791, -0.85599340, 0.0) 1024 - +todo(msl & sm>=6) draw quad +probe ( 0, 0) f32( 0.00000000, 1.00000000, 0.00000000, 0.0) +probe ( 1, 0) f32( 0.84147098, 0.54030231, 1.55740772, 0.0) 1024 +probe ( 2, 0) f32( 0.90929743, -0.41614684, -2.18503986, 0.0) 1024 +probe ( 3, 0) f32( 0.14112001, -0.98999250, -0.14254654, 0.0) 1024 +probe ( 4, 0) f32(-0.75680250, -0.65364362, 1.15782128, 0.0) 1024 +probe ( 5, 0) f32(-0.95892427, 0.28366219, -3.38051501, 0.0) 1024 +probe ( 6, 0) f32(-0.27941550, 0.96017029, -0.29100619, 0.0) 1024 +probe ( 7, 0) f32( 0.65698660, 0.75390225, 0.87144798, 0.0) 1024 +probe ( 8, 0) f32( 0.98935825, -0.14550003, -6.79971146, 0.0) 1024 +probe ( 9, 0) f32( 0.41211849, -0.91113026, -0.45231566, 0.0) 1024 +probe (10, 0) f32(-0.54402111, -0.83907153, 0.64836083, 0.0) 1024 +probe (11, 0) f32(-0.99999021, 0.00442570, -225.95084645, 0.0) 2048 +probe (12, 0) f32(-0.53657292, 0.84385396, -0.63585993, 0.0) 1024 +probe (13, 0) f32( 0.42016704, 0.90744678, 0.46302113, 0.0) 1024 +probe (14, 0) f32( 0.99060736, 0.13673722, 7.24460662, 0.0) 1024 +probe (15, 0) f32( 0.65028784, -0.75968791, -0.85599340, 0.0) 1024 [pixel shader] uniform float4 a; @@ -42,9 +41,8 @@ float4 main() : sv_target [test] uniform 0 float4 0.0 0.52359877 2.61799387 3.14159265 -todo(msl) draw quad -probe (0, 0) rgba (0.0, 500.0, 500.0, 0.0) - +draw quad +probe (0, 0) f32(0.0, 500.0, 500.0, 0.0) [pixel shader] uniform float4 a; @@ -71,9 +69,8 @@ float4 main() : sv_target % tan(pi/2) is an asymtote and therefore undefined % so check 0, pi/4, 3pi/4, pi uniform 0 float4 0.0 0.78539816 2.35619449 3.14159265 -todo(msl) draw quad -probe (0, 0) rgba (0, 1000, -1000.0, 0) - +todo(msl & sm>=6) draw quad +probe (0, 0) f32(0, 1000, -1000.0, 0) [pixel shader] uniform float4 a; @@ -139,11 +136,11 @@ float4 main() : sv_target [test] uniform 0 float4 7.604 0 0 0 -todo(msl) draw quad -probe (0, 0) rgba (0.968916833, 0.2473865, 0, 0) 1024 +draw quad +probe (0, 0) f32(0.968916833, 0.2473865, 0, 0) 1024 uniform 0 float4 -10.0 0 0 0 -todo(msl) draw quad -probe (0, 0) rgba (0.544020891, -0.839071631, 0.0, 0.0) 1024 +draw quad +probe (0, 0) f32(0.544020891, -0.839071631, 0.0, 0.0) 1024 [pixel shader fail] float4 main() : sv_target