diff options
author | Andri Yngvason <andri@yngvason.is> | 2020-04-24 18:12:20 +0000 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2020-06-08 20:49:41 +0200 |
commit | 909b0213b390d445006f1b3d125214dc8df19b5e (patch) | |
tree | 1c620286be9aa8685b015d4fdc8f2704f3ec1dff /protocol | |
parent | b64a8a7f9885319bb60cd202a0a988d50a7c79db (diff) |
protocol: screencopy: Extend to report linux-dmabuf capability
A new version of the protocol is required so that the client can
discover which buffer types are supported by the compositor.
Diffstat (limited to 'protocol')
-rw-r--r-- | protocol/wlr-screencopy-unstable-v1.xml | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/protocol/wlr-screencopy-unstable-v1.xml b/protocol/wlr-screencopy-unstable-v1.xml index e4c21f80..50b1b7d2 100644 --- a/protocol/wlr-screencopy-unstable-v1.xml +++ b/protocol/wlr-screencopy-unstable-v1.xml @@ -38,7 +38,7 @@ interface version number is reset. </description> - <interface name="zwlr_screencopy_manager_v1" version="2"> + <interface name="zwlr_screencopy_manager_v1" version="3"> <description summary="manager to inform clients and begin capturing"> This object is a manager which offers requests to start capturing from a source. @@ -80,13 +80,18 @@ </request> </interface> - <interface name="zwlr_screencopy_frame_v1" version="2"> + <interface name="zwlr_screencopy_frame_v1" version="3"> <description summary="a frame ready for copy"> This object represents a single frame. - When created, a "buffer" event will be sent. The client will then be able - to send a "copy" request. If the capture is successful, the compositor - will send a "flags" followed by a "ready" event. + When created, a series of buffer events will be sent, each representing a + supported buffer type. The "buffer_done" event is sent afterwards to + indicate that all supported buffer types have been enumerated. The client + will then be able to send a "copy" request. If the capture is successful, + the compositor will send a "flags" followed by a "ready" event. + + For objects version 2 or lower, wl_shm buffers are always supported, ie. + the "buffer" event is guaranteed to be sent. If the capture failed, the "failed" event is sent. This can happen anytime before the "ready" event. @@ -96,14 +101,12 @@ </description> <event name="buffer"> - <description summary="buffer information"> - Provides information about the frame's buffer. This event is sent once - as soon as the frame is created. - - The client should then create a buffer with the provided attributes, and - send a "copy" request. + <description summary="wl_shm buffer information"> + Provides information about wl_shm buffer parameters that need to be + used for this frame. This event is sent once after the frame is created + if wl_shm buffers are supported. </description> - <arg name="format" type="uint" summary="buffer format"/> + <arg name="format" type="uint" enum="wl_shm.format" summary="buffer format"/> <arg name="width" type="uint" summary="buffer width"/> <arg name="height" type="uint" summary="buffer height"/> <arg name="stride" type="uint" summary="buffer stride"/> @@ -112,8 +115,9 @@ <request name="copy"> <description summary="copy the frame"> Copy the frame to the supplied buffer. The buffer must have a the - correct size, see zwlr_screencopy_frame_v1.buffer. The buffer needs to - have a supported format. + correct size, see zwlr_screencopy_frame_v1.buffer and + zwlr_screencopy_frame_v1.linux_dmabuf. The buffer needs to have a + supported format. If the frame is successfully copied, a "flags" and a "ready" events are sent. Otherwise, a "failed" event is sent. @@ -203,5 +207,26 @@ <arg name="width" type="uint" summary="current width"/> <arg name="height" type="uint" summary="current height"/> </event> + + <!-- Version 3 additions --> + <event name="linux_dmabuf" since="3"> + <description summary="linux-dmabuf buffer information"> + Provides information about linux-dmabuf buffer parameters that need to + be used for this frame. This event is sent once after the frame is + created if linux-dmabuf buffers are supported. + </description> + <arg name="format" type="uint" summary="fourcc pixel format"/> + <arg name="width" type="uint" summary="buffer width"/> + <arg name="height" type="uint" summary="buffer height"/> + </event> + + <event name="buffer_done" since="3"> + <description summary="all buffer types reported"> + This event is sent once after all buffer events have been sent. + + The client should proceed to create a buffer of one of the supported + types, and send a "copy" request. + </description> + </event> </interface> </protocol> |