[Mesa-dev] [PATCH 25/28] glsl: move packed varying creation code to a helper

Timothy Arceri timothy.arceri at collabora.com
Mon Dec 28 21:00:25 PST 2015


This will also be used by tessellation packing code
in a following patch.
---
 src/glsl/lower_packed_varyings.cpp | 45 +++++++++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 15 deletions(-)

diff --git a/src/glsl/lower_packed_varyings.cpp b/src/glsl/lower_packed_varyings.cpp
index 08d6447..b606cc8 100644
--- a/src/glsl/lower_packed_varyings.cpp
+++ b/src/glsl/lower_packed_varyings.cpp
@@ -180,6 +180,31 @@ needs_lowering(ir_variable *var, bool has_enhanced_layouts,
    return true;
 }
 
+static ir_variable *
+create_packed_var(void * const mem_ctx, const char *packed_name,
+                  const glsl_type *packed_type, ir_variable *unpacked_var,
+                  ir_variable_mode mode, unsigned location,
+                  bool is_outer_array_vert_idx)
+{
+   ir_variable *packed_var = new(mem_ctx)
+      ir_variable(packed_type, packed_name, mode);
+   if (is_outer_array_vert_idx) {
+      /* Prevent update_array_sizes() from messing with the size of the
+       * array.
+       */
+      packed_var->data.max_array_access = unpacked_var->type->length - 1;
+   }
+   packed_var->data.centroid = unpacked_var->data.centroid;
+   packed_var->data.sample = unpacked_var->data.sample;
+   packed_var->data.patch = unpacked_var->data.patch;
+   packed_var->data.interpolation = unpacked_var->data.interpolation;
+   packed_var->data.location = location;
+   packed_var->data.precision = unpacked_var->data.precision;
+   packed_var->data.always_active_io = unpacked_var->data.always_active_io;
+
+   return packed_var;
+}
+
 namespace {
 
 /**
@@ -665,21 +690,11 @@ lower_packed_varyings_visitor::get_packed_varying_deref(
             glsl_type::get_array_instance(packed_type,
                                           unpacked_var->type->length);
       }
-      ir_variable *packed_var = new(this->mem_ctx)
-         ir_variable(packed_type, packed_name, this->mode);
-      if (this->is_outer_array_vert_idx) {
-         /* Prevent update_array_sizes() from messing with the size of the
-          * array.
-          */
-         packed_var->data.max_array_access = unpacked_var->type->length - 1;
-      }
-      packed_var->data.centroid = unpacked_var->data.centroid;
-      packed_var->data.sample = unpacked_var->data.sample;
-      packed_var->data.patch = unpacked_var->data.patch;
-      packed_var->data.interpolation = unpacked_var->data.interpolation;
-      packed_var->data.location = location;
-      packed_var->data.precision = unpacked_var->data.precision;
-      packed_var->data.always_active_io = unpacked_var->data.always_active_io;
+
+      ir_variable *packed_var =
+         create_packed_var(mem_ctx, packed_name, packed_type, unpacked_var,
+                           this->mode, location,
+                           this->is_outer_array_vert_idx);
       unpacked_var->insert_before(packed_var);
       this->packed_varyings[slot] = packed_var;
    } else {
-- 
2.4.3



More information about the mesa-dev mailing list