nir: add 16bit type information to glsl types
authorDaniel Schürmann <daniel.schuermann@campus.tu-berlin.de>
Tue, 6 Feb 2018 17:53:33 +0000 (18:53 +0100)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Mon, 23 Jul 2018 21:16:25 +0000 (23:16 +0200)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/compiler/glsl_types.h
src/compiler/nir_types.cpp
src/compiler/nir_types.h

index efc6324865620a6a9bbfb89033754b5abdce67bc..d32b580acc1e5c7035885860b363b4ff8527381c 100644 (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
     */
index 6f1182b742c718df3c02a8527137db0e6726b616..3a3864414f332ce698f89f22b87663d3fa3618d7 100644 (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()");
    }
index c128250c7d3f3ba9231e6a0a011d4121f8f9eb55..817b7a9b3459288ff6f9ae92362a6228ba440657 100644 (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);