diff options
Diffstat (limited to 'ir_function.cpp')
-rw-r--r-- | ir_function.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/ir_function.cpp b/ir_function.cpp index a14b546bc6..1ff5b203cc 100644 --- a/ir_function.cpp +++ b/ir_function.cpp @@ -27,6 +27,11 @@ int type_compare(const glsl_type *a, const glsl_type *b) { + /* If the types are the same, they trivially match. + */ + if (a == b) + return 0; + switch (a->base_type) { case GLSL_TYPE_UINT: case GLSL_TYPE_INT: @@ -36,9 +41,6 @@ type_compare(const glsl_type *a, const glsl_type *b) || (a->matrix_rows != b->matrix_rows)) return -1; - if (a->base_type == b->base_type) - return 0; - /* There is no implicit conversion to or from bool. */ if ((a->base_type == GLSL_TYPE_BOOL) @@ -48,14 +50,10 @@ type_compare(const glsl_type *a, const glsl_type *b) return 1; case GLSL_TYPE_SAMPLER: - return ((a->sampler_dimensionality == b->sampler_dimensionality) - && (a->sampler_shadow == b->sampler_shadow) - && (a->sampler_array == b->sampler_array) - && (a->sampler_type == b->sampler_type)) - ? 0 : -1; - case GLSL_TYPE_STRUCT: - return (strcmp(a->name, b->name) == 0) ? 0 : -1; + /* Samplers and structures must match exactly. + */ + return -1; case GLSL_TYPE_ARRAY: if ((b->base_type != GLSL_TYPE_ARRAY) |