[PATCH wayland-protocols v2] unstable/drm-lease: DRM lease protocol support
Marius-cristian Vlad
marius-cristian.vlad at nxp.com
Wed Mar 28 11:21:58 UTC 2018
Ping? Daniel?
Have submitted a v4 for the server/client example. Would be nice to
know if the protocol is at least OK or needs more work.
On Mon, 2018-02-12 at 16:51 +0200, Marius Vlad wrote:
> Simple protocol extension to manage DRM lease. Based on the work by
> Keith
> Packard in [1], respectively [2].
>
> [1] https://cgit.freedesktop.org/mesa/drm/commit/?id=c4171535389d72e9
> 135c9615cecd07b346fd6d7e
> [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gi
> t/commit/?h=v4.15-rc9&id=62884cd386b876638720ef88374b31a84ca7ee5f
>
> Signed-off-by: Marius Vlad <marius-cristian.vlad at nxp.com>
>
> Changes since v1:
> - added manager: advertise lease capability and manage the lease
> (Daniel Stone)
> - add request(s) for adding connector/crtc/plane to behave more like
> dmabuf (Daniel Stone)
> ---
> Makefile.am | 1 +
> unstable/drm-lease/README | 4 +
> unstable/drm-lease/drm-lease-unstable-v1.xml | 150
> +++++++++++++++++++++++++++
> 3 files changed, 155 insertions(+)
> create mode 100644 unstable/drm-lease/README
> create mode 100644 unstable/drm-lease/drm-lease-unstable-v1.xml
>
> diff --git a/Makefile.am b/Makefile.am
> index 4b9a901..4f6a874 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -2,6 +2,7 @@ unstable_protocols =
> \
> unstable/pointer-gestures/pointer-gestures-unstable-v1.xml
> \
> unstable/fullscreen-shell/fullscreen-shell-unstable-v1.xml
> \
> unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml
> \
> + unstable/drm-lease/drm-lease-unstable-v1.xml
> \
> unstable/text-input/text-input-unstable-v1.xml
> \
> unstable/input-method/input-method-unstable-v1.xml
> \
> unstable/xdg-shell/xdg-shell-unstable-v5.xml
> \
> diff --git a/unstable/drm-lease/README b/unstable/drm-lease/README
> new file mode 100644
> index 0000000..a25600c
> --- /dev/null
> +++ b/unstable/drm-lease/README
> @@ -0,0 +1,4 @@
> +Linux DRM lease
> +
> +Maintainers:
> +Marius Vlad <marius-cristian.vlad at nxp.com>
> diff --git a/unstable/drm-lease/drm-lease-unstable-v1.xml
> b/unstable/drm-lease/drm-lease-unstable-v1.xml
> new file mode 100644
> index 0000000..907efb0
> --- /dev/null
> +++ b/unstable/drm-lease/drm-lease-unstable-v1.xml
> @@ -0,0 +1,150 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<protocol name="drm_lease_unstable_v1">
> +
> + <copyright>
> + Copyright 2018 NXP
> +
> + 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="zwp_kms_lease_manager_v1" version="1">
> + <description summary="lease manager">
> + This interface makes use of DRM lease written by Keith
> Packard.
> +
> + A DRM master can create another DRM master and ``lease''
> resources it has
> + control over to the new DRM master. Once leased, resources can
> not be
> + controlled by the owner unless the owner cancels the lease, or
> the new
> + DRM master is closed.
> +
> + A lease is a contract between the Lessor (DRM master which has
> leased out
> + resources to one or more other DRM masters) and a Lessee
> + (DRM master which controls resources leased from another DRM
> master). This
> + contract specifies which resources may be controlled by the
> Lessee.
> +
> + The Lessee can issue modesetting/page-flipping atomic
> operations etc.,
> + just like a Lesor using the leased file-descriptor passed by
> the Lesor.
> +
> + Besides the leased file-description, an integer is used to
> uniquely
> + identify a Lessee within the tree of DRM masters descending
> from a single
> + Owner. Once the Lessee has finished with the resources it had
> used, the
> + Lessee ID can be used to revoke that lease.
> +
> + 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.
> + </description>
> +
> + <request name="destroy" type="destructor">
> + <description summary="destroys the manager">
> + Destroys the lease manager object.
> + </description>
> + </request>
> +
> + <request name="create_lease_req">
> + <description summary="create a temporary object for managing
> the lease">
> + Create a lease request object to manage the lease. All further
> interaction
> + is achived using this object. Returns a
> zwp_kms_lease_request_v1.
> + </description>
> + <arg name="params_id" type="new_id"
> interface="zwp_kms_lease_request_v1"
> + summary="the new temporary"/>
> + </request>
> +
> + </interface>
> +
> + <interface name="zwp_kms_lease_request_v1" version="1">
> + <description summary="lease request object">
> + Typical usage is to create this request lease object using the
> + 'zwp_kms_lease_manager_v1', then call 'add_*' requests to add
> a connector,
> + crtc (and plane) id.
> +
> + At the end, use 'create' request to actually create the lease.
> The client
> + is responsible for finding a suitable combination of
> connector/crtc/plane
> + to pass. This can be achived by going over all connected
> connectors and
> + and determine if a lease can be created.
> + </description>
> +
> + <request name="add_connector">
> + <description summary="connector id">
> + Request to add a connector id to current lease request object.
> + </description>
> + <arg name="id" type="uint" summary="connector id"/>
> + </request>
> +
> + <request name="add_crtc">
> + <description summary="crtc id">
> + Request to add a CRTC id to current lease request object.
> + </description>
> + <arg name="id" type="uint" summary="crtc id"/>
> + </request>
> +
> + <request name="add_plane">
> + <description summary="plane id">
> + Request to add a plane id to current lease request object.
> + </description>
> + <arg name="id" type="uint" summary="plane id"/>
> + </request>
> +
> + <request name="create">
> + <description summary="create the lease">
> + This request is to be called last to get the lease. Either a
> 'created'
> + event in case of success, or 'failed' event in case of failure
> is
> + generated.
> + </description>
> + </request>
> +
> + <request name="revoke">
> + <description summary="revoke a lease">
> + This asks to revoke a lease using the lessee id previously
> given in event
> + created.
> + </description>
> + <arg name="id" type="uint" summary="lessee id"/>
> + </request>
> +
> +
> + <event name="created">
> + <description summary="lease created successfully">
> + This event indicates that the lease has been created. It
> provides the
> + leased fd which the client can use to perform modesetting
> and a lessee
> + id to revoke the lease when it has finished with it.
> + </description>
> + <arg name="fd" type="fd" summary="leased fd"/>
> + <arg name="id" type="uint" summary="lessee id"/>
> + </event>
> +
> + <event name="failed">
> + <description summary="drm lease could not be created">
> + This event indicates that the lease could not be
> created/revoked.
> + </description>
> + </event>
> +
> + <event name="revoked">
> + <description summary="lease revoked">
> + This event indicates that the lease has been revoked.
> + </description>
> + </event>
> +
> + </interface>
> +
> +</protocol>
More information about the wayland-devel
mailing list