Commit graph

6954 commits

Author SHA1 Message Date
Simon Ser
30219cf76b render/dmabuf: add dmabuf_export_sync_file() 2022-12-06 14:54:09 +00:00
Kirill Primak
825f1b2dc6 tinywl: handle wlr_output.events.request_state 2022-12-06 09:05:32 +00:00
Ronan Pigott
f8e70af318 wlr_xdg_activation_v1: add new_token event 2022-12-06 05:45:37 +00:00
Kirill Primak
097ea84cda output-layout: improve API
- wlr_output_layout_add{,_auto}() now return a bool indicating whether
  the function has succeeded.
- wlr_output_layout_move() is removed.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1083
2022-12-05 18:21:04 +00:00
Kirill Primak
27ea18cc33 output-layout: remove wlr_output_layout_output_state
wlroots uses "// private state" comments to denote structure fields
which shouldn't be accessed by compositors, so let's drop
wlr_output_layout_output_state and inline its fields into
wlr_output_layout_output; this also simplifies layout output creation.
2022-12-05 18:21:04 +00:00
Kirill Primak
604df8b327 output-layout: fix function decl indentation 2022-12-05 18:21:04 +00:00
Simon Ser
532f3d3c20 xwayland/xwm: replace role with addon
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3545
2022-12-05 18:48:15 +01:00
Simon Ser
512deebd82 compositor: add wlr_surface.events.precommit 2022-12-05 10:51:46 +01:00
Kenny Levinsen
bb0fd29252 addon: Allow NULL owner of addon
An owner is not always required or practical. Rather than have the user
set a bogus owner in these cases, allow the user to set a NULL owner.
2022-12-05 10:51:46 +01:00
Simon Ser
d962918128 xwayland/xwm: rename xwm_map_shell_surface()
Rename xwm_map_shell_surface() to xwayland_surface_associate().
This function doesn't actually "map" the surface in Wayland
parlance, the wl_surface may not have a buffer attached yet.
2022-12-05 10:51:46 +01:00
Simon Ser
c4727240af compositor: document wlr_surface_{enter,leave,send_frame_done} 2022-12-03 16:52:32 +00:00
Alexander Orzechowski
ec846adb54 wlr_drm: Add missing wlr_buffer import 2022-12-03 07:57:40 -05:00
Simon Ser
a37a22e344 render/vulkan: use initializers for VkSubmitInfo 2022-12-03 09:53:32 +01:00
Simon Ser
666c45bb29 render/vulkan: remove stage_cb conditional
We always have a stage_cb at this point.
2022-12-03 09:39:12 +01:00
Simon Ser
dd5be430b4 render/vulkan: remove pre_cb in vulkan_end()
pre_cb was an alias for stage_cb->vk. Let's just use a single
variable instead.

Additionally, early return when vulkan_record_stage_cb() fails.
We were crashing in vkCmdPipelineBarrier() if that happened.
2022-12-03 09:36:18 +01:00
Simon Ser
27e057319a render/vulkan: fix vkCmdClearAttachments validation error
Skip clears with an empty scissor.

Fixes the following validation error:

    00:00:09.734 [wlr] [render/vulkan/vulkan.c:61] Validation Error: [ VUID-vkCmdClearAttachments-rect-02682 ] Object 0: handle = 0x62600001b100, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0xadbd476f | CmdClearAttachments(): pRects[0].rect.extent.width is zero. The Vulkan spec states: The rect member of each element of pRects must have an extent.width greater than 0 (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkCmdClearAttachments-rect-02682) (VUID-vkCmdClearAttachments-rect-02682)
2022-12-03 09:30:30 +01:00
Simon Ser
d6ff20268b render/vulkan: fix comma 2022-12-02 23:26:34 +01:00
Simon Ser
56326c7998 render/vulkan: use initializers for VkImageMemoryBarrier 2022-12-02 23:26:01 +01:00
Simon Ser
79aea58834 render/vulkan: fix missing pSignalSemaphores for stage CB
We were filling VkTimelineSemaphoreSubmitInfoKHR.pSignalSemaphoreValues,
but we were missing VkSubmitInfo.pSignalSemaphores.

This was causing VkTimelineSemaphoreSubmitInfoKHR.pSignalSemaphoreValues
to be ignored. By chance, the render command buffer was using the
next timeline point, so we were waiting for that instead.
2022-12-02 19:28:13 +00:00
Simon Ser
47a038c90e render/vulkan: move VkDescriptorSetAllocateInfo down
Move it down, right before it's used.
2022-12-02 18:28:55 +00:00
Simon Zeni
4b3bbb0c4f render/drm_format_set: fill dst in wlr_drm_format_set_copy 2022-12-02 11:47:47 -05:00
Simon Ser
337ef33edc render/vulkan: make shm/dmabuf split clearer in wlr_vk_format_props
struct wlr_vk_format_props contains a mix of properties for shm
and dmabuf, and it's not immediately clear which fields are for
which kind of buffer. Use a nested struct to group the fields.
2022-12-02 15:18:59 +00:00
Simon Ser
db9d277614 render/vulkan: make vulkan_format_props_find_modifier() return value const 2022-12-02 15:18:59 +00:00
Simon Ser
b4ad4671dc render/vulkan: check for barrier array alloc failure 2022-12-02 15:14:27 +00:00
Simon Ser
bc7f8de842 render/vulkan: improve message on format prop error
Use a more appropriate message on
vkGetPhysicalDeviceImageFormatProperties2() error.
2022-12-02 16:10:42 +01:00
Simon Ser
338a9616bd render/vulkan: simplify vulkan_format_props_query() 2022-12-02 16:10:41 +01:00
Simon Ser
a3874cac6c render/vulkan: extract DMA-BUF format query to separate function 2022-12-02 16:09:58 +01:00
Simon Ser
d92f92f2d3 wl-drm: only advertise formats supporting implicit modifiers
With the Vulkan renderer we don't support implicit modifiers.
However wl_drm only supports implicit modifiers.

