aboutsummaryrefslogtreecommitdiff
path: root/include/wlr
AgeCommit message (Collapse)Author
2021-12-02render/egl: improve modifier support detectionSimon Ser
Support for EXT_image_dma_buf_import_modifiers doesn't necessarily indicate support for modifiers. For instance, Mesa will advertise EXT_image_dma_buf_import_modifiers for all drivers. This is a trick to allow EGL clients to enumerate supported formats (something EXT_image_dma_buf_import is missing). For more information, see [1]. Add a new wlr_egl.has_modifiers flag which indicates whether modifiers are supported. It's set to true if any eglQueryDmaBufModifiersEXT query returned a non-empty list. Use that flag to figure out whether the buffer modifier should be passed to the EGL implementation on import. [1]: https://github.com/KhronosGroup/EGL-Registry/issues/142
2021-12-01render/egl: add wlr_egl_create_with_contextSimon Ser
This allows creating a wlr_egl from an already-existing EGL display and context. This is useful to allow compositors to choose the exact EGL initialization parameters.
2021-12-01render/egl: store IMG_context_priority in wlr_eglSimon Ser
The next commit will split extension lookup and context initialization.
2021-11-30scene: add wlr_scene_get_scene_outputSimon Ser
This allows getting a wlr_scene_output from a wlr_output. Since an output can only be added once to a scene-graph there's no ambiguity. This is useful for compositors using wlr_scene_attach_output_layout: the output layout integration automatically creates a scene-graph output for each wlr_output added to the layout.
2021-11-30output: add wlr_output_get_primary_formatsSimon Ser
This allows compositors to get primary formats without manually calling wlr_output_impl.get_primary_formats. For example, the Sway patch for linux-dmabuf feedback [1] needs this. [1]: https://github.com/swaywm/sway/pull/6313
2021-11-30output: fix typo in wlr_output_impl.get_primary_formats docsSimon Ser
The buffer capabilities indicate whether the formats returned are for DMA-BUFs or shared memory buffers.
2021-11-26render: add DMA-BUF docsSimon Ser
Document some of the assumptions for DMA-BUF buffer sharing and modifiers.
2021-11-25scene: add wlr_scene_xdg_surface_createSimon Ser
This allows compositors to easily add an xdg_surface to the scene-graph while retaining the ability to unconstraint popups and decide their final position. Compositors can handle new popups with the wlr_xdg_shell.new_surface event, get the parent scene-graph node via wlr_xdg_popup.parent.data, create a new scene-graph node via wlr_scene_xdg_surface_tree_create, and unconstraint the popup if they want to.
2021-11-25backend: remove noop backendSimon Zeni
2021-11-25backend/headless: drop wlr_headless_backend_create_with_rendererSimon Ser
The headless backend no longer needs a parent renderer: it no longer needs to return it in wlr_backend_impl.get_renderer, nor does it need to return its DRM FD in wlr_backend_impl.get_drm_fd. Drop this function altogether since it now behaves exactly like wlr_headless_backend_create.
2021-11-23input-device: remove wlr_input_device.linkSimon Ser
This field's ownership is unclear: it's in wlr_input_device, but it's not managed by the common code, it's up to each individual backend to use it and clean it up. Since this is a backend implementation detail, move it to the backend-specific structs.
2021-11-22linux-dmabuf-v1: hide wlr_linux_buffer_params_v1Simon Ser
The parameters are used when the client is in the process of building a buffer. There's no reason why this internal implementation detail should be exposed in our public header.
2021-11-19drm-lease-v1: listen to lease destroy eventSimon Ser
2021-11-19backend/drm: introduce wlr_drm_leaseSimon Ser
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3183
2021-11-19Introduce WLR_DEVICE_LEASE eventsSimon Ser
This will allow the DRM backend to reload its lessee list.
2021-11-19output: Add function to set preferred render formatManuel Stoeckl
This change introduces new double buffered state to the wlr_output, corresponding to the buffer format to render to. The format being rendered to does not control the bit depth of colors being sent to the display; it does generally determine the format with which screenshot data is provided. The DRM backend _may_ sent higher bit depths if the render format depth is increased, but hardware and other limitations may apply.
2021-11-18backend: remove wlr_backend_get_rendererSimon Zeni
2021-11-18backend: remove backend_get_allocatorSimon Zeni
2021-11-18output: add wlr_output_init_renderSimon Ser
Co-authored-by: Simon Zeni <simon@bl4ckb0ne.ca>
2021-11-17Improve wlr_drm_format documentationDemi Marie Obenour
A wlroots user can easily get confused and think that `cap` refers to wlroots buffer capabilities, not array capacity.
2021-11-17Remove support for DMA-BUF flagsSimon Ser
They are never used in practice, which makes all of our flag handling effectively dead code. Also, APIs such as KMS don't provide a good way to deal with the flags. Let's just fail the DMA-BUF import when clients provide flags.
2021-11-09render/allocator: make wlr_allocator part of the public APISimon Zeni
2021-11-08text-input: fix type of send_preedit_string() argsIsaac Freund
The protocol uses a signed integer here, which is also what the wlr_input_method_v2_preedit_string struct provides to compositors from the input method protocol. Sway currently just passes those int32_t values directly to this function leading to an implicit conversion.
2021-11-08output: drop wlr_output_export_dmabufSimon Ser
Callers can access output->front_buffer instead.
2021-11-02backend/session: introduce wlr_device_change_eventSimon Ser
This struct contains additional information for session device change events, such as the DRM connector ID that has changed.
2021-11-02xwayland: add support for -noTouchPointerEmulationSimon Ser
This allows compositors to handle touch pointer emulation manually, instead of having Xwayland do it [1]. [1]: https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/691
2021-10-31xdg-activation-v1: add data field and emit token destroy eventsRonan Pigott
The data field is useful to track metadata about a token. The destroy events are useful for compositors that track application startup to let them know they can stop doing that.
2021-10-31xdg-activation-v1: enable compositors to request their own tokensRonan Pigott
These new functions allow a compositor to request new managed tokens without participating in the xdg-activation procedure as a wayland client. This enables the compositor itself to behave as a launcher application.
2021-10-23scene: add support for direct scan-outSimon Ser
Check if only a single node intersects with the output viewport and all of its properties match. In this case, attempt direct scan-out.
2021-10-22scene: add wlr_scene_output_for_each_surfaceSimon Ser
This allows compositors to more easily implement sending wl_surface.frame callback done events.
2021-10-22presentation-time: remove unused fieldSimon Ser
2021-10-22presentation-time: use a surface addonKirill Primak
2021-10-18render/vulkan: add Vulkan renderernyorain
This new renderer is implemented with the existing wlr_renderer API (which is known to be sub-optimal for some operations). It's not used by default, but users can opt-in by setting WLR_RENDERER=vulkan. The renderer depends on VK_EXT_image_drm_format_modifier and VK_EXT_physical_device_drm. Co-authored-by: Simon Ser <contact@emersion.fr> Co-authored-by: Jan Beich <jbeich@FreeBSD.org>
2021-10-15output: add presented flag to presentation eventKirill Primak
2021-10-14scene: add functions to place node on top/bottomIsaac Freund
These are very common operations for compositors (including tinywl) to perform.
2021-10-14scene: assert that node != sibling in place above/belowIsaac Freund
Currently these functions remove the node from the scene if the sibling argument is the same node as the node. To prevent confusion when misusing this API, assert that the nodes are distinct and document this.
2021-10-07xdg-decoration: refactor configure/state flowKirill Primak
The same logic/motivation as xdg-toplevel.
2021-10-02surface_at: check if surfaces are mappedtiosgz
2021-10-02for_each_surface: only iterate mapped surfacestiosgz
These functions are used mostly for rendering, where including unmapped surfaces is undesired. This is a breaking change. However, few to no usages will have to be updated.
2021-10-02Fix spelling errorsElyes HAOUAS
Signed-off-by: Elyes HAOUAS <ehaouas@noos.fr>
2021-09-30xdg-shell: rename wlr_xdg_surface.next_configure_serialSimon Ser
Rename it to scheduled_serial for consistency with the rest of wlroots.
2021-09-30xdg-shell: introduce wlr_xdg_surface.currentSimon Ser
This holds the current state, and avoids having ad-hoc fields in wlr_xdg_surface.
2021-09-30xdg-surface: add pending stateKirill Primak
struct wlr_xdg_surface_state is introduced to hold the geometry and configure serial to be applied on next wl_surface.commit. This commit fixes our handling for ack_configure: instead of making the request mutate our current state, it mutates the pending state only. Co-authored-by: Simon Ser <contact@emersion.fr>
2021-09-27wlr_pointer_gestures: hold gestures (protocol v3)José Expósito
Update the pointer gestures protocol to version 3 allowing to send hold gestures to clients.
2021-09-27cursor: emit hold gesture eventsJosé Expósito
Recevie the hold gesture events from the libinput or Wayland backends, abstracted as pointer signals, and re-emit them from the cursor interface.
2021-09-27pointer: add hold pointer event definitionJosé Expósito
As touchpad touches are generally fully abstracted, a client cannot currently know when a user is interacting with the touchpad without moving. This is solved by hold gestures. Hold gestures are notifications about one or more fingers being held down on the touchpad without significant movement. Hold gestures are primarily designed for two interactions: - Hold to interact: where a hold gesture is active for some time a menu could pop up, some object could be selected, etc. - Hold to cancel: where e.g. kinetic scrolling is currently active, the start of a hold gesture can be used to stop the scroll. Unlike swipe and pinch, hold gestures, by definition, do not have movement, so there is no need for an "update" stage in the gesture. Create two structs, wlr_event_pointer_hold_begin and wlr_event_pointer_hold_end, to represent hold gesture events and the signals to emit them: wlr_pointer->pointer.hold_begin/hold_end.
2021-09-24layer-shell: add `committed` bitmaskKirill Primak
2021-09-23layer-shell: refactor configure/state flowKirill Primak
Same logic as xdg-toplevel.
2021-09-22scene: add wlr_scene_buffer_set_transformSimon Ser
2021-09-22scene: add wlr_scene_buffer_set_dest_sizeSimon Ser