llvmpipe: Fix PIPE_FORMAT_Z32_FLOAT_S8X24_UINT handling for big-endian.
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>
Mon, 21 Jul 2014 15:53:36 +0000 (16:53 +0100)
committerDave Airlie <airlied@redhat.com>
Tue, 16 Sep 2014 04:02:55 +0000 (14:02 +1000)
commit9cd4dced06aaa73d6f7b92fed5b4433569f22aca
treebf9672082a35b4f5e39018e38140d2dec160dfd7
parent1a65629ccc590fe04a97b6df63d73e349b793619
llvmpipe: Fix PIPE_FORMAT_Z32_FLOAT_S8X24_UINT handling for big-endian.

llvmpipe treats PIPE_FORMAT_Z32_FLOAT_S8X24_UINT as a bit of a special case,
handling it as two 32-bit pieces rather than a single 64-bit block:

   /* 64bit d/s format is special already extracted 32 bits */
   total_bits = format_desc->block.bits > 32 ? 32 : format_desc->block.bits;

The format_desc describes the whole 64-bit block, so the z shift
will be 32 for big-endian.  But since we're accessing the z channel
as a 32-bit value rather than a 64-bit value, we need to mask the shift
with 31.

Signed-off-by: Richard Sandiford <rsandifo@linux.vnet.ibm.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/llvmpipe/lp_bld_depth.c