Simon Ser
863acb26c0
backend/drm: stop tracking overlay planes
...
We don't do anything with them. Once we do, we can easily add this back.
2020-12-08 18:38:42 +01:00
Isaac Freund
c9760569ae
docs: fix error in wlr_output_set_damage() comment
...
output-buffer-local coordinates are neither scaled nor transformed
2020-12-07 20:45:36 +01:00
Dominik Honnef
431ec52b9c
xwayland: use pipe instead of SIGUSR1 to signal readiness
...
Closes: https://github.com/swaywm/wlroots/issues/2154
2020-12-07 12:24:56 +01:00
Simon Ser
82443ea46b
render/drm_format_set: introduce wlr_drm_format_intersect
...
Intersects modifiers from two wlr_drm_format structs. If either format
doesn't support modifiers, the resulting format won't support modifiers.
2020-12-03 10:52:25 +01:00
Simon Ser
513eca8dab
build: add leftover WLR_HAS_LIBCAP
...
We don't support libcap anymore. This was left as a comment by Meson:
/* #undef WLR_HAS_LIBCAP */
2020-12-03 00:05:38 +01:00
Simon Ser
de9ff46629
backend/drm: "scaling mode" is a connector property
...
It's not a CRTC property. Remove it altogether since it's unused.
2020-11-30 11:57:08 +01:00
Simon Ser
2649600fa1
backend/drm: rotation is a plane property
...
"rotation" is a plane property, it's not a CRTC property. It was also
missing from plane_info.
2020-11-30 11:57:08 +01:00
Ilia Bozhinov
d2329ac07a
xwm: add wlr_xwayland_surface_restack()
2020-11-30 11:29:28 +01:00
Simon Ser
83a5d03bf3
render/egl: remove wlr_egl.external_only_dmabuf_formats
...
Replace it with wlr_egl.dmabuf_render_formats.
2020-11-30 11:08:44 +01:00
Simon Ser
c94ab99ae2
render: rename wlr_renderer_get_formats
...
Rename wlr_renderer_get_formats to wlr_renderer_get_shm_texture_formats.
This makes it clear those formats are only suitable for shm import.
2020-11-30 11:08:44 +01:00
Simon Ser
49115e9d5d
render: rename wlr_renderer_get_dmabuf_formats
...
Rename wlr_renderer_get_dmabuf_formats to
wlr_renderer_get_dmabuf_texture_formats. This makes it clear the formats
are only suitable for creating wlr_textures.
2020-11-30 11:08:44 +01:00
Simon Ser
5d008d9030
render: introduce wlr_renderer_get_dmabuf_render_formats
...
It describes which DMA-BUF formats can be used to render.
2020-11-30 11:08:44 +01:00
Simon Ser
61612ecb36
render: remove wlr_renderer_format_supported
...
Instead, callers can just use wlr_renderer_get_formats and iterate over
the list.
This function was unused in wlroots.
2020-11-30 11:08:44 +01:00
Simon Ser
c15ca3793e
render: expand wlr_renderer_get{,_dmabuf}_formats docs
...
Make it clear formats returned are only suitable for import/sampling.
These formats can't be used to be rendered to.
2020-11-30 11:08:44 +01:00
Simon Ser
52805feae9
backend/x11: log errors
...
Register an X11 error handler, and optionally use xcb-errors to print a
detailed message.
2020-11-24 14:57:25 +01:00
Kenny Levinsen
ebecc5404b
surface: Make send_enter store entered outputs
...
wlr_surface_send_enter now stores outputs that have been entered.
Combined with a new 'bind' event on wlr_output, this allows us to delay
enter events as necessary until the respective wl_output global has been
bound.
Closes: https://github.com/swaywm/wlroots/issues/2466
2020-11-23 10:58:50 +01:00
Simon Ser
0e76f92de7
backend/session: replace session_signal with events.active
...
This is more idiomatic wlroots API. The new name makes it clear that the
signal is emitted when wlr_session.active changes.
2020-11-19 22:47:49 +01:00
Simon Ser
fbf11a41e1
backend/session: wait for DRM device if none found
...
Wait for a DRM device if none is found in wlr_session_find_gpus. This
can happen if the compositor is loaded before the display kernel driver.
This supersedes the logind CanGraphical property.
To test, e.g. with i915 and sway:
rmmod -f i915
sway &
modprobe i915
Closes: https://github.com/swaywm/wlroots/issues/2093
2020-11-19 22:47:49 +01:00
Simon Ser
76bcddf071
backend/session: introduce wlr_session.events.add_drm_card
...
This is triggered when a new DRM card is added.
An easy way to test this patch is `modprobe vkms`.
2020-11-19 22:47:49 +01:00
Simon Ser
44a4792fd8
backend/session: operate on wlr_device
...
Instead of operating on FDs in {open,close}_device, operate on
wlr_devices. This avoids the device lookup in wlr_session and allows
callers to have access to wlr_device fields.
For now, we use it to remove wlr_session_signal_add and replace it with
a more idiomatic wlr_session.events.change field. In the future, other
events will be added.
2020-11-19 22:47:49 +01:00
Ilia Bozhinov
6284af121f
texture: document that functions should not be called while rendering
2020-11-19 11:35:04 +01:00
Simon Ser
e18599b05e
render/egl: stop including eglmesaext.h
...
This is a Mesa-specific header that was needed because some Wayland EGL
extensions were missing from the Khronos registry. Now that this has
been fixed [1] and Mesa [2] & glvnd [3] have sync'ed their headers, we
can drop this workaround.
[1]: https://github.com/KhronosGroup/EGL-Registry/pull/95
[2]: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4953
[3]: https://gitlab.freedesktop.org/glvnd/libglvnd/-/merge_requests/225
2020-11-19 00:42:09 +01:00
Simon Ser
61f8cdfb9e
backend/headless: switch to wlr_swapchain
2020-11-15 22:54:07 +01:00
Simon Ser
eb8360bda3
render: introduce wlr_renderer_get_drm_fd
2020-11-15 22:54:07 +01:00
Simon Ser
c8d95acc37
render/egl: introduce wlr_egl_dup_drm_fd
2020-11-15 22:54:07 +01:00
Simon Ser
c881008e1c
backend/drm: add support for wlr_swapchain multi-GPU
2020-11-15 22:48:42 +01:00
Simon Ser
8058e338ea
backend/drm: get rid of wlr_drm_fb_type
...
Since all DRM FBs are backed by a wlr_buffer, there's no need for this
anymore.
2020-11-15 22:48:42 +01:00
Simon Ser
c11c6c4568
render/swapchain: add support for buffer age
2020-11-15 22:48:42 +01:00
Simon Ser
ef846a8839
backend/drm: use wlr_swapchain
2020-11-15 22:48:42 +01:00
Simon Ser
6136fe87d1
render/gles2: implement wlr_renderer_bind_buffer
2020-11-15 22:48:42 +01:00
Simon Ser
c88c54fb38
render: introduce wlr_renderer_bind_buffer
2020-11-15 22:48:42 +01:00
Simon Ser
0b40d09a21
buffer: add wlr_client_buffer_get
2020-11-15 22:48:42 +01:00
Simon Ser
b0a663d39d
render: introduce wlr_swapchain
...
The swapchain maximum capacity is set to 4, so that we have enough room
for:
- A buffer currently displayed on screen
- A buffer queued for display (e.g. to KMS)
- A pending buffer that'll be queued next commit
- An additional pending buffer in case we want to invalidate the
currently pending one
2020-11-15 22:48:42 +01:00
Simon Ser
7c6212a0f7
render/drm_format_set: introduce wlr_drm_format_dup
2020-11-15 22:48:42 +01:00
Simon Ser
5913040110
render: introduce wlr_gbm_allocator
2020-11-15 22:48:42 +01:00
Simon Ser
f47445f142
render: introduce wlr_allocator
2020-11-15 22:48:42 +01:00
Mykola Orliuk
2eae9ec7c8
backend/wayland: Set cursor indivdualy per output
2020-11-12 12:31:32 +01:00
Mykola Orliuk
44531e16e0
backend/wayland: Add active pointer per host seat
...
Every host seat with pointer capability propagates events to one of
sub-pointer depending which output window we entered.
active_pointer tracks reference to sub-pointer on enter/leave events to
avoid lookup for it on every move events.
Fixes swaywm/wlroots#1499
2020-11-12 12:31:32 +01:00
Mykola Orliuk
70ffda3ea3
backend/wayland: Add registering multiple seats
2020-11-12 12:31:32 +01:00
Mykola Orliuk
85b0872650
backend/wayland: Link input devices with seats
2020-11-12 12:31:32 +01:00
Mykola Orliuk
40bfd9f8f7
backend/wayland: Bind seat listener to wlr_wl_seat
2020-11-12 12:31:32 +01:00
Isaac Freund
e06c9e43af
Remove unneeded includes from wlr_input_device.h
...
This uncovered many places where we were using things without directly
including them.
2020-11-11 15:40:47 +01:00
Isaac Freund
0724b3c453
Use uint32_t in wlr_renderer_begin signature
...
This matches the signature of wlr_renderer_impl.begin
2020-11-11 11:01:46 +01:00
Isaac Freund
7693f61d81
Replace wlr_key_state with wl_keyboard_key_state
...
There's no reason to have duplicate enums
2020-11-11 10:58:38 +01:00
Isaac Freund
8348fc3ef8
xwayland: remove unused listener
2020-11-05 13:18:04 +01:00
Simon Ser
51fc7ddb29
screencopy: perform DMA-BUF copy on output commit
2020-11-05 09:43:42 +01:00
Simon Ser
f0945e112f
export-dmabuf: export DMA-BUF on output commit
...
We were previously exporting DMA-BUFs when receiving the capture_output
request, and sending a done event on wlr_output.events.precommit. Instead,
export and send done on wlr_output.events.commit.
2020-11-05 09:43:42 +01:00
Simon Ser
8c8164c4a6
output: add when field to wlr_output_event_commit
...
Similar to the one already present in wlr_output_event_precommit.
2020-11-05 09:43:42 +01:00
Simon Ser
ccd313e01a
output: update docs to reflect reality
...
The docs were outdated and weren't matching what the DRM backend does
(the only implementor of wlr_output_export_dmabuf).
2020-11-05 09:43:42 +01:00
Simon Ser
c2db691cad
gamma-control-v1: apply gamma LUT when output gets enabled
...
Closes: https://github.com/swaywm/wlroots/issues/2372
2020-11-03 17:47:04 +01:00
Simon Ser
f0ddcd361e
render: define EGL_NO_PLATFORM_SPECIFIC_TYPES ( #2452 )
...
This avoids Xlib.h inclusion via EGL headers. See [1] for discussion.
This change is based on a Weston commit [2].
[1]: https://github.com/KhronosGroup/EGL-Registry/pull/111
[2]: https://gitlab.freedesktop.org/wayland/weston/commit/526765ddfdfd
2020-11-02 10:51:52 +01:00
Tudor Brindus
0f9b2bfa64
render/dmabuf: use bitmask for wlr_dmabuf_attributes_flags
2020-10-31 23:15:21 +01:00
Tudor Brindus
368d0146fb
util/edges: use bitmask for wlr_edges
2020-10-31 23:15:21 +01:00
Tudor Brindus
0fdb41fe7c
types/wlr_output_layout: use bitmask for wlr_direction
2020-10-31 23:15:21 +01:00
Tudor Brindus
7c6e06fd13
types/wlr_keyboard: use bitmasks for wlr_keyboard_led and wlr_keyboard_modifier enums
2020-10-31 23:15:21 +01:00
Mykola Orliuk
41bf1c6871
backend/wayland: add error flow in create_wl_seat
2020-10-18 21:25:25 +02:00
Daniel Kondor
36395e5b1c
foreign-toplevel-management: report parent toplevel
...
Based on the wlr-protocols PR:
https://github.com/swaywm/wlr-protocols/pull/52
2020-10-18 17:14:35 +02:00
Mykola Orliuk
1ac5257357
backend/wayland: factor out wlr_wl_seat
2020-10-18 16:28:12 +02:00
Ilia Bozhinov
b98522b38f
backend/wayland: add touch support to the wayland backend
...
Goal currently is to get support working for a single output, thus there is only one touch device created.
Multi-output support is left for later.
2020-10-18 15:33:03 +02:00
Isaac Freund
e410ff8dd4
wlr_drag: remove unused point_destroy field
2020-10-18 15:17:28 +02:00
Isaac Freund
616f06c25c
xdg_positioner: remove unused field
...
The resource field of wlr_xdg_positioner is never initialized or
accessed within wlroots. The wl_resource for this interface is stored
in the wlr_xdg_positioner_resource struct.
2020-10-16 12:49:37 +02:00
Ilia Bozhinov
99f3c643bf
xwayland: add set_geometry event
...
This is necessary to react to changes in position of override-redirect
views.
2020-10-14 21:49:51 +02:00
Isaac Freund
8ad2cc39eb
layer-shell: add for_each_popup
...
This brings the layer-shell api in line with that of xdg-shell and
avoids reimplementing this function in every compositor in order to
render layer shell popups correctly.
2020-09-10 17:44:55 +02:00
Drew DeVault
a9cbfd950e
Remove xdg-shell v6
...
Ding dong the witch is dead
Fixes #2381
2020-09-03 00:01:10 +02:00
Valentin
8b744412aa
Use fixed size integer type
...
This type is meant to be 4 bytes large as seen in _XcursorReadUInt which
always reads 4 bytes. An unsigned int is often 4 bytes large but this
isnt' guaranteed so it is cleaner to use the exact type we want.
2020-09-01 11:58:56 +02:00
Simon Ser
b0144c7ded
output-power-management-v1: listen to output commit
2020-08-27 13:54:19 -06:00
Simon Ser
c674241ec0
output: introduce wlr_output_event_commit
...
This event contains a `committed` bitfield, which allows callers to know
which output fields changed during the commit.
This allows users to setup a single atomic commit listener, instead of
setting up one listener for each event (mode, scale, transform, and so
on).
References: https://github.com/swaywm/wlroots/issues/2098
2020-08-27 13:54:19 -06:00
Isaac Freund
2072d59da5
xdg-shell: split last-acked and current state
...
These states are distinct in the time period between the ack_configure
and the next commit on the surface. Splitting these states avoids the
following race for example:
- client starts at 1000x1000
- wlr_xdg_toplevel_set_size 500x500
- size is different -> configure sent
- client acks the configure
- wlr_xdg_toplevel_set_size 1000x1000
- compare_xdg_toplevel_state returns true since there is no pending
configure and the currently committed size is still 1000x1000
- no new configure is sent
- client commits at the size it last acked, 500x500
2020-08-27 12:36:29 +02:00
Kenny Levinsen
bad1e9afa8
session: Add libseat backend
2020-08-24 11:13:55 +02:00
Ilia Bozhinov
74f7be7287
xwayland: do not allow apps to change focus after wlroots request
2020-07-30 13:40:36 +02:00
Simon Ser
1dbcfdaf81
render/gles2: remove gles2_procs
...
Move the global into wlr_gles2_renderer. This removes global state and
allows us to have multiple renderers with different GL loaders.
2020-07-28 06:59:07 -06:00
Simon Ser
62da61716f
render/gles2: make push/pop debug functions take a wlr_renderer
2020-07-28 06:59:07 -06:00
Simon Ser
e8872d9ed7
render/gles2: keep ref to wlr_gles2_renderer in wlr_gles2_texture
2020-07-28 06:59:07 -06:00
Simon Ser
26af316b3b
render/gles2: make wlr_gles2_texture_from_* private
...
These functions are unused by compositors (see e.g. [1]) and prevent
wlr_gles2_texture from accessing wlr_gles2_renderer state. This is an
issue for proper teardown [2] and for accessing GLES2 extensions.
[1]: https://github.com/swaywm/wlroots/pull/1962#issuecomment-569511830
[2]: https://github.com/swaywm/wlroots/pull/1962
2020-07-28 06:59:07 -06:00
Scott Moreau
6d0ee53e1a
xwm: Set _NET_WM_STATE_FOCUSED property for the focused surface
...
Certain clients require this property to be set for expected behavior.
Most notably, steam client CSD maximize button no longer worked
after unmaximizing once, unless the state was changed by another
method. The state is unset whenever another surface gains focus.
2020-07-27 14:26:30 +02:00
Antonin Décimo
9686895b4e
Fix typos
2020-07-21 23:00:13 +02:00
Tobias Langendorf
bd387da62d
xwm: add support for xwayland minimize
2020-07-21 13:20:17 +02:00
Tudor Brindus
a145430afa
input/pointer: add wlr_seat_pointer_wrap
...
It allows a compositor to do things like skip motion events on pointer
constraint unlock.
References: https://github.com/swaywm/sway/pull/5431
2020-07-15 19:31:13 +02:00
xdavidwu
595f324f8b
input-method: implement keyboard grabs
2020-07-08 11:21:57 +02:00
xdavidwu
61e2ebac90
virtual-keyboard: add wlr_input_device_get_virtual_keyboard
2020-07-08 11:21:57 +02:00
Isaac Freund
92c85858a9
layer-shell: remove unused surface list
...
This was rendered useless in 5cde359
.
2020-07-07 12:11:31 +02:00
John Chadwick
58bcec9d94
xwm: end transfers when the requestor is destroyed
...
This improves the failure cases when incremental transfers fail to
complete successfully for one reason or another.
2020-07-03 09:42:36 +02:00
Simon Ser
c611a8f7e7
output: add backend docs
2020-06-30 08:03:58 -06:00
Simon Zeni
4a4da256dd
render/gles2: use glGetAttribLocation instead of hardcoded indices
2020-06-24 20:01:19 +02:00
Simon Ser
bf93d2e67c
output: rename impl->rollback to rollback_render
...
The output backend API is now mostly state-less thanks to the atomic
hooks (commit and test). There is one exception though: attach_render.
This function makes the rendering context current. However sometimes the
compositor might decide not to render after attach_render (e.g. when
there's nothing new to render to the back buffer). Thus
wlr_output_rollback has been introduced to revert the pending state.
Because the output backend API is mostly state-less, the only thing
wlr_output_impl.rollback needs to do is revert the current rendering
context. Rename the function to rollback_render to make this clear. Add
a check in the common wlr_output code to only call rollback_render when
attach_buffer has been previously called.
On the long term, we'll be able to remove attach_render and
rollback_render together.
2020-06-19 11:50:42 -06:00
Simon Ser
9e68ed2159
viewporter: new protocol implementation
...
Closes: https://github.com/swaywm/wlroots/issues/633
2020-06-17 09:10:54 -06:00
Simon Ser
c618a76540
surface: introduce wlr_surface_get_buffer_source_box
...
This helper allows compositors to retrieve the buffer source box in
buffer-local coordinates.
2020-06-17 09:10:54 -06:00
Simon Ser
eb22ae97b0
surface: add wlr_surface_state.viewport
...
This field contains the viewport source and destination parameters. It's
intended to be updated by a third-party protocol, for instance
viewporter.
2020-06-17 09:10:54 -06:00
Simon Ser
315bf08733
render: add wlr_render_subtexture_with_matrix
...
This renders only a subset of the texture, instead of the full texture.
2020-06-17 09:10:54 -06:00
Simon Ser
00ccb89288
util/region: add wlr_region_scale_xy
2020-06-17 09:10:54 -06:00
Simon Ser
9814213a91
box: add wlr_fbox
...
Same as wlr_box, but for floating-point numbers.
2020-06-17 09:10:54 -06:00
Simon Ser
79e03c7d45
output: document wlr_output_export_dmabuf
2020-06-09 07:12:43 -06:00
Simon Ser
a8a4a12c4b
buffer: document wlr_buffer_get_dmabuf DMA-BUF lifetime
2020-06-09 07:12:43 -06:00
Andri Yngvason
ea83957ecc
screencopy: Implement copying into linux-dmabuf
2020-06-08 20:49:41 +02:00
Andri Yngvason
b64a8a7f98
render: Add wlr_renderer_blit_dmabuf()
2020-06-08 20:49:41 +02:00
Andri Yngvason
11b598fe33
render: egl: Add utility functions for saving/restoring context
2020-06-08 20:49:41 +02:00
Simon Ser
a3ba82885c
render: choose DMA-BUF texture target via eglQueryDmaBufModifiersEXT
...
EGL_EXT_image_dma_buf_import_modifiers tells us whether we should use
GL_TEXTURE_2D or GL_TEXTURE_EXTERNAL_OES. Using the right texture target
can fix some failures and/or improve performance on some drivers.
This does the same as a Weston commit [1].
[1]: https://gitlab.freedesktop.org/wayland/weston/commit/40c519a3e613
Closes: https://github.com/swaywm/wlroots/issues/2173
2020-06-06 08:59:38 +02:00
Tudor Brindus
363bf44a35
util/time: move `timespec_sub` to time utilities
2020-06-06 00:09:19 +02:00
Tudor Brindus
c9c31f803e
util/time: de-duplicate `timespec_to_msec`
2020-06-06 00:09:19 +02:00
Tudor Brindus
dc13bb827d
util: fix and move `get_current_time_msec` into a util file
...
This commit makes `get_current_time_msec` correctly return milliseconds
as opposed to microseconds. It also considers the value of `tv_sec`, so
we don't lose occasionally go back in time by one second. Finally, the
function is moved into `util/time.cc` so that it can be reused elsewhere
without having to consider these pitfalls.
2020-06-06 00:09:19 +02:00