diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2011-02-01 19:24:44 -0500 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2011-02-01 19:24:44 -0500 |
commit | ef9bfb262db7004bef3704e5d914687e50d3fca4 (patch) | |
tree | 51700e58445c23afc429e54eddca93a33b81c070 /src/radeon_exa.c | |
parent | bb16dd77321e5a64a3cb2d2ca9982117799ac1a8 (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.c | 18 |
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)) { |