[Piglit] [PATCH] glx-swap-pixmap: Expect alpha = 1.0 if there is no alpha in the pixmap

Ian Romanick idr at freedesktop.org
Mon Jan 28 16:39:36 PST 2013


From: Ian Romanick <ian.d.romanick at intel.com>

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59833
---
 tests/glx/glx-swap-pixmap.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/tests/glx/glx-swap-pixmap.c b/tests/glx/glx-swap-pixmap.c
index 1a91578..855396a 100644
--- a/tests/glx/glx-swap-pixmap.c
+++ b/tests/glx/glx-swap-pixmap.c
@@ -44,9 +44,11 @@ main(int argc, char **argv)
 {
 	Pixmap p;
 	GLXPixmap g;
-	float green[4] = {0.0, 1.0, 0.0, 0.0};
+	static const float green_alpha_zero[4] = {0.0, 1.0, 0.0, 0.0};
+	static const float green_alpha_one[4] = {0.0, 1.0, 0.0, 1.0};
 	GLXContext ctx;
 	bool pass;
+	GLint alpha_bits;
 
 	dpy = XOpenDisplay(NULL);
 	if (dpy == NULL) {
@@ -80,7 +82,17 @@ main(int argc, char **argv)
 	 */
 	XSync(dpy, False);
 
-	pass = piglit_probe_rect_rgba(0, 0, piglit_width, piglit_height, green);
+	/* If the visual has no alpha, then the GL spec requires that 1.0 be
+	 * read back.  Otherwise, we should read back the 0.0 that we wrote.
+	 */
+	glGetIntegerv(GL_ALPHA_BITS, &alpha_bits);
+	if (alpha_bits == 0) {
+		pass = piglit_probe_rect_rgba(0, 0, piglit_width, piglit_height,
+					      green_alpha_one);
+	} else {
+		pass = piglit_probe_rect_rgba(0, 0, piglit_width, piglit_height,
+					      green_alpha_zero);
+	}
 
 	glXDestroyPixmap(dpy, g);
 
-- 
1.7.11.7



More information about the Piglit mailing list