aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-05-17screencopy-v1: stop using wlr_client_bufferSimon Ser
We can just use the wlr_dmabuf_v1_buffer directly, no need to wrap it in a wlr_client_buffer.
2021-05-17buffer: use wlr_texture_from_buffer for DMA-BUFsSimon Ser
2021-05-17render/gles2: implement texture_from_bufferSimon Ser
Make it so wlr_gles2_texture is ref'counted (via wlr_buffer). This is similar to wlr_gles2_buffer or wlr_drm_fb work. When creating a wlr_texture from a wlr_buffer, first check if we already have a texture for the buffer. If so, increase the wlr_buffer ref'count and make sure any changes made by an external process are made visible (by invalidating the texture). When destroying a wlr_texture created from a wlr_buffer, decrease the ref'count, but keep the wlr_texture around in case the caller uses it again. When the wlr_buffer is destroyed, cleanup the wlr_texture.
2021-05-17render: introduce wlr_texture_from_bufferSimon Ser
This adds a a function to create a wlr_texture from a wlr_buffer. The main motivation for this is to allow the renderer to create a single wlr_texture per wlr_buffer. This can avoid needless imports by re-using existing textures.
2021-05-17render/gles2: add gles2_texture_createSimon Ser
This centralizes the wlr_texture initialization. In future commits, more fields will need to get initialized.
2021-05-17linux-dmabuf-v1: implement wlr_bufferSimon Ser
This allows the DMA-BUF wl_buffer objects to be used directly as wlr_buffers, without having to use wlr_client_buffer_import.
2021-05-17render/gles2: remove unnecessary EGL import ext checksSimon Ser
We require the ext in the renderer init function.
2021-05-17render: remove wlr_texture_get_sizeSimon Ser
Users can just access the width/height fields directly.
2021-05-12xwayland: actually use Xwayland from pkg-configThomas Weißschuh
eec2e1d3b16ba40c85483badcc7809277274ce5d introduced logic to use the Xwayland binary discovered via pkg-config. While the newly introduced checks correctly used the binary from pkg-config, the actual execution still used the previous PATH-search logic.
2021-05-11render/egl: query and display EGL driver nameSimon Ser
GL_RENDERER typically displays a human-readable string for the name of the GPU, and EGL_VENDOR typically displays a human-readable string for the GPU manufacturer. EGL_DRIVER_NAME_EXT should give the name of the driver in use. References: https://github.com/KhronosGroup/EGL-Registry/commit/e8baa0bf39120803505c6e360e1e33af0d9b9745
2021-05-07virtual_keyboard: Emulate key release events on destroyYuya Nishihara
According to libinput, release events are generated when device is unplugged, and libinput copies this behavior for device removal. Let's do the same for our virtual keyboard. https://github.com/wayland-project/libinput/commit/8f846a41fa0566fbd72ece676656e20e56ce43e6 This is another attempt to fix #2034 and the following sway issue: https://github.com/swaywm/sway/issues/6254 Note that we have other key repeating issues in sway, which aren't addressed by this patch. Since the virtual keyboard itself isn't destroyed when the keyboard grab is destroyed, we'll probably need some trick to reset the state of the corresponding virtual keyboard when the grab is released. https://github.com/swaywm/sway/issues/6095 https://github.com/swaywm/sway/issues/6193
2021-05-05render: add DRM dumb buffer allocatorSimon Zeni
2021-05-05render/gbm_allocator: duplicate drm fd during creation processSimon Zeni
2021-05-02xcursor: fix CVE-2013-2003Tobias Stoeckmann
The libXcursor fix for CVE-2013-2003 has never been imported into wlroots, leaving it vulnerable to it. Changing the argument type to an unsigned type is an effective merge of Ilja Van Sprundel's commit in libXcursor. Proof of Concept (compile with address sanitizer): $ mkdir -p ~/.local/share/icons/poc/cursors $ base64 -d <<< WGN1chAAAAAAAAAA/////w== > \ ~/.local/share/icons/poc/cursors/poc $ echo "seat seat0 xcursor_theme poc 10" > ~/poc-config $ sway -c ~/poc-config
2021-05-01build: move wayland-protocols dep to protocol/Simon Ser
2021-04-30backend/drm: Do not require mode commit on enableKenny Levinsen
If a mode is not provided, use the current mode intead. Closes: https://github.com/swaywm/wlroots/issues/2904
2021-04-29backend/headless: dup DRM FD in wlr_headless_backend_create_with_rendererSimon Ser
We were not dup'ing the DRM FD coming from wlr_renderer_get_drm_fd, resulting in a double-close on backend destroy.
2021-04-29backend/drm: introduce drm_connector_commit_stateSimon Ser
Backend-initiated mode changes can use this function instead of going through drm_connector_set_mode. drm_connector_set_mode becomes a mere drm_connector_commit_state helper.
2021-04-29backend/drm: take a wlr_drm_connector instead of a wlr_outputSimon Ser
No need to take a generic wlr_output, we already know the output comes from the DRM backend at that point.
2021-04-29backend/drm: take output state arg in drm_connector_commit_bufferSimon Ser
This will allow a whole state to be applied at once, instead of individually applying the buffer and the mode.
2021-04-29backend/drm: remove mode arg from drm_connector_set_modeSimon Ser
All of the information is in wlr_output_state.
2021-04-29backend/drm: remove mode arg from drm_connector_init_rendererSimon Ser
This is now unused.
2021-04-29backend/drm: remove wlr_drm_crtc_state.modeSimon Ser
Replace it with drm_connector_state_mode, which computes the mode from the wlr_output_state to be applied.
2021-04-29backend/drm: remove wlr_drm_crtc_state.activeSimon Ser
Replace it with drm_connector_state_active, which figures out whether the connector is active depending on the wlr_output_state to be applied.
2021-04-29backend/drm: remove wlr_drm_crtc.pending_modesetSimon Ser
Replace it with a new drm_connector_state_is_modeset function that decides whether a modeset is necessary directly from the wlr_output_state which is going to be applied.
2021-04-29backend/drm: fill scratch wlr_output_state for set_modeSimon Ser
Populate the wlr_output_state when setting a mode. This will allow drm_connector_set_mode to stop relying on ephemeral fields in wlr_drm_crtc. Also drm_connector_set_mode will be able to apply both a new buffer and a new mode atomically.
2021-04-29backend/drm: take wlr_output_state as arg in commit callersSimon Ser
Instead of relying on wlr_output.pending to be empty when performing backend-initiated CRTC commits, use a zero wlr_output_state.
2021-04-29backend/drm: take wlr_output_state as arg in crtc_commitSimon Ser
Stop assuming that the state to be applied is in output->pending in crtc_commit. This will allow us to remove ephemeral fields in wlr_drm_crtc, which are used scratch fields to stash temporary per-commit data.
2021-04-29render/gles2: assert texture comes from the same rendererSimon Ser
Rendering a wlr_texture with a different wlr_renderer is invalid. Add an assert to make sure this doesn't happen.
2021-04-29backend/drm: fix allocator DRM FD on multi-GPU setupsSimon Ser
On multi-GPU setups, there is a primary DRM backend and secondary DRM backends. wlr_backend_get_drm_fd will always return the parent DRM FD even on secondary backends, so that users always use the primary device for rendering. However, for our internal rendering we want to use the secondary device. Use allocator_autocreate_with_drm_fd to make sure the allocator will create buffers on the secondary device. We do something similar to ensure our internal rendering will happen on the secondary device with renderer_autocreate_with_drm_fd. Fixes: cc1b66364cc9 ("backend: use wlr_allocator_autocreate")
2021-04-29render/allocator: add allocator_autocreate_with_drm_fdSimon Ser
Same as wlr_allocator_autocreate, but allows the caller to force a DRM FD. Similar to renderer_autocreate_with_drm_fd.
2021-04-29render: remove wlr_ prefix from wlr_renderer_autocreate_with_drm_fdSimon Ser
This function is only required because the DRM backend still needs to perform multi-GPU magic under-the-hood. Remove the wlr_ prefix to make it clear it's not a candidate for being made public.
2021-04-29backend/drm: reword wlr_renderer failure messageSimon Ser
Remove the assumption about EGL.
2021-04-28Log when WLR_BACKENDS/WLR_RENDERER is setSimon Ser
Makes it easier to figure out why a backend/renderer is picked.
2021-04-28backend: use wlr_allocator_autocreateSimon Zeni
2021-04-28render/allocator: introduce wlr_allocator_autocreateSimon Zeni
2021-04-28render: introduce renderer_get_render_buffer_capsSimon Zeni
2021-04-28backend: introduce backend_get_buffer_capsSimon Zeni
2021-04-28types/wlr_buffer: introduce wlr_buffer_capSimon Zeni
2021-04-28render/shm_allocator: make wlr_shm_allocator_create return a wlr_allocatorSimon Zeni
2021-04-28render/gbm_allocator: make wlr_gbm_allocator_create return a wlr_allocatorSimon Zeni
2021-04-27render/pixman: check format is supported in create_bufferSimon Ser
2021-04-27buffer: add format param to get_data_ptrSimon Ser
Allow wlr_buffer_impl.get_data_ptr to return a format. This allows the Pixman renderer to not care about get_dmabuf/get_shm, and only care about get_data_ptr. This will also help with [1], because client wl_shm buffers can't implement get_shm. [1]: https://github.com/swaywm/wlroots/pull/2892 References: https://github.com/swaywm/wlroots/issues/2864
2021-04-27types/wlr_screencopy_v1: log error on read pixels failureSimon Zeni
2021-04-27pixman: implement read pixelsSimon Zeni
2021-04-27render/pixman: implement preferred_read_formatSimon Zeni
2021-04-27Revert "backend/drm: fail instead of stripping a modifier"Simon Ser
This reverts commit f9f90b417366581b58d806956c9b2099417ed4b3. gbm_bo_get_modifier may return a modifier in these cases: - The kernel doesn't support modifiers but Mesa does - WLR_DRM_NO_MODIFIERS=1 is set However, in both of these cases, the gbm_bo has been allocated without modifiers. There is already a check in drm_fb_create for modifiers: wlr_drm_format_set_has will make sure buffers with an explicit modifier will be rejected if the DRM backend doesn't support them. So no need for an additional check in get_fb_for_bo. Closes: https://github.com/swaywm/wlroots/issues/2896
2021-04-27backend/drm: carry on when disabling a CRTC failsSimon Ser
On GPU unplug, disabling a CRTC can fail with EPERM. References: https://github.com/swaywm/wlroots/pull/2575#issuecomment-761771264
2021-04-27backend/drm: destroy backend on udev remove eventSimon Ser
Any use of the DRM FD after the remove event results in a "Permission denied" error.
2021-04-27backend/session: add wlr_device.events.removeSimon Ser