arb_uniform_buffer_object: reduce requirements

Submitted by Chris Forbes on Aug. 26, 2014, 9:05 a.m.

Details

Message ID 1409043939-6948-1-git-send-email-chrisf@ijw.co.nz
State New
Headers show

Not browsing as part of any series.

Commit Message

Chris Forbes Aug. 26, 2014, 9:05 a.m.
We would like to be able to test this on 1.20+ARB_ubo as well. Unsigned
types are only present as of 1.30, so skip them if not available.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
---
 ...getactiveuniformblockiv-uniform-block-data-size.c | 18 ++++++++++++++----
 .../getactiveuniformsiv-uniform-type.c               | 20 +++++++++++++++-----
 .../layout-std140-base-size-and-alignment.c          | 20 ++++++++++++++++----
 tests/spec/arb_uniform_buffer_object/layout-std140.c |  6 +++---
 4 files changed, 48 insertions(+), 16 deletions(-)

Patch hide | download patch | download mbox

diff --git a/tests/spec/arb_uniform_buffer_object/getactiveuniformblockiv-uniform-block-data-size.c b/tests/spec/arb_uniform_buffer_object/getactiveuniformblockiv-uniform-block-data-size.c
index 97edc40..e61d9e5 100644
--- a/tests/spec/arb_uniform_buffer_object/getactiveuniformblockiv-uniform-block-data-size.c
+++ b/tests/spec/arb_uniform_buffer_object/getactiveuniformblockiv-uniform-block-data-size.c
@@ -40,7 +40,6 @@ 
 PIGLIT_GL_TEST_CONFIG_BEGIN
 
 	config.supports_gl_compat_version = 10;
-	config.supports_gl_core_version = 31;
 	config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE;
 
 PIGLIT_GL_TEST_CONFIG_END
