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 <[email protected]> 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 [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
