Re: [Piglit] [PATCH 3/3] msaa: Add test to verify sample-alpha-to-one with dual source blending
On 31 July 2012 20:17, Anuj Phogat anuj.pho...@gmail.com wrote: src0_alpha should be modified if sample-alpha-to-one is enabled. Both src0 and src1 colorcan be used to determine blending factors. Note: Test passes on mesa i965 drivers but fails on NVIDIA's proprietary linux drivers. No blending occurs with NVIDIA drivers when sample-alpha-to-one is enabled and num_samples 0. Blending is observed for num_samples = 0. OpenGL specification says nothing specific about this scenario but test ouput by NVIDIA looks logically incorrect. Any thoughts? I believe the nVidia behaviour is correct. When sample-alpha-to-one is enabled and num_samples 0, no blending is expected, since all alpha values should get set to 1 before blending occurs. When num_samples = 0, blending is expected, since according to the spec, sample-alpha-to-one should be ignored when multisampled rendering is disabled. With my suggested changes to patch 1/3, this test passes on my nVidia system, so this patch is: Reviewed-by: Paul Berry stereotype...@gmail.com Signed-off-by: Anuj Phogat anuj.pho...@gmail.com --- tests/all.tests|6 + .../ext_framebuffer_multisample/CMakeLists.gl.txt |2 + .../alpha-to-one-dual-src-blend.cpp| 123 3 files changed, 131 insertions(+), 0 deletions(-) create mode 100644 tests/spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend.cpp diff --git a/tests/all.tests b/tests/all.tests index 7b66b27..741a141 100644 --- a/tests/all.tests +++ b/tests/all.tests @@ -1481,6 +1481,12 @@ for num_samples in MSAA_SAMPLE_COUNTS: ext_framebuffer_multisample[test_name] = PlainExecTest(executable) for num_samples in MSAA_SAMPLE_COUNTS: +test_name = ' '.join(['alpha-to-one-dual-src-blend', str(num_samples)]) +executable = 'ext_framebuffer_multisample-{0} -auto'.format( +test_name) +ext_framebuffer_multisample[test_name] = PlainExecTest(executable) + +for num_samples in MSAA_SAMPLE_COUNTS: test_name = ' '.join(['int-draw-buffers-alpha-to-one', str(num_samples)]) executable = 'ext_framebuffer_multisample-{0} -auto'.format( test_name) diff --git a/tests/spec/ext_framebuffer_multisample/CMakeLists.gl.txt b/tests/spec/ext_framebuffer_multisample/CMakeLists.gl.txt index 30f7d5b..3e9d172 100644 --- a/tests/spec/ext_framebuffer_multisample/CMakeLists.gl.txt +++ b/tests/spec/ext_framebuffer_multisample/CMakeLists.gl.txt @@ -14,6 +14,8 @@ piglit_add_executable (ext_framebuffer_multisample-alpha-to-coverage-no-draw-buf draw-buffers-common.cpp alpha-to-coverage-no-draw-buffer-zero.cpp) piglit_add_executable (ext_framebuffer_multisample-alpha-to-coverage-dual-src-blend common.cpp draw-buffers-common.cpp alpha-to-coverage-dual-src-blend.cpp) +piglit_add_executable (ext_framebuffer_multisample-alpha-to-one-dual-src-blend common.cpp + draw-buffers-common.cpp alpha-to-one-dual-src-blend.cpp) piglit_add_executable (ext_framebuffer_multisample-alpha-to-one-msaa-disabled common.cpp draw-buffers-common.cpp alpha-to-one-msaa-disabled.cpp) piglit_add_executable (ext_framebuffer_multisample-alpha-to-one-single-sample-buffer common.cpp diff --git a/tests/spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend.cpp b/tests/spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend.cpp new file mode 100644 index 000..4eb8dc8 --- /dev/null +++ b/tests/spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend.cpp @@ -0,0 +1,123 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the Software), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include draw-buffers-common.h + +/** + * \file alpha-to-one-dual-src-blend.cpp + * + *
[Piglit] [PATCH 3/3] msaa: Add test to verify sample-alpha-to-one with dual source blending
src0_alpha should be modified if sample-alpha-to-one is enabled. Both src0 and src1 colorcan be used to determine blending factors. Note: Test passes on mesa i965 drivers but fails on NVIDIA's proprietary linux drivers. No blending occurs with NVIDIA drivers when sample-alpha-to-one is enabled and num_samples 0. Blending is observed for num_samples = 0. OpenGL specification says nothing specific about this scenario but test ouput by NVIDIA looks logically incorrect. Any thoughts? Signed-off-by: Anuj Phogat anuj.pho...@gmail.com --- tests/all.tests|6 + .../ext_framebuffer_multisample/CMakeLists.gl.txt |2 + .../alpha-to-one-dual-src-blend.cpp| 123 3 files changed, 131 insertions(+), 0 deletions(-) create mode 100644 tests/spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend.cpp diff --git a/tests/all.tests b/tests/all.tests index 7b66b27..741a141 100644 --- a/tests/all.tests +++ b/tests/all.tests @@ -1481,6 +1481,12 @@ for num_samples in MSAA_SAMPLE_COUNTS: ext_framebuffer_multisample[test_name] = PlainExecTest(executable) for num_samples in MSAA_SAMPLE_COUNTS: +test_name = ' '.join(['alpha-to-one-dual-src-blend', str(num_samples)]) +executable = 'ext_framebuffer_multisample-{0} -auto'.format( +test_name) +ext_framebuffer_multisample[test_name] = PlainExecTest(executable) + +for num_samples in MSAA_SAMPLE_COUNTS: test_name = ' '.join(['int-draw-buffers-alpha-to-one', str(num_samples)]) executable = 'ext_framebuffer_multisample-{0} -auto'.format( test_name) diff --git a/tests/spec/ext_framebuffer_multisample/CMakeLists.gl.txt b/tests/spec/ext_framebuffer_multisample/CMakeLists.gl.txt index 30f7d5b..3e9d172 100644 --- a/tests/spec/ext_framebuffer_multisample/CMakeLists.gl.txt +++ b/tests/spec/ext_framebuffer_multisample/CMakeLists.gl.txt @@ -14,6 +14,8 @@ piglit_add_executable (ext_framebuffer_multisample-alpha-to-coverage-no-draw-buf draw-buffers-common.cpp alpha-to-coverage-no-draw-buffer-zero.cpp) piglit_add_executable (ext_framebuffer_multisample-alpha-to-coverage-dual-src-blend common.cpp draw-buffers-common.cpp alpha-to-coverage-dual-src-blend.cpp) +piglit_add_executable (ext_framebuffer_multisample-alpha-to-one-dual-src-blend common.cpp + draw-buffers-common.cpp alpha-to-one-dual-src-blend.cpp) piglit_add_executable (ext_framebuffer_multisample-alpha-to-one-msaa-disabled common.cpp draw-buffers-common.cpp alpha-to-one-msaa-disabled.cpp) piglit_add_executable (ext_framebuffer_multisample-alpha-to-one-single-sample-buffer common.cpp diff --git a/tests/spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend.cpp b/tests/spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend.cpp new file mode 100644 index 000..4eb8dc8 --- /dev/null +++ b/tests/spec/ext_framebuffer_multisample/alpha-to-one-dual-src-blend.cpp @@ -0,0 +1,123 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the Software), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include draw-buffers-common.h + +/** + * \file alpha-to-one-dual-src-blend.cpp + * + * Verify sample-alpha-to-one with dual source blending. + * + * This test operates by drawing a pattern in multisample FBO to generate + * a reference and test image. Reference image is drawn to the right half of + * window system draw buffer and test image to the left half. + * + * Compare the left and right halves of window system frame buffer to verify + * the test image. + * + * Author: Anuj Phogat anuj.pho...@gmail.com + */ + +PIGLIT_GL_TEST_MAIN(512 /*window_width*/, + 256 /*window_height*/, + GLUT_DOUBLE | GLUT_RGBA | GLUT_ALPHA) +void +print_usage_and_exit(char *prog_name) +{ +printf(Usage: %s