[PATCH] Fix shadowfb on big-endian machines

Alex Deucher alexdeucher at gmail.com
Thu Aug 22 07:35:32 PDT 2013


On Sun, Aug 18, 2013 at 10:07 AM, Mark Kettenis <mark.kettenis at xs4all.nl> wrote:
> For shadowfb, the framebuffer needs to have the RADEON_TILING_SURFACE
> flag set, otherwise the appropriate byte swapping won't happen.
>
> See https://bugs.freedesktop.org/show_bug.cgi?id=66663
>
> Signed-off-by: Mark Kettenis <kettenis at openbsd.org>

Pushed.  thanks!

Alex

>
>
> diff --git src/drmmode_display.c src/drmmode_display.c
> index 1df104d..921b7ba 100644
> --- src/drmmode_display.c
> +++ src/drmmode_display.c
> @@ -1590,6 +1590,9 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
>             tiling_flags |= RADEON_TILING_SWAP_16BIT;
>             break;
>         }
> +       if (info->ChipFamily < CHIP_FAMILY_R600 &&
> +           info->r600_shadow_fb && tiling_flags)
> +           tiling_flags |= RADEON_TILING_SURFACE;
>  #endif
>         if (tiling_flags)
>             radeon_bo_set_tiling(info->front_bo, tiling_flags, pitch);
> diff --git src/radeon_kms.c src/radeon_kms.c
> index edc3b04..82e88d4 100644
> --- src/radeon_kms.c
> +++ src/radeon_kms.c
> @@ -1585,6 +1585,9 @@ static Bool radeon_setup_kernel_mem(ScreenPtr pScreen)
>             tiling_flags |= RADEON_TILING_SWAP_16BIT;
>             break;
>         }
> +       if (info->ChipFamily < CHIP_FAMILY_R600 &&
> +           info->r600_shadow_fb && tiling_flags)
> +           tiling_flags |= RADEON_TILING_SURFACE;
>  #endif
>         if (tiling_flags)
>              radeon_bo_set_tiling(info->front_bo, tiling_flags, pitch);
> _______________________________________________
> xorg-driver-ati mailing list
> xorg-driver-ati at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-driver-ati


More information about the xorg-driver-ati mailing list