summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2010-09-01 15:04:57 -0700
committerKenneth Graunke <kenneth@whitecape.org>2010-09-01 18:57:50 -0700
commit550237eedd772487151565f64384d35c1bf695a6 (patch)
tree674d428a3b5ba5e275f2c2614cae2da8fd5b12dd
parentee88c4664016b11359c391cc62296bcbfcc5decd (diff)
ast_function: Fix check for "too few components".
This was triggering even for matrix-from-matrix constructors. It is perfectly legal to construct a mat3 from a mat2 - the rest will be filled in by the identity matrix. Changes piglit test constructor-23.vert from FAIL to PASS, but the generated code is incorrect.
-rw-r--r--src/glsl/ast_function.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp
index d7d1b3eeb7..0c9f890038 100644
--- a/src/glsl/ast_function.cpp
+++ b/src/glsl/ast_function.cpp
@@ -1151,7 +1151,8 @@ ast_function_expression::hir(exec_list *instructions,
* arguments to provide an initializer for every component in the
* constructed value."
*/
- if ((components_used < type_components) && (components_used != 1)) {
+ if (components_used < type_components && components_used != 1
+ && matrix_parameters == 0) {
_mesa_glsl_error(& loc, state, "too few components to construct "
"`%s'",
constructor_type->name);