aboutsummaryrefslogtreecommitdiff
path: root/backend
AgeCommit message (Collapse)Author
2023-11-15backend/drm: leave CRTCs on when shutting downSimon Ser
This avoids a black screen during multiple seconds on shutdown. To fully allow for flicker-free transitions between DRM masters, we will also need [1]. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4394 Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3497
2023-11-15backend/drm: ensure plane surfaces are cleaned up on shutdownSimon Ser
Right now this is done "by chance" because we disable all CRTCs on shutdown. However, we'll stop doing this. Plus, if disabling a CRTC fails, we don't cleanup properly.
2023-10-30backend: drop wlr_backend_get_presentation_clock()Simon Ser
We can just assume CLOCK_MONOTONIC everywhere. Simplifies the backend API, and fixes clock mismatches when multiple backends are used together with different clocks.
2023-10-16Fix output layers order error on wayland backendJiDe Zhang
2023-10-12Revert "backend/drm: Automatic non-blocking commits"Simon Ser
This reverts commit 45ba35719e874f7e8651e088c0582fe50301e731. Sadly, this causes regressions on amdgpu [1] and even with these fixed, there are fundamental issues with non-blocking modesets [2]. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3745 [2]: https://oftc.irclog.whitequark.org/dri-devel/2023-10-11#1697031838-1697036920;
2023-10-10backend/drm: Automatic non-blocking commitsKenny Levinsen
We currently only perform non-blocking commits for non-modeset commits with a buffer attached. Perform non-blocking commits whenever there is no pending pageflip event. If a non-blocking modeset commit fails, which can happen if the driver implicitly added more CRTCs to the commit that we did not know we had to wait for, retry with a blocking commit. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/2239
2023-10-09output: allow_artifacts -> allow_reconfigurationKenny Levinsen
The name "allow_artifacts" and associated description is very vague, and theoretically allow for tearing behavior. Clarify that we only intend to mean artifacts related to output configuration (e.g., modesets). References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3740
2023-10-03treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practicalAlexander Orzechowski
2023-10-02docs: replace the less commonly used "::" with "."Kirill Primak
2023-10-02output: defer fake present events until after commitRose Hudson
Since headless and wayland-without-presentation-feedback were firing present inside their commit impls, present was getting fired before commit, which is cursed. Defer this with an idle timer so that commit handlers can run before present handlers.
2023-10-02backend/drm: restore pending page-flip check when tearingSimon Ser
DRM_MODE_PAGE_FLIP_ASYNC doesn't allow user-space to submit new buffers before waiting for the uevent: the kernel will return EBUSY in that case. Fixes: c2aa7fd965cb ("backend/drm: Add async page flip support to legacy")
2023-09-28backend/drm: Add async page flip support to legacyvaxerski
Atomic doesn't support such flags yet.
2023-09-07backend/drm: Compute custom mode correctlyAlexander Orzechowski
2023-08-25backend/drm: drop no-op shortcutSimon Ser
Since e5fc8cd4c734 ("output: trigger frame/present events on all commits on enabled output"), any commit on an enabled output is supposed to trigger frame/present events. The DRM backend was skipping the commit completely for no-op commits. Stop doing so. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3719
2023-08-23output: trigger frame/present events on all commits on enabled outputSimon Ser
Up until now, frame/present events were only triggered when the user submitted a buffer. Change the wlr_output API so that these events are triggered when any commit is applied on an enabled output. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3708
2023-08-23backend/drm: report !presented if session is inactiveRose Hudson
2023-08-23backend/drm: don't set frame_pending on modesetRose Hudson
https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3664#note_2020392 we're gonna have to trust Simon on this one 🤞
2023-08-21backend/headless: fix broken output frame eventsSimon Ser
frame_delay was set to 0. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3712
2023-08-16backend/wayland: wait for xdg_surface.configure explicitlySimon Ser
We were assuming a roundtrip was enough to get an xdg_surface.configure event. That's not the case, the protocol spec doesn't make such a guarantee.
2023-08-16backend/drm: Use output state to set init modeAlexander Orzechowski
2023-08-16backend/drm: Move output variable up in connect_drm_connectorAlexander Orzechowski
2023-08-16backend/headless: Use output state to set init custom modeAlexander Orzechowski
2023-08-16backend/wayland: Use output state to set init custom modeAlexander Orzechowski
2023-08-16backend/x11: Use output state to set init custom modeAlexander Orzechowski
2023-08-16output: Add initialization state to wlr_output_initAlexander Orzechowski
2023-08-16backend/wayland: add wlr_wl_output_create_from_surface()Simon Ser
By using this function, a compositor can display a wlroots compositor in a sub-surface, for instance.
2023-08-16backend/wayland: tag wl_surfaceSimon Ser
When integrating wlroots with another toolkit, wlroots may receive wl_pointer.enter events for surfaces not backed by a wlr_output. Ignore such surfaces by tagging the ones we're aware of with wl_proxy_set_tag().
2023-08-16backend/wayland: take existing wl_display in wlr_wl_backend_create()Simon Ser
This allows compositors to use an existing wl_display, to integrate wlroots with an existing toolkit.
2023-07-26backend/drm: restore custom modesSimon Ser
We were only restoring fixed modes here. The DRM backend no longer creates fixed modes when the compositor sets a custom mode, so we need to handle this situation when restoring. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3698
2023-07-18backend/x11: log output test failure reasonsBrett Ernst
2023-07-18backend/wayland: log output test failure reasonsBrett Ernst
2023-07-14backend/drm: stop checking for wlr_client_bufferSimon Ser
wlr_client_buffer is a bad indicator for direct scan-out. Compositors might use the underlying wlr_buffer instead.
2023-07-11Use wl_container_of() instead of castsSimon Ser
This slightly improves type safety. The culprits were found with: git grep -E '\([a-z0-9_ ]+ \*\)\W?[a-z]'
2023-07-07Use struct initializers instead of memset()Simon Ser
This is a bit more type-safe.
2023-06-30backend/drm: use panel_orientation if it is setClayton Craft
This fixes an issue where the panel_orientation parameter was set but wlroots was ignoring it and returning OUTPUT_TRANSFORM_NORMAL. Fixes 2e12de96
2023-06-30backend/drm: handle output layer damageSimon Ser
2023-06-30backend/wayland: handle output layer damageSimon Ser
2023-06-27backend/headless: leave new outputs disabled by defaultSimon Ser
2023-06-27backend/x11: leave new outputs disabled by defaultSimon Ser
2023-06-27backend/wayland: mark new outputs as disabledSimon Ser
Leave it up to the compositor to enable new outputs (just like the DRM backend does).
2023-06-27backend/headless: add support for disabled outputsSimon Ser
We have nothing to do when a headless output is enabled/disabled.
2023-06-27backend/headless: only schedule a new frame if buffer was submittedSimon Ser
A no-op commit should not schedule a new frame. This aligns the headless backend with the rest of the backends. This will be important to handle the enabled → disabled transition.
2023-06-27backend/x11: unmap when output is disabledSimon Ser
2023-06-27backend/wayland: unmap when output is disabledSimon Ser
2023-06-27output: Set output mode during main commitAlexander Orzechowski
Removes duplication across all the backends to finally apply the mode to the output.
2023-06-27backend/wayland: Reject non 0 refresh rate mode setsAlexander Orzechowski
2023-06-27backend/x11: Reject non 0 refresh rate mode setsAlexander Orzechowski
2023-06-27backend/drm: Don't add pollute fixed modes list with custom modesAlexander Orzechowski
Nobody remembers why this is done and it isn't that great if people use a lot of custom modes.
2023-06-26backend/drm: remove duplicate needs_frame() in set_cursor()Simon Ser
wlr_output_update_needs_frame() is called unconditionally at the end of the function already.
2023-06-23output: add wlr_output_state_init()Simon Ser
This changes the semantics of wlr_output_state. Instead of having fields with uninitialized memory when missing from the committed bitflag, all fields are always initialized (and maybe NULL/empty), just like we do in wlr_surface_state. This reduces the chances of footguns when reading a field, and removes the need to check for the committed bitfield everywhere. A new wlr_output_state_init() function takes care of initializing the Pixman region.