[PATCH weston v2 16/16] pixman-renderer: implement view scissor
Pekka Paalanen
ppaalanen at gmail.com
Tue Mar 10 06:01:47 PDT 2015
From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
Only needed in the source-clipped case, otherwise the boundingbox is
already doing the necessary clipping.
Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
Reviewed-By: Derek Foreman <derekf at osg.samsung.com>
---
src/pixman-renderer.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/pixman-renderer.c b/src/pixman-renderer.c
index 3f5e64d..ae57b41 100644
--- a/src/pixman-renderer.c
+++ b/src/pixman-renderer.c
@@ -441,6 +441,10 @@ draw_view_source_clipped(struct weston_view *view,
pixman_region32_init_rect(&surf_region, 0, 0,
surface->width, surface->height);
+ if (view->geometry.scissor_enabled)
+ pixman_region32_intersect(&surf_region, &surf_region,
+ &view->geometry.scissor);
+
pixman_region32_init(&buffer_region);
weston_surface_to_buffer_region(surface, &surf_region, &buffer_region);
@@ -487,6 +491,8 @@ draw_view(struct weston_view *ev, struct weston_output *output,
* etc. are convertible to global coordinate space.
* There is no need to use a source clip region.
* It is possible to paint opaque region as PIXMAN_OP_SRC.
+ * Also the boundingbox is accurate rather than an
+ * approximation.
*/
draw_view_translated(ev, output, &repaint);
} else {
@@ -836,6 +842,7 @@ pixman_renderer_init(struct weston_compositor *ec)
ec->renderer = &renderer->base;
ec->capabilities |= WESTON_CAP_ROTATION_ANY;
ec->capabilities |= WESTON_CAP_CAPTURE_YFLIP;
+ ec->capabilities |= WESTON_CAP_VIEW_CLIP_MASK;
renderer->debug_binding =
weston_compositor_add_debug_binding(ec, KEY_R,
--
2.0.5
More information about the wayland-devel
mailing list