diff options
Diffstat (limited to 'protocol')
| -rw-r--r-- | protocol/kde-output-device-v2.xml | 633 | ||||
| -rw-r--r-- | protocol/meson.build | 1 |
2 files changed, 634 insertions, 0 deletions
diff --git a/protocol/kde-output-device-v2.xml b/protocol/kde-output-device-v2.xml new file mode 100644 index 0000000..405f038 --- /dev/null +++ b/protocol/kde-output-device-v2.xml @@ -0,0 +1,633 @@ +<?xml version="1.0" encoding="UTF-8"?> +<protocol name="kde_output_device_v2"> + <copyright><![CDATA[ + SPDX-FileCopyrightText: 2008-2011 Kristian Høgsberg + SPDX-FileCopyrightText: 2010-2011 Intel Corporation + SPDX-FileCopyrightText: 2012-2013 Collabora, Ltd. + SPDX-FileCopyrightText: 2015 Sebastian Kügler <sebas@kde.org> + SPDX-FileCopyrightText: 2021 Méven Car <meven.car@enioka.com> + + SPDX-License-Identifier: MIT-CMU + ]]></copyright> + + <interface name="kde_output_device_registry_v2" version="23"> + <description summary="output devices"> + This interface can be used to list output devices. + + If this global is bound with a version less than 21, the unsupported_version + protocol error will be posted. + </description> + + <enum name="error"> + <description summary="kde_output_device_registry_v2 error values"> + These errors can be emitted in response to some requests. + </description> + <entry name="unsupported_version" value="0" + summary="the registry was bound with an unsupported version"/> + </enum> + + <event name="finished" type="destructor" since="21"> + <description summary="no new output announcements"> + This event is sent in response to the stop request. The compositor will + immediately destroy the object after sending this event. + </description> + </event> + + <request name="stop" since="21"> + <description summary="stop receiving updates"> + This request indicates that the client no longer wants to receive new + output announcements. The compositor will send the + kde_output_device_registry_v2.finished event in response to this request. + The compositor may still send new output announcements after calling this + request until the kde_output_device_registry_v2.finished event is sent. + </description> + </request> + + <event name="output" since="21"> + <description summary="new available output"> + This event is sent when a new output is connected or after binding this + global to list all available outputs. + </description> + <arg name="output" type="new_id" interface="kde_output_device_v2"/> + </event> + </interface> + + <interface name="kde_output_device_v2" version="23"> + <description summary="output configuration representation"> + An output device describes a display device available to the compositor. + output_device is similar to wl_output, but focuses on output + configuration management. + + A client can query all global output_device objects to enlist all + available display devices, even those that may currently not be + represented by the compositor as a wl_output. + + The client sends configuration changes to the server through the + outputconfiguration interface, and the server applies the configuration + changes to the hardware and signals changes to the output devices + accordingly. + + This object is published as global during start up for every available + display devices, or when one later becomes available, for example by + being hotplugged via a physical connector. + + Warning! The protocol described in this file is a desktop environment + implementation detail. Regular clients must not use this protocol. + Backward incompatible changes may be added without bumping the major + version of the extension. + </description> + + <enum name="subpixel"> + <description summary="subpixel geometry information"> + This enumeration describes how the physical pixels on an output are + laid out. + </description> + <entry name="unknown" value="0"/> + <entry name="none" value="1"/> + <entry name="horizontal_rgb" value="2"/> + <entry name="horizontal_bgr" value="3"/> + <entry name="vertical_rgb" value="4"/> + <entry name="vertical_bgr" value="5"/> + </enum> + + <enum name="transform"> + <description summary="transform from framebuffer to output"> + This describes the transform, that a compositor will apply to a + surface to compensate for the rotation or mirroring of an + output device. + + The flipped values correspond to an initial flip around a + vertical axis followed by rotation. + + The purpose is mainly to allow clients to render accordingly and + tell the compositor, so that for fullscreen surfaces, the + compositor is still able to scan out directly client surfaces. + </description> + + <entry name="normal" value="0"/> + <entry name="90" value="1"/> + <entry name="180" value="2"/> + <entry name="270" value="3"/> + <entry name="flipped" value="4"/> + <entry name="flipped_90" value="5"/> + <entry name="flipped_180" value="6"/> + <entry name="flipped_270" value="7"/> + </enum> + + <event name="geometry"> + <description summary="geometric properties of the output"> + The geometry event describes geometric properties of the output. + The event is sent when binding to the output object and whenever + any of the properties change. + </description> + <arg name="x" type="int" + summary="x position within the global compositor space"/> + <arg name="y" type="int" + summary="y position within the global compositor space"/> + <arg name="physical_width" type="int" + summary="width in millimeters of the output"/> + <arg name="physical_height" type="int" + summary="height in millimeters of the output"/> + <arg name="subpixel" type="int" + summary="subpixel orientation of the output"/> + <arg name="make" type="string" + summary="textual description of the manufacturer"/> + <arg name="model" type="string" + summary="textual description of the model"/> + <arg name="transform" type="int" + summary="transform that maps framebuffer to output"/> + </event> + + <event name="current_mode"> + <description summary="current mode"> + This event describes the mode currently in use for this head. It is only + sent if the output is enabled. + </description> + <arg name="mode" type="object" interface="kde_output_device_mode_v2"/> + </event> + + <event name="mode"> + <description summary="advertise available output modes and current one"> + The mode event describes an available mode for the output. + + When the client binds to the output_device object, the server sends this + event once for every available mode the output_device can be operated by. + + There will always be at least one event sent out on initial binding, + which represents the current mode. + + Later if an output changes, its mode event is sent again for the + eventual added modes and lastly the current mode. In other words, the + current mode is always represented by the latest event sent with the current + flag set. + + The size of a mode is given in physical hardware units of the output device. + This is not necessarily the same as the output size in the global compositor + space. For instance, the output may be scaled, as described in + kde_output_device_v2.scale, or transformed, as described in + kde_output_device_v2.transform. + </description> + <arg name="mode" type="new_id" interface="kde_output_device_mode_v2"/> + </event> + + <event name="done"> + <description summary="sent all information about output"> + This event is sent after all other properties have been + sent on binding to the output object as well as after any + other output property change have been applied later on. + This allows to see changes to the output properties as atomic, + even if multiple events successively announce them. + </description> + </event> + + <event name="scale"> + <description summary="output scaling properties"> + This event contains scaling geometry information + that is not in the geometry event. It may be sent after + binding the output object or if the output scale changes + later. If it is not sent, the client should assume a + scale of 1. + + A scale larger than 1 means that the compositor will + automatically scale surface buffers by this amount + when rendering. This is used for high resolution + displays where applications rendering at the native + resolution would be too small to be legible. + + It is intended that scaling aware clients track the + current output of a surface, and if it is on a scaled + output it should use wl_surface.set_buffer_scale with + the scale of the output. That way the compositor can + avoid scaling the surface, and the client can supply + a higher detail image. + </description> + <arg name="factor" type="fixed" summary="scaling factor of output"/> + </event> + + <event name="edid"> + <description summary="advertise EDID data for the output"> + The edid event encapsulates the EDID data for the outputdevice. + + The event is sent when binding to the output object. The EDID + data may be empty, in which case this event is sent anyway. + If the EDID information is empty, you can fall back to the name + et al. properties of the outputdevice. + </description> + <arg name="raw" type="string" summary="base64-encoded EDID string"/> + </event> + + <event name="enabled"> + <description summary="output is enabled or disabled"> + The enabled event notifies whether this output is currently + enabled and used for displaying content by the server. + The event is sent when binding to the output object and + whenever later on an output changes its state by becoming + enabled or disabled. + </description> + <arg name="enabled" type="int" summary="output enabled state"/> + </event> + + <event name="uuid"> + <description summary="A unique id for this outputdevice"> + The uuid can be used to identify the output. It's controlled by + the server entirely. The server should make sure the uuid is + persistent across restarts. An empty uuid is considered invalid. + </description> + <arg name="uuid" type="string" summary="output devices ID"/> + </event> + + <event name="serial_number"> + <description summary="Serial Number"> + Serial ID of the monitor, sent on startup before the first done event. + </description> + <arg name="serialNumber" type="string" + summary="textual representation of serial number"/> + </event> + <event name="eisa_id"> + <description summary="EISA ID"> + EISA ID of the monitor, sent on startup before the first done event. + </description> + <arg name="eisaId" type="string" + summary="textual representation of EISA identifier"/> + </event> + + <enum name="capability" bitfield="true"> + <description summary="describes capabilities of the outputdevice"> + Describes what capabilities this device has. + </description> + <entry name="overscan" value="0x1" + summary="if this output_device can use overscan"/> + <entry name="vrr" value="0x2" + summary="if this outputdevice supports variable refresh rate"/> + <entry name="rgb_range" value="0x4" + summary="if setting the rgb range is possible"/> + <entry name="high_dynamic_range" value="0x8" since="3" + summary="if this outputdevice supports high dynamic range"/> + <entry name="wide_color_gamut" value="0x10" since="3" + summary="if this outputdevice supports a wide color gamut"/> + <entry name="auto_rotate" value="0x20" since="4" + summary="if this outputdevice supports autorotation"/> + <entry name="icc_profile" value="0x40" since="5" + summary="if this outputdevice supports icc profiles"/> + <entry name="brightness" value="0x80" since="9" + summary="if this outputdevice supports the brightness setting"/> + <entry name="built_in_color" value="0x100" since="12" + summary="if this outputdevice supports the built-in color profile"/> + <entry name="ddc_ci" value="0x200" since="14" + summary="if this outputdevice supports DDC/CI"/> + <entry name="max_bits_per_color" value="0x400" since="15" + summary="if this outputdevice supports setting max bpc"/> + <entry name="edr" value="0x800" since="16" + summary="if this outputdevice supports EDR"/> + <entry name="sharpness" value="0x1000" since="17" + summary="if this outputdevice supports the sharpness setting"/> + <entry name="custom_modes" value="0x2000" since="18" + summary="if this outputdevice supports custom modes"/> + <entry name="auto_brightness" value = "0x4000" since="19"/> + <entry name="hdr_icc_profile" value="0x8000" since="22" + summary="if this outputdevice supports HDR ICC profiles"/> + <entry name="abm_level" value="0x10000" since="23" + summary="if this outputdevice supports the abm level setting"/> + </enum> + + <event name="capabilities"> + <description summary="capability flags"> + What capabilities this device has, sent on startup before the first + done event. + </description> + <arg name="flags" type="uint" enum="capability"/> + </event> + + <event name="overscan"> + <description summary="overscan"> + Overscan value of the monitor in percent, sent on startup before the + first done event. + </description> + <arg name="overscan" type="uint" + summary="amount of overscan of the monitor"/> + </event> + + <enum name="vrr_policy"> + <description summary="describes vrr policy"> + Describes when the compositor may employ variable refresh rate + </description> + <entry name="never" value="0"/> + <entry name="always" value="1"/> + <entry name="automatic" value="2"/> + </enum> + + <event name="vrr_policy"> + <description summary="Variable Refresh Rate Policy"> + What policy the compositor will employ regarding its use of variable + refresh rate. + </description> + <arg name="vrr_policy" type="uint" enum="vrr_policy"/> + </event> + + <enum name="rgb_range"> + <description summary="describes RGB range policy"> + Whether full or limited color range should be used + </description> + <entry name="automatic" value="0"/> + <entry name="full" value="1"/> + <entry name="limited" value="2"/> + </enum> + + <event name="rgb_range"> + <description summary="RGB range"> + What rgb range the compositor is using for this output + </description> + <arg name="rgb_range" type="uint" enum="rgb_range"/> + </event> + + <event name="name" since="2"> + <description summary="Output's name"> + Name of the output, it's useful to cross-reference to an zxdg_output_v1 and ultimately QScreen + </description> + <arg name="name" type="string"/> + </event> + + <event name="high_dynamic_range" since="3"> + <description summary="if HDR is enabled"> + Whether or not high dynamic range is enabled for this output + </description> + <arg name="hdr_enabled" type="uint" summary="1 if enabled, 0 if disabled"/> + </event> + + <event name="sdr_brightness" since="3"> + <description summary="the brightness of sdr if hdr is enabled"> + If high dynamic range is used, this value defines the brightness in nits for content + that's in standard dynamic range format. Note that while the value is in nits, that + doesn't necessarily translate to the same brightness on the screen. + </description> + <arg name="sdr_brightness" type="uint"/> + </event> + + <event name="wide_color_gamut" since="3"> + <description summary="if WCG is enabled"> + Whether or not the use of a wide color gamut is enabled for this output + </description> + <arg name="wcg_enabled" type="uint" summary="1 if enabled, 0 if disabled"/> + </event> + + <enum name="auto_rotate_policy"> + <description summary="describes when auto rotate should be used"/> + <entry name="never" value="0"/> + <entry name="in_tablet_mode" value="1"/> + <entry name="always" value="2"/> + </enum> + + <event name="auto_rotate_policy" since="4"> + <description summary="describes when auto rotate is used"/> + <arg name="policy" type="uint" enum="auto_rotate_policy"/> + </event> + + <event name="icc_profile_path" since="5"> + <description summary="describes the path to the ICC profile used in SDR mode"/> + <arg name="profile_path" type="string"/> + </event> + + <event name="brightness_metadata" since="6"> + <description summary="metadata about the screen's brightness limits"/> + <arg name="max_peak_brightness" type="uint" summary="in nits"/> + <arg name="max_frame_average_brightness" type="uint" summary="in nits"/> + <arg name="min_brightness" type="uint" summary="in 0.0001 nits"/> + </event> + + <event name="brightness_overrides" since="6"> + <description summary="overrides for the screen's brightness limits"/> + <arg name="max_peak_brightness" type="int" summary="-1 for no override, positive values are the brightness in nits"/> + <arg name="max_average_brightness" type="int" summary="-1 for no override, positive values are the brightness in nits"/> + <arg name="min_brightness" type="int" summary="-1 for no override, positive values are the brightness in 0.0001 nits"/> + </event> + + <event name="sdr_gamut_wideness" since="6"> + <description summary="describes which gamut is assumed for sRGB applications"> + This can be used to provide the colors users assume sRGB applications should have based on the + default experience on many modern sRGB screens. + </description> + <arg name="gamut_wideness" type="uint" summary="0 means rec.709 primaries, 10000 means native primaries"/> + </event> + + <enum name="color_profile_source" since="7"> + <description summary="which source the compositor should use for the color profile on an output"/> + <entry name="sRGB" value="0"/> + <entry name="ICC" value="1"/> + <entry name="EDID" value="2"/> + </enum> + + <event name="color_profile_source" since="7"> + <description summary="describes which source the compositor uses for the color profile on an output in SDR mode"/> + <arg name="source" type="uint" enum="color_profile_source"/> + </event> + + <event name="brightness" since="8"> + <description summary="brightness multiplier"> + This is the brightness modifier of the output. It doesn't specify + any absolute values, but is merely a multiplier on top of other + brightness values, like sdr_brightness and brightness_metadata. + 0 is the minimum brightness (not completely dark) and 10000 is + the maximum brightness. + This is currently only supported / meaningful while HDR is active. + </description> + <arg name="brightness" type="uint" summary="brightness in 0-10000"/> + </event> + + <enum name="color_power_tradeoff"> + <description summary="tradeoff between power and accuracy"> + The compositor can do a lot of things that trade between + performance, power and color accuracy. This setting describes + a high level preference from the user about in which direction + that tradeoff should be made. + </description> + <entry name="efficiency" value="0" summary="prefer efficiency and performance"/> + <entry name="accuracy" value="1" summary="prefer accuracy"/> + </enum> + + <event name="color_power_tradeoff" since="10"> + <description summary="the preferred color/power tradeoff"/> + <arg name="preference" type="uint" enum="color_power_tradeoff"/> + </event> + + <event name="dimming" since="11"> + <description summary="dimming multiplier"> + This is the dimming multiplier of the output. This is similar to + the brightness setting, except it's meant to be a temporary setting + only, not persistent and may be implemented differently depending + on the display. + 0 is the minimum dimming factor (not completely dark) and 10000 + means the output is not dimmed. + </description> + <arg name="multiplier" type="uint" summary="multiplier in 0-10000"/> + </event> + + <event name="replication_source" since="13"> + <description summary="source output for mirroring"/> + <arg name="source" type="string" summary="uuid of the source output"/> + </event> + + <event name="ddc_ci_allowed" since="14"> + <description summary="if DDC/CI should be used to control brightness etc."> + If the ddc_ci capability is present, this determines if settings + such as brightness, contrast or others should be set using DDC/CI. + </description> + <arg name="allowed" type="uint" summary="1 if allowed, 0 if disabled"/> + </event> + + <event name="max_bits_per_color" since="15"> + <description summary="override max bpc"> + This limits the amount of bits per color that are sent to the display. + </description> + <arg name="max_bpc" type="uint" summary="0 for the default / automatic"/> + </event> + + <event name="max_bits_per_color_range" since="15"> + <description summary="range of max bits per color value"/> + <arg name="min_value" type="uint" summary="the minimum supported by the driver"/> + <arg name="max_value" type="uint" summary="the maximum supported by the driver"/> + </event> + + <event name="automatic_max_bits_per_color_limit" since="15"> + <description summary="if and to what value automatic max bpc is limited"/> + <arg name="max_bpc_limit" type="uint" + summary="which value automatic bpc gets limited to. 0 if not limited"/> + </event> + + <enum name="edr_policy" since="16"> + <description summary="when the compositor may make use of EDR"/> + <entry name="never" value="0"/> + <entry name="always" value="1"/> + </enum> + + <event name="edr_policy" since="16"> + <description summary="when the compositor may apply EDR"> + When EDR is enabled, the compositor may increase the backlight beyond + the user-specified setting, in order to present HDR content on displays + without native HDR support. + This will usually result in better visuals, but also increases battery + usage. + </description> + <arg name="policy" type="uint" enum="edr_policy"/> + </event> + + <event name="sharpness" since="17"> + <description summary="sharpness strength"> + This is the sharpness modifier of the output. + 0 is sharpness disabled and 10000 is the maximum sharpness + </description> + <arg name="sharpness" type="uint" summary="sharpness in 0-10000"/> + </event> + + <event name="priority" since="18"> + <description summary="output priority"> + Describes the position of the output in the output order list, + with lower values being earlier in the list. There's no specific + value the list has to start at, this value is only used in sorting + outputs. + + Note that the output order protocol is not sufficient for this, + as an output may not be in the output order if it's disabled or + mirroring another screen. + </description> + <arg name="priority" type="uint" summary="priority"/> + </event> + + <event name="auto_brightness" since="20"> + <description summary="whether or not automatic brightness is enabled"/> + <arg name="enabled" type="uint" summary="1 for enabled, 0 for disabled"/> + </event> + + <request name="release" type="destructor" since="21"> + <description summary="destroy the output device"> + This notifies the compositor that the client no longer wishes to use + the kde_output_device_v2 object. + </description> + </request> + + <event name="removed" since="21"> + <description summary="the output has been removed"> + This event is sent when the output device is disconnected and no new + updates will be sent. The client should call the kde_output_device_v2.release + request after receiving this event. + </description> + </event> + + <event name="hdr_icc_profile_path" since="22"> + <description summary="describes the path to the ICC profile used in HDR mode"/> + <arg name="profile_path" type="string"/> + </event> + + <event name="hdr_color_profile_source" since="22"> + <description summary="describes which source the compositor uses for the color profile on an output in HDR mode"/> + <arg name="source" type="uint" enum="color_profile_source"/> + </event> + + <event name="abm_level" since="23"> + <description summary="allowed level of adaptive backlight modulation"> + Adaptive backlight modulation is a feature that reduces the backlight + and increases contrast of colors on the screen to improve power usage. + </description> + <arg name="level" type="uint" summary="0 is off, 4 is the maximum level"/> + </event> + </interface> + + <interface name="kde_output_device_mode_v2" version="22"> + <description summary="output mode"> + This object describes an output mode. + + Some heads don't support output modes, in which case modes won't be + advertised. + + Properties sent via this interface are applied atomically via the + kde_output_device.done event. No guarantees are made regarding the order + in which properties are sent. + </description> + + <event name="size"> + <description summary="mode size"> + This event describes the mode size. The size is given in physical + hardware units of the output device. This is not necessarily the same as + the output size in the global compositor space. For instance, the output + may be scaled or transformed. + </description> + <arg name="width" type="int" summary="width of the mode in hardware units"/> + <arg name="height" type="int" summary="height of the mode in hardware units"/> + </event> + + <event name="refresh"> + <description summary="mode refresh rate"> + This event describes the mode's fixed vertical refresh rate. It is only + sent if the mode has a fixed refresh rate. + </description> + <arg name="refresh" type="int" summary="vertical refresh rate in mHz"/> + </event> + + <event name="preferred"> + <description summary="mode is preferred"> + This event advertises this mode as preferred. + </description> + </event> + + <event name="removed"> + <description summary="the mode has been destroyed"> + The compositor will destroy the object immediately after sending this + event, so it will become invalid and the client should release any + resources associated with it. + </description> + </event> + + <enum name="flags"> + <description summary="mode flags"/> + <entry name="custom" value="0x1"/> + <entry name="reduced_blanking" value="0x2"/> + </enum> + + <event name="flags" since="19"> + <description summary="mode flags"> + This event describes the mode's flags. + </description> + <arg name="flags" type="uint" enum="flags"/> + </event> + </interface> + +</protocol> diff --git a/protocol/meson.build b/protocol/meson.build index bbdccba..da3b184 100644 --- a/protocol/meson.build +++ b/protocol/meson.build @@ -16,6 +16,7 @@ wayland_scanner_client = generator( protocols = [ 'xdg-output-unstable-v1.xml', + 'kde-output-device-v2.xml', ] protocol_src = [] |
