Skip to content

Washed out colors until HDR mode gets switched #1108

Description

@noel-personal

I have a weird issue with one of my monitors (MPG272UX OLED) where jay seems to not initialize it properly. The colors are always washed out on startup until I manually switch the HDR mode on the monitor (e.g. from HDR400 true black to HDR1000 or vise versa; mode doesn't matter). This happens in both HDR and SDR mode and changing settings in the control panel didn't help.

Here is a little video to show what I mean (entering from KDE login manager):

VID_20260718_230119.mp4

This is with the default color settings (SDR). The monitor would display HDR on the top right if HDR is enabled which is not the case here. Every application is affected (including native wayland apps and games running with PROTON_ENABLE_WAYLAND=1)

I do have a multi monitor setup involving my iGPU. The other monitors do not have that issue. I am still inexperienced with jay so hopefully it's not just a simple configuration issue.

EDID file: edid_mpg272UX.txt

Config file: jay_config.txt

jay randr:

drm devices:
  /dev/dri/card0:
    model: Advanced Micro Devices, Inc. [AMD/ATI] Raphael
    pci-id: 1002:164e
    syspath: /sys/devices/pci0000:00/0000:00:08.1/0000:13:00.0
    api: Vulkan
    primary device
    connectors:
      DP-3:
        disconnected
      DP-4:
        product: M27UA
        manufacturer: GBT
        serial number: 24220B002053
        physical size: 590mm x 330mm
        VRR capable: true
        VRR enabled: false
        VRR mode: never
        Tearing mode: variant3
        position: 5120 x 0
        logical size: 1440 x 2560
        mode: 3840 x 2160 @ 160.001
        scale: 1.5
        scaling filter: linear
        transform: rotate-90
        color spaces:
          default (current)
          bt2020
        eotfs:
          default (current)
          pq
        min brightness:     0.0008 cd/m^2
        max brightness:   486.0989 cd/m^2
        blend space: srgb
        native gamut: (used for default color space)
          red:  0.676758 0.311523 green: 0.274414 0.666992
          blue: 0.149414 0.047852 white: 0.312500 0.328125
      DP-5:
        disconnected
      HDMI-A-3:
        disconnected
  /dev/dri/card1:
    model: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900 GRE/7900M] (NITRO+ RX 7900 XTX Vapor-X)
    pci-id: 1002:744c
    syspath: /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/0000:02:00.0/0000:03:00.0
    api: Vulkan
    connectors:
      DP-1:
        product: MPG272UX OLED
        manufacturer: MSI
        serial number: 16843009
        physical size: 590mm x 330mm
        VRR capable: true
        VRR enabled: false
        VRR mode: variant1
        Tearing mode: variant3
        position: 0 x 876
        logical size: 2560 x 1440
        mode: 3840 x 2160 @ 240
        scale: 1.5
        scaling filter: linear
        flip margin: 3.659999ms
        color spaces:
          default (current)
          bt2020
        eotfs:
          default (current)
          pq
        min brightness:     0.0000 cd/m^2
        max brightness:   465.4899 cd/m^2
        blend space: srgb
        native gamut: (used for default color space)
          red:  0.683594 0.304688 green: 0.244141 0.708984
          blue: 0.143555 0.055664 white: 0.313477 0.329102
      DP-2:
        product: M27UP
        manufacturer: GBT
        serial number: 16843009
        physical size: 590mm x 330mm
        VRR capable: true
        VRR enabled: false
        VRR mode: never
        Tearing mode: variant3
        position: 2560 x 876
        logical size: 2560 x 1440
        mode: 3840 x 2160 @ 160
        scale: 1.5
        scaling filter: linear
        flip margin: 3.102294ms
        color spaces:
          default (current)
          bt2020
        eotfs:
          default (current)
          pq
        min brightness:     0.0001 cd/m^2
        max brightness:   445.7547 cd/m^2
        blend space: srgb
        native gamut: (used for default color space)
          red:  0.675781 0.315430 green: 0.278320 0.638672
          blue: 0.146484 0.049805 white: 0.313477 0.329102
      HDMI-A-1:
        disconnected
      HDMI-A-2:
        disconnected

Does the EDID change when you change the mode?

Yes

edid_hdr400.txt
edid_hdr1000.txt

14,15c14,15
< 67 02 4d 02 f0 00 00 00 00 00 00 e3 05 c0 01 e6
< 06 05 01 67 4d 02 56 5e 00 a0 a0 a0 29 50 30 20
---
> 8c 02 4d 02 f0 00 00 00 00 00 00 e3 05 c0 01 e6
> 06 05 01 8c 4d 02 56 5e 00 a0 a0 a0 29 50 30 20
19c19
< 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c6
---
> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7c
119,120c119,120
<     Maximum luminance: 103 (465.490 cd/m^2)
<     Minimum luminance: 2 (0.000 cd/m^2)
---
>     Maximum luminance: 140 (1037.472 cd/m^2)
>     Minimum luminance: 2 (0.001 cd/m^2)
132c132
<     Desired content max luminance: 103 (465.490 cd/m^2)
---
>     Desired content max luminance: 140 (1037.472 cd/m^2)
134c134
<     Desired content min luminance: 2 (0.000 cd/m^2)
---
>     Desired content min luminance: 2 (0.001 cd/m^2)
145c145
< Checksum: 0xc6  Unused space in Extension Block: 19 bytes
---
> Checksum: 0x7c  Unused space in Extension Block: 19 bytes

Does the behavior change when you restart Jay after the mode change?

No. Colors are always washed out on initial startup no matter which mode is used. Going from HDR400 to HDR1000 or from HDR1000 to HDR400 fixes the issue.

Here is how the logs look like on initial startup:

jay_logs_hdr400_preswitch.txt
jay_logs_hdr1000_preswitch.txt


Does Jay emit any logs when the mode changes?

Yes. I cleaned them up a bit because firefox crashes when I switch modes ^^

jay_logs_from_hdr400_to_hdr1000.txt
jay_logs_from_hdr1000_to_hdr400.txt

What image description is sent to clients in either mode?

Not really sure if I understand correctly. I found something using:
journalctl | grep 'color'

journalctl_logs_color.txt

Is this what you are looking for?


What does drm_info say in one mode and the other?

I noticed that the drm_info differs between initital startup and after switching:

jay_drm_info_hdr400.txt
jay_drm_info_hdr400_preswitch.txt
jay_drm_info_hdr1000.txt
jay_drm_info_hdr1000_preswitch.txt


Same for the other compositors you've tested.

Using KDE/kwin 6.7.3 I cannot observe those issues.

Running journaltctl -t kwin_wayland does not return anything useful from what I see.

I also tried running journalctl | grep -E "colormanagement|HDR|EDID" resulting in this:

Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00
Jul 19 13:56:23 skare-pc kernel: HDR SB:01 1a 02 00 84 85 82 3b af 2f 79 8a 0a 1c df 0a
Jul 19 13:56:23 skare-pc kernel: HDR SB:3a 3d 47 40 09 01 03 00 09 01 09 01 00 00 00 00

Is there something specifically you are looking for?

DRM info:
kde_drm_info_hdr400.txt
kde_drm_info_hdr1000.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions