[Libva] [PATCH 1/2] New wayland-drm.xml

Xiang, Haihao haihao.xiang at intel.com
Fri Sep 2 04:36:43 UTC 2016


Add a prefix in subject and resend. 

> Update wayland-drm-client-protocol.h as well
> 
> Signed-off-by: Xiang, Haihao <haihao.xiang at intel.com>
> ---
>  src/wayland-drm-client-protocol.h | 155
> ++++++++++++++++++++++++++++----------
>  src/wayland-drm.xml               |  32 +++++++-
>  2 files changed, 147 insertions(+), 40 deletions(-)
> 
> diff --git a/src/wayland-drm-client-protocol.h b/src/wayland-drm-
> client-protocol.h
> index cba188e..da267e8 100644
> --- a/src/wayland-drm-client-protocol.h
> +++ b/src/wayland-drm-client-protocol.h
> @@ -1,7 +1,26 @@
> -/* 
> +/* Generated by wayland-scanner 1.11.90 */
> +
> +#ifndef DRM_CLIENT_PROTOCOL_H
> +#define DRM_CLIENT_PROTOCOL_H
> +
> +#include <stdint.h>
> +#include <stddef.h>
> +#include "wayland-client.h"
> +
> +#ifdef  __cplusplus
> +extern "C" {
> +#endif
> +
> +/**
> + * @page page_drm The drm protocol
> + * @section page_ifaces_drm Interfaces
> + * - @subpage page_iface_wl_drm - 
> + * @section page_copyright_drm Copyright
> + * <pre>
> + *
>   * Copyright © 2008-2011 Kristian Høgsberg
>   * Copyright © 2010-2011 Intel Corporation
> - * 
> + *
>   * Permission to use, copy, modify, distribute, and sell this
>   * software and its documentation for any purpose is hereby granted
>   * without fee, provided that\n the above copyright notice appear in
> @@ -13,7 +32,7 @@
>   * representations about the suitability of this software for any
>   * purpose.  It is provided "as is" without express or implied
>   * warranty.
> - * 
> + *
>   * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
>   * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
>   * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR
> ANY
> @@ -22,24 +41,19 @@
>   * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
>   * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
>   * THIS SOFTWARE.
> + * </pre>
>   */
> -
> -#ifndef DRM_CLIENT_PROTOCOL_H
> -#define DRM_CLIENT_PROTOCOL_H
> -
> -#ifdef  __cplusplus
> -extern "C" {
> -#endif
> -
> -#include <stdint.h>
> -#include <stddef.h>
> -#include "wayland-client.h"
> -
> -struct wl_client;
> -struct wl_resource;
> -
> +struct wl_buffer;
>  struct wl_drm;
>  
> +/**
> + * @page page_iface_wl_drm wl_drm
> + * @section page_iface_wl_drm_api API
> + * See @ref iface_wl_drm.
> + */
> +/**
> + * @defgroup iface_wl_drm The wl_drm interface
> + */
>  extern const struct wl_interface wl_drm_interface;
>  
>  #ifndef WL_DRM_ERROR_ENUM
> @@ -115,28 +129,51 @@ enum wl_drm_format {
>  };
>  #endif /* WL_DRM_FORMAT_ENUM */
>  
> +#ifndef WL_DRM_CAPABILITY_ENUM
> +#define WL_DRM_CAPABILITY_ENUM
> +/**
> + * @ingroup iface_wl_drm
> + * wl_drm capability bitmask
> + *
> + * Bitmask of capabilities.
> + */
> +enum wl_drm_capability {
> +	/**
> +	 * wl_drm prime available
> +	 */
> +	WL_DRM_CAPABILITY_PRIME = 1,
> +};
> +#endif /* WL_DRM_CAPABILITY_ENUM */
> +
> +/**
> + * @ingroup iface_wl_drm
> + * @struct wl_drm_listener
> + */
>  struct wl_drm_listener {
>  	/**
> -	 * device - device
> -	 * @name: name
>  	 */
>  	void (*device)(void *data,
>  		       struct wl_drm *wl_drm,
>  		       const char *name);
>  	/**
> -	 * format - format
> -	 * @format: format
>  	 */
>  	void (*format)(void *data,
>  		       struct wl_drm *wl_drm,
>  		       uint32_t format);
>  	/**
> -	 * authenticated - authenticated
>  	 */
>  	void (*authenticated)(void *data,
>  			      struct wl_drm *wl_drm);
> +	/**
> +	 */
> +	void (*capabilities)(void *data,
> +			     struct wl_drm *wl_drm,
> +			     uint32_t value);
>  };
>  
> +/**
> + * @ingroup wl_drm_iface
> + */
>  static inline int
>  wl_drm_add_listener(struct wl_drm *wl_drm,
>  		    const struct wl_drm_listener *listener, void
> *data)
> @@ -145,28 +182,58 @@ wl_drm_add_listener(struct wl_drm *wl_drm,
>  				     (void (**)(void)) listener,
> data);
>  }
>  
> -#define WL_DRM_AUTHENTICATE	0
> -#define WL_DRM_CREATE_BUFFER	1
> -#define WL_DRM_CREATE_PLANAR_BUFFER	2
> +#define WL_DRM_AUTHENTICATE 0
> +#define WL_DRM_CREATE_BUFFER 1
> +#define WL_DRM_CREATE_PLANAR_BUFFER 2
> +#define WL_DRM_CREATE_PRIME_BUFFER 3
>  
> +/**
> + * @ingroup iface_wl_drm
> + */
> +#define WL_DRM_AUTHENTICATE_SINCE_VERSION 1
> +/**
> + * @ingroup iface_wl_drm
> + */
> +#define WL_DRM_CREATE_BUFFER_SINCE_VERSION 1
> +/**
> + * @ingroup iface_wl_drm
> + */
> +#define WL_DRM_CREATE_PLANAR_BUFFER_SINCE_VERSION 1
> +/**
> + * @ingroup iface_wl_drm
> + */
> +#define WL_DRM_CREATE_PRIME_BUFFER_SINCE_VERSION 2
> +
> +/** @ingroup iface_wl_drm */
>  static inline void
>  wl_drm_set_user_data(struct wl_drm *wl_drm, void *user_data)
>  {
>  	wl_proxy_set_user_data((struct wl_proxy *) wl_drm,
> user_data);
>  }
>  
> +/** @ingroup iface_wl_drm */
>  static inline void *
>  wl_drm_get_user_data(struct wl_drm *wl_drm)
>  {
>  	return wl_proxy_get_user_data((struct wl_proxy *) wl_drm);
>  }
>  
> +static inline uint32_t
> +wl_drm_get_version(struct wl_drm *wl_drm)
> +{
> +	return wl_proxy_get_version((struct wl_proxy *) wl_drm);
> +}
> +
> +/** @ingroup iface_wl_drm */
>  static inline void
>  wl_drm_destroy(struct wl_drm *wl_drm)
>  {
>  	wl_proxy_destroy((struct wl_proxy *) wl_drm);
>  }
>  
> +/**
> + * @ingroup iface_wl_drm
> + */
>  static inline void
>  wl_drm_authenticate(struct wl_drm *wl_drm, uint32_t id)
>  {
> @@ -174,34 +241,44 @@ wl_drm_authenticate(struct wl_drm *wl_drm,
> uint32_t id)
>  			 WL_DRM_AUTHENTICATE, id);
>  }
>  
> +/**
> + * @ingroup iface_wl_drm
> + */
>  static inline struct wl_buffer *
>  wl_drm_create_buffer(struct wl_drm *wl_drm, uint32_t name, int32_t
> width, int32_t height, uint32_t stride, uint32_t format)
>  {
>  	struct wl_proxy *id;
>  
> -	id = wl_proxy_create((struct wl_proxy *) wl_drm,
> -			     &wl_buffer_interface);
> -	if (!id)
> -		return NULL;
> -
> -	wl_proxy_marshal((struct wl_proxy *) wl_drm,
> -			 WL_DRM_CREATE_BUFFER, id, name, width,
> height, stride, format);
> +	id = wl_proxy_marshal_constructor((struct wl_proxy *)
> wl_drm,
> +			 WL_DRM_CREATE_BUFFER, &wl_buffer_interface,
> NULL, name, width, height, stride, format);
>  
>  	return (struct wl_buffer *) id;
>  }
>  
> +/**
> + * @ingroup iface_wl_drm
> + */
>  static inline struct wl_buffer *
>  wl_drm_create_planar_buffer(struct wl_drm *wl_drm, uint32_t name,
> int32_t width, int32_t height, uint32_t format, int32_t offset0,
> int32_t stride0, int32_t offset1, int32_t stride1, int32_t offset2,
> int32_t stride2)
>  {
>  	struct wl_proxy *id;
>  
> -	id = wl_proxy_create((struct wl_proxy *) wl_drm,
> -			     &wl_buffer_interface);
> -	if (!id)
> -		return NULL;
> +	id = wl_proxy_marshal_constructor((struct wl_proxy *)
> wl_drm,
> +			 WL_DRM_CREATE_PLANAR_BUFFER,
> &wl_buffer_interface, NULL, name, width, height, format, offset0,
> stride0, offset1, stride1, offset2, stride2);
>  
> -	wl_proxy_marshal((struct wl_proxy *) wl_drm,
> -			 WL_DRM_CREATE_PLANAR_BUFFER, id, name,
> width, height, format, offset0, stride0, offset1, stride1, offset2,
> stride2);
> +	return (struct wl_buffer *) id;
> +}
> +
> +/**
> + * @ingroup iface_wl_drm
> + */
> +static inline struct wl_buffer *
> +wl_drm_create_prime_buffer(struct wl_drm *wl_drm, int32_t name,
> int32_t width, int32_t height, uint32_t format, int32_t offset0,
> int32_t stride0, int32_t offset1, int32_t stride1, int32_t offset2,
> int32_t stride2)
> +{
> +	struct wl_proxy *id;
> +
> +	id = wl_proxy_marshal_constructor((struct wl_proxy *)
> wl_drm,
> +			 WL_DRM_CREATE_PRIME_BUFFER,
> &wl_buffer_interface, NULL, name, width, height, format, offset0,
> stride0, offset1, stride1, offset2, stride2);
>  
>  	return (struct wl_buffer *) id;
>  }
> diff --git a/src/wayland-drm.xml b/src/wayland-drm.xml
> index 265d4f8..5e64622 100644
> --- a/src/wayland-drm.xml
> +++ b/src/wayland-drm.xml
> @@ -29,7 +29,7 @@
>  
>    <!-- drm support. This object is created by the server and
> published
>         using the display's global event. -->
> -  <interface name="wl_drm" version="1">
> +  <interface name="wl_drm" version="2">
>      <enum name="error">
>        <entry name="authenticate_fail" value="0"/>
>        <entry name="invalid_format" value="1"/>
> @@ -150,6 +150,36 @@
>  
>      <!-- Raised if the authenticate request succeeded -->
>      <event name="authenticated"/>
> +
> +    <enum name="capability" since="2">
> +      <description summary="wl_drm capability bitmask">
> +        Bitmask of capabilities.
> +      </description>
> +      <entry name="prime" value="1" summary="wl_drm prime
> available"/>
> +    </enum>
> +
> +    <event name="capabilities">
> +      <arg name="value" type="uint"/>
> +    </event>
> +
> +    <!-- Version 2 additions -->
> +
> +    <!-- Create a wayland buffer for the prime fd.  Use for regular
> and planar
> +         buffers.  Pass 0 for offset and stride for unused planes.
> -->
> +    <request name="create_prime_buffer" since="2">
> +      <arg name="id" type="new_id" interface="wl_buffer"/>
> +      <arg name="name" type="fd"/>
> +      <arg name="width" type="int"/>
> +      <arg name="height" type="int"/>
> +      <arg name="format" type="uint"/>
> +      <arg name="offset0" type="int"/>
> +      <arg name="stride0" type="int"/>
> +      <arg name="offset1" type="int"/>
> +      <arg name="stride1" type="int"/>
> +      <arg name="offset2" type="int"/>
> +      <arg name="stride2" type="int"/>
> +    </request>
> +
>    </interface>
>  
>  </protocol>


More information about the Libva mailing list