mesa: move pipeline input/output validation inside _mesa_validate_program_pipeline()
authorTimothy Arceri <timothy.arceri@collabora.com>
Sun, 6 Dec 2015 04:17:15 +0000 (15:17 +1100)
committerTimothy Arceri <timothy.arceri@collabora.com>
Mon, 7 Dec 2015 10:41:05 +0000 (21:41 +1100)
This allows validation to be done on rendering calls also.

Fixes 3 dEQP-GLES31.functional.separate tests.

Cc: "11.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Cc: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/main/pipelineobj.c

index 6710d0d40a4d368c06fa4005dae37f91880875d0..d8c9ded93dc29e3b0420cb6bf57ff2f5dbaf6209 100644 (file)
@@ -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