diff options
author | Caio Marcelo de Oliveira Filho <[email protected]> | 2019-05-02 22:11:31 -0700 |
---|---|---|
committer | Caio Marcelo de Oliveira Filho <[email protected]> | 2019-05-20 10:53:38 -0700 |
commit | 192daf68a4358a3a24767d1f6733e8ed8e8d8390 (patch) | |
tree | 68ffbbc8763feab5abc30242ab5dbfb93f71e299 | |
parent | f9336751bc0c0977b26a58faa13ce37fd0bd5b08 (diff) |
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 <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
-rw-r--r-- | src/compiler/spirv/vtn_private.h | 11 | ||||
-rw-r--r-- | 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); } |