From: Ian Romanick <[email protected]>
Signed-off-by: Ian Romanick <[email protected]>
---
.../spec/arb_separate_shader_objects/sso-common.c | 27 ++++++++++++++++++++++
.../spec/arb_separate_shader_objects/sso-common.h | 5 ++++
2 files changed, 32 insertions(+)
diff --git a/tests/spec/arb_separate_shader_objects/sso-common.c
b/tests/spec/arb_separate_shader_objects/sso-common.c
index c73c741..29ae23f 100644
--- a/tests/spec/arb_separate_shader_objects/sso-common.c
+++ b/tests/spec/arb_separate_shader_objects/sso-common.c
@@ -75,3 +75,30 @@ configure_transform_feedback_object(GLuint *xfb, GLuint *buf)
glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, *xfb);
glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, *buf);
}
+
+/**
+ * Create a separable vertex shader program with transform feedback output
+ *
+ * A vertex shader must be created using the "traditional" API because
+ * \c glTransformFeedbackVaryings must be called before linking. There is no
+ * way to do that with \c glCreateShaderProgramv.
+ */
+bool
+CreateShaderProgram_with_xfb(const char *source,
+ const char **varyings,
+ unsigned num_varyings,
+ GLuint *vs_prog)
+{
+ GLuint vs = piglit_compile_shader_text(GL_VERTEX_SHADER, source);
+
+ *vs_prog = glCreateProgram();
+ glAttachShader(*vs_prog, vs);
+
+ glProgramParameteri(*vs_prog, GL_PROGRAM_SEPARABLE, GL_TRUE);
+ glTransformFeedbackVaryings(*vs_prog, num_varyings, varyings,
+ GL_INTERLEAVED_ATTRIBS);
+ glLinkProgram(*vs_prog);
+ glDeleteShader(vs);
+
+ return piglit_link_check_status(*vs_prog);
+}
diff --git a/tests/spec/arb_separate_shader_objects/sso-common.h
b/tests/spec/arb_separate_shader_objects/sso-common.h
index 627df4c..af6e610 100644
--- a/tests/spec/arb_separate_shader_objects/sso-common.h
+++ b/tests/spec/arb_separate_shader_objects/sso-common.h
@@ -28,4 +28,9 @@ unsigned pick_a_glsl_version(void);
void configure_transform_feedback_object(GLuint *xfb, GLuint *buf);
+bool CreateShaderProgram_with_xfb(const char *source,
+ const char **varyings,
+ unsigned num_varyings,
+ GLuint *vs_prog);
+
#endif /* SSO_COMMON_H */
--
1.8.1.4
_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit