mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-19 12:20:40 +02:00
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:
parent
252127c379
commit
80b5ed6e63
1 changed files with 8 additions and 10 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue