protocol: warn clients about some wl_output properties

All wl_output properties don't always make sense for all
compositors.

Some compositors might not implement a "global compositor space",
(e.g. 3D compositors) in which case properties like x and y don't
make sense.

Some compositors might expose virtual outputs, in which case modes,
make and model are not relevant.

In a lot of these situations, information from xdg_output is better
suited.

Compositors also expose output refresh rate, which shouldn't be used
for synchronization purposes.

Signed-off-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Derek Foreman <derek.foreman.wayland@gmail.com>
This commit is contained in:
Simon Ser 2018-10-26 09:13:04 +00:00 committed by Derek Foreman
parent a94b77d0a6
commit 8c121e1017

View file

@ -2407,6 +2407,13 @@
The physical size can be set to zero if it doesn't make sense for this The physical size can be set to zero if it doesn't make sense for this
output (e.g. for projectors or virtual outputs). output (e.g. for projectors or virtual outputs).
Note: wl_output only advertises partial information about the output
position and identification. Some compositors, for instance those not
implementing a desktop-style output layout or those exposing virtual
outputs, might fake this information. Instead of using x and y, clients
should use xdg_output.logical_position. Instead of using make and model,
clients should use xdg_output.name and xdg_output.description.
</description> </description>
<arg name="x" type="int" <arg name="x" type="int"
summary="x position within the global compositor space"/> summary="x position within the global compositor space"/>
@ -2451,7 +2458,17 @@
the output device. This is not necessarily the same as the output device. This is not necessarily the same as
the output size in the global compositor space. For instance, the output size in the global compositor space. For instance,
the output may be scaled, as described in wl_output.scale, the output may be scaled, as described in wl_output.scale,
or transformed, as described in wl_output.transform. or transformed, as described in wl_output.transform. Clients
willing to retrieve the output size in the global compositor
space should use xdg_output.logical_size instead.
Clients should not use the refresh rate to schedule frames. Instead,
they should use the wl_surface.frame event or the presentation-time
protocol.
Note: this information is not always meaningful for all outputs. Some
compositors, such as those exposing virtual outputs, might fake the
refresh rate or the size.
</description> </description>
<arg name="flags" type="uint" enum="mode" summary="bitfield of mode flags"/> <arg name="flags" type="uint" enum="mode" summary="bitfield of mode flags"/>
<arg name="width" type="int" summary="width of the mode in hardware units"/> <arg name="width" type="int" summary="width of the mode in hardware units"/>