Warning, /plasma/kwin/src/wayland/protocols/xx-color-management-v2.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <protocol name="xx_color_management_v2">
0003   <copyright>
0004     Copyright 2019 Sebastian Wick
0005     Copyright 2019 Erwin Burema
0006     Copyright 2020 AMD
0007     Copyright 2020, 2022, 2023 Collabora, Ltd.
0008 
0009     Permission is hereby granted, free of charge, to any person obtaining a
0010     copy of this software and associated documentation files (the "Software"),
0011     to deal in the Software without restriction, including without limitation
0012     the rights to use, copy, modify, merge, publish, distribute, sublicense,
0013     and/or sell copies of the Software, and to permit persons to whom the
0014     Software is furnished to do so, subject to the following conditions:
0015 
0016     The above copyright notice and this permission notice (including the next
0017     paragraph) shall be included in all copies or substantial portions of the
0018     Software.
0019 
0020     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0021     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0022     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
0023     THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
0024     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
0025     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
0026     DEALINGS IN THE SOFTWARE.
0027   </copyright>
0028 
0029   <description summary="color management protocol">
0030     The aim of the color management extension is to allow clients to know
0031     the color properties of outputs, and to tell the compositor about the color
0032     properties of their content on surfaces. Doing this enables a compositor
0033     to perform automatic color management of content for different outputs
0034     according to how content is intended to look like.
0035 
0036     The color properties are represented as an image description object which
0037     is immutable after it has been created. A wl_output always has an
0038     associated image description that clients can observe. A wl_surface
0039     always has an associated preferred image description as a hint chosen by
0040     the compositor that clients can also observe. Clients can set an image
0041     description on a wl_surface to denote the color characteristics of the
0042     surface contents.
0043 
0044     An image description includes SDR and HDR colorimetry and encoding, HDR
0045     metadata, and viewing environment parameters. An image description does
0046     not include the properties set through color-representation extension.
0047     It is expected that the color-representation extension is used in
0048     conjunction with the color management extension when necessary,
0049     particularly with the YUV family of pixel formats.
0050 
0051     Recommendation ITU-T H.273
0052     "Coding-independent code points for video signal type identification"
0053     shall be referred to as simply H.273 here.
0054 
0055     The color-and-hdr repository
0056     (https://gitlab.freedesktop.org/pq/color-and-hdr) contains
0057     background information on the protocol design and legacy color management.
0058     It also contains a glossary, learning resources for digital color, tools,
0059     samples and more.
0060 
0061     The terminology used in this protocol is based on common color science and
0062     color encoding terminology where possible. The glossary in the color-and-hdr
0063     repository shall be the authority on the definition of terms in this
0064     protocol.
0065   </description>
0066 
0067   <interface name="xx_color_manager_v2" version="1">
0068     <description summary="color manager singleton">
0069       A global interface used for getting color management extensions for
0070       wl_surface and wl_output objects, and for creating client defined image
0071       description objects. The extension interfaces allow
0072       getting the image description of outputs and setting the image
0073       description of surfaces.
0074     </description>
0075 
0076     <request name="destroy" type="destructor">
0077       <description summary="destroy the color manager">
0078         Destroy the xx_color_manager_v2 object. This does not affect any other
0079         objects in any way.
0080       </description>
0081     </request>
0082 
0083     <enum name="error">
0084       <entry name="unsupported_feature" value="0" summary="request not supported"/>
0085     </enum>
0086 
0087     <enum name="render_intent">
0088       <description summary="rendering intents">
0089         See the ICC.1:2022 specification from the International Color Consortium
0090         for more details about rendering intents.
0091 
0092         The principles of ICC defined rendering intents apply with all types
0093         of image descriptions, not only those with ICC file profiles.
0094 
0095         Compositors must support the perceptual rendering intent. Other
0096         rendering intents are optional.
0097       </description>
0098 
0099       <entry name="perceptual" value="0" summary="perceptual"/>
0100       <entry name="relative" value="1" summary="media-relative colorimetric"/>
0101       <entry name="saturation" value="2" summary="saturation"/>
0102       <entry name="absolute" value="3" summary="ICC-absolute colorimetric"/>
0103       <entry name="relative_bpc" value="4"
0104              summary="media-relative colorimetric + black point compensation"/>
0105     </enum>
0106 
0107     <enum name="feature">
0108       <description summary="compositor supported features"/>
0109 
0110       <entry name="icc_v2_v4" value="0" summary="new_icc_creator request"/>
0111       <entry name="parametric" value="1" summary="new_parametric_creator request"/>
0112       <entry name="set_primaries" value="2" summary="parametric set_primaries request"/>
0113       <entry name="set_tf_power" value="3" summary="parametric set_tf_power request"/>
0114       <entry name="set_mastering_display_primaries" value="4">
0115         <description summary="parametric set_mastering_display_primaries request">
0116           The compositor supports set_mastering_display_primaries request
0117           with a target color volume fully contained inside the primary
0118           color volume.
0119         </description>
0120       </entry>
0121       <entry name="extended_target_volume" value="5">
0122         <description summary="parametric target exceeds primary color volume">
0123           The compositor additionally supports target color volumes that
0124           extend outside of the primary color volume.
0125 
0126           This can only be advertised if feature set_mastering_display_primaries
0127           is supported as well.
0128         </description>
0129       </entry>
0130     </enum>
0131 
0132     <enum name="primaries">
0133       <description summary="named color primaries">
0134         Named color primaries used to encode well-known sets of primaries.
0135         H.273 is the authority, when it comes to the exact values of primaries and authoritative specifications,
0136         where an equivalent code point exists.
0137         Descriptions do list the specifications for convenience.
0138       </description>
0139       <entry name="srgb" value="0">
0140         <description summary="Color primaries for the sRGB color space as defined by the BT.709 standard">
0141           Color primaries as defined by
0142           - Rec. ITU-R BT.709-6
0143           - Rec. ITU-R BT.1361-0 conventional colour gamut system and extended colour gamut system (historical)
0144           - IEC 61966-2-1 sRGB or sYCC
0145           - IEC 61966-2-4
0146           - Society of Motion Picture and Television Engineers (SMPTE) RP 177 (1993) Annex B
0147           Equivalent to H.273 ColourPrimaries code point 1.
0148         </description>
0149       </entry>
0150       <entry name="pal_m" value="1">
0151         <description summary="Color primaries for PAL-M as defined by the BT.470 standard">
0152           Color primaries as defined by
0153           - Rec. ITU-R BT.470-6 System M (historical)
0154           - United States National Television System Committee 1953 Recommendation for transmission standards for color television
0155           - United States Federal Communications Commission (2003) Title 47 Code of Federal Regulations 73.682 (a)(20)
0156           Equivalent to H.273 ColourPrimaries code point 4.
0157         </description>
0158       </entry>
0159       <entry name="pal" value="2">
0160         <description summary="Color primaries for PAL as defined by the BT.601 standard">
0161           Color primaries as defined by
0162           - Rec. ITU-R BT.470-6 System B, G (historical)
0163           - Rec. ITU-R BT.601-7 625
0164           - Rec. ITU-R BT.1358-0 625 (historical)
0165           - Rec. ITU-R BT.1700-0 625 PAL and 625 SECAM
0166           Equivalent to H.273 ColourPrimaries code point 5.
0167         </description>
0168       </entry>
0169       <entry name="ntsc" value="3">
0170         <description summary="Color primaries for NTSC as defined by the BT.601 standard">
0171           Color primaries as defined by
0172           - Rec. ITU-R BT.601-7 525
0173           - Rec. ITU-R BT.1358-1 525 or 625 (historical)
0174           - Rec. ITU-R BT.1700-0 NTSC
0175           - SMPTE 170M (2004)
0176           - SMPTE 240M (1999) (historical)
0177           Equivalent to H.273 ColourPrimaries code point 6 and 7.
0178         </description>
0179       </entry>
0180       <entry name="generic_film" value="4">
0181         <description summary="Generic film with colour filters using Illuminant C">
0182           Color primaries as defined by H.273 for generic film.
0183           Equivalent to H.273 ColourPrimaries code point 8.
0184         </description>
0185       </entry>
0186       <entry name="bt2020" value="5">
0187         <description summary="Color primaries as defined by the BT.2020 and BT.2100 standard">
0188           Color primaries as defined by
0189           - Rec. ITU-R BT.2020-2
0190           - Rec. ITU-R BT.2100-0
0191           Equivalent to H.273 ColourPrimaries code point 9.
0192         </description>
0193       </entry>
0194       <entry name="cie1931_xyz" value="6">
0195         <description summary="Color primaries of the full CIE 1931 XYZ color space">
0196           Color primaries as defined as the maximum of the CIE 1931 XYZ color space by
0197           - SMPTE ST 428-1
0198           - (CIE 1931 XYZ as in ISO 11664-1)
0199           Equivalent to H.273 ColourPrimaries code point 10.
0200         </description>
0201       </entry>
0202       <entry name="dci_p3" value="7">
0203         <description summary="Color primaries of the DCI P3 color space as defined by the SMPTE RP 431 standard">
0204           Color primaries as defined by Digital Cinema System and published in SMPTE RP 431-2 (2011).
0205           Equivalent to H.273 ColourPrimaries code point 11.
0206         </description>
0207       </entry>
0208       <entry name="display_p3" value="8">
0209         <description summary="Color primaries of Display P3 variant of the DCI-P3 color space as defined by the SMPTE EG 432 standard">
0210           Color primaries as defined by Digital Cinema System and published in SMPTE EG 432-1 (2010).
0211           Equivalent to H.273 ColourPrimaries code point 12.
0212         </description>
0213       </entry>
0214       <entry name="adobe_rgb" value="9">
0215         <description summary="Color primaries of the Adobe RGB color space as defined by the ISO 12640 standard">
0216           Color primaries as defined by Adobe as "Adobe RGB" and later published by ISO 12640-4 (2011).
0217         </description>
0218       </entry>
0219     </enum>
0220 
0221     <enum name="transfer_function">
0222       <description summary="named transfer functions">
0223         Named Transfer Functions.
0224       </description>
0225       <entry name="bt709" value="0">
0226         <description summary="BT.709 transfer function">
0227           Transfer characteristics as defined by
0228           - Rec. ITU-R BT.709-6
0229           - Rec. ITU-R BT.1361-0 conventional colour gamut system (historical)
0230           Equivalent to H.273 TransferCharacteristics code point 1, 6, 14, 15.
0231         </description>
0232       </entry>
0233       <entry name="gamma22" value="1">
0234         <description summary="Assumed display gamma 2.2 transfer function">
0235           Transfer characteristics as defined by
0236           - Rec. ITU-R BT.470-6 System M (historical)
0237           - United States National Television System Committee 1953 Recommendation for transmission standards for color television
0238           - United States Federal Communications Commission (2003) Title 47 Code of Federal Regulations 73.682 (a) (20)
0239           - Rec. ITU-R BT.1700-0 625 PAL and 625 SECAM
0240           Equivalent to H.273 TransferCharacteristics code point 4.
0241         </description>
0242       </entry>
0243       <entry name="gamma28" value="2">
0244         <description summary="Assumed display gamma 2.8 transfer function">
0245           Transfer characteristics as defined by
0246           - Rec. ITU-R BT.470-6 System B, G (historical)
0247           Equivalent to H.273 TransferCharacteristics code point 5.
0248         </description>
0249       </entry>
0250       <entry name="st240" value="3">
0251         <description summary="SMPTE ST 240 transfer function">
0252           Transfer characteristics as defined by
0253           - SMPTE ST 240 (1999)
0254           Equivalent to H.273 TransferCharacteristics code point 7.
0255         </description>
0256       </entry>
0257       <entry name="linear" value="4">
0258         <description summary="linear transfer function">
0259           Linear transfer characteristics.
0260           Equivalent to H.273 TransferCharacteristics code point 8.
0261         </description>
0262       </entry>
0263       <entry name="log_100" value="5">
0264         <description summary="logarithmic 100:1 transfer function">
0265           Logarithmic transfer characteristic (100:1 range).
0266           Equivalent to H.273 TransferCharacteristics code point 9.
0267         </description>
0268       </entry>
0269       <entry name="log_316" value="6">
0270         <description summary="logarithmic (100*Sqrt(10) : 1) transfer function">
0271           Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range).
0272           Equivalent to H.273 TransferCharacteristics code point 10.
0273         </description>
0274       </entry>
0275       <entry name="xvycc" value="7">
0276         <description summary="IEC 61966-2-4 transfer function">
0277           Transfer characteristics as defined by
0278           - IEC 61966-2-4
0279           Equivalent to H.273 TransferCharacteristics code point 11.
0280         </description>
0281       </entry>
0282       <entry name="bt1361" value="8">
0283         <description summary="BT.1361 extended transfer function">
0284           Transfer characteristics as defined by
0285           - Rec. ITU-R BT.1361-0 extended colour gamut system (historical)
0286           Equivalent to H.273 TransferCharacteristics code point 12.
0287         </description>
0288       </entry>
0289       <entry name="srgb" value="9">
0290         <description summary="sRGB piece-wise transfer function">
0291           Transfer characteristics as defined by
0292           - IEC 61966-2-1 sRGB
0293           Equivalent to H.273 TransferCharacteristics code point 13 with MatrixCoefficients set to 0.
0294         </description>
0295       </entry>
0296       <entry name="ext_srgb" value="10">
0297         <description summary="Extended sRGB piece-wise transfer function">
0298           Transfer characteristics as defined by
0299           - IEC 61966-2-1 sYCC
0300           Equivalent to H.273 TransferCharacteristics code point 13 with MatrixCoefficients set to anything but 0.
0301         </description>
0302       </entry>
0303       <entry name="st2084_pq" value="11">
0304         <description summary="perceptual quantizer transfer function">
0305           Transfer characteristics as defined by
0306           - SMPTE ST 2084 (2014) for 10-, 12-, 14- and 16-bit systems
0307           - Rec. ITU-R BT.2100-2 perceptual quantization (PQ) system
0308           Equivalent to H.273 TransferCharacteristics code point 16.
0309         </description>
0310       </entry>
0311       <entry name="st428" value="12">
0312         <description summary="SMPTE ST 428 transfer function">
0313           Transfer characteristics as defined by
0314           - SMPTE ST 428-1 (2019)
0315           Equivalent to H.273 TransferCharacteristics code point 17.
0316         </description>
0317       </entry>
0318       <entry name="hlg" value="13">
0319         <description summary="hybrid log-gamma transfer function">
0320           Transfer characteristics as defined by
0321           - ARIB STD-B67 (2015)
0322           - Rec. ITU-R BT.2100-2 hybrid log-gamma (HLG) system
0323           Equivalent to H.273 TransferCharacteristics code point 18.
0324         </description>
0325       </entry>
0326     </enum>
0327 
0328     <request name="get_output">
0329       <description summary="create a color management interface for a wl_output">
0330         This creates a new xx_color_management_output_v2 object for the
0331         given wl_output.
0332 
0333         See the xx_color_management_output_v2 interface for more details.
0334       </description>
0335 
0336       <arg name="id" type="new_id" interface="xx_color_management_output_v2"/>
0337       <arg name="output" type="object" interface="wl_output"/>
0338     </request>
0339 
0340     <request name="get_surface">
0341       <description summary="create a color management interface for a wl_surface">
0342         This creates a new color xx_color_management_surface_v2 object for the
0343         given wl_surface.
0344 
0345         See the xx_color_management_surface_v2 interface for more details.
0346       </description>
0347 
0348       <arg name="id" type="new_id" interface="xx_color_management_surface_v2"/>
0349       <arg name="surface" type="object" interface="wl_surface"/>
0350     </request>
0351 
0352     <request name="new_icc_creator">
0353       <description summary="make a new ICC-based image description creator object">
0354         Makes a new ICC-based image description creator object with all
0355         properties initially unset. The client can then use the object's
0356         interface to define all the required properties for an image description
0357         and finally create a xx_image_description_v2 object.
0358 
0359         This request can be used when the compositor advertises
0360         xx_color_manager_v2.feature.icc_v2_v4.
0361         Otherwise this request raises the protocol error unsupported_feature.
0362       </description>
0363 
0364       <arg name="obj" type="new_id"
0365            interface="xx_image_description_creator_icc_v2"
0366            summary="the new creator object"/>
0367     </request>
0368 
0369     <request name="new_parametric_creator">
0370       <description summary="make a new parametric image description creator object">
0371         Makes a new parametric image description creator object with all
0372         properties initially unset. The client can then use the object's
0373         interface to define all the required properties for an image description
0374         and finally create a xx_image_description_v2 object.
0375 
0376         This request can be used when the compositor advertises
0377         xx_color_manager_v2.feature.parametric.
0378         Otherwise this request raises the protocol error unsupported_feature.
0379       </description>
0380 
0381       <arg name="obj" type="new_id"
0382            interface="xx_image_description_creator_params_v2"
0383            summary="the new creator object"/>
0384     </request>
0385 
0386     <event name="supported_intent">
0387       <description summary="supported rendering intent">
0388         When this object is created, it shall immediately send this event
0389         once for each rendering intent the compositor supports.
0390       </description>
0391 
0392       <arg name="render_intent" type="uint" enum="render_intent"
0393            summary="rendering intent"/>
0394     </event>
0395 
0396     <event name="supported_feature">
0397       <description summary="supported features">
0398         When this object is created, it shall immediately send this event
0399         once for each compositor supported feature listed in the enumeration.
0400       </description>
0401 
0402       <arg name="feature" type="uint" enum="feature" summary="supported feature"/>
0403     </event>
0404 
0405     <event name="supported_tf_named">
0406       <description summary="supported named transfer characteristic">
0407         When this object is created, it shall immediately send this event
0408         once for each named transfer function the compositor
0409         supports with the parametric image description creator.
0410       </description>
0411 
0412       <arg name="tf" type="uint" enum="transfer_function" summary="Named transfer function"/>
0413     </event>
0414 
0415     <event name="supported_primaries_named">
0416       <description summary="supported named primaries">
0417         When this object is created, it shall immediately send this event
0418         once for each named set of primaries the compositor
0419         supports with the parametric image description creator.
0420       </description>
0421 
0422       <arg name="primaries" type="uint" enum="primaries" summary="Named color primaries"/>
0423     </event>
0424   </interface>
0425 
0426   <interface name="xx_color_management_output_v2" version="1">
0427     <description summary="output color properties">
0428       A xx_color_management_output_v2 describes the color properties of an
0429       output.
0430 
0431       The xx_color_management_output_v2 is associated with the wl_output global
0432       underlying the wl_output object. Therefore the client destroying the
0433       wl_output object has no impact, but the compositor removing the output
0434       global makes the xx_color_management_output_v2 object inert.
0435     </description>
0436 
0437     <request name="destroy" type="destructor">
0438       <description summary="destroy the color management output">
0439         Destroy the color xx_color_management_output_v2 object. This does not
0440         affect any remaining protocol objects.
0441       </description>
0442     </request>
0443 
0444     <event name="image_description_changed">
0445       <description summary="image description changed">
0446         This event is sent whenever the image description of the
0447         output changed, followed by one wl_output.done event common to
0448         output events across all extensions.
0449 
0450         If the client wants to use the updated image description, it needs
0451         to do get_image_description again, because image description objects
0452         are immutable.
0453       </description>
0454     </event>
0455 
0456     <request name="get_image_description">
0457       <description summary="get the image description of the output">
0458         This creates a new xx_image_description_v2 object for the current image description
0459         of the output. There always is exactly one image description active for an
0460         output so the client should destroy the image description created by earlier
0461         invocations of this request. This request is usually sent as a reaction
0462         to the image_description_changed event or when creating a
0463         xx_color_management_output_v2 object.
0464 
0465         The created xx_image_description_v2 object preserves the image description
0466         of the output from the time the object was created.
0467 
0468         The resulting image description object allows get_information request.
0469 
0470         If this protocol object is inert, the resulting image
0471         description object shall immediately deliver the
0472         xx_image_description_v2.failed event with the no_output cause.
0473 
0474         If the interface version is inadequate for the output's image
0475         description, meaning that the client does not support all the
0476         events needed to deliver the crucial information, the resulting image
0477         description object shall immediately deliver the
0478         xx_image_description_v2.failed event with the low_version cause.
0479 
0480         Otherwise the object shall immediately deliver the ready event.
0481       </description>
0482 
0483       <arg name="image_description" type="new_id" interface="xx_image_description_v2"/>
0484     </request>
0485   </interface>
0486 
0487   <interface name="xx_color_management_surface_v2" version="1">
0488     <description summary="color management extension to a surface">
0489         A xx_color_management_surface_v2 allows the client to set the color
0490         space and HDR properties of a surface.
0491 
0492         If the wl_surface associated with the xx_color_management_surface_v2 is
0493         destroyed, the xx_color_management_surface_v2 object becomes inert.
0494     </description>
0495 
0496     <request name="destroy" type="destructor">
0497       <description summary="destroy the color management interface for a surface">
0498         Destroy the xx_color_management_surface_v2 object.
0499 
0500         When the last xx_color_management_surface_v2 object for a wl_surface
0501         is destroyed, it does the same as unset_image_description.
0502       </description>
0503     </request>
0504 
0505     <enum name="error">
0506       <description summary="protocol errors"/>
0507 
0508       <entry name="inert" value="0" summary="forbidden request on inert object"/>
0509       <entry name="render_intent" value="1" summary="unsupported rendering intent"/>
0510     </enum>
0511 
0512     <request name="set_image_description">
0513       <description summary="set the surface image description">
0514         Set the image description of the underlying surface. The image
0515         description and rendering intent are double-buffered state, see
0516         wl_surface.commit.
0517 
0518         It is the client's responsibility to understand the image description
0519         it sets on a surface, and to provide content that matches that image
0520         description.
0521 
0522         A rendering intent provides the client's preference on how content
0523         colors should be mapped to each output. The render_intent value must
0524         be one advertised by the compositor with
0525         xx_color_manager_v2.render_intent event, otherwise the protocol error
0526         render_intent is raised.
0527 
0528         By default, a surface does not have an associated image description
0529         nor a rendering intent. The handling of color on such surfaces is
0530         compositor implementation defined. Compositors should handle such
0531         surfaces as sRGB but may handle them differently if they have specific
0532         requirements.
0533       </description>
0534 
0535       <arg name="image_description" type="object" interface="xx_image_description_v2"/>
0536       <arg name="render_intent" type="uint" enum="xx_color_manager_v2.render_intent"
0537            summary="rendering intent"/>
0538     </request>
0539 
0540     <request name="unset_image_description">
0541       <description summary="remove the surface image description">
0542         This request removes any image description from the surface. See
0543         set_image_description for how a compositor handles a surface without
0544         an image description. This is double-buffered state, see
0545         wl_surface.commit.
0546       </description>
0547     </request>
0548 
0549     <event name="preferred_changed">
0550       <description summary="compositor's preferred image description for the surface">
0551         The preferred image description is the one which likely has the most
0552         performance and/or quality benefits for the compositor if used by the
0553         client for its wl_surface contents. This event is sent whenever the
0554         compositor changes the wl_surface's preferred image description.
0555 
0556         This is not an initial event.
0557 
0558         This event is merely a notification. When the client wants to know
0559         what the preferred image description is, it shall use the get_preferred
0560         request.
0561 
0562         The preferred image description is not automatically used for anything.
0563         It is only a hint, and clients may set any valid image description with
0564         set_image_description but there might be performance and color accuracy
0565         improvements by providing the wl_surface contents in the preferred
0566         image description. Therefore clients that can, should render according
0567         to the preferred image description
0568       </description>
0569     </event>
0570 
0571     <request name="get_preferred">
0572       <description summary="get the preferred image description">
0573         If this protocol object is inert, the protocol error inert is raised.
0574 
0575         This creates a new xx_image_description_v2 object for the currently
0576         preferred image description for the wl_surface. The client should
0577         stop using and destroy the image descriptions created by earlier
0578         invocations of this request for the associated wl_surface.
0579         This request is usually sent as a reaction to the preferred_changed
0580         event or when creating a xx_color_management_surface_v2 object if
0581         the client is capable of adapting to image descriptions.
0582 
0583         The created xx_image_description_v2 object preserves the preferred image
0584         description of the wl_surface from the time the object was created.
0585 
0586         The resulting image description object allows get_information request.
0587 
0588         If the interface version is inadequate for the preferred image
0589         description, meaning that the client does not support all the
0590         events needed to deliver the crucial information, the resulting image
0591         description object shall immediately deliver the
0592         xx_image_description_v2.failed event with the low_version cause,
0593         otherwise the object shall immediately deliver the ready event.
0594       </description>
0595 
0596       <arg name="image_description" type="new_id" interface="xx_image_description_v2"/>
0597     </request>
0598   </interface>
0599 
0600   <interface name="xx_image_description_creator_icc_v2" version="1">
0601     <description summary="holder of image description ICC information">
0602       This type of object is used for collecting all the information required
0603       to create a xx_image_description_v2 object from an ICC file. A complete
0604       set of required parameters consists of these properties:
0605       - ICC file
0606 
0607       Each required property must be set exactly once if the client is to create
0608       an image description. The set requests verify that a property was not
0609       already set. The create request verifies that all required properties are
0610       set. There may be several alternative requests for setting each property,
0611       and in that case the client must choose one of them.
0612 
0613       Once all properties have been set, the create request must be used to
0614       create the image description object, destroying the creator in the
0615       process.
0616     </description>
0617 
0618     <enum name="error">
0619       <description summary="protocol errors"/>
0620 
0621       <entry name="incomplete_set" value="0" summary="incomplete parameter set"/>
0622       <entry name="already_set" value="1" summary="property already set"/>
0623       <entry name="bad_fd" value="2" summary="fd not seekable and readable"/>
0624       <entry name="bad_size" value="3" summary="no or too much data"/>
0625       <entry name="out_of_file" value="4" summary="offset + length exceeds file size"/>
0626     </enum>
0627 
0628     <request name="create" type="destructor">
0629       <description summary="Create the image description object from ICC data">
0630         Create an image description object based on the ICC information
0631         previously set on this object. A compositor must parse the ICC data in
0632         some undefined but finite amount of time.
0633 
0634         The completeness of the parameter set is verified. If the set is not
0635         complete, the protocol error incomplete_set is raised. For the
0636         definition of a complete set, see the description of this interface.
0637 
0638         If the particular combination of the information is not supported
0639         by the compositor, the resulting image description object shall
0640         immediately deliver the xx_image_description_v2.failed event with the
0641         'unsupported' cause. If a valid image description was created from the
0642         information, the xx_image_description_v2.ready event will eventually
0643         be sent instead.
0644 
0645         This request destroys the xx_image_description_creator_icc_v2 object.
0646 
0647         The resulting image description object does not allow get_information
0648         request.
0649       </description>
0650 
0651       <arg name="image_description" type="new_id" interface="xx_image_description_v2"/>
0652     </request>
0653 
0654     <request name="set_icc_file">
0655       <description summary="set the ICC profile file">
0656         Sets the ICC profile file to be used as the basis of the image
0657         description.
0658 
0659         The data shall be found through the given fd at the given offset,
0660         having the given length. The fd must seekable and readable. Violating
0661         these requirements raises the bad_fd protocol error.
0662 
0663         If reading the data fails due to an error independent of the client, the
0664         compositor shall send the xx_image_description_v2.failed event on the
0665         created xx_image_description_v2 with the 'operating_system' cause.
0666 
0667         The maximum size of the ICC profile is 4 MB. If length is greater
0668         than that or zero, the protocol error bad_size is raised.
0669         If offset + length exceeds the file size, the protocol error
0670         out_of_file is raised.
0671 
0672         A compositor may read the file at any time starting from this request
0673         and only until whichever happens first:
0674         - If create request was issued, the xx_image_description_v2 object
0675           delivers either failed or ready event; or
0676         - if create request was not issued, this
0677           xx_image_description_creator_icc_v2 object is destroyed.
0678 
0679         A compositor shall not modify the contents of the file, and the fd may
0680         be sealed for writes and size changes. The client must ensure to its
0681         best ability that the data does not change while the compositor is
0682         reading it.
0683 
0684         The data must represent a valid ICC profile.
0685         The ICC profile version must be 2 or 4, it must be a 3 channel profile
0686         and the class must be 'display'.
0687         Violating these requirements will not result in a protocol error but
0688         will eventually send the xx_image_description_v2.failed event on the
0689         created xx_image_description_v2 with the 'unsupported' cause.
0690 
0691         See the International Color Consortium specification ICC.1:2022 for more
0692         details about ICC profiles.
0693 
0694         If ICC file has already been set on this object, the protocol error
0695         already_set is raised.
0696       </description>
0697 
0698       <arg name="icc_profile" type="fd" summary="ICC profile"/>
0699       <arg name="offset" type="uint" summary="byte offset in fd to start of ICC data"/>
0700       <arg name="length" type="uint" summary="length of ICC data in bytes"/>
0701     </request>
0702   </interface>
0703 
0704   <interface name="xx_image_description_creator_params_v2" version="1">
0705     <description summary="holder of image description parameters">
0706       This type of object is used for collecting all the parameters required
0707       to create a xx_image_description_v2 object. A complete set of required
0708       parameters consists of these properties:
0709       - transfer characteristic function (tf)
0710       - chromaticities of primaries and white point (primary color volume)
0711 
0712       The following properties are optional and have a well-defined default
0713       if not explicitly set:
0714       - mastering display primaries and white point (target color volume)
0715       - mastering luminance range
0716       - maximum content light level
0717       - maximum frame-average light level
0718 
0719       Each required property must be set exactly once if the client is to create
0720       an image description. The set requests verify that a property was not
0721       already set. The create request verifies that all required properties are
0722       set. There may be several alternative requests for setting each property,
0723       and in that case the client must choose one of them.
0724 
0725       Once all properties have been set, the create request must be used to
0726       create the image description object, destroying the creator in the
0727       process.
0728     </description>
0729 
0730     <enum name="error">
0731       <description summary="protocol errors"/>
0732 
0733       <entry name="incomplete_set" value="0" summary="incomplete parameter set"/>
0734       <entry name="inconsistent_set" value="1" summary="invalid combination of parameters"/>
0735       <entry name="already_set" value="2" summary="property already set"/>
0736       <entry name="invalid_tf" value="3" summary="invalid transfer characteristic"/>
0737       <entry name="invalid_primaries" value="4" summary="invalid primaries or white point"/>
0738       <entry name="invalid_luminance" value="5" summary="invalid luminance value or range"/>
0739       <entry name="invalid_mastering" value="6" summary="invalid mastering information"/>
0740     </enum>
0741 
0742     <request name="create" type="destructor">
0743       <description summary="Create the image description object using params">
0744         Create an image description object based on the parameters previously
0745         set on this object.
0746 
0747         The completeness of the parameter set is verified. If the set is not
0748         complete, the protocol error incomplete_set is raised. For the
0749         definition of a complete set, see the description of this interface.
0750 
0751         If the particular combination of the parameter set is not supported
0752         by the compositor, the resulting image description object shall
0753         immediately deliver the xx_image_description_v2.failed event with the
0754         'unsupported' cause. If a valid image description was created from the
0755         parameter set, the xx_image_description_v2.ready event will eventually
0756         be sent instead.
0757 
0758         This request destroys the xx_image_description_creator_params_v2
0759         object.
0760 
0761         The resulting image description object does not allow get_information
0762         request.
0763       </description>
0764 
0765       <arg name="image_description" type="new_id" interface="xx_image_description_v2"/>
0766     </request>
0767 
0768     <request name="set_tf_named">
0769       <description summary="named transfer characteristic">
0770         Sets the transfer characteristic using explicitly enumerated named functions.
0771 
0772         Only names advertised with xx_color_manager_v2
0773         event supported_tf_named are allowed. Other values shall raise the
0774         protocol error invalid_tf.
0775 
0776         If transfer characteristic has already been set on this object, the
0777         protocol error already_set is raised.
0778       </description>
0779 
0780       <arg name="tf" type="uint" enum="transfer_function" summary="named transfer function"/>
0781     </request>
0782 
0783     <request name="set_tf_power">
0784       <description summary="transfer characteristic as a power curve">
0785         Sets the color component transfer characteristic to a power curve
0786         with the given exponent. This curve represents the conversion from
0787         electrical to optical pixel or color values.
0788 
0789         The curve exponent shall be multiplied by 10000 to get the argument
0790         eexp value to carry the precision of 4 decimals.
0791 
0792         The curve exponent must be at least 1.0 and at most 10.0. Otherwise
0793         the protocol error invalid_tf is raised.
0794 
0795         If transfer characteristic has already been set on this object, the
0796         protocol error already_set is raised.
0797 
0798         This request can be used when the compositor advertises
0799         xx_color_manager_v2.feature.set_tf_power. Otherwise this request raises
0800         the protocol error invalid_tf.
0801       </description>
0802 
0803       <arg name="eexp" type="uint" summary="the exponent * 10000"/>
0804     </request>
0805 
0806     <request name="set_primaries_named">
0807       <description summary="named primaries">
0808         Sets the color primaries and white point using explicitly named sets.
0809         This describes the primary color volume which is the basis
0810         for color value encoding.
0811 
0812         Only names advertised with xx_color_manager_v2
0813         event supported_primaries_named are allowed. Other values shall raise the
0814         protocol error invalid_primaries.
0815 
0816         If primaries have already been set on this object, the protocol error
0817         already_set is raised.
0818       </description>
0819 
0820       <arg name="primaries" type="uint" enum="primaries" summary="named primaries"/>
0821     </request>
0822 
0823     <request name="set_primaries">
0824       <description summary="primaries as chromaticity coordinates">
0825         Sets the color primaries and white point using CIE 1931 xy
0826         chromaticity coordinates. This describes the primary color volume
0827         which is the basis for color value encoding.
0828 
0829         Each coordinate value is multiplied by 10000 to get the argument
0830         value to carry precision of 4 decimals.
0831 
0832         If primaries have already been set on this object, the protocol error
0833         already_set is raised.
0834 
0835         This request can be used if the compositor advertises
0836         xx_color_manager_v2.feature.set_primaries. Otherwise this request
0837         raises the protocol error invalid_primaries.
0838       </description>
0839 
0840       <arg name="r_x" type="uint" summary="Red x * 10000"/>
0841       <arg name="r_y" type="uint" summary="Red y * 10000"/>
0842       <arg name="g_x" type="uint" summary="Green x * 10000"/>
0843       <arg name="g_y" type="uint" summary="Green y * 10000"/>
0844       <arg name="b_x" type="uint" summary="Blue x * 10000"/>
0845       <arg name="b_y" type="uint" summary="Blue y * 10000"/>
0846       <arg name="w_x" type="uint" summary="White x * 10000"/>
0847       <arg name="w_y" type="uint" summary="White y * 10000"/>
0848     </request>
0849 
0850     <request name="set_mastering_display_primaries">
0851       <description summary="mastering display primaries as chromaticity coordinates">
0852         Provides the color primaries and white point of the mastering display
0853         using CIE 1931 xy chromaticity coordinates. This is compatible with the
0854         SMPTE ST 2086 definition of HDR static metadata.
0855 
0856         The mastering display primaries define the target color volume.
0857 
0858         If mastering display primaries are not explicitly set, the target
0859         color volume is assumed to be equal to the primary color volume.
0860 
0861         The target color volume is defined by all tristimulus values between 0.0
0862         and 1.0 (inclusive) of the color space defined by the given mastering
0863         display primaries and white point. The colorimetry is identical between
0864         the container color space and the mastering display color space,
0865         including that no chromatic adaptation is applied even if the white
0866         points differ.
0867 
0868         The target color volume can exceed the primary color volume to allow for
0869         a greater color volume with an existing color space definition (for
0870         example scRGB). It can be smaller than the primary color volume to
0871         minimize gamut and tone mapping distances for big color spaces (HDR
0872         metadata).
0873 
0874         To make use of the entire target color volume a suitable pixel format
0875         has to be chosen (e.g. floating point to exceed the primary color
0876         volume, or abusing limited quantization range as with xvYCC).
0877 
0878         Each coordinate value is multiplied by 10000 to get the argument
0879         value to carry precision of 4 decimals.
0880 
0881         If mastering display primaries have already been set on this object,
0882         the protocol error already_set is raised.
0883 
0884         This request can be used if the compositor advertises
0885         xx_color_manager_v2.feature.set_mastering_display_primaries.
0886         Otherwise this request raises the protocol error invalid_mastering.
0887         The advertisement implies support only for target color
0888         volumes fully contained within the primary color volume.
0889 
0890         If a compositor additionally supports target color volume exceeding
0891         the primary color volume, it must advertise
0892         xx_color_manager_v2.feature.extended_target_volume.
0893         If a client uses target color volume exceeding the primary color volume
0894         and the compositor does not support it, the result is implementation
0895         defined. Compositors are recommended to detect this case and fail the
0896         image description gracefully, but it may as well result in color
0897         artifacts.
0898       </description>
0899 
0900       <arg name="r_x" type="uint" summary="Red x * 10000"/>
0901       <arg name="r_y" type="uint" summary="Red y * 10000"/>
0902       <arg name="g_x" type="uint" summary="Green x * 10000"/>
0903       <arg name="g_y" type="uint" summary="Green y * 10000"/>
0904       <arg name="b_x" type="uint" summary="Blue x * 10000"/>
0905       <arg name="b_y" type="uint" summary="Blue y * 10000"/>
0906       <arg name="w_x" type="uint" summary="White x * 10000"/>
0907       <arg name="w_y" type="uint" summary="White y * 10000"/>
0908     </request>
0909 
0910     <request name="set_mastering_luminance">
0911       <description summary="display mastering luminance range">
0912         Sets the luminance range that was used during the content mastering
0913         process as the minimum and maximum absolute luminance L. This is
0914         compatible with the SMPTE ST 2086 definition of HDR static metadata.
0915 
0916         This can only be set when set_tf_cicp is used to set the transfer
0917         characteristic to Rec. ITU-R BT.2100-2 perceptual quantization system.
0918         Otherwise, 'create' request shall raise inconsistent_set protocol
0919         error.
0920 
0921         The mastering luminance range is undefined by default.
0922 
0923         If max L is less than or equal to min L, the protocol error
0924         invalid_luminance is raised.
0925 
0926         Min L value is multiplied by 10000 to get the argument min_lum value
0927         and carry precision of 4 decimals. Max L value is unscaled for max_lum.
0928       </description>
0929 
0930       <arg name="min_lum" type="uint" summary="min L (cd/m²) * 10000"/>
0931       <arg name="max_lum" type="uint" summary="max L (cd/m²)"/>
0932     </request>
0933 
0934     <request name="set_max_cll">
0935       <description summary="maximum content light level">
0936         Sets the maximum content light level (max_cll) as defined by CTA-861-H.
0937 
0938         This can only be set when set_tf_cicp is used to set the transfer
0939         characteristic to Rec. ITU-R BT.2100-2 perceptual quantization system.
0940         Otherwise, 'create' request shall raise inconsistent_set protocol
0941         error.
0942 
0943         max_cll is undefined by default.
0944       </description>
0945 
0946       <arg name="max_cll" type="uint" summary="Maximum content light level (cd/m²)"/>
0947     </request>
0948 
0949     <request name="set_max_fall">
0950       <description summary="maximum frame-average light level">
0951         Sets the maximum frame-average light level (max_fall) as defined by
0952         CTA-861-H.
0953 
0954         This can only be set when set_tf_cicp is used to set the transfer
0955         characteristic to Rec. ITU-R BT.2100-2 perceptual quantization system.
0956         Otherwise, 'create' request shall raise inconsistent_set protocol
0957         error.
0958 
0959         max_fall is undefined by default.
0960       </description>
0961 
0962       <arg name="max_fall" type="uint" summary="Maximum frame-average light level (cd/m²)"/>
0963     </request>
0964   </interface>
0965 
0966   <interface name="xx_image_description_v2" version="1">
0967     <description summary="Colorimetric image description">
0968       An image description carries information about the color encoding used
0969       on a surface when attached to a wl_surface via
0970       xx_color_management_surface_v2.set_image_description. A compositor can
0971       use this information to decode pixel values into colorimetrically
0972       meaningful quantities.
0973 
0974       Note, that the xx_image_description_v2 object is not ready to be used
0975       immediately after creation. The object eventually delivers either the
0976       'ready' or the 'failed' event, specified in all requests creating it. The
0977       object is deemed "ready" after receiving the 'ready' event.
0978 
0979       An object which is not ready is illegal to use, it can only be destroyed.
0980       Any other request in this interface shall result in the 'not_ready'
0981       protocol error. Attempts to use an object which is not ready through other
0982       interfaces shall raise protocol errors defined there.
0983 
0984       Once created and regardless of how it was created, a xx_image_description_v2
0985       object always refers to one fixed image description. It cannot change
0986       after creation.
0987     </description>
0988 
0989     <request name="destroy" type="destructor">
0990       <description summary="destroy the image description">
0991         Destroy this object. It is safe to destroy an object which is not ready.
0992 
0993         Destroying a xx_image_description_v2 object has no side-effects, not
0994         even if a xx_color_management_surface_v2.set_image_description has
0995         not yet been followed by a wl_surface.commit.
0996       </description>
0997     </request>
0998 
0999     <enum name="error">
1000       <description summary="protocol errors"/>
1001 
1002       <entry name="not_ready" value="0" summary="attempted to use an object which is not ready"/>
1003       <entry name="no_information" value="1" summary="get_information not allowed"/>
1004     </enum>
1005 
1006     <enum name="cause">
1007       <description summary="generic reason for failure"/>
1008 
1009       <entry name="low_version" value="0" summary="interface version too low"/>
1010       <entry name="unsupported" value="1" summary="unsupported image description data"/>
1011       <entry name="operating_system" value="2" summary="error independent of the client"/>
1012       <entry name="no_output" value="3" summary="the relevant output no longer exists"/>
1013     </enum>
1014 
1015     <event name="failed">
1016       <description summary="graceful error on creating the image description">
1017         If creating a xx_image_description_v2 object fails for a reason that
1018         is not defined as a protocol error, this event is sent.
1019         The requests that create image description objects define whether
1020         and when this can occur. Only such creation requests can trigger this
1021         event. This event cannot be triggered after the image description was
1022         successfully formed.
1023 
1024         Once this event has been sent, the xx_image_description_v2 object will
1025         never become ready and it can only be destroyed.
1026       </description>
1027 
1028       <arg name="cause" type="uint" enum="cause" summary="generic reason"/>
1029       <arg name="msg" type="string" summary="ad hoc human-readable explanation"/>
1030     </event>
1031 
1032     <event name="ready">
1033       <description summary="indication that the object is ready to be used">
1034         Once this event has been sent, the xx_image_description_v2 object is
1035         deemed "ready". Ready objects can be used to send requests and can be
1036         used through other interfaces.
1037 
1038         Every ready xx_image_description_v2 protocol object refers to an
1039         underlying image description record in the compositor. Multiple protocol
1040         objects may end up referring to the same record. Clients may identify
1041         these "copies" by comparing their id numbers: if the numbers from two
1042         protocol objects are identical, the protocol objects refer to the same
1043         image description record. Two different image description records
1044         cannot have the same id number simultaneously. The id number does not
1045         change during the lifetime of the image description record.
1046 
1047         The id number is valid only as long as the protocol object is alive.
1048         If all protocol objects referring to the same image description record
1049         are destroyed, the id number may be recycled for a different image
1050         description record.
1051 
1052         Image description id number is not a protocol object id. Zero is
1053         reserved as an invalid id number. It shall not be possible for a
1054         client to refer to an image description by its id number in protocol.
1055         The id numbers might not be portable between Wayland connections.
1056 
1057         This identity allows clients to de-duplicate image description records
1058         and avoid get_information request if they already have the image
1059         description information.
1060       </description>
1061 
1062       <arg name="identity" type="uint" summary="image description id number"/>
1063     </event>
1064 
1065     <request name="get_information">
1066       <description summary="get information about the image description">
1067         Creates a xx_image_description_info_v2 object which delivers the
1068         information that makes up the image description.
1069 
1070         Not all image description protocol objects allow get_information
1071         request. Whether it is allowed or not is defined by the request that
1072         created the object. If get_information is not allowed, the protocol
1073         error no_information is raised.
1074       </description>
1075 
1076       <arg name="information" type="new_id" interface="xx_image_description_info_v2"/>
1077     </request>
1078   </interface>
1079 
1080   <interface name="xx_image_description_info_v2" version="1">
1081     <description summary="Colorimetric image description information">
1082       Sends all matching events describing an image description object exactly
1083       once and finally sends the 'done' event.
1084 
1085       Once a xx_image_description_info_v2 object has delivered a 'done' event
1086       it is automatically destroyed.
1087 
1088       Every xx_image_description_info_v2 created from the same
1089       xx_image_description_v2 shall always return the exact same data.
1090     </description>
1091 
1092     <event name="done" type="destructor">
1093       <description summary="end of information">
1094         Signals the end of information events and destroys the object.
1095       </description>
1096     </event>
1097 
1098     <event name="icc_file">
1099       <description summary="ICC profile matching the image description">
1100         The icc argument provides a file descriptor to the client which may be
1101         memory-mapped to provide the ICC profile matching the image description.
1102         The fd is read-only, and if mapped then it must be mapped with
1103         MAP_PRIVATE by the client.
1104 
1105         The ICC profile version and other details are determined by the
1106         compositor. There is no provision for a client to ask for a specific
1107         kind of a profile.
1108       </description>
1109 
1110       <arg name="icc" type="fd" summary="ICC profile file descriptor"/>
1111       <arg name="icc_size" type="uint" summary="ICC profile size, in bytes"/>
1112       <!-- Offset always 0, compositor must not expose unnecessary data. -->
1113     </event>
1114 
1115     <event name="primaries">
1116       <description summary="primaries as chromaticity coordinates">
1117         Delivers the primary color volume primaries and white point
1118         using CIE 1931 xy chromaticity coordinates.
1119 
1120         Each coordinate value is multiplied by 10000 to get the argument
1121         value to carry precision of 4 decimals.
1122       </description>
1123 
1124       <arg name="r_x" type="uint" summary="Red x * 10000"/>
1125       <arg name="r_y" type="uint" summary="Red y * 10000"/>
1126       <arg name="g_x" type="uint" summary="Green x * 10000"/>
1127       <arg name="g_y" type="uint" summary="Green y * 10000"/>
1128       <arg name="b_x" type="uint" summary="Blue x * 10000"/>
1129       <arg name="b_y" type="uint" summary="Blue y * 10000"/>
1130       <arg name="w_x" type="uint" summary="White x * 10000"/>
1131       <arg name="w_y" type="uint" summary="White y * 10000"/>
1132     </event>
1133 
1134     <event name="primaries_named">
1135       <description summary="named primaries">
1136         Delivers the primary color volume primaries and white point using a
1137         explicitly enumerated named set.
1138       </description>
1139 
1140       <arg name="primaries" type="uint" enum="xx_color_manager_v2.primaries" summary="named primaries"/>
1141     </event>
1142 
1143     <event name="tf_power">
1144       <description summary="transfer characteristic as a power curve">
1145         The color component transfer characteristic of this image description
1146         is a pure power curve. This event provides the exponent of the power
1147         function. This curve represents the conversion from electrical to
1148         optical pixel or color values.
1149 
1150         The curve exponent has been multiplied by 10000 to get the argument
1151         eexp value to carry the precision of 4 decimals.
1152       </description>
1153 
1154       <arg name="eexp" type="uint" summary="the exponent * 10000"/>
1155     </event>
1156 
1157     <event name="tf_named">
1158       <description summary="named transfer characteristic">
1159         Delivers the transfer characteristic using an explicitly enumerated
1160         named function.
1161       </description>
1162 
1163       <arg name="tf" type="uint" enum="xx_color_manager_v2.transfer_function" summary="named transfer function"/>
1164     </event>
1165 
1166     <event name="target_primaries">
1167       <description summary="target primaries as chromaticity coordinates">
1168         Provides the color primaries and white point of the target
1169         color volume using CIE 1931 xy chromaticity coordinates. This is
1170         compatible with the SMPTE ST 2086 definition of HDR static metadata
1171         for mastering displays.
1172 
1173         While primary color volume is about how color is encoded, the
1174         target color volume is the actually displayable color volume.
1175         If target color volume is equal to the primary color volume,
1176         then this event is not sent.
1177 
1178         Each coordinate value is multiplied by 10000 to get the argument
1179         value to carry precision of 4 decimals.
1180       </description>
1181 
1182       <arg name="r_x" type="uint" summary="Red x * 10000"/>
1183       <arg name="r_y" type="uint" summary="Red y * 10000"/>
1184       <arg name="g_x" type="uint" summary="Green x * 10000"/>
1185       <arg name="g_y" type="uint" summary="Green y * 10000"/>
1186       <arg name="b_x" type="uint" summary="Blue x * 10000"/>
1187       <arg name="b_y" type="uint" summary="Blue y * 10000"/>
1188       <arg name="w_x" type="uint" summary="White x * 10000"/>
1189       <arg name="w_y" type="uint" summary="White y * 10000"/>
1190     </event>
1191 
1192     <event name="target_luminance">
1193       <description summary="target luminance range">
1194         Provides the luminance range that the image description is targeting
1195         as the minimum and maximum absolute luminance L. This is compatible
1196         with the SMPTE ST 2086 definition of HDR static metadata.
1197 
1198         This luminance range is only theoretical and may not correspond to the
1199         luminance of light emitted on an actual display.
1200 
1201         Min L value is multiplied by 10000 to get the argument min_lum value
1202         and carry precision of 4 decimals. Max L value is unscaled for max_lum.
1203       </description>
1204 
1205       <arg name="min_lum" type="uint" summary="min L (cd/m²) * 10000"/>
1206       <arg name="max_lum" type="uint" summary="max L (cd/m²)"/>
1207     </event>
1208 
1209     <event name="target_max_cll">
1210       <description summary="target maximum content light level">
1211         Provides the targeted max_cll of the image description. max_cll is
1212         defined by CTA-861-H.
1213 
1214         This luminance is only theoretical and may not correspond to the
1215         luminance of light emitted on an actual display.
1216       </description>
1217 
1218       <arg name="max_cll" type="uint" summary="Maximum content light-level (cd/m²)"/>
1219     </event>
1220 
1221     <event name="target_max_fall">
1222       <description summary="target maximum frame-average light level">
1223         Provides the targeted max_fall of the image description. max_fall is
1224         defined by CTA-861-H.
1225 
1226         This luminance is only theoretical and may not correspond to the
1227         luminance of light emitted on an actual display.
1228       </description>
1229 
1230       <arg name="max_fall" type="uint" summary="Maximum frame-average light level (cd/m²)"/>
1231     </event>
1232   </interface>
1233 </protocol>