summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <[email protected]>2019-01-06 12:34:24 +0100
committerBas Nieuwenhuizen <[email protected]>2019-01-08 01:30:03 +0100
commit70ed049cc6a682fba084cf57e06728fa5934881b (patch)
tree1d51c6fdfc7e3458014ef707a17fb33693d0fa67
parent3cc940277a45285d9932ed62398d7a54d2afffb8 (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.c4
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);