From: Jason Ekstrand Date: Wed, 18 Oct 2017 23:33:32 +0000 (-0700) Subject: spirv: Use a dereference instead of vtn_variable_resource_index X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=91d91ce3e24f198f2f5b88c22e3186a22334295e;p=mesa.git 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 Reviewed-by: Kristian H. Kristensen --- diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c index c0db46d55a0..08428a2823f 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 *