From 406935c6fef2fff79ab3f2522661edd5f1b4fa69 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Wed, 25 Feb 2026 16:26:45 +0100 Subject: [PATCH] radv: use nir_opt_fp_math_ctrl Foz-DB Navi21: Totals from 10833 (9.63% of 112497) affected shaders: Instrs: 10090308 -> 10043030 (-0.47%); split: -0.48%, +0.01% CodeSize: 53681564 -> 53556756 (-0.23%); split: -0.25%, +0.01% VGPRs: 511568 -> 511296 (-0.05%); split: -0.08%, +0.03% SpillSGPRs: 2442 -> 2438 (-0.16%); split: -0.20%, +0.04% Latency: 58989785 -> 58935280 (-0.09%); split: -0.18%, +0.09% InvThroughput: 15142587 -> 15067217 (-0.50%); split: -0.52%, +0.02% VClause: 200588 -> 200410 (-0.09%); split: -0.20%, +0.11% SClause: 257273 -> 257262 (-0.00%); split: -0.20%, +0.19% Copies: 741430 -> 741397 (-0.00%); split: -0.22%, +0.22% Branches: 211023 -> 211020 (-0.00%); split: -0.00%, +0.00% PreSGPRs: 491752 -> 491663 (-0.02%); split: -0.02%, +0.00% PreVGPRs: 418558 -> 418089 (-0.11%); split: -0.12%, +0.01% VALU: 7064149 -> 7017847 (-0.66%); split: -0.66%, +0.01% SALU: 1227287 -> 1226639 (-0.05%); split: -0.13%, +0.07% SMEM: 449268 -> 449343 (+0.02%) Reviewed-by: Rhys Perry Part-of: --- src/amd/vulkan/radv_shader.c | 7 +++++++ src/gallium/drivers/zink/ci/traces-zink.yml | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 846c6b02158..7fd7d728cb2 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -178,6 +178,7 @@ radv_optimize_nir(struct nir_shader *shader, bool optimize_conservatively) bool progress; NIR_PASS(_, shader, nir_lower_alu_width, vectorize_vec2_16bit, NULL); + NIR_PASS(_, shader, nir_opt_fp_math_ctrl); struct set *skip = _mesa_pointer_set_create(NULL); do { @@ -242,6 +243,7 @@ void radv_optimize_nir_algebraic_early(nir_shader *nir) { bool more_algebraic = true; + bool had_opt_fp_math_ctrl = false; while (more_algebraic) { more_algebraic = false; NIR_PASS(_, nir, nir_opt_copy_prop); @@ -262,6 +264,11 @@ radv_optimize_nir_algebraic_early(nir_shader *nir) NIR_PASS(_, nir, nir_opt_generate_bfi); NIR_PASS(_, nir, nir_opt_remove_phis); NIR_PASS(_, nir, nir_opt_dead_cf); + + if (!had_opt_fp_math_ctrl) { + NIR_PASS(more_algebraic, nir, nir_opt_fp_math_ctrl); + had_opt_fp_math_ctrl = true; + } } } diff --git a/src/gallium/drivers/zink/ci/traces-zink.yml b/src/gallium/drivers/zink/ci/traces-zink.yml index 688015cefb3..39c9a552b90 100644 --- a/src/gallium/drivers/zink/ci/traces-zink.yml +++ b/src/gallium/drivers/zink/ci/traces-zink.yml @@ -326,9 +326,9 @@ traces: checksum: 0af2faa0d9183c1bc4dc7612befe1f0a text: "'egl_platform.cpp( 227) - Error - Couldn't find a suitable EGL config' -- revisit when we can turn on X11?" zink-radv-vangogh: - checksum: 266e348951137564b892c05e08a455a3 + checksum: 3353b921903f712b919135ebebe3827b zink-radv-gfx1201: - checksum: d130996efeab58bd36ca8697e91e2870 + checksum: 84e632818da5a55a4c67bb5c1ab5d473 supertuxkart/supertuxkart-menu.rdc: gl-zink-anv-adl: @@ -354,9 +354,9 @@ traces: checksum: ca0b64f1a62e01765146be8391eae636 text: "'egl_platform.cpp( 227) - Error - Couldn't find a suitable EGL config' -- revisit when we can turn on X11?" zink-radv-vangogh: - checksum: ef34ba1867b103799ac10552fbafbd36 + checksum: 1301e76c2fb69438e8cfb2f81dcc6611 zink-radv-gfx1201: - checksum: 6ec79e962e3dc370df851edc2bfd88d5 + checksum: f01f909e9af079efa388f275526f809f unvanquished/unvanquished-lowest.trace: gl-zink-anv-adl: