nir/glsl: set cast mode for image during function inlining

Fixes: d681cf96fb ("nir/glsl: set deref cast mode during function inlining")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11980

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31554>
This commit is contained in:
Timothy Arceri 2024-10-08 11:59:02 +11:00 committed by Marge Bot
parent b0a378374b
commit 46facf9037

View file

@ -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) {