From 17de0841ae70acd23e18586cad517e63cb7471c4 Mon Sep 17 00:00:00 2001 From: M Henning Date: Thu, 18 Nov 2021 01:08:43 -0500 Subject: [PATCH] nouveau/nir: Use natural alignment for scalars We used to request vec4 alignment for everything on the nir codepath, but this triggers an assertion failure since a0b82c24b6, which prohibits vec4 alignment on scalars. Since requiring vec4 alignment on scalars is a little silly anyway, this patch relaxes the alignment to naturally aligned for scalars. Fixes about 27 crashing tests in piglit and deqp on kepler, including eg piglit/tests/spec/glsl-1.30/execution/fs-large-local-array.shader_test Reviewed-by: Karol Herbst Part-of: --- .../drivers/nouveau/codegen/nv50_ir_from_nir.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp index ff835fdb773..487a1e49b47 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp @@ -64,11 +64,15 @@ function_temp_type_info(const struct glsl_type *type, unsigned *size, unsigned * { assert(glsl_type_is_vector_or_scalar(type)); - unsigned comp_size = glsl_type_is_boolean(type) ? 4 : glsl_get_bit_size(type) / 8; - unsigned length = glsl_get_vector_elements(type); + if (glsl_type_is_scalar(type)) { + glsl_get_natural_size_align_bytes(type, size, align); + } else { + unsigned comp_size = glsl_type_is_boolean(type) ? 4 : glsl_get_bit_size(type) / 8; + unsigned length = glsl_get_vector_elements(type); - *size = comp_size * length; - *align = 0x10; + *size = comp_size * length; + *align = 0x10; + } } class Converter : public ConverterCommon