https://bugs.kde.org/show_bug.cgi?id=524346
Bug ID: 524346
Summary: Composited tearing requests fall back to VSync
Classification: Plasma
Product: kwin
Version First 6.6.6
Reported In:
Platform: Ubuntu
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: compositing
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
DESCRIPTION
A fullscreen Wayland window requests asynchronous presentation, but KWin falls
back to VSync when it must composite the window itself. I observed this with a
transparent `wl_subsurface` attached to the focused fullscreen `xdg_toplevel`.
STEPS TO REPRODUCE
1. Create a focused, fullscreen `xdg_toplevel`.
2. Attach a transparent `wl_subsurface` to it.
3. Request WP_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC for the subsurface.
4. Continuously commit update to the subsurface.
5. Records its `wp_presentation` feedback and checks for the VSync flag.
OBSERVED RESULT
All presentation feedback contains the VSync flag. When KWin is started with
KWIN_DRM_USE_MODIFIERS=0 the same composited surface is presented without the
VSync flag.
EXPECTED RESULT
When KWin accepts the async presentation request and the output supports
tearing, the composited surface should be presented asynchronously.
ENVIRONMENT
Operating System: Ubuntu 26.04
KDE Plasma Version: 6.6.6
GPU: Intel Tiger Lake Iris Xe
DRM driver: i915
Kernel: 7.0.0-29-generic
Mesa: 26.0.3
ADDITIONAL INFORMATION
The likely cause seems to be that KWin uses its async only DRM format set only
for direct scanout. In `prepareDirectScanout()`, KWin selects
`supportedAsyncDrmFormats()` when the frame requests asynchronous presentation:
https://invent.kde.org/plasma/kwin/-/blob/v6.6.6/src/compositor.cpp?ref_type=tags#L404.
When direct scanout is not possible, the OpenGL compositing path uses
`supportedDrmFormats()` in both `EglGbmLayer::doBeginFrame()` and
`preparePresentationTest()`, regardless of the requested presentation mode:
https://invent.kde.org/plasma/kwin/-/blob/v6.6.6/src/backends/drm/drm_egl_layer.cpp?ref_type=tags#L57.
--
You are receiving this mail because:
You are watching all bug changes.