aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-30wlr_scene: Make scene_tree_from_node publicAlexander Orzechowski
This is to allow for compositors that want to be more implicit about how their scene is organized. Such a compositor may want to walk up at a certain scene node to find something such as a surface to focus on.
2023-05-30wlr_scene: Add documentation to wlr_scene_buffer_from_nodeAlexander Orzechowski
2023-05-30render/vulkan: implement render pass APISimon Ser
2023-05-28renderer/gles2: Implement render pass interfaceAlexander Orzechowski
2023-05-28renderer/gles2: Compute texture coordinates based off of vertex positionsAlexander Orzechowski
2023-05-28renderer/gles2: Merge get_buffer and create_bufferAlexander Orzechowski
2023-05-28renderer/gles2: Interpret matrix as column major in shaderAlexander Orzechowski
Avoids us needing to transpose.
2023-05-28render/vulkan: add 10, 12, and 16-bit YCbCr formatsSimon Ser
2023-05-26output: use pending render format if anySimon Ser
If a modeset contains a render format change, use that instead of the current one stored in wlr_output.render_format. This fixes render_bit_depth configuration not being applied without a second modeset in Sway.
2023-05-26render/vulkan: document TEXTURE_TRANSFORM_* in shaderSimon Ser
2023-05-26render/vulkan: drop unused vulkan_has_extension()Simon Ser
2023-05-26render/vulkan: drop unused vulkan_change_layout_queue()Simon Ser
2023-05-24render/egl: check for EGL_EXT_device_query in get_egl_device_from_drm_fd()Simon Ser
We use eglQueryDeviceStringEXT() later on, which is optional and requires support for the EGL_EXT_device_query extension.
2023-05-24render/vulkan: de-dup pipeline layout initializationSimon Ser
2023-05-24render/vulkan: add more YCbCr formatsSimon Ser
The Vulkan spec states: > For the purposes of range expansion and Y′CBCR model conversion, > the R and B components contain color difference (chroma) values > and the G component contains luma. The equations below that sentence also help understand the mapping.
2023-05-24render/vulkan: require support for linear filter for YCbCrSimon Ser
YCBCR_CONVERSION_LINEAR_FILTER is not enough: this one only covers chromaFilter. For magFilter/minFilter we need FILTER_LINEAR as well.
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