This commit moves them both into vtn_variables.c towards the top, makes them take a vtn_builder, and replaces a hand-rolled instance of is_external_block with a function call. --- src/compiler/spirv/vtn_private.h | 7 ------- src/compiler/spirv/vtn_variables.c | 35 +++++++++++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/src/compiler/spirv/vtn_private.h b/src/compiler/spirv/vtn_private.h index 6110b6f..63bebe3 100644 --- a/src/compiler/spirv/vtn_private.h +++ b/src/compiler/spirv/vtn_private.h @@ -372,13 +372,6 @@ struct vtn_pointer { struct nir_ssa_def *offset; }; -static inline bool -vtn_pointer_uses_ssa_offset(struct vtn_pointer *ptr) -{ - return ptr->mode == vtn_variable_mode_ubo || - ptr->mode == vtn_variable_mode_ssbo; -} - struct vtn_variable { enum vtn_variable_mode mode; diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c index 6a7cba4..b135b03 100644 --- a/src/compiler/spirv/vtn_variables.c +++ b/src/compiler/spirv/vtn_variables.c @@ -57,6 +57,23 @@ vtn_access_chain_extend(struct vtn_builder *b, struct vtn_access_chain *old, return chain; } +static bool +vtn_pointer_uses_ssa_offset(struct vtn_builder *b, + struct vtn_pointer *ptr) +{ + return ptr->mode == vtn_variable_mode_ubo || + ptr->mode == vtn_variable_mode_ssbo; +} + +static bool +vtn_pointer_is_external_block(struct vtn_builder *b, + struct vtn_pointer *ptr) +{ + return ptr->mode == vtn_variable_mode_ssbo || + ptr->mode == vtn_variable_mode_ubo || + ptr->mode == vtn_variable_mode_push_constant; +} + /* Dereference the given base pointer by the access chain */ static struct vtn_pointer * vtn_access_chain_pointer_dereference(struct vtn_builder *b, @@ -236,7 +253,7 @@ vtn_pointer_dereference(struct vtn_builder *b, struct vtn_pointer *base, struct vtn_access_chain *deref_chain) { - if (vtn_pointer_uses_ssa_offset(base)) { + if (vtn_pointer_uses_ssa_offset(b, base)) { return vtn_ssa_offset_pointer_dereference(b, base, deref_chain); } else { return vtn_access_chain_pointer_dereference(b, base, deref_chain); @@ -873,14 +890,6 @@ vtn_block_store(struct vtn_builder *b, struct vtn_ssa_value *src, 0, 0, dst->chain, chain_idx, dst->type, &src); } -static bool -vtn_pointer_is_external_block(struct vtn_pointer *ptr) -{ - return ptr->mode == vtn_variable_mode_ssbo || - ptr->mode == vtn_variable_mode_ubo || - ptr->mode == vtn_variable_mode_push_constant; -} - static void _vtn_variable_load_store(struct vtn_builder *b, bool load, struct vtn_pointer *ptr, @@ -940,7 +949,7 @@ _vtn_variable_load_store(struct vtn_builder *b, bool load, struct vtn_ssa_value * vtn_variable_load(struct vtn_builder *b, struct vtn_pointer *src) { - if (vtn_pointer_is_external_block(src)) { + if (vtn_pointer_is_external_block(b, src)) { return vtn_block_load(b, src); } else { struct vtn_ssa_value *val = NULL; @@ -953,7 +962,7 @@ void vtn_variable_store(struct vtn_builder *b, struct vtn_ssa_value *src, struct vtn_pointer *dest) { - if (vtn_pointer_is_external_block(dest)) { + if (vtn_pointer_is_external_block(b, dest)) { assert(dest->mode == vtn_variable_mode_ssbo); vtn_block_store(b, src, dest); } else { @@ -1761,9 +1770,7 @@ vtn_create_variable(struct vtn_builder *b, struct vtn_value *val, nir_shader_add_variable(b->shader, var->members[i]); } } else { - assert(var->mode == vtn_variable_mode_ubo || - var->mode == vtn_variable_mode_ssbo || - var->mode == vtn_variable_mode_push_constant); + assert(vtn_pointer_is_external_block(b, val->pointer)); } } -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev