diff options
author | Anuj Phogat <anuj.phogat@gmail.com> | 2014-09-11 11:22:41 -0700 |
---|---|---|
committer | Anuj Phogat <anuj.phogat@gmail.com> | 2015-01-07 15:18:13 -0800 |
commit | b436f05ae26fcad1863c1f88ea91f3cfd8ecd9e2 (patch) | |
tree | 28edc055c0c9d75108eddb9c52b28f3e9fe601bb | |
parent | 8e842367d2c035d9bf23aa8939d7bd1f8e23e297 (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.py | 2 | ||||
-rw-r--r-- | tests/spec/ext_framebuffer_multisample/formats.cpp | 39 |
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; } }; |