Bug 496991 - Display brightness too low with HDR
Summary: Display brightness too low with HDR
Status: RESOLVED UPSTREAM
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: 6.2.4
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-12-03 15:41 UTC by Akhil K
Modified: 2025-03-19 15:31 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Monitor EDID (2.42 KB, text/plain)
2024-12-03 15:41 UTC, Akhil K
Details
drm_info complete output (325.54 KB, text/plain)
2024-12-17 05:54 UTC, Akhil K
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Akhil K 2024-12-03 15:41:43 UTC
Created attachment 176324 [details]
Monitor EDID

SUMMARY
Screen brightness is too low even at max brightness when HDR is enabled.
I don't have an exact value but, here is what I tried:
1. Windows (HDR on & off) -> can read the display content comfortably under sunlight
2. Plasma with HDR off -> can read the display content comfortably under sunlight
3. Plasma with HDR on -> can't read the display content even in a brightly lit room.

I also tried HDR videos with MPV.
1. With HDR enabled, dark scenes are too dark with no details.
2. With HDR disabled, dark scenes are viewable 
3. On windows, dark scenes are viewable with both HDR on or off

** When HDR is disabled in Plasma, I'm using the built-in color profile
** My GPU is intel UHD iGPU

STEPS TO REPRODUCE
1. Enable HDR in settings
2. Set SDR brightness to maximum and brightness to maximum -> notice the max brightness
3. Disable HDR in settings
4. Set brightness to maximum -> notice the max brightness

OBSERVED RESULT
1. Brightness when HDR enabled is too low.
2. HDR videos played in MPV with dark scenes look black.

EXPECTED RESULT
1. Brightness with HDR enabled or disabled to be similar

SOFTWARE/OS VERSIONS
Windows: Version 24H2 (OS Build 26100.2454)
Linux/KDE Plasma: Arch Linux
KDE Plasma Version: 6.2.4
KDE Frameworks Version: 6.9.0
Qt Version: 6.8.0

