mesa/format_info: Add support for the BPTC layout
authorNeil Roberts <neil@linux.intel.com>
Wed, 6 Aug 2014 15:52:14 +0000 (16:52 +0100)
committerNeil Roberts <neil@linux.intel.com>
Tue, 12 Aug 2014 17:23:38 +0000 (18:23 +0100)
Adds the ‘bptc’ layout to get_channel_bits. The channel bits for BPTC depend
on the mode but as it only has to be an approximation this sets it to 8 for
the two UNORM formats and 16 for the two half-float formats. These represent
the minimum number of bits of variation that can be generated by the
interpolation of the two formats.

This doesn't quite match what we do for S3TC which only returns 4 even though
it can similarly generate 8 bits from the interpolation. However it does match
what we return for ETC2. For reference, NVidia seems to return 8 bits for the
UNORM formats and 32 bits for the half-float formats.

v2: Change the number of bits to 8/8/8/8 for the UNORM formats and 16/16/16
    for the half-float formats.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/mesa/main/format_info.py

index a0eecd309513e8368bf08c7b228eba3a761a0f87..7424fe0cd5a227d0887b000f58c1c1040847dd2b 100644 (file)
@@ -127,6 +127,9 @@ def get_channel_bits(fmat, chan_name):
 
          bits = 11 if fmat.name.endswith('11_EAC') else 8
          return bits if fmat.has_channel(chan_name) else 0
+      elif fmat.layout == 'bptc':
+         bits = 16 if fmat.name.endswith('_FLOAT') else 8
+         return bits if fmat.has_channel(chan_name) else 0
       else:
          assert False
    else: