Replace several glsl_type field comparisons with a single pointer comparison
This simplifies the process of matching function parameter types. More simplifications are probably possible here, but arrays and structures need to be implemented first.
This commit is contained in:
+8
-10
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user