i965/nir: Add new utility method brw_glsl_base_type_for_nir_type()
authorEduardo Lima Mitev <elima@igalia.com>
Wed, 17 Jun 2015 08:59:10 +0000 (10:59 +0200)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 3 Aug 2015 16:40:50 +0000 (09:40 -0700)
This method returns the glsl_base_type corresponding to a nir_alu_type.
It will factorize code currently present in fs_nir, that can be reused
in vec4_nir on its upcoming emit_texture support.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/mesa/drivers/dri/i965/brw_fs_nir.cpp
src/mesa/drivers/dri/i965/brw_nir.c
src/mesa/drivers/dri/i965/brw_nir.h

index b51fe0e5eba559209cb0db90d58a767ec9c73993..e922a85573c86c2d1fa1a8e362b961ed84c4aeda 100644 (file)
@@ -1699,20 +1699,8 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr)
       }
    }
 
-   enum glsl_base_type dest_base_type;
-   switch (instr->dest_type) {
-   case nir_type_float:
-      dest_base_type = GLSL_TYPE_FLOAT;
-      break;
-   case nir_type_int:
-      dest_base_type = GLSL_TYPE_INT;
-      break;
-   case nir_type_unsigned:
-      dest_base_type = GLSL_TYPE_UINT;
-      break;
-   default:
-      unreachable("bad type");
-   }
+   enum glsl_base_type dest_base_type =
+     brw_glsl_base_type_for_nir_type (instr->dest_type);
 
    const glsl_type *dest_type =
       glsl_type::get_instance(dest_base_type, nir_tex_instr_dest_size(instr),
index beb7d6912c8aa1aa0799dbfd43c55cda60244b9a..49d174225464e1e164a123a76f2386a4b9d2b6cb 100644 (file)
@@ -216,3 +216,24 @@ brw_type_for_nir_type(nir_alu_type type)
 
    return BRW_REGISTER_TYPE_F;
 }
+
+/* Returns the glsl_base_type corresponding to a nir_alu_type.
+ * This is used by both brw_vec4_nir and brw_fs_nir.
+ */
+enum glsl_base_type
+brw_glsl_base_type_for_nir_type(nir_alu_type type)
+{
+   switch (type) {
+   case nir_type_float:
+      return GLSL_TYPE_FLOAT;
+
+   case nir_type_int:
+      return GLSL_TYPE_INT;
+
+   case nir_type_unsigned:
+      return GLSL_TYPE_UINT;
+
+   default:
+      unreachable("bad type");
+   }
+}
index 6152321521ba2e5c2c32f595dc6b6dacc5d98e3d..ad712930536e54aac6879fba5973ede8f86e10ac 100644 (file)
@@ -83,6 +83,8 @@ nir_shader *brw_create_nir(struct brw_context *brw,
 
 enum brw_reg_type brw_type_for_nir_type(nir_alu_type type);
 
+enum glsl_base_type brw_glsl_base_type_for_nir_type(nir_alu_type type);
+
 #ifdef __cplusplus
 }
 #endif