Colors over saturated in umbriel #9

Closed
opened 2026-10-08 15:20:23 +00:00 by written9676 · 4 comments

Hey there, I like the new umbriel feature of window selection, however it seems to have a regression with hdr. Specifically, when hdr = on in umbriel config, screenshot colors will be very over saturated. If hdr gets turned off everything is fine. In aqueous this is not a problem FWIW.

Hey there, I like the new umbriel feature of window selection, however it seems to have a regression with hdr. Specifically, when `hdr = on` in umbriel config, screenshot colors will be very over saturated. If hdr gets turned off everything is fine. In aqueous this is not a problem FWIW.
Author
No description provided.
Owner

when hdr is on, umbriel reports the output as pq / bt.2020, but the 10-bit
buffer it hands back from screencopy holds the same sdr-encoded pixels it
gives you with hdr off. grabit assumes the capture is in the output's
encoding, so it decodes those pixels as pq and maps them from bt.2020 to
srgb. that crushes the shadows and blows out the saturation.

i confirmed it by running your hdr-off.png through grabit's tonemap as if it
were pq/bt.2020. it matches your hdr-on.png to within rounding.

no protocol says what encoding a capture buffer is in, so neither side is
breaking a rule here. hyprland hands pq to clients that bind the color
manager and srgb to everyone else, and wlroots copies the scanout buffer,
so grabit's assumption holds there. umbriel always hands back sdr.

either umbriel follows hyprland's convention for color-managed clients, or
grabit stops making that assumption on umbriel.

when hdr is on, umbriel reports the output as pq / bt.2020, but the 10-bit buffer it hands back from screencopy holds the same sdr-encoded pixels it gives you with hdr off. grabit assumes the capture is in the output's encoding, so it decodes those pixels as pq and maps them from bt.2020 to srgb. that crushes the shadows and blows out the saturation. i confirmed it by running your hdr-off.png through grabit's tonemap as if it were pq/bt.2020. it matches your hdr-on.png to within rounding. no protocol says what encoding a capture buffer is in, so neither side is breaking a rule here. hyprland hands pq to clients that bind the color manager and srgb to everyone else, and wlroots copies the scanout buffer, so grabit's assumption holds there. umbriel always hands back sdr. either umbriel follows hyprland's convention for color-managed clients, or grabit stops making that assumption on umbriel.
Author

So would this be something I bring to the umbriel devs to think about then?

So would this be something I bring to the umbriel devs to think about then?
Author

I talked to one of their devs and they pushed a fix. So, sorry for opening this here!

I talked to one of their devs and they pushed a fix. So, sorry for opening this here!
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
creations/grabit#9
No description provided.