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 <kenneth@whitecape.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
Iago Toral Quiroga 2016-05-09 15:21:25 +02:00 committed by Samuel Iglesias Gonsálvez
parent 8c6d147373
commit 0297f1021a
1 changed files with 10 additions and 8 deletions

View File

@ -587,15 +587,18 @@ type_size_vec4(const struct glsl_type *type)
case GLSL_TYPE_INT: case GLSL_TYPE_INT:
case GLSL_TYPE_FLOAT: case GLSL_TYPE_FLOAT:
case GLSL_TYPE_BOOL: case GLSL_TYPE_BOOL:
case GLSL_TYPE_DOUBLE:
if (type->is_matrix()) { 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 { } else {
/* Regardless of size of vector, it gets a vec4. This is bad /* Regardless of size of vector, it gets a vec4. This is bad
* packing for things like floats, but otherwise arrays become a * packing for things like floats, but otherwise arrays become a
* mess. Hopefully a later pass over the code can pack scalars * mess. Hopefully a later pass over the code can pack scalars
* down if appropriate. * down if appropriate.
*/ */
return 1; return type->is_dual_slot_double() ? 2 : 1;
} }
case GLSL_TYPE_ARRAY: case GLSL_TYPE_ARRAY:
assert(type->length > 0); assert(type->length > 0);
@ -619,7 +622,6 @@ type_size_vec4(const struct glsl_type *type)
case GLSL_TYPE_IMAGE: case GLSL_TYPE_IMAGE:
return DIV_ROUND_UP(BRW_IMAGE_PARAM_SIZE, 4); return DIV_ROUND_UP(BRW_IMAGE_PARAM_SIZE, 4);
case GLSL_TYPE_VOID: case GLSL_TYPE_VOID:
case GLSL_TYPE_DOUBLE:
case GLSL_TYPE_ERROR: case GLSL_TYPE_ERROR:
case GLSL_TYPE_INTERFACE: case GLSL_TYPE_INTERFACE:
case GLSL_TYPE_FUNCTION: case GLSL_TYPE_FUNCTION: