summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Berry <stereotype441@gmail.com>2013-04-06 10:33:25 -0700
committerIan Romanick <ian.d.romanick@intel.com>2013-05-10 16:41:29 -0700
commit0b2fa0eec697732817b08392e35879bb98da38a2 (patch)
treedd6b7b17860d22c93b8c6408aee72ffedebe538f
parentbd8d257ef3a81613efa7cb37823eea148d09831c (diff)
glsl: Document lower_packed_varyings' "flat" requirement with an assert.
To minimize the variety of type conversions that lower_packed_varyings needs to perform, it assumes that integral varyings are always qualified as "flat". link_varyings.cpp takes care of ensuring that this is the case (even in the circumstances where GLSL doesn't require it). This patch documents the assumption with an assertion, for ease in future debugging. Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> (cherry picked from commit 8687c40c2dde6cd64f67396333765f6aa9c82f6a)
-rw-r--r--src/glsl/lower_packed_varyings.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/glsl/lower_packed_varyings.cpp b/src/glsl/lower_packed_varyings.cpp
index 8a40f5e72e5..b64e896d922 100644
--- a/src/glsl/lower_packed_varyings.cpp
+++ b/src/glsl/lower_packed_varyings.cpp
@@ -178,6 +178,14 @@ lower_packed_varyings_visitor::run(exec_list *instructions)
!this->needs_lowering(var))
continue;
+ /* This lowering pass is only capable of packing floats and ints
+ * together when their interpolation mode is "flat". Therefore, to be
+ * safe, caller should ensure that integral varyings always use flat
+ * interpolation, even when this is not required by GLSL.
+ */
+ assert(var->interpolation == INTERP_QUALIFIER_FLAT ||
+ !var->type->contains_integer());
+
/* Change the old varying into an ordinary global. */
var->mode = ir_var_auto;