Does this fix something in the remaining OpenGL ES 3.1 CTS failures? If not I think we should think about this more, how can we move this (maybe just partially) to happen already during UseProgramStages, it feels too expensive for draw time.

FYI I'm working on to fix remaining SSO CTS failure(s), let me know if you are working on this as well. I have a partial fix here which I'm trying to rewrite to be cheaper (this is a bit similar case, too expensive):

http://cgit.freedesktop.org/~tpalli/mesa/log/?h=fix_sso


On 12/06/2015 06:33 AM, Timothy Arceri wrote:
This allows validation to be done on rendering calls also.

Fixes 3 dEQP-GLES31.functional.separate tests.

Cc: "11.1" <mesa-sta...@lists.freedesktop.org>
Cc: Tapani Pälli <tapani.pa...@intel.com>
Cc: Kenneth Graunke <kenn...@whitecape.org>
---
  src/mesa/main/pipelineobj.c | 30 +++++++++++++++---------------
  1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/mesa/main/pipelineobj.c b/src/mesa/main/pipelineobj.c
index 6710d0d..d8c9ded 100644
--- a/src/mesa/main/pipelineobj.c
+++ b/src/mesa/main/pipelineobj.c
@@ -898,6 +898,21 @@ _mesa_validate_program_pipeline(struct gl_context* ctx,
     if (!_mesa_sampler_uniforms_pipeline_are_valid(pipe))
        goto err;

+   /* Validate inputs against outputs, this cannot be done during linking
+    * since programs have been linked separately from each other.
+    *
+    * From OpenGL 4.5 Core spec:
+    *     "Separable program objects may have validation failures that cannot 
be
+    *     detected without the complete program pipeline. Mismatched 
interfaces,
+    *     improper usage of program objects together, and the same
+    *     state-dependent failures can result in validation errors for such
+    *     program objects."
+    *
+    * OpenGL ES 3.1 specification has the same text.
+    */
+   if (!_mesa_validate_pipeline_io(pipe))
+      goto err;
+
     pipe->Validated = GL_TRUE;
     return GL_TRUE;

@@ -933,21 +948,6 @@ _mesa_ValidateProgramPipeline(GLuint pipeline)
      * false for IsBound to avoid an error being thrown.
      */
     _mesa_validate_program_pipeline(ctx, pipe, false);
-
-   /* Validate inputs against outputs, this cannot be done during linking
-    * since programs have been linked separately from each other.
-    *
-    * From OpenGL 4.5 Core spec:
-    *     "Separable program objects may have validation failures that cannot 
be
-    *     detected without the complete program pipeline. Mismatched 
interfaces,
-    *     improper usage of program objects together, and the same
-    *     state-dependent failures can result in validation errors for such
-    *     program objects."
-    *
-    * OpenGL ES 3.1 specification has the same text.
-    */
-   if (!_mesa_validate_pipeline_io(pipe))
-      pipe->Validated = GL_FALSE;
  }

  void GLAPIENTRY

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

Reply via email to