Merge "Import zaura_output_manager_v2 from chromium" into main am: a9b7d87734 am: c1fd3c284f Original change: https://android-review.googlesource.com/c/platform/external/wayland-protocols/+/3063530 Change-Id: I301a3aa7befd3efac85f5b78fd870ef0db95e93b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/chromium.org/unstable/aura-output-management/aura-output-management.xml b/chromium.org/unstable/aura-output-management/aura-output-management.xml new file mode 100644 index 0000000..7427ead --- /dev/null +++ b/chromium.org/unstable/aura-output-management/aura-output-management.xml
@@ -0,0 +1,228 @@ +<?xml version="1.0" encoding="UTF-8"?> +<protocol name="aura_output_management"> + + <copyright> + Copyright 2024 The Chromium Authors + + 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. + </copyright> + + <interface name="zaura_output_manager_v2" version="1"> + <description summary="aura output manager singleton"> + A global responsible for propagating atomic output configuration changes + to clients. An output configuration is a union of added / removed outputs + and updated output metrics. + + Added outputs arrive at the client as wl_registry.global events, removed + outputs as wl_registry.global_remove events and updated output metrics as + a sequence of events defined on the zaura_output_manager_v2 interface. + This is followed by the manager's done event which signals the end of the + transaction. + + The change should be processed by clients in a way that transitions from + one output configuration state to another without exposing the + intermediate output state to the rest of the application. + + Participating servers should emit the zaura_output_manager_v2 global + before any wl_output globals in the sequence of wl_registry.global events. + + Participating clients should bind the zaura_output_manager_v2 before any + wl_output globals. This ordering is required to ensure clients receive all + necessary output configuration information before receiving any further + server events that may reference bound wl_outputs. + + Clients can expect that all events comprising a configuration change are + sent synchronously, one after the other, before any other server events + that leverage the output as an event param. + </description> + + <event name="done" since="1"> + <description + summary="sent all information about the output configuration change"> + This event is sent after all added, changed and removed output events + for a given wl_output have been dispatched to the client. + </description> + </event> + + <event name="display_id" since="1"> + <description summary="advertise the output's display id"> + This event describes the 64bit display id assigned to each display by + ChromeOS. The value is opaque and should not be interpreted. + + The event is sent immediately after the wl_registry.global event for the + output and subsequently in latter display configuration changes. + </description> + <arg name="output_name" type="uint" /> + <arg name="display_id_hi" type="uint" /> + <arg name="display_id_lo" type="uint" /> + </event> + + <event name="logical_position" since="1"> + <description + summary="position of the output within the global compositor space"> + The position event describes the location of the wl_output within the + global compositor space. + + The event is sent immediately after the wl_registry.global event for the + output and subsequently in latter display configuration changes. + </description> + <arg name="output_name" type="uint" /> + <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" /> + </event> + + <event name="logical_size" since="1"> + <description summary="size of the output in the global compositor space"> + The logical_size event describes the logical size of the output in the + global compositor space. + + The event is sent immediately after the wl_registry.global event for the + output and subsequently in latter display configuration changes. + </description> + <arg name="output_name" type="uint" /> + <arg name="width" type="int" summary="width in global compositor space" /> + <arg name="height" type="int" + summary="height in global compositor space" /> + </event> + + <event name="physical_size" since="1"> + <description summary="size of the output in pixels"> + The physical resolution of the display in pixels. The value should not + include any overscan insets or display rotation, except for any panel + orientation adjustment. + + The event is sent immediately after the wl_registry.global event for the + output and subsequently in latter display configuration changes. + </description> + <arg name="output_name" type="uint" /> + <arg name="width" type="int" + summary="width in global compositor space" /> + <arg name="height" type="int" + summary="height in global compositor space" /> + </event> + + <event name="work_area_insets" since="1"> + <description summary="advertise the work area insets for the output"> + This event describes the work area insets for the output in logical + screen coordinates, from which the work area can be calculated. + + The event is sent when binding to the output object and subsequently as + output state changes. + </description> + <arg name="output_name" type="uint" /> + <arg name="top" type="int" /> + <arg name="left" type="int" /> + <arg name="bottom" type="int" /> + <arg name="right" type="int" /> + </event> + + <event name="device_scale_factor" since="1"> + <description summary="advertise device scale factor for the output"> + The scale factor of the output device. We reinterpret_cast the float + scale factor into a 32-bit uint and later cast back into a float. This + is because wayland does not support native transport of floats. As + different CPU architectures may use different endian representations for + IEEE 754 floats, this protocol implicitly assumes that the caller and + receiver are the same machine. + + The event is sent immediately after the wl_registry.global event for the + output and subsequently in latter display configuration changes. + </description> + <arg name="output_name" type="uint" /> + <arg name="device_scale_factor" type="uint" + summary="display scale factor, in float format" /> + </event> + + <event name="logical_transform" since="1"> + <description summary="logical transform of the output"> + This event describes the logical transform for the output. Whereas + panel transform corresponds to the display's panel rotation, the logical + transform corresponds to the display's logical rotation. + + The event is sent immediately after the wl_registry.global event for the + output and subsequently in latter display configuration changes. + </description> + <arg name="output_name" type="uint" /> + <arg name="transform" type="int" enum="wl_output.transform" + summary="transform that maps framebuffer to output" /> + </event> + + <event name="panel_transform" since="1"> + <description summary="panel transform of the output"> + This event describes the panel transform for the output, which is the + associated display's panel rotation. + + The event is sent immediately after the wl_registry.global event for the + output and subsequently in latter display configuration changes. + </description> + <arg name="output_name" type="uint" /> + <arg name="transform" type="int" enum="wl_output.transform" + summary="transform that maps framebuffer to output" /> + </event> + + <event name="name" since="1"> + <description summary="human-readable name of this output"> + The name is a UTF-8 string with no convention defined for its contents. + + The event is sent immediately after the wl_registry.global event for the + output and subsequently in latter display configuration changes. + </description> + <arg name="output_name" type="uint" /> + <arg name="name" type="string" summary="output name" /> + </event> + + <event name="description" since="1"> + <description summary="human-readable description of this output"> + The description is a UTF-8 string with no convention defined for its + contents. + + The event is sent immediately after the wl_registry.global event for the + output and subsequently in latter display configuration changes. + </description> + <arg name="output_name" type="uint" /> + <arg name="description" type="string" summary="output description" /> + </event> + + <event name="overscan_insets" since="1"> + <description summary="advertise the overscan insets for the output"> + This event describes the overscan insets for the output in physical + pixels. + + The event is sent immediately after the wl_registry.global event for the + output and subsequently in latter display configuration changes. + </description> + <arg name="output_name" type="uint" /> + <arg name="top" type="int" /> + <arg name="left" type="int" /> + <arg name="bottom" type="int" /> + <arg name="right" type="int" /> + </event> + + <event name="activated" since="1"> + <description summary="target display for new windows"> + Notifies that this output is now active output. It is typically used as + a target when a new window is created without specific bounds. + </description> + <arg name="output_name" type="uint" /> + </event> + </interface> +</protocol>