Bug 500144 - HDR does not work correctly anymore with kwin 6.3 and 6.6
Summary: HDR does not work correctly anymore with kwin 6.3 and 6.6
Status: RESOLVED WORKSFORME
Alias: None
Product: kwin
Classification: Plasma
Component: colour-management (other bugs)
Version First Reported In: 6.3.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2025-02-15 19:23 UTC by bugreports61
Modified: 2026-04-22 12:29 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.3.2
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description bugreports61 2025-02-15 19:23:11 UTC
SUMMARY

Since upgrading to plasma 6.3 with kwin 6.3 HDR does not work correctly anymore in e.g. Dead Island 2.
HDR is by far not as bright as it should be and using the adjustment tools in the game for whitepoint does not work anymore which worked perfectly before (set the whitepoint to 950 in game which is the peak brightness of my Alienware AW3424DWF).

I am using master of https://github.com/Zamundaaa/VK_hdr_layer

My settings in display settings:

Max SDR Brightness: 100
Brightness: 40

Sadly i don't know how the Brightness slide interacts with my monitor. In HDR mode the monitor locks the brightness setting, but still using that display setting brightness sliders changes display brightness ?

I honestly dislike having that setting at all , as changing things there do not get reflected in the monitors brightness settings. Same in sdr mode.

STEPS TO REPRODUCE
1.  Start the game, enabel HDR, try to configure the whitepoint . 

OBSERVED RESULT
It is not possible to configure the HDR whitepoint correclty anymore.

EXPECTED RESULT

HDR should work fine as it does with plasma 6.2 and kwin 6.2

Operating System: EndeavourOS 
KDE Plasma Version: 6.3.0
KDE Frameworks Version: 6.10.0
Qt Version: 6.8.2
Kernel Version: 6.11.11-273-tkg-eevdf (64-bit)
Graphics Platform: Wayland
Processors: 32 × AMD Ryzen 9 5950X 16-Core Processor
Memory: 31.3 GiB of RAM
Graphics Processor: AMD Radeon RX 6900 XT


ADDITIONAL INFORMATION

Output of the hdr layer:

