[Piglit] [PATCH] ARB_explicit_uniform_location: fix a bug in boundaries test

Tapani Pälli tapani.palli at intel.com
Thu Mar 20 02:11:24 PDT 2014


Patch sets the maximum valid explicit location to test as
"GL_MAX_UNIFORM_LOCATIONS - 1" (as the spec states).

Test passes now also on GTX 660 running the Nvidia proprietary
driver for Linux, version 319.32.

Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
---
 tests/spec/arb_explicit_uniform_location/loc-boundaries.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/tests/spec/arb_explicit_uniform_location/loc-boundaries.c b/tests/spec/arb_explicit_uniform_location/loc-boundaries.c
index ac02da6..3e6ea7a 100644
--- a/tests/spec/arb_explicit_uniform_location/loc-boundaries.c
+++ b/tests/spec/arb_explicit_uniform_location/loc-boundaries.c
@@ -28,11 +28,14 @@
  * for the locations, every check here is expected to pass.
  *
  * The GL_ARB_explicit_uniform_location spec says:
+ *     "The explicitly defined locations and the generated locations must be
+ *     in the range of 0 to MAX_UNIFORM_LOCATIONS minus one."
+ *
  *     "Valid locations for default-block uniform variable locations are in
  *     the range of 0 to the implementation-defined maximum number of
  *     uniform locations."
  *
- * This test tests 0, MAX and a single value in between, shader contains
+ * This test tests 0, MAX - 1 and a single value in between, shader contains
  * also uniform without explicit location to see that it does not affect
  * getting the wanted locations.
  */
@@ -81,15 +84,15 @@ piglit_init(int argc, char **argv)
 	if (!piglit_check_gl_error(GL_NO_ERROR))
 		piglit_report_result(PIGLIT_FAIL);
 
-	/* test GL_MAX_UNIFORM_LOCATIONS, 0, and a loc in between (1) */
-	if (asprintf(&f_sha, fs_template, maxloc, 0, 1) == -1)
+	/* test GL_MAX_UNIFORM_LOCATIONS - 1, 0, and a loc in between (1) */
+	if (asprintf(&f_sha, fs_template, maxloc - 1, 0, 1) == -1)
 		piglit_report_result(PIGLIT_FAIL);
 
 	prog = piglit_build_simple_program(vs_text, f_sha);
 
 	free(f_sha);
 
-	if (glGetUniformLocation(prog, "r") != maxloc)
+	if (glGetUniformLocation(prog, "r") != maxloc - 1)
 		piglit_report_result(PIGLIT_FAIL);
 	if (glGetUniformLocation(prog, "g") != 0)
 		piglit_report_result(PIGLIT_FAIL);
-- 
1.8.3.1



More information about the Piglit mailing list