summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ast_to_hir.cpp8
-rw-r--r--glsl_types.h13
2 files changed, 13 insertions, 8 deletions
diff --git a/ast_to_hir.cpp b/ast_to_hir.cpp
index 1de5824591..5811d73586 100644
--- a/ast_to_hir.cpp
+++ b/ast_to_hir.cpp
@@ -169,14 +169,14 @@ arithmetic_result_type(const struct glsl_type *type_a,
* more detail how vectors and matrices are operated on."
*/
if (! multiply) {
- if (is_glsl_type_matrix(type_a) && is_glsl_type_matrix(type_b)
+ if (type_a->is_matrix() && type_b->is_matrix()
&& (type_a->vector_elements == type_b->vector_elements)
&& (type_a->matrix_rows == type_b->matrix_rows))
return type_a;
else
return glsl_error_type;
} else {
- if (is_glsl_type_matrix(type_a) && is_glsl_type_matrix(type_b)) {
+ if (type_a->is_matrix() && type_b->is_matrix()) {
if (type_a->vector_elements == type_b->matrix_rows) {
char type_name[7];
const struct glsl_type *t;
@@ -199,14 +199,14 @@ arithmetic_result_type(const struct glsl_type *type_a,
_mesa_symbol_table_find_symbol(state->symbols, 0, type_name);
return (t != NULL) ? t : glsl_error_type;
}
- } else if (is_glsl_type_matrix(type_a)) {
+ } else if (type_a->is_matrix()) {
/* A is a matrix and B is a column vector. Columns of A must match
* rows of B.
*/
if (type_a->vector_elements == type_b->vector_elements)
return type_b;
} else {
- assert(is_glsl_type_matrix(type_b));
+ assert(type_b->is_matrix());
/* A is a row vector and B is a matrix. Columns of A must match
* rows of B.
diff --git a/glsl_types.h b/glsl_types.h
index 2b660168bd..f26dcd6b53 100644
--- a/glsl_types.h
+++ b/glsl_types.h
@@ -156,11 +156,16 @@ struct glsl_type {
&& (base_type >= GLSL_TYPE_UINT)
&& (base_type <= GLSL_TYPE_BOOL);
}
-};
-#define is_glsl_type_matrix(t) \
- (((t)->matrix_rows > 0) \
- && ((t)->base_type == GLSL_TYPE_FLOAT)) /* GLSL only has float matrices. */
+ /**
+ * Query whether or not a type is a matrix
+ */
+ bool is_matrix() const
+ {
+ /* GLSL only has float matrices. */
+ return (matrix_rows > 0) && (base_type == GLSL_TYPE_FLOAT);
+ }
+};
struct glsl_struct_field {
const struct glsl_type *type;