Age | Commit message (Collapse) | Author |
|
We're about to get one more Xwayland-related thing, and this header
already contains two things.
|
|
This function doesn't exist anymore.
|
|
Version 4 of the protocol adds support for reporting/setting adaptive
sync state of outputs. Implement these new requests/events in wlroots.
|
|
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3514
|
|
References: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/29
|
|
|
|
The output names must be globally unique per the Wayland spec, even
if the compositor creates multiple backends of the same kind.
|
|
This was unused. Even if it was, it'd be better to have bool fields
instead.
|
|
We were crashing in the error codepath [1] when
wlr_drm_create_lease() fails.
To fix this, delay the creation of the wlr_drm_lease_v1 until the
request is granted. Previously we were allocating that struct early
without populating the drm_lease field. However that means we ended
up with a half-constructed struct in the error codepath which is
annoying to handle.
[1]: https://github.com/swaywm/sway/issues/7204#issuecomment-1269797356
|
|
This field becomes stale too easily: for instance, see 6adca4089cf4
("backend/drm: don't unconditionally set desired_enabled").
Additionally, drm_connector_alloc_crtc() needs to do some weird
dance, restoring its previous value.
Instead, add a connector arg to realloc_crtcs() to indicate a new
connector we want to enable.
|
|
|
|
|
|
These are unused.
|
|
.. by including wlr_buffer.h
|
|
Avoids having to walk the list of all textures.
|
|
Avoids having to walk the list containing all of the render buffers.
|
|
When starting up, the compositor might call wlr_output_set_mode()
with a mode which is already the current one. wlroots will detect
this and make the wlr_output_set_mode() call a no-op. During the
next wlr_output_commit() call, wlroots will perform an atomic
commit without the ALLOW_MODESET flag.
This is an issue, because some drivers need ALLOW_MODESET even if
the mode is the same. For instance, if the FB stride or modifier
changed, some drivers require a modeset.
Add a new flag "allow_artifacts" which is set when the compositor
calls mode-setting functions. Use this flag to figure out whether
we want to perform atomic commits with ALLOW_MODESET.
(The name "allow_artifacts" is picked because ALLOW_MODESET is a
misnomer, see [1].)
[1]: https://patchwork.freedesktop.org/patch/505107/
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3499
|
|
Instead of using low-level wl_shm_buffer and wlr_dmabuf_v1_buffer
APIs, use the unified wlr_buffer APIs. That way it doesn't matter
what the exact wlr_buffer implementation is used, any which provides
the necessary capabilities (data_ptr or dmabuf) would work.
Simplifies the logic a bit, and will make the transition to wlr_shm
easier.
|
|
Make it clear it's only about shm, not about DMA-BUFs.
|
|
Will allow us to simplify common shm/DMA-BUF logic later on.
|
|
Make it clear that one is for shm buffers only, and the other is
for DMA-BUF buffers only.
|
|
|
|
CTA-861-H defines a picture aspect ratio which may be attached to
each mode. This affects the way the sink will display the image.
See annexes H.1 and H.2 for examples.
|
|
The back buffer is no longer set at commit time since 0556aa0c5918
("output: rejigger attach/clear for back buffer").
Instead, check whether the buffer belongs to the output swapchain.
This is more robust.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3496
|
|
See the spec at [1]. tl;dr EGL has terrible defaults: eglTerminate()
may have side-effects on completely unrelated EGLDisplay objects.
This extension allows us to opt-in to get the sane behavior:
eglTerminate() only free's our own EGLDisplay without affecting
others.
[1]: https://registry.khronos.org/EGL/extensions/KHR/EGL_KHR_display_reference.txt
|
|
Be consistent with other headers.
|
|
wlr_buffer.c is difficult to read because it contains a mixed bag
of unrelated things: base buffer type, buffer implementations,
buffer resource factory, and client buffer.
Split each of these into their own file.
|
|
|
|
Same as the previous commit.
|
|
dac040f87fee1cfdd7660aa1786b0734d95e03a4 mistakenly renamed
xdg_surface_destroy listener, which was listening to *unmap* events, to
xdg_surface_unmap. The actual fix, however, is to listen to destroy
events. This fixes various crashes.
|
|
We don't need to store the list of enabled extensions.
While at it, rename variables to be less confusing.
|
|
These are unused.
|
|
It returns a bool, not an int.
|
|
This was previously used by the X11 backend but is no longer required
since the previous commit.
|
|
Previously, adaptive sync was just a hint and wouldn't make any
atomic commit fail if the backend didn't support it. The main reason
is wlr_output_test wasn't supported at the time.
Now that we have a way for compositors to test whether a change can
work, let's remove the exception for adaptive sync and convert it to
a regular output state field.
|
|
|
|
|
|
|
|
This simplifies some of the growth logic, but uses array_realloc to shrink the
array if needed.
|
|
array_realloc will grow the array for the target size like wl_insert_add, but
will also shrink the array if the target size is sufficiently smaller than the
current allocation.
|
|
|
|
|
|
|
|
|
|
visibility
|
|
|
|
Also make the regular rendering logic use the introduced
render list.
|
|
|
|
This indicates whether the surface offset has changed.
|
|
This lets the renderer handle the wlr_buffer directly, just like it
does in texture_from_buffer. This also allows the renderer to batch
the rectangle updates, and update more than the damage region if
desirable (e.g. too many rects), so can be more efficient.
|