summaryrefslogtreecommitdiff
path: root/src/radeon_exa.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2011-02-01 19:24:44 -0500
committerAlex Deucher <alexdeucher@gmail.com>2011-02-01 19:24:44 -0500
commitef9bfb262db7004bef3704e5d914687e50d3fca4 (patch)
tree51700e58445c23afc429e54eddca93a33b81c070 /src/radeon_exa.c
parentbb16dd77321e5a64a3cb2d2ca9982117799ac1a8 (diff)
kms/pre-6xx: fix pageflipping with tiling
Use UTS/DFS to tile/untile as appropriate for sw access on pre-6xx. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=33738 Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Diffstat (limited to 'src/radeon_exa.c')
-rw-r--r--src/radeon_exa.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/radeon_exa.c b/src/radeon_exa.c
index 9df7251e..3dbdcae4 100644
--- a/src/radeon_exa.c
+++ b/src/radeon_exa.c
@@ -307,6 +307,7 @@ Bool RADEONPrepareAccess_CS(PixmapPtr pPix, int index)
#endif
Bool flush = FALSE;
int ret;
+ uint32_t tiling_flags = 0, pitch = 0;
#if X_BYTE_ORDER == X_BIG_ENDIAN
/* May need to handle byte swapping in DownloadFrom/UploadToScreen */
@@ -318,16 +319,13 @@ 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;
- }
+ /* check if we are tiled */
+ 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)) {