Skip to content

Add weston_renderer::resize_output() API

Pekka Paalanen requested to merge pq/weston:mr/rresize into main

This MR depends on !971 (merged) and !975 (merged).

Previously renderers were not told when the output (framebuffer they need to draw) size changed. Renderers just pulled that information out from weston_output::current_mode when they happened to need it. This makes some things awkward, like resizing the shadow or intermediate buffers. In fact, Pixman-renderer does not even support resizing its shadow buffer, nor does GL-renderer. DRM-backend has to destroy and re-create the renderer output state anyway, but rdp, x11 and wayland backends would be natural users of resizing API.

This MR adds the renderer render-target resizing API, making renderers explicitly aware of when the target size changes.

Since GL-renderer is needed to blit output decorations (used by wayland-backend alone, when an output window is floating), it is not enough to communicate only the framebuffer size but also the position and size of the composited area (excluding decorations).

Communicating both the fb size and area explicitly allows renderers to track these, which will be useful with a future screenshooting protocol designed for the Weston test suite. This will also allow to stop renderers from looking into weston_output::current_mode which is done in a follow-up MR for GL-renderer (!977 (merged)), and here already for pixman-renderer.

Finally x11-backend uses the new resizing API to avoid destroying and re-creating the renderer output state, and with GL-renderer it means it does not need to destroy and re-create the EGLSurface. RDP-backend is switched to the new API as well.

Edited by Pekka Paalanen

Merge request reports