From 1529f38086fc568c4c9872d29bf7bfd3f240afa8 Mon Sep 17 00:00:00 2001 From: Vitaliy Triang3l Kuzmin Date: Sat, 5 Jul 2025 15:22:07 +0300 Subject: [PATCH] r600/sfn: Fix scratch layout calculation for composite types Signed-off-by: Vitaliy Triang3l Kuzmin Part-of: --- src/gallium/drivers/r600/sfn/sfn_nir.cpp | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_nir.cpp b/src/gallium/drivers/r600/sfn/sfn_nir.cpp index 677f3cf8b15..1dac69b95f4 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_nir.cpp @@ -409,19 +409,12 @@ r600_glsl_type_size(const struct glsl_type *type, bool is_bindless) } void -r600_get_natural_size_align_bytes(const struct glsl_type *type, - unsigned *size, - unsigned *align) +r600_get_scratch_size_align(const struct glsl_type *type, + unsigned *size, + unsigned *align) { - if (type->base_type != GLSL_TYPE_ARRAY) { - *align = 1; - *size = 1; - } else { - unsigned elem_size, elem_align; - glsl_get_natural_size_align_bytes(type->fields.array, &elem_size, &elem_align); - *align = 1; - *size = type->length; - } + *size = glsl_count_vec4_slots(type, false, false); + *align = 1; } static bool @@ -977,8 +970,8 @@ r600_lower_and_optimize_nir(nir_shader *sh, nir_lower_vars_to_scratch, nir_var_function_temp, 40, - r600_get_natural_size_align_bytes, - r600_get_natural_size_align_bytes); + r600_get_scratch_size_align, + r600_get_scratch_size_align); while (optimize_once(sh)) ;