aboutsummaryrefslogtreecommitdiff
path: root/backend
AgeCommit message (Collapse)Author
2024-02-14backend/drm: extract logic to build current connector stateSimon Ser
2024-02-14backend/drm: use early return in handle_session_active()Simon Ser
2024-02-14backend/drm: add destroy_blob()Simon Ser
Centralizes the logic to destroy a DRM blob: check whether it's zero, and print a nice error message.
2024-02-14backend/drm: drop wlr_drm_backend arg from create_mode_blob()Simon Ser
No need for this, the backend can be grabbed from the connector.
2024-02-14backend/drm: add drm_page_flip_create()Simon Ser
2024-02-14backend/drm: fix fb_damage_clips_arr memory leakSimon Ser
2024-02-12backend/drm: drop unnecessary _XOPEN_SOURCESimon Ser
We only need base POSIX here.
2024-02-12Add more POSIX compliance macros to fix uClibc supportPaul Cercueil
- Add POSIX 1993.09 compliance macro in source files that use "struct timespec"; - Add POSIX 2001.12 compliance macro in source files that use "struct sigaction" and the SA_SIGINFO macro, or the fchmod() function; - Add POSIX 2008.09 compliance macro in source files that use the getline() function. These compliance macros are enough for wlroots to compile with the git-master version of uClibc-ng. Signed-off-by: Paul Cercueil <paul@crapouillou.net>
2024-02-02allocator: remove backend parameter in allocator_autocreate_with_drm_fdAustin Shafer
Since we only use the backend capabilities here we can simply pass them in directly. This allows other locations to create an allocator even if they don't have a backend. They can simply specify the caps they want instead.
2024-02-01backend/session: add docsSimon Ser
2024-01-31linux-dmabuf-v1: switch to stableSimon Ser
The protocol is no longer unstable.
2024-01-31backend/drm: use wlr_drm_backend.name for fd cloningKirill Primak
This also fixes a memleak.
2024-01-27backend/drm: add support for atomic tearing page-flipsSimon Ser
The kernel patches [1] have been merged. [1]: https://patchwork.freedesktop.org/series/120103/
2024-01-25backend: take wl_event_loop instead of wl_display in wlr_backend_autocreate()Simon Ser
2024-01-25backend/multi: take wl_event_loop instead of wl_displaySimon Ser
2024-01-25backend/drm: drop wl_display argumentSimon Ser
We can grab the event loop from the wlr_session instead.
2024-01-25backend/x11: take wl_event_loop instead of wl_displaySimon Ser
2024-01-25backend/wayland: take wl_event_loop instead of wl_displaySimon Ser
2024-01-25backend/libinput: drop wl_display argumentSimon Ser
We can grab the event loop from the wlr_session instead.
2024-01-25backend/headless: take wl_event_loop instead of wl_displaySimon Ser
2024-01-25backend: stop calling wl_display_terminate()Simon Ser
Leave it up to the compositor to decide what to do when a backend becomes unavailable.
2024-01-25backend: destroy multi backend when primary backend isSimon Ser
This makes it easy for compositors to handle situations where the DRM or libinput backend becomes unavailable. Compositors can listen the destroy event of the multi backend returned by wlr_backend_autocreate() and decide what to do.
2024-01-25backend: make attempt_drm_backend() return the primary backendSimon Ser
We'll need this in the next commit.
2024-01-25backend/multi: emit destroy signal before destroying child backendsSimon Ser
Some users might want to destroy the multi backend when a child backend is being destroyed. However, they can't destroy the multi backend if it's already in the process of being destroyed. The destroy signal was changed to be emitted after destroying child backends in babdd6ccf757 ("backend: fix use-after-free when destroying backends"). However, this was done to accomodate for an old "output_remove" event on backends, which has long been dropped in favor of wlr_output.events.destroy. This patch follows the same principle as 5d639394f3e8 ("types/output: emit destroy event before destroying global").
2024-01-23backend/wayland: populate pointer axis relative directionSimon Ser
2024-01-23backend/libinput: populate pointer axis relative directionSimon Ser
2024-01-17backend/x11: handle touchpoint allocation failureKirill Primak
2024-01-04Fix bool return typesSimon Ser
This makes wlroots build in C23 mode. C23 is more strict and rejects implicit conversions from bool to a pointer.
2023-12-30backend/drm: save current refresh rateSimon Ser
wlr_output.refresh is populated by core wlr_output, and thus will be zero for a custom mode with an unset refresh rate. Save the refresh rate from the drmModeModeInfo in wlr_drm_connector instead. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3791
2023-12-21backend: fix build against upcoming `gcc-14` (`-Werror=calloc-transposed-args`)Sergei Trofimovich
`gcc-14` added a new `-Wcalloc-transposed-args` warning recently. It detected minor infelicity in `calloc()` API usage in `wlroots`: ../backend/libinput/tablet_pad.c: In function 'add_pad_group_from_libinput': ../backend/libinput/tablet_pad.c:36:38: error: 'calloc' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Werror=calloc-transposed-args] 36 | group->rings = calloc(sizeof(unsigned int), group->ring_count); | ^~~~~~~~ ../backend/libinput/tablet_pad.c:36:38: note: earlier argument should specify number of elements, later size of each element
2023-12-12backend/drm: return secondary backend DRM FDSimon Ser
It can be useful for compositors to get the real DRM FD instead of the one from the parent compositor. For instance, some compositors might want to perform some DRM IOCTLs there to check the driver name, fetch some DRM resources, etc. This will also be a requirement for direct scanout on secondary GPUs.
2023-12-12backend/drm: add wlr_drm_backend_get_parent()Simon Ser
Allows compositors to figure out whether a DRM backend is secondary on a multi-GPU setup.
2023-11-30backend/x11: Use wlr_texture_read_pixelsAlexander Orzechowski
2023-11-30backend/drm: remove wlr_drm_renderer.backendSimon Ser
This is unused.
2023-11-30backend/drm: move drm_plane_finish_surface() to drm.cSimon Ser
This function touches queued_fb/current_fb, which the renderer has nothing to do with.
2023-11-30backend/drm: split wlr_drm_fb related functions into separate fileSimon Ser
2023-11-28backend/drm: use DRM_IOCTL_MODE_CLOSEFB instead of RMFBSimon Ser
RMFB implicitly performs a modeset to turn off any CRTC which is using the FB. This prevents seamless transitions between two DRM masters from working. Use the new CLOSEFB IOCTL which doesn't turn off anything and leave it up to the compositor to turn off outputs on shutdown if it wants to.
2023-11-27backend/x11: don't send ConfigureRequest with the same sizeKirill Primak
Under X11, ConfigureNotify means that the window has already been resized. Sending ConfigureRequest with the received size is not only useless, but also can confuse the window manager, which will probably reply with the current (i.e. *old*) size causing a configure loop. Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3769
2023-11-26backend/x11: check buffer format in output_test()Kirill Primak
2023-11-25Cleanup wlr_matrix.h includesSimon Ser
Many files used to require wlr_matrix but no longer do.
2023-11-23output: take wl_event_loop in wlr_output_init()Simon Ser
We don't need the whole wl_display here anymore. The wl_event_loop is enough.
2023-11-23backend/session: take wl_event_loop instead of wl_displaySimon Ser
wl_display holds a lot more than wlr_session needs: wlr_session only needs to wait for a FD to become readable, but wl_display provides full access to the Wayland client and protocol objects. Switch to wl_event_loop to better reflect the above.
2023-11-23util/transform: move over wl_output_transform helpersSimon Ser
These aren't really tied to wlr_output.
2023-11-19backend/drm: drop unnecessary flags in legacy interfaceSimon Ser
drm_crtc_commit() already ensures that atomic-only flags are disallowed.
2023-11-19backend/drm: add wlr_drm_connector_state.nonblockSimon Ser
Instead of having this condition checked in multiple places, centralize it so that they don't go out-of-sync.
2023-11-19backend/drm: fix pending page-flip checkSimon Ser
This chunk of code was moved by mistake. Fixes: 3b53d1cbf199 ("backend/drm: introduce page-flip tracking struct")
2023-11-17backend/drm: Destroy page flips on backend destroyAlexander Orzechowski
When we destroy the backend, page flips will no longer be invoked meaning those won't clean up the page flips for us.
2023-11-17backend/drm: Track page flips in listAlexander Orzechowski
2023-11-17backend/drm: introduce page-flip tracking structSimon Ser
Introduce a per-page-flip tracking struct passed to the kernel when we request a page-flip event for an atomic commit. The kernel will pass us back this pointer when delivering the event. This eliminates any risk of mixing up events together. In particular, if two events are pending, or if the CRTC of a connector is swapped, we no longer blow up in the page-flip event handler. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3753
2023-11-17backend/drm: free fb latersunzhguy
since 4932e0d347f("backend/drm: ensure plane surfaces are cleaned up on shutdown") at finish_drm_resources called drm_plane_finsh_surface has already free the fb Signed-off-by: zhoulei zhoulei@kylinos.cn Signed-off-by: sunzhguy <sunzhigang1@kylinos.cn>