Bug 433460 - When logging into a Wayland session after having previously used the X11 session, all outputs have their scales reset to 100%
Summary: When logging into a Wayland session after having previously used the X11 sess...
Status: RESOLVED FIXED
Alias: None
Product: KScreen
Classification: Plasma
Component: common (show other bugs)
Version: 5.25.4
Platform: Other Linux
: NOR normal
Target Milestone: 1.0
Assignee: kscreen-bugs-null@kde.org
URL:
Keywords: wayland
: 432724 436628 437585 442439 449321 458171 (view as bug list)
Depends on:
Blocks:
 
Reported: 2021-02-23 04:33 UTC by Nate Graham
Modified: 2023-05-07 20:12 UTC (History)
20 users (show)

See Also:
Latest Commit:
Version Fixed In: 6.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nate Graham 2021-02-23 04:33:43 UTC
I have a 4k screen. I set the scale factor to 200% on X11.

When I log into my Wayland session, the KScreen KCM indicates 200% scale, but everything is actually shown at 100% scale.

If I go to the screen KCM, set it to 100%, and then back to 200%, everything is scaled properly. But the automatically chosen scale factor of 200% does not seem to actually take effect until manually applied.
Comment 1 David Edmundson 2021-03-10 00:36:28 UTC
Please include output of "qtdiag" in this setup
Comment 2 Nate Graham 2021-03-10 00:37:54 UTC
While on X11, or Wayland, or both?
Comment 3 David Edmundson 2021-03-10 00:41:39 UTC
Reproduced, got some steps:

One needs to:
 - set the value in wayland
 - go back to X11 (which can then be left alone)
 - go back to wayland
Comment 4 David Edmundson 2021-03-10 00:42:16 UTC
qtdiag shows kwin thinks it's in 1x mode
Comment 5 David Edmundson 2021-03-10 01:07:50 UTC
Cause is somewhat obvious, finding a solution is not.

kscreen uses the same IDs for outputs on both X11 and wayland

When you log into X, due to the way kscreen is designed it updates that configuration - per screen scales aren't supported so it sets it to one.

Why does the kcm work? Because kscreen has a "control" folder, which is not updated. The KCM reads from this. 

I believe it is "technically correct" insofar as it's doing what it's told to be doing, but I don't understand it. See https://phabricator.kde.org/D26481 on the unlikely chance that helps.
Comment 6 Nate Graham 2021-05-05 19:50:00 UTC
*** Bug 436628 has been marked as a duplicate of this bug. ***
Comment 7 Nicolas Fella 2021-05-24 11:24:37 UTC
*** Bug 437585 has been marked as a duplicate of this bug. ***
Comment 8 Nate Graham 2021-08-09 21:19:25 UTC
*** Bug 439440 has been marked as a duplicate of this bug. ***
Comment 9 Lyubomir 2021-09-14 16:39:03 UTC
*** Bug 442439 has been marked as a duplicate of this bug. ***
Comment 10 David Gow 2021-09-30 13:47:17 UTC
I reported what I think is this issue to openSUSE some time ago:
https://bugzilla.opensuse.org/show_bug.cgi?id=1186893

It's still reproducible on 5.22.5, even though openSUSE has changed how it handles Plasma sessions a bit since I originally reported it.
Comment 11 Nate Graham 2021-10-01 15:49:36 UTC
This improved recently for me on current git master. Now apps use the scale factor properly after logging into a Wayland session after being in an X11 session, and Plasma kinda sort halfway does: everything has the right *physical* size on screen, but it's all blurry, as if run through XWayland. Restarting plasmashell with `plasmashell --replace` fixes this and then all Plasma UI elements are sharp too.
Comment 12 Nate Graham 2021-10-12 14:41:17 UTC
This appears to be fully fixed now fixed in Plasma 5.24!
Comment 13 David Gow 2022-05-13 13:43:33 UTC
This seems like it might have regressed for me, under openSUSE Tumbleweed 20220509 (Plasma 5.24.5, Frameworks 5.93.0).

Switching from X11 (at 2× scale) → Wayland gives a 1× scale display (even with a reboot in between), but shows 200% in system settings. I have to switch to another scale, apply, and switch back to get 200% working again. (And some applications remain a bit 'blurry', not taking the new scale factor into account.)
Comment 14 Nate Graham 2022-05-13 13:48:48 UTC
Can confirm, this is broken again. if I go to X11 and then back to Wayland.

I wonder if it's related to Bug 449212 in any way.
Comment 15 Nate Graham 2022-06-15 15:44:21 UTC
*** Bug 449321 has been marked as a duplicate of this bug. ***
Comment 16 Germano Massullo 2022-06-15 15:46:06 UTC
qtdiag output run from X11 session


