Improve presentation-time API
The wlr_presentation_feedback struct now tracks presentation feedback for multiple resources (but still a single surface content update). This allows the compositor to properly send presentation events even when there is more than one frame of latency or when it references a surface's buffer.
Most of the time, compositors just display the surface's current buffer on an output. Add an helper to make it easy to support presentation-time in this case.
References: https://github.com/swaywm/sway/issues/4572 Closes: https://github.com/swaywm/wlroots/issues/1917
cc @YaLTeR
Breaking change: instead of calling wlr_presentation_surface_sampled
at render time and wlr_presentation_send_surface_presented
at presentation time, most compositors now just need to call wlr_presentation_surface_sampled_on_output
at render time. Compositors that call wlr_buffer_ref
need to call wlr_presentation_surface_sampled
when they ref the buffer, wlr_presentation_feedback_send_presented
when this buffer has been presented for the first time and then wlr_presentation_feedback_destroy
.