summaryrefslogtreecommitdiff
path: root/saa
diff options
context:
space:
mode:
authorThomas Hellstrom <thellstrom@vmware.com>2011-12-14 10:22:22 +0100
committerThomas Hellstrom <thellstrom@vmware.com>2011-12-15 08:31:16 +0100
commitf664e31d73bd31594e069d8bcca872687b84d8d9 (patch)
tree85a9b79ec5c0607d7516d4bad8b339c0f4d552e6 /saa
parent0eef22437093d29f572abea845fff9c03fca5e4e (diff)
saa: Always read back hw contents on poly_fill_rect
The damage region may be much larger than the actual area filled, so make sure we read back any hw contents in the damage region since we use it to mark sw dirty. Revisit this in the future since it may increase readbacks in an undesired way. There are workarounds. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
Diffstat (limited to 'saa')
-rw-r--r--saa/saa_unaccel.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/saa/saa_unaccel.c b/saa/saa_unaccel.c
index 8c1d89b..deaf5aa 100644
--- a/saa/saa_unaccel.c
+++ b/saa/saa_unaccel.c
@@ -389,7 +389,13 @@ saa_check_poly_fill_rect(DrawablePtr pDrawable, GCPtr pGC,
SAA_FALLBACK(("to %p (%c)\n", pDrawable, saa_drawable_loc(pDrawable)));
sscreen->fallback_count++;
- if (!saa_pad_write(pDrawable, pGC, TRUE, &access))
+
+ /*
+ * TODO: Use @prect for readback / damaging instead of
+ * the damage region. This may fragment the dirty regions more
+ * but should avoid unnecessary readbacks.
+ */
+ if (!saa_pad_write(pDrawable, pGC, FALSE, &access))
goto out_no_access;;
if (!saa_prepare_access_gc(pGC))
goto out_no_gc;