[Piglit] [PATCH] ext_framebuffer_multisample: add --alpha-to-one option to coverage test
Roland Scheidegger
sroland at vmware.com
Fri Aug 4 17:38:43 UTC 2017
Yes, it passes here as well but I believe the test allows a lot of
variance - that was just visual inspection. (I believe if you'd just
implement that in the driver as ignore alpha-to-one if alpha-to-coverage
is also active only then you'd get a perfect match.)
Roland
Am 04.08.2017 um 19:28 schrieb Brian Paul:
> It passes here for me w/ NVIDIA's driver but I'll hold off on this until
> I can take a closer look.
>
> -Brina
>
> On 08/04/2017 11:11 AM, Roland Scheidegger wrote:
>> I think should mention that the reference probably isn't quite right (if
>> I try it here, the reference is the same with or without alpha-to-one,
>> but with nvidia with alpha-to-one it's a bit different (darker) than
>> without). I think it's because the reference drawing doesn't really take
>> into account that the samples which get written thanks to
>> coverage-to-alpha also had their alpha values changed to 1.0, but I
>> could be wrong and maybe it is correct after all...
>>
>> In any case,
>> Reviewed-by: Roland Scheidegger <sroland at vmware.com>
>>
>> Am 04.08.2017 um 19:03 schrieb Brian Paul:
>>> Alpha-to-one only makes sense when used with alpha-to-coverage. This
>>> patch adds a flag to the alpha-to-coverage test to exercise
>>> alpha-to-one.
>>> This will fail with drivers which emulate alpha-to-one in the FS.
>>> ---
>>> tests/all.py | 4
>>> ++++
>>> .../ext_framebuffer_multisample/sample-alpha-to-coverage.cpp | 11
>>> ++++++++---
>>> 2 files changed, 12 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/tests/all.py b/tests/all.py
>>> index ae55425..abe6185 100644
>>> --- a/tests/all.py
>>> +++ b/tests/all.py
>>> @@ -3044,6 +3044,10 @@ with profile.test_list.group_manager(
>>> sample_count, buffer_type],
>>> 'sample-alpha-to-coverage {} {}'.format(
>>> sample_count, buffer_type))
>>> + g(['ext_framebuffer_multisample-sample-alpha-to-coverage',
>>> + sample_count, buffer_type, '--alpha-to-one'],
>>> + 'sample-alpha-to-coverage-alpha-to-one {} {}'.format(
>>> + sample_count, buffer_type))
>>>
>>> for test in ['line-smooth', 'point-smooth', 'polygon-smooth',
>>> 'sample-alpha-to-one',
>>> diff --git
>>> a/tests/spec/ext_framebuffer_multisample/sample-alpha-to-coverage.cpp
>>> b/tests/spec/ext_framebuffer_multisample/sample-alpha-to-coverage.cpp
>>> index 7b756ba..32b4161 100644
>>> ---
>>> a/tests/spec/ext_framebuffer_multisample/sample-alpha-to-coverage.cpp
>>> +++
>>> b/tests/spec/ext_framebuffer_multisample/sample-alpha-to-coverage.cpp
>>> @@ -54,11 +54,12 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
>>> PIGLIT_GL_TEST_CONFIG_END
>>>
>>> static GLenum buffer_to_test;
>>> +static bool alpha_to_one = false;
>>>
>>> void
>>> print_usage_and_exit(char *prog_name)
>>> {
>>> - printf("Usage: %s <num_samples> <test_type>\n"
>>> + printf("Usage: %s <num_samples> <test_type> [--alpha-to-one]\n"
>>> " where <test_type> is one of:\n"
>>> " color\n"
>>> " depth\n",
>>> @@ -93,6 +94,10 @@ piglit_init(int argc, char **argv)
>>> } else
>>> print_usage_and_exit(argv[0]);
>>>
>>> + if (argc == 4 && strcmp(argv[3], "--alpha-to-one") == 0) {
>>> + alpha_to_one = true;
>>> + }
>>> +
>>> int pattern_width = piglit_width / 2;
>>> int pattern_height = piglit_height / num_attachments;
>>>
>>> @@ -133,10 +138,10 @@ piglit_display()
>>> */
>>> if(buffer_to_test == GL_COLOR_BUFFER_BIT)
>>> draw_reference_image(true /* sample_alpha_to_coverage */,
>>> - false /* sample_alpha_to_one */);
>>> + alpha_to_one);
>>>
>>> draw_test_image(true /* sample_alpha_to_coverage */,
>>> - false /* sample_alpha_to_one */);
>>> + alpha_to_one);
>>>
>>> pass = piglit_check_gl_error(GL_NO_ERROR) && pass;
>>>
>>>
>>
>
More information about the Piglit
mailing list