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?