Skip to content

backend/drm: fix frame scheduling on secondary GPUs

Simon Ser requested to merge github/fork/emersion/fix-schedule-frame-mgpu into master

There was a missing copy_drm_surface_mgpu call in drm_connector_schedule_frame so we asked for a pageflip with an unknown BO, resulting in ENOENT.

Additionally, this commit makes schedule_frame return a bool indicating failures. This allows schedule_frame_handle_idle_timer to only set frame_pending to true if a frame has been successfully scheduled. Thus, if a pageflip fails, rendering won't be blocked forever anymore.

In case a pageflip is already pending, true is returned because a frame has already been scheduled and will be sent sometime soon.

@JonnyMako @DawidLoubser @JonathanILevi Please test!

Fixes swaywm/sway#2800 Fixes #1328 (closed)

Merge request reports