[Piglit] [PATCH 1/5] util: Add support for separate shader objects to piglit_draw_rect_from_arrays

Ian Romanick idr at freedesktop.org
Fri Apr 25 20:03:48 PDT 2014


From: Ian Romanick <ian.d.romanick at intel.com>

Previosly it only looked at GL_CURRENT_PROGRAM to determine whether the
active vertex shader used piglit_vertex as an input.  With
ARB_separate_shader_objects, it also needs to look at the
GL_VERTEX_SHADER associated with the current
GL_PROGRAM_PIPELINE_BINDING.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
---
 tests/util/piglit-util-gl-common.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/tests/util/piglit-util-gl-common.c b/tests/util/piglit-util-gl-common.c
index 4abbd57..45ca099 100644
--- a/tests/util/piglit-util-gl-common.c
+++ b/tests/util/piglit-util-gl-common.c
@@ -608,6 +608,25 @@ piglit_draw_rect_from_arrays(const void *verts, const void *tex)
 
 		glGetIntegerv(GL_CURRENT_PROGRAM, (GLint *) &prog);
 
+		/* If no there is no program bound to the traditional,
+		 * monolithic program binding pipe (via glUseProgram), get the
+		 * vertex shader program attached to the current program
+		 * pipeline.
+		 */
+		if (prog == 0 &&
+		    (piglit_get_gl_version() >= 42
+		     || piglit_is_extension_supported("GL_ARB_separate_shader_objects"))) {
+			GLuint pipe;
+
+			glGetIntegerv(GL_PROGRAM_PIPELINE_BINDING,
+				      (GLint *) &pipe);
+			if (pipe != 0)
+				glGetProgramPipelineiv(pipe,
+						       GL_VERTEX_SHADER,
+						       (GLint *) &prog);
+		}
+
+
 		/* If there is a current program and that program has an
 		 * active attribute named piglit_vertex, don't use the fixed
 		 * function inputs.
-- 
1.8.1.4



More information about the Piglit mailing list