Commit graph

6788 commits

Author SHA1 Message Date
Simon Ser
7ef62cc995 cursor: fix initial cursor position for new outputs
The fresh new wlr_output_cursor is positioned at (0, 0).

Call wlr_output_cursor_move() after creating the wlr_output_cursor
to fix this.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3777
2023-12-12 19:39:33 +00:00
Simon Ser
d8c0707e27 backend/drm: return secondary backend DRM FD
It can be useful for compositors to get the real DRM FD instead of
the one from the parent compositor. For instance, some compositors
might want to perform some DRM IOCTLs there to check the driver
name, fetch some DRM resources, etc. This will also be a requirement
for direct scanout on secondary GPUs.
2023-12-12 14:42:52 +00:00
Simon Ser
3475b1880f linux-dmabuf-v1: ignore scanout output for secondary DRM backends
We don't support direct scanout on such backends yet.
2023-12-12 14:42:52 +00:00
Simon Ser
fc7a0b93dd backend/drm: add wlr_drm_backend_get_parent()
Allows compositors to figure out whether a DRM backend is
secondary on a multi-GPU setup.
2023-12-12 14:42:52 +00:00
Roman Gilg
3531007b75 render/pixman: add wlr_pixman_renderer_get_buffer_image()
This is similar to wlr_pixman_texture_get_image and can be useful for
compositors to access the rendering data.
2023-12-11 19:47:55 +01:00
Simon Ser
7ad3f4ad2d ci: drop stale dependencies
ffmpeg, epoll-shim, libpng were dependencies for client examples.
These have been split into a separate repository so we no longer
need to install them.
2023-12-10 14:29:23 +01:00
Simon Ser
fe6f380f26 build: automatically compute soversion
Instead of requiring a manual soversion bump each time we do a
release, automatically compute it from the version number.

In the early days we used to not bump soversion, so there is an
hardcoded offset.

This will need to be updated once we ship 1.0, so assert that we're
still on 0.x.
2023-12-08 12:00:33 +01:00
Kirill Primak
425f5c07fb tinywl: check initialized instead of initial_commit
oops
2023-12-07 17:59:07 +03:00
Kirill Primak
1cc7ab3e29 tinywl: don't send configures to uninitialized xdg_surfaces 2023-12-07 12:43:39 +03:00
Simon Ser
1f64f3925c render/gles2: add wlr_gles2_renderer_get_buffer_fbo()
Replacement for wlr_gles2_renderer_get_current_fbo(). Wayfire uses
it for instance.
2023-12-05 18:57:43 +01:00
Simon Ser
6a2ff0dffe compositor: drop surface precommit event
This is unused.
2023-12-04 19:32:44 +01:00
Simon Ser
78836298ef cursor: send surface scale events
wlr_cursor is responsible for sending enter/leave events, but
doesn't send fractional-scale-v1 and wl_surface.preferred_buffer_scale
events. This is not an easy thing to do from a compositor, so let's
just do it in wlr_cursor itself.
2023-12-04 15:39:04 +00:00
Simon Ser
4ed8df9ab2 render: disable linux-dmabuf without DRM FD
linux-dmabuf used to not need a DRM FD, however since v4 a DRM FD
is required for the main_device event.
2023-12-04 15:28:18 +00:00
Manuel Stoeckl
d6859da3b4 render/vulkan: use _SRGB image view when possible
This is the last of a set of commits which ensures that both textures
and render buffers can be accessed through _UNORM and _SRGB image
views. While _UNORM image views are not yet used for 8-bpc image
formats, they will be needed in the future to support color transforms
for both textures and render buffers.
2023-12-04 15:13:31 +00:00
Manuel Stoeckl
566c413d8f render/vulkan: constify vulkan_format_props_find_modifier 2023-12-04 15:13:31 +00:00
Manuel Stoeckl
88a4b9eefd render/vulkan: create VkImage with option for _SRGB view, if possible 2023-12-04 15:13:31 +00:00
Manuel Stoeckl
fd4548bb93 render/vulkan: detect which _UNORM formats support _SRGB views 2023-12-04 15:13:31 +00:00
Manuel Stoeckl
acc70ee3a5 render/vulkan: extract shm texture format query into function 2023-12-04 15:13:31 +00:00
Manuel Stoeckl
eab89d6c76 render/vulkan: track and use _UNORM variants of _SRGB formats
Later commits will start using _SRGB image views again,
where appropriate.
2023-12-04 15:13:31 +00:00
Alexander Orzechowski
6287b61025 wlr_damage_ring: Fix inverted conditional 2023-12-04 07:16:46 -05:00
Alexander Orzechowski
62169bf5ac wlr_scene: fix transformed outputs backend damage clearing
When we cleared the pending backend damage when the output committed,
we would not take into account the output transform. It's easiest to fix
this by just changing pending_commit_damage to always have transformed
coordinates.
2023-12-04 07:06:35 -05:00
Alexander Orzechowski
364d7cba42 wlr_scene: Apply output damage once
We would apply it twice if we failed direct scanout. Once when we attempt
direct scanout and again when we composite.
2023-12-04 06:58:35 -05:00
Alexander Orzechowski
fe8916fef0 wlr_scene: Don't damage whole damage ring when exiting direct scanout
Direct scanout damage will just accumulate on the damage ring while in
direct scanout and properly damage when we exit anyway. On the flip side
since we now manage backend damage submission ourselves, this won't break
that either.
2023-12-03 05:29:05 +00:00
Alexander Orzechowski
0619c99dc7 wlr_scene: Use wlr_damage_ring_rotate_buffer()
Compositors who use _build_state are no longer required to call
damage_ring_rotate themselves. This is a minor breaking change.
2023-12-03 05:29:05 +00:00
Alexander Orzechowski
06d301bf1a wlr_scene: Track output damage separately
The damage ring is only supposed to keep track of damage within
the swapchain
2023-12-03 05:29:05 +00:00
Alexander Orzechowski
6e03d3015e swapchain: Add wlr_swapchain_has_buffer 2023-12-03 05:29:05 +00:00
Alexander Orzechowski
d3a339a03e renderer: Drop buffer binding 2023-11-30 20:11:50 -05:00
Alexander Orzechowski
3ed1268f64 render: Nuke old read pixels API
Sadly, the new API is not backwards compatible with the old API. Since
we have already switched all users in wlroots to the new API compositors
are already practically mandated to implement the new API. Let's get rid
of the old one since there is no point.
2023-11-30 20:01:12 -05:00
Alexander Orzechowski
b3575fedbc screencopy_v1: Use new read pixels API 2023-11-30 20:01:12 -05:00
Alexander Orzechowski
8ac5139007 backend/x11: Use wlr_texture_read_pixels 2023-11-30 20:01:12 -05:00
Alexander Orzechowski
c5a3c5ca4c render: Implement texture_preferred_read_format 2023-11-30 20:01:12 -05:00
Alexander Orzechowski
57b18d26d0 wlr_texture: Introduce wlr_texture_preferred_read_format 2023-11-30 19:56:54 -05:00
Alexander Orzechowski
09f16b2a9c render/vulkan: Implement texture_read_pixels 2023-11-30 19:56:54 -05:00
Alexander Orzechowski
e7055b4840 render/gles2: Implement texture_read_pixels
Also get rid of gles2_texture.owns_texture. We only use the tex/fbo
2023-11-30 19:56:41 -05:00
Alexander Orzechowski
01bd098166 render/pixman: Implement texture_read_pixels 2023-11-30 19:56:17 -05:00
Alexander Orzechowski
e85e8bc324 wlr_texture: Introduce wlr_texture_read_pixels_options helpers 2023-11-30 19:55:51 -05:00
Alexander Orzechowski
4c6caa7c48 wlr_texture: Introduce wlr_texture_read_pixels 2023-11-30 19:55:12 -05:00
Simon Ser
a165261f7f output: replace wlr_render_timer arg with wlr_buffer_pass_options
This scales better when more render pass options are added.
2023-11-30 19:48:01 +01:00
Simon Zeni
5d639394f3 types/output: emit destroy event before destroying global 2023-11-30 13:29:18 -05:00
Simon Ser
e8b187cc92 render/gles2: save/restore context when creating/submitting a render pass
This is useful for e.g. lazily blitting a texture for readback
purposes while rendering.
2023-11-30 17:47:11 +01:00
Simon Ser
1208ba6c28 render/gles2: document EGL context gotchas 2023-11-30 17:46:50 +01:00
Simon Ser
c31ca04264 output: drop stale references to wlr_output_attach_render()
It turns out we forgot about the function declaration in the header.
Also some docs were still referring to that function.

