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 <[email protected]> --- tests/all.py | 2 +- tests/spec/ext_framebuffer_multisample/formats.cpp | 34 ++++++++++++++++++---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/tests/all.py b/tests/all.py index a4b6a43..23d64ec 100644 --- a/tests/all.py +++ b/tests/all.py @@ -2575,7 +2575,7 @@ for num_samples in MSAA_SAMPLE_COUNTS: test_name) ext_framebuffer_multisample[test_name] = concurrent_test(executable) -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 7a54851..8ee671d 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; @@ -584,9 +586,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 +604,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 +623,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; } }; -- 1.9.3 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
