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

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


Update wayland-drm-client-protocol.h as well

Signed-off-by: Xiang, Haihao <haihao.xiang at intel.com>
---
 va/wayland/wayland-drm-client-protocol.h | 155 +++++++++++++++++++++++--------
 va/wayland/wayland-drm.xml               |  32 ++++++-
 2 files changed, 147 insertions(+), 40 deletions(-)

diff --git a/va/wayland/wayland-drm-client-protocol.h b/va/wayland/wayland-drm-client-protocol.h
index cba188e..da267e8 100644
--- a/va/wayland/wayland-drm-client-protocol.h
+++ b/va/wayland/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/va/wayland/wayland-drm.xml b/va/wayland/wayland-drm.xml
index 265d4f8..5e64622 100644
--- a/va/wayland/wayland-drm.xml
+++ b/va/wayland/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>
-- 
1.9.1



More information about the Libva mailing list