Mesa (master): spirv: Use a dereference instead of vtn_variable_resource_index

Jason Ekstrand jekstrand at kemper.freedesktop.org
Wed Dec 6 06:02:43 UTC 2017


Module: Mesa
Branch: master
Commit: 91d91ce3e24f198f2f5b88c22e3186a22334295e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=91d91ce3e24f198f2f5b88c22e3186a22334295e

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Wed Oct 18 16:33:32 2017 -0700

spirv: Use a dereference instead of vtn_variable_resource_index

This is equivalent and means we don't have resource index code scattered
about.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>

---

 src/compiler/spirv/vtn_variables.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index c0db46d55a..08428a2823 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -1495,11 +1495,9 @@ vtn_pointer_to_ssa(struct vtn_builder *b, struct vtn_pointer *ptr)
    vtn_assert(ptr->ptr_type);
    vtn_assert(ptr->ptr_type->type);
 
-   if (ptr->offset && ptr->block_index) {
-      return nir_vec2(&b->nb, ptr->block_index, ptr->offset);
-   } else {
-      /* If we don't have an offset or block index, then we must be a pointer
-       * to the variable itself.
+   if (!ptr->offset || !ptr->block_index) {
+      /* If we don't have an offset then we must be a pointer to the variable
+       * itself.
        */
       vtn_assert(!ptr->offset && !ptr->block_index);
 
@@ -1509,9 +1507,14 @@ vtn_pointer_to_ssa(struct vtn_builder *b, struct vtn_pointer *ptr)
        */
       vtn_assert(ptr->var && ptr->var->type->base_type == vtn_base_type_struct);
 
-      return nir_vec2(&b->nb, vtn_variable_resource_index(b, ptr->var, NULL),
-                              nir_imm_int(&b->nb, 0));
+      struct vtn_access_chain chain = {
+         .length = 0,
+      };
+      ptr = vtn_ssa_offset_pointer_dereference(b, ptr, &chain);
    }
+
+   vtn_assert(ptr->offset && ptr->block_index);
+   return nir_vec2(&b->nb, ptr->block_index, ptr->offset);
 }
 
 struct vtn_pointer *




More information about the mesa-commit mailing list