This will allow us to set uniforms in SSO. For example to make the fragment program active: active shader program GL_FRAGMENT_SHADER
Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> --- tests/shaders/shader_runner.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c index 262157b..f6a12a3 100644 --- a/tests/shaders/shader_runner.c +++ b/tests/shaders/shader_runner.c @@ -123,6 +123,8 @@ GLint shader_string_size; const char *vertex_data_start = NULL; const char *vertex_data_end = NULL; GLuint prog; +GLuint sso_vertex_prog; +GLuint sso_fragment_prog; GLuint pipeline; size_t num_vbo_rows = 0; bool vbo_present = false; @@ -512,9 +514,11 @@ link_sso(GLenum target) switch (target) { case GL_VERTEX_SHADER: + sso_vertex_prog = prog; glUseProgramStages(pipeline, GL_VERTEX_SHADER_BIT, prog); break; case GL_FRAGMENT_SHADER: + sso_fragment_prog = prog; glUseProgramStages(pipeline, GL_FRAGMENT_SHADER_BIT, prog); break; } @@ -2702,6 +2706,15 @@ piglit_display(void) next_line++; if (line[0] == '\0') { + } else if (sscanf(line, "active shader program %s", s) == 1) { + switch (get_shader_from_string(s, &x)) { + case GL_VERTEX_SHADER: + glActiveShaderProgram(pipeline, sso_vertex_prog); + break; + case GL_FRAGMENT_SHADER: + glActiveShaderProgram(pipeline, sso_fragment_prog); + break; + } } else if (sscanf(line, "atomic counters %d", &x) == 1) { GLuint *atomics_buf = calloc(x, sizeof(GLuint)); glGenBuffers(1, &atomics_bo); -- 2.4.3 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit