[Piglit] [PATCH 3/5] Add -samples=n command-line argument forcing MSAA visuals
Marek Olšák
maraeo at gmail.com
Sat Jun 1 05:38:40 PDT 2013
---
tests/util/piglit-framework-gl.c | 20 +++++++++++++++-----
tests/util/piglit-framework-gl.h | 1 +
.../piglit-framework-gl/piglit_fbo_framework.c | 5 +++++
.../piglit-framework-gl/piglit_glut_framework.c | 5 +++++
.../piglit-framework-gl/piglit_winsys_framework.c | 7 +++++++
5 files changed, 33 insertions(+), 5 deletions(-)
diff --git a/tests/util/piglit-framework-gl.c b/tests/util/piglit-framework-gl.c
index 441e271..82197bb 100644
--- a/tests/util/piglit-framework-gl.c
+++ b/tests/util/piglit-framework-gl.c
@@ -60,7 +60,7 @@ delete_arg(char *argv[], int argc, int arg)
* length is returned in @a argc.
*/
static void
-process_args(int *argc, char *argv[])
+process_args(int *argc, char *argv[], unsigned *force_samples)
{
int j;
@@ -104,6 +104,10 @@ process_args(int *argc, char *argv[])
}
*argc -= 2;
j -= 2;
+ } else if (!strncmp(argv[j], "-samples=", 9)) {
+ *force_samples = atoi(argv[j]+9);
+ delete_arg(argv, *argc, j--);
+ *argc -= 1;
}
}
}
@@ -112,12 +116,18 @@ void
piglit_gl_test_run(int argc, char *argv[],
const struct piglit_gl_test_config *config)
{
- process_args(&argc, argv);
+ 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 = config->window_width;
- piglit_height = config->window_height;
+ piglit_width = conf.window_width;
+ piglit_height = conf.window_height;
- gl_fw = piglit_gl_framework_factory(config);
+ gl_fw = piglit_gl_framework_factory(&conf);
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 4406c1b..95be1c1 100644
--- a/tests/util/piglit-framework-gl.h
+++ b/tests/util/piglit-framework-gl.h
@@ -140,6 +140,7 @@ struct piglit_gl_test_config {
int window_width;
int window_height;
+ int window_samples;
/**
* A bitmask of `enum piglit_gl_visual`.
diff --git a/tests/util/piglit-framework-gl/piglit_fbo_framework.c b/tests/util/piglit-framework-gl/piglit_fbo_framework.c
index 1b844bb..1aad5fe 100644
--- a/tests/util/piglit-framework-gl/piglit_fbo_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_fbo_framework.c
@@ -139,6 +139,11 @@ piglit_fbo_framework_create(const struct piglit_gl_test_config *test_config)
int32_t platform = piglit_wfl_framework_choose_platform(test_config);
bool ok = true;
+ if (test_config->window_samples > 1) {
+ puts("The FBO mode doesn't support multisampling\n");
+ piglit_report_result(PIGLIT_SKIP);
+ }
+
wfl_fw = calloc(1, sizeof(*wfl_fw));
gl_fw = &wfl_fw->gl_fw;
diff --git a/tests/util/piglit-framework-gl/piglit_glut_framework.c b/tests/util/piglit-framework-gl/piglit_glut_framework.c
index cfadf77..ff48abb 100644
--- a/tests/util/piglit-framework-gl/piglit_glut_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_glut_framework.c
@@ -180,6 +180,11 @@ piglit_glut_framework_create(const struct piglit_gl_test_config *test_config)
piglit_report_result(PIGLIT_SKIP);
}
+ if (test_config->window_samples > 1) {
+ printf("GLUT doesn't support MSAA visuals.\n");
+ piglit_report_result(PIGLIT_SKIP);
+ }
+
ok = piglit_gl_framework_init(&glut_fw.gl_fw, test_config);
if (!ok)
return NULL;
diff --git a/tests/util/piglit-framework-gl/piglit_winsys_framework.c b/tests/util/piglit-framework-gl/piglit_winsys_framework.c
index 971f183..205ea21 100644
--- a/tests/util/piglit-framework-gl/piglit_winsys_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_winsys_framework.c
@@ -128,6 +128,13 @@ choose_config_attribs(const struct piglit_gl_test_config *test_config)
attrib_list[i++] = true;
}
+ if (test_config->window_samples > 1) {
+ attrib_list[i++] = WAFFLE_SAMPLE_BUFFERS;
+ attrib_list[i++] = 1;
+ attrib_list[i++] = WAFFLE_SAMPLES;
+ attrib_list[i++] = test_config->window_samples;
+ }
+
attrib_list[i++] = WAFFLE_NONE;
return attrib_list;
--
1.7.10.4
More information about the Piglit
mailing list