i965: Support for 16-bit base types in helper functions
v2: Fixed calculation of scalar size for 16-bit types. (Jason Ekstrand) v3: Fix coding style (Topi Pohjolainen) Signed-off-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com> Signed-off-by: Eduardo Lima <elima@igalia.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -454,6 +454,10 @@ type_size_scalar(const struct glsl_type *type)
|
||||
case GLSL_TYPE_FLOAT:
|
||||
case GLSL_TYPE_BOOL:
|
||||
return type->components();
|
||||
case GLSL_TYPE_UINT16:
|
||||
case GLSL_TYPE_INT16:
|
||||
case GLSL_TYPE_FLOAT16:
|
||||
return DIV_ROUND_UP(type->components(), 2);
|
||||
case GLSL_TYPE_DOUBLE:
|
||||
case GLSL_TYPE_UINT64:
|
||||
case GLSL_TYPE_INT64:
|
||||
|
@@ -843,12 +843,18 @@ brw_type_for_nir_type(const struct gen_device_info *devinfo, nir_alu_type type)
|
||||
case nir_type_float:
|
||||
case nir_type_float32:
|
||||
return BRW_REGISTER_TYPE_F;
|
||||
case nir_type_float16:
|
||||
return BRW_REGISTER_TYPE_HF;
|
||||
case nir_type_float64:
|
||||
return BRW_REGISTER_TYPE_DF;
|
||||
case nir_type_int64:
|
||||
return devinfo->gen < 8 ? BRW_REGISTER_TYPE_DF : BRW_REGISTER_TYPE_Q;
|
||||
case nir_type_uint64:
|
||||
return devinfo->gen < 8 ? BRW_REGISTER_TYPE_DF : BRW_REGISTER_TYPE_UQ;
|
||||
case nir_type_int16:
|
||||
return BRW_REGISTER_TYPE_W;
|
||||
case nir_type_uint16:
|
||||
return BRW_REGISTER_TYPE_UW;
|
||||
default:
|
||||
unreachable("unknown type");
|
||||
}
|
||||
@@ -867,6 +873,9 @@ brw_glsl_base_type_for_nir_type(nir_alu_type type)
|
||||
case nir_type_float32:
|
||||
return GLSL_TYPE_FLOAT;
|
||||
|
||||
case nir_type_float16:
|
||||
return GLSL_TYPE_FLOAT16;
|
||||
|
||||
case nir_type_float64:
|
||||
return GLSL_TYPE_DOUBLE;
|
||||
|
||||
@@ -878,6 +887,12 @@ brw_glsl_base_type_for_nir_type(nir_alu_type type)
|
||||
case nir_type_uint32:
|
||||
return GLSL_TYPE_UINT;
|
||||
|
||||
case nir_type_int16:
|
||||
return GLSL_TYPE_INT16;
|
||||
|
||||
case nir_type_uint16:
|
||||
return GLSL_TYPE_UINT16;
|
||||
|
||||
default:
|
||||
unreachable("bad type");
|
||||
}
|
||||
|
@@ -34,14 +34,20 @@ enum brw_reg_type
|
||||
brw_type_for_base_type(const struct glsl_type *type)
|
||||
{
|
||||
switch (type->base_type) {
|
||||
case GLSL_TYPE_FLOAT16:
|
||||
return BRW_REGISTER_TYPE_HF;
|
||||
case GLSL_TYPE_FLOAT:
|
||||
return BRW_REGISTER_TYPE_F;
|
||||
case GLSL_TYPE_INT:
|
||||
case GLSL_TYPE_BOOL:
|
||||
case GLSL_TYPE_SUBROUTINE:
|
||||
return BRW_REGISTER_TYPE_D;
|
||||
case GLSL_TYPE_INT16:
|
||||
return BRW_REGISTER_TYPE_W;
|
||||
case GLSL_TYPE_UINT:
|
||||
return BRW_REGISTER_TYPE_UD;
|
||||
case GLSL_TYPE_UINT16:
|
||||
return BRW_REGISTER_TYPE_UW;
|
||||
case GLSL_TYPE_ARRAY:
|
||||
return brw_type_for_base_type(type->fields.array);
|
||||
case GLSL_TYPE_STRUCT:
|
||||
|
Reference in New Issue
Block a user