From 89e6c9e0a1df549c59e157d9999392a58487c712 Mon Sep 17 00:00:00 2001 From: Alexandros Frantzis Date: Wed, 26 Aug 2020 16:57:18 +0300 Subject: [PATCH] RFC: Add zwp_vrr_v1 This protocol allows client surfaces to provide a hint to the compositor to employ Variable Refresh Rate (VRR) mechanisms to optimize their frame presentations. VRR mechanisms allow outputs to vary their frame timings in order to optimally accommodate frame submissions that occur at irregular rates, or rates that don't match the configured rate of the these outputs. Such irregular submissions often occur in video games, whereas in video playback. Frame timings have been historically regular and some clients have come to implicitly or explicitly depend on this regularity. The benefit of having a client opt-in mechanism for VRR, compared to the compositor employing it at will without client agreement, is that it provides additional assurance that clients are properly equipped to deal with the irregularity in frame timings. Signed-off-by: Alexandros Frantzis --- unstable/vrr/README | 4 ++ unstable/vrr/vrr-unstable-v1.xml | 103 +++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 unstable/vrr/README create mode 100644 unstable/vrr/vrr-unstable-v1.xml diff --git a/unstable/vrr/README b/unstable/vrr/README new file mode 100644 index 0000000..b71f00d --- /dev/null +++ b/unstable/vrr/README @@ -0,0 +1,4 @@ +Variable refresh rate protocol + +Maintainers: +Alexandros Frantzis diff --git a/unstable/vrr/vrr-unstable-v1.xml b/unstable/vrr/vrr-unstable-v1.xml new file mode 100644 index 0000000..3fd4141 --- /dev/null +++ b/unstable/vrr/vrr-unstable-v1.xml @@ -0,0 +1,103 @@ + + + + + Copyright 2020 Collabora, Ltd + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + + + + This global is a factory interface, allowing clients to request + variable refresh rate (VRR) support on a per-surface basis. + + Variable refresh rate mechanisms allow outputs to vary their frame + timings in order to optimally accommodate frame submissions that + occur at irregular rates, or rates that don't match the configured + rate of the these outputs. + + Warning! The protocol described in this file is experimental and + backward incompatible changes may be made. Backward compatible changes + may be added together with the corresponding interface version bump. + Backward incompatible changes are done by bumping the version number in + the protocol and interface names and resetting the interface version. + Once the protocol is to be declared stable, the 'z' prefix and the + version number in the protocol and interface names are removed and the + interface version number is reset. + + + + + Destroy this VRR factory object. Other objects, including + zwp_surface_vrr_v1 objects created by this factory, shall not + be affected by this request. + + + + + + + + + + Instantiate an interface extension for the given wl_surface to + provide VRR support. + + If the given wl_surface already has a VRR object associated, the + vrr_exists protocol error is raised. + + + + + + + + + + The existence of this object is a hint to the compositor to employ + a variable refresh rate mechanism to optimize frame presentations + for the associated surface, when possible. This is typically useful + when frame submissions on the associated surface may be irregular, + or regular at a rate different from the configured refresh rate of + the output they are presented on. + + The compositor is free to dynamically respect or ignore this hint + during the lifetime of this object based on various conditions, + including display capabilities and surface window state. + + The existence of this object additionally implies that the client + is able to handle irregular frame timings that may result from + the employment of a variable refresh rate mechanism. + + + + + Destroy this surface VRR object and remove all hints and + implications that are described in the interface description. + + + + +