[Piglit] [Review Request (master branch)] srgb_conformance: fix error computation

Neha Bhende bhenden at vmware.com
Fri May 5 06:47:59 UTC 2017


piglit_linear_to_srgb() returns float values in [0,1].  The test was
comparing it against integer values in [0,255].  This is why test was
failing.

Also, fix the overall test pass/fail logic.

Reviewed-by: Brian Paul<brianp at vmware.com>
---
 tests/spec/arb_framebuffer_srgb/srgb_conformance.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/tests/spec/arb_framebuffer_srgb/srgb_conformance.c b/tests/spec/arb_framebuffer_srgb/srgb_conformance.c
index 99018e2..dcf6d2b 100644
--- a/tests/spec/arb_framebuffer_srgb/srgb_conformance.c
+++ b/tests/spec/arb_framebuffer_srgb/srgb_conformance.c
@@ -55,7 +55,8 @@ PIGLIT_GL_TEST_CONFIG_END
 
 static enum piglit_result test_format(void)
 {
-	GLboolean pass = GL_TRUE;
+	bool pass1 = true;
+	bool pass2 = true;
 	GLuint texsrgb, texfb, fb;
 	GLenum status;
 	int i;
@@ -131,7 +132,7 @@ static enum piglit_result test_format(void)
 	glReadPixels(0, 0, 16, 16, GL_RGBA, GL_FLOAT, &readf[0][0]);
 
 	for (i = 0; i < 256; i++) {
-		float err = fabs(piglit_linear_to_srgb(readf[i][0]) - (float)i);
+		float err = fabs(piglit_linear_to_srgb(readf[i][0])*255 - (float)i);
 		if (0)
 			printf("readback: %f observed: %f expected: %f\n", readf[i][0],
 				piglit_linear_to_srgb(readf[i][0]), (float)i);
@@ -140,7 +141,7 @@ static enum piglit_result test_format(void)
 		}
 		if (err > tolerance) {
 			printf("  failed when testing srgb->float result\n");
-			pass = GL_FALSE;
+			pass1 = false;
 			break;
 		}
 	}
@@ -148,7 +149,7 @@ static enum piglit_result test_format(void)
 
 	piglit_present_results();
 
-	piglit_report_subtest_result(pass ? PIGLIT_PASS : PIGLIT_FAIL,
+	piglit_report_subtest_result(pass1 ? PIGLIT_PASS : PIGLIT_FAIL,
 				     "srgb->linear");
 
 	/* draw into srgb framebuffer and verify results */
@@ -195,21 +196,21 @@ static enum piglit_result test_format(void)
 			printf("observed: %d expected: %d\n", readb[i][0], i);
 		if (readb[i][0] != i) {
 			printf("  failed when testing srgb->float->srgb result\n");
-			pass = GL_FALSE;
+			pass2 = GL_FALSE;
 			break;
 		}
 	}
 
 	piglit_present_results();
 
-	piglit_report_subtest_result(pass ? PIGLIT_PASS : PIGLIT_FAIL,
+	piglit_report_subtest_result(pass2 ? PIGLIT_PASS : PIGLIT_FAIL,
 				     "srgb->linear->srgb");
 
 	glDeleteTextures(1, &texfb);
 	glDeleteTextures(1, &texsrgb);
 	glDeleteFramebuffersEXT(1, &fb);
 
-	return pass ? PIGLIT_PASS : PIGLIT_FAIL;
+	return (pass1 && pass2) ? PIGLIT_PASS : PIGLIT_FAIL;
 }
 
 enum piglit_result piglit_display(void)
-- 
2.7.4



More information about the Piglit mailing list