aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-12-04render/vulkan: track and use _UNORM variants of _SRGB formatsManuel Stoeckl
Later commits will start using _SRGB image views again, where appropriate.
2023-12-04wlr_damage_ring: Fix inverted conditionalAlexander Orzechowski
2023-12-04wlr_scene: fix transformed outputs backend damage clearingAlexander Orzechowski
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-04wlr_scene: Apply output damage onceAlexander Orzechowski
We would apply it twice if we failed direct scanout. Once when we attempt direct scanout and again when we composite.
2023-12-03wlr_scene: Don't damage whole damage ring when exiting direct scanoutAlexander Orzechowski
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-03wlr_scene: Use wlr_damage_ring_rotate_buffer()Alexander Orzechowski
Compositors who use _build_state are no longer required to call damage_ring_rotate themselves. This is a minor breaking change.
2023-12-03wlr_scene: Track output damage separatelyAlexander Orzechowski
The damage ring is only supposed to keep track of damage within the swapchain
2023-12-03swapchain: Add wlr_swapchain_has_bufferAlexander Orzechowski
2023-11-30renderer: Drop buffer bindingAlexander Orzechowski
2023-11-30render: Nuke old read pixels APIAlexander Orzechowski
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-30screencopy_v1: Use new read pixels APIAlexander Orzechowski
2023-11-30backend/x11: Use wlr_texture_read_pixelsAlexander Orzechowski
2023-11-30render: Implement texture_preferred_read_formatAlexander Orzechowski
2023-11-30wlr_texture: Introduce wlr_texture_preferred_read_formatAlexander Orzechowski
2023-11-30render/vulkan: Implement texture_read_pixelsAlexander Orzechowski
2023-11-30render/gles2: Implement texture_read_pixelsAlexander Orzechowski
Also get rid of gles2_texture.owns_texture. We only use the tex/fbo
2023-11-30render/pixman: Implement texture_read_pixelsAlexander Orzechowski
2023-11-30wlr_texture: Introduce wlr_texture_read_pixels_options helpersAlexander Orzechowski
2023-11-30wlr_texture: Introduce wlr_texture_read_pixelsAlexander Orzechowski
2023-11-30output: replace wlr_render_timer arg with wlr_buffer_pass_optionsSimon Ser
This scales better when more render pass options are added.
2023-11-30types/output: emit destroy event before destroying globalSimon Zeni
2023-11-30render/gles2: save/restore context when creating/submitting a render passSimon Ser
This is useful for e.g. lazily blitting a texture for readback purposes while rendering.
2023-11-30render/gles2: document EGL context gotchasSimon Ser
2023-11-30output: drop stale references to wlr_output_attach_render()Simon Ser
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-30render/gles2: reword wlr_gles2_texture commentsSimon Ser
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-30render/gles2: Inline texture invalidationAlexander Orzechowski
Let's us share more code with the other code path
2023-11-30render/gles2: Don't attach texture as buffer addonAlexander Orzechowski
Since wlr_gles2_buffer is now managing importing for us, there is no reason for us to continue doing this.
2023-11-30render/gles2: Don't track image in textureAlexander Orzechowski
We can get it from the buffer
2023-11-30render/gles2: Don't double import dmabufAlexander Orzechowski
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-30render/gles2: Destroy textures firstAlexander Orzechowski
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-30renderer/gles2: Bail rendering to external buffers when binding themAlexander Orzechowski
We can't do it while we're creating them because we'll want to use gles2 buffers for textures soon.
2023-11-30render/gles2: Lazily create buffer fboAlexander Orzechowski
2023-11-30backend/drm: remove wlr_drm_renderer.backendSimon Ser
This is unused.
2023-11-30backend/drm: move drm_plane_finish_surface() to drm.cSimon Ser
This function touches queued_fb/current_fb, which the renderer has nothing to do with.
2023-11-30backend/drm: split wlr_drm_fb related functions into separate fileSimon Ser
2023-11-29render: Drop rendering_with_bufferAlexander Orzechowski
This is always true now that we can only render with a buffer.
2023-11-29output: Drop back_bufferAlexander Orzechowski
2023-11-29output: Drop wlr_output_attach_renderAlexander Orzechowski
2023-11-29renderer: Drop wlr_renderer_beginAlexander Orzechowski
2023-11-29damage_ring: add wlr_damage_ring_rotate_buffer()Simon Ser
This adds an alternate way to use wlr_damage_ring without the concept of buffer age. Buffer age is a concept inherited from EGL but there is no real reason why we should continue to use that in wlroots. Instead, use wlr_buffer pointers. Eventually, we should be able to remove the buffer age based functions.
2023-11-29render/gles2: check external-only flag in get_or_create_buffer()Simon Ser
If the external-only flag is set, then the EGLImage is only supported for use with GL_TEXTURE_EXTERNAL_OES texture targets. In particular, the EGLImage cannot be bound to a RBO.
2023-11-29render/gles2: Don't track has_alpha in pixel_formatAlexander Orzechowski
Why track the alpha here when we can already get that information elsewhere?
2023-11-28backend/drm: use DRM_IOCTL_MODE_CLOSEFB instead of RMFBSimon Ser
RMFB implicitly performs a modeset to turn off any CRTC which is using the FB. This prevents seamless transitions between two DRM masters from working. Use the new CLOSEFB IOCTL which doesn't turn off anything and leave it up to the compositor to turn off outputs on shutdown if it wants to.
2023-11-28render/egl: fallback to GBM FD if EGLDevice is not availableSimon Ser
It's possible that we don't have an EGLDevice if we created the EGL context from a GBM device. Let's ensure all GPU-accelerated renderers always have a DRM FD to return by falling back to GBM's FD.
2023-11-28render/vulkan: drop current_command_bufferSimon Ser
This was used by the legacy rendering API. Since begin()/end() only need to set current_render_buffer and nothing else, we can drop all of these bits.
2023-11-27xwm: don't do anything except mapping on MapRequestKirill Primak
Instead, move the wlr_xwayland_surface_set_withdrawn() and wlr_xwayland_surface_restack() calls to the MapNotify handler with an override_redirect check, as they are done too early. This mirrors the logic in the UnmapNotify handler and fixes a bug where wlr_xwayland_surface_restack() would be called on an o-r window after the following sequence of requests: - CreateWindow with override_redirect=True - ChangeWindowAttributes with override_redirect=False - MapWindow Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3770
2023-11-27backend/x11: don't send ConfigureRequest with the same sizeKirill Primak
Under X11, ConfigureNotify means that the window has already been resized. Sending ConfigureRequest with the received size is not only useless, but also can confuse the window manager, which will probably reply with the current (i.e. *old*) size causing a configure loop. Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3769
2023-11-26backend/x11: check buffer format in output_test()Kirill Primak
2023-11-26viewporter: fix src buffer bounds checkSimon Ser
The surface scale and transform are applied before the viewport. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3766
2023-11-26viewporter: listen to client_commitSimon Ser
The commit event fires too late: we're interested in checking the values at wl_surface.commit time, not after.