libdrm_vigs: Support plane z-pos setting
authorStanislav Vorobiov <s.vorobiov@samsung.com>
Tue, 18 Feb 2014 13:02:45 +0000 (17:02 +0400)
committerQuanxian Wang <quanxian.wang@intel.com>
Wed, 15 Oct 2014 04:06:15 +0000 (12:06 +0800)
Change-Id: I2e1418425f1b4a17f49f19fabb8c4a2bdc84e5ef
Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
include/drm/vigs_drm.h
vigs/Makefile.am
vigs/vigs.c
vigs/vigs.h

index 3eba112..1694801 100644 (file)
@@ -33,7 +33,7 @@
 /*
  * Bump this whenever driver interface changes.
  */
-#define DRM_VIGS_DRIVER_VERSION 11
+#define DRM_VIGS_DRIVER_VERSION 12
 
 /*
  * Surface access flags.
@@ -134,6 +134,12 @@ struct drm_vigs_fence_unref
     uint32_t handle;
 };
 
+struct drm_vigs_plane_set_zpos
+{
+    uint32_t plane_id;
+    int zpos;
+};
+
 #define DRM_VIGS_GET_PROTOCOL_VERSION 0x00
 #define DRM_VIGS_CREATE_SURFACE 0x01
 #define DRM_VIGS_CREATE_EXECBUFFER 0x02
@@ -148,6 +154,7 @@ struct drm_vigs_fence_unref
 #define DRM_VIGS_FENCE_WAIT 0x0B
 #define DRM_VIGS_FENCE_SIGNALED 0x0C
 #define DRM_VIGS_FENCE_UNREF 0x0D
+#define DRM_VIGS_PLANE_SET_ZPOS 0x0E
 
 #define DRM_IOCTL_VIGS_GET_PROTOCOL_VERSION DRM_IOR(DRM_COMMAND_BASE + \
             DRM_VIGS_GET_PROTOCOL_VERSION, struct drm_vigs_get_protocol_version)
@@ -177,5 +184,7 @@ struct drm_vigs_fence_unref
             DRM_VIGS_FENCE_SIGNALED, struct drm_vigs_fence_signaled)
 #define DRM_IOCTL_VIGS_FENCE_UNREF DRM_IOW(DRM_COMMAND_BASE + \
             DRM_VIGS_FENCE_UNREF, struct drm_vigs_fence_unref)
+#define DRM_IOCTL_VIGS_PLANE_SET_ZPOS DRM_IOW(DRM_COMMAND_BASE + \
+            DRM_VIGS_PLANE_SET_ZPOS, struct drm_vigs_plane_set_zpos)
 
 #endif
index f15ceff..195bbf3 100644 (file)
@@ -12,7 +12,7 @@ AM_CFLAGS = \
 
 libdrm_vigs_la_LTLIBRARIES = libdrm_vigs.la
 libdrm_vigs_ladir = $(libdir)
-libdrm_vigs_la_LDFLAGS = -version-number 6:0:0 -no-undefined
+libdrm_vigs_la_LDFLAGS = -version-number 7:0:0 -no-undefined
 libdrm_vigs_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
 
 libdrm_vigs_la_SOURCES = vigs.c
index f49d777..0e1a418 100644 (file)
@@ -657,3 +657,19 @@ int vigs_drm_fence_check(struct vigs_drm_fence *fence)
 
     return 0;
 }
+
+int vigs_drm_plane_set_zpos(struct vigs_drm_device *dev,
+                            uint32_t plane_id,
+                            int zpos)
+{
+    struct drm_vigs_plane_set_zpos req =
+    {
+        .plane_id = plane_id,
+        .zpos = zpos
+    };
+    int ret;
+
+    ret = drmIoctl(dev->fd, DRM_IOCTL_VIGS_PLANE_SET_ZPOS, &req);
+
+    return (ret != 0) ? -errno : 0;
+}
index 87c6b0f..0830090 100644 (file)
@@ -231,6 +231,19 @@ int vigs_drm_fence_check(struct vigs_drm_fence *fence);
  * @}
  */
 
+/*
+ * Plane functions.
+ * @{
+ */
+
+int vigs_drm_plane_set_zpos(struct vigs_drm_device *dev,
+                            uint32_t plane_id,
+                            int zpos);
+
+/*
+ * @}
+ */
+
 #ifdef __cplusplus
 };
 #endif /* __cplusplus */