The motivation for this is that (as noted by curro) ARB_shader_image_load_store doesn't support images with an internal format of GL_RGBA.
See 'Table X.2' in https://www.opengl.org/registry/specs/ARB/shader_image_load_store.txt Therefore, in order to use image load/store in shader runner tests, we must override the default internal format when creating the image. We retain the default internal format of GL_RGBA when the optional parameter is not given. Now an internal format can optionally be added as a new parameter when creating the image. For example: texture rgbw 0 (16, 16) GL_RGBA8 v2: * Drop 'base type' parameter Signed-off-by: Jordan Justen <[email protected]> --- tests/shaders/shader_runner.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c index 41024cd..74cc9d9 100644 --- a/tests/shaders/shader_runner.c +++ b/tests/shaders/shader_runner.c @@ -2572,11 +2572,23 @@ piglit_display(void) glShadeModel(GL_SMOOTH); } else if (string_match("shade model flat", line)) { glShadeModel(GL_FLAT); - } else if (sscanf(line, - "texture rgbw %d ( %d , %d )", - &tex, &w, &h) == 3) { + } else if (string_match("texture rgbw ", line)) { + int num_scanned; + GLenum int_fmt = GL_RGBA; + num_scanned = sscanf(line, "texture rgbw %d ( %d , %d ) %31s", + &tex, &w, &h, s); + if (num_scanned < 3) { + printf("invalid texture rgbw command!\n"); + piglit_report_result(PIGLIT_FAIL); + } + + if (num_scanned >= 4) { + int_fmt = piglit_get_gl_enum_from_name(s); + } + glActiveTexture(GL_TEXTURE0 + tex); - piglit_rgbw_texture(GL_RGBA, w, h, GL_FALSE, GL_FALSE, GL_UNSIGNED_NORMALIZED); + piglit_rgbw_texture(int_fmt, w, h, GL_FALSE, GL_FALSE, + GL_UNSIGNED_NORMALIZED); if (!piglit_is_core_profile) glEnable(GL_TEXTURE_2D); } else if (sscanf(line, "texture miptree %d", &tex) == 1) { -- 2.1.4 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