ADDITIONAL INFORMATION
I'm attaching my display EDID if that helps.
Comment 1 Zamundaaa 2024-12-04 09:39:51 UTC
Please attach the output of
> kscreen-doctor -o
when HDR is enabled
Comment 2 Akhil K 2024-12-05 10:04:26 UTC
(In reply to Zamundaaa from comment #1)
> Please attach the output of
> > kscreen-doctor -o
> when HDR is enabled

Here is the output with HDR enabled:
Output: 1 eDP-1
        enabled
        connected
        priority 1
        Panel
        Modes:  1:2560x1600@240*!  2:2560x1600@60  3:1600x1200@60  4:1280x1024@60  5:1024x768@60  6:2560x1600@60  7:1920x1200@60  8:1280x800@60  9:2560x1440@60  10:1920x1080@60  11:1600x900@60  12:1368x768@60  13:1280x720@60 
        Geometry: 0,0 1707x1067
        Scale: 1.5
        Rotation: 1
        Overscan: 0
        Vrr: Never
        RgbRange: Automatic
        HDR: enabled
                SDR brightness: 1261 nits
                SDR gamut wideness: 100%
                Peak brightness: 1261 nits
                Max average brightness: 604 nits
                Min brightness: 0.0496 nits
        Wide Color Gamut: enabled
        ICC profile: none
        Color profile source: sRGB
        Brightness control: supported, set to 100%
Comment 3 Zamundaaa 2024-12-16 16:18:04 UTC
hmm, that's weird. If you reduce the SDR brightness to something more normal (like 500 or 600 nits), does it get even dimmer, or does the display somehow compensate for the average brightness level?
Comment 4 Zamundaaa 2024-12-16 16:18:48 UTC
Also, please attach the output of drm_info when HDR is enabled, I wonder what HDR metadata we're sending the screen
Comment 5 Akhil K 2024-12-17 05:54:53 UTC
Created attachment 176703 [details]
drm_info complete output

(In reply to Zamundaaa from comment #3)
> hmm, that's weird. If you reduce the SDR brightness to something more normal
> (like 500 or 600 nits), does it get even dimmer, or does the display somehow
> compensate for the average brightness level?

I gets dimmer. SDR brightness range for me is 50 - 1261 nits. I tried in increments of 100 and I can see the brightness change

(In reply to Zamundaaa from comment #4)
> Also, please attach the output of drm_info when HDR is enabled, I wonder
> what HDR metadata we're sending the screen

Here is the HDR metadata section from drm_info:
│   │       ├───"HDR_OUTPUT_METADATA": blob = 288
│   │       │   ├───Type: Static Metadata Type 1
│   │       │   ├───EOTF: SMPTE ST 2084 (PQ)
│   │       │   ├───Display primaries:
│   │       │   │   ├───Red: (0.6816, 0.3164)
│   │       │   │   ├───Green: (0.2627, 0.6895)
│   │       │   │   └───Blue: (0.1426, 0.0488)
│   │       │   ├───White point: (0.3115, 0.3408)
│   │       │   ├───Max display mastering luminance: 604 cd/m²
│   │       │   ├───Min display mastering luminance: 0.0496 cd/m²
│   │       │   ├───Max content light level: 604 cd/m²
│   │       │   └───Max frame average light level: 604 cd/m²
│   │       └───"vrr_capable" (immutable): range [0, 1] = 1

Added the complete output of drm_info as an attachment. Not sure but, shouldn't Max display mastering luminance be 1261?
Comment 6 Zamundaaa 2024-12-18 00:22:18 UTC
> Not sure but, shouldn't Max display mastering luminance be 1261?
In theory, yes. In practice, I had this very issue of my monitor being too dim until I set the max brightness to the max. average instead of the max. peak brightness...

I see two reasons for why this could be happening:
1. your monitor takes issue with the HDR metadata we send it. If you use gamescope on a tty, you might be able to play with different HDR metdata to figure this one out. We should probably allow configuring the HDR metadata we send to the screen for testing such cases as well.
2. the Intel kernel driver is still broken when it comes to handling the Colorspace property, and your monitor is one of the many that don't actually enable HDR unless that works properly. If your screen has an OSD where it shows whether or not HDR is enabled, please check that, and if you have another device with an AMD or NVidia GPU, you could check with that as well.

For testing 2, if you're willing to compile KWin, you could also try changing BT2020_RGB in https://invent.kde.org/plasma/kwin/-/blob/Plasma/6.2/src/backends/drm/drm_pipeline.cpp?ref_type=heads#L300 to BT2020_YCC
Comment 7 Akhil K 2024-12-19 05:44:37 UTC
(In reply to Zamundaaa from comment #6)
> 2. the Intel kernel driver is still broken when it comes to handling the
> Colorspace property, and your monitor is one of the many that don't actually
> enable HDR unless that works properly. If your screen has an OSD where it
> shows whether or not HDR is enabled, please check that, and if you have
> another device with an AMD or NVidia GPU, you could check with that as well.

It's an laptop with hybrid GPU setup. So, there's no OSD to show if HDR is enabled. I do have a mux switch to connect the display to dGPU. Tried this and with Nvidia and it looks correct.
I don't have a measuring device but, I used a lightmeter app on my phone to check the brightness on both intel (~200 lux) and nvidia (~600 lux). So, I guess it's an intel issue then. Happens with both i915 and xe drivers

> For testing 2, if you're willing to compile KWin, you could also try
> changing BT2020_RGB in
> https://invent.kde.org/plasma/kwin/-/blob/Plasma/6.2/src/backends/drm/
> drm_pipeline.cpp?ref_type=heads#L300 to BT2020_YCC

I think my screen doesn't support BT2020_YCC according to EDID.
CE colorimetry data
  xvYCC601 support......... No
  xvYCC709 support......... No
  sYCC601 support.......... No
  AdobeYCC601 support...... No
  AdobeRGB support......... No
  BT2020CYCC support....... No
  BT2020YCC support........ No
  BT2020RGB support........ Yes
  Metadata profile flags... 0x80
Comment 8 Bug Janitor Service 2025-01-03 03:47:35 UTC
🐛🧹 ⚠️ This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information, then set the bug status to REPORTED. If there is no change for at least 30 days, it will be automatically closed as RESOLVED WORKSFORME.

For more information about our bug triaging procedures, please read https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging.

Thank you for helping us make KDE software even better for everyone!
Comment 9 Akhil K 2025-01-03 05:26:40 UTC
(In reply to Akhil K from comment #7)
> 
> It's an laptop with hybrid GPU setup. So, there's no OSD to show if HDR is
> enabled. I do have a mux switch to connect the display to dGPU. Tried this
> and with Nvidia and it looks correct.
> I don't have a measuring device but, I used a lightmeter app on my phone to
> check the brightness on both intel (~200 lux) and nvidia (~600 lux). So, I
> guess it's an intel issue then. Happens with both i915 and xe drivers
> 
Looks like an Intel driver issue, so is it okay to close this?
Comment 10 Zamundaaa 2025-01-13 22:40:37 UTC
Yeah, let's close it
Comment 11 Kimiblock Moe 2025-03-19 15:31:26 UTC
I'm not very sure what's the root cause. But on GNOME I have a HDR Brightness (called Luminances in gdctl) slider, which at max kinda solves the low brightness problem for me...

gdctl show:

```
➜  ~ gdctl show
Monitors:
└──Monitor eDP-1 (Built-in display)
   ├──Vendor: BOE
   ├──Product: 0x0c8b
   ├──Serial: 0x00000068
   ├──Current mode
   │   └──2560x1600@240.000+vrr
   └──Preferences:
       └──Luminances:
           ├──default ⇒  100.0 (default)
           └──bt2100 ⇒  190.0 (current)
```