$ qtdiag
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
Qt 5.15.3 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 12.1.1 20220507 (Red Hat 12.1.1-1)) on "xcb" 
OS: Fedora Linux 36 (KDE Plasma) [linux version 5.17.13-300.fc36.x86_64]

Architecture: x86_64; features: SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX AVX2

Environment:
  QT_AUTO_SCREEN_SCALE_FACTOR="0"
  QT_IM_MODULE="xim"
  QT_SCREEN_SCALE_FACTORS="eDP-1=2;DP-1=2;HDMI-1=2;DP-2=2;HDMI-2=2;DP-3=2;DP-1-0=2;DP-1-1=2;DP-1-2=2;HDMI-1-0=2;DP-1-3=2;"

Features: QT_NO_EXCEPTIONS

Library info:
  PrefixPath: /usr
  DocumentationPath: /usr/share/doc/qt5
  HeadersPath: /usr/include/qt5
  LibrariesPath: /usr/lib64
  LibraryExecutablesPath: /usr/lib64/qt5/libexec
  BinariesPath: /usr/lib64/qt5/bin
  PluginsPath: /usr/lib64/qt5/plugins
  ImportsPath: /usr/lib64/qt5/imports
  Qml2ImportsPath: /usr/lib64/qt5/qml
  ArchDataPath: /usr/lib64/qt5
  DataPath: /usr/share/qt5
  TranslationsPath: /usr/share/qt5/translations
  ExamplesPath: /usr/lib64/qt5/examples
  TestsPath: /usr/tests
  SettingsPath: /etc/xdg

Standard paths [*...* denote writable entry]:
  DesktopLocation: "Desktop" */home/caterpillar/Scrivania*
  DocumentsLocation: "Documents" */home/caterpillar/Documenti*
  FontsLocation: "Fonts" */home/caterpillar/.local/share/fonts* /home/caterpillar/.fonts /home/caterpillar/.local/share/flatpak/exports/share/fonts /var/lib/flatpak/exports/share/fonts /usr/local/share/fonts /usr/share/fonts
  ApplicationsLocation: "Applications" */home/caterpillar/.local/share/applications* /home/caterpillar/.local/share/flatpak/exports/share/applications /var/lib/flatpak/exports/share/applications /usr/local/share/applications /usr/share/applications
  MusicLocation: "Music" */home/caterpillar/Musica*
  MoviesLocation: "Movies" */home/caterpillar/Video*
  PicturesLocation: "Pictures" */home/caterpillar/Immagini*
  TempLocation: "Temporary Directory" */tmp*
  HomeLocation: "Home" */home/caterpillar*
  AppLocalDataLocation: "Application Data" */home/caterpillar/.local/share/QtProject/qtdiag* /home/caterpillar/.local/share/flatpak/exports/share/QtProject/qtdiag /var/lib/flatpak/exports/share/QtProject/qtdiag /usr/local/share/QtProject/qtdiag /usr/share/QtProject/qtdiag
  CacheLocation: "Cache" */home/caterpillar/.cache/QtProject/qtdiag*
  GenericDataLocation: "Shared Data" */home/caterpillar/.local/share* /home/caterpillar/.local/share/flatpak/exports/share /var/lib/flatpak/exports/share /usr/local/share /usr/share
  RuntimeLocation: "Runtime" */run/user/1000*
  ConfigLocation: "Configuration" */home/caterpillar/.config* /home/caterpillar/.config/kdedefaults /etc/xdg /usr/share/kde-settings/kde-profile/default/xdg
  DownloadLocation: "Download" */home/caterpillar/Scaricati*
  GenericCacheLocation: "Shared Cache" */home/caterpillar/.cache*
  GenericConfigLocation: "Shared Configuration" */home/caterpillar/.config* /home/caterpillar/.config/kdedefaults /etc/xdg /usr/share/kde-settings/kde-profile/default/xdg
  AppDataLocation: "Application Data" */home/caterpillar/.local/share/QtProject/qtdiag* /home/caterpillar/.local/share/flatpak/exports/share/QtProject/qtdiag /var/lib/flatpak/exports/share/QtProject/qtdiag /usr/local/share/QtProject/qtdiag /usr/share/QtProject/qtdiag
  AppConfigLocation: "Application Configuration" */home/caterpillar/.config/QtProject/qtdiag* /home/caterpillar/.config/kdedefaults/QtProject/qtdiag /etc/xdg/QtProject/qtdiag /usr/share/kde-settings/kde-profile/default/xdg/QtProject/qtdiag

File selectors (increasing order of precedence):
  it_IT unix linux fedora

Network:
  Using "OpenSSL 3.0.3 3 May 2022", version: 0x30000030

