From 7938ce4af3ac6fba99826f41f7f9d5f1386fc22c Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Wed, 11 May 2022 17:33:11 -0700 Subject: [PATCH] freedreno/ir3: Lower texture instructions used only for f2f16 to 16-bit. 2.5% improvement in gfxbench vk-5-normal. No obvious change on gl-5-normal. shader-db on Rob's android shaders: total instructions in shared programs: 770644 -> 770595 (<.01%) instructions in affected programs: 14880 -> 14831 (-0.33%) total nops in shared programs: 167784 -> 167860 (0.05%) nops in affected programs: 3351 -> 3427 (2.27%) total non-nops in shared programs: 602860 -> 602735 (-0.02%) non-nops in affected programs: 10523 -> 10398 (-1.19%) total mov in shared programs: 19313 -> 19286 (-0.14%) mov in affected programs: 365 -> 338 (-7.40%) total cov in shared programs: 18075 -> 17978 (-0.54%) cov in affected programs: 566 -> 469 (-17.14%) total dwords in shared programs: 1612848 -> 1612596 (-0.02%) dwords in affected programs: 13882 -> 13630 (-1.82%) total last-baryf in shared programs: 56144 -> 55975 (-0.30%) last-baryf in affected programs: 482 -> 313 (-35.06%) total full in shared programs: 36094 -> 36092 (<.01%) full in affected programs: 10 -> 8 (-20.00%) total sstall in shared programs: 66986 -> 66923 (-0.09%) sstall in affected programs: 1392 -> 1329 (-4.53%) total systall in shared programs: 91244 -> 91072 (-0.19%) systall in affected programs: 1194 -> 1022 (-14.41%) total (sy) in shared programs: 4316 -> 4321 (0.12%) (sy) in affected programs: 19 -> 24 (26.32%) Reviewed-by: Matt Turner Part-of: --- src/freedreno/ir3/ir3_nir.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/freedreno/ir3/ir3_nir.c b/src/freedreno/ir3/ir3_nir.c index 8ce844af77a..8ca723900f2 100644 --- a/src/freedreno/ir3/ir3_nir.c +++ b/src/freedreno/ir3/ir3_nir.c @@ -696,6 +696,8 @@ ir3_nir_lower_variant(struct ir3_shader_variant *so, nir_shader *s) bool more_late_algebraic = true; while (more_late_algebraic) { more_late_algebraic = OPT(s, nir_opt_algebraic_late); + if (!more_late_algebraic) + OPT(s, nir_fold_16bit_sampler_conversions, 0, ~0); OPT_V(s, nir_opt_constant_folding); OPT_V(s, nir_copy_prop); OPT_V(s, nir_opt_dce);