aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-11-15buffer: drop wlr_shm_client_bufferSimon Ser
It's been superseded by wlr_shm.
2022-11-15render: use wlr_shm in wlr_renderer_init_wl_shm()Simon Ser
2022-11-15Introduce wlr_shmSimon Ser
This is a re-implementation of wl_shm. The motivations for using this over the one shipped in libwayland are: - Properly handle SIGBUS when accessing a wl_buffer's underlying data after the wl_buffer protocol object has been destroyed. With the current code, we just crash if the client does that and then shrinks the backing file. - No need to fight the wl_shm_buffer API anymore. This was awkward because we weren't notified when clients created a wl_shm buffer, and this doesn't play well with our wlr_buffer abstraction. - Access to the underlying FD. This makes it possible to forward the wl_shm buffer to a parent compositor with the Wayland/X11 backends. - Better stride checks. We can use our format table to ensure that the stride is consistent with the bpp and width.
2022-11-15render/pixel_format: import pixel_format_info_check_stride()Simon Ser
We'll use this function from wlr_shm too. Add some assertions, use int32_t (since the wire protocol uses that, and we don't want to use 16-bit integers on exotic systems) and switch the stride check to be overflow-safe.
2022-11-15input-inhibitor: deprecateKirill Primak
The protocol itself has been deprecated.
2022-11-15render/vulkan: detect device lossSimon Ser
2022-11-15render/egl: enable EGL_LOSE_CONTEXT_ON_RESETSimon Ser
This allows the GLES2 renderer to figure out when a GPU reset happens.
2022-11-15render/gles2: query glGetGraphicsResetStatusKHRSimon Ser
Call glGetGraphicsResetStatusKHR in wlr_renderer_begin to figure out when a GPU reset occurs. Destroy the renderer when this happens (the OpenGL context is defunct).
2022-11-15render: add wlr_renderer.events.lostSimon Ser
2022-11-15scene: check wlr_renderer_begin return valueSimon Ser
2022-11-15output: check wlr_renderer_begin return valueSimon Ser
2022-11-15render: make wlr_renderer_begin return a boolSimon Ser
2022-11-15render: allow wlr_renderer_impl.begin to failSimon Ser
Make it return a bool to indicate success/failure. Adapt the various implementations to check errors.
2022-11-15render: make some wlr_renderer fields privateSimon Ser
2022-11-15render: add docs for wlr_rendererSimon Ser
2022-11-15content-type-v1: add version param to wlr_content_type_manager_v1_create()Simon Ser
2022-11-15backend/x11: use request_state when window is resizedSimon Ser
2022-11-15backend/wayland: use request_state when toplevel is resizedSimon Ser
2022-11-15output: introduce request_state eventSimon Ser
This allows backends to request the compositor to change the state of an output. References: https://github.com/swaywm/wlroots/issues/2300#issuecomment-761819673
2022-11-15content-type-v1: new protocol implementationSimon Ser
References: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/150
2022-11-15backend/drm: only request page-flip if activeSimon Ser
It doesn't make sense to request a page-flip for a disabled output. Fixes: 84e727daae67 ("backend/drm: request page-flip event on modeset") Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3528
2022-11-15compositor: drop wlr_surface.{sx,sy}Simon Ser
The concept of a persistent accumulated surface offset is wrong from a protocol point-of-view. wl_surface.offset is tied to a commit, its interpretation depends on the surface role. For example, with the following sequence: wl_surface@1.offset(1, 1) wl_surface@1.commit() wl_pointer@2.set_cursor(wl_surface@1, 42, 42) The final cursor hotspot is (42, 42): the commit which happened before the set_cursor request has no impact on the hotspot computation. The wlr_output_cursor logic already uses wlr_surface.current.{dx,dy}. wlr_scene's drag icon doesn't, update it accordingly.
2022-11-15backend/drm: fix FPE when disabling outputSimon Ser
Fixes: 65836ce357e4 ("backend/drm: log modesetting commits") Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3534
2022-11-15render/vulkan: add wlr_vk_texture_has_alphazccrs
Allow to get whether has alpha channel of the VkImage, it can help an optimization to disable blending when the texture doesn't have alpha. Because the VkFormat isn't enough because it's always set to VK_FORMAT_B8G8R8A8_SRGB or VK_FORMAT_R8G8B8A8_SRGB.
2022-11-14backend/drm: log modesetting commitsSimon Ser
2022-11-14backend/drm: log refresh rate in HzSimon Ser
2022-11-14wlr_scene: Add drag icon helperAlexander Orzechowski
2022-11-14layer-shell-v1: specify version in constructorSimon Ser
This allows compositors to indicate which features they support, and is required to eventually make this API stable. References: https://github.com/swaywm/sway/issues/7260
2022-11-14egl: remove eglQueryWaylandBufferWL definefakechen
This define doesn't exist anymore. Signed-off-by: fakechen <chenzigui@kylinos.cn> Signed-off-by: sunzhguy <sunzhigang1@kylinos.cn>
2022-11-13xwayland: fix wlr_xwayland_surface_from_wlr_surface() docsKirill Primak
32daa43a454bcea1306ad0976fd4161ce8c7e86f has removed the asymmetry in the relationship of a wlr_surface and an unmapped wlr_xwayland_surface, when wlr_surface.role_data wasn't NULL but wlr_xwayland_surface.surface was. However, this also means that wlr_xwayland_surface_from_wlr_surface() now returns NULL if the wlr_surface is unmapped. Fix the documentation to reflect this.
2022-11-11scene: constify region APIsSimon Ser
2022-11-11region: constifySimon Ser
2022-11-11output: constify damage APIsSimon Ser
2022-11-11output-damage: constify wlr_output_damage_add()Simon Ser
2022-11-11damage-ring: constify wlr_damage_ring_add()Simon Ser
2022-11-11buffer: constify wlr_client_buffer_apply_damage()Simon Ser
2022-11-11render/texture: constify wlr_texture_update_from_buffer()Simon Ser
2022-11-11util/region: constifySimon Ser
2022-11-11backend: remove const casts for pixman_region32_tSimon Ser
Pixman 0.42.0 has constified APIs for pixman_region32_t. We no longer need the casts.
2022-11-11build: bump pixman versionSimon Ser
The new version offers const pixman_region32_t APIs, which we will make use of in the following commits.
2022-11-11build: add subproject fallback for PixmanSimon Ser
Allows users to use a Meson subproject for Pixman.
2022-11-11build: move udev dep to backend/Simon Ser
The DRM, libinput and session use udev. They are all hosted under backend/.
2022-11-11render/vulkan: remove hardcoded validation layersSimon Zeni
Users should use the VK_INSTANCE_LAYERS env var to set layers at runtime
2022-11-11backend/drm: ensure disconnected outputs are disabled after VT switchSimon Ser
The following situation can be dangerous: - Output DP-1 is plugged in, compositor enables it. - User VT switches away. - User unplugs DP-1. - User VT switches back. - scan_drm_connectors() figures out the output is now disconnected, uninitializes the struct wlr_output. - The loop restoring previous output state in handle_session_active() accesses the struct wlr_output to figure out what to restore. By chance, we zero out the struct wlr_output after uninitializing it, so enabled and current_mode will always be zero. But let's make sure we handle this case explicitly, to remind future readers that it exists and make the code less fragile.
2022-11-11render/egl: fix uninitialized pointers in init_dmabuf_formatsSimon Zeni
`modifiers` and `external_only` are never initialized, and free'd later. This commit explicitly initializes them to NULL to prevent segfaults on `free()`
2022-11-11render/vulkan: use initializer for VkBufferImageCopySimon Ser
Missed that one it seems.
2022-11-11render/vulkan: wait for device to become idle in vulkan_destroy()Simon Ser
It's not safe to destroy any resources which might still be in-use by the GPU. Wait for any asynchronous tasks to complete before destroying everything.
2022-11-11render/vulkan: always wait for last stage to complete before renderingSimon Ser
When we have multiple command buffers in flight, we need to make sure we don't start rendering before the previous texture uploads are complete.
2022-11-11render/vulkan: use command buffer pool for stageSimon Ser
2022-11-11render/vulkan: add a command buffer poolSimon Ser
Before re-using a VkCommandBuffer, we need to wait for its operations to complete. Right now we unconditionally wait for rendering to complete in vulkan_end(), however we have plans to fix this [1]. To fully avoid blocking, we need to handle multiple command buffers in flight at the same time (e.g. for multi-output, or for rendering followed by texture uploads). Implement a pool of command buffers. When we need to render, we pick a command buffer from the pool which has completed its operations. If we don't find one, try to allocate a new command buffer. If we don't have slots in the pool anymore, block like we did before. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3574