[Mesa-dev] [PATCH 0/6] Add support for BPTC texture compression

Ian Romanick idr at freedesktop.org
Thu Jul 24 08:34:05 PDT 2014


On 07/23/2014 07:41 PM, Matt Turner wrote:
> On Wed, Jul 23, 2014 at 3:16 PM, Ian Romanick <idr at freedesktop.org> wrote:
>> On 07/22/2014 12:09 PM, Neil Roberts wrote:
>>> Here's a first attempt at a patch series to implement BPTC texture
>>> compression in the i965 driver on Gen>=7.
>>>
>>> Getting it to work on the hardware is pretty trivial as it's just a
>>> case of adding some new Mesa format enums and then plugging them
>>> together with the right Intel surface type. However GL requires that
>>> you are able to get the library to compress textures on the fly so we
>>> need a compressor too. I think for BPTC it doesn't really make much
>>> sense to actually use this because it takes a very long time to search
>>> the entire space and compress an image properly. For example the
>>> NVidia compressor takes in the order of an hour for a full-screen
>>> image. Instead I've just done the minimal work needed to get something
>>> that gives vaguely passable results.
>>
>> Is that NVIDIA's off-line compression tool, or is that the compressor in
>> the driver?  A brute-force compressor will be very, very slow for BPTC.
>>  There are other approaches that are much faster without sacrificing
>> very much quality.
> 
> I suggested http://squish.paradice-insight.us/ which appears to be
> down now. It has a (MIT licensed) BC7 compressor and no free BC6H
> compressor. I suggested using it as an external dependency and
> contributing a BC6H compressor back.
> 
> I think the github repo is https://github.com/Ethatron/squish-ccr
> 
> I was thinking one of the cool things we might be able to do a ETC2 ->
> BC7 transcode on platforms without ETC2 hardware decompression. We
> won't be able to do that without a good compressor.

I had forgotten about that idea.  There is value in that.  Though, I
suspect we'd want to do that transcode on the GPU, and probably do it
block-by-block as Neil suggests.  That's probably step 9, and we're
still on step 2. :)



More information about the mesa-dev mailing list