From 6cf3cba68cbf91035dbea234023a6815b5f00346 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Fri, 24 Apr 2026 17:19:17 +0200 Subject: [PATCH] radv: use nir_op_ffma_weak Reviewed-by: Georg Lehmann Part-of: --- src/amd/vulkan/nir/radv_nir_lower_fs_intrinsics.c | 2 +- src/amd/vulkan/radv_shader.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/nir/radv_nir_lower_fs_intrinsics.c b/src/amd/vulkan/nir/radv_nir_lower_fs_intrinsics.c index 3a377933295..0789fdcba80 100644 --- a/src/amd/vulkan/nir/radv_nir_lower_fs_intrinsics.c +++ b/src/amd/vulkan/nir/radv_nir_lower_fs_intrinsics.c @@ -64,7 +64,7 @@ pass(nir_builder *b, nir_intrinsic_instr *intrin, void *data) nir_def *mul = nir_bcsel(b, cond, nir_imm_float(b, 0.0625f), nir_imm_float(b, -0.0)); /* adjusted_frag_z = dFdxFine(frag_z) * 0.0625 + frag_z */ - frag_z = nir_ffma_old(b, nir_ddx_fine(b, frag_z), mul, frag_z); + frag_z = nir_ffma_weak(b, nir_ddx_fine(b, frag_z), mul, frag_z); nir_def_rewrite_uses_after(&intrin->def, frag_z); diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index f75196c2937..5fef711a5c1 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -63,6 +63,11 @@ get_nir_options_for_stage(struct radv_compiler_info *compiler_info, mesa_shader_ options->lower_ffma16 = split_fma || compiler_info->ac->gfx_level < GFX9; options->lower_ffma32 = split_fma || compiler_info->ac->gfx_level < GFX10_3; options->lower_ffma64 = split_fma; + if (split_fma) { + options->float_mul_add16 |= nir_float_muladd_support_prefers_split; + options->float_mul_add32 |= nir_float_muladd_support_prefers_split; + options->float_mul_add64 |= nir_float_muladd_support_prefers_split; + } options->max_unroll_iterations = 32; options->max_unroll_iterations_aggressive = 128; options->lower_doubles_options = nir_lower_drcp | nir_lower_dsqrt | nir_lower_drsq | nir_lower_ddiv;