summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Berry <stereotype441@gmail.com>2013-04-09 10:37:16 -0700
committerPaul Berry <stereotype441@gmail.com>2013-04-09 10:37:16 -0700
commit5306af211372c10bb05a3f8d09e6986a76677524 (patch)
tree20337c06c2159c519b62a14fbe2762ffe76ad318
parent32d2b2aa2c784d9f37de21e0ed973e5ee1edb658 (diff)
glsl/linker: Reduce scope of non-flat integer varying fix.
In the mailing list discussion of "glsl/linker: fix varying packing for non-flat integer varyings." (commit 7862bde), we concluded that since the bug only applies to integral variables, it is safer to just apply the bug fix to integer varyings. I forgot to make the change before pushing the patch upstream. (Note: we aren't aware of any bugs in commit 7862bde; it just seems wise to be on the safe side). This patch makes the change. Assuming commit 7862bde gets cherry-picked back to 9.1, this commit should be cherry-picked too. NOTE: This is a candidate for the 9.1 release branch.
-rw-r--r--src/glsl/link_varyings.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/glsl/link_varyings.cpp b/src/glsl/link_varyings.cpp
index 7e90bebbc37..f911f62d111 100644
--- a/src/glsl/link_varyings.cpp
+++ b/src/glsl/link_varyings.cpp
@@ -676,12 +676,11 @@ varying_matches::record(ir_variable *producer_var, ir_variable *consumer_var)
return;
}
- if (consumer_var == NULL || !consumer_is_fs) {
+ if ((consumer_var == NULL && producer_var->type->contains_integer()) ||
+ !consumer_is_fs) {
/* Since this varying is not being consumed by the fragment shader, its
* interpolation type varying cannot possibly affect rendering. Also,
- * since the GL spec only requires integer varyings to be "flat" when
- * they are fragment shader inputs, it is possible that this variable is
- * non-flat and is (or contains) an integer.
+ * this variable is non-flat and is (or contains) an integer.
*
* lower_packed_varyings requires all integer varyings to flat,
* regardless of where they appear. We can trivially satisfy that