High color depth (> 8bpc) images do not display correctly as wallpapers

Hi all,

I have a monitor that is capable of displaying 30-bit color (10 bpc). I have been having trouble actually using that feature in various applications (details in the Ask Fedora thread at the bottom), but I’m going to focus on wallpapers here.

When an image with greater than 8 bits per channel (bpc) color depth is set as the desktop wallpaper, notable color banding appears as if the image is not being displayed at high color depth. Such images are displayed correctly by GNOME Image Viewer on Wayland.

Any insight or further troubleshooting suggestions would be appreciated. It would be especially helpful to know what GNOME component(s) is/are relevant so I can go to the corresponding issue tracker(s). Thanks!

Steps to Reproduce:

A display supporting 10 bits per channel color depth (30-bit total) or greater is required.

  1. Open GNOME Settings.
  2. In “Appearance”, use “Add Picture…” to set the wallpaper to the gradient image created by jursonovicst. Observe the color banding in the different gradients.
  3. Set the wallpaper to the 16 bpc sphere volume render that I made & posted on the Blender Artists forum. Observe the color banding or lack thereof.
  4. Set the wallpaper to the 8 bpc sphere volume render. Compare the color banding shown to that of the 16 bpc version.

Actual Results:

  • jursonovicst’s gradient displays equivalent color banding between 8-bit and 10-bit gradients.
  • Sphere render shows more noticable color banding in the 16 bpc version vs. the 8 bpc version.

Expected Results:

  • jursonovicst’s gradient should show less noticable color banding in the 10-bit gradients.
  • Sphere render should show less noticable color banding in the 16 bpc version vs. the 8 bpc version.

System Specifications

Operating System: Fedora 40 Workstation Edition
GNOME version: 46
Monitor: Acer ET322QK wmiipx (connected via DisplayPort)
Graphics card: Radeon RX 5700 XT

Related Threads

Ask Fedora: Colors with depths > 8bpc are not displayed correctly (except maybe in GNOME image viewer?)
Blender Artists (relevant images & project files): Reference images (empties) with >8bpc color depth show unexpected banding

Image Viewer (Loupe) uses glycin to load images. That’s a new library to decode images. It was developed initially for safer and better image loading in Image Viewer.

Gnome Shell uses Mutter to load images which in turn uses GdkPixbuf, what the previous image viewer (Eye of GNOME / eog) also used. Here is where the file gets loaded in Mutter: src/compositor/meta-background-image.c · main · GNOME / mutter · GitLab

IDK a lot about this but for the >8 bpc image problem the cause could be with how GdkPixbuf loads files, or if that supports >8 bpc images fine the cause could be with how Mutter displays such images. I’m not sure.

Perhaps one way to narrow down on that is to try those images also with the previous image viewer and compare (as that also uses GdkPixbuf to load images, same as Mutter uses). If that shows the same problem as in Gnome Shell, more likely it’s a GdkPixbuf issue. If that works fine same as the new Image Viewer (Loupe), more likely it’s a Mutter issue. The previous image viewer can still be installed on Fedora 40, the package name is eog.

1 Like

GdkPixbuf only supports 8 bits per color sample, and it won’t ever support more; this means that anything using GdkPixbuf to load images into a pixel buffer will only ever have access to 8 bpc for each pixel.