From fa465e34cadacb7d29a664006b5d73bc2a8d9cf3 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 12 Feb 2024 13:30:01 -0500 Subject: [PATCH] egl/wayland/sw: pass damage region through from put_image2 to wl_surface_damage this propagates damage from drisw to wayland; y inversion matches protocol Acked-by: Daniel Stone Part-of: --- src/egl/drivers/dri2/platform_wayland.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index 8109b033dc6..9db64229d98 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -2470,7 +2470,12 @@ dri2_wl_swrast_put_image2(__DRIdrawable *draw, int op, int x, int y, int w, char *src, *dst; assert(copy_width <= stride); - wl_surface_damage(dri2_surf->wl_surface_wrapper, 0, 0, INT32_MAX, INT32_MAX); + if (wl_proxy_get_version((struct wl_proxy *)dri2_surf->wl_surface_wrapper) < + WL_SURFACE_DAMAGE_BUFFER_SINCE_VERSION) + wl_surface_damage(dri2_surf->wl_surface_wrapper, 0, 0, INT32_MAX, INT32_MAX); + else + wl_surface_damage_buffer(dri2_surf->wl_surface_wrapper, + x, dri2_surf->base.Height - y - h, w, h); dst = dri2_wl_swrast_get_backbuffer_data(dri2_surf);