summaryrefslogtreecommitdiff
path: root/src/radeon_exa.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-11-17 17:37:25 -0500
committerAlex Deucher <alexdeucher@gmail.com>2010-12-01 20:30:24 -0500
commitfccdca8db34010f566bd068c74cdef0f4a8cb7f5 (patch)
tree0c92849103181f7cfca01fcf8fbc2860f2891dd4 /src/radeon_exa.c
parent035f7f3ab529ca19b853066792af8a23d08a0f53 (diff)
radeon/kms: allow tiled front buffer on 6xx/7xx
Use UTS/DFS to tile/untile as appropriate for sw access. Also enables pageflipping with tiling enabled.
Diffstat (limited to 'src/radeon_exa.c')
-rw-r--r--src/radeon_exa.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/radeon_exa.c b/src/radeon_exa.c
index 503d569b..1c512d43 100644
--- a/src/radeon_exa.c
+++ b/src/radeon_exa.c
@@ -306,6 +306,17 @@ Bool RADEONPrepareAccess_CS(PixmapPtr pPix, int index)
if (!driver_priv)
return FALSE;
+ if (info->ChipFamily >= CHIP_FAMILY_R600) {
+ uint32_t tiling_flags = 0, pitch = 0;
+
+ ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch);
+ if (ret)
+ return FALSE;
+ /* untile in DFS/UTS */
+ if (tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))
+ return FALSE;
+ }
+
/* if we have more refs than just the BO then flush */
if (radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
flush = TRUE;