From 24753747a10de1a76d515057572da7c148511866 Mon Sep 17 00:00:00 2001 From: Feifan He Date: Mon, 2 Dec 2024 23:53:45 +0800 Subject: [PATCH] vkd3d-shader/msl: Implement VKD3DSIH_EXP. --- libs/vkd3d-shader/msl.c | 3 +++ tests/hlsl/exp.shader_test | 4 ++-- tests/hlsl/ldexp.shader_test | 4 ++-- tests/hlsl/trigonometry.shader_test | 12 ++++++------ 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/libs/vkd3d-shader/msl.c b/libs/vkd3d-shader/msl.c index 58402aac..1f59c167 100644 --- a/libs/vkd3d-shader/msl.c +++ b/libs/vkd3d-shader/msl.c @@ -552,6 +552,9 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d case VKD3DSIH_IEQ: msl_relop(gen, ins, "=="); break; + case VKD3DSIH_EXP: + msl_intrinsic(gen, ins, "exp2"); + break; case VKD3DSIH_FRC: msl_intrinsic(gen, ins, "fract"); break; diff --git a/tests/hlsl/exp.shader_test b/tests/hlsl/exp.shader_test index 208d24b5..8ace7418 100644 --- a/tests/hlsl/exp.shader_test +++ b/tests/hlsl/exp.shader_test @@ -8,7 +8,7 @@ float4 main() : sv_target [test] uniform 0 float4 -1.0 0.0 1.0 2.0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (0.5, 1.0, 2.0, 4.0) 2 [pixel shader] @@ -21,5 +21,5 @@ float4 main() : sv_target [test] uniform 0 float4 -1.0 0.0 1.0 2.0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (0.36787948, 1.0, 2.7182815, 7.38905573) 2 diff --git a/tests/hlsl/ldexp.shader_test b/tests/hlsl/ldexp.shader_test index 7d95134f..5a26ffb9 100644 --- a/tests/hlsl/ldexp.shader_test +++ b/tests/hlsl/ldexp.shader_test @@ -10,7 +10,7 @@ float4 main() : SV_TARGET [test] uniform 0 float4 2.0 3.0 4.0 5.0 uniform 4 float4 0.0 -10.0 10.0 100.0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (2.0, 0.00292968750, 4096.0, 6.33825300e+030) 2 @@ -28,7 +28,7 @@ if(sm<4) uniform 0 float4 2 3 4 5 if(sm<4) uniform 4 float4 0 -10 10 100 if(sm>=4) uniform 0 int4 2 3 4 5 if(sm>=4) uniform 4 int4 0 -10 10 100 -todo(msl) draw quad +draw quad probe (0, 0) rgba (2.0, 0.00292968750, 4096.0, 6.33825300e+030) 2 diff --git a/tests/hlsl/trigonometry.shader_test b/tests/hlsl/trigonometry.shader_test index abcdbc37..af21722d 100644 --- a/tests/hlsl/trigonometry.shader_test +++ b/tests/hlsl/trigonometry.shader_test @@ -86,10 +86,10 @@ float4 main() : sv_target [test] uniform 0 float4 -6.28318531 -0.88137359 0.88137359 6.28318531 -todo(msl) draw quad +draw quad probe (0, 0) rgba (-267.744894, -1.0, 1.0, 267.744894) 2 uniform 0 float4 -0.0 0.0 -90.0 90.0 -todo(msl) draw quad +draw quad % mingw does not support "inf" for scanf(), but numbers beyond FLOAT_MAX consistently result in inf. probe (0, 0) rgba (0.0, 0.0, -1.0e39, 1.0e39) 1 @@ -104,10 +104,10 @@ float4 main() : sv_target [test] uniform 0 float4 -1.76274717 -1.3169579 1.3169579 1.76274717 -todo(msl) draw quad +draw quad probe (0, 0) rgba (3.0, 2.0, 2.0, 3.0) 2 uniform 0 float4 -0.0 0.0 -90.0 90.0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (1.0, 1.0, 1.0e39, 1.0e39) 1 @@ -121,10 +121,10 @@ float4 main() : sv_target [test] uniform 0 float4 -1.57079633 -0.54930614 0.54930614 1.57079633 -todo(msl) draw quad +draw quad probe (0, 0) rgba (-0.91715234, -0.5, 0.5, 0.91715234) 2 uniform 0 float4 -10.0 -0.0 0.0 10.0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (-1.0, 0.0, 0.0, 1.0) 1