Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com> --- tests/texturing/texsubimage.c | 71 ++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 31 deletions(-)
diff --git a/tests/texturing/texsubimage.c b/tests/texturing/texsubimage.c index 8bebbd7..b695ce5 100644 --- a/tests/texturing/texsubimage.c +++ b/tests/texturing/texsubimage.c @@ -531,33 +531,8 @@ static GLboolean test_formats(GLenum target, unsigned w, unsigned h, unsigned d) { GLboolean pass = GL_TRUE; - GLuint program = 0; int i, j; - switch (target) { - case GL_TEXTURE_1D_ARRAY: - program = piglit_build_simple_program(NULL, fragment_1d_array); - break; - case GL_TEXTURE_2D_ARRAY: - program = piglit_build_simple_program(NULL, fragment_2d_array); - break; - case GL_TEXTURE_CUBE_MAP_ARRAY: - program = piglit_build_simple_program(vertex_cube_map_array, - fragment_cube_map_array); - break; - default: - glEnable(target); - break; - } - - if (program != 0) { - GLuint tex_location; - - glUseProgram(program); - tex_location = glGetUniformLocation(program, "tex"); - glUniform1i(tex_location, 0); - } - /* loop over the format groups */ for (i = 0; i < ARRAY_SIZE(texsubimage_test_sets); i++) { const struct test_desc *set = &texsubimage_test_sets[i]; @@ -595,14 +570,39 @@ test_formats(GLenum target, unsigned w, unsigned h, unsigned d) } } - if (program == 0) { - glDisable(target); - } else { - glUseProgram(0); - glDeleteProgram(program); + return pass; +} + +static GLuint +prepare_tex_to_fbo_blit_program(GLenum target) +{ + GLuint program = 0; + + switch (target) { + case GL_TEXTURE_1D_ARRAY: + program = piglit_build_simple_program(NULL, fragment_1d_array); + break; + case GL_TEXTURE_2D_ARRAY: + program = piglit_build_simple_program(NULL, fragment_2d_array); + break; + case GL_TEXTURE_CUBE_MAP_ARRAY: + program = piglit_build_simple_program(vertex_cube_map_array, + fragment_cube_map_array); + break; + default: + glEnable(target); + break; } - return pass; + if (program != 0) { + GLuint tex_location; + + glUseProgram(program); + tex_location = glGetUniformLocation(program, "tex"); + glUniform1i(tex_location, 0); + } + + return program; } static void @@ -631,9 +631,18 @@ piglit_display(void) unsigned w = DEFAULT_TEX_WIDTH; unsigned h = DEFAULT_TEX_HEIGHT; unsigned d = DEFAULT_TEX_DEPTH; + const GLuint program = + prepare_tex_to_fbo_blit_program(test_targets[i]); adjust_tex_dimensions(test_targets[i], &w, &h, &d); pass = test_formats(test_targets[i], w, h, d) && pass; + + if (program == 0) { + glDisable(test_targets[i]); + } else { + glUseProgram(0); + glDeleteProgram(program); + } } return pass ? PIGLIT_PASS : PIGLIT_FAIL; -- 2.5.0 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit