https://bugs.kde.org/show_bug.cgi?id=523104
Bug ID: 523104
Summary: HDR swapchain colorspace stuck at SRGB_NONLINEAR via
VK_hdr_layer despite protocol exposed (NVIDIA Optimus,
610.43.03)
Classification: Plasma
Product: kwin
Version First 6.7.3
Reported In:
Platform: CachyOS
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: colour-management
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Target Milestone: ---
SUMMARY
On an NVIDIA Optimus laptop (AMD iGPU + NVIDIA dGPU) running Plasma 6.7.3 with
HDR enabled, Vulkan clients using the VK_hdr_layer (Zamundaaa/VK_hdr_layer,
vk-hdr-layer-kwin6-git) never negotiate an HDR10 swapchain colorspace. The
swapchain is always created with VK_COLOR_SPACE_SRGB_NONLINEAR_KHR instead of
VK_COLOR_SPACE_HDR10_ST2084_EXT, even though the HDR10 colorspace is confirmed
available in the surface format list, the layer is correctly loaded, and KWin
correctly exposes the relevant Wayland color-management protocols.
This reproduces identically with two independent Vulkan clients (vkcube and
mpv), ruling out an application-specific bug.
STEPS TO REPRODUCE
1. Enable HDR in System Settings → Display Configuration (confirmed active via
`kscreen-doctor -o`, output shows "HDR: enabled")
2. Install vk-hdr-layer-kwin6-git and confirm registration:
find /usr/share/vulkan -iname "*hdr*"
→ /usr/share/vulkan/implicit_layer.d/VkLayer_hdr_wsi.x86_64.json
vulkaninfo --summary | grep -i hdr
→ VK_LAYER_hdr_wsi WSI HDR Layer (x86_64) 1.3.221 version 1
3. Confirm KWin exposes the color-management protocol:
wayland-info | grep -i color
→ frog_color_management_factory_v1, version: 1
→ wp_color_manager_v1, version: 2
→ wp_color_representation_manager_v1, version: 1
4. Run either test client:
ENABLE_HDR_WSI=1 vkcube --present_mode 0 2>&1 | grep -i colorspace
ENABLE_HDR_WSI=1 mpv --fs --vo=gpu-next --target-colorspace-hint
--gpu-api=vulkan --gpu-context=waylandvk <HDR10 file>
OBSERVED RESULT
Swapchain is always created with VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, for both
vkcube and mpv, identically. mpv's own stats overlay confirms actual output
stays SDR (Primaries: bt.709, Transfer: gamma2.2, Display: 203 cd/m²) despite
the source content correctly reporting HDR10 (bt.2020/pq, proper HDR10
MaxCLL/mastering metadata).
EXPECTED RESULT
Swapchain colorspace should negotiate to VK_COLOR_SPACE_HDR10_ST2084_EXT
(confirmed available in the surface format list:
VK_FORMAT_A2B10G10R10_UNORM_PACK32 → VK_COLOR_SPACE_HDR10_ST2084_EXT).
ALREADY RULED OUT
- Windowed vs fullscreen (tested both, no difference)
- Single vs dual output — tested disabling the internal laptop panel via
kscreen-doctor, no change
- --target-colorspace-hint present/absent — no effect either way
- KWIN_DRM_USE_COLOR_PIPELINE=1 override — confirmed inherited by the
kwin_wayland process via /proc/<pid>/environ, no effect on swapchain colorspace
- Plasma 6.7.2 → 6.7.3 update — identical behavior on both
ADDITIONAL INFORMATION
Aware of KDE bug 520842 (KWin disables NVIDIA DRM color pipelines due to a
crash on the 610.x driver line) — this appears to be a distinct, lower-level
hardware pipeline issue from the Vulkan swapchain colorspace negotiation being
tested here, since the KWIN_DRM_USE_COLOR_PIPELINE toggle for that bug had no
effect on this symptom.
Also worth noting: this is an NVIDIA Optimus hybrid laptop (AMD Ryzen 5800H
iGPU + RTX 3060 dGPU). A related but distinct symptom is described in
Zamundaaa/VK_hdr_layer issue #16 ("Broken on NVIDIA optimus laptops") on
another Optimus laptop — HDR10 colorspace negotiation succeeds there but the
screen goes black, whereas in this case negotiation never leaves SRGB at all.
Possibly a related root cause specific to hybrid-GPU configurations, though the
failure modes differ.
SOFTWARE/OS VERSIONS
Operating System: CachyOS Linux
KDE Plasma Version: 6.7.3
KWin Version: 6.7.3
Graphics Platform: Wayland
Laptop: Lenovo Legion 5 Pro 16ACH6H (NVIDIA Optimus: AMD Ryzen 7 5800H iGPU +
NVIDIA RTX 3060 dGPU)
Graphics Driver: nvidia-open 610.43.03
Mesa: 26.1.4
mpv: 0.41.0
vk-hdr-layer-kwin6-git: r47.303e0c6-1
--
You are receiving this mail because:
You are watching all bug changes.