diff options
author | Daniel Schürmann <[email protected]> | 2018-02-06 18:53:33 +0100 |
---|---|---|
committer | Bas Nieuwenhuizen <[email protected]> | 2018-07-23 23:16:25 +0200 |
commit | 87989339a0d350b19b23b916af7886d3dd689ad3 (patch) | |
tree | 56674af95bef7882505b3a59af0db4a88c26937c /src/compiler | |
parent | 7e7ee82698247d8f93fe37775b99f4838b0247dd (diff) |
nir: add 16bit type information to glsl types
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/glsl_types.h | 15 | ||||
-rw-r--r-- | src/compiler/nir_types.cpp | 12 | ||||
-rw-r--r-- | src/compiler/nir_types.h | 1 |
3 files changed, 28 insertions, 0 deletions
diff --git a/src/compiler/glsl_types.h b/src/compiler/glsl_types.h index efc63248656..d32b580acc1 100644 --- a/src/compiler/glsl_types.h +++ b/src/compiler/glsl_types.h @@ -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 || @@ -552,6 +559,14 @@ public: } /** + * 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 */ bool is_boolean() const diff --git a/src/compiler/nir_types.cpp b/src/compiler/nir_types.cpp index 6f1182b742c..3a3864414f3 100644 --- a/src/compiler/nir_types.cpp +++ b/src/compiler/nir_types.cpp @@ -165,6 +165,12 @@ glsl_get_record_location_offset(const struct glsl_type *type, } bool +glsl_type_is_16bit(const glsl_type *type) +{ + return type->is_16bit(); +} + +bool glsl_type_is_64bit(const glsl_type *type) { return type->is_64bit(); @@ -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()"); } diff --git a/src/compiler/nir_types.h b/src/compiler/nir_types.h index c128250c7d3..817b7a9b345 100644 --- a/src/compiler/nir_types.h +++ b/src/compiler/nir_types.h @@ -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); |