aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-24render/vulkan: check format support before creating YCbCr samplerSimon Ser
We need to check whether the format supports dma_tex_ycbcr_features before creating the YCbCr sampler.
2023-05-24render/vulkan: generalize YCbCr format supportSimon Ser
2023-05-24render/vulkan: add init_{default,ycbcr}_pipeline_layout()Simon Ser
2023-05-24render/vulkan: add vulkan_get_pipeline_layout()Simon Ser
Will make it easier to add more pipeline layouts for other YCbCr formats.
2023-05-24render/vulkan: introduce struct wlr_vk_pipeline_layoutSimon Ser
This will make it easier to create one pipeline layout (plus related objects) per YCbCr format.
2023-05-24render/vulkan: use same sampler params for RGBA and NV12Simon Ser
2023-05-24render/vulkan: use VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE for default samplerSimon Ser
We don't actually need the REPEAT mode, and this makes things more consistent with the YCbCr sampler (which requires CLAMP_TO_EDGE for spec compliance). Also drop borderColor which is unused for this mode.
2023-05-24render/vulkan: use identity swizzle for YCbCr formatsSimon Ser
Fixes the following validation error: [ VUID-VkImageViewCreateInfo-pNext-01970 ] Object 0: handle = 0x62e00003c400, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xf378e14b | vkCreateImageView(): If there is a VkSamplerYcbcrConversion, the imageView must be created with the identity swizzle.
2023-05-24render/vulkan: fix VkPipelineLayout when texturing NV12Simon Ser
The default pipeline layout was always passed. However, for NV12 we need to pass a different one.
2023-05-24render/vulkan: extract quad pipeline init to separate functionSimon Ser
Makes it clearer that all of these structs are for the quad pipeline.
2023-05-24util/box: transform empty boxes' originsKirill Primak
Not a huge fan of this, but changing this behavior would be a breaking change to a stable API. Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3650
2023-05-23render/vulkan: fix YCbCr format check in vulkan_texture_from_pixels()Simon Ser
2023-05-23util/box: always treat NULL boxes as emptyKirill Primak
2023-05-23util/box: simplify empty box case in wlr_box_intersection()Kirill Primak
2023-05-23wlr_{box, fbox}_equal: Consider empty boxes NULLAlexander Orzechowski
2023-05-23wlr_{box, fbox}_equal: Handle NULLAlexander Orzechowski
2023-05-22render/vulkan: drop unnecessary commentsSimon Ser
Some comments in here are noise.
2023-05-21render/pixel-format: add YVYU and VYUYSimon Ser
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.