From c91d312b32af0df6a78fc2788877d14cea1cf99f Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Tue, 17 Mar 2026 11:58:23 -0500 Subject: [PATCH] pixman-renderer: Use pnode precalculated region for clipped draw Instead of using the surface rectangle and the view scissor, make a union of the blend/opaque regions from the pnode. This is probably measurably more math in cases with freeform window rotations, but it helps us get weston_view out of the renderer. Signed-off-by: Derek Foreman --- libweston/pixman-renderer.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/libweston/pixman-renderer.c b/libweston/pixman-renderer.c index af9e3e334..a550cd87e 100644 --- a/libweston/pixman-renderer.c +++ b/libweston/pixman-renderer.c @@ -394,7 +394,6 @@ draw_node_source_clipped(struct weston_paint_node *pnode, { struct weston_surface *surface = pnode->surface; struct weston_output *output = pnode->output; - struct weston_view *view = pnode->view; pixman_region32_t surf_region; pixman_region32_t buffer_region; pixman_region32_t repaint_output; @@ -404,11 +403,10 @@ draw_node_source_clipped(struct weston_paint_node *pnode, * opaque separately has no benefit. */ - 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(&surf_region); + pixman_region32_union(&surf_region, + &pnode->surface_opaque, + &pnode->surface_blend); pixman_region32_init(&buffer_region); weston_surface_to_buffer_region(surface, &surf_region, &buffer_region);