aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-11-06session-lock: use role object destroy handlerKirill Primak
2022-11-06subcompositor: use role object destroy handlerKirill Primak
2022-11-06layer-shell: use role object destroy handlerKirill Primak
2022-11-06compositor: introduce wlr_surface_destroy_role_object()Kirill Primak
2022-11-05xdg-shell: fix geometry typesKirill Primak
2022-11-05scene: fix buffer source box transformingKirill Primak
2022-11-04render/vulkan: drop outdated commentsSimon Ser
2022-11-04render/vulkan: remove exts arg from vulkan_instance_create()Simon Ser
2022-11-04render/vulkan: add caching to vulkan_read_pixelsDavid96
2022-11-02xwayland: split headersSimon Ser
We're about to get one more Xwayland-related thing, and this header already contains two things.
2022-11-02backend/drm: get possible CRTCs in create_drm_connector()Simon Ser
This stuff is immutable for a given connector.
2022-11-02backend/drm: extract create_drm_connector()Simon Ser
Move a bit more logic out of the big loop in scan_drm_connectors().
2022-10-28render/gles2: de-duplicate vertex shadersSimon Ser
The vertex shaders for quads and textures are identical.
2022-10-28render/gles2: move color uniform from quad.vert to quad.fragSimon Ser
We have no use for a v_color varying. We can use the uniform directly from the fragment shader without getting the vertex shader involved.
2022-10-28render/gles2: move shaders to individual filesSimon Ser
Instead of having a C file with strings for each shader, move each shader into its own file. Use a small POSIX shell script to convert the files into C strings (can't wait for C23 #embed...). The benefits from this are: - Improved readability and syntax highlighting. - Line numbers in shader compiler errors are easier to make sense of. - Consistency with the Vulkan renderer. - Shaders will become more complicated as we add color management features.
2022-10-27render/gles2: log error on shader compilation failureSimon Ser
2022-10-25render/gles2: remove stale gles2_texture_from_wl_drm() prototypeSimon Ser
This function doesn't exist anymore.
2022-10-24wlr-output-management: implement adaptive syncIsaac Freund
Version 4 of the protocol adds support for reporting/setting adaptive sync state of outputs. Implement these new requests/events in wlroots.
2022-10-22wlr_scene: Handle fractional scaling betterAlexander Orzechowski
Try to alleviate scaling inaccuracies by implementing a fudge factor.
2022-10-21egl: add WLR_EGL_NO_MODIFIERSSimon Ser
Same as WLR_DRM_NO_MODIFIERS but for EGL. For debugging purposes mostly. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3451
2022-10-20output: clarify custom modes warningSimon Ser
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3514
2022-10-20output: try to use fixed mode in wlr_output_set_custom_mode()Simon Ser
If a fixed mode matching the user requirements is available, use that. This avoids generating the mode with GTF or CVT in the DRM backend, and instead uses mode timings advertised by the output. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3514
2022-10-19xwyland/xwm: simplify unpaired_link handlingSimon Ser
Always keep it initialized, so that we don't have to check for xsurface->surface_id. Will help with WL_SURFACE_SERIAL support, which adds a new way for a surface to be unpaired.
2022-10-19backend/drm: fetch current CRTC once on startupSimon Ser
Once we are DRM master, the CRTC cannot be changed behind our back except during a VT switch. After a VT switch, we try to restore whatever KMS state we had last programmed. Reloading the current CRTC from KMS breaks this and can result in a modeset without a FB. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3432
2022-10-18xwayland: Simplify net_wm_edges_to_wlrAlexander Orzechowski
2022-10-18render/vulkan: add missing entries in vulkan_strerror()Simon Ser
And update the sort order to follow Khronos' <vulkan/vulkan_core.h>.
2022-10-18backend/drm: log failures in drm_surface_blit()Simon Ser
Can make issues like [1] easier to debug. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3451
2022-10-17backend/drm: drop drm_crtc_page_flip()Simon Ser
Inline it in drm_connector_commit_state(). Brings us a step closer to unifying the test code-path and the commit code-path.
2022-10-17backend/drm: log when restoring mode after VT switch failsSimon Ser
Can make it easier to track down issues.
2022-10-17backend/drm: fix EINVAL atomic commits after VT switchSimon Ser
The drm_connector_commit_state() call in handle_session_active() was not resulting in any atomic commit, because it didn't match any of the if branches: active = true, no new buffer was committed, and adaptive sync/gamma LUT were unchanged. Thus the commit was a no-op. Later on, when the compositor performs regular page-flips, the kernel would return EINVAL indicating that a modeset was needed. Rework the logic to use a non-blocking page-flip commit if a buffer was committed, and use a blocking commit if the connector is on or is being disabled. The only case where we should skip the atomic commit is when disabling (active = false) an already-disabled connector (conn->crtc == NULL). Note, 6936e163b514 ("backend/drm: short-circuit no-op commits") has introduced early returns for other situations where we don't need to perform an atomic commit (e.g. updating scale or transform of an output). Fixes: f216e979836a ("backend/drm: drop drm_connector_set_mode()") Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3432
2022-10-17backend/drm: extract current mode logic into separate functionSimon Ser
Extract the logic to fetch the current mode to a separate function to make it more readable. Stop dying in an assert when get_drm_prop_blob() fails. Always make it so the drmModeModeInfo pointer is allocated so that we can free() it unconditionally.
2022-10-15backend/drm: extract connect_drm_connector() logicSimon Ser
We already have disconnect_drm_connector() to handle the CONNECTED → DISCONNECTED transition. Let's add connect_drm_connector() to handle DISCONNECTED → CONNECTED. This makes scan_drm_connectors() shorter and easier to follow. No functional change, literally just moving code around.
2022-10-14wlr_scene: Destroy the texture when setting a new buffer.Alexander Orzechowski
Fixes: https://github.com/labwc/labwc/issues/587 Fixes: f0e31e806f7cb88c9d55dc0eb1876c86600d28df (wlr_scene: Fix not updating the scene node when setting a new buffer)
2022-10-14backend/drm: use atomic API to fetch current connector's CRTCSimon Ser
We were using the legacy API (with a detour through drmModeEncoder) to find out the current CRTC for a connector. Use the atomic API when available. Also extract the whole logic into a separate function for better readability, and better handle errors.
2022-10-14idle-notify-v1: new protocol implementationSimon Ser
References: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/29
2022-10-14xdg-toplevel: send invalid_parent errorKirill Primak
2022-10-13wlr_scene: use wl_container_of() instead of castsAlexander Orzechowski
2022-10-13backend/drm: use wl_container_of() instead of casts for wlr_drm_modeSimon Ser
Instead of casting a wlr_output_mode to wlr_drm_mode, use wl_container_of() for slightly better type safety.
2022-10-13backend/drm/legacy: Fix whitespaceAlexander Orzechowski
This confused me while reading through.
2022-10-13backend: use global output name countersSimon Ser
The output names must be globally unique per the Wayland spec, even if the compositor creates multiple backends of the same kind.
2022-10-11Fixed false allocation failedGentaiii
2022-10-10render/vulkan: drop wlr_vk_instance.extensionsSimon Ser
This was unused. Even if it was, it'd be better to have bool fields instead.
2022-10-10output: fix crash in output_test_with_back_buffer()Simon Ser
The output->impl->test check has been removed, but output_test_with_back_buffer() hasn't been updated accordingly. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3506 Fixes: 3be6658ee7b6 ("output: allocate swapchain on first commit")
2022-10-10wlr_scene: Apply source box translationAlexander Orzechowski
2022-10-10wlr_scene: Ignore disabled outputsAlexander Orzechowski
2022-10-10wlr_scene: Fix not updating the scene node when setting a new bufferAlexander Orzechowski
If a new buffer is set for a buffer node, we must update the entire node unconditionally if the buffer size changes, or the buffer is given a buffer where it was previously NULL. While we're here, let's avoid calling scene_node_update on just damage updates. If the caller hasn't given us a damage region we just assume the whole buffer.
2022-10-10wlr_scene: Be resilient against overflow conditionsAlexander Orzechowski
If the area calculations for output overlap overflow a signed int, we may not consider it to be a primary output. Turn this into an unsigned type so this happens less frequently. Additionally, it is possible the overflow would produce 0, we can handle this by simply changing the comparison to more than or equal. While we're here, let's assert that we always assign a primary output if there are any intersecting outputs.
2022-10-10render/gles2: assert that GL_OES_EGL_image_external is supportedSimon Ser
The target is set to GL_TEXTURE_EXTERNAL_OES when EGL_EXT_image_dma_buf_import_modifiers [1] returns an external_only flag. That spec states: > In order to support imports for the GL_TEXTURE_EXTERNAL_OES target, a > compatible OpenGL ES implementation supporting GL_OES_EGL_image_external > must be present. Fail hearder when a driver doesn't follow the spec instead of skipping rendering. See [2]. [1]: https://registry.khronos.org/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt [2]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3631#note_1584343
2022-10-10backend/drm: drop drm_connector_set_mode()Simon Ser
Instead of special-casing modesets, we can just cut the wrapper and directly call drm_crtc_page_flip(). drm_connector_test() should already have the checks previously done in drm_connector_set_mode(), all we need to do is update enabled/mode after a successful atomic commit.
2022-10-09render/vulkan: Fix type-punned pointer warning/errorJohn Lindgren