summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnuj Phogat <anuj.phogat@gmail.com>2014-09-11 11:22:41 -0700
committerAnuj Phogat <anuj.phogat@gmail.com>2015-01-07 15:18:13 -0800
commitb436f05ae26fcad1863c1f88ea91f3cfd8ecd9e2 (patch)
tree28edc055c0c9d75108eddb9c52b28f3e9fe601bb
parent8e842367d2c035d9bf23aa8939d7bd1f8e23e297 (diff)
ext_framebuffer_multisample: Add an option to run formats test for all sample counts
This new option verifies that a correct msaa resolve shader is compiled and used following the change in source buffer sample count. Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
-rw-r--r--tests/all.py2
-rw-r--r--tests/spec/ext_framebuffer_multisample/formats.cpp39
2 files changed, 34 insertions, 7 deletions
diff --git a/tests/all.py b/tests/all.py
index 1b0f91e6d..5b552b0ac 100644
--- a/tests/all.py
+++ b/tests/all.py
@@ -2619,7 +2619,7 @@ for num_samples in MSAA_SAMPLE_COUNTS:
test_name)
ext_framebuffer_multisample[test_name] = PiglitGLTest(executable, run_concurrent=True)
-for num_samples in MSAA_SAMPLE_COUNTS:
+for num_samples in ('all_samples', ) + MSAA_SAMPLE_COUNTS:
test_name = ' '.join(['formats', str(num_samples)])
executable = 'ext_framebuffer_multisample-{0}'.format(
test_name)
diff --git a/tests/spec/ext_framebuffer_multisample/formats.cpp b/tests/spec/ext_framebuffer_multisample/formats.cpp
index 7a54851ab..4b1feba81 100644
--- a/tests/spec/ext_framebuffer_multisample/formats.cpp
+++ b/tests/spec/ext_framebuffer_multisample/formats.cpp
@@ -62,7 +62,9 @@ namespace {
const int pattern_width = 256; const int pattern_height = 256;
+bool all_samples = false;
int num_samples;
+GLint max_samples;
ColorGradientSunburst *test_pattern_vec4;
ColorGradientSunburst *test_pattern_ivec4;
@@ -571,7 +573,10 @@ test_format(const struct format_desc *format)
void
print_usage_and_exit(char *prog_name)
{
- printf("Usage: %s <num_samples> [test_set]\n", prog_name);
+ printf("Usage: %s <sample_arg> [test_set]\n"
+ " where <sample_arg> is one of:\n"
+ " <num_samples>: test supplied sample count\n"
+ " all_samples: test all power of 2 samples\n" , prog_name);
piglit_report_result(PIGLIT_FAIL);
}
@@ -584,9 +589,13 @@ piglit_init(int argc, char **argv)
/* First argument (required): num_samples */
char *endptr = NULL;
- num_samples = strtol(argv[1], &endptr, 0);
- if (endptr != argv[1] + strlen(argv[1]))
- print_usage_and_exit(argv[0]);
+ if (streq(argv[1], "all_samples"))
+ all_samples = true;
+ else {
+ num_samples = strtol(argv[1], &endptr, 0);
+ if (endptr != argv[1] + strlen(argv[1]))
+ print_usage_and_exit(argv[0]);
+ }
/* Second argument (optional): test_set */
int test_set = 0; /* Default to core */
@@ -598,7 +607,6 @@ piglit_init(int argc, char **argv)
piglit_require_extension("GL_ARB_vertex_array_object");
/* Skip the test if num_samples > GL_MAX_SAMPLES */
- GLint max_samples;
glGetIntegerv(GL_MAX_SAMPLES, &max_samples);
if (num_samples > max_samples)
piglit_report_result(PIGLIT_SKIP);
@@ -618,7 +626,26 @@ piglit_init(int argc, char **argv)
extern "C" enum piglit_result
piglit_display()
{
- return fbo_formats_display(test_format);
+ piglit_result result = PIGLIT_PASS;
+ bool pass = true;
+
+ if (!all_samples) {
+ return fbo_formats_display(test_format);
+ }
+
+ for (num_samples = 0; num_samples <= max_samples; ) {
+ result = fbo_formats_display(test_format);
+ printf("Samples = %d, Result = %s\n", num_samples,
+ piglit_result_to_string(result));
+
+ num_samples = num_samples ? num_samples << 1 : num_samples + 2;
+
+ if (result == PIGLIT_SKIP)
+ return result;
+
+ pass = (result == PIGLIT_PASS) && pass;
+ }
+ return pass ? PIGLIT_PASS : PIGLIT_FAIL;
}
};