A KDE host on Nobara stopped disabling its physical screens and creating the virtual output the moment it updated: streaming still came up, but bring-up took ~26 s and the streamed output never became the desktop (`also_disabled=[]`). Root cause is not our topology logic — it's that every `kscreen-doctor` call on the reporter's session wedges. kscreen-doctor drives libkscreen, which (per setup) waits on the kscreen KDED module over D-Bus; when that layer is stuck it blocks in its own connect and never returns, so all five topology queries hit their 5 s budget and got killed (host log). Reproduced live on a Nobara / KWin 6.6.4 box: `kscreen-doctor -j` there times out at 8 s, every time. But the compositor's OWN Wayland is fully responsive on that same session — the host just created a virtual output over it via zkde_screencast. So drive the topology (resolve our output, take primary, disable the physical/bootstrap outputs, capture their modes, re-enable on teardown, position) directly over `kde_output_management_v2` + `kde_output_device_v2` instead of shelling out. On that same Nobara box the in-process path binds management (v19) and enumerates the outputs in 2.4 ms — ~3400x faster than the 8 s hang, and immune to whatever wedges the standalone tool. - vendor kde-output-management-v2 / kde-output-device-v2 (KWin advertises mgmt v19, device v20); generate client bindings inline (the interdependent-protocol module split from the wayland-protocols crate; needs the `bitflags` dep for the device protocol's bitfield enums). - new `kwin_output_mgmt`: bounded enumerate-then-apply over one Wayland connection; every wait is time-bounded so a genuinely wedged compositor degrades to `handled = false` and the old kscreen-doctor path still runs. - `kwin::create` topology + `apply_position` prefer the in-process path (address our output by its stable device UUID, supersede-robust) with kscreen-doctor as the fallback. The 60 Hz path now makes ZERO kscreen-doctor calls; only the >60 Hz custom-mode install still shells out (its in-process port is a follow-up). Verified on Linux: cargo test -p pf-vdisplay (73 pass), clippy --all-targets -D warnings clean, fmt clean, punktfunk-host checks clean. In-process enumeration proven live against KWin 6.6.4 (the reporter's env); the disable/apply path is not yet on-glass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
540 lines
25 KiB
XML
540 lines
25 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<protocol name="kde_output_management_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-FileCopyrightText: 2023 Xaver Hugl <xaver.hugl@kde.org>
|
|
|
|
SPDX-License-Identifier: MIT-CMU
|
|
]]></copyright>
|
|
|
|
<interface name="kde_output_management_v2" version="22">
|
|
<description summary="configuration of server outputs through clients">
|
|
This interface enables clients to set properties of output devices for screen
|
|
configuration purposes via the server. To this end output devices are referenced
|
|
by global kde_output_device_v2 objects.
|
|
|
|
outputmanagement (wl_global)
|
|
--------------------------
|
|
request:
|
|
* create_configuration -> outputconfiguration (wl_resource)
|
|
|
|
outputconfiguration (wl_resource)
|
|
--------------------------
|
|
requests:
|
|
* enable(outputdevice, bool)
|
|
* mode(outputdevice, mode)
|
|
* transformation(outputdevice, flag)
|
|
* position(outputdevice, x, y)
|
|
* apply
|
|
|
|
events:
|
|
* applied
|
|
* failed
|
|
|
|
The server registers one outputmanagement object as a global object. In order
|
|
to configure outputs a client requests create_configuration, which provides a
|
|
resource referencing an outputconfiguration for one-time configuration. That
|
|
way the server knows which requests belong together and can group them by that.
|
|
|
|
On the outputconfiguration object the client calls for each output whether the
|
|
output should be enabled, which mode should be set (by referencing the mode from
|
|
the list of announced modes) and the output's global position. Once all outputs
|
|
are configured that way, the client calls apply.
|
|
At that point and not earlier the server should try to apply the configuration.
|
|
If this succeeds the server emits the applied signal, otherwise the failed
|
|
signal, such that the configuring client is noticed about the success of its
|
|
configuration request.
|
|
|
|
Through this design the interface enables atomic output configuration changes if
|
|
internally supported by the server.
|
|
|
|
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>
|
|
<request name="create_configuration">
|
|
<description summary="provide outputconfiguration object for configuring outputs">
|
|
Request an outputconfiguration object through which the client can configure
|
|
output devices.
|
|
</description>
|
|
<arg name="id" type="new_id" interface="kde_output_configuration_v2"/>
|
|
</request>
|
|
|
|
<request name="create_mode_list">
|
|
<description summary="create a list of custom modes">
|
|
For details, see the description of kde_mode_list_v2 and
|
|
kde_output_configuration_v2.set_custom_modes.
|
|
</description>
|
|
<arg name="id" type="new_id" interface="kde_mode_list_v2"/>
|
|
</request>
|
|
|
|
</interface>
|
|
|
|
<interface name="kde_output_configuration_v2" version="22">
|
|
<description summary="configure single output devices">
|
|
outputconfiguration is a client-specific resource that can be used to ask
|
|
the server to apply changes to available output devices.
|
|
|
|
The client receives a list of output devices from the registry. When it wants
|
|
to apply new settings, it creates a configuration object from the
|
|
outputmanagement global, writes changes through this object's enable, scale,
|
|
transform and mode calls. It then asks the server to apply these settings in
|
|
an atomic fashion, for example through Linux' DRM interface.
|
|
|
|
The server signals back whether the new settings have applied successfully
|
|
or failed to apply. outputdevice objects are updated after the changes have been
|
|
applied to the hardware and before the server side sends the applied event.
|
|
</description>
|
|
|
|
<enum name="error">
|
|
<description summary="kde_output_configuration_v2 error values">
|
|
These error can be emitted in response to kde_output_configuration_v2 requests.
|
|
</description>
|
|
<entry name="already_applied" value="0" summary="the config is already applied"/>
|
|
</enum>
|
|
|
|
<request name="enable">
|
|
<description summary="enable or disable an output">
|
|
Mark the output as enabled or disabled.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice to be en- or disabled"/>
|
|
<arg name="enable" type="int" summary="1 to enable or 0 to disable this output"/>
|
|
</request>
|
|
|
|
<request name="mode">
|
|
<description summary="switch output-device to mode">
|
|
Sets the mode for a given output.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this mode change applies to"/>
|
|
<arg name="mode" type="object" interface="kde_output_device_mode_v2" summary="the mode to apply"/>
|
|
</request>
|
|
|
|
<request name="transform">
|
|
<description summary="transform output-device">
|
|
Sets the transformation for a given output.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this transformation change applies to"/>
|
|
<arg name="transform" type="int" summary="transform enum"/>
|
|
</request>
|
|
|
|
<request name="position">
|
|
<description summary="position output in global space">
|
|
Sets the position for this output device. (x,y) describe the top-left corner
|
|
of the output in global space, whereby the origin (0,0) of the global space
|
|
has to be aligned with the top-left corner of the most left and in case this
|
|
does not define a single one the top output.
|
|
|
|
There may be no gaps or overlaps between outputs, i.e. the outputs are
|
|
stacked horizontally, vertically, or both on each other.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this position applies to"/>
|
|
<arg name="x" type="int" summary="position on the x-axis"/>
|
|
<arg name="y" type="int" summary="position on the y-axis"/>
|
|
</request>
|
|
|
|
<request name="scale">
|
|
<description summary="set scaling factor of this output">
|
|
Sets the scaling factor for this output device.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this scale change applies to"/>
|
|
<arg name="scale" type="fixed" summary="scaling factor"/>
|
|
</request>
|
|
|
|
<request name="apply">
|
|
<description summary="apply configuration changes to all output devices">
|
|
Asks the server to apply property changes requested through this outputconfiguration
|
|
object to all outputs on the server side.
|
|
|
|
The output configuration can be applied only once. The already_applied protocol error
|
|
will be posted if the apply request is called the second time.
|
|
</description>
|
|
</request>
|
|
|
|
<event name="applied">
|
|
<description summary="configuration changes have been applied">
|
|
Sent after the server has successfully applied the changes.
|
|
.
|
|
</description>
|
|
</event>
|
|
|
|
<event name="failed">
|
|
<description summary="configuration changes failed to apply">
|
|
Sent if the server rejects the changes or failed to apply them.
|
|
</description>
|
|
</event>
|
|
|
|
<request name="destroy" type="destructor">
|
|
<description summary="release the outputconfiguration object"/>
|
|
</request>
|
|
|
|
<request name="overscan">
|
|
<description summary="set overscan value">
|
|
Set the overscan value of this output device with a value in percent.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice overscan applies to"/>
|
|
<arg name="overscan" type="uint" summary="overscan value"/>
|
|
</request>
|
|
|
|
<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>
|
|
|
|
<request name="set_vrr_policy">
|
|
<description summary="set the VRR policy">
|
|
Set what policy the compositor should employ regarding its use of
|
|
variable refresh rate.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this VRR policy applies to"/>
|
|
<arg name="policy" type="uint" enum="vrr_policy" summary="the vrr policy to apply"/>
|
|
</request>
|
|
|
|
<enum name="rgb_range">
|
|
<description summary="describes RGB range policy">
|
|
Whether this output should use full or limited rgb.
|
|
</description>
|
|
<entry name="automatic" value="0"/>
|
|
<entry name="full" value="1"/>
|
|
<entry name="limited" value="2"/>
|
|
</enum>
|
|
|
|
<request name="set_rgb_range">
|
|
<description summary="RGB range">
|
|
Whether full or limited color range should be used
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice the rgb range applies to"/>
|
|
<arg name="rgb_range" type="uint" enum="rgb_range"/>
|
|
</request>
|
|
|
|
<request name="set_primary_output" since="2">
|
|
<description summary="Select which primary output to use" />
|
|
<arg name="output" type="object" interface="kde_output_device_v2" allow-null="false"/>
|
|
</request>
|
|
|
|
<request name="set_priority" since="3">
|
|
<description summary="Set the order of outputs">
|
|
Set 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.
|
|
|
|
The order of outputs can be used to assign desktop environment components
|
|
to a specific screen, see kde_output_order_v1 and kde-output-device-v2 for
|
|
details. Note that for consistent behavior, the priority value needs to be
|
|
unique among all enabled outputs.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice the index applies to" />
|
|
<arg name="priority" type="uint" summary="the priority of the output" />
|
|
</request>
|
|
|
|
<request name="set_high_dynamic_range" since="4">
|
|
<description summary="change if HDR should be enabled">
|
|
Sets whether or not the output should be set to HDR mode.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="enable_hdr" type="uint" summary="1 to enable, 0 to disable hdr"/>
|
|
</request>
|
|
|
|
<request name="set_sdr_brightness" since="4">
|
|
<description summary="set the brightness for sdr content">
|
|
Sets the brightness of standard dynamic range content in nits. Only has an effect while the output is in HDR mode.
|
|
Note that while the value is in nits, that doesn't necessarily translate to the same brightness on the screen.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="sdr_brightness" type="uint"/>
|
|
</request>
|
|
|
|
<request name="set_wide_color_gamut" since="4">
|
|
<description summary="change if a wide color gamut should be used">
|
|
Whether or not the output should use a wide color gamut
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="enable_wcg" type="uint" summary="1 to enable, 0 to disable wcg"/>
|
|
</request>
|
|
|
|
<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>
|
|
|
|
<request name="set_auto_rotate_policy" since="5">
|
|
<description summary="change when auto rotate should be used"/>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="policy" type="uint" enum="auto_rotate_policy"/>
|
|
</request>
|
|
|
|
<request name="set_icc_profile_path" since="6">
|
|
<description summary="change the used icc profile for SDR mode"/>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="profile_path" type="string"/>
|
|
</request>
|
|
|
|
<request name="set_brightness_overrides" since="7">
|
|
<description summary="override metadata about the screen's brightness limits"/>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="max_peak_brightness" type="int" summary="-1 for not overriding, or positive values in nits"/>
|
|
<arg name="max_frame_average_brightness" type="int" summary="-1 for not overriding, or positive values in nits"/>
|
|
<arg name="min_brightness" type="int" summary="-1 for not overriding, or positive values in 0.0001 nits"/>
|
|
</request>
|
|
|
|
<request name="set_sdr_gamut_wideness" since="7">
|
|
<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="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="gamut_wideness" type="uint" summary="0 means rec.709 primaries, 10000 means native primaries"/>
|
|
</request>
|
|
|
|
<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>
|
|
|
|
<request name="set_color_profile_source" since="8">
|
|
<description summary="which source the compositor should use for the color profile on an output in SDR mode"/>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="color_profile_source" type="uint" enum="color_profile_source" summary="the color profile source"/>
|
|
</request>
|
|
|
|
<request name="set_brightness" since="9">
|
|
<description summary="brightness multiplier">
|
|
Set 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 supported while HDR is active in versions 8 and below,
|
|
or when the device supports the "brightness" capability in
|
|
versions 9 and above.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="brightness" type="uint" summary="brightness in 0-10000"/>
|
|
</request>
|
|
|
|
<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>
|
|
|
|
<request name="set_color_power_tradeoff" since="10">
|
|
<description summary="set the preferred color/power tradeoff"/>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="preference" type="uint" enum="color_power_tradeoff"/>
|
|
</request>
|
|
|
|
<request name="set_dimming" since="11">
|
|
<description summary="dimming multiplier">
|
|
Set 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.
|
|
|
|
This is supported only when the "brightness" capability is
|
|
also supported.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="multiplier" type="uint" summary="multiplier in 0-10000"/>
|
|
</request>
|
|
|
|
<event name="failure_reason" since="12">
|
|
<description summary="reason for failure">
|
|
Describes why applying the output configuration failed. Is only
|
|
sent before the failure event.
|
|
</description>
|
|
<arg name="reason" type="string" summary="reason for failure"/>
|
|
</event>
|
|
|
|
<request name="set_replication_source" since="13">
|
|
<description summary="source output for mirroring">
|
|
Set the source output that the outputdevice should mirror its
|
|
viewport from.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="source" type="string" summary="uuid of the source output"/>
|
|
</request>
|
|
|
|
<request name="set_ddc_ci_allowed" since="14">
|
|
<description summary="if DDC/CI should be used to control brightness etc."/>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="allowed" type="uint" summary="1 if allowed, 0 if disabled"/>
|
|
</request>
|
|
|
|
<request name="set_max_bits_per_color" since="15">
|
|
<description summary="override the max bpc">
|
|
This limits the amount of bits per color that are sent to the display.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="max_bpc" type="uint" summary="0 for the default / automatic"/>
|
|
</request>
|
|
|
|
<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>
|
|
|
|
<request name="set_edr_policy" since="16">
|
|
<description summary="set 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="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="policy" type="uint" enum="edr_policy"/>
|
|
</request>
|
|
|
|
<request name="set_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="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="sharpness" type="uint" summary="sharpness in 0-10000"/>
|
|
</request>
|
|
|
|
<request name="set_custom_modes" since="18">
|
|
<description summary="set the custom mode list">
|
|
Set the list of custom modes for this output. The compositor
|
|
will in response generate the requested modes and add them to
|
|
the output (or delete ones no longer in the list).
|
|
This can be useful for overclocking displays, or for working
|
|
around broken EDIDs.
|
|
Note that there is no guarantee for any custom mode to
|
|
actually work, or even to leave the display undamaged (in the
|
|
case of CRTs). It's entirely the responsibility of the user
|
|
to ensure each added mode is the right one for their display.
|
|
</description>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="modes" type="object" interface="kde_mode_list_v2"/>
|
|
</request>
|
|
|
|
<request name="set_auto_brightness" since="19">
|
|
<description summary="whether or not automatic brightness is enabled"/>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="enabled" type="uint" summary="1 for enabled, 0 for disabled"/>
|
|
</request>
|
|
|
|
<request name="set_hdr_icc_profile_path" since="20">
|
|
<description summary="change the used icc profile for HDR mode"/>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="profile_path" type="string"/>
|
|
</request>
|
|
|
|
<request name="set_hdr_color_profile_source" since="20">
|
|
<description summary="which source the compositor should use for the color profile on an output in HDR mode"/>
|
|
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="color_profile_source" type="uint" enum="color_profile_source" summary="the color profile source"/>
|
|
</request>
|
|
|
|
<request name="set_abm_level" since="21">
|
|
<description summary="set the 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="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
|
<arg name="level" type="uint" summary="0 is off, 4 is the maximum level"/>
|
|
</request>
|
|
</interface>
|
|
|
|
<interface name="kde_mode_list_v2" version="22">
|
|
<description summary="a list of custom modes">
|
|
This list is populated by first setting each relevant property,
|
|
and then calling add_mode to add a mode with these properties.
|
|
One would for example call
|
|
- set_resolution
|
|
- set_refresh_rate
|
|
- set_reduced_blanking
|
|
- add_mode
|
|
|
|
add_mode does not reset the properties that were previously set,
|
|
they are valid until the object is destroyed.
|
|
The compositor may additionally have sensible defaults for some
|
|
properties like reduced_blanking, but for consistent results,
|
|
it's best to always set each known property every time.
|
|
|
|
One can also specify custom modes with CVT timings, for example
|
|
- add_cvt
|
|
- add_cvt
|
|
|
|
The parameters resolution and refresh rate are required, if they
|
|
are not set, the missing_parameters error will be emitted.
|
|
</description>
|
|
|
|
<enum name="error">
|
|
<description summary="kde_mode_list_v2 error values">
|
|
These errors can be emitted in response to add_mode requests.
|
|
</description>
|
|
<entry name="missing_parameters" value="0" summary="a required parameter wasn't set"/>
|
|
</enum>
|
|
|
|
<request name="destroy" type="destructor">
|
|
<description summary="destroy the mode list object"/>
|
|
</request>
|
|
|
|
<request name="add_mode">
|
|
<description summary="Add the current mode configuration to the list"/>
|
|
</request>
|
|
|
|
<request name="set_resolution">
|
|
<arg name="width" type="uint"/>
|
|
<arg name="height" type="uint"/>
|
|
</request>
|
|
|
|
<request name="set_refresh_rate">
|
|
<arg name="rate" type="uint" summary="in milliHz"/>
|
|
</request>
|
|
|
|
<request name="set_reduced_blanking">
|
|
<description summary="whether or not the mode should have reduced blanking">
|
|
Reduced blanking is an optimization that can reduce bandwidth / timing
|
|
requirements for a display mode by reducing the time vblank takes.
|
|
As not all displays support it, it may be desired to still turn it off
|
|
though (like with CRTs, where full blanking is required).
|
|
</description>
|
|
<arg name="reduced" type="uint"
|
|
summary="1 for reduced blanking, 0 for normal vblank duration"/>
|
|
</request>
|
|
|
|
<request name="add_cvt" since="22">
|
|
<description summary="new mode with CVT timings">
|
|
Adds a new mode with the specified CVT timings.
|
|
</description>
|
|
<arg name="dot_clock" type="uint" summary="pixel clock in kHz"/>
|
|
<arg name="hdisplay" type="uint" summary="horizontal display size"/>
|
|
<arg name="hsync_start" type="uint" summary="horizontal sync start"/>
|
|
<arg name="hsync_end" type="uint" summary="horizontal sync end"/>
|
|
<arg name="htotal" type="uint" summary="horizontal total size"/>
|
|
<arg name="hskew" type="uint" summary="horizontal skew"/>
|
|
<arg name="vdisplay" type="uint" summary="vertical display size"/>
|
|
<arg name="vsync_start" type="uint" summary="vertical sync start"/>
|
|
<arg name="vsync_end" type="uint" summary="vertical sync end"/>
|
|
<arg name="vtotal" type="uint" summary="vertical total size"/>
|
|
<arg name="vscan" type="uint" summary="vertical scan"/>
|
|
<arg name="flags" type="uint" summary="flags, see DRM_MODE_FLAG_*"/>
|
|
</request>
|
|
|
|
</interface>
|
|
</protocol>
|