protocols: honor tearing hints and fractional scale

Drive the output commit's async-flip flag from the shown surface's
tearing hint (a real tearing flip on DRM; correctly ignored on
headless/nested), with per-object hint tracking that requests a frame
on change. Notify each surface of the output scale at claim so
clients never guess preferred_scale.

wltest gains --tearing and --fractional-out (plus linking the two
protocol stubs it now uses); smoke tests cover the async commit
transition and the notified scale value.
This commit is contained in:
Andrew Hamilton 2026-09-04 10:21:30 +10:00
parent 8a71a062ce
commit 50a660860d
5 changed files with 228 additions and 18 deletions

View file

@ -402,6 +402,16 @@ libinput touchpad gestures feed this; in nested mode the host only offers
synthesize them. Relay activity is logged with the `[gesture]` prefix at
`KICK_LOG=2`.
## Tearing control / fractional scale
A surface opting into `wp_tearing_control_v1` async presentation drives
the output commit's async-flip flag from the shown tab's hint (logged as
`[tearing] async|vsync` at `KICK_LOG=2`, transitions only): on DRM this
becomes a real tearing page flip for game tabs, while headless and nested
outputs correctly ignore it. Every surface is also told the output scale
via `wp_fractional_scale_v1` when claimed, so clients never have to guess
(120 = 1.0).
## Logging (`KICK_LOG`)
Quiet by default: a plain launch prints nothing to the launching terminal