Skip to content

An implementation bug in ACM/HDR #32

@Headcrabed

Description

@Headcrabed

The readme says that Windows SDK headers suppose a gamma 2.2 transfer (OUTPUT_WIRE_COLOR_SPACE_G22_P709) but experiments show that assuming an sRGB transfer function gives better average delta-E on verification (this may vary on GPU vendor). This is possibly due to Windows uses piecewise sRGB transfer function for sRGB contents, and this behavior is completely wrong according to sRGB spec.

In IEC 61966-2-1-1999 chapter 4.1 "Reference image display system characteristics", the specification requires the reference display to be calibrated to gamma 2.2 tone curve when directly displaying sRGB signal. So power 2.2 gamma curve should be applied rather than sRGB curve when converting sRGB content to linear scRGB blending space to accurately follow the spec behaivor. And we can see some display problems caused by this issue: https://github.com/dylanraga/win11hdr-srgb-to-gamma2.2-icm

I also created an issue at windows feedback hub, please give me an approve ticket, this might be helpful to get this issue fixed: https://aka.ms/AAw09zz

Image

IEC 61966-2-1-1999.pdf

Some related discussions about this:
https://gitlab.freedesktop.org/pq/color-and-hdr/-/issues/30
https://gitlab.freedesktop.org/pq/color-and-hdr/-/issues/12
https://gitlab.freedesktop.org/pq/color-and-hdr/-/blob/main/doc/wayland_qa.md?ref_type=heads#q-should-srgb-content-be-decoded-with-the-piecewise-srgb-transfer-function

Btw, currently KDE Wayland + Linux would do the convert correctly for sRGB contents: https://discuss.kde.org/t/whats-the-transfer-function-for-sdr-content-under-hdr-mode/33259/3?u=stat_headcrabed

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions