Simon Ser
c5f239f411
backend/drm: make listener names more idiomatic
...
Use the "<object>_<event>" notation for listeners, use
"handle_<listener>" for handlers.
2020-12-25 14:45:00 +01:00
Simon Ser
b9460ab724
Stop using wlr_texture_get_size
...
Just use wlr_texture.{width,height} directly.
2020-12-25 12:21:29 +01:00
Simon Ser
ae5275c09f
client-buffer: remove unnecessary wlr_resource_get_buffer_size
...
We can just get the size from the imported texture.
2020-12-25 12:14:31 +01:00
Simon Ser
17dd4c9e9a
backend/drm: use connector log helpers in atomic backend
2020-12-24 17:55:45 +01:00
Simon Ser
a7a230ebef
backend/drm: make drmModePlane arg in add_plane const
...
Make it clearer it'll be free'd after add_plane returns.
2020-12-24 12:34:13 +01:00
Simon Ser
c011a0e2ed
backend/drm: add special case for cursor in add_plane
...
The code calling add_plane now makes sure not to add a cursor plane to a
CRTC which already has one.
2020-12-24 12:31:20 +01:00
Simon Ser
5548406667
backend/drm: log whether ADDFB2 modifiers are supported
2020-12-24 12:29:30 +01:00
Simon Ser
71eaab9d8c
docs/env_vars: document seatd session
2020-12-24 12:19:34 +01:00
Simon Ser
430d37846f
docs/env_vars: _WAYLAND_DISPLAY isn't used anymore
2020-12-24 12:17:31 +01:00
Simon Ser
21ed6582ce
Remove contrib/_incr_version
...
Not used anymore.
2020-12-24 12:14:19 +01:00
Simon Ser
64a2ca4dba
backend/drm: don't retry page-flip when modifiers are unsupported
...
Parse WLR_DRM_NO_MODIFIERS at startup. Don't parse IN_FORMATS when
WLR_DRM_NO_MODIFIERS is set, so that the legacy behaviour is better
reproduced.
When modifiers aren't supported, try the initial page-flip once only.
2020-12-23 19:49:27 +01:00
Simon Ser
54ec17ff64
backend/drm: use plural form for possible_crtcs
...
Make it clearer that this is a bitmask of CRTC indices.
2020-12-23 12:14:36 +01:00
Simon Ser
2de400a541
backend/drm: assert connector state after wlr_output_destroy
2020-12-22 19:53:33 +01:00
Simon Ser
85cf4b235d
backend/drm: destroy DRM connectors that disappear
...
This was lost during the refactoring. We were previously calling
wlr_output_destroy, which destroyed the connector as well.
Fixes: 248c7787c7
("backend/drm: refactor wlr_output destruction")
2020-12-22 19:38:29 +01:00
Isaac Freund
f6fc4c2883
subsurface: handle NULL parent in get_root_surface
2020-12-22 15:55:05 +01:00
Simon Ser
ad4dae0844
backend/drm: error on size mismatch in drm_surface_blit
2020-12-22 15:53:10 +01:00
Simon Ser
d3bcd63a40
backend/drm: remove drm_fb_acquire
...
Instead, import the buffer into GBM and KMS in drm_fb_import. Also move
the multi-GPU copy there if necessary.
2020-12-22 15:53:10 +01:00
Simon Ser
5ee8b12dc3
backend/drm: make drm_fb_acquire return a FB ID
2020-12-22 15:53:10 +01:00
Simon Ser
d09abe86c1
backend/drm: drop export_drm_bo
...
Not used anymore.
2020-12-22 15:53:10 +01:00
Simon Ser
dabd2e7207
backend/drm: grab DMA-BUF from wlr_buffer instead of gbm_bo
...
Get the DMA-BUF directly out of the wlr_buffer instead of relying on the
gbm_bo. This eliminates a roundtrip through GBM.
2020-12-22 15:53:10 +01:00
Simon Ser
83925f04c3
backend/drm: don't save texture in gbm_bo user data
...
The GBM BO is destroyed when released anyways.
2020-12-22 15:53:10 +01:00
Simon Ser
55b02f753f
backend/x11: destroy buffers when destroying output
2020-12-21 16:31:07 +01:00
Simon Ser
d6dbdd97e9
backend/x11: re-use pixmaps
...
Instead of re-importing a buffer each time we submit a frame, re-use the
pixmaps if possible.
2020-12-21 16:31:07 +01:00
Simon Ser
defcd9b025
backend/wayland: re-use wl_buffers
...
Instead of re-importing a buffer each time we submit a new frame, re-use
the wl_buffer objects if possible.
2020-12-21 16:30:47 +01:00
Simon Ser
de896caceb
backend/wayland: remove EGL config
...
We don't use EGLSurface anymore, so we don't need to choose an EGL
config anymore.
2020-12-19 21:11:01 +01:00
Isaac Freund
6c08fe9796
xwayland: avoid crash on repeated server_finish_display() call
...
This function may end up being called more than once if the Xwayland
binary does not exist on the system.
2020-12-19 10:39:31 +01:00
Ronan Pigott
917ecca58e
backend/drm: avoid gcc stringop-truncation warning
2020-12-18 22:19:16 +01:00
Simon Ser
352fdd1bb0
backend/drm: remove unused wlr_drm_plane.drm_format
2020-12-18 11:44:50 +01:00
Simon Ser
248c7787c7
backend/drm: refactor wlr_output destruction
...
Instead of hand-rolling our own manual wlr_output cleanup function, rely
on wlr_output_destroy to remove an output from the compositor's state.
2020-12-18 10:48:44 +01:00
Simon Ser
019ffe8a5b
backend/drm: introduce wlr_drm_connector.name
...
The DRM backend is a little special when it comes to wlr_outputs: the
wlr_drm_connectors are long-lived and are created even when no screen is
connected.
A wlr_drm_connector only advertises a wlr_output to the compositor when
a screen is connected. As such, most of wlr_output's state is invalid
when the connector is disconnected.
We want to stop using wlr_output state on disconnected connectors.
Introduce wlr_drm_connector.name which is always valid regardless of the
connector status to avoid reading wlr_output.name when disconnected.
2020-12-18 10:48:44 +01:00
Simon Ser
c89b131f29
backend/drm: introduce wlr_drm_conn_log
...
Simplify and unify connector-specific logging with a new
wlr_drm_conn_log macro. This makes it easier to understand which
connector a failure is about, without having to explicitly integrate the
connector name in each log message.
2020-12-18 10:48:44 +01:00
Simon Ser
0aefa18690
backend/x11: send more precise output present events
...
Instead of sending dummy output present events, use the X11 Present
extension to send more precise events.
2020-12-18 10:37:08 +01:00
Simon Ser
f0c1b32120
util/time: add timespec_from_nsec
2020-12-18 10:37:08 +01:00
Simon Ser
94fda895ac
backend/x11: use DRI3Open to get DRM FD
...
Instead of relying on EGL to retrieve the DRM FD, query it from the
DRI3 extension.
Use the EGL GBM platform, and drop the EGL config.
2020-12-18 10:12:55 +01:00
Simon Ser
1e2c7fce86
backend/drm: use wlr_drm_format_{create,add}
...
Instead of manually allocating and initializing the structs, use the new
wlr_drm_format helpers.
2020-12-18 09:41:12 +01:00
Simon Ser
d37214cb16
render/drm_format_set: add wlr_drm_format_{create,add}
2020-12-18 09:41:12 +01:00
Simon Ser
253f447329
backend/drm: print DRM device name when scanning connectors
2020-12-17 20:50:19 +01:00
Simon Ser
9cd3f03f65
backend/drm: add wlr_drm_backend.name
...
Save the DRM device name in a wlr_drm_backend field, so that we can
easily use it for logging purposes.
2020-12-17 20:48:47 +01:00
Simon Ser
60001a75a2
backend/drm: remove nouveau workaround
...
The workaround is broken because drm_fb_acquire doesn't leave the EGL
context current anymore. We'll need to re-introduce it.
References: https://github.com/swaywm/wlroots/issues/2525
2020-12-17 20:38:02 +01:00
Simon Ser
bdf26f87d5
render/allocator: ignore NULL in wlr_allocator_destroy
2020-12-17 20:34:19 +01:00
Simon Ser
0dcdb5e7a1
backend/x11: fix DRI3 formats not used
...
We queried DRI3 formats, but we weren't using them. Because of a typo,
only render formats were used.
Fixes: c59aacf944
("backend/x11: query modifiers supported by X11 server")
Closes: https://github.com/swaywm/wlroots/issues/2552
2020-12-17 17:02:09 +01:00
Simon Ser
0aa2ba0c03
backend/headless: select the rendering device ourselves
...
Backends will eventually stop creating their renderer. To prepare for
this, stop using EGL_PLATFORM_SURFACELESS_MESA in the headless renderer.
Pick a render node using libdrm.
The new allocator/renderer creation logic looks very much like what will
end up in common code.
2020-12-16 12:12:36 +01:00
Simon Ser
da2a216934
backend/drm: add wlr_drm_connector.backend
...
This allows the DRM code to have direct access to the wlr_drm_backend
without having to go through an upcast via get_drm_backend_from_backend.
2020-12-15 22:56:14 +01:00
Simon Ser
87bd718de5
backend: use fcntl(F_DUPFD_CLOEXEC) instead of dup
...
This makes sure the CLOEXEC flag is set on the dup'ed FD.
2020-12-15 20:52:53 +01:00
Simon Ser
1ca4d6b029
backend/drm: dup FD before wlr_gbm_allocator_create
...
The GBM allocator takes ownership of the DRM FD.
2020-12-15 20:50:04 +01:00
Simon Ser
3fd8098881
render/gles2: require GL_EXT_unpack_subimage
...
We implicitly depended on this extension.
2020-12-15 14:55:18 +01:00
Simon Ser
e57a52e7f7
Remove inline keyword
...
The compiler is smarter at figuring out whether a function should be
inlined or not.
2020-12-15 13:49:42 +01:00
Simon Ser
93cd3a79b2
backend/drm: stop using GBM flags
...
gbm_bo_create_with_modifiers doesn't take GBM flags, so our
wlr_gbm_allocator interface doesn't either. We were still internally
using GBM flags in the DRM backend, leading to awkward back-and-forth
conversions.
The only flag passed to drm_plane_init_surface was GBM_BO_USE_LINEAR, so
turn that into a bool to make sure other flags can't be passed in.
Move the "force linear" logic out of init_drm_surface, because the
supplied wlr_drm_format should already contain that information.
2020-12-13 13:20:39 +01:00
Simon Ser
525fa6ada0
backend/x11: fix xinput mask mixed up with present
...
Don't mix xinput and present flags.
Fixes: d79a00bf02
("backend/x11: switch to wlr_swapchain")
2020-12-13 12:21:21 +01:00
Simon Ser
c59aacf944
backend/x11: query modifiers supported by X11 server
2020-12-13 12:16:52 +01:00