util: Add big-endian layout for a number of formats.
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>
Mon, 21 Jul 2014 15:32:38 +0000 (16:32 +0100)
committerDave Airlie <airlied@redhat.com>
Tue, 16 Sep 2014 04:02:56 +0000 (14:02 +1000)
commitf93b6d8cc5b0e3830e0c095772795e606fd1fe3a
tree956c795c38d78091f2ffca09a84e75dd815109f3
parent9cd4dced06aaa73d6f7b92fed5b4433569f22aca
util: Add big-endian layout for a number of formats.

This patch builds on 6c8f547f66e68b495c708f8ffcb67370caa5ffe8 and
previous patches by allowing u_format.csv to specify separate big-endian
and little-endian layouts.  It then uses this to specify the correct layouts
for various depth/stencil formats.  Later patches handle other formats.

To recap, the idea is that u_format.csv lists the channels for an N-byte
value as though it were an N-byte integer.  For little-endian targets
the channels are listed starting at the least-significant bit of the
integer while for big-endian targets the channels are listed starting
at the most-significant bit.  This means that for something like
PIPE_FORMAT_B8G8R8A8_UNORM (blue in first byte of memory, alpha in last
byte of memory) the orders are the same for both endiannesses.  But for
something like PIPE_FORMAT_S8_UINT_Z24_UNORM, where the stencil is in
the least significant byte of a 32-bit integer, there need to be separate
channel definitions for each endianness.

The effect of this patch is to make the affected PIPE_FORMAT_*s have
the same layout as the associated MESA_FORMAT_*s for big-endian.
The MESA_FORMAT_*s are already handled correctly.

Fixes various piglit tests on z.  No regressions on x86_64.

[airlied: squash subsequent patches]
util: Add big-endian layout for 5551 and 565 formats
util: Add big-endian layout for 10/10/10/2 formats
util: Add big-endian layout for 4444 formats
util: Add big-endian layout for 233 format
util: Add big-endian layout for 44 formats

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/auxiliary/util/u_format.csv
src/gallium/auxiliary/util/u_format_parse.py