[HDR Layer] Created HDR surface
[HDR Layer] Enabling format: 64 colorspace: 1000104008
[HDR Layer] Enabling format: 58 colorspace: 1000104008
[HDR Layer] Enabling format: 97 colorspace: 1000104002
[HDR Layer] Enabling format: 97 colorspace: 1000104005
[HDR Layer] Enabling format: 64 colorspace: 1000104008
[HDR Layer] Enabling format: 58 colorspace: 1000104008
[HDR Layer] Enabling format: 97 colorspace: 1000104002
[HDR Layer] Enabling format: 97 colorspace: 1000104005
[HDR Layer] Enabling format: 64 colorspace: 1000104008
[HDR Layer] Enabling format: 58 colorspace: 1000104008
[HDR Layer] Enabling format: 97 colorspace: 1000104002
[HDR Layer] Enabling format: 97 colorspace: 1000104005
[HDR Layer] Enabling format: 64 colorspace: 1000104008
[HDR Layer] Enabling format: 58 colorspace: 1000104008
[HDR Layer] Enabling format: 97 colorspace: 1000104002
[HDR Layer] Enabling format: 97 colorspace: 1000104005
[HDR Layer] Creating swapchain for id: 37 - format: VK_FORMAT_A2B10G10R10_UNORM_PACK32 - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
[HDR Layer] VkHdrMetadataEXT: mastering luminance min 0.000000 nits, max 10000000.000000 nits
[HDR Layer] VkHdrMetadataEXT: maxContentLightLevel 0.000000 nits
[HDR Layer] VkHdrMetadataEXT: maxFrameAverageLightLevel 0.000000 nits
[HDR Layer] Enabling format: 64 colorspace: 1000104008
[HDR Layer] Enabling format: 58 colorspace: 1000104008
[HDR Layer] Enabling format: 97 colorspace: 1000104002
[HDR Layer] Enabling format: 97 colorspace: 1000104005
[HDR Layer] Enabling format: 64 colorspace: 1000104008
[HDR Layer] Enabling format: 58 colorspace: 1000104008
[HDR Layer] Enabling format: 97 colorspace: 1000104002
[HDR Layer] Enabling format: 97 colorspace: 1000104005
[HDR Layer] Creating swapchain for id: 37 - format: VK_FORMAT_A2B10G10R10_UNORM_PACK32 - colorspace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
[HDR Layer] VkHdrMetadataEXT: mastering luminance min 0.000000 nits, max 10000000.000000 nits
[HDR Layer] VkHdrMetadataEXT: maxContentLightLevel 0.000000 nits
[HDR Layer] VkHdrMetadataEXT: maxFrameAverageLightLevel 0.000000 nits
[HDR Layer] VkHdrMetadataEXT: mastering luminance min 0.000000 nits, max 10000000.000000 nits
[HDR Layer] VkHdrMetadataEXT: maxContentLightLevel 0.000000 nits
[HDR Layer] VkHdrMetadataEXT: maxFrameAverageLightLevel 0.000000 nits
[HDR Layer] Enabling format: 64 colorspace: 1000104008
[HDR Layer] Enabling format: 58 colorspace: 1000104008
[HDR Layer] Enabling format: 97 colorspace: 1000104002
[HDR Layer] Enabling format: 97 colorspace: 1000104005
[HDR Layer] Enabling format: 64 colorspace: 1000104008
[HDR Layer] Enabling format: 58 colorspace: 1000104008
[HDR Layer] Enabling format: 97 colorspace: 1000104002
[HDR Layer] Enabling format: 97 colorspace: 1000104005
[HDR Layer] Creating swapchain for id: 37 - format: VK_FORMAT_A2B10G10R10_UNORM_PACK32 - colorspace: VK_COLOR_SPACE_HDR10_ST2084_EXT
[HDR Layer] VkHdrMetadataEXT: mastering luminance min 0.000000 nits, max 10000000.000000 nits
[HDR Layer] VkHdrMetadataEXT: maxContentLightLevel 0.000000 nits
[HDR Layer] VkHdrMetadataEXT: maxFrameAverageLightLevel 0.000000 nits
Comment 1 Vlad Zahorodnii 2025-02-17 14:18:44 UTC
Can you please clarify what you mean exactly by configuring the white point?
Comment 2 bugreports61 2025-02-17 15:33:41 UTC
(In reply to Vlad Zahorodnii from comment #1)
> Can you please clarify what you mean exactly by configuring the white point?

There is an option in game to configure the whitepoint. You adjust a slider so that a white skull infront of a white background is barely visible. I did that on 6.2 and the value which was choosen was 950 (which somehow matches my displays max nits).

Now i have no way to adjust the slider so that this works at all. The white sull will always be fully visible, no matter what i do with the slider.

HDR simply does not work fin4 anymore as it seems. You notice that already when the game starts that the white lettering on black ground simply does not pop out anymore.

I tried to downgrade kwin to 6.2.x, but only go a black screen (even sddm did not work).


Br
Comment 3 Zamundaaa 2025-02-18 16:01:29 UTC
(In reply to bugreports61 from comment #0)
> My settings in display settings:
> 
> Max SDR Brightness: 100
> Brightness: 40
That's pretty dark, resulting in a reference luminance of 43 cd/m². It is expected that games will be rather dark with that.

> Sadly i don't know how the Brightness slide interacts with my monitor. In
> HDR mode the monitor locks the brightness setting, but still using that
> display setting brightness sliders changes display brightness ?
> 
> I honestly dislike having that setting at all , as changing things there do
> not get reflected in the monitors brightness settings. Same in sdr mode.
It doesn't interact with the monitor at all, because the vast majority of displays indeed lock their internal controls in HDR mode.
The setting configures paper white for both SDR and HDR content.

> [HDR Layer] VkHdrMetadataEXT: mastering luminance min 0.000000 nits, max 10000000.000000 nits
That's suspicious, and might be causing the problem.
When HDR metadata is completely nonsensical like that, KWin just ignores it. Brightness of the game will be limited to SDR levels, causing this issue.
This logic isn't new at all, but maybe the new brightness logic makes its effect more obvious.

If you put KWIN_DISABLE_TONEMAPPING=1 into /etc/environment and reboot, does it work more like expected then?
Comment 4 Bug Janitor Service 2025-02-18 16:03:37 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/7186
Comment 5 Zamundaaa 2025-02-18 16:29:28 UTC
Git commit 218055e215f8f3ec027682235ec31b5f17b305b7 by Xaver Hugl.
Committed on 18/02/2025 at 16:02.
Pushed by zamundaaa into branch 'master'.

wayland: make the fallback for broken HDR metadata less strict

If no HDR metadata is available at all, we assume that the application only emits
SDR levels - as specified by the Wayland protocol.
Because of that, resetting the HDR metadata entirely when it's nonsensical causes
luminance levels to be clipped to SDR for many broken games. This commit changes
the fallback to use luminance levels for HGIG Category 2 displays instead
(600 cd/m² max average, 1000 cd/m² max peak) which are pretty common.

M  +12   -11   src/wayland/colormanagement_v1.cpp
M  +6    -1    src/wayland/frog_colormanagement_v1.cpp

https://invent.kde.org/plasma/kwin/-/commit/218055e215f8f3ec027682235ec31b5f17b305b7
Comment 6 Zamundaaa 2025-02-18 17:03:00 UTC
Git commit 43504c9c389218b3ed9fa9dcc8d1e4fe10f4b037 by Xaver Hugl.
Committed on 18/02/2025 at 16:29.
Pushed by zamundaaa into branch 'Plasma/6.3'.

wayland: make the fallback for broken HDR metadata less strict

If no HDR metadata is available at all, we assume that the application only emits
SDR levels - as specified by the Wayland protocol.
Because of that, resetting the HDR metadata entirely when it's nonsensical causes
luminance levels to be clipped to SDR for many broken games. This commit changes
the fallback to use luminance levels for HGIG Category 2 displays instead
(600 cd/m² max average, 1000 cd/m² max peak) which are pretty common.


(cherry picked from commit 218055e215f8f3ec027682235ec31b5f17b305b7)

Co-authored-by: Xaver Hugl <xaver.hugl@gmail.com>

M  +12   -11   src/wayland/colormanagement_v1.cpp
M  +6    -1    src/wayland/frog_colormanagement_v1.cpp

https://invent.kde.org/plasma/kwin/-/commit/43504c9c389218b3ed9fa9dcc8d1e4fe10f4b037
Comment 7 bugreports61 2025-02-18 17:50:52 UTC
(In reply to Zamundaaa from comment #3)
> (In reply to bugreports61 from comment #0)
> > My settings in display settings:
> > 
> > Max SDR Brightness: 100
> > Brightness: 40
> That's pretty dark, resulting in a reference luminance of 43 cd/m². It is
> expected that games will be rather dark with that.

My goal is that the monitor is running at 100 nits. It has a max fullscreen luminance of 250 nits.
So u have to set Max SDR Brightness to 250 and the the Brightness at 40 to achieve that goal ?

In addition, what is the brightness slider doing when the monitor is running in sdr mode ?
Cause changing the brightness slider there does also not adjust it on the monitor settings. How is that interacting ?

I have to mention i have the following in the powerdevil service file (was a recommendation for an older kde bug):

[Service]
Environment="POWERDEVIL_NO_DDCUTIL=1"

> 
> > Sadly i don't know how the Brightness slide interacts with my monitor. In
> > HDR mode the monitor locks the brightness setting, but still using that
> > display setting brightness sliders changes display brightness ?
> > 
> > I honestly dislike having that setting at all , as changing things there do
> > not get reflected in the monitors brightness settings. Same in sdr mode.
> It doesn't interact with the monitor at all, because the vast majority of
> displays indeed lock their internal controls in HDR mode.
> The setting configures paper white for both SDR and HDR content.
>
So how can it make the picture brighter without telling the monitor to do so ? (sorry for dumb questions, i am a noob in that regard)

 
> > [HDR Layer] VkHdrMetadataEXT: mastering luminance min 0.000000 nits, max 10000000.000000 nits
> That's suspicious, and might be causing the problem.
> When HDR metadata is completely nonsensical like that, KWin just ignores it.
> Brightness of the game will be limited to SDR levels, causing this issue.
> This logic isn't new at all, but maybe the new brightness logic makes its
> effect more obvious.
> 
> If you put KWIN_DISABLE_TONEMAPPING=1 into /etc/environment and reboot, does
> it work more like expected then?
No, this does not help that time.

It worked last time to fix a hdr issue in 6.2 before you applied a fix, see here: https://bugs.kde.org/show_bug.cgi?id=494502
Comment 8 bugreports61 2025-02-18 17:53:02 UTC
And on addition info: Downgrading to kwin 6.2.5 with also downgrading kdecorations (kwin_wayland for kwin 6.2.5 needed an older kdecoration lib) fixes the issues, i am fully able to set the whitepoint again with the slider.
Comment 9 bugreports61 2025-02-20 20:17:23 UTC
In addition to my other questions, as its mentioned to be fixed, when will the fix land ?
Comment 10 Nate Graham 2025-02-26 17:58:47 UTC
In Plasma 6.3.2, as is written in the "version fixed in" text field.
Comment 11 bugreports61 2025-03-01 11:16:09 UTC
(In reply to Nate Graham from comment #10)
> In Plasma 6.3.2, as is written in the "version fixed in" text field.

The time i asked this question it was not written there, it was added afterwards .

As 6.3.2 showed up today i did a retest:

My monitor is that one:
https://www.rtings.com/monitor/reviews/dell/alienware-aw3423dwf

KDE Setting:

Max SDR Brightness: 250
Brightness: 40

Situation with Plasma 6.2:

I could set the brightness of my monitor to my preferred value (40% of ~250 nits max fullscreen brightness) and was able to adjust the whitepoint setting in game (dead island 2) which mentioned 950 (which is basically matching the monitors 2% sustained peak brightness).

Situation with Plasma 6.3.2:

As long as i keep my  brightness value to 40%, the in game whitepoint setting needs to be adjust to ~ 1950.
To achieve basically the same situation like it was in 6.2 i have to set the brightness to 80% which sadly causes the ABL to jump in.
In addition i have to constantly change the brightness between desktop and games cause 80% is simply why to bright for me in desktop usage. This was not the case in 6.2 and is simply not acceptable imo.

Therefore a few questions show up:

1. Is this intended behaviour (i was reading in another issue that brightness needs to be  set to 203 nits (which would match with the 80% of 250) so that hdr works correctly with expected brightness ? ) ?
2. Why did the situation change so much between 6.2 and 6.3 ? Imo hdr in 6.2 worked perfectly fine already. ?
3. Is there anything that can be done to improve the situation ?

As HDR is constantly changing in KDE, it would be heavily appreciated to get some explanation on how it works and how settings need to be done based on monitor values to achieve the best possible outcome.

Many thx !
Comment 12 Zamundaaa 2025-03-05 00:24:30 UTC
> In addition i have to constantly change the brightness between desktop and games cause 80% is simply why to bright for me in desktop usage. This was not the case in 6.2 and is simply not acceptable imo.
You need to configure the games to fit for the changed brightness capabilities of what they see as the monitor, not the desktop.

> Is this intended behaviour
Yes. Brightness of all content is adjusted to match the reference luminance / SDR brightness level.

> Why did the situation change so much between 6.2 and 6.3 ? Imo hdr in 6.2 worked perfectly fine already?
It worked OK for games, but not for other applications. This change indeed made things a bit more confusing for Windows games, but there isn't a lot we can do about that without making things painful for native Linux applications that want to make use of HDR.

> Is there anything that can be done to improve the situation?
Godot's HDR support will work well with Wayland and not need you to calibrate stuff per game, and I hope more game engines follow that example (as they probably already do the same thing on MacOS)... but for existing Windows games, you just have to configure them to values that work for your situation.
Comment 13 bugreports61 2026-02-19 17:12:04 UTC
Hi,

sadly with the upgrade to kwin 6.6 the same issue showed up again.

I have set the following in the hdr setup tool:

1. Max peak brightness 940
2. Max overall brightness 250
3. Brightness: 250

Setting the option:

Asume hdr applications are calibrated for that screen to off or on does not make a difference.


Many thx !
Pingubot
Comment 14 Jakub 2026-02-19 18:42:14 UTC
I can also confirm that after 6.6 HDR is broken (on intel+NVIDIA at least):

Note that 1 and 2 run on Intel while 3 (games) run on NVIDIA

1. Chromium does not support anymore. Any tests online do not work and videos on yotube have bt709. Display info from chromium:
So technically primaries are HDR but transfer is gamma22? And 8 bits per pixel?

2. Firefox does not support HDR without forcibly enabling it.
If just `gfx.wayland.hdr` is on, hdr *does not work, but it used to*
If `gfx.wayland.hdr.force-enabled` is on, then hdr does work

3. Games run on NVIDIA via Proton do see HDR and work correctly

==== SYSTEM INFO ===

Operating System: Fedora Linux 43
KDE Plasma Version: 6.6.0
KDE Frameworks Version: 6.23.0
Qt Version: 6.10.1
Kernel Version: 6.18.10-200.fc43.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 16 × 12th Gen Intel® Core™ i7-12650H
Memory: 32 GiB of RAM (31.0 GiB usable)
Graphics Processor 1: Intel® Graphics
Graphics Processor 2: NVIDIA GeForce RTX 3060 Laptop GPU
Manufacturer: ASUSTeK COMPUTER INC.
Product Name: Vivobook_ASUSLaptop N7601ZM_N7601ZM
System Version: 1.0

=== KSCREEN DOCTOR INFO ===

Output: 1 eDP-1 ece136f5-6f86-4693-86ff-33ed630b546e
        enabled
        connected
        priority 1
        Panel
        replication source:0
        Modes:  1:3840x2400@60.00*!  2:1600x1200@59.87  3:1280x1024@59.90  4:1024x768@59.92  5:2560x1600@59.99  6:1920x1200@59.88  7:1280x800@59.81  8:3840x2160@59.98  9:3200x1800@59.96  10:2880x1620@59.96  11:2560x1440@59.96  12:1920x1080@59.96  13:1600x900@59.95  14:1368x768@59.88  15:1280x720@59.85 
        Custom modes: None
        Geometry: 0,0 1536x960
        Scale: 2.5
        Rotation: 1
        Overscan: 0
        Vrr: incapable
        RgbRange: Automatic
        HDR: enabled
                SDR brightness: 600 nits
                SDR gamut wideness: 80%
                Peak brightness: 600 nits, overridden with: 600 nits
                Max average brightness: 590 nits, overridden with: 590 nits
                Min brightness: 0.0046 nits
        Wide Color Gamut: enabled
        ICC profile: none
        Color profile source: sRGB
        Color power preference: prefer efficiency and performance
        Brightness control: supported, set to 100% and dimming to 100%
        Color resolution: automatic (10), range: [6; 12] bits per color
        Allow EDR: always
        Sharpness control: unsupported
        Automatic brightness: unsupported

=== CHROMIUM DISPLAY INFO ===

Display(s) Information
======================
Info                          : Display[64] bounds=[0,0 1536x960], workarea=[0,0 1536x960], scale=2.5, rotation=0, panel_rotation=0 external detected
Color space (all)             : {primaries:BT2020, transfer:GAMMA22, matrix:RGB, range:FULL}
Buffer format (all)           : RGBA_8888
Color volume                  : {name:'rec2020', r:[0.7080, 0.2920], g:[0.1700, 0.7970], b:[0.1310, 0.0460], w:[0.3127, 0.3290]}
SDR white level in nits       : 600
HDR relative maximum luminance: 1
Bits per color component      : 8
Bits per pixel                : 24
Comment 15 bugreports61 2026-02-19 19:16:02 UTC
Hi,

one additional info from my side:

When setting KWIN_DISABLE_TONEMAPPING=1 i am able to at least somehow use the ingame slider to set max peak brightness.
But sadly it does not work correctly. I should be able to set peak brightness up to 940 (this worked fine in the past with the in game testpicture). If i set the whitepoint via the ingame slider the test picture shows it is a value of 750 instead of 940nits.

The issue with the 750nits instead of 940nits is already in 6.5.5 . 

Br,
Pingubot
Comment 16 Zamundaaa 2026-03-18 17:23:01 UTC
> Asume hdr applications are calibrated for that screen to off or on does not make a difference.
Un-checking that option doesn't remove the previous calibration.
If you want to remove it, or modify it, you can do so in ~/.config/kwinrc (the Windows_HDR section). For scRGB games, Reference was previously assumed to be 80, for PQ, it was 203.

If the values are not set, KWin defaults to
Reference=203
MaxFrameAverage=600
MaxLuminance=1000

(you may need to restart kwin to apply the new values, I don't remember which command can be used to make it re-load the config)

(In reply to Jakub from comment #14)
> I can also confirm that after 6.6 HDR is broken (on intel+NVIDIA at least):
> 
> Note that 1 and 2 run on Intel while 3 (games) run on NVIDIA
> 
> 1. Chromium does not support anymore. Any tests online do not work and
> videos on yotube have bt709. Display info from chromium:
> So technically primaries are HDR but transfer is gamma22? And 8 bits per
> pixel?.
> 2. Firefox does not support HDR without forcibly enabling it.
> If just `gfx.wayland.hdr` is on, hdr *does not work, but it used to*
> If `gfx.wayland.hdr.force-enabled` is on, then hdr does work
You've set your display so that reference / SDR luminance is the same as peak luminance. In other words, your display settings make it SDR, so the browsers don't bother loading HDR videos.

> 3. Games run on NVIDIA via Proton do see HDR and work correctly
Nvidia doesn't support HDR in its Vulkan driver, you need to do additional setup to work around it. Using gamescope is probably the easiest way to do it.
Comment 17 Jakub 2026-03-19 08:11:44 UTC
Reconfiguring my peak luminance to != reference luminance did work, thanks a lot! That's obviously an issue on my end, but maybe putting some warning/note would be a nice idea - I am confident that setting peak luminance == reference luminance (I did not change my settings) was still triggering browsers to display the HDR video in kwin 6.5.x (even if it technically did not make sense).

As for the 3., I think the 595 will support, but even with 580 with Proton-GE and PROTON_ENABLE_HDR=1 games did show the HDR option and it did look different with it on (and it looked semi-correct, but in 6.5 it looked completly broken), altough I did not verify if the colors are really HDR or only pretend to be. Thanks nevertheless!

For me, the issues are solved.