[Piglit] [PATCH] teximage-colors: fix bogus precision assumptions and other issues

Jason Ekstrand jason at jlekstrand.net
Mon Oct 13 10:51:45 PDT 2014


With the formatting fixed:
Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>

On Mon, Oct 13, 2014 at 8:59 AM, Brian Paul <brianp at vmware.com> wrote:

> On 10/08/2014 06:00 PM, sroland at vmware.com wrote:
>
>> From: Roland Scheidegger <sroland at vmware.com>
>>
>> Some formats had some "implied" precision which relied on the driver
>> picking a
>> specific hw format (e.g. RGB5 and RGB5 both relied on driver picking 565).
>> These tests will now be skipped (for the exact test).
>> Others didn't have any implied precision but relied on driver picking a
>> format
>> with at least 8 bits even though the internal format only implied 4.
>> Also, the exact tests for srgb8 and srgb8_alpha8 were failing too due to
>> using
>> GL_BYTE instead of GL_UNSIGNED_BYTE.
>> With these fixes the only tests llvmpipe is failing seem to be the exact
>> GL_RGB8_SNORM and GL_RGB16_SNORM ones (1, 2 or 4 channels work and the
>> errors
>> seem to be one bit so maybe triggers some conversion somewhere using
>> different
>> signed conversion formula).
>> ---
>>   tests/texturing/teximage-colors.c | 43 ++++++++++++++++++++++++++++++
>> ++++-----
>>   1 file changed, 38 insertions(+), 5 deletions(-)
>>
>> diff --git a/tests/texturing/teximage-colors.c
>> b/tests/texturing/teximage-colors.c
>> index 2bee02f..dcbab65 100644
>> --- a/tests/texturing/teximage-colors.c
>> +++ b/tests/texturing/teximage-colors.c
>> @@ -60,12 +60,12 @@ struct texture_format formats[] = {
>>
>>         FORMAT(GL_RGB, GL_RGB, GL_NONE),
>>         FORMAT(GL_R3_G3_B2, GL_RGB, GL_UNSIGNED_BYTE_3_3_2),
>> -       FORMAT(GL_RGB4, GL_RGB, GL_UNSIGNED_SHORT_5_6_5),
>> -       FORMAT(GL_RGB5, GL_RGB, GL_UNSIGNED_SHORT_5_6_5),
>> +       FORMAT(GL_RGB4, GL_RGB, GL_NONE),
>> +       FORMAT(GL_RGB5, GL_RGB, GL_NONE),
>>         FORMAT(GL_RGB8, GL_RGB, GL_UNSIGNED_BYTE),
>>         FORMAT(GL_RGB8_SNORM, GL_RGB, GL_BYTE),
>> -       FORMAT(GL_SRGB8, GL_RGB, GL_BYTE),
>> -       FORMAT(GL_RGB10, GL_RGB, GL_UNSIGNED_SHORT),
>> +       FORMAT(GL_SRGB8, GL_RGB, GL_UNSIGNED_BYTE),
>> +       FORMAT(GL_RGB10, GL_RGB, GL_NONE),
>>         FORMAT(GL_R11F_G11F_B10F, GL_RGB, GL_NONE),
>>         FORMAT(GL_RGB12, GL_RGB, GL_NONE),
>>         FORMAT(GL_RGB9_E5, GL_RGB, GL_NONE),
>> @@ -81,7 +81,7 @@ struct texture_format formats[] = {
>>         FORMAT(GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE),
>>         FORMAT(GL_RGB10_A2, GL_RGBA, GL_UNSIGNED_INT_10_10_10_2),
>>         FORMAT(GL_RGBA8_SNORM, GL_RGBA, GL_BYTE),
>> -       FORMAT(GL_SRGB8_ALPHA8, GL_RGBA, GL_BYTE),
>> +       FORMAT(GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE),
>>         FORMAT(GL_RGBA12, GL_RGBA, GL_NONE),
>>         FORMAT(GL_RGBA16, GL_RGBA, GL_UNSIGNED_SHORT),
>>         FORMAT(GL_RGBA16_SNORM, GL_RGBA, GL_SHORT),
>> @@ -543,6 +543,39 @@ piglit_init(int argc, char **argv)
>>                 tolerance[3] = 0.3;
>>                 break;
>>         }
>> +
>> +       /* The tolerance lowering above only works for formats which have
>> +           explicit data types associated with them and even then it's
>> fishy
>> +           for some.
>> +           The default sort of assumes at least 7 bits which doesn't make
>> +          much sense in any case (for the specific formats with more
>> bits).
>> +          But just fix the cases which cannot pass (unless the driver
>> encodes
>> +          them with more bits). */
>>
>
> The comment is indented with a mix of spaces and tabs.  For block
> comments, we usually prefix each line with '*'.
>
>
>  +       switch (format->internal_format) {
>> +       case GL_RGB4:
>> +               tolerance[0] = 0.1;
>> +               tolerance[1] = 0.1;
>> +               tolerance[2] = 0.1;
>> +               tolerance[3] = 0.1;
>> +               break;
>> +       case GL_RGB5:
>> +               tolerance[0] = 0.05;
>> +               tolerance[1] = 0.05;
>> +               tolerance[2] = 0.05;
>> +               break;
>> +       case GL_LUMINANCE4_ALPHA4:
>> +               tolerance[0] = 0.1;
>> +               tolerance[1] = 0.1;
>> +               tolerance[2] = 0.1;
>> +               tolerance[3] = 0.1;
>> +               break;
>> +        case GL_LUMINANCE6_ALPHA2: /* broken but everybody uses 8+8 bits
>> */
>> +        case GL_LUMINANCE4: /* broken but presumably noone uses just 4
>> bits */
>> +       case GL_ALPHA4: /* broken but presumably noone uses just 4 bits */
>> +       case GL_RGBA2: /* broken (4444) but everybody uses more bits
>> anyway */
>>
>
> Need some tab indents there too.
>
>
>  +       default:
>> +               break;
>> +       }
>>   }
>>
>>   void
>>
>>
> Looks OK otherwise.
> Reviewed-by: Brian Paul <brianp at vmware.com>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20141013/2fdee71e/attachment.html>


More information about the Piglit mailing list