Warning, /libraries/plasma-wayland-protocols/src/protocols/kde-output-device-v2.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <protocol name="kde_output_device_v2">
0003   <copyright><![CDATA[
0004     SPDX-FileCopyrightText: 2008-2011 Kristian Høgsberg
0005     SPDX-FileCopyrightText: 2010-2011 Intel Corporation
0006     SPDX-FileCopyrightText: 2012-2013 Collabora, Ltd.
0007     SPDX-FileCopyrightText: 2015 Sebastian Kügler <sebas@kde.org>
0008     SPDX-FileCopyrightText: 2021 Méven Car <meven.car@enioka.com>
0009 
0010     SPDX-License-Identifier: MIT-CMU
0011     ]]></copyright>
0012 
0013 
0014   <interface name="kde_output_device_v2" version="6">
0015     <description summary="output configuration representation">
0016       An output device describes a display device available to the compositor.
0017       output_device is similar to wl_output, but focuses on output
0018       configuration management.
0019   
0020       A client can query all global output_device objects to enlist all
0021       available display devices, even those that may currently not be
0022       represented by the compositor as a wl_output.
0023   
0024       The client sends configuration changes to the server through the
0025       outputconfiguration interface, and the server applies the configuration
0026       changes to the hardware and signals changes to the output devices
0027       accordingly.
0028   
0029       This object is published as global during start up for every available
0030       display devices, or when one later becomes available, for example by
0031       being hotplugged via a physical connector.
0032     </description>
0033   
0034     <enum name="subpixel">
0035       <description summary="subpixel geometry information">
0036         This enumeration describes how the physical pixels on an output are
0037         laid out.
0038       </description>
0039       <entry name="unknown" value="0"/>
0040       <entry name="none" value="1"/>
0041       <entry name="horizontal_rgb" value="2"/>
0042       <entry name="horizontal_bgr" value="3"/>
0043       <entry name="vertical_rgb" value="4"/>
0044       <entry name="vertical_bgr" value="5"/>
0045     </enum>
0046   
0047     <enum name="transform">
0048       <description summary="transform from framebuffer to output">
0049         This describes the transform, that a compositor will apply to a
0050         surface to compensate for the rotation or mirroring of an
0051         output device.
0052   
0053         The flipped values correspond to an initial flip around a
0054         vertical axis followed by rotation.
0055   
0056         The purpose is mainly to allow clients to render accordingly and
0057         tell the compositor, so that for fullscreen surfaces, the
0058         compositor is still able to scan out directly client surfaces.
0059       </description>
0060   
0061       <entry name="normal" value="0"/>
0062       <entry name="90" value="1"/>
0063       <entry name="180" value="2"/>
0064       <entry name="270" value="3"/>
0065       <entry name="flipped" value="4"/>
0066       <entry name="flipped_90" value="5"/>
0067       <entry name="flipped_180" value="6"/>
0068       <entry name="flipped_270" value="7"/>
0069     </enum>
0070   
0071     <event name="geometry">
0072       <description summary="geometric properties of the output">
0073         The geometry event describes geometric properties of the output.
0074         The event is sent when binding to the output object and whenever
0075         any of the properties change.
0076       </description>
0077       <arg name="x" type="int"
0078          summary="x position within the global compositor space"/>
0079       <arg name="y" type="int"
0080          summary="y position within the global compositor space"/>
0081       <arg name="physical_width" type="int"
0082          summary="width in millimeters of the output"/>
0083       <arg name="physical_height" type="int"
0084          summary="height in millimeters of the output"/>
0085       <arg name="subpixel" type="int"
0086          summary="subpixel orientation of the output"/>
0087       <arg name="make" type="string"
0088          summary="textual description of the manufacturer"/>
0089       <arg name="model" type="string"
0090          summary="textual description of the model"/>
0091       <arg name="transform" type="int"
0092          summary="transform that maps framebuffer to output"/>
0093     </event>
0094   
0095     <event name="current_mode">
0096       <description summary="current mode">
0097         This event describes the mode currently in use for this head. It is only
0098         sent if the output is enabled.
0099       </description>
0100       <arg name="mode" type="object" interface="kde_output_device_mode_v2"/>
0101     </event>
0102   
0103     <event name="mode">
0104       <description summary="advertise available output modes and current one">
0105         The mode event describes an available mode for the output.
0106   
0107         When the client binds to the output_device object, the server sends this
0108         event once for every available mode the output_device can be operated by.
0109   
0110         There will always be at least one event sent out on initial binding,
0111         which represents the current mode.
0112   
0113         Later if an output changes, its mode event is sent again for the
0114         eventual added modes and lastly the current mode. In other words, the
0115         current mode is always represented by the latest event sent with the current
0116         flag set.
0117   
0118         The size of a mode is given in physical hardware units of the output device.
0119         This is not necessarily the same as the output size in the global compositor
0120         space. For instance, the output may be scaled, as described in
0121         kde_output_device_v2.scale, or transformed, as described in
0122         kde_output_device_v2.transform.
0123       </description>
0124       <arg name="mode" type="new_id" interface="kde_output_device_mode_v2"/>
0125     </event>
0126   
0127     <event name="done">
0128       <description summary="sent all information about output">
0129         This event is sent after all other properties have been
0130         sent on binding to the output object as well as after any
0131         other output property change have been applied later on.
0132         This allows to see changes to the output properties as atomic,
0133         even if multiple events successively announce them.
0134       </description>
0135     </event>
0136   
0137     <event name="scale">
0138       <description summary="output scaling properties">
0139         This event contains scaling geometry information
0140         that is not in the geometry event. It may be sent after
0141         binding the output object or if the output scale changes
0142         later. If it is not sent, the client should assume a
0143         scale of 1.
0144   
0145         A scale larger than 1 means that the compositor will
0146         automatically scale surface buffers by this amount
0147         when rendering. This is used for high resolution
0148         displays where applications rendering at the native
0149         resolution would be too small to be legible.
0150   
0151         It is intended that scaling aware clients track the
0152         current output of a surface, and if it is on a scaled
0153         output it should use wl_surface.set_buffer_scale with
0154         the scale of the output. That way the compositor can
0155         avoid scaling the surface, and the client can supply
0156         a higher detail image.
0157       </description>
0158       <arg name="factor" type="fixed" summary="scaling factor of output"/>
0159     </event>
0160   
0161     <event name="edid">
0162       <description summary="advertise EDID data for the output">
0163         The edid event encapsulates the EDID data for the outputdevice.
0164   
0165         The event is sent when binding to the output object. The EDID
0166         data may be empty, in which case this event is sent anyway.
0167         If the EDID information is empty, you can fall back to the name
0168         et al. properties of the outputdevice.
0169       </description>
0170       <arg name="raw" type="string" summary="base64-encoded EDID string"/>
0171     </event>
0172     
0173     <event name="enabled">
0174       <description summary="output is enabled or disabled">
0175         The enabled event notifies whether this output is currently
0176         enabled and used for displaying content by the server.
0177         The event is sent when binding to the output object and
0178         whenever later on an output changes its state by becoming
0179         enabled or disabled.
0180       </description>
0181       <arg name="enabled" type="int" summary="output enabled state"/>
0182     </event>
0183   
0184     <event name="uuid">
0185       <description summary="A unique id for this outputdevice">
0186         The uuid can be used to identify the output. It's controlled by
0187         the server entirely. The server should make sure the uuid is
0188         persistent across restarts. An empty uuid is considered invalid.
0189       </description>
0190       <arg name="uuid" type="string" summary="output devices ID"/>
0191     </event>
0192   
0193     <event name="serial_number">
0194       <description summary="Serial Number">
0195         Serial ID of the monitor, sent on startup before the first done event.
0196       </description>
0197       <arg name="serialNumber" type="string"
0198           summary="textual representation of serial number"/>
0199     </event>
0200     <event name="eisa_id">
0201       <description summary="EISA ID">
0202         EISA ID of the monitor, sent on startup before the first done event.
0203       </description>
0204       <arg name="eisaId" type="string"
0205          summary="textual representation of EISA identifier"/>
0206     </event>
0207   
0208     <enum name="capability" bitfield="true">
0209       <description summary="describes capabilities of the outputdevice">
0210         Describes what capabilities this device has.
0211       </description>
0212       <entry name="overscan" value="0x1"
0213            summary="if this output_device can use overscan"/>
0214       <entry name="vrr" value="0x2"
0215            summary="if this outputdevice supports variable refresh rate"/>
0216       <entry name="rgb_range" value="0x4"
0217              summary="if setting the rgb range is possible"/>
0218       <entry name="high_dynamic_range" value="0x8" since="3"
0219              summary="if this outputdevice supports high dynamic range"/>
0220       <entry name="wide_color_gamut" value="0x10" since="3"
0221              summary="if this outputdevice supports a wide color gamut"/>
0222       <entry name="auto_rotate" value="0x20" since="4"
0223              summary="if this outputdevice supports autorotation"/>
0224       <entry name="icc_profile" value="0x40" since="5"
0225              summary="if this outputdevice supports icc profiles"/>
0226     </enum>
0227   
0228     <event name="capabilities">
0229       <description summary="capability flags">
0230         What capabilities this device has, sent on startup before the first
0231         done event.
0232       </description>
0233       <arg name="flags" type="uint" enum="capability"/>
0234     </event>
0235   
0236     <event name="overscan">
0237       <description summary="overscan">
0238         Overscan value of the monitor in percent, sent on startup before the
0239         first done event.
0240       </description>
0241       <arg name="overscan" type="uint"
0242          summary="amount of overscan of the monitor"/>
0243     </event>
0244 
0245     <enum name="vrr_policy">
0246       <description summary="describes vrr policy">
0247         Describes when the compositor may employ variable refresh rate
0248       </description>
0249       <entry name="never" value="0"/>
0250       <entry name="always" value="1"/>
0251       <entry name="automatic" value="2"/>
0252     </enum>
0253 
0254     <event name="vrr_policy">
0255       <description summary="Variable Refresh Rate Policy">
0256         What policy the compositor will employ regarding its use of variable
0257         refresh rate.
0258       </description>
0259       <arg name="vrr_policy" type="uint" enum="vrr_policy"/>
0260     </event>
0261 
0262     <enum name="rgb_range">
0263       <description summary="describes RGB range policy">
0264         Whether full or limited color range should be used
0265       </description>
0266       <entry name="automatic" value="0"/>
0267       <entry name="full" value="1"/>
0268       <entry name="limited" value="2"/>
0269     </enum>
0270 
0271     <event name="rgb_range">
0272       <description summary="RGB range">
0273         What rgb range the compositor is using for this output
0274       </description>
0275       <arg name="rgb_range" type="uint" enum="rgb_range"/>
0276     </event>
0277 
0278     <event name="name" since="2">
0279       <description summary="Output's name">
0280         Name of the output, it's useful to cross-reference to an zxdg_output_v1 and ultimately QScreen
0281       </description>
0282       <arg name="name" type="string"/>
0283     </event>
0284 
0285     <event name="high_dynamic_range" since="3">
0286       <description summary="if HDR is enabled">
0287         Whether or not high dynamic range is enabled for this output
0288       </description>
0289       <arg name="hdr_enabled" type="uint" summary="1 if enabled, 0 if disabled"/>
0290     </event>
0291 
0292     <event name="sdr_brightness" since="3">
0293       <description summary="the brightness of sdr if hdr is enabled">
0294         If high dynamic range is used, this value defines the brightness in nits for content
0295         that's in standard dynamic range format. Note that while the value is in nits, that
0296         doesn't necessarily translate to the same brightness on the screen.
0297       </description>
0298       <arg name="sdr_brightness" type="uint"/>
0299     </event>
0300 
0301     <event name="wide_color_gamut" since="3">
0302       <description summary="if WCG is enabled">
0303         Whether or not the use of a wide color gamut is enabled for this output
0304       </description>
0305       <arg name="wcg_enabled" type="uint" summary="1 if enabled, 0 if disabled"/>
0306     </event>
0307 
0308     <enum name="auto_rotate_policy">
0309       <description summary="describes when auto rotate should be used"/>
0310       <entry name="never" value="0"/>
0311       <entry name="in_tablet_mode" value="1"/>
0312       <entry name="always" value="2"/>
0313     </enum>
0314 
0315     <event name="auto_rotate_policy" since="4">
0316       <description summary="describes when auto rotate is used"/>
0317       <arg name="policy" type="uint" enum="auto_rotate_policy"/>
0318     </event>
0319 
0320     <event name="icc_profile_path" since="5">
0321       <description summary="describes when auto rotate is used"/>
0322       <arg name="profile_path" type="string"/>
0323     </event>
0324 
0325     <event name="brightness_metadata" since="6">
0326       <description summary="metadata about the screen's brightness limits"/>
0327       <arg name="max_peak_brightness" type="uint" summary="in nits"/>
0328       <arg name="max_frame_average_brightness" type="uint" summary="in nits"/>
0329       <arg name="min_brightness" type="uint" summary="in 0.0001 nits"/>
0330     </event>
0331 
0332     <event name="brightness_overrides" since="6">
0333       <description summary="overrides for the screen's brightness limits"/>
0334       <arg name="max_peak_brightness" type="int" summary="-1 for no override, positive values are the brightness in nits"/>
0335       <arg name="max_average_brightness" type="int" summary="-1 for no override, positive values are the brightness in nits"/>
0336       <arg name="min_brightness" type="int" summary="-1 for no override, positive values are the brightness in 0.0001 nits"/>
0337     </event>
0338 
0339     <event name="sdr_gamut_wideness" since="6">
0340       <description summary="describes which gamut is assumed for sRGB applications">
0341           This can be used to provide the colors users assume sRGB applications should have based on the
0342           default experience on many modern sRGB screens.
0343       </description>
0344       <arg name="gamut_wideness" type="uint" summary="0 means rec.709 primaries, 10000 means native primaries"/>
0345     </event>
0346   </interface>
0347 
0348   <interface name="kde_output_device_mode_v2" version="1">
0349     <description summary="output mode">
0350       This object describes an output mode.
0351 
0352       Some heads don't support output modes, in which case modes won't be
0353       advertised.
0354 
0355       Properties sent via this interface are applied atomically via the
0356       kde_output_device.done event. No guarantees are made regarding the order
0357       in which properties are sent.
0358     </description>
0359 
0360     <event name="size">
0361       <description summary="mode size">
0362         This event describes the mode size. The size is given in physical
0363         hardware units of the output device. This is not necessarily the same as
0364         the output size in the global compositor space. For instance, the output
0365         may be scaled or transformed.
0366       </description>
0367       <arg name="width" type="int" summary="width of the mode in hardware units"/>
0368       <arg name="height" type="int" summary="height of the mode in hardware units"/>
0369     </event>
0370 
0371     <event name="refresh">
0372       <description summary="mode refresh rate">
0373         This event describes the mode's fixed vertical refresh rate. It is only
0374         sent if the mode has a fixed refresh rate.
0375       </description>
0376       <arg name="refresh" type="int" summary="vertical refresh rate in mHz"/>
0377     </event>
0378 
0379     <event name="preferred">
0380       <description summary="mode is preferred">
0381         This event advertises this mode as preferred.
0382       </description>
0383     </event>
0384 
0385     <event name="removed">
0386       <description summary="the mode has been destroyed">
0387         The compositor will destroy the object immediately after sending this
0388         event, so it will become invalid and the client should release any
0389         resources associated with it.
0390       </description>
0391     </event>
0392   </interface>
0393 
0394 </protocol>