Rémi Bernon (@rbernon) commented about dlls/winewayland.drv/wayland_surface.c:
+ + /* Add surface damage, i.e., which parts of the surface have changed since + * the last surface commit. Note that this is different from the buffer + * damage region. */ + surface_damage = get_region_data(surface_damage_region); + if (surface_damage) + { + RECT *rgn_rect = (RECT *)surface_damage->Buffer; + RECT *rgn_rect_end = rgn_rect + surface_damage->rdh.nCount; + + for (;rgn_rect < rgn_rect_end; rgn_rect++) + { + wl_surface_damage_buffer(surface->wl_surface, + rgn_rect->left, rgn_rect->top, + rgn_rect->right - rgn_rect->left, + rgn_rect->bottom - rgn_rect->top); If you tell the compositor about the damaged regions, do you still actually need to copy the data outside of it from the previous buffer?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/3234#note_38110