Stop advertising wl_drm formats when implicit modifiers are
unsupported.
2022-12-02 14:27:07 +00:00
Simon Ser
f36a5915da wl-drm: don't store wlr_renderer
Query the formats at init time, then forget about the renderer.
This will allow wl_drm to be created with a list of formats instead
of a renderer, and will behave better after a GPU reset.
2022-12-02 14:27:07 +00:00
Simon Ser
c9b378d21a render/drm-format-set: add wlr_drm_format_set_copy() 2022-12-02 14:27:07 +00:00
Simon Ser
21c4516838 render/vulkan: add 64-bit UNORM and SFLOAT formats 2022-12-02 10:36:36 +01:00
Simon Ser
9f938f7f2a render/vulkan: add more packed formats 2022-12-02 10:35:45 +01:00
Simon Ser
171c9081d1 render/vulkan: add more 8 bits per channel formats 2022-12-02 10:28:52 +01:00
Simon Ser
e31c741d2a render/pixel-format: drop unnecessary fields in the table
DRM_FORMAT_INVALID is zero. Let's just omit the fields to make the
table more readable.
2022-12-02 10:28:52 +01:00
Simon Ser
e97ce5f459 render/pixel-format: add various new formats 2022-12-02 10:24:00 +01:00
Simon Ser
ad165f7daf render/vulkan: explain format mapping with DRM 2022-12-02 10:24:00 +01:00
Simon Ser
8b9a48c984 render/vulkan: drop "_format" in wlr_vk_format fields
"format" is already in the name, no need to repeat ourselves.
`format->vk_format` sounds a bit redundant.
2022-12-02 10:24:00 +01:00
Simon Ser
c8eb24d30e output: drop enable/mode events
The backend no longer changes the output state behind the
compositor's back. Instead, compositors can listen to the "commit"
event and check for WLR_OUTPUT_STATE_ENABLED/WLR_OUTPUT_STATE_MODE.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/2300
2022-12-01 20:05:04 +00:00
Simon Ser
4287f70dc3 output-layout: stop listening for output mode events
These will go away.
2022-12-01 20:05:04 +00:00
Simon Ser
19dfe99496 output-damage: stop listening for output mode events
These will go away.
2022-12-01 20:05:04 +00:00
Simon Ser
fecbaa2bd6 scene: stop listening for output enable/mode events
These will go away.
2022-12-01 20:05:04 +00:00
Alexander Orzechowski
fe891ebd4e output_init_render: Allow re-initialization
This lets the compositor call this function after the fact to replace
the renderer/allocator after a renderer context lost.
2022-12-01 10:01:35 +00:00
Alexander Orzechowski
db0e962368 wlr_texture: Expose owning renderer 2022-12-01 04:41:43 -05:00
Simon Ser
f103dc74d8 linux-dmabuf-v1: introduce wlr_linux_dmabuf_v1_create()
Some compositors may want to use the linux-dmabuf-v1 implementation
with a completely custom renderer. Add a function to create the
global with a default feedback.
2022-11-30 14:19:46 +01:00
Simon Ser
9c04fd2496 linux-dmabuf-v1: drop wlr_renderer field
This isn't used anymore.
2022-11-30 14:19:46 +01:00
Simon Ser
88493d1f7c linux-dmabuf-v1: don't use wlr_renderer to send legacy format list
The wlr_renderer field will go away in a subsequent commit.

Build the legacy device list from the default feedback instead.
2022-11-30 14:19:46 +01:00
Simon Ser
d45cffb865 linux-dmabuf-v1: don't use wlr_renderer to sanity check DMA-BUFs
The wlr_renderer field will go away in a subsequent commit.

Instead of trying to create a texture, try to import the DMA-BUF
into the DRM device FD.
2022-11-30 14:14:07 +01:00
Simon Ser
c99c60090c linux-dmabuf-v1: add version arg to create()
To be able to add support for newer versions without breaking
changes.
2022-11-30 14:14:04 +01:00
Simon Ser
444d94ef89 linux-dmabuf-v1: add "_with_renderer" suffix to create() function
Make it clear this is a helper consuming a wlr_renderer. We'll
add a lower-level create() function which doesn't take it in the
next commit.
2022-11-30 14:14:02 +01:00
Simon Zeni
0611c10909 types/wlr_seat: finish keyboard_state during wlr_seat_destroy 2022-11-29 15:21:18 -05:00