Skip to content

scene: Pad damage if surface scales doesn't match output scale

Vlad Zahorodnii requested to merge work/zzag/scene-damage-padding into master

If the surface item's contents is scaled, i.e. its scale factor doesn't match the output's scale, GL_LINEAR will be applied to smooth the contents. The unfortunate thing is that it's possible some of the changed pixels will bleed to the neighbor ones.

In order to handle that scenario better, this change makes the SurfaceItem expand the damage if there's scale factor mismatch.

bufferSourceBox and bufferTransform properties were introduced to detect if the surface contents is going to be scaled. bufferSourceBox covers both crop transform from wp_viewport and scale factor from wl_surface. bufferTransform is same as wl_surface's buffer transform property.

See also https://gitlab.freedesktop.org/wayland/weston/-/issues/441

Merge request reports