i965: remove type_size_vec4_times_4()
authorTimothy Arceri <timothy.arceri@collabora.com>
Tue, 14 Jun 2016 04:39:16 +0000 (14:39 +1000)
committerTimothy Arceri <timothy.arceri@collabora.com>
Wed, 15 Jun 2016 05:01:10 +0000 (15:01 +1000)
type_size_vec4_times_4() was introduced as a fix in 8dcf807cb43383
however since 3810c1561 we can just use type_size_scalar() and
get the actual number of outputs we need.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs_nir.cpp
src/mesa/drivers/dri/i965/brw_nir.c
src/mesa/drivers/dri/i965/brw_shader.h

index 0347b0aa2431c74525926947478666a54f357a91..8774f2505cdc0eaa04c84943b73fc82ebb5114c3 100644 (file)
@@ -505,19 +505,6 @@ type_size_scalar(const struct glsl_type *type)
    return 0;
 }
 
-/**
- * Returns the number of scalar components needed to store type, assuming
- * that vectors are padded out to vec4.
- *
- * This has the packing rules of type_size_vec4(), but counts components
- * similar to type_size_scalar().
- */
-extern "C" int
-type_size_vec4_times_4(const struct glsl_type *type)
-{
-   return 4 * type_size_vec4(type);
-}
-
 /* Attribute arrays are loaded as one vec4 per element (or matrix column),
  * except for double-precision types, which are loaded as one dvec4.
  */
index a956f9d15c7c5b652c88d0bad5c8c4da43fb088f..b8119534b2b77f9b30e08641187d44a0ecc0e4d4 100644 (file)
@@ -108,7 +108,7 @@ fs_visitor::nir_setup_single_output_varying(fs_reg *reg,
       for (unsigned count = 0; count < num_elements; count += 4) {
          this->outputs[*location] = *reg;
          this->output_components[*location] = MIN2(4, num_elements - count);
-         *reg = offset(*reg, bld, 4);
+         *reg = offset(*reg, bld, this->output_components[*location]);
          (*location)++;
       }
    }
index e01f16006d19b9416accc98009d7a102d0de2875..d8cf12d30552d5c20c78bbdbd88d3bfcdb908e0d 100644 (file)
@@ -292,8 +292,8 @@ brw_nir_lower_vue_outputs(nir_shader *nir,
 {
    if (is_scalar) {
       nir_assign_var_locations(&nir->outputs, &nir->num_outputs,
-                               type_size_vec4_times_4);
-      nir_lower_io(nir, nir_var_shader_out, type_size_vec4_times_4);
+                               type_size_scalar);
+      nir_lower_io(nir, nir_var_shader_out, type_size_scalar);
    } else {
       nir_foreach_variable(var, &nir->outputs)
          var->data.driver_location = var->data.location;
index 656dc89c25d15f893f6f873d15a9c00259505d1e..9300f20b253453bfdbef5f4fd36ac2b5338128ca 100644 (file)
@@ -294,7 +294,6 @@ struct gl_shader *brw_new_shader(struct gl_context *ctx, GLuint name, GLuint typ
 int type_size_scalar(const struct glsl_type *type);
 int type_size_vec4(const struct glsl_type *type);
 int type_size_dvec4(const struct glsl_type *type);
-int type_size_vec4_times_4(const struct glsl_type *type);
 int type_size_vs_input(const struct glsl_type *type);
 
 unsigned tesslevel_outer_components(GLenum tes_primitive_mode);