Replace several field comparisons with a single pointer comparison

The only way the specified type fields can match is if the types are the
same.  Previous tests (and assertions) have filtered away all other possible
cases.
This commit is contained in:
Ian Romanick
2010-03-24 17:53:53 -07:00
parent 532edd9bc4
commit 664da2510a

View File

@@ -151,10 +151,7 @@ arithmetic_result_type(const struct glsl_type *type_a,
* vector." * vector."
*/ */
if (type_a->is_vector() && type_b->is_vector()) { if (type_a->is_vector() && type_b->is_vector()) {
if (type_a->vector_elements == type_b->vector_elements) return (type_a == type_b) ? type_a : glsl_error_type;
return type_a;
else
return glsl_error_type;
} }
/* All of the combinations of <scalar, scalar>, <vector, scalar>, /* All of the combinations of <scalar, scalar>, <vector, scalar>,
@@ -183,12 +180,7 @@ arithmetic_result_type(const struct glsl_type *type_a,
* more detail how vectors and matrices are operated on." * more detail how vectors and matrices are operated on."
*/ */
if (! multiply) { if (! multiply) {
if (type_a->is_matrix() && type_b->is_matrix() return (type_a == type_b) ? type_a : glsl_error_type;
&& (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 { } else {
if (type_a->is_matrix() && type_b->is_matrix()) { if (type_a->is_matrix() && type_b->is_matrix()) {
if (type_a->vector_elements == type_b->matrix_rows) { if (type_a->vector_elements == type_b->matrix_rows) {