9802890c93
This commit fixes two issues. A first issue is that fbids_in_req was previously populated drm_can_avoid_composite and read from in page_flip_handler. As a result, calling drm_can_avoid_composite then page_flip_handler would prevent drm_atomic_commit from referencing the right FBs (page_flip_handler runs in a separate thread and clears fbids_in_req). To fix this, add a new fbids_queued vector filled by drm_atomic_commit. Make page_flip_handler read from this new vector instead of fbids_in_req. As a bonus, this fixes a data race since fbids_queued is now protected by flip_lock. The second issue is that drm_can_avoid_composite assumes all layers made it into a hw plane when liftoff_output_apply succeeds. That's not the case because libliftoff supports mixed hw plane + composition (where some layers make it into a hw plane and the others get composited). To fix this, make drm_can_avoid_composite fail if some but not all layers make it into a hw plane. In the future, we'll want to support the mixed mode too. Closes: https://github.com/Plagman/gamescope/issues/65 References: https://github.com/Plagman/gamescope/issues/41 |
||
---|---|---|
.. | ||
libliftoff@95da3ee649 | ||
wlroots@2176c63856 |