summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTapani Pälli <[email protected]>2014-09-16 20:18:41 +0300
committerTapani Pälli <[email protected]>2014-10-07 08:28:51 +0300
commit16b53005a7df4249fecb6641af0934c32181fdea (patch)
tree8712cd3dbb822a0d5724150117e0584286cafa4d
parentbe0a994fb8689131bf6a717c1e6fa5a42c3d4657 (diff)
glsl: do not emit error for non written varyings on OpenGL ES
Patch fixes following test case from 'shaders-with-varyings' WebGL conformance suite: "vertex shader with unused varying and fragment shader with used varying must succeed" v2: emit still a warning if the condition happens (Ian) Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r--src/glsl/link_varyings.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/glsl/link_varyings.cpp b/src/glsl/link_varyings.cpp
index a738e2f3825..1866ab265f2 100644
--- a/src/glsl/link_varyings.cpp
+++ b/src/glsl/link_varyings.cpp
@@ -1456,7 +1456,22 @@ assign_varying_locations(struct gl_context *ctx,
if (var && var->data.mode == ir_var_shader_in &&
var->data.is_unmatched_generic_inout) {
- if (prog->Version <= 120) {
+ if (prog->IsES) {
+ /*
+ * On Page 91 (Page 97 of the PDF) of the GLSL ES 1.0 spec:
+ *
+ * If the vertex shader declares but doesn't write to a
+ * varying and the fragment shader declares and reads it,
+ * is this an error?
+ *
+ * RESOLUTION: No.
+ */
+ linker_warning(prog, "%s shader varying %s not written "
+ "by %s shader\n.",
+ _mesa_shader_stage_to_string(consumer->Stage),
+ var->name,
+ _mesa_shader_stage_to_string(producer->Stage));
+ } else if (prog->Version <= 120) {
/* On page 25 (page 31 of the PDF) of the GLSL 1.20 spec:
*
* Only those varying variables used (i.e. read) in
@@ -1469,7 +1484,6 @@ assign_varying_locations(struct gl_context *ctx,
* write the variable for the FS to read it. See
* "glsl1-varying read but not written" in piglit.
*/
-
linker_error(prog, "%s shader varying %s not written "
"by %s shader\n.",
_mesa_shader_stage_to_string(consumer->Stage),