Module: Mesa
Branch: master
Commit: 87989339a0d350b19b23b916af7886d3dd689ad3
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=87989339a0d350b19b23b916af7886d3dd689ad3

Author: Daniel Schürmann <[email protected]>
Date:   Tue Feb  6 18:53:33 2018 +0100

nir: add 16bit type information to glsl types

Reviewed-by: Bas Nieuwenhuizen <[email protected]>

---

 src/compiler/glsl_types.h  | 15 +++++++++++++++
 src/compiler/nir_types.cpp | 12 ++++++++++++
 src/compiler/nir_types.h   |  1 +
 3 files changed, 28 insertions(+)

diff --git a/src/compiler/glsl_types.h b/src/compiler/glsl_types.h
index efc6324865..d32b580acc 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 6f1182b742..3a3864414f 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 c128250c7d..817b7a9b34 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);

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to