[SOLVED] Color issues in Linux 6.9

Is someone experiencing something similar with Kernel 6.9? When compiling from source (using the config from 6.6.15 from Debian and otherwise setting defaults with make olddefconfig), I get a weird color issue: on USB power and on battery with performance mode activated from Gnome settings, everything looks fine, but when entering balanced - or worse, power saver - mode, everything kinda looks like the Gamma calibration is off or something like that. E.g. where I would see a light green background with white font in my webmailer (less than ideal combination, but usually still very well readable) the contrast seems to lessen within seconds of changing the power profile so the text becomes difficult to read and all in all, everything looks darker.

I’m on Debian Testing with gnome-shell 46.2 from experimental. This doesn’t happen with any older Kernel branches, but consistently happens with 6.9-6.9.3. The question is, where would be the best place to report this issue, so a fix can be upstreamed before Debian catches up to 6.9 and I can report it there - but also since it’s an upstream issue it’s questionable if it’s the right place.

I’ve taken some photos for showcasing, though it might be a bit difficult to judge from them:
Normal view with Performance mode:
https://imgur.com/a/2dD0biL

With powersave mode:
https://imgur.com/a/fWqzEfD

This is ABM, it automatically adjusts contrast and brightness to save some power.

If you don’t like it there are multiple ways to disable it.

  • amdgpu.abmlevel=0 on kernel command line
  • Disable the amdgpu panel power action in power profiles daemon systemd unit.
3 Likes

Thanks, I’ll try that out.

That worked, thanks.

Would cranking the brightness up during situations where this is detrimental be a temporary work around? For me it’s only noticeable

  1. In YouTube videos
  2. On the Framework Community Forums orange banner

All other content is more or less unaffected as far as I can tell.

Obviously I can test if this works empirically, but I’m interested if changing the brightness according to the way the tech works, is supposed to do that. E.g. will the contrast auto-adjust along with the brightness.

Update: A more convenient workaround seems to be just going into performance mode when I want to watch YouTube, which would explain why I don’t have the behavior while plugged in because I have it configured to auto-switch.

At least that doesn’t change anything for me, as not only the brightness decreases, but also contrast - that’s why my guess is, that the gamma curve is being affected by this setting, as that’s typical behavior for that. And sadly not all content - especially web content - is sufficiently high contrast that this wouldn’t matter.

Yes if you crank the brightness up you negate the effects.

Funny enough I was working on the series that allows the compositor to opt out of it and I couldn’t figure out why it wasn’t working.

It’s because my brightness was at max already :slight_smile:

https://lore.kernel.org/dri-devel/20240703051722.328-1-mario.limonciello@amd.com/

2 Likes

Having a better understanding of how this feature is working has brought me a small, but noticeable, amount of inner peace. Thanks for making the world an incrementally better place by sharing :slight_smile:

I have no clue if this is a framework firmware issue or a linux issue or something in-between. But I am having really weird color behavior right now and I was wondering if anyone can reproduce this.

Basically: as soon as the device is running on battery, its color reproduction goes nuts. The device loses some brightness, and I can understand this, but it also loses most color contrast.

Especially dark colors will become really bright, rendering white text on colorful background difficult to read. Sometimes this even makes my own speech bubbles in telegram illegible. When it is really bad, all the colors seem blown-out as if I was taking an over-exposed picture.

But as soon as I plug in a power brick, the dark colors are actually dark again and everything looks fine. Also the display becomes a bit brighter.

I do a lot of color critical work and stuff like this is a bit scary to me … so help would be highly appreciated.

Operating System: NixOS 24.11
KDE Plasma Version: 6.1.0
KDE Frameworks Version: 6.3.0
Qt Version: 6.7.1
Kernel Version: 6.9.5 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 7840HS w/ Radeon 780M Graphics
Memory: 30.7 GiB of RAM
Graphics Processor: AMD Radeon Graphics

2 Likes

I am also experiencing this but mainly trying to get my power usage down at the moment

I’m on Kubuntu/KDE, kernel 6.9.3

I believe I’ve managed to fix it following this from Mario. The issue is automatic contrast and brightness adjustment, the settings for which dont appear to show up in the KDE settings (though IIRC do show up in the base Ubuntu / gnome settings menu)

In essence, I added amdgpu.abmlevel=0 to my command line parameters to disable it

1 Like

Thanks!

I’ve been noticing this on Arch/Plasma as well and thought I was going nuts.

This thread should probably be merged with the other one.

I had the same problem, thanks OP for asking that question again!

1 Like

I double checked the Linux Kernel documentation, and it’s documented as disabled by default. I recall @Mario_Limonciello may have mentioned that this may be changing to enabled in a kernel version (6.8/6.9?). Is this documentation out of date then?

abmlevel (uint)

Override the default ABM (Adaptive Backlight Management) level used for DC enabled hardware. Requires DMCU to be supported and loaded. Valid levels are 0-4. A value of 0 indicates that ABM should be disabled by default. Values 1-4 control the maximum allowable brightness reduction via the ABM algorithm, with 1 being the least reduction and 4 being the most reduction.

Defaults to -1, or disabled. Userspace can only override this level after boot if it’s set to auto.

This doc also appears to indicate that both 0 and -1 represent disabled.

https://docs.kernel.org/gpu/amdgpu/module-parameters.html

Edit: I believe this is the thread I was referencing | Adaptive Backlight Management (ABM) - #54 by Mario_Limonciello

-1 is userspace control. 0 is disabled.

3 Likes

Ah, so -1 is what enables ppd to control it from userspace. PPD can then be configured to ignore it (the now non-default behavior as of I believe version 0.2), hence the systemctl unit configuration option. Alternatively, it abm can be disabled entirely at the kernel level with 0 and it’s no longer a feature for ppd or other userspace applications to even mess with.

Assuming what I said correctly interprets what you said, I have a much better understanding now. Thanks!

Yup you got it spot on.

The third way to disable it is the series I posted, but the compositor will need to add a knob for it.

Kde has it prototyped.

2 Likes

I added amdgpu.abmlevel=0 to my grub commandline but the screen still changes color when switching between energy saving and performance mode while running on battery.
Kernel 6.9.1-060901-generic

Anything I may have done wrong?

Perhaps you forgot to run update-grub.

1 Like

Exactly what I meant with it looks like the Gamma curve is off in this mode. And I even have set a color profile in Gnome Settings, so all necessary information for accurate color information should be present, but it all just goes nuts. So yeah, as long as this isn’t being done properly, better turn that mode off, it harms more than it helps.