sna: Use the right is-clipped hint

The region here has yet to be clipped, and so the only valid is-clipped
hint is from the flags computed from the PolyRect extents. Make sure we
use those when determining whether it is valid to discard damage.

Fixes regression from
commit ad03900688 [2.99.903]
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Sep 24 10:00:03 2013 +0100

	sna: Separate out copy preferrence from operating in place decision

Reported-by: Nick Bowler <nbowler@draconx.ca>
Tested-by: Nick Bowler <nbowler@draconx.ca>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=79992
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2014-06-13 20:30:25 +01:00
parent b082a07a69
commit 15485602d8
1 changed files with 8 additions and 9 deletions

View File

@ -14382,16 +14382,15 @@ sna_poly_fill_rect(DrawablePtr draw, GCPtr gc, int n, xRectangle *rect)
RegionTranslate(&region, dx, dy);
}
if (region_subsumes_drawable(&region, &pixmap->drawable)) {
discard_cpu_damage(sna, priv);
hint |= IGNORE_CPU | REPLACES;
} else {
if ((flags & 2) == 0)
hint |= IGNORE_CPU;
if (priv->cpu_damage &&
region_subsumes_damage(&region, priv->cpu_damage)) {
if ((flags & 2) == 0) {
hint |= IGNORE_CPU;
if (region_subsumes_drawable(&region, &pixmap->drawable)) {
discard_cpu_damage(sna, priv);
hint |= IGNORE_CPU;
hint |= REPLACES;
} else {
if (priv->cpu_damage &&
region_subsumes_damage(&region, priv->cpu_damage))
discard_cpu_damage(sna, priv);
}
}
if (priv->cpu_damage == NULL) {