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>