Module: Mesa
Branch: master
Commit: f4f30ad730b7dafaadafda63344012203543894c
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f4f30ad730b7dafaadafda63344012203543894c

Author: Tapani Pälli <tapani.pa...@intel.com>
Date:   Mon Nov 16 08:43:12 2015 +0200

mesa: do runtime validation of precision varyings only on ES

Precision qualifier should be ignored on desktop OpenGL.

v2: include spec quote (Samuel)

Signed-off-by: Tapani Pälli <tapani.pa...@intel.com>
Reviewed-by: Samuel Iglesias Gonsálvez <sigles...@igalia.com>

---

 src/mesa/main/shader_query.cpp |   16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp
index 58ba041..14f849e 100644
--- a/src/mesa/main/shader_query.cpp
+++ b/src/mesa/main/shader_query.cpp
@@ -1413,9 +1413,19 @@ _mesa_validate_pipeline_io(struct gl_pipeline_object 
*pipeline)
 
    for (idx = prev + 1; idx < ARRAY_SIZE(pipeline->CurrentProgram); idx++) {
       if (shProg[idx]) {
-         if (!validate_io(shProg[prev]->_LinkedShaders[prev],
-                          shProg[idx]->_LinkedShaders[idx]))
-            return false;
+         /* Since we now only validate precision, we can skip this step for
+          * desktop GLSL shaders, there precision qualifier is ignored.
+          *
+          * From OpenGL 4.50 Shading Language spec, section 4.7:
+          *     "For the purposes of determining if an output from one shader
+          *     stage matches an input of the next stage, the precision
+          *     qualifier need not match."
+          */
+         if (shProg[prev]->IsES || shProg[idx]->IsES) {
+            if (!validate_io(shProg[prev]->_LinkedShaders[prev],
+                             shProg[idx]->_LinkedShaders[idx]))
+               return false;
+         }
          prev = idx;
       }
    }

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to