diff options
author | Paul Berry <stereotype441@gmail.com> | 2013-09-28 11:00:26 -0700 |
---|---|---|
committer | Paul Berry <stereotype441@gmail.com> | 2013-10-10 14:27:03 -0700 |
commit | 6a157f2e3345faf23041eaefb47183a6debacb6b (patch) | |
tree | 0c5ee43dcf10c2e1b2f27156cd599b135b9cc2c2 | |
parent | 5a234d92af2467f6a224e2aee966257656e5af80 (diff) |
glsl: Account for location field when comparing interface blocks.
In commit e2660770731b018411fbe1620cacddaf8dff5287 (glsl: Keep track
of location for interface block fields), I neglected to update
glsl_type::record_key_compare to account for the fact that interface
types now contain location information. As a result, interface types
that differ only by their location information would not be properly
distinguished.
At the moment this is not a problem, because the only interface block
in which location information != -1 is gl_PerVertex, and gl_PerVertex
is always created in the same way. However, in the patches that
follow, we'll be adding new ways to create gl_PerVertex (by
redeclaring it), so we'll need location information to be handled
properly.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
-rw-r--r-- | src/glsl/glsl_types.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp index c4c04fe32e..80a6e71a72 100644 --- a/src/glsl/glsl_types.cpp +++ b/src/glsl/glsl_types.cpp @@ -452,6 +452,9 @@ glsl_type::record_key_compare(const void *a, const void *b) if (key1->fields.structure[i].row_major != key2->fields.structure[i].row_major) return 1; + if (key1->fields.structure[i].location + != key2->fields.structure[i].location) + return 1; } return 0; |