[Mesa-dev] [PATCH 3/9] st/mesa: tweak surface format mapping table

Brian Paul brianp at vmware.com
Mon Aug 24 13:54:36 PDT 2015


On 08/24/2015 02:44 PM, Ilia Mirkin wrote:
> Not that I really care, but... why flip the order of bgra vs rgba?

Because if an 8-bit RGBA integer texture is created, we'll use the 
gallium format PIPE_FORMAT_R8G8B8A8_SINT.  If we create another 
non-integer surface with PIPE_FORMAT_B8G8R8A8_UNORM instead of 
PIPE_FORMAT_R8G8B8A8_UNORM we'll get a failure when copying image data 
because of the component order difference.

> Also, do the ARB_texture_view piglits still pass? They're really
> sensitive to the relative consistency of this stuff.

Hmm, one regression in arb_texture_view-lifetime-format on llvmpipe, but 
not with softpipe.  I'll take a look.

-Brian

>
> Note that this will really only affect glTexStorage since glTexImage
> is likely to hit the exact_format_* logic...
>
> On Mon, Aug 24, 2015 at 4:37 PM, Brian Paul <brianp at vmware.com> wrote:
>> 1. Try to choose R8G8B8A8 unorm/srgb formats before other orders in an
>> effort to try to match component ordering for UINT/SINT/etc.
>>
>> 2. If we can't get a format such as PIPE_FORMAT_A16_UNORM, try
>> PIPE_FORMAT_R16G16B16A16_UNORM before shallower formats.
>> ---
>>   src/mesa/state_tracker/st_format.c | 20 +++++++++++---------
>>   1 file changed, 11 insertions(+), 9 deletions(-)
>>
>> diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
>> index db7b5b7..a8fa6b1 100644
>> --- a/src/mesa/state_tracker/st_format.c
>> +++ b/src/mesa/state_tracker/st_format.c
>> @@ -943,23 +943,23 @@ struct format_mapping
>>
>>
>>   #define DEFAULT_RGBA_FORMATS \
>> -      PIPE_FORMAT_B8G8R8A8_UNORM, \
>>         PIPE_FORMAT_R8G8B8A8_UNORM, \
>> +      PIPE_FORMAT_B8G8R8A8_UNORM, \
>>         PIPE_FORMAT_A8R8G8B8_UNORM, \
>>         PIPE_FORMAT_A8B8G8R8_UNORM, \
>>         0
>>
>>   #define DEFAULT_RGB_FORMATS \
>> -      PIPE_FORMAT_B8G8R8X8_UNORM, \
>>         PIPE_FORMAT_R8G8B8X8_UNORM, \
>> +      PIPE_FORMAT_B8G8R8X8_UNORM, \
>>         PIPE_FORMAT_X8R8G8B8_UNORM, \
>>         PIPE_FORMAT_X8B8G8R8_UNORM, \
>>         PIPE_FORMAT_B5G6R5_UNORM, \
>>         DEFAULT_RGBA_FORMATS
>>
>>   #define DEFAULT_SRGBA_FORMATS \
>> -      PIPE_FORMAT_B8G8R8A8_SRGB, \
>>         PIPE_FORMAT_R8G8B8A8_SRGB, \
>> +      PIPE_FORMAT_B8G8R8A8_SRGB, \
>>         PIPE_FORMAT_A8R8G8B8_SRGB, \
>>         PIPE_FORMAT_A8B8G8R8_SRGB, \
>>         0
>> @@ -1050,8 +1050,8 @@ static const struct format_mapping format_map[] = {
>>      /* basic Alpha formats */
>>      {
>>         { GL_ALPHA12, GL_ALPHA16, 0 },
>> -      { PIPE_FORMAT_A16_UNORM, PIPE_FORMAT_A8_UNORM,
>> -        DEFAULT_RGBA_FORMATS }
>> +      { PIPE_FORMAT_A16_UNORM, PIPE_FORMAT_R16G16B16A16_UNORM,
>> +        PIPE_FORMAT_A8_UNORM, DEFAULT_RGBA_FORMATS }
>>      },
>>      {
>>         { GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_COMPRESSED_ALPHA, 0 },
>> @@ -1061,7 +1061,8 @@ static const struct format_mapping format_map[] = {
>>      /* basic Luminance formats */
>>      {
>>         { GL_LUMINANCE12, GL_LUMINANCE16, 0 },
>> -      { PIPE_FORMAT_L16_UNORM, PIPE_FORMAT_L8_UNORM, DEFAULT_RGB_FORMATS }
>> +      { PIPE_FORMAT_L16_UNORM, PIPE_FORMAT_R16G16B16A16_UNORM,
>> +        PIPE_FORMAT_L8_UNORM, DEFAULT_RGB_FORMATS }
>>      },
>>      {
>>         { 1, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, 0 },
>> @@ -1072,8 +1073,8 @@ static const struct format_mapping format_map[] = {
>>      {
>>         { GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12,
>>           GL_LUMINANCE16_ALPHA16, 0},
>> -      { PIPE_FORMAT_L16A16_UNORM, PIPE_FORMAT_L8A8_UNORM,
>> -        DEFAULT_RGBA_FORMATS }
>> +      { PIPE_FORMAT_L16A16_UNORM, PIPE_FORMAT_R16G16B16A16_UNORM,
>> +        PIPE_FORMAT_L8A8_UNORM, DEFAULT_RGBA_FORMATS }
>>      },
>>      {
>>         { 2, GL_LUMINANCE_ALPHA, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, 0 },
>> @@ -1088,7 +1089,8 @@ static const struct format_mapping format_map[] = {
>>      /* basic Intensity formats */
>>      {
>>         { GL_INTENSITY12, GL_INTENSITY16, 0 },
>> -      { PIPE_FORMAT_I16_UNORM, PIPE_FORMAT_I8_UNORM, DEFAULT_RGBA_FORMATS }
>> +      { PIPE_FORMAT_I16_UNORM, PIPE_FORMAT_R16G16B16A16_UNORM,
>> +        PIPE_FORMAT_I8_UNORM, DEFAULT_RGBA_FORMATS }
>>      },
>>      {
>>         { GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8,
>> --
>> 1.9.1
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=BQIBaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=SY7sZnUzKYfxqHPVjQDraab8GvwKRPAQwLf6pGYe164&s=fWX6KozrNrtNcGIdaZ16gTnMZp98rpIMJm5ROhC26LE&e=



More information about the mesa-dev mailing list