From f501b8c6619e2751e0b954fb7b56ef8d9457a051 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Sun, 29 Sep 2024 19:44:32 +0200 Subject: [PATCH] vkd3d-shader/glsl: Implement VKD3DSIH_MAD. --- libs/vkd3d-shader/glsl.c | 3 +++ tests/hlsl/arithmetic-float-uniform.shader_test | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libs/vkd3d-shader/glsl.c b/libs/vkd3d-shader/glsl.c index d5c07d1d..f1977dd1 100644 --- a/libs/vkd3d-shader/glsl.c +++ b/libs/vkd3d-shader/glsl.c @@ -822,6 +822,9 @@ static void vkd3d_glsl_handle_instruction(struct vkd3d_glsl_generator *gen, case VKD3DSIH_IF: shader_glsl_if(gen, ins); break; + case VKD3DSIH_MAD: + shader_glsl_intrinsic(gen, ins, "fma"); + break; case VKD3DSIH_LTO: shader_glsl_relop(gen, ins, "<", "lessThan"); break; diff --git a/tests/hlsl/arithmetic-float-uniform.shader_test b/tests/hlsl/arithmetic-float-uniform.shader_test index 600c957a..b2741dd9 100644 --- a/tests/hlsl/arithmetic-float-uniform.shader_test +++ b/tests/hlsl/arithmetic-float-uniform.shader_test @@ -103,7 +103,7 @@ float4 main() : sv_target uniform 0 float4 1.00000007 -42.1 4.0 45.0 uniform 4 float4 1.625 -5.0 4.125 5.0 uniform 8 float4 1.00000007 -1.0 0.5 -0.5 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (2.62500024, 209.5, 17.0, 224.5) 1 % precise mad() is not allowed to fuse, even though unfused is less precise. @@ -120,7 +120,7 @@ float4 main() : sv_target uniform 0 float4 1.00000007 -42.1 4.0 45.0 uniform 4 float4 1.625 -5.0 4.125 5.0 uniform 8 float4 1.00000007 -1.0 0.5 -0.5 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (2.62500048, 209.5, 17.0, 224.5) 1 [require]