Age | Commit message (Collapse) | Author |
|
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.
|
|
|
|
Fixes: 43b25fd34ebe ("dmabuf: Remove assumption that all mods are in fallback tranche")
|
|
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"
|
|
|
|
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3647
|
|
|
|
This function was unsetting the keymap on error. Instead, let's
leave the current keymap untouched on error.
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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)
|
|
|
|
|
|
Now it takes a reference to a destination format
|
|
|
|
|
|
|
|
Don't store modifiers as part of the struct.
|
|
This is implied by the fact that this function finishes the state instead
of destroying it.
|
|
|
|
This format doesn't change its layout on big endian because it's
not packed and has 8-bit channels.
|
|
We were storing a wlr_output without listening for the destroy
event.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3646
|
|
Remove debug logs when a texture is created, since this happens
pretty often. Use drmGetFormatName() and drmGetFormatModifierName()
to log DRM formats and modifiers.
|
|
We are already multiplying in output_cursor_set_texture
|
|
|
|
Found by inspection
|
|
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.
|
|
|
|
Only rely on wlr_output_cursor_set_texture(), because
wlr_output_cursor_set_surface() will get dropped.
|
|
|
|
|
|
The usages in linux_dmabuf zero out the dst before passing it so this
change should be fine.
|
|
|
|
|
|
Makes it easier to work on Xwayland and wlroots features in
parallel.
References: https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1048
|
|
|
|
`wlr_surface_get_texture` will always return NULL if the compositor was
not given a renderer.
|
|
This would break if you are running with a NULL renderer.
|
|
This is supposed to be an unstable interface and it was a mistake that
this header was not included.
|
|
|
|
|
|
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.
|
|
Allow callers to pick the blend mode when rendering a rect. The
"none" mode can be used to disable blending and clear rects.
|
|
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3642
Fixes: 6830bfc17fd9 ("render/pixman: implement render pass API")
|
|
This makes -Db_sanatize=address happy.
|
|
This simplifies the vkQueueSubmit call, removing the need to pass
timeline semaphore point values as separate arrays.
|
|
|