From: Paul Berry Date: Sat, 28 Sep 2013 18:00:26 +0000 (-0700) Subject: glsl: Account for location field when comparing interface blocks. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6a157f2e3345faf23041eaefb47183a6debacb6b;p=mesa.git 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 --- 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;