aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-10-29backend/drm: get rid of BO handle tableSimon Ser
The BO handle table exists to avoid double-closing a BO handle, which aren't reference-counted by the kernel. But if we can guarantee that there is only ever a single ref for each BO handle, then we don't need the BO handle table anymore. This is possible if we create the handle right before the ADDFB2 IOCTL, and close the handle right after. The handles are very short-lived and we don't need to track their lifetime. Because of multi-planar FBs, we need to be a bit careful: some FB planes might share the same handle. But with a small check, it's easy to avoid double-closing the same handle (which wouldn't be a big deal anyways). There's one gotcha though: drmModeSetCursor2 takes a BO handle as input. Saving the handles until drmModeSetCursor2 time would require us to track BO handle lifetimes, so we wouldn't be able to get rid of the BO handle table. As a workaround, use drmModeGetFB to turn the FB ID back to a BO handle, call drmModeSetCursor2 and then immediately close the BO handle. The overhead should be minimal since these IOCTLs are pretty cheap. Closes: https://github.com/swaywm/wlroots/issues/3164
2021-10-29sceeencopy-v1: listen to output destroy in capture_outputSimon Ser
If the output is destroyed after capture_output but before frame_handle_copy, it'll have a dangling output pointer. Add the output destroy listener in capture_output. Closes: https://github.com/swaywm/wlroots/issues/3284
2021-10-27scene: inline subsurface_tree_destroySimon Ser
This is only called from one function. To destroy the wlr_scene_subsurface_tree from elsewhere, callers can destroy the scene-graph node returned by wlr_scene_subsurface_tree_create instead (just like a compositor would do). subsurface_tree_handle_surface_destroy does exactly this. Inlining avoids calling subsurface_tree_destroy by mistake.
2021-10-27backend/drm/legacy.c: Fix memory leak in drm_legacy_crtc_set_gammaHaelwenn (lanodan) Monnier
Found via scan-build
2021-10-27render/egl.c: Fix memory leaks in egl_createHaelwenn (lanodan) Monnier
calloc is moved to right before egl is called to avoid requiring to free() unused memory. Found via scan-build
2021-10-27render/pixman/renderer.c: Fix memory-leak in create_bufferHaelwenn (lanodan) Monnier
Found via scan-build
2021-10-27backend.c: do not try to explicitly clean up the libinput backendMarkusVolk
Since libinput is an optional dependency the libinput backend is possibly undeclared. wlr_backend_destroy(backend) below will clean up the child libinput backend if any.
2021-10-27backend/x11: fix code style in get_touchpoint_from_x11_touch_idSimon Ser
2021-10-26backend/drm: add entry for Valve EDID vendorSimon Ser
As found in e.g. the Steam Deck.
2021-10-26readme: refresh dependenciesSimon Ser
2021-10-26output: refuse to enable with zero modeSimon Ser
This can happen if the compositor enables an output without picking a mode, or performs a modeset with a zero width/height.
2021-10-25xdg-foreign-v2: use error enumSimon Ser
A wayland-protocols patch [1] has added error codes for invalid surfaces. [1]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/57 Closes: https://github.com/swaywm/wlroots/issues/2600
2021-10-23output: split into multiple filesSimon Ser
This organizes the wlr_output implementation into separate files. This avoids having a single mega-file with lots of unrelated parts and makes it more obvious what the interactions between all the parts are. No functional changes, just moving code around.
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-22backend/multi: implement get_buffer_capsSimon Zeni
2021-10-22presentation-time: remove unused fieldSimon Ser
2021-10-22presentation-time: use a surface addonKirill Primak
2021-10-21Update loc count in readmebuffet
2021-10-19render/vulkan: check vulkan-headers dependencySimon Ser
There's no pkg-config file we can check for sadly, so check vulkan/vulkan.h as a fallback. Closes: https://github.com/swaywm/wlroots/issues/3272
2021-10-18scene: remove surface commit listener when node is destroyedSimon Ser
2021-10-18render/vulkan: Use image view swizzles instead of shader hackJoshua Ashton
Signed-off-by: Joshua Ashton <joshua@froggi.es>
2021-10-18Add error handling to backend creationAnthony Super
This commit adds two error-handling cases to the function attempt_dmr_backend. Specifically: - In the case where the number of found GPUs is zero, we now print a log message indicating this and return a NULL pointer - In the case where we could not successfully create a backend on any GPU, we now log a message indicating this and return a NULL pointer This allows us to provide more descriptive error messages, as well as avoid a SEGFAULT (the function `ensure_primary_backend_renderer_and_allocator` dereferences the pointer given, which could be NULL until this patch) when these cases arise.
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-15presentation-time: don't send presented on discardKirill Primak
2021-10-15output: add presented flag to presentation eventKirill Primak
2021-10-15output: disallow NULL event for wlr_output_send_present()Kirill Primak
2021-10-14render/allocator: use empty DRM lease to re-open nodeSimon Ser
This allows us to obtain a new DRM file description without relying on filesystem permissions.
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-07examples/foreign-toplevel: fix toplevel not being freedfwsmit
2021-10-07xdg-decoration: refactor configure/state flowKirill Primak
The same logic/motivation as xdg-toplevel.
2021-10-06layer-shell: move NULL buffer check to role precommit handlerKirill Primak
This will allow compositor to access the current buffer before unmapping.
2021-10-06xdg-shell: remove redundant NULL buffer checkKirill Primak
This is already checked in role precommit handler, and if the buffer is NULL due to failed upload, that means the surface was already unmapped.
2021-10-05backend: drop unconditional and unused <libinput.h>Jan Beich
After 70fb21c35ba4 made libinput optional the include prevents building without libinput package installed. backend/backend.c:4:10: fatal error: 'libinput.h' file not found #include <libinput.h> ^~~~~~~~~~~~
2021-10-04render/allocator: use render node if available in reopen_drm_nodeSimon Ser
If we aren't trying to create a dumb buffer allocator, and if the DRM device has a render node (ie, not a split render/display SoC), then we can use the render node instead of the primary node. This should allow wlroots to run under seatd when the current user doesn't have the permission to open primary nodes (logind has a quirk to allow physically logged in users to open primary nodes).
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-10-01Revert "render/drm_format_set: add wlr_drm_format_has"Simon Ser
This reverts commit 833437d5921339f2862ccfb0493617630ea3937d.
2021-10-01Revert "Require INVALID for implicit format modifiers"Simon Ser
This reverts commit ea7357b70366588069c83f158e6a4eb2d3a702b3.
2021-10-01Revert "backend/drm: fail on explicit modifier in drmModeAddFB2"Simon Ser
This reverts commit d6be1d68b7d0542efa4dc2d19d57531484fe330a.
2021-10-01Revert "render/egl: always add LINEAR to supported modifiers"Simon Ser
This reverts commit 780052d4da0c93f9210dd87d2100b116af7ff308.
2021-10-01Revert "render/drm_format_set: remove special LINEAR case"Simon Ser
This reverts commit 6d281d96cb93b8de972039d5cb00bfce49d9a58c.
2021-10-01render/drm_format_set: remove special LINEAR caseSimon Ser
This was used to make the intersection of INVALID and LINEAR result in LINEAR. We can now just require LINEAR to be in both lists.
2021-10-01render/egl: always add LINEAR to supported modifiersSimon Ser
2021-10-01backend/drm: fail on explicit modifier in drmModeAddFB2Simon Ser
drmModeAddFB2 doesn't support explicit modifiers. Only accept INVALID which indicates an implicit modifier and LINEAR which may indicate that GBM_BO_USE_LINEAR has been used.
2021-10-01Require INVALID for implicit format modifiersSimon Ser
See [1] for the motivation. [1]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/75
2021-10-01render/drm_format_set: add wlr_drm_format_hasSimon Ser
2021-09-30xdg-shell: stop clearing wlr_xdg_surface state on unmapSimon Ser
The protocol doesn't say we should, so let's not. Also it's pointless to reset scheduled_serial, since 0 is a valid serial.