From: Dave Airlie <airl...@redhat.com> We had a bug report from some screensavers in xscreensaver package not working on ppc64be, I took a day out to cause myself undue pain.
I tracked it down to the depth buffer not being read correctly, I've no idea if this is the proper fix for it, I need to run some more piglit on it. (my ppc64 f20 box is in a state of bad flux, and needs more RAM.) This does fix glean stencil2, glsl1 frag writing tests at least. Signed-off-by: Dave Airlie <airl...@redhat.com> --- src/gallium/drivers/llvmpipe/lp_bld_depth.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index 5c13ee5..8e8b394 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -365,6 +365,10 @@ get_z_shift_and_mask(const struct util_format_description *format_desc, *width = format_desc->channel[z_swizzle].size; *shift = format_desc->channel[z_swizzle].shift; +#ifdef PIPE_ARCH_BIG_ENDIAN + *shift = total_bits - *width - *shift; +#endif + if (*width == total_bits) { *mask = 0xffffffff; } else { @@ -403,6 +407,9 @@ get_s_shift_and_mask(const struct util_format_description *format_desc, *shift = format_desc->channel[s_swizzle].shift; sz = format_desc->channel[s_swizzle].size; +#ifdef PIPE_ARCH_BIG_ENDIAN + *shift = format_desc->block.bits - sz - *shift; +#endif *mask = (1U << sz) - 1U; return TRUE; -- 1.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev