[Piglit] [PATCH 3/3] framework: parse piglit core args during piglit_gl_test_config_init()

Paul Berry stereotype441 at gmail.com
Fri Jul 26 13:11:50 PDT 2013


This makes it safe to examine argc and argv between
PIGLIT_GL_TEST_CONFIG_BEGIN and PIGLIT_GL_TEST_CONFIG_END, since
piglit fragmework arguments have already been stripped away.

That in turn means that the following tests can use
PIGLIT_GL_TEST_CONFIG_{BEGIN,END} instead of having to declare their
own main() functions:

- spec/arb_texture_buffer_object/formats.c
- spec/gl-3.0/required-renderbuffer-attachment-formats.c
- spec/gl-3.0/required-sized-texture-formats.c
- spec/gl-3.0/required-texture-attachment-formats.c
- spec/gles-3.0/oes_compressed_etc2_texture-miptree.c
---
 tests/spec/arb_texture_buffer_object/formats.c     | 18 ++------------
 .../required-renderbuffer-attachment-formats.c     | 15 ++----------
 tests/spec/gl-3.0/required-sized-texture-formats.c | 15 ++----------
 .../gl-3.0/required-texture-attachment-formats.c   | 15 ++----------
 .../gles-3.0/oes_compressed_etc2_texture-miptree.c | 16 ++-----------
 tests/util/piglit-framework-gl.c                   | 28 ++++++++++++----------
 tests/util/piglit-framework-gl.h                   |  8 ++++---
 tests/util/sized-internalformats.c                 |  2 --
 8 files changed, 31 insertions(+), 86 deletions(-)

diff --git a/tests/spec/arb_texture_buffer_object/formats.c b/tests/spec/arb_texture_buffer_object/formats.c
index 0dfec7c..568951c 100644
--- a/tests/spec/arb_texture_buffer_object/formats.c
+++ b/tests/spec/arb_texture_buffer_object/formats.c
@@ -715,11 +715,7 @@ find_arg(int argc, char *argv[], const char *str)
 	return false;
 }
 
-int
-main(int argc, char *argv[])
-{
-	struct piglit_gl_test_config config;
-
+PIGLIT_GL_TEST_CONFIG_BEGIN
 	test_vs = find_arg(argc, argv, "vs");
 	if (!test_vs && !find_arg(argc, argv, "fs"))
 		usage(argv[0]);
@@ -728,11 +724,6 @@ main(int argc, char *argv[])
 	if (!test_arb && !find_arg(argc, argv, "core"))
 		usage(argv[0]);
 
-	piglit_gl_test_config_init(&config);
-
-	config.init = piglit_init;
-	config.display = piglit_display;
-
 	if (test_arb)
 		config.supports_gl_compat_version = 10;
 	else
@@ -741,9 +732,4 @@ main(int argc, char *argv[])
 	config.window_width = 200;
 	config.window_height = 500;
 	config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | PIGLIT_GL_VISUAL_RGBA;
-
-	piglit_gl_test_run(argc, argv, &config);
-
-	assert(false);
-	return 0;
-}
+PIGLIT_GL_TEST_CONFIG_END
diff --git a/tests/spec/gl-3.0/required-renderbuffer-attachment-formats.c b/tests/spec/gl-3.0/required-renderbuffer-attachment-formats.c
index 6a867a7..5236a3f 100644
--- a/tests/spec/gl-3.0/required-renderbuffer-attachment-formats.c
+++ b/tests/spec/gl-3.0/required-renderbuffer-attachment-formats.c
@@ -133,19 +133,8 @@ piglit_init(int argc, char **argv)
 	piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
 }
 
-int
-main(int argc, char *argv[])
-{
-	struct piglit_gl_test_config config;
-
+PIGLIT_GL_TEST_CONFIG_BEGIN
 	setup_required_size_test(argc, argv, &config);
 	target_version = MAX2(config.supports_gl_compat_version,
 			      config.supports_gl_core_version);
-	config.init = piglit_init;
-	config.display = piglit_display;
-
-	piglit_gl_test_run(argc, argv, &config);
-
-	/* UNREACHED */
-	return 0;
-}
+PIGLIT_GL_TEST_CONFIG_END
diff --git a/tests/spec/gl-3.0/required-sized-texture-formats.c b/tests/spec/gl-3.0/required-sized-texture-formats.c
index a3524e7..79ea5b1 100644
--- a/tests/spec/gl-3.0/required-sized-texture-formats.c
+++ b/tests/spec/gl-3.0/required-sized-texture-formats.c
@@ -234,19 +234,8 @@ piglit_init(int argc, char **argv)
 	piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
 }
 
-int
-main(int argc, char *argv[])
-{
-	struct piglit_gl_test_config config;
-
+PIGLIT_GL_TEST_CONFIG_BEGIN
 	setup_required_size_test(argc, argv, &config);
 	target_version = MAX2(config.supports_gl_compat_version,
 			      config.supports_gl_core_version);
-	config.init = piglit_init;
-	config.display = piglit_display;
-
-	piglit_gl_test_run(argc, argv, &config);
-
-	/* UNREACHED */
-	return 0;
-}
+PIGLIT_GL_TEST_CONFIG_END
diff --git a/tests/spec/gl-3.0/required-texture-attachment-formats.c b/tests/spec/gl-3.0/required-texture-attachment-formats.c
index 11e20ac..9c9b234 100644
--- a/tests/spec/gl-3.0/required-texture-attachment-formats.c
+++ b/tests/spec/gl-3.0/required-texture-attachment-formats.c
@@ -143,19 +143,8 @@ piglit_init(int argc, char **argv)
 	piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
 }
 
