Commit graph

7015 commits

Author SHA1 Message Date
Rose Hudson
fc81d06add backend/drm: report !presented if session is inactive 2023-08-23 16:36:43 +02:00
Rose Hudson
f7afef0b1f backend/drm: don't set frame_pending on modeset
https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3664#note_2020392
we're gonna have to trust Simon on this one 🤞
2023-08-23 16:36:43 +02:00
Simon Ser
11aba53ead render: only open DRM render node if necessary
Only open a render node if we actually need one (ie, if we're about
to attempt GLES2 or Vulkan).
2023-08-23 13:42:07 +02:00
Rose Hudson
f5917f0247 scene_output_layout: make output adding explicit
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3709
2023-08-22 11:53:28 +02:00
Rose Hudson
91f813ffb7 output_layout: return wlr_output_layout_output when adding output
This will be used for the scene-graph integration.
2023-08-22 11:53:25 +02:00
Alexander Orzechowski
e85c79051c wlr_output: Set current_mode during new custom mode
When setting a custom mode current_mode will not be reset. That means
that next time the compositor tries to reset back from the custom mode,
it will compare against the stale current_mode and unset
WLR_OUTPUT_STATE_MODE erroneously.
2023-08-22 09:46:24 +00:00
Simon Ser
72787db98a compositor: drop wlr_surface_destroy_role_object()
This function is now unnecessary.
2023-08-21 18:56:09 +02:00
Kirill Primak
bd5c4f4a4a xdg-shell: rework roles 2023-08-21 16:30:29 +00:00
Kirill Primak
e5300c225e xdg-popup: avoid using wlr_surface_destroy_role_object() 2023-08-21 16:30:29 +00:00
Kirill Primak
10ba8ebc70 Don't assume xdg_surface.{toplevel,popup} is non-NULL
This assumption will become incorrect with future commits.
2023-08-21 16:30:29 +00:00
Kirill Primak
f0cc712af1 xdg-shell: don't return anything from create_xdg_surface() 2023-08-21 16:30:29 +00:00
Alexander Orzechowski
ce615a44c0 egl: Don't assume display is owned when KHR_display_reference is unsupported
We could potentially leak a display here, but not really because the
display acts as a singleton that will be returned next time a renderer
of the same device is created.
2023-08-21 15:51:26 +00:00
Alexander Orzechowski
91a1797a96 egl: Remove dead code
Display is always NULL here since egl_init is always last to be called.
2023-08-21 15:51:26 +00:00
Simon Ser
9b8cd1f5d6 buffer: make wlr_client_buffer functions private
We want to eventually remove this. Let's make sure compositors
don't start using either of these functions.
2023-08-21 15:45:10 +00:00
Simon Ser
6c1a2a6657 backend/headless: fix broken output frame events
frame_delay was set to 0.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3712
2023-08-21 16:18:26 +02:00
Alexander Orzechowski
5f6912595e renderer/vulkan: Defer device lost signal until end of pass
If the compositor were to try to handle a GPU reset within the lost
signal (by recreating the renderer) we should avoid referencing renderer
resources after the lost signal. This prevents use after free for such
compositors.
2023-08-20 21:12:06 -04:00
Leonardo Hernández Hernández
bdc34401ba
xdg-decoration: store an xdg_toplevel instead of xdg_surface
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3685
2023-08-19 11:10:36 -06:00
Simon Ser
22b6581a18 backend/wayland: wait for xdg_surface.configure explicitly
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-16 22:09:01 +02:00
Simon Ser
d3d3e19ffd render: split render pass API into separate header
Keeps the main wlr_renderer.h a tad more tidy.
2023-08-16 19:20:12 +02:00
Alexander Orzechowski
568b1943b9 wlr_output: Nuke wlr_output_update_enabled 2023-08-16 18:37:55 +02:00
Alexander Orzechowski
63351cf81f output: Schedule mode updates to happen with rest of output events 2023-08-16 18:37:55 +02:00
Alexander Orzechowski
f042de3f51 output: Inline wlr_output_update_{custom,}_mode 2023-08-16 18:37:55 +02:00
Alexander Orzechowski
f1ba70ffa6 wlr_output: Make wlr_output_update_{custom,}_mode private
Backends should be using wlr_output_send_request_state to request
modesets to the compositor. This will be inlined and removed next commit.
2023-08-16 18:37:55 +02:00
Alexander Orzechowski
8f0d4c9332 backend/drm: Use output state to set init mode 2023-08-16 18:37:40 +02:00
Alexander Orzechowski
a34d349963 backend/drm: Move output variable up in connect_drm_connector 2023-08-16 11:46:27 -04:00
Alexander Orzechowski
a60361050e backend/headless: Use output state to set init custom mode 2023-08-16 11:46:27 -04:00
Alexander Orzechowski
83d9764ed8 backend/wayland: Use output state to set init custom mode 2023-08-16 11:46:27 -04:00
Alexander Orzechowski
869b0f14bc backend/x11: Use output state to set init custom mode 2023-08-16 11:46:27 -04:00
Alexander Orzechowski
6cda3e251c output: Add initialization state to wlr_output_init 2023-08-16 11:46:27 -04:00
Alexander Orzechowski
8f67446cc7 output: Extract common commit logic 2023-08-16 11:46:26 -04:00
Simon Ser
8836e12988 examples/embedded: new example 2023-08-16 16:39:53 +02:00
Simon Ser
8678633fc9 backend/wayland: add wlr_wl_output_create_from_surface()
By using this function, a compositor can display a wlroots
compositor in a sub-surface, for instance.
2023-08-16 16:39:52 +02:00
Simon Ser
4f88886199 backend/wayland: tag wl_surface
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-16 16:38:53 +02:00
Simon Ser
dd24991c9e backend/wayland: take existing wl_display in wlr_wl_backend_create()
This allows compositors to use an existing wl_display, to integrate
wlroots with an existing toolkit.
2023-08-16 16:29:09 +02:00
Alexander Orzechowski
664ec59095 renderer: Sanity check texture source bounds 2023-08-14 08:08:39 +00:00
Alexander Orzechowski
aee31edaad screencopy_v1: Implement copy regions with gpu blit path 2023-08-12 10:16:51 +00:00
Alexander Orzechowski
b4cbaa4549 screencopy_v1: Use new renderer API for gpu blit path 2023-08-12 10:16:51 +00:00
Simon Ser
c74f89d4f8 Avoid using memcpy() to copy structs
We can just use a regular assignment instead. This is more
type-safe since there is no need to provide the struct size.

