From 46a49df7b6f8dac13ddb1e929c3fbdd41c91594f Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 12 May 2022 14:07:30 -0500 Subject: [PATCH] mesa/st: Check deref modes in lower_builtin_instr This is a bit more robust and generally a better pattern as it works even in the presence of incomplete deref chains on non-uniform variable modes. Reviewed-by: Lionel Landwerlin Part-of: --- src/mesa/state_tracker/st_nir_lower_builtin.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mesa/state_tracker/st_nir_lower_builtin.c b/src/mesa/state_tracker/st_nir_lower_builtin.c index bf978766de9..87a16040ae6 100644 --- a/src/mesa/state_tracker/st_nir_lower_builtin.c +++ b/src/mesa/state_tracker/st_nir_lower_builtin.c @@ -166,12 +166,12 @@ lower_builtin_instr(nir_builder *b, nir_instr *instr, UNUSED void *_data) if (intrin->intrinsic != nir_intrinsic_load_deref) return false; - nir_variable *var = - nir_deref_instr_get_variable(nir_src_as_deref(intrin->src[0])); - if (var->data.mode != nir_var_uniform) + nir_deref_instr *deref = nir_src_as_deref(intrin->src[0]); + if (!nir_deref_mode_is(deref, nir_var_uniform)) return false; /* built-in's will always start with "gl_" */ + nir_variable *var = nir_deref_instr_get_variable(deref); if (strncmp(var->name, "gl_", 3) != 0) return false;