diff options
author | Bas Nieuwenhuizen <[email protected]> | 2019-01-06 12:34:24 +0100 |
---|---|---|
committer | Bas Nieuwenhuizen <[email protected]> | 2019-01-08 01:30:03 +0100 |
commit | 70ed049cc6a682fba084cf57e06728fa5934881b (patch) | |
tree | 1d51c6fdfc7e3458014ef707a17fb33693d0fa67 | |
parent | 3cc940277a45285d9932ed62398d7a54d2afffb8 (diff) |
spirv: Fix matrix parameters in function calls.
They can be handled exactly the same as arrays, we just need to handle
the base type correctly in the switches.
Fixes: a45b6fb4524 "spirv: Pass SSA values through functions"
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109204
Reviewed-by: Jason Ekstrand <[email protected]>
Reviewed-by: Samuel Pitoiset <[email protected]>
-rw-r--r-- | src/compiler/spirv/vtn_cfg.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c index 726f717e8d5..6406f4911df 100644 --- a/src/compiler/spirv/vtn_cfg.c +++ b/src/compiler/spirv/vtn_cfg.c @@ -47,6 +47,7 @@ vtn_type_count_function_params(struct vtn_type *type) { switch (type->base_type) { case vtn_base_type_array: + case vtn_base_type_matrix: return type->length * vtn_type_count_function_params(type->array_element); case vtn_base_type_struct: { @@ -76,6 +77,7 @@ vtn_type_add_to_function_params(struct vtn_type *type, switch (type->base_type) { case vtn_base_type_array: + case vtn_base_type_matrix: for (unsigned i = 0; i < type->length; i++) vtn_type_add_to_function_params(type->array_element, func, param_idx); break; @@ -123,6 +125,7 @@ vtn_ssa_value_add_to_call_params(struct vtn_builder *b, { switch (type->base_type) { case vtn_base_type_array: + case vtn_base_type_matrix: for (unsigned i = 0; i < type->length; i++) { vtn_ssa_value_add_to_call_params(b, value->elems[i], type->array_element, @@ -152,6 +155,7 @@ vtn_ssa_value_load_function_param(struct vtn_builder *b, { switch (type->base_type) { case vtn_base_type_array: + case vtn_base_type_matrix: for (unsigned i = 0; i < type->length; i++) { vtn_ssa_value_load_function_param(b, value->elems[i], type->array_element, param_idx); |