Migrate from GEM to PRIME. 93/30493/4
authorTakanari Hayama <taki@igel.co.jp>
Mon, 30 Jun 2014 02:36:21 +0000 (11:36 +0900)
committerTony SIM <chinyeow.sim.xt@renesas.com>
Thu, 18 Dec 2014 09:37:34 +0000 (01:37 -0800)
In order to support DMABUF, GEM is now replaced with PRIME.

Change-Id: I645caa28af973dbf7167588a7f955a7cce131165
Signed-off-by: Tony SIM <chinyeow.sim.xt@renesas.com>
wayland-kms.c
wayland-kms.xml

index 62466f3..c6d37ff 100644 (file)
@@ -75,6 +75,7 @@ static void destroy_buffer(struct wl_resource *resource)
        struct wl_kms_buffer *buffer = resource->data;
        struct drm_gem_close close;
        int ret;
+
        if (buffer->handle) {
                close.handle = buffer->handle;
                ret = drmIoctl(buffer->kms->fd, DRM_IOCTL_GEM_CLOSE, &close);
@@ -155,7 +156,7 @@ kms_create_buffer(struct wl_client *client, struct wl_resource *resource,
        buffer->fd = prime_fd;
 
        WLKMS_DEBUG("%s: %s: prime_fd=%d\n", __FILE__, __func__, prime_fd);
-#if 0
+
        if ((err = drmPrimeFDToHandle(kms->fd, prime_fd, &buffer->handle))) {
                WLKMS_DEBUG("%s: %s: drmPrimeFDToHandle() failed...%d (%s)\n", __FILE__, __func__, err, strerror(errno));
                wl_resource_post_error(resource,
@@ -163,23 +164,6 @@ kms_create_buffer(struct wl_client *client, struct wl_resource *resource,
                                       "invalid prime FD");
                return;
        }
-#else
-       {
-               struct drm_gem_open op;
-               int ret;
-
-               op.name   = prime_fd;
-               op.handle = 0;
-
-               ret = drmIoctl(kms->fd, DRM_IOCTL_GEM_OPEN, &op);
-               if (ret) {
-                       WLKMS_DEBUG("%s: %s: DRM_IOCTL_GEM_OPEN failed...(%s)\n", __FILE__, __func__, strerror(errno));
-                       wl_resource_post_error(resource, WL_KMS_ERROR_INVALID_FD, "invalid prime FD");
-                       return;
-               }
-               buffer->handle = op.handle;
-       }
-#endif
 
        // We create a wl_buffer
        buffer->resource = wl_resource_create(client, &wl_buffer_interface, 1, id);
index 9976f95..28e687e 100644 (file)
          surface must have a prime FD. -->
     <request name="create_buffer">
       <arg name="id" type="new_id" interface="wl_buffer"/>
-      <arg name="fd" type="int"/>      <!-- KMS BO Prime FD -->
+      <arg name="fd" type="fd"/>       <!-- KMS BO Prime FD -->
       <arg name="width" type="int"/>
       <arg name="height" type="int"/>
       <arg name="stride" type="uint"/>