[Mesa-dev] [PATCH 09/18] nir/spirv: Remove unneeded parameters from pointer_to_offset
Jason Ekstrand
jason at jlekstrand.net
Thu Jun 29 17:33:31 UTC 2017
Everyone now calls it with stop_at_matrix = false. Since we're now
always walking all the way to the end of the access chain, the type
returned is just the same as ptr->type;
---
src/compiler/spirv/spirv_to_nir.c | 3 +--
src/compiler/spirv/vtn_private.h | 3 +--
src/compiler/spirv/vtn_variables.c | 21 ++++++---------------
3 files changed, 8 insertions(+), 19 deletions(-)
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 72a8904..3d9ef76 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -2173,8 +2173,7 @@ vtn_handle_ssbo_or_shared_atomic(struct vtn_builder *b, SpvOp opcode,
} else {
assert(ptr->mode == vtn_variable_mode_ssbo);
nir_ssa_def *offset, *index;
- struct vtn_type *type;
- offset = vtn_pointer_to_offset(b, ptr, &index, &type, NULL, false);
+ offset = vtn_pointer_to_offset(b, ptr, &index, NULL);
nir_intrinsic_op op = get_ssbo_nir_atomic_op(opcode);
diff --git a/src/compiler/spirv/vtn_private.h b/src/compiler/spirv/vtn_private.h
index d5963f2..fb2d669 100644
--- a/src/compiler/spirv/vtn_private.h
+++ b/src/compiler/spirv/vtn_private.h
@@ -476,8 +476,7 @@ nir_deref_var *vtn_pointer_to_deref(struct vtn_builder *b,
struct vtn_pointer *ptr);
nir_ssa_def *
vtn_pointer_to_offset(struct vtn_builder *b, struct vtn_pointer *ptr,
- nir_ssa_def **index_out, struct vtn_type **type_out,
- unsigned *end_idx_out, bool stop_at_matrix);
+ nir_ssa_def **index_out, unsigned *end_idx_out);
struct vtn_ssa_value *vtn_local_load(struct vtn_builder *b, nir_deref_var *src);
diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index 480bc36..7821663 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -327,8 +327,7 @@ get_vulkan_resource_index(struct vtn_builder *b, struct vtn_pointer *ptr,
nir_ssa_def *
vtn_pointer_to_offset(struct vtn_builder *b, struct vtn_pointer *ptr,
- nir_ssa_def **index_out, struct vtn_type **type_out,
- unsigned *end_idx_out, bool stop_at_matrix)
+ nir_ssa_def **index_out, unsigned *end_idx_out)
{
unsigned idx = 0;
struct vtn_type *type;
@@ -345,11 +344,6 @@ vtn_pointer_to_offset(struct vtn_builder *b, struct vtn_pointer *ptr,
case GLSL_TYPE_FLOAT:
case GLSL_TYPE_DOUBLE:
case GLSL_TYPE_BOOL:
- /* Some users may not want matrix or vector derefs */
- if (stop_at_matrix)
- goto end;
- /* Fall through */
-
case GLSL_TYPE_ARRAY:
offset = nir_iadd(&b->nb, offset,
vtn_access_link_as_ssa(b, ptr->chain->link[idx],
@@ -372,8 +366,7 @@ vtn_pointer_to_offset(struct vtn_builder *b, struct vtn_pointer *ptr,
}
}
-end:
- *type_out = type;
+ assert(type == ptr->type);
if (end_idx_out)
*end_idx_out = idx;
@@ -658,13 +651,12 @@ vtn_block_load(struct vtn_builder *b, struct vtn_pointer *src)
nir_ssa_def *offset, *index = NULL;
unsigned chain_idx;
- struct vtn_type *type;
- offset = vtn_pointer_to_offset(b, src, &index, &type, &chain_idx, false);
+ offset = vtn_pointer_to_offset(b, src, &index, &chain_idx);
struct vtn_ssa_value *value = NULL;
_vtn_block_load_store(b, op, true, index, offset,
access_offset, access_size,
- src->chain, chain_idx, type, &value);
+ src->chain, chain_idx, src->type, &value);
return value;
}
@@ -674,11 +666,10 @@ vtn_block_store(struct vtn_builder *b, struct vtn_ssa_value *src,
{
nir_ssa_def *offset, *index = NULL;
unsigned chain_idx;
- struct vtn_type *type;
- offset = vtn_pointer_to_offset(b, dst, &index, &type, &chain_idx, false);
+ offset = vtn_pointer_to_offset(b, dst, &index, &chain_idx);
_vtn_block_load_store(b, nir_intrinsic_store_ssbo, false, index, offset,
- 0, 0, dst->chain, chain_idx, type, &src);
+ 0, 0, dst->chain, chain_idx, dst->type, &src);
}
static bool
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list