Merge branch 'mr/nosrgbtf' into 'main'

staging/color-management: replace two-piece TF

See merge request wayland/wayland-protocols!442
This commit is contained in:
Pekka Paalanen 2025-12-12 10:51:15 +02:00
commit 0bf010f18b
2 changed files with 43 additions and 9 deletions

View file

@ -53,6 +53,22 @@ The above are specified by [ITU-R BT.1886].
Note, that $`E < 0`$ and $`E > 1`$ are possible with limited range Note, that $`E < 0`$ and $`E > 1`$ are possible with limited range
quantization, as required by e.g. the calibration method in [ITU-R BT.814]. quantization, as required by e.g. the calibration method in [ITU-R BT.814].
### `compound_power_2_4`
```math
O = \begin{cases}
\frac{E}{12.92}, & 0 \leq E < 0.04045\\
\left( \frac{E + 0.055}{1.055} \right)^{2.4}, & 0.04045 \leq E \leq 1
\end{cases}
```
The above is the IEC 61966-2-1 piece-wise transfer function,
as recorded in [Khronos Data Format Specification][KDFS] 1.4.0
Section 13.3, and restricted to the unit range.
```math
L = (L_W - L_B)O + L_B
```
### `gamma22` ### `gamma22`
@ -125,3 +141,4 @@ L = 10'000\ \mathrm{cd/m²} \cdot O + L_B
[ITU-R BT.814]: https://gitlab.freedesktop.org/pq/color-and-hdr/-/blob/main/doc/specs.md#itu-r-bt814 [ITU-R BT.814]: https://gitlab.freedesktop.org/pq/color-and-hdr/-/blob/main/doc/specs.md#itu-r-bt814
[ITU-R BT.1886]: https://gitlab.freedesktop.org/pq/color-and-hdr/-/blob/main/doc/specs.md#itu-r-bt1886 [ITU-R BT.1886]: https://gitlab.freedesktop.org/pq/color-and-hdr/-/blob/main/doc/specs.md#itu-r-bt1886
[ITU-R BT.2100]: https://gitlab.freedesktop.org/pq/color-and-hdr/-/blob/main/doc/specs.md#itu-r-bt2100 [ITU-R BT.2100]: https://gitlab.freedesktop.org/pq/color-and-hdr/-/blob/main/doc/specs.md#itu-r-bt2100
[KDFS]: https://registry.khronos.org/DataFormat/

View file

@ -288,8 +288,7 @@
- United States Federal Communications Commission (2003) Title 47 Code - United States Federal Communications Commission (2003) Title 47 Code
of Federal Regulations 73.682 (a) (20) of Federal Regulations 73.682 (a) (20)
- Rec. ITU-R BT.1700-0 625 PAL and 625 SECAM - Rec. ITU-R BT.1700-0 625 PAL and 625 SECAM
- IEC 61966-2-1 (reference display)
Note: an sRGB display (IEC 61966-2-1) uses this transfer function.
</description> </description>
</entry> </entry>
<entry name="gamma28" value="3"> <entry name="gamma28" value="3">
@ -326,18 +325,18 @@
- IEC 61966-2-4 - IEC 61966-2-4
</description> </description>
</entry> </entry>
<entry name="srgb" value="9"> <entry name="srgb" value="9" deprecated-since="2">
<description summary="sRGB piece-wise transfer function"> <description summary="Deprecated (ambiguous sRGB transfer function)">
Transfer characteristics as defined by Transfer characteristics as defined by
- IEC 61966-2-1 sRGB - IEC 61966-2-1 sRGB
Note: This is not appropriate for describing sRGB material. As a rule of thumb, use gamma22 for video, motion picture and
sRGB material is intended to be viewed on an sRGB display, and computer graphics, or compound_power_2_4 for ICC calibrated print
that is described by gamma22. workflows.
</description> </description>
</entry> </entry>
<entry name="ext_srgb" value="10"> <entry name="ext_srgb" value="10" deprecated-since="2">
<description summary="Extended sRGB piece-wise transfer function"> <description summary="Deprecated (Extended sRGB piece-wise transfer function)">
Transfer characteristics as defined by Transfer characteristics as defined by
- IEC 61966-2-1 sYCC - IEC 61966-2-1 sYCC
</description> </description>
@ -387,6 +386,12 @@
ARIB STD-B67 or BT.2100. ARIB STD-B67 or BT.2100.
</description> </description>
</entry> </entry>
<entry name="compound_power_2_4" value="14" since="2">
<description summary="IEC 61966-2-1 encoding function">
Encoding characteristics as defined by IEC 61966-2-1, for displays
that invert the encoding function.
</description>
</entry>
</enum> </enum>
<request name="get_output"> <request name="get_output">
@ -520,6 +525,9 @@
<description summary="supported rendering intent"> <description summary="supported rendering intent">
When this object is created, it shall immediately send this event once When this object is created, it shall immediately send this event once
for each rendering intent the compositor supports. for each rendering intent the compositor supports.
A compositor must not advertise intents that are deprecated in the
bound version of the interface.
</description> </description>
<arg name="render_intent" type="uint" enum="render_intent" <arg name="render_intent" type="uint" enum="render_intent"
@ -530,6 +538,9 @@
<description summary="supported features"> <description summary="supported features">
When this object is created, it shall immediately send this event once When this object is created, it shall immediately send this event once
for each compositor supported feature listed in the enumeration. for each compositor supported feature listed in the enumeration.
A compositor must not advertise features that are deprecated in the
bound version of the interface.
</description> </description>
<arg name="feature" type="uint" enum="feature" <arg name="feature" type="uint" enum="feature"
@ -541,6 +552,9 @@
When this object is created, it shall immediately send this event once When this object is created, it shall immediately send this event once
for each named transfer function the compositor supports with the for each named transfer function the compositor supports with the
parametric image description creator. parametric image description creator.
A compositor must not advertise transfer functions that are deprecated
in the bound version of the interface.
</description> </description>
<arg name="tf" type="uint" enum="transfer_function" <arg name="tf" type="uint" enum="transfer_function"
@ -552,6 +566,9 @@
When this object is created, it shall immediately send this event once When this object is created, it shall immediately send this event once
for each named set of primaries the compositor supports with the for each named set of primaries the compositor supports with the
parametric image description creator. parametric image description creator.
A compositor must not advertise names that are deprecated in the
bound version of the interface.
</description> </description>
<arg name="primaries" type="uint" enum="primaries" <arg name="primaries" type="uint" enum="primaries"