[Mesa-dev] [PATCH 3/3] st/mesa: add astc support

Ilia Mirkin imirkin at alum.mit.edu
Sat Nov 21 13:18:42 PST 2015


On Sat, Nov 21, 2015 at 4:09 PM, Roland Scheidegger <sroland at vmware.com> wrote:
> Am 21.11.2015 um 21:03 schrieb Ilia Mirkin:
>> This doesn't account for the ldr/hdr distinction... that will probably
>> have to be exposed via a separate cap. When relevant hardware appears,
>> this can be worked out.
>>
>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>> ---
>>  src/mesa/state_tracker/st_extensions.c |  32 ++++-
>>  src/mesa/state_tracker/st_format.c     | 231 +++++++++++++++++++++++++++++++++
>>  2 files changed, 262 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
>> index 99e96e1..a2418e2 100644
>> --- a/src/mesa/state_tracker/st_extensions.c
>> +++ b/src/mesa/state_tracker/st_extensions.c
>> @@ -343,7 +343,7 @@ struct st_extension_cap_mapping {
>>
>>  struct st_extension_format_mapping {
>>     int extension_offset[2];
>> -   enum pipe_format format[8];
>> +   enum pipe_format format[32];
>>
>>     /* If TRUE, at least one format must be supported for the extensions to be
>>      * advertised. If FALSE, all the formats must be supported. */
>> @@ -569,6 +569,36 @@ void st_init_extensions(struct pipe_screen *screen,
>>            PIPE_FORMAT_BPTC_RGB_FLOAT,
>>            PIPE_FORMAT_BPTC_RGB_UFLOAT } },
>>
>> +      { { o(KHR_texture_compression_astc_ldr) },
>> +        { PIPE_FORMAT_ASTC_4x4,
>> +          PIPE_FORMAT_ASTC_5x4,
>> +          PIPE_FORMAT_ASTC_5x5,
>> +          PIPE_FORMAT_ASTC_6x5,
>> +          PIPE_FORMAT_ASTC_6x6,
>> +          PIPE_FORMAT_ASTC_8x5,
>> +          PIPE_FORMAT_ASTC_8x6,
>> +          PIPE_FORMAT_ASTC_8x8,
>> +          PIPE_FORMAT_ASTC_10x5,
>> +          PIPE_FORMAT_ASTC_10x6,
>> +          PIPE_FORMAT_ASTC_10x8,
>> +          PIPE_FORMAT_ASTC_10x10,
>> +          PIPE_FORMAT_ASTC_12x10,
>> +          PIPE_FORMAT_ASTC_12x12,
>> +          PIPE_FORMAT_ASTC_4x4_SRGB,
>> +          PIPE_FORMAT_ASTC_5x4_SRGB,
>> +          PIPE_FORMAT_ASTC_5x5_SRGB,
>> +          PIPE_FORMAT_ASTC_6x5_SRGB,
>> +          PIPE_FORMAT_ASTC_6x6_SRGB,
>> +          PIPE_FORMAT_ASTC_8x5_SRGB,
>> +          PIPE_FORMAT_ASTC_8x6_SRGB,
>> +          PIPE_FORMAT_ASTC_8x8_SRGB,
>> +          PIPE_FORMAT_ASTC_10x5_SRGB,
>> +          PIPE_FORMAT_ASTC_10x6_SRGB,
>> +          PIPE_FORMAT_ASTC_10x8_SRGB,
>> +          PIPE_FORMAT_ASTC_10x10_SRGB,
>> +          PIPE_FORMAT_ASTC_12x10_SRGB,
>> +          PIPE_FORMAT_ASTC_12x12_SRGB } },
> Seems a bit excessive to check support for all formats - I'd guess all
> hw really would support just all or none. But this follows what is done
> for other formats, so why not.

It caught a bug I had where I accidentally forgot about 4 of the
formats due to... not sure why tbh. But they got lost in the driver
list somehow.

> I'm actually somewhat surprised there isn't any code somewhere assuming
> npot block size :-).

Probably there are some. I suspect that align() gets used somewhere
and it'll break. We'll find those in due time...

> FWIW we couldn't actually express the "real" 3d compressed astc formats
> in gallium util format code (as we only have block width/height, not
> depth), but apparently this is still something not implemented even with
> astc hdr (still just sliced 3d).

Right, not sure if any hw implements this either... this is the
OES_texture_compression_astc functionality.

>
> For the series:
> Reviewed-by: Roland Scheidegger <sroland at vmware.com>
>

Thanks!


More information about the mesa-dev mailing list