@@ -54,9 +53,9 @@  align(int v, int a)
 static bool
 test_format(const struct uniform_type *type, bool row_major)
 {
-	/* Using 140 to get unsigned ints. */
 	const char *fs_template =
-		"#version 140\n"
+		"#version %d\n"
+		"#extension GL_ARB_uniform_buffer_object: require\n"
 		"layout(std140) uniform ubo {\n"
 		"	float align_test;\n"
 		"	%s%s u;\n"
@@ -71,12 +70,23 @@  test_format(const struct uniform_type *type, bool row_major)
 	int expected;
 	const struct uniform_type *transposed_type;
 
+	if (type->type[0] == 'u' && piglit_get_gl_version() < 30) {
+		printf("%-20s %10s %10d %10s%s\n",
+		       type->type,
+		       row_major ? "y" : "n",
+		       data_size,
+		       "-",
+		       " SKIP");
+		return true;
+	}
+
 	if (row_major)
 		transposed_type = get_transposed_type(type);
 	else
 		transposed_type = type;
 
 	asprintf(&fs_source, fs_template,
+		 type->type[0] == 'u' ? 130 : 120,	/* unsigned requires 1.30 */
 		 row_major ? "layout(row_major) " : "",
 		 type->type);
 	prog = piglit_build_simple_program(NULL, fs_source);
@@ -118,7 +128,7 @@  piglit_init(int argc, char **argv)
 	unsigned int i;
 
 	piglit_require_extension("GL_ARB_uniform_buffer_object");
-	piglit_require_GLSL_version(140);
+	piglit_require_GLSL_version(120);
 
 	printf("%-20s %10s %10s %10s\n",
 	       "type", "row_major", "DATA_SIZE", "expected");
diff --git a/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-type.c b/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-type.c
index fc54036..26e4229 100644
--- a/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-type.c
+++ b/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-type.c
@@ -33,7 +33,6 @@ 
 PIGLIT_GL_TEST_CONFIG_BEGIN
 
 	config.supports_gl_compat_version = 10;
-	config.supports_gl_core_version = 31;
 	config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | PIGLIT_GL_VISUAL_RGBA;
 
 PIGLIT_GL_TEST_CONFIG_END
@@ -41,9 +40,9 @@  PIGLIT_GL_TEST_CONFIG_END
 static bool
 test_format(const struct uniform_type *type)
 {
-	/* Using 140 to get unsigned ints. */
 	const char *fs_template =
-		"#version 140\n"
+		"#version %d\n"
+		"#extension GL_ARB_uniform_buffer_object: require\n"
 		"layout(std140) uniform ubo {\n"
 		"	float align_test;\n"
 		"	%s u;\n"
@@ -67,7 +66,18 @@  test_format(const struct uniform_type *type)
 		deref = "u[0].x";
 	}
 
-	asprintf(&fs_source, fs_template, type->type, deref);
+	if (type->type[0] == 'u' && piglit_get_gl_version() < 30) {
+		printf("%-20s %20s %20s%s\n",
+		       type->type,
+		       "-",
+		       "-",
+		       " SKIP");
+		return true;
+	}
+
+	asprintf(&fs_source, fs_template,
+		 type->type[0] == 'u' ? 130 : 120,
+		 type->type, deref);
 	prog = piglit_build_simple_program(NULL, fs_source);
 	free(fs_source);
 
@@ -93,7 +103,7 @@  piglit_init(int argc, char **argv)
 	unsigned int i;
 
 	piglit_require_extension("GL_ARB_uniform_buffer_object");
-	piglit_require_GLSL_version(140);
+	piglit_require_GLSL_version(120);
 
 	printf("%-20s %20s %20s\n", "type", "GL_UNIFORM_TYPE", "expected");
 	printf("--------------------------------------------------------------\n");
diff --git a/tests/spec/arb_uniform_buffer_object/layout-std140-base-size-and-alignment.c b/tests/spec/arb_uniform_buffer_object/layout-std140-base-size-and-alignment.c
index ffef8d1..967ee81 100644
--- a/tests/spec/arb_uniform_buffer_object/layout-std140-base-size-and-alignment.c
+++ b/tests/spec/arb_uniform_buffer_object/layout-std140-base-size-and-alignment.c
@@ -34,7 +34,6 @@ 
 PIGLIT_GL_TEST_CONFIG_BEGIN
 
 	config.supports_gl_compat_version = 10;
-	config.supports_gl_core_version = 31;
 	config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | PIGLIT_GL_VISUAL_RGBA;
 
 PIGLIT_GL_TEST_CONFIG_END
@@ -48,9 +47,9 @@  align(int v, int a)
 static bool
 test_format(const struct uniform_type *type, bool row_major)
 {
-	/* Using 140 to get unsigned ints. */
 	const char *fs_template =
-		"#version 140\n"
+		"#version %d\n"
+		"#extension GL_ARB_uniform_buffer_object: require\n"
 		"layout(std140) uniform ubo {\n"
 		"	float pad;\n"
 		"	%s %s u;\n"
@@ -82,7 +81,20 @@  test_format(const struct uniform_type *type, bool row_major)
 	else
 		deref = "u[0].x";
 
+	if (type->type[0] == 'u' && piglit_get_gl_version() < 30) {
+		printf("%-10s %10s %8s %-16s %8s %-16d%s\n",
+		       type->type,
+		       row_major ? "y" : "n",
+		       "-",
+		       "-",
+		       "-",
+		       transposed_type->size,
+		       " SKIP");
+		return true;
+	}
+
 	asprintf(&fs_source, fs_template,
+		 type->type[0] == 'u' ? 130 : 120,
 		 row_major && type->size > 16 ? "layout(row_major) " : "",
 		 type->type,
 		 deref);
@@ -126,7 +138,7 @@  piglit_init(int argc, char **argv)
 	unsigned int i;
 
 	piglit_require_extension("GL_ARB_uniform_buffer_object");
-	piglit_require_GLSL_version(140);
+	piglit_require_GLSL_version(120);
 
 	printf("%-10s %10s %8s %16s %8s %-16s\n",
 	       "type", "row_major",
diff --git a/tests/spec/arb_uniform_buffer_object/layout-std140.c b/tests/spec/arb_uniform_buffer_object/layout-std140.c
index cb3cff3..d802322 100644
--- a/tests/spec/arb_uniform_buffer_object/layout-std140.c
+++ b/tests/spec/arb_uniform_buffer_object/layout-std140.c
@@ -91,7 +91,7 @@  static const struct result {
 };
 
 static const char frag_shader_text[] =
-	"#version 130\n"
+	"#version 120\n"
 	"#extension GL_ARB_uniform_buffer_object : enable \n"
 	"\n"
 	"struct f_struct {\n"
@@ -100,7 +100,7 @@  static const char frag_shader_text[] =
 	"};\n"
 	"\n"
 	"struct o_struct {\n"
-	"	uvec3 j;\n"
+	"	ivec3 j;\n"
 	"	vec2 k;\n"
 	"	float l[2];\n"
 	"	vec2 m;\n"
@@ -145,7 +145,7 @@  static const char frag_shader_text[] =
 static void
 init(void)
 {
-	piglit_require_GLSL_version(130);
+	piglit_require_GLSL_version(120);
 	piglit_require_extension("GL_ARB_uniform_buffer_object");
 
 	prog = piglit_build_simple_program(NULL, frag_shader_text);