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: a45b6fb452 "spirv: Pass SSA values through functions"
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109204
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user