From 6a157f2e3345faf23041eaefb47183a6debacb6b Mon Sep 17 00:00:00 2001 From: Paul Berry Date: Sat, 28 Sep 2013 11:00:26 -0700 Subject: [PATCH] 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 Reviewed-by: Ian Romanick --- src/glsl/glsl_types.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp index c4c04fe32ec..80a6e71a721 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; -- 2.30.2