From: Caio Marcelo de Oliveira Filho Date: Fri, 3 May 2019 05:11:31 +0000 (-0700) Subject: spirv: Add vtn_mode_uses_ssa_offset() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=192daf68a4358a3a24767d1f6733e8ed8e8d8390;p=mesa.git spirv: Add vtn_mode_uses_ssa_offset() Just the mode is needed to decide whether SSA offsets are needed, so make a function that takes that and reuse it for vtn_pointer_uses_ssa_offset(). This will be used for constant null pointers, that won't have a vtn_pointer handy. Reviewed-by: Jason Ekstrand Reviewed-by: Bas Nieuwenhuizen --- diff --git a/src/compiler/spirv/vtn_private.h b/src/compiler/spirv/vtn_private.h index 9fb508734a2..55cd0c2786c 100644 --- a/src/compiler/spirv/vtn_private.h +++ b/src/compiler/spirv/vtn_private.h @@ -473,8 +473,15 @@ struct vtn_pointer { enum gl_access_qualifier access; }; -bool vtn_pointer_uses_ssa_offset(struct vtn_builder *b, - struct vtn_pointer *ptr); +bool vtn_mode_uses_ssa_offset(struct vtn_builder *b, + enum vtn_variable_mode mode); + +static inline bool vtn_pointer_uses_ssa_offset(struct vtn_builder *b, + struct vtn_pointer *ptr) +{ + return vtn_mode_uses_ssa_offset(b, ptr->mode); +} + 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 bc6b0ebedcc..0d7a6b54766 100644 --- a/src/compiler/spirv/vtn_variables.c +++ b/src/compiler/spirv/vtn_variables.c @@ -45,14 +45,14 @@ vtn_access_chain_create(struct vtn_builder *b, unsigned length) } bool -vtn_pointer_uses_ssa_offset(struct vtn_builder *b, - struct vtn_pointer *ptr) +vtn_mode_uses_ssa_offset(struct vtn_builder *b, + enum vtn_variable_mode mode) { - return ((ptr->mode == vtn_variable_mode_ubo || - ptr->mode == vtn_variable_mode_ssbo) && + return ((mode == vtn_variable_mode_ubo || + mode == vtn_variable_mode_ssbo) && b->options->lower_ubo_ssbo_access_to_offsets) || - ptr->mode == vtn_variable_mode_push_constant || - (ptr->mode == vtn_variable_mode_workgroup && + mode == vtn_variable_mode_push_constant || + (mode == vtn_variable_mode_workgroup && b->options->lower_workgroup_access_to_offsets); }