Mesa (main): mesa/st: Check deref modes in lower_builtin_instr

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri May 13 23:17:31 UTC 2022


Module: Mesa
Branch: main
Commit: 46a49df7b6f8dac13ddb1e929c3fbdd41c91594f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=46a49df7b6f8dac13ddb1e929c3fbdd41c91594f

Author: Jason Ekstrand <jason.ekstrand at collabora.com>
Date:   Thu May 12 14:07:30 2022 -0500

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 <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16482>

---

 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;
 



More information about the mesa-commit mailing list