<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jul 13, 2017 at 7:35 AM, Alejandro Piñeiro <span dir="ltr"><<a href="mailto:apinheiro@igalia.com" target="_blank">apinheiro@igalia.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Eduardo Lima Mitev <<a href="mailto:elima@igalia.com">elima@igalia.com</a>><br>
<br>
Signed-off-by: Jose Maria Casanova Crespo <<a href="mailto:jmcasanova@igalia.com">jmcasanova@igalia.com</a>><br>
Signed-off-by: Eduardo Lima <<a href="mailto:elima@igalia.com">elima@igalia.com</a>><br>
---<br>
 src/compiler/nir/nir.c                  |  6 ++++++<br>
 src/compiler/nir/nir.h                  |  9 +++++++++<br>
 src/compiler/nir/nir_split_<wbr>var_copies.c |  6 ++++++<br>
 src/compiler/nir_types.cpp              | 18 ++++++++++++++++++<br>
 src/compiler/nir_types.h                |  8 ++++++++<br>
 5 files changed, 47 insertions(+)<br>
<br>
diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c<br>
index 491b908..9f8eefd 100644<br>
--- a/src/compiler/nir/nir.c<br>
+++ b/src/compiler/nir/nir.c<br>
@@ -700,10 +700,13 @@ deref_foreach_leaf_build_<wbr>recur(nir_deref_var *deref, nir_deref *tail,<br>
    assert(tail->child == NULL);<br>
    switch (glsl_get_base_type(tail-><wbr>type)) {<br>
    case GLSL_TYPE_UINT:<br>
+   case GLSL_TYPE_UINT16:<br>
    case GLSL_TYPE_UINT64:<br>
    case GLSL_TYPE_INT:<br>
+   case GLSL_TYPE_INT16:<br>
    case GLSL_TYPE_INT64:<br>
    case GLSL_TYPE_FLOAT:<br>
+   case GLSL_TYPE_HALF_FLOAT:<br>
    case GLSL_TYPE_DOUBLE:<br>
    case GLSL_TYPE_BOOL:<br>
       if (glsl_type_is_vector_or_<wbr>scalar(tail->type))<br>
@@ -848,7 +851,10 @@ nir_deref_get_const_<wbr>initializer_load(nir_shader *shader, nir_deref_var *deref)<br>
    case GLSL_TYPE_FLOAT:<br>
    case GLSL_TYPE_INT:<br>
    case GLSL_TYPE_UINT:<br>
+   case GLSL_TYPE_HALF_FLOAT:<br>
    case GLSL_TYPE_DOUBLE:<br>
+   case GLSL_TYPE_INT16:<br>
+   case GLSL_TYPE_UINT16:<br>
    case GLSL_TYPE_UINT64:<br>
    case GLSL_TYPE_INT64:<br>
    case GLSL_TYPE_BOOL:<br>
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h<br>
index c41b0dc..2ac5b1e 100644<br>
--- a/src/compiler/nir/nir.h<br>
+++ b/src/compiler/nir/nir.h<br>
@@ -701,6 +701,12 @@ nir_get_nir_type_for_glsl_<wbr>base_type(enum glsl_base_type base_type)<br>
    case GLSL_TYPE_INT:<br>
       return nir_type_int32;<br>
       break;<br>
+   case GLSL_TYPE_UINT16:<br>
+      return nir_type_uint16;<br>
+      break;<br>
+   case GLSL_TYPE_INT16:<br>
+      return nir_type_int16;<br>
+      break;<br>
    case GLSL_TYPE_UINT64:<br>
       return nir_type_uint64;<br>
       break;<br>
@@ -710,6 +716,9 @@ nir_get_nir_type_for_glsl_<wbr>base_type(enum glsl_base_type base_type)<br>
    case GLSL_TYPE_FLOAT:<br>
       return nir_type_float32;<br>
       break;<br>
+   case GLSL_TYPE_HALF_FLOAT:<br>
+      return nir_type_float16;<br>
+      break;<br>
    case GLSL_TYPE_DOUBLE:<br>
       return nir_type_float64;<br>
       break;<br>
diff --git a/src/compiler/nir/nir_split_<wbr>var_copies.c b/src/compiler/nir/nir_split_<wbr>var_copies.c<br>
index 15a185e..1ed9e81 100644<br>
--- a/src/compiler/nir/nir_split_<wbr>var_copies.c<br>
+++ b/src/compiler/nir/nir_split_<wbr>var_copies.c<br>
@@ -147,10 +147,13 @@ split_var_copy_instr(nir_<wbr>intrinsic_instr *old_copy,<br>
       break;<br>
<br>
    case GLSL_TYPE_UINT:<br>
+   case GLSL_TYPE_UINT16:<br>
    case GLSL_TYPE_UINT64:<br>
    case GLSL_TYPE_INT:<br>
+   case GLSL_TYPE_INT16:<br>
    case GLSL_TYPE_INT64:<br>
    case GLSL_TYPE_FLOAT:<br>
+   case GLSL_TYPE_HALF_FLOAT:<br>
    case GLSL_TYPE_DOUBLE:<br>
    case GLSL_TYPE_BOOL:<br>
       if (glsl_type_is_matrix(src_tail-<wbr>>type)) {<br>
@@ -229,6 +232,7 @@ split_var_copies_block(nir_<wbr>block *block, struct split_var_copies_state *state)<br>
          ralloc_steal(state->dead_ctx, instr);<br>
          break;<br>
       case GLSL_TYPE_FLOAT:<br>
+      case GLSL_TYPE_HALF_FLOAT:<br>
       case GLSL_TYPE_DOUBLE:<br>
          if (glsl_type_is_matrix(src_tail-<wbr>>type)) {<br>
             split_var_copy_instr(<wbr>intrinsic, dest_head, src_head,<br>
@@ -239,6 +243,8 @@ split_var_copies_block(nir_<wbr>block *block, struct split_var_copies_state *state)<br>
          break;<br>
       case GLSL_TYPE_INT:<br>
       case GLSL_TYPE_UINT:<br>
+      case GLSL_TYPE_INT16:<br>
+      case GLSL_TYPE_UINT16:<br>
       case GLSL_TYPE_INT64:<br>
       case GLSL_TYPE_UINT64:<br>
       case GLSL_TYPE_BOOL:<br>
diff --git a/src/compiler/nir_types.cpp b/src/compiler/nir_types.cpp<br>
index 25980b9..11524c2 100644<br>
--- a/src/compiler/nir_types.cpp<br>
+++ b/src/compiler/nir_types.cpp<br>
@@ -259,6 +259,12 @@ glsl_double_type(void)<br>
 }<br>
<br>
 const glsl_type *<br>
+glsl_half_float_type(void)<br></blockquote><div><br></div><div>This should be glsl_float16_t_type() to match glsl_type::float16_t_type.</div><div><br></div><div>Also, one could argue that these belong in the patch which adds 16-bit float types because nir_types.cpp isn't really a NIR thing anymore so much as it's a C wrapper around glsl_type.h.  That said, I don't care too much about what patch it's in.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+{<br>
+   return glsl_type::float16_t_type;<br>
+}<br>
+<br>
+const glsl_type *<br>
 glsl_vec_type(unsigned n)<br>
 {<br>
    return glsl_type::vec(n);<br>
@@ -301,6 +307,18 @@ glsl_uint64_t_type(void)<br>
 }<br>
<br>
 const glsl_type *<br>
+glsl_int16_t_type(void)<br>
+{<br>
+   return glsl_type::int16_t_type;<br>
+}<br>
+<br>
+const glsl_type *<br>
+glsl_uint16_t_type(void)<br>
+{<br>
+   return glsl_type::uint16_t_type;<br>
+}<br>
+<br>
+const glsl_type *<br>
 glsl_bool_type(void)<br>
 {<br>
    return glsl_type::bool_type;<br>
diff --git a/src/compiler/nir_types.h b/src/compiler/nir_types.h<br>
index 0c52bb9..220b35c 100644<br>
--- a/src/compiler/nir_types.h<br>
+++ b/src/compiler/nir_types.h<br>
@@ -92,6 +92,11 @@ glsl_get_bit_size(const struct glsl_type *type)<br>
    case GLSL_TYPE_SUBROUTINE:<br>
       return 32;<br>
<br>
+   case GLSL_TYPE_HALF_FLOAT:<br>
+   case GLSL_TYPE_UINT16:<br>
+   case GLSL_TYPE_INT16:<br>
+      return 16;<br>
+<br>
    case GLSL_TYPE_DOUBLE:<br>
    case GLSL_TYPE_INT64:<br>
    case GLSL_TYPE_UINT64:<br>
@@ -123,6 +128,7 @@ bool glsl_sampler_type_is_array(<wbr>const struct glsl_type *type);<br>
<br>
 const struct glsl_type *glsl_void_type(void);<br>
 const struct glsl_type *glsl_float_type(void);<br>
+const struct glsl_type *glsl_half_float_type(void);<br>
 const struct glsl_type *glsl_double_type(void);<br>
 const struct glsl_type *glsl_vec_type(unsigned n);<br>
 const struct glsl_type *glsl_dvec_type(unsigned n);<br>
@@ -131,6 +137,8 @@ const struct glsl_type *glsl_int_type(void);<br>
 const struct glsl_type *glsl_uint_type(void);<br>
 const struct glsl_type *glsl_int64_t_type(void);<br>
 const struct glsl_type *glsl_uint64_t_type(void);<br>
+const struct glsl_type *glsl_int16_t_type(void);<br>
+const struct glsl_type *glsl_uint16_t_type(void);<br>
 const struct glsl_type *glsl_bool_type(void);<br>
<br>
 const struct glsl_type *glsl_scalar_type(enum glsl_base_type base_type);<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.9.3<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>