diff options
author | Jason Ekstrand <[email protected]> | 2017-10-18 17:38:57 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-12-05 20:56:16 -0800 |
commit | 6dffef6308200d90a983301444e6952223616444 (patch) | |
tree | b1425d2cd453d586290d227d44b128e4069c28aa | |
parent | 93646fb503342ecac3e5df247b90c15ca65c1e0a (diff) |
spirv: Refactor a couple of pointer query helpers
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.
Reviewed-by: Kenneth Graunke <[email protected]>
Reviewed-by: Kristian H. Kristensen <[email protected]>
-rw-r--r-- | src/compiler/spirv/vtn_private.h | 7 | ||||
-rw-r--r-- | 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 8efa9193015..0f92a74ec84 100644 --- a/src/compiler/spirv/vtn_private.h +++ b/src/compiler/spirv/vtn_private.h @@ -428,13 +428,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 c5a13c3bd34..4c76ec6b5c1 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); @@ -875,14 +892,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, @@ -942,7 +951,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; @@ -955,7 +964,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)) { vtn_assert(dest->mode == vtn_variable_mode_ssbo); vtn_block_store(b, src, dest); } else { @@ -1764,9 +1773,7 @@ vtn_create_variable(struct vtn_builder *b, struct vtn_value *val, nir_shader_add_variable(b->shader, var->members[i]); } } else { - vtn_assert(var->mode == vtn_variable_mode_ubo || - var->mode == vtn_variable_mode_ssbo || - var->mode == vtn_variable_mode_push_constant); + vtn_assert(vtn_pointer_is_external_block(b, val->pointer)); } } |