pixman-renderer: implement view scissor

Only needed in the source-clipped case, otherwise the boundingbox is
already doing the necessary clipping.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
dev
Pekka Paalanen 10 years ago
parent d7ca6b0bbe
commit c93782ad33
  1. 7
      src/pixman-renderer.c

@ -443,6 +443,10 @@ draw_view_source_clipped(struct weston_view *view,
pixman_region32_init_rect(&surf_region, 0, 0, pixman_region32_init_rect(&surf_region, 0, 0,
surface->width, surface->height); surface->width, surface->height);
if (view->geometry.scissor_enabled)
pixman_region32_intersect(&surf_region, &surf_region,
&view->geometry.scissor);
pixman_region32_init(&buffer_region); pixman_region32_init(&buffer_region);
weston_surface_to_buffer_region(surface, &surf_region, &buffer_region); weston_surface_to_buffer_region(surface, &surf_region, &buffer_region);
@ -489,6 +493,8 @@ draw_view(struct weston_view *ev, struct weston_output *output,
* etc. are convertible to global coordinate space. * etc. are convertible to global coordinate space.
* There is no need to use a source clip region. * There is no need to use a source clip region.
* It is possible to paint opaque region as PIXMAN_OP_SRC. * 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); draw_view_translated(ev, output, &repaint);
} else { } else {
@ -838,6 +844,7 @@ pixman_renderer_init(struct weston_compositor *ec)
ec->renderer = &renderer->base; ec->renderer = &renderer->base;
ec->capabilities |= WESTON_CAP_ROTATION_ANY; ec->capabilities |= WESTON_CAP_ROTATION_ANY;
ec->capabilities |= WESTON_CAP_CAPTURE_YFLIP; ec->capabilities |= WESTON_CAP_CAPTURE_YFLIP;
ec->capabilities |= WESTON_CAP_VIEW_CLIP_MASK;
renderer->debug_binding = renderer->debug_binding =
weston_compositor_add_debug_binding(ec, KEY_R, weston_compositor_add_debug_binding(ec, KEY_R,

Loading…
Cancel
Save