-
Paul Berry authored
All of the GLSL specs from GLSL 1.30 (and GLSL ES 3.00) onward contain language requiring certain integer variables to be declared with the "flat" keyword, but they differ in exactly *when* the rule is enforced: (a) GLSL 1.30 and 1.40 say that vertex shader outputs having integral type must be declared as "flat". There is no restriction on fragment shader inputs. (b) GLSL 1.50 through 4.30 say that fragment shader inputs having integral type must be declared as "flat". There is no restriction on vertex shader outputs. (c) GLSL ES 3.00 says that both vertex shader outputs and fragment shader inputs having integral type must be declared as "flat". Previously, Piglit simply checked for behaviour (a). This patch makes it check for behaviour (b) in desktop GL and behaviour (c) in GLES. Rationale: once geometry shader support is included, (b) is the only sensible choice, because it requires "flat" in just the situations where it matters. Since many implementations extend geometry shader support back before GLSL 1.50 (via ARB_geometry_shader4), it seems sensible to regard the difference between (a) and (b) as a bug fix rather than a deliberate behavioural difference, and therefore test for behaviour (b) even in GLSL 1.30. Some discussion about this has already happened on the Mesa-dev list. See: http://lists.freedesktop.org/archives/mesa-dev/2013-February/034199.html Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
0fac0a62