nir: add 16bit type information to glsl types

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Daniel Schürmann 2018-02-06 18:53:33 +01:00 committed by Bas Nieuwenhuizen
parent 7e7ee82698
commit 87989339a0
3 changed files with 28 additions and 0 deletions

View file

@ -87,6 +87,13 @@ enum glsl_base_type {
GLSL_TYPE_ERROR
};
static inline bool glsl_base_type_is_16bit(enum glsl_base_type type)
{
return type == GLSL_TYPE_FLOAT16 ||
type == GLSL_TYPE_UINT16 ||
type == GLSL_TYPE_INT16;
}
static inline bool glsl_base_type_is_64bit(enum glsl_base_type type)
{
return type == GLSL_TYPE_DOUBLE ||
@ -551,6 +558,14 @@ public:
return glsl_base_type_is_64bit(base_type);
}
/**
* Query whether or not a type is 16-bit
*/
bool is_16bit() const
{
return glsl_base_type_is_16bit(base_type);
}
/**
* Query whether or not a type is a non-array boolean type
*/

View file

@ -164,6 +164,12 @@ glsl_get_record_location_offset(const struct glsl_type *type,
return type->record_location_offset(length);
}
bool
glsl_type_is_16bit(const glsl_type *type)
{
return type->is_16bit();
}
bool
glsl_type_is_64bit(const glsl_type *type)
{
@ -473,6 +479,12 @@ glsl_channel_type(const glsl_type *t)
return glsl_uint64_t_type();
case GLSL_TYPE_INT64:
return glsl_int64_t_type();
case GLSL_TYPE_FLOAT16:
return glsl_float16_t_type();
case GLSL_TYPE_UINT16:
return glsl_uint16_t_type();
case GLSL_TYPE_INT16:
return glsl_int16_t_type();
default:
unreachable("Unhandled base type glsl_channel_type()");
}

View file

@ -121,6 +121,7 @@ glsl_get_bit_size(const struct glsl_type *type)
return 0;
}
bool glsl_type_is_16bit(const struct glsl_type *type);
bool glsl_type_is_64bit(const struct glsl_type *type);
bool glsl_type_is_void(const struct glsl_type *type);
bool glsl_type_is_error(const struct glsl_type *type);