summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDanylo Piliaiev <dpiliaiev@igalia.com>2022-02-01 14:32:02 +0200
committerMarge Bot <emma+marge@anholt.net>2022-02-01 17:02:36 +0000
commitf917c735288835a18b8aba799b8e48acc75bdcf9 (patch)
treec643ccfa19a770807c9ff6b879af520da5465d74 /src
parent0248644c8930c493a81d757c8f9943f75c310753 (diff)
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@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14819>
Diffstat (limited to 'src')
-rw-r--r--src/freedreno/ir3/ir3_nir.c1
1 files changed, 1 insertions, 0 deletions
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;