[Piglit] [PATCH v2 2/4] shader_runner: Support optional internal format for 'texture rgbw'

Jordan Justen jordan.l.justen at intel.com
Fri Jun 12 15:23:11 PDT 2015


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 <jordan.l.justen at intel.com>
---
 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



More information about the Piglit mailing list