From 192daf68a4358a3a24767d1f6733e8ed8e8d8390 Mon Sep 17 00:00:00 2001 From: Caio Marcelo de Oliveira Filho Date: Thu, 2 May 2019 22:11:31 -0700 Subject: 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 --- src/compiler/spirv/vtn_private.h | 11 +++++++++-- src/compiler/spirv/vtn_variables.c | 12 ++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) 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); } -- cgit v1.2.3