summaryrefslogtreecommitdiff
path: root/src/drm
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-03-04 19:52:58 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2010-03-04 19:52:58 +0000
commitf79b2ceea4722b5059563be1eb55de617fecc004 (patch)
tree98fd502ede866e4873ea271fdacfdd64f0aa7f3b /src/drm
parent7cea9ae290ba24e4d2f87cef4228cce5fcb3181b (diff)
drm/i915: Discard redundant solitary clips during fill
Diffstat (limited to 'src/drm')
-rw-r--r--src/drm/cairo-drm-i915-surface.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/drm/cairo-drm-i915-surface.c b/src/drm/cairo-drm-i915-surface.c
index 3071ee38..08eef584 100644
--- a/src/drm/cairo-drm-i915-surface.c
+++ b/src/drm/cairo-drm-i915-surface.c
@@ -1343,6 +1343,16 @@ i915_surface_fill (void *abstract_dst,
if (_cairo_clip_contains_rectangle (clip, &extents))
clip = NULL;
+ if (extents.is_bounded && clip != NULL) {
+ cairo_clip_path_t *clip_path;
+
+ if (((clip_path = _clip_get_solitary_path (clip)) != NULL) &&
+ _cairo_path_fixed_equal (&clip_path->path, path))
+ {
+ clip = NULL;
+ }
+ }
+
if (clip != NULL) {
clip = _cairo_clip_init_copy (&local_clip, clip);
have_clip = TRUE;