-int
-main(int argc, char *argv[])
-{
-	struct piglit_gl_test_config config;
-
+PIGLIT_GL_TEST_CONFIG_BEGIN
 	setup_required_size_test(argc, argv, &config);
 	target_version = MAX2(config.supports_gl_compat_version,
 			      config.supports_gl_core_version);
-	config.init = piglit_init;
-	config.display = piglit_display;
-
-	piglit_gl_test_run(argc, argv, &config);
-
-	/* UNREACHED */
-	return 0;
-}
+PIGLIT_GL_TEST_CONFIG_END
diff --git a/tests/spec/gles-3.0/oes_compressed_etc2_texture-miptree.c b/tests/spec/gles-3.0/oes_compressed_etc2_texture-miptree.c
index 8881432..79a4c1f 100644
--- a/tests/spec/gles-3.0/oes_compressed_etc2_texture-miptree.c
+++ b/tests/spec/gles-3.0/oes_compressed_etc2_texture-miptree.c
@@ -314,10 +314,7 @@ piglit_display(void)
 	return pass ? PIGLIT_PASS : PIGLIT_FAIL;
 }
 
-int
-main(int argc, char *argv[])
-{
-	struct piglit_gl_test_config config;
+PIGLIT_GL_TEST_CONFIG_BEGIN
 	bool test_compat = true;
 
 #if defined(PIGLIT_USE_OPENGL)
@@ -334,10 +331,6 @@ main(int argc, char *argv[])
 		print_usage_and_exit(argv[0]);
 #endif
 
-	piglit_gl_test_config_init(&config);
-	config.init = piglit_init;
-	config.display = piglit_display;
-
 	if (test_compat)
 		config.supports_gl_compat_version = 10;
 	else
@@ -348,9 +341,4 @@ main(int argc, char *argv[])
 	config.window_width = 150;
 	config.window_height = 150;
 	config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | PIGLIT_GL_VISUAL_RGBA;
-
-	piglit_gl_test_run(argc, argv, &config);
-
-	assert(false);
-	return 0;
-}
+PIGLIT_GL_TEST_CONFIG_END
diff --git a/tests/util/piglit-framework-gl.c b/tests/util/piglit-framework-gl.c
index ece5968..46325eb 100644
--- a/tests/util/piglit-framework-gl.c
+++ b/tests/util/piglit-framework-gl.c
@@ -39,10 +39,22 @@ unsigned piglit_winsys_fbo = 0;
 int piglit_width;
 int piglit_height;
 
+static void
+process_args(int *argc, char *argv[], unsigned *force_samples);
+
 void
-piglit_gl_test_config_init(struct piglit_gl_test_config *config)
+piglit_gl_test_config_init(int *argc, char *argv[],
+			   struct piglit_gl_test_config *config)
 {
+	unsigned force_samples = 0;
+
 	memset(config, 0, sizeof(*config));
+
+	process_args(argc, argv, &force_samples);
+
+	if (force_samples > 1)
+		config->window_samples = force_samples;
+
 }
 
 static void
@@ -116,18 +128,10 @@ void
 piglit_gl_test_run(int argc, char *argv[],
 		   const struct piglit_gl_test_config *config)
 {
-	struct piglit_gl_test_config conf = *config;
-	unsigned force_samples = 0;
-
-	process_args(&argc, argv, &force_samples);
-
-	if (force_samples > 1)
-		conf.window_samples = force_samples;
-
-	piglit_width = conf.window_width;
-	piglit_height = conf.window_height;
+	piglit_width = config->window_width;
+	piglit_height = config->window_height;
 
-	gl_fw = piglit_gl_framework_factory(&conf);
+	gl_fw = piglit_gl_framework_factory(config);
 	if (gl_fw == NULL) {
 		printf("piglit: error: failed to create "
 		       "piglit_gl_framework\n");
diff --git a/tests/util/piglit-framework-gl.h b/tests/util/piglit-framework-gl.h
index e65c989..f8f73ad 100644
--- a/tests/util/piglit-framework-gl.h
+++ b/tests/util/piglit-framework-gl.h
@@ -171,10 +171,12 @@ struct piglit_gl_test_config {
 };
 
 /**
- * Initialize @a config with default values.
+ * Initialize @a config with default values, some of which may come
+ * from command line arguments.
  */
 void
-piglit_gl_test_config_init(struct piglit_gl_test_config *config);
+piglit_gl_test_config_init(int *argc, char *argv[],
+			   struct piglit_gl_test_config *config);
 
 /**
  * Run the OpenGL test described by @a config. Does not return.
@@ -208,7 +210,7 @@ piglit_gl_test_run(int argc, char *argv[],
         {                                                                    \
                 struct piglit_gl_test_config config;                         \
                                                                              \
-                piglit_gl_test_config_init(&config);                         \
+                piglit_gl_test_config_init(&argc, argv, &config);            \
                                                                              \
                 config.init = piglit_init;                                   \
                 config.display = piglit_display;                             \
diff --git a/tests/util/sized-internalformats.c b/tests/util/sized-internalformats.c
index 626d215..ae949c7 100644
--- a/tests/util/sized-internalformats.c
+++ b/tests/util/sized-internalformats.c
@@ -385,8 +385,6 @@ setup_required_size_test(int argc, char **argv,
 	if (argc < 2)
 		usage(argv[0]);
 
-	piglit_gl_test_config_init(config);
-
 	target_version = strtol(argv[1], NULL, 0);
 
 	switch (target_version) {
-- 
1.8.3.4



More information about the Piglit mailing list