diff options
author | Danylo Piliaiev <dpiliaiev@igalia.com> | 2022-02-01 14:32:02 +0200 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-02-01 17:02:36 +0000 |
commit | f917c735288835a18b8aba799b8e48acc75bdcf9 (patch) | |
tree | c643ccfa19a770807c9ff6b879af520da5465d74 /src | |
parent | 0248644c8930c493a81d757c8f9943f75c310753 (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.c | 1 |
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; |