From 1fd99807ec3447f79e6af264ca0c337787acebda Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Tue, 11 Jun 2024 07:02:32 -0500 Subject: [PATCH] renderers: Remove internal flush and attach These were only necessary to allow surface_copy_content to return contents that included recently attached (but not yet rendered) buffers. Signed-off-by: Derek Foreman --- libweston/pixman-renderer.c | 14 ++------- libweston/renderer-gl/gl-renderer.c | 45 +++++------------------------ 2 files changed, 11 insertions(+), 48 deletions(-) diff --git a/libweston/pixman-renderer.c b/libweston/pixman-renderer.c index b690097b..15401eb5 100644 --- a/libweston/pixman-renderer.c +++ b/libweston/pixman-renderer.c @@ -730,9 +730,10 @@ pixman_renderer_surface_set_color(struct weston_surface *es, } static void -pixman_renderer_attach_internal(struct weston_surface *es, - struct weston_buffer *buffer) +pixman_renderer_attach(struct weston_paint_node *pnode) { + struct weston_surface *es = pnode->surface; + struct weston_buffer *buffer = pnode->surface->buffer_ref.buffer; struct pixman_surface_state *ps = get_surface_state(es); struct wl_shm_buffer *shm_buffer; const struct pixel_format_info *pixel_info; @@ -806,15 +807,6 @@ pixman_renderer_attach_internal(struct weston_surface *es, &ps->buffer_destroy_listener); } -static void -pixman_renderer_attach(struct weston_paint_node *pnode) -{ - struct weston_surface *es = pnode->surface; - struct weston_buffer *buffer = pnode->surface->buffer_ref.buffer; - - pixman_renderer_attach_internal(es, buffer); -} - static void pixman_renderer_surface_state_destroy(struct pixman_surface_state *ps) { diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c index 67569dfe..5d925afe 100644 --- a/libweston/renderer-gl/gl-renderer.c +++ b/libweston/renderer-gl/gl-renderer.c @@ -2527,9 +2527,9 @@ gl_format_from_internal(GLenum internal_format) } static void -gl_renderer_flush_damage_internal(struct weston_surface *surface, - bool just_accumulate) +gl_renderer_flush_damage(struct weston_paint_node *pnode) { + struct weston_surface *surface = pnode->surface; const struct weston_testsuite_quirks *quirks = &surface->compositor->test_data.test_quirks; struct weston_buffer *buffer = surface->buffer_ref.buffer; @@ -2544,7 +2544,7 @@ gl_renderer_flush_damage_internal(struct weston_surface *surface, pixman_region32_union(&gb->texture_damage, &gb->texture_damage, &surface->damage); - if (just_accumulate) + if (pnode->plane != &pnode->output->primary_plane) return; /* This can happen if a SHM wl_buffer gets destroyed before we flush @@ -2624,23 +2624,6 @@ done: weston_buffer_release_reference(&gs->buffer_release_ref, NULL); } -static void -gl_renderer_flush_damage(struct weston_paint_node *pnode) -{ - bool just_accumulate = false; - - /* Avoid upload, if the texture won't be used this time. - * We still accumulate the damage in texture_damage, and - * hold the reference to the buffer, in case the surface - * migrates back to the primary plane. - */ - if (pnode->plane != &pnode->output->primary_plane) - just_accumulate = true; - - gl_renderer_flush_damage_internal(pnode->surface, - just_accumulate); -} - static void destroy_buffer_state(struct gl_buffer_state *gb) { @@ -3597,10 +3580,10 @@ gl_renderer_attach_solid(struct weston_surface *surface, } static void -gl_renderer_attach_internal(struct weston_surface *es, - struct weston_buffer *buffer, - struct weston_paint_node *direct_pnode) +gl_renderer_attach(struct weston_paint_node *pnode) { + struct weston_surface *es = pnode->surface; + struct weston_buffer *buffer = es->buffer_ref.buffer; struct gl_surface_state *gs = get_surface_state(es); if (gs->buffer_ref.buffer == buffer) @@ -3625,8 +3608,8 @@ gl_renderer_attach_internal(struct weston_surface *es, if (!buffer) goto out; - if (direct_pnode) { - attach_direct_display_placeholder(direct_pnode); + if (pnode->is_direct) { + attach_direct_display_placeholder(pnode); goto success; } @@ -3685,18 +3668,6 @@ gl_renderer_buffer_init(struct weston_compositor *etc, wl_signal_add(&buffer->destroy_signal, &gb->destroy_listener); } -static void -gl_renderer_attach(struct weston_paint_node *pnode) -{ - struct weston_surface *es = pnode->surface; - struct weston_buffer *buffer = es->buffer_ref.buffer; - - if (pnode->is_direct) - gl_renderer_attach_internal(es, buffer, pnode); - else - gl_renderer_attach_internal(es, buffer, NULL); -} - static uint32_t pack_color(pixman_format_code_t format, float *c) {