diff options
author | Michel Dänzer <daenzer@vmware.com> | 2011-04-04 17:37:12 +0200 |
---|---|---|
committer | Michel Dänzer <michel@daenzer.net> | 2011-04-05 14:13:08 +0200 |
commit | cc7d1fa39da40a532fcdbe6c7924ca47a879e66a (patch) | |
tree | f820be4a92909a4324f3899c14dd4410b51c4dd2 /src/r600_exa.c | |
parent | f0b7d7b449cc77bb2b281d81108507f8bc2e6018 (diff) |
EXA: Cache BO tiling flags.
Calling into the kernel every time is quite expensive, and nobody else should
ever change the tiling flags.
There's still more to do along the same lines for >= R6xx.
Diffstat (limited to 'src/r600_exa.c')
-rw-r--r-- | src/r600_exa.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/src/r600_exa.c b/src/r600_exa.c index 7736d243..c6a244c4 100644 --- a/src/r600_exa.c +++ b/src/r600_exa.c @@ -1784,7 +1784,7 @@ R600UploadToScreenCS(PixmapPtr pDst, int x, int y, int w, int h, Bool r; int i; struct r600_accel_object src_obj, dst_obj; - uint32_t tiling_flags = 0, pitch = 0, height, base_align; + uint32_t height, base_align; if (bpp < 8) return FALSE; @@ -1793,14 +1793,10 @@ R600UploadToScreenCS(PixmapPtr pDst, int x, int y, int w, int h, if (!driver_priv || !driver_priv->bo) return FALSE; - ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch); - if (ret) - ErrorF("radeon_bo_get_tiling failed\n"); - /* If we know the BO won't be busy, don't bother with a scratch */ copy_dst = driver_priv->bo; copy_pitch = pDst->devKind; - if (!(tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))) { + if (!(driver_priv->tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))) { if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) { flush = FALSE; if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain)) @@ -1901,7 +1897,7 @@ R600DownloadFromScreenCS(PixmapPtr pSrc, int x, int y, int w, Bool flush = FALSE; Bool r; struct r600_accel_object src_obj, dst_obj; - uint32_t tiling_flags = 0, pitch = 0, height, base_align; + uint32_t height, base_align; if (bpp < 8) return FALSE; @@ -1910,14 +1906,10 @@ R600DownloadFromScreenCS(PixmapPtr pSrc, int x, int y, int w, if (!driver_priv || !driver_priv->bo) return FALSE; - ret = radeon_bo_get_tiling(driver_priv->bo, &tiling_flags, &pitch); - if (ret) - ErrorF("radeon_bo_get_tiling failed\n"); - /* If we know the BO won't end up in VRAM anyway, don't bother with a scratch */ copy_src = driver_priv->bo; copy_pitch = pSrc->devKind; - if (!(tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))) { + if (!(driver_priv->tiling_flags & (RADEON_TILING_MACRO | RADEON_TILING_MICRO))) { if (radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) { src_domain = radeon_bo_get_src_domain(driver_priv->bo); if ((src_domain & (RADEON_GEM_DOMAIN_GTT | RADEON_GEM_DOMAIN_VRAM)) == |