Move the wlr_output_attach_render() docs to
wlr_output_begin_render_pass().
2023-11-30 16:52:11 +01:00
Simon Ser
876d789ad5 render/gles2: reword wlr_gles2_texture comments
These comments were a bit misleading:

- "GL_TEXTURE_2D == mutable": not really, imported non-external-only
  DMA-BUFs would also use this target, but are not mutable.
- "Only affects target == GL_TEXTURE_2D": same here.
- "If imported from a wlr_buffer": not really, would be NULL if
  imported from a shm wlr_buffer.

Adjust these comments to better reflect reality and adjust the check
in gles2_texture_update_from_buffer().
2023-11-30 16:38:25 +01:00
Alexander Orzechowski
84bef5c0c2 render/gles2: Inline texture invalidation
Let's us share more code with the other code path
2023-11-30 10:13:18 -05:00
Alexander Orzechowski
9bf51e744e render/gles2: Don't attach texture as buffer addon
Since wlr_gles2_buffer is now managing importing for us, there is
no reason for us to continue doing this.
2023-11-30 10:13:18 -05:00
Alexander Orzechowski
829e34b305 render/gles2: Don't track image in texture
We can get it from the buffer
2023-11-30 10:13:18 -05:00
Alexander Orzechowski
cb5f67431b render/gles2: Don't double import dmabuf
We can double import a dmabuf if we use it as a texture target and
a render target. Instead, let's unify render targets and texture dmabuf
imports to use wlr_gles2_buffer which manages the EGLImageKHR
2023-11-30 10:13:18 -05:00
Alexander Orzechowski
665055a1a0 render/gles2: Destroy textures first
Since imported textures will be based off of gles2_buffer we have
to destroy textures first or else they will have an invalid reference
to the buffers they are imported from.
2023-11-30 10:13:18 -05:00
Alexander Orzechowski
484e248446 renderer/gles2: Bail rendering to external buffers when binding them
We can't do it while we're creating them because we'll want to use
gles2 buffers for textures soon.
2023-11-30 10:13:18 -05:00
Alexander Orzechowski
0d9cd6932a render/gles2: Lazily create buffer fbo 2023-11-30 10:13:18 -05:00