The remaining memcpy() calls perform array copies or copies from
void pointers (which may be unaligned).
2023-08-03 14:40:28 +00:00
Simon Ser
77dc1c28aa xwayland: drop wlr_xwayland_surface.events.set_pid
The PID of an X11 window cannot change.

This is a remnant from the days when we queried the PID with a
window property, instead of using XRes.
2023-08-03 03:19:35 +00:00
JiDe Zhang
73db481037 wlr_output: update cursor when scale changed
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3699
2023-08-03 02:13:00 +00:00
JiDe Zhang
61903ed66b wlr_output_cursor: assert renderer isn't NULL
When a wlr_output add to wlr_output_layout, wlr_cursor will create
wlr_buffer of xcursor for the wlr_output, this behavior depends
wlr_renderer of wlr_output, using assert to ensure renderer is
initialized before wlr_output_layout_add and wlr_cursor_set_buffer/
wlr_cursor_set_xcursor.
2023-08-03 02:13:00 +00:00
Simon Ser
d40bcfe2c1 xwayland: avoid calling xwm_get_atom_name() when debug logs are off
xwm_get_atom_name() performs a roundtrip to the X11 server. Avoid
calling this blocking function if debug logs are turned off.
2023-07-28 14:21:37 +02:00
Simon Zeni
60ca6f17eb types/wlr_drm_lease_v1: downgrade DRM backend error message to debug
Downgrades the error message printed out when no DRM backend is given from `WLR_ERROR` to
`WLR_DEBUG`
2023-07-27 22:14:46 -04:00
q234rty
061f5fafbd render/vulkan: use renamed glslang binary by default
glslang 12.3.0 renamed glslangValidator to glslang,
use that by default and use the old name as a fallback.

References: https://github.com/KhronosGroup/glslang/blob/main/CHANGES.md?plain=1#L14
2023-07-27 16:06:49 +08:00
Kirill Primak
42a5b6f62a compositor: add "mapped" flag doc 2023-07-26 20:39:03 +00:00
Kirill Primak
7df11ada5e Unmap wlr_surface before making its role object inert 2023-07-26 20:39:03 +00:00
Kirill Primak
529f1b82ee xwayland/shell: don't listen to wlr_surface.events.destroy
The wlr_xwayland_surface_v1 will be destroyed automatically
from xwl_surface_role_destroy().
2023-07-26 20:31:03 +00:00
Simon Ser
307720d501 backend/drm: restore custom modes
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-26 17:08:47 +00:00
rewine
2f859f5bec
wlr_output: add comments for signal parameters 2023-07-26 13:55:34 +08:00
Leonardo Hernández Hernández
e8d545a977
xdg-shell: add support for v6
This adds the suspended toplevel state
2023-07-23 20:30:43 -06:00