summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@canonical.com>2012-10-23 10:37:27 +0200
committerMaarten Lankhorst <maarten.lankhorst@canonical.com>2012-10-23 10:37:27 +0200
commit72230cd5a7846f7a26f929262a745dc0bdc34a3d (patch)
tree88a1537f90cbed2ff7e4d89784260e4e7095d8ab
parent1d7890ecb8b3188177ab85608ea232812672d923 (diff)
downloadxorg-driver-xf86-video-nouveau-72230cd5a7846f7a26f929262a745dc0bdc34a3d.tar.gz
exa: fix up download_from/upload_to screen
Add a missing return TRUE to download_from_screen. Add a missing exaMarkSync to memcpy in upload_to_screen. Add a really loud warning to both if memcpy to/from tiled is done. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
-rw-r--r--src/nouveau_exa.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/nouveau_exa.c b/src/nouveau_exa.c
index 13d7e1f..136b68f 100644
--- a/src/nouveau_exa.c
+++ b/src/nouveau_exa.c
@@ -285,9 +285,14 @@ nouveau_exa_download_from_screen(PixmapPtr pspix, int x, int y, int w, int h,
h -= lines;
y += lines;
}
+ return TRUE;
memcpy:
bo = nouveau_pixmap_bo(pspix);
+ if (nv50_style_tiled_pixmap(pspix))
+ ErrorF("%s:%d - falling back to memcpy ignores tiling\n",
+ __func__, __LINE__);
+
if (nouveau_bo_map(bo, NOUVEAU_BO_RD, pNv->client))
return FALSE;
src = (char *)bo->map + (y * src_pitch) + (x * cpp);
@@ -373,10 +378,16 @@ nouveau_exa_upload_to_screen(PixmapPtr pdpix, int x, int y, int w, int h,
/* fallback to memcpy-based transfer */
memcpy:
bo = nouveau_pixmap_bo(pdpix);
+ if (nv50_style_tiled_pixmap(pdpix))
+ ErrorF("%s:%d - falling back to memcpy ignores tiling\n",
+ __func__, __LINE__);
+
if (nouveau_bo_map(bo, NOUVEAU_BO_WR, pNv->client))
return FALSE;
dst = (char *)bo->map + (y * dst_pitch) + (x * cpp);
ret = NVAccelMemcpyRect(dst, src, h, dst_pitch, src_pitch, w*cpp);
+ if (ret)
+ exaMarkSync(pdpix->drawable.pScreen);
return ret;
}