Age | Commit message (Collapse) | Author |
|
Instead of rendering a black frame, schedule a frame event to ask the
compositor to render a proper frame.
|
|
- The DRM backend initially doesn't have a frame scheduled initially.
However the compositor is expected to set a mode to start the
rendering loop (frame_pending is set to true in drm_crtc_pageflip).
- The headless and X11 backends have a timer to schedule frames, so they
ignore this hint completely.
- The Wayland backend renders a fake frame to start the rendering loop.
It's the only case where a frame is pending on init, move the
assumption there.
|
|
Closes: https://github.com/swaywm/wlroots/issues/2533
|
|
Since we're using wlr_swapchain, we don't need to provide an EGL config.
|
|
This caused issues with wlr_drm_format_dup.
|
|
I was about to add a check to fail instead of crash when the compositor
uses direct scan-out, but with renderer v6 it's so simple to just add
support for direct scan-out, why bother?
Closes: https://github.com/swaywm/wlroots/issues/2523
|
|
This isn't necessarily the case [1].
This should fix an assertion failure on Raspberry Pi 4 dual screen.
[1]: https://lists.freedesktop.org/archives/dri-devel/2020-August/275142.html
Closes: https://github.com/swaywm/wlroots/issues/1943
Co-authored-by: Simon Ser <contact@emersion.fr>
|
|
We don't do anything with them. Once we do, we can easily add this back.
|
|
drm_fb_import_wlr may need to change the current EGL context. For
instance by calling drm_fb_clear, which calls wlr_buffer_unlock, which
may destroy a buffer if the cursor swapchain size has changed, which
calls gles2's destroy_buffer, which calls glDeleteFramebuffers.
Closes: https://github.com/swaywm/wlroots/issues/2479
|
|
This is just the vendor-agnostic define for the GBM platform. It has the
same value as EGL_PLATFORM_GBM_MESA, so should work with old drivers
that only offer the Mesa-vendored extension too.
|
|
|
|
|
|
libseat will call logind's SetType method if necessary.
|
|
We return early if we don't have a plane.
|
|
On some platforms it's possible that the display engine supports
modifiers not supported by the render engine.
Query render formats and intersect them with plane formats to accommodate
for this.
|
|
Instead of taking a format code and wlr_drm_format_set, simplify the
function signature and take a single wlr_drm_format.
|
|
This reverts commit 713c1661b742f93a7d2167321837c0d99541ca87.
It turns out we do need to force-probe on startup and on hotplug [1].
This is unfortunate, but that's just how the uAPI works. Fixing this
would require patching the kernel.
[1]: https://lists.freedesktop.org/archives/dri-devel/2020-November/289506.html
Closes: https://github.com/swaywm/wlroots/issues/2499
|
|
It's not a CRTC property. Remove it altogether since it's unused.
|
|
"rotation" is a plane property, it's not a CRTC property. It was also
missing from plane_info.
|
|
When allocating buffers, use a format suitable for rendering. This
avoids picking a format that won't work.
|
|
The Wayland platform doesn't have visuals. By chance,
WL_SHM_FORMAT_ARGB8888 is zero, which means egl_get_config was ignoring
it and everything worked fine.
|
|
After discussing with Pekka and Daniel on #dri-devel, we concluded [1]
that user-space shouldn't need to force-probe connectors. Force-probing
can take some time, so using drmModeGetConnectorCurrent can result in
faster start-up.
Users can manually trigger a force-probe if necessary:
echo detect | sudo tee /sys/class/drm/card0-DP-1/status
Or just by running a tool like drm_info.
A similar change has been submitted to Weston [2].
[1]: https://lists.freedesktop.org/archives/dri-devel/2020-November/287728.html
[2]: https://gitlab.freedesktop.org/wayland/weston/-/issues/437
|
|
|
|
|
|
Register an X11 error handler, and optionally use xcb-errors to print a
detailed message.
|
|
This should return true on success and false on failure not vice-versa.
|
|
If a GPU doesn't show up in 10s, bail out and return zero GPUs.
|
|
This makes it easier to figure out how wlroots selected the session.
|
|
This is more idiomatic wlroots API. The new name makes it clear that the
signal is emitted when wlr_session.active changes.
|
|
We now use udev to wait for DRM card devices.
This reverts commit 3ebf079a9a120a27fc1008a62e7f99d5d166b745.
|
|
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
|
|
This is triggered when a new DRM card is added.
An easy way to test this patch is `modprobe vkms`.
|
|
We're only interested in card devices. The loop over wlr_session.devices
would take care of ignoring non-card events, but a future patch will
listen to udev "add" events as well.
|
|
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.
|
|
When wlr_session_open_file fails, don't return the FD, otherwise the
caller will think the call succeeded.
|
|
We would always return the GAMMA_LUT_SIZE property if available, and
only fall back to legacy gamma size otherwise. This leads to issues if
both are available in differs in size while we use the legacy backend.
Ensure that we only return the legacy size if we're using the legacy
backend.
Closes: https://github.com/swaywm/wlroots/issues/2429
|
|
|
|
|
|
This avoids hitting an assertion in drm_fb_lock_surface when
we failed to render a black frame.
|
|
|
|
Since all DRM FBs are backed by a wlr_buffer, there's no need for this
anymore.
|
|
|
|
|
|
We have the policy of requiring up-to-date dependencies instead of
adding conditionals for older versions. libinput 1.14 was published more
than 1 year ago.
|
|
|
|
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
|
|
|
|
This effectively gets swaywm/wlroots#1499 to the point where
functionality somewhat preserved and no crash happens.
We still can have only one cursor, but we can control it from multiple
seats in time-sharing manner by entering/leaving output.
|
|
|
|
|