Platform capabilities: ThreadedPixmaps OpenGL ThreadedOpenGL WindowMasks MultipleWindows ForeignWindows NonFullScreenWindows NativeWidgets WindowManagement SyncState RasterGLSurface SwitchableWidgetComposition

Style hints:
  mouseDoubleClickInterval: 400
  mousePressAndHoldInterval: 800
  startDragDistance: 10
  startDragTime: 500
  startDragVelocity: 0
  keyboardInputInterval: 400
  keyboardAutoRepeatRate: 30
  cursorFlashTime: 1000
  showIsFullScreen: 0
  showIsMaximized: 0
  passwordMaskDelay: 0
  passwordMaskCharacter: U+25CF
  fontSmoothingGamma: 1.7
  useRtlExtensions: 0
  setFocusOnTouchRelease: 0
  tabFocusBehavior: Qt::TabFocusAllControls 
  singleClickActivation: 0

Additional style hints (QPlatformIntegration):
  ReplayMousePressOutsidePopup: 0

Theme:
  Platforms requested : kde,generic
            available : kde,gtk3,snap,flatpak,xdgdesktopportal
  Styles requested    : Breeze,breeze,oxygen,fusion,windows
         available    : Breeze,Windows,Fusion
  Icon theme          : breeze, hicolor from /home/caterpillar/.local/share/icons,/usr/share/icons
  System font         : "Noto Sans" 10

Fonts:
  General font : "Noto Sans" 10
  Fixed font   : "Noto Sans Mono" 10
  Title font   : "Noto Sans" 10
  Smallest font: "Noto Sans" 8

Palette:
  QPalette::WindowText: #ff232629
  QPalette::Button: #fffcfcfc
  QPalette::Light: #ffffffff
  QPalette::Midlight: #fff9fafa
  QPalette::Dark: #ff71757a
  QPalette::Mid: #ffbdc1c6
  QPalette::Text: #ff232629
  QPalette::BrightText: #ffffffff
  QPalette::ButtonText: #ff232629
  QPalette::Base: #ffffffff
  QPalette::Window: #ffeff0f1
  QPalette::Shadow: #ff3b3d3f
  QPalette::Highlight: #ff3daee9
  QPalette::HighlightedText: #ffffffff
  QPalette::Link: #ff2980b9
  QPalette::LinkVisited: #ff9b59b6
  QPalette::AlternateBase: #fff7f7f7
  QPalette::NoRole: #ff000000
  QPalette::ToolTipBase: #fff7f7f7
  QPalette::ToolTipText: #ff232629
  QPalette::PlaceholderText: #80232629

Screens: 1, High DPI scaling: active
# 0 "eDP-1" Depth: 24 Primary: yes
  Manufacturer: California Institute of Technology
  Model: 
  Serial number: 
  Geometry: 1920x1080+0+0 (native: 3840x2160+0+0) Available: 1920x1039+0+0
  Physical size: 344x194 mm  Refresh: 60 Hz Power state: 0
  Physical DPI: 141.767,141.402 Logical DPI: 96,96 (native: 192,192) Subpixel_None
  High DPI scaling factor: 2 DevicePixelRatio: 2 Pixel density: 1
  Primary orientation: 2 Orientation: 2 Native orientation: 0 OrientationUpdateMask: 0

LibGL Vendor: Intel
Renderer: Mesa Intel(R) UHD Graphics (CML GT2)
Version: 4.6 (Compatibility Profile) Mesa 22.1.1
Shading language: 4.60
Format: Version: 4.6 Profile: 2 Swap behavior: 0 Buffer size (RGB): 8,8,8
Profile: None (QOpenGLFunctions_4_6)

Vulkan instance available
Supported instance extensions:
  VK_KHR_device_group_creation, version 1
  VK_KHR_display, version 23
  VK_KHR_external_fence_capabilities, version 1
  VK_KHR_external_memory_capabilities, version 1
  VK_KHR_external_semaphore_capabilities, version 1
  VK_KHR_get_display_properties2, version 1
  VK_KHR_get_physical_device_properties2, version 2
  VK_KHR_get_surface_capabilities2, version 1
  VK_KHR_surface, version 25
  VK_KHR_surface_protected_capabilities, version 1
  VK_KHR_wayland_surface, version 6
  VK_KHR_xcb_surface, version 6
  VK_KHR_xlib_surface, version 6
  VK_EXT_acquire_drm_display, version 1
  VK_EXT_acquire_xlib_display, version 1
  VK_EXT_debug_report, version 10
  VK_EXT_direct_mode_display, version 1
  VK_EXT_display_surface_counter, version 1
  VK_EXT_debug_utils, version 2
Supported layers:
  VK_LAYER_VALVE_steam_overlay_32, version 1, spec version 1.2.136, Steam Overlay Layer
  VK_LAYER_VALVE_steam_overlay_64, version 1, spec version 1.2.136, Steam Overlay Layer
  VK_LAYER_VALVE_steam_fossilize_64, version 1, spec version 1.2.136, Steam Pipeline Caching Layer
  VK_LAYER_VALVE_steam_fossilize_32, version 1, spec version 1.2.136, Steam Pipeline Caching Layer
  VK_LAYER_NV_optimus, version 1, spec version 1.3.194, NVIDIA Optimus layer
  VK_LAYER_MESA_device_select, version 1, spec version 1.3.211, Linux device selection layer
Available physical devices:
  API version 1.3.211, vendor 0x8086, device 0x9BC4, Intel(R) UHD Graphics (CML GT2), type 1, driver version 22.1.1  API version 1.3.211, vendor 0x10005, device 0x0, llvmpipe (LLVM 14.0.0, 256 bits), type 4, driver version 0.0.1  API version 1.3.194, vendor 0x10DE, device 0x1E93, NVIDIA GeForce RTX 2080 Super with Max-Q Design, type 2, driver version 510.272.128

Qt Rendering Hardware Interface supported backends:
OpenGL (with default QSurfaceFormat):
  Min Texture Size: 1
  Max Texture Size: 16384
  Max Color Attachments: 8
  Frames in Flight: 1
  Uniform Buffer Alignment: 1
  Supported MSAA sample counts: 1,2,4,8,16
  Features:
    - MultisampleTexture
    v MultisampleRenderBuffer
    - DebugMarkers
    - Timestamps
    v Instancing
    - CustomInstanceStepRate
    v PrimitiveRestart
    v NonDynamicUniformBuffers
    v NonFourAlignedEffectiveIndexBufferOffset
    v NPOTTextureRepeat
    - RedOrAlpha8IsRed
    v ElementIndexUint
    v Compute
    v WideLines
    v VertexShaderPointSize
    v BaseVertex
    - BaseInstance
    v TriangleFanTopology
    v ReadBackNonUniformBuffer
    v ReadBackNonBaseMipLevel
  Texture formats: RGBA8 BGRA8 R8 R16 RED_OR_ALPHA8 RGBA16F RGBA32F R16F R32F D16 D32F BC1 BC2 BC3 ETC2_RGB8 ETC2_RGB8A1 ETC2_RGBA8
Vulkan:
  Min Texture Size: 1
  Max Texture Size: 16384
  Max Color Attachments: 8
  Frames in Flight: 2
  Uniform Buffer Alignment: 64
  Supported MSAA sample counts: 1,2,4,8,16
  Features:
    v MultisampleTexture
    v MultisampleRenderBuffer
    - DebugMarkers
    v Timestamps
    v Instancing
    - CustomInstanceStepRate
    v PrimitiveRestart
    v NonDynamicUniformBuffers
    v NonFourAlignedEffectiveIndexBufferOffset
    v NPOTTextureRepeat
    v RedOrAlpha8IsRed
    v ElementIndexUint
    v Compute
    v WideLines
    v VertexShaderPointSize
    v BaseVertex
    v BaseInstance
    v TriangleFanTopology
    v ReadBackNonUniformBuffer
    v ReadBackNonBaseMipLevel
  Texture formats: RGBA8 BGRA8 R8 R16 RED_OR_ALPHA8 RGBA16F RGBA32F R16F R32F D16 D32F BC1 BC2 BC3 BC4 BC5 BC6H BC7 ETC2_RGB8 ETC2_RGB8A1 ETC2_RGBA8 ASTC_4x4 ASTC_5x4 ASTC_5x5 ASTC_6x5 ASTC_6x6 ASTC_8x5 ASTC_8x6 ASTC_8x8 ASTC_10x5 ASTC_10x6 ASTC_10x8 ASTC_10x10 ASTC_12x10 ASTC_12x12
Comment 17 Nicolas Fella 2022-08-22 17:54:49 UTC
*** Bug 458171 has been marked as a duplicate of this bug. ***
Comment 18 Nate Graham 2022-11-08 19:06:37 UTC
*** Bug 432724 has been marked as a duplicate of this bug. ***
Comment 19 Nate Graham 2022-12-16 20:02:17 UTC
Still an issue after the big multi-monitor re-work in Plasma 5.27. Probably what we should do is have the global scale not be written into output configs on X11, so that it when it's written there on Wayland, it survives moving between session types.
Comment 20 Nate Graham 2023-05-07 20:12:37 UTC
Can confirm this is fixed now in Plasma 6.0!