[Piglit] [PATCH] arb_texture_view: Check source tex in failure

Ben Widawsky benjamin.widawsky at intel.com
Wed Oct 28 10:35:31 PDT 2015


While debugging a problem on gen8, I added this code to verify the contents of
the 2d texture array in order to narrow down the failure. It seemed useful and
worth keeping to me.

Cc: Glenn Kennard <glenn.kennard at gmail.com>
Signed-off-by: Ben Widawsky <benjamin.widawsky at intel.com>
---
 .../sampling-2d-array-as-2d-layer.c                | 29 +++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/tests/spec/arb_texture_view/sampling-2d-array-as-2d-layer.c b/tests/spec/arb_texture_view/sampling-2d-array-as-2d-layer.c
index 8189044..7a741e5 100644
--- a/tests/spec/arb_texture_view/sampling-2d-array-as-2d-layer.c
+++ b/tests/spec/arb_texture_view/sampling-2d-array-as-2d-layer.c
@@ -122,7 +122,34 @@ test_single_layer(const Params* p, int layer)
 
 	pass = piglit_probe_rect_rgba(0, 0, piglit_width, piglit_height, green);
 	if (!pass) {
-		printf("layer %d failed\n", layer);
+		GLenum status;
+		GLuint temp_fbo;
+
+		glClearColor(0, 0, 1, 1);
+		glClear(GL_COLOR_BUFFER_BIT);
+
+		glGenFramebuffers(1, &temp_fbo);
+		glBindFramebuffer(GL_FRAMEBUFFER, temp_fbo);
+		glFramebufferTextureLayer(GL_FRAMEBUFFER,
+					  GL_COLOR_ATTACHMENT0,
+					  tex_src, 0, layer);
+		status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
+		if (status != GL_FRAMEBUFFER_COMPLETE) {
+			printf("Framebuffer Status: %s\n",
+				piglit_get_gl_enum_name(status));
+		}
+
+		glBindFramebuffer(GL_DRAW_FRAMEBUFFER, piglit_winsys_fbo);
+		glBindFramebuffer(GL_READ_FRAMEBUFFER, temp_fbo);
+		glBlitFramebuffer(0, 0, p->width, p->height,
+				  0, 0, piglit_width, piglit_height,
+				  GL_COLOR_BUFFER_BIT, GL_NEAREST);
+
+		printf("layer %d failed. Source image was %s\n",
+			layer, piglit_probe_pixel_rgba(0, 0, green) ?
+			       "correct" : "incorrect");
+
+		glDeleteFramebuffers(1, &temp_fbo);
 	}
 
 	glDeleteTextures(1, &tex_view);
-- 
2.6.1



More information about the Piglit mailing list