Mesa (master): glsl: Simplify generation of swizzle for vector constructors

Ian Romanick idr at kemper.freedesktop.org
Tue Nov 16 20:35:45 UTC 2010


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

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Mon Nov 15 13:41:06 2010 -0800

glsl: Simplify generation of swizzle for vector constructors

---

 src/glsl/ast_function.cpp |   11 +++++------
 1 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp
index e9e8d25..924e35a 100644
--- a/src/glsl/ast_function.cpp
+++ b/src/glsl/ast_function.cpp
@@ -577,18 +577,17 @@ emit_inline_vector_constructor(const glsl_type *type,
 
 	 const ir_constant *const c = param->as_constant();
 	 if (c == NULL) {
-	    /* Generate a swizzle in case rhs_components != rhs->type->vector_elements. */
-	    unsigned swiz[4] = { 0, 0, 0, 0 };
-	    for (unsigned i = 0; i < rhs_components; i++)
-	       swiz[i] = i;
-
 	    /* Mask of fields to be written in the assignment.
 	     */
 	    const unsigned write_mask = ((1U << rhs_components) - 1)
 	       << base_component;
 
 	    ir_dereference *lhs = new(ctx) ir_dereference_variable(var);
-	    ir_rvalue *rhs = new(ctx) ir_swizzle(param, swiz, rhs_components);
+
+	    /* Generate a swizzle so that LHS and RHS sizes match.
+	     */
+	    ir_rvalue *rhs =
+	       new(ctx) ir_swizzle(param, 0, 1, 2, 3, rhs_components);
 
 	    ir_instruction *inst =
 	       new(ctx) ir_assignment(lhs, rhs, NULL, write_mask);




More information about the mesa-commit mailing list