Commit Graph

4778 Commits

Author SHA1 Message Date
Simon Ser 9b0e0970f9 backend/drm: destroy backend on udev remove event
Any use of the DRM FD after the remove event results in a "Permission
denied" error.
2021-04-27 09:11:44 +02:00
Simon Ser 5597776914 backend/session: add wlr_device.events.remove 2021-04-27 09:11:44 +02:00
Simon Ser c49ea9ef4f backend/drm: destroy when parent is destroyed 2021-04-27 09:11:44 +02:00
Simon Ser e804de923d backend/drm: clarify error message on drmModeAddFB fallback
The previous code would always print "falling back to legacy method",
even if the format wasn't ARGB8888.

Drop get_fb_for_bo_legacy, since the code can just be inlined without
hurting readability.

Ideally we should only fallback to drmModeAddFB if the error code
indicates the BE failure, but the original PR [1] doesn't say what
error code is returned by the kernel.

[1]: https://github.com/swaywm/wlroots/pull/2569
2021-04-26 23:12:53 +02:00
Simon Ser f9f90b4173 backend/drm: fail instead of stripping a modifier
We shouldn't strip a modifiers from buffers, because the will make
the kernel re-interpret the data as LINEAR on most drivers,
resulting in an incorrect output on screen.
2021-04-26 23:12:53 +02:00
Simon Ser 1a5530d14d xcursor: quiet debug log
Stop listing all available cursors each time a cursor theme is
loaded. They can be obtained from the CLI instead, e.g.

    ls /usr/share/icons/Adwaita/cursors
2021-04-26 20:11:05 +02:00
Simon Ser 5c699f09cb Log drmGetDevices2 error code 2021-04-26 16:27:24 +02:00
Simon Ser af78ecb86b render: unconditionally read WLR_RENDERER
Prior to this commit, WLR_RENDERER was only looked up when the
backend returned a DRM FD.

Make it so WLR_RENDERER is always looked up, so that running wlroots
on a system without a GPU and with WLR_RENDERER=gles2 fails as
expected instead of falling back to the Pixman renderer.
2021-04-26 15:05:34 +02:00
Simon Zeni 8a27050b4e render/egl: fail on EGL_MESA_device_software 2021-04-26 09:02:52 +02:00
Simon Ser ce30a22159 readme: use webchat link for IRC channel
GitHub refuses to render ircs:// URLs.
2021-04-24 12:46:29 +02:00
Simon Ser b5cfaea705 readme: mention IRC channel 2021-04-24 12:43:07 +02:00
Simon Ser 565f67f805 readme: update and cleanup xcb deps
Switch from the pkg-config dependency names to the upstream
libxcb repository names. Each repository contains multiple
libraries but is generally available in distributions as a single
package.

libxcb contains xcb, xcb-composite, xcb-xfixes, xcb-xinput and
xcb-shm. libxcb-render-util contains xcb-render. libxcb-wm
contains xcb-icccm. xcb-image was outdated and is no longer needed.
2021-04-24 12:40:10 +02:00
Aleksei Bavshin e48dcdf72c xwayland: remove _NET_WM_PID handler
We already get the PID from XRes and _NET_WM_PID code can overwrite it
with incorrect data.
2021-04-23 09:55:01 +02:00
Aleksei Bavshin e0f239fa28 xwayland: query window PIDs via XResQueryClientIds
`_NET_WM_PID` is unreliable: it is optional and even if set it may
contain PIDs from sandbox namespaces or remote systems.
Prefer XRes v1.2 QueryClientIds method which returns PIDs as seen by the
Xwayland server.
2021-04-23 09:55:01 +02:00
Simon Ser c314920a3d render: remove NULL checks in wlr_texture_impl.destroy
The NULL check already exists in wlr_texture_destroy, no need to
duplicate it in each impl
2021-04-22 15:44:49 +02:00
Simon Ser 8ca2b4cf49 render/pixman: destroy textures on renderer teardown 2021-04-22 15:44:49 +02:00
Simon Ser 661ba49564 render/gles2: destroy textures on renderer teardown 2021-04-22 15:44:49 +02:00
Simon Ser 9901d49fa5 render/pixman: cleanup when renderer is destroyed
We were leaking wlr_pixman_buffers and a wlr_drm_format_set.
2021-04-22 15:44:49 +02:00
Simon Ser 6622cd3277 output: correctly handle outputs without a test() impl
This fixes a crash when calling wlr_output_test() on a headless
output.

Closes: https://github.com/swaywm/sway/issues/6213
2021-04-21 08:52:50 +02:00
Simon Ser 8e375ae340 render/gles2: log when creating renderer
Make it clear GLES2 is being used. Before this commit, various
GL-related information was printed, but not an easy-to-find line
about which renderer is being picked up.
2021-04-21 08:30:35 +02:00
Simon Zeni cdacf4f632 render: introduce WLR_RENDERER in wlr_renderer_autocreate_with_drm_fd
This env var forces the creation of a specific renderer. If no renderer
is specified, the function will try to create all of the renderers one
by one until one is created successfuly.
2021-04-20 21:14:27 +02:00
Simon Zeni 10c5199d85 render/gles2: introduce wlr_gles2_renderer_create_with_drm_fd 2021-04-20 21:14:27 +02:00
Tadeo Kondrak 014c59aa40 backend/x11: add support for shm buffers 2021-04-20 20:27:25 +02:00
nyorain 572b5910bb render: Assert that texture dimensions are > 0 2021-04-20 18:10:48 +02:00
Simon Zeni 78b94a570c examples/rotation: remove unused includes 2021-04-20 08:46:59 +02:00
Simon Zeni 217c4f79a0 examples: introduce quads example
This examples uses `wlr_render_quad_with_matrix` to render coloured
squares on the screen, and uses the rotation to make them spin on their
middle.
2021-04-20 08:46:59 +02:00
tomKPZ 7c9b61b18c Fix stuck keys on X11 backend 2021-04-20 08:19:48 +02:00
Simon Ser e8df7c367a linux-dmabuf-v1: split params and buffer
Previously, the same struct was used for linux-dmabuf-v1 params
and buffer. This made the whole logic a little bit awkward, because
a wlr_dmabuf_v1_buffer could either be still being constructed, or
be a complete buffer.

Introduce a separate wlr_linux_buffer_params_v1 struct for buffer
params still being constructed. Once the params are complete (ie.
once the create request is sent), the params struct is destroyed
and the buffer struct is created.

This will help with [1] as well.

[1]: https://github.com/swaywm/wlroots/issues/2664
2021-04-19 18:09:13 +02:00
Simon Ser f64ed60c7b linux-dmabuf-v1: drop some from_resource helpers
Drop wlr_dmabuf_v1_buffer_from_params_resource and
wlr_linux_dmabuf_v1_from_resource. Contrary to wl_buffer, these
resources are internal linux-dmabuf-v1 implementation details and
should not be shared with other interfaces.
2021-04-19 18:09:13 +02:00
Simon Ser fbc2182b9f Stop specifying xkb_rule_names
If a NULL xkb_rule_names pointer is passed to
xkb_keymap_new_from_names, libxkbcommon will default to reading
the XKB_* env variables. So there's no need to do it ourselves.

Also s/xkb_map_new_from_names/xkb_keymap_new_from_names/ since the
latter is more consistent with the returned struct name.

[1]: https://xkbcommon.org/doc/current/structxkb__rule__names.html
2021-04-19 17:33:28 +02:00
Simon Ser 83670fce65 examples: remove dependency on GLES2 for compositor examples
Most of the examples had a GLES2 dependency, but weren't using it.
Convert multi-pointer to wlr_renderer instead of using directly
glClear.
2021-04-19 17:32:07 +02:00
Simon Ser fd7e565ce3 examples: use wlr_output_preferred_mode 2021-04-19 17:25:41 +02:00
Kenny Levinsen 3432ab2ba7 backend/session: Close remaining devices on destroy 2021-04-18 18:32:24 +02:00
Kenny Levinsen e7515529ce backend/session: Close fd in wlr_session_close_file
This was lost in the session_impl removal refactor.
2021-04-18 18:32:24 +02:00
ayaka ed1924800d render: make GLES2 renderer optional
Allow selecting whether the GLES2 renderer gets enabled.

Co-authored-by: Simon Ser <contact@emersion.fr>
2021-04-17 16:39:40 +02:00
Simon Zeni 122d6c6988 renderer: create pixman renderer if getting drm fd failed 2021-04-17 09:54:39 +02:00
Simon Zeni 0d90dddfab render: introduce pixman renderer 2021-04-17 09:54:39 +02:00
Simon Ser 9de93a866f backend/wayland: fallback to wl_shm on missing render node 2021-04-17 09:54:39 +02:00
Simon Ser 80865351bd backend/wayland: add support for wl_shm buffers 2021-04-17 09:54:39 +02:00
Simon Ser c6b009ef85 render: introduce shared memory allocator
It allocates in local main memory via shm_open, and provides a FD
to allow sharing with other processes.

This is suitable for software rendering under the Wayland and X11
backends.
2021-04-17 09:54:39 +02:00
Simon Ser 6c61de996c buffer: introduce wlr_buffer_get_shm
References: https://github.com/swaywm/wlroots/issues/2399#issuecomment-769408708
2021-04-17 09:54:39 +02:00
Simon Zeni 0b9288ec0b buffer: introduce wlr_buffer_get_data_ptr
The function has been place in an internal header for API stability
reasons.
2021-04-17 09:54:39 +02:00
Simon Ser 9f33d8ad39 readme: mark libseat as mandatory dep
[1] has made wlroots unconditionally depend on libseat. Mention this
in the README.

[1]: https://github.com/swaywm/wlroots/pull/2839
2021-04-17 09:48:26 +02:00
Ryan Farley d87ede0d69 xwayland/sockets: ensure proper permissions
Create a private UNIX socket directory (755), or use an existing one but
ensure proper permissions are set to prevent meddling from other users.
2021-04-16 11:53:05 +02:00
Simon Ser 3c6826df71 examples/rotation: error out on invalid option 2021-04-16 08:58:29 +02:00
Simon Zeni 84dea55b20 render: rename get_dmabuf_render_formats into get_render_formats 2021-04-15 17:10:06 +02:00
Simon Ser 004cf887b7 render/gles2: prevent imported DMA-BUF textures from being mutated
The compositor shouldn't write to client buffers if the client
attaches a DMA-BUF to a wl_surface, then attaches a shm buffer.
Make gles2_texture_write_pixels return an error to prevent this
from happening.
2021-04-15 10:49:42 +02:00
Simon Ser 1e5460d4c6 backend/x11: check for connection errors 2021-04-14 23:56:56 +02:00
Simon Ser 053ebe7c27 backend/drm: terminate display on drmHandleEvent failure 2021-04-14 23:56:56 +02:00
Simon Ser 846e0838d6 backend/libinput: terminate display on error 2021-04-14 23:56:56 +02:00