From 46facf903778dfb2ae530cbb2cf4d1f660d467dd Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Tue, 8 Oct 2024 11:59:02 +1100 Subject: [PATCH] nir/glsl: set cast mode for image during function inlining MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: d681cf96fbf9 ("nir/glsl: set deref cast mode during function inlining") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11980 Reviewed-by: Marek Olšák Part-of: --- src/compiler/nir/nir_functions.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/compiler/nir/nir_functions.c b/src/compiler/nir/nir_functions.c index 9f3cc5eea68..4423ef593d1 100644 --- a/src/compiler/nir/nir_functions.c +++ b/src/compiler/nir/nir_functions.c @@ -62,9 +62,14 @@ static void fixup_cast_deref_mode(nir_deref_instr *deref) { nir_deref_instr *parent = nir_src_as_deref(deref->parent); - if (parent && parent->modes & nir_var_uniform && - deref->modes & nir_var_function_temp) { - deref->modes |= nir_var_uniform; + if (parent && deref->modes & nir_var_function_temp) { + if (parent->modes & nir_var_uniform) { + deref->modes |= nir_var_uniform; + } else if (parent->modes & nir_var_image) { + deref->modes |= nir_var_image; + } else + return; + deref->modes ^= nir_var_function_temp; nir_foreach_use(use, &deref->def) {