[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