aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-21render/pixel-format: add support for block-based formatsSimon Ser
Some formats like sub-sampled YCbCr use a block of bytes to store the color values for more than one pixel. Update our format table to be able to handle such formats.
2023-05-21render/pixel-format: add docsSimon Ser
2023-05-18linux-dmabuf-v1: fix wlr_drm_format_set leak in feedback_compile()Simon Ser
Fixes: 43b25fd34ebe ("dmabuf: Remove assumption that all mods are in fallback tranche")
2023-05-18dmabuf: Remove assumption that all mods are in fallback trancheAustin Shafer
According to the spec the compositor should send scanout modifiers in their respective device tranches, and all other texture modifiers in the main tranche. Currently wlroots expects all modifiers to be present in the last (i.e. "fallback") tranche, this removes that assumption in the feedback compilation stage so that scanout modifiers for secondary device can be advertised. "The full-screen feedback parameters have two tranches: one with the format/modifier pairs supported by the KMS plane, with the scanout flag set in the tranche_flags event and with tranche_target_device set to the KMS scan-out device; the other with the rest of the format/modifier pairs (supported for texturing, but not for scan-out), without the scanout flag set in the tranche_flags event, an"
2023-05-18output_pick_format: Fail if no format could be chosenAlexander Orzechowski
2023-05-18keyboard: use the new data in wlr_keyboard_set_keymap()Kirill Primak
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3647
2023-05-17keyboard: add support for resetting the keymapSimon Ser
2023-05-17keyboard: don't change current keymap on wlr_keyboard_set_keymap() errorSimon Ser
This function was unsetting the keymap on error. Instead, let's leave the current keymap untouched on error.
2023-05-17seat/keyboard: allow no keymapSimon Ser
2023-05-17drm_plane_pick_render_format: return false if no format could be foundAustin Shafer
Commit 90d08f8f1c40e2a302d62052435ff2abdb08a854 changed the way wlr_drm_format_intersect worked, including passing in a destination format list. This breaks scenarios where the intersection doesn't find any matching formats, since we still have a valid destination format set. This changes it to only return true if more than one matching format is present in the intersection list.
2023-05-15backend_destroy: Similiar logic like DRM backendTobias Predel
In the logic of the DRM backend in backend_destroy, wlr_backend_finish is called first, then the outputs are destroyed and then the display->destroy.link is removed from the list. This commit applies the same order to the headless backend.
2023-05-14wlr_drm_format_set_copy: Do not allocate heapTobias Predel
Address Sanitizer reported two memory leaks because of fmt not being freed in wlr_drm_format_set_copy. This commit fixes the memory leak by removing the allocation to the heap. The struct is allocated to the stack anyway.
2023-05-12render/vulkan: allow rendering to non-8-bit buffersManuel Stoeckl
This is implemented by a two-subpass rendering scheme; the first subpass draws (and blends) onto a linear R16G16B16A16_SFLOAT buffer, while the second subpass performs linear->srgb conversion, writing onto the actual output buffer.
2023-05-12render/vulkan: wait for idle queue before destroying render bufferSimon Ser
This fixes the following validation errors when shutting down Sway: 00:00:01.263 [wlr] [render/vulkan/vulkan.c:65] Validation Error: [ VUID-vkDestroyFramebuffer-framebuffer-00892 ] Object 0: handle = 0x62e00003c400, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xdb308312 | Cannot call vkDestroyFramebuffer on VkFramebuffer 0x2e2cd000000002b[] that is currently in use by a command buffer. The Vulkan spec states: All submitted commands that refer to framebuffer must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyFramebuffer-framebuffer-00892) (VUID-vkDestroyFramebuffer-framebuffer-00892) 00:00:01.264 [wlr] [render/vulkan/vulkan.c:65] Validation Error: [ VUID-vkDestroyImage-image-01000 ] Object 0: handle = 0x62e00003c400, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xf2d29b5a | Cannot call vkDestroyImage on VkImage 0x3fbcd60000000028[] that is currently in use by a command buffer. The Vulkan spec states: All submitted commands that refer to image, either directly or via a VkImageView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyImage-image-01000) (VUID-vkDestroyImage-image-01000)
2023-05-11wlr_drm_format_set_intersect: Clear destination before trying to write to itAlexander Orzechowski
2023-05-11wlr_drm_format_set: Store formats on arrayAlexander Orzechowski
2023-05-11wlr_drm_format: Rework wlr_drm_format_intersectAlexander Orzechowski
Now it takes a reference to a destination format
2023-05-11wlr_drm_format: Change wlr_drm_format_dup to copyAlexander Orzechowski
2023-05-11wlr_drm_format: Change wlr_drm_format_create to initAlexander Orzechowski
2023-05-11wlr_drm_format: Don't take double pointer in wlr_drm_format_addAlexander Orzechowski
2023-05-11wlr_drm_format: Make structure constant lengthAlexander Orzechowski
Don't store modifiers as part of the struct.
2023-05-11wlr_drm_format_set: Remove redundant text in comment for finish functionAlexander Orzechowski
This is implied by the fact that this function finishes the state instead of destroying it.
2023-05-11wlr_drm_format: Introduce drm_format_finishAlexander Orzechowski
2023-05-11render/vulkan: enable NV12 on big-endianSimon Ser
This format doesn't change its layout on big endian because it's not packed and has 8-bit channels.
2023-05-10wlr-export-dmabuf-v1: handle output destroySimon Ser
We were storing a wlr_output without listening for the destroy event. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3646
2023-05-09render/vulkan: improve logging when creating textureSimon Ser
Remove debug logs when a texture is created, since this happens pretty often. Use drmGetFormatName() and drmGetFormatModifierName() to log DRM formats and modifiers.
2023-05-08wlr_cursor: Don't multiply hotspot by scale^2Alexander Orzechowski
We are already multiplying in output_cursor_set_texture
2023-05-08backend/drm: fix di_info memory leakzhoulei
2023-05-06wlr_cursor: Consider surface state when setting new cursor surfaceAlexander Orzechowski
Found by inspection
2023-05-06render/vulkan: increase next descriptor pool sizeManuel Stoeckl
This ensures that the pool sizes grow exponentially, making the number of pools needed logarithmic in the number of descriptors, instead of linear. Since the first pool's size is 256, this change only has an effect when the compositor creates a large number of textures.
2023-05-06output: drop wlr_output_cursor_set_surfaceSimon Ser
2023-05-06cursor: add surface handlingSimon Ser
Only rely on wlr_output_cursor_set_texture(), because wlr_output_cursor_set_surface() will get dropped.
2023-05-06output: add output_cursor_set_texture()Simon Ser
2023-05-04render/vulkan: add support for NV12Simon Ser
2023-05-04drm_format_set_intersect: Require initialized dst and remove assertAlexander Orzechowski
The usages in linux_dmabuf zero out the dst before passing it so this change should be fine.
2023-05-04drm_format_set_union: Require initialized dst and remove assertAlexander Orzechowski
2023-05-04xwayland: allow compositor to set withdrawn statenovenary
2023-05-04xwayland: enable use of a xserver subprojectSimon Ser
Makes it easier to work on Xwayland and wlroots features in parallel. References: https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1048
2023-05-04render/vulkan: fix code style for function bracketsSimon Ser
2023-05-04wlr_compositor: Decide opacity from new has_buffer flag.Alexander Orzechowski
`wlr_surface_get_texture` will always return NULL if the compositor was not given a renderer.
2023-05-04wlr_compositer: Keep track if surface has committed a buffer before.Alexander Orzechowski
This would break if you are running with a NULL renderer.
2023-05-03drm_format_set: Mark as unstableAlexander Orzechowski
This is supposed to be an unstable interface and it was a mistake that this header was not included.
2023-05-03linux_dmabuf_v1: Use wlr_drm_format_set_unionAlexander Orzechowski
2023-05-03Add union function for format setsAustin Shafer
2023-05-03output/cursor: fix buffer size when nested and scaledSimon Ser
The Wayland, X11 and headless backends don't really care about the cursor size. We were picking a size identical to the texture size in that case. This is incorrect for LoDPI cursor textures on HiDPI outputs: in that case, we need to scale up the cursor texture. Fixes the cursor being chopped off under the Wayland backend with scale > 1.
2023-05-02render: introduce blend modeSimon Ser
Allow callers to pick the blend mode when rendering a rect. The "none" mode can be used to disable blending and clear rects.
2023-05-02render/pixman: fix scaling in render_pass_add_texture()Simon Ser
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3642 Fixes: 6830bfc17fd9 ("render/pixman: implement render pass API")
2023-05-02tinywl: Release everything before destroyAlexander Orzechowski
This makes -Db_sanatize=address happy.
2023-04-28render/vulkan: use VK_KHR_synchronization2Simon Ser
This simplifies the vkQueueSubmit call, removing the need to pass timeline semaphore point values as separate arrays.
2023-04-25render/pixman: implement render pass APISimon Ser