From 0297f1021a962314cf6ebafcc16c0ff048e23171 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 9 May 2016 15:21:25 +0200 Subject: [PATCH] i965/vec4: handle doubles in type_size_vec4() The scalar backend uses this to check URB input sizes. v2: Removed redundant break after return (Curro) Reviewed-by: Kenneth Graunke Reviewed-by: Francisco Jerez --- src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index 507f2ee73cf..f73d6782528 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -587,15 +587,18 @@ type_size_vec4(const struct glsl_type *type) case GLSL_TYPE_INT: case GLSL_TYPE_FLOAT: case GLSL_TYPE_BOOL: + case GLSL_TYPE_DOUBLE: if (type->is_matrix()) { - return type->matrix_columns; + const glsl_type *col_type = type->column_type(); + unsigned col_slots = col_type->is_dual_slot_double() ? 2 : 1; + return type->matrix_columns * col_slots; } else { - /* Regardless of size of vector, it gets a vec4. This is bad - * packing for things like floats, but otherwise arrays become a - * mess. Hopefully a later pass over the code can pack scalars - * down if appropriate. - */ - return 1; + /* Regardless of size of vector, it gets a vec4. This is bad + * packing for things like floats, but otherwise arrays become a + * mess. Hopefully a later pass over the code can pack scalars + * down if appropriate. + */ + return type->is_dual_slot_double() ? 2 : 1; } case GLSL_TYPE_ARRAY: assert(type->length > 0); @@ -619,7 +622,6 @@ type_size_vec4(const struct glsl_type *type) case GLSL_TYPE_IMAGE: return DIV_ROUND_UP(BRW_IMAGE_PARAM_SIZE, 4); case GLSL_TYPE_VOID: - case GLSL_TYPE_DOUBLE: case GLSL_TYPE_ERROR: case GLSL_TYPE_INTERFACE: case GLSL_TYPE_FUNCTION: -- 2.30.2