On 05/08/2012 01:55 AM, Olivier Galibert wrote:
diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp index baf23b6..61c0ae6 100644 --- a/src/glsl/ir_constant_expression.cpp +++ b/src/glsl/ir_constant_expression.cpp @@ -641,13 +641,13 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) for (unsigned c = 0; c< op[0]->type->components(); c++) { switch (op[0]->type->base_type) { case GLSL_TYPE_UINT: - data.b[0] = op[0]->value.u[0]< op[1]->value.u[0]; + data.b[c] = op[0]->value.u[c]< op[1]->value.u[c]; break; case GLSL_TYPE_INT: - data.b[0] = op[0]->value.i[0]< op[1]->value.i[0]; + data.b[c] = op[0]->value.i[c]< op[1]->value.i[c]; break; case GLSL_TYPE_FLOAT: - data.b[0] = op[0]->value.f[0]< op[1]->value.f[0]; + data.b[c] = op[0]->value.f[c]< op[1]->value.f[c]; break; default: assert(0); @@ -677,13 +677,13 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) for (unsigned c = 0; c< op[0]->type->components(); c++) { switch (op[0]->type->base_type) { case GLSL_TYPE_UINT: - data.b[0] = op[0]->value.u[0]<= op[1]->value.u[0]; + data.b[c] = op[0]->value.u[c]<= op[1]->value.u[c]; break; case GLSL_TYPE_INT: - data.b[0] = op[0]->value.i[0]<= op[1]->value.i[0]; + data.b[c] = op[0]->value.i[c]<= op[1]->value.i[c]; break; case GLSL_TYPE_FLOAT: - data.b[0] = op[0]->value.f[0]<= op[1]->value.f[0]; + data.b[c] = op[0]->value.f[c]<= op[1]->value.f[c]; break; default: assert(0); @@ -695,13 +695,13 @@ ir_expression::constant_expression_value(struct hash_table *variable_context) for (unsigned c = 0; c< op[0]->type->components(); c++) { switch (op[0]->type->base_type) { case GLSL_TYPE_UINT: - data.b[0] = op[0]->value.u[0]>= op[1]->value.u[0]; + data.b[c] = op[0]->value.u[c]>= op[1]->value.u[c]; break; case GLSL_TYPE_INT: - data.b[0] = op[0]->value.i[0]>= op[1]->value.i[0]; + data.b[c] = op[0]->value.i[c]>= op[1]->value.i[c]; break; case GLSL_TYPE_FLOAT: - data.b[0] = op[0]->value.f[0]>= op[1]->value.f[0]; + data.b[c] = op[0]->value.f[c]>= op[1]->value.f[c]; break; default: assert(0);
Whoops. I actually just wrote this patch before seeing your message. :) I've pushed the equivalent patch, only I reordered it before your changes so it can easily be cherry-picked back to stable branches and to avoid introducing a regression.
Thanks for finding this! _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev