Mesa (main): ir3: opt_deref in opt loop to remove unnecessary tex casts

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Feb 1 17:40:33 UTC 2022


Module: Mesa
Branch: main
Commit: f917c735288835a18b8aba799b8e48acc75bdcf9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f917c735288835a18b8aba799b8e48acc75bdcf9

Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date:   Tue Feb  1 14:32:02 2022 +0200

ir3: opt_deref in opt loop to remove unnecessary tex casts

Otherwise we may be left with such casts:

 vec1 32 ssa_72 = deref_var &shadow_map (uniform sampler2D)
 vec1 32 ssa_73 = deref_cast (texture2D *)ssa_72 (uniform texture2D)
 vec1 32 ssa_74 = deref_cast (sampler *)ssa_72 (uniform sampler)
 vec1 32 ssa_76 = (float32)tex ssa_73 (texture_deref), ssa_74 (sampler_deref), ssa_75 (coord), ssa_64 (comparator)

And crash in ycbcr lowering since we aren't able to follow deref chain.

Fixes crash in GFXBench Aztec Ruins Vulkan tests.
See issue: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5945

Cc: mesa-stable

Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14819>

---

 src/freedreno/ir3/ir3_nir.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/freedreno/ir3/ir3_nir.c b/src/freedreno/ir3/ir3_nir.c
index 331576db804..25029dc2c99 100644
--- a/src/freedreno/ir3/ir3_nir.c
+++ b/src/freedreno/ir3/ir3_nir.c
@@ -87,6 +87,7 @@ ir3_optimize_loop(struct ir3_compiler *compiler, nir_shader *s)
       progress |= OPT(s, nir_lower_phis_to_scalar, false);
 
       progress |= OPT(s, nir_copy_prop);
+      progress |= OPT(s, nir_opt_deref);
       progress |= OPT(s, nir_opt_dce);
       progress |= OPT(s, nir_opt_cse);
       static int gcm = -1;



More information about the mesa-commit mailing list