Sorry, I didn't mean to make that much of a stink.  Either's fine with me
as long as we're not doing 32 for half-float.

Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>


On Tue, Aug 12, 2014 at 8:09 AM, Neil Roberts <n...@linux.intel.com> wrote:

> I'm not sure if we came to a decision about what to do with the
> channel bits. I guess it's not really that important because probably
> nothing uses it for compressed formats except to check for the
> existence of the channels. Here is a v2 patch which picks 8/8/8/8 for
> the RGBA formats and 16/16/16 for the half-float formats. Would that
> be ok?
>
> I guess we should pick a policy and make it consistent for the other
> formats too but perhaps we can leave that to a later patch. It looks
> like the NVidia approach might be to return a number of bits that you
> would need to create a texture to represent the possible generated
> values from the decompressor. However that doesn't quite add up for
> the half-float formats because in that case you could accurately
> represent the values with a half-float texture and only 16 bits.
>
> If we wanted to pick that policy we would also have to change what we
> return for the S3TC formats because they can also return 8 bits of
> variance. The ETC2 formats already return 8.
>
> - Neil
>
> ------- >8 --------------- (use git am --scissors to automatically chop
> here)
>
> 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.
> ---
>  src/mesa/main/format_info.py | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/src/mesa/main/format_info.py b/src/mesa/main/format_info.py
> index a0eecd3..7424fe0 100644
> --- a/src/mesa/main/format_info.py
> +++ b/src/mesa/main/format_info.py
> @@ -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:
> --
> 1.9.3
>
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to