summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakanari Hayama <taki@igel.co.jp>2014-06-30 11:36:21 +0900
committerTony SIM <chinyeow.sim.xt@renesas.com>2014-12-18 01:37:34 -0800
commit1794307177f81d3bce02f7708ba18ef7442e3368 (patch)
tree74767666695c2b1e16fa295ef46184377fc6273a
parent57262074b83c13047ea108e6aee478045e9eaa84 (diff)
downloadwayland-kms-1794307177f81d3bce02f7708ba18ef7442e3368.tar.gz
wayland-kms-1794307177f81d3bce02f7708ba18ef7442e3368.tar.bz2
wayland-kms-1794307177f81d3bce02f7708ba18ef7442e3368.zip
Migrate from GEM to PRIME.
In order to support DMABUF, GEM is now replaced with PRIME. Change-Id: I645caa28af973dbf7167588a7f955a7cce131165 Signed-off-by: Tony SIM <chinyeow.sim.xt@renesas.com>
-rw-r--r--wayland-kms.c20
-rw-r--r--wayland-kms.xml2
2 files changed, 3 insertions, 19 deletions
diff --git a/wayland-kms.c b/wayland-kms.c
index 62466f3..c6d37ff 100644
--- a/wayland-kms.c
+++ b/wayland-kms.c
@@ -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);
diff --git a/wayland-kms.xml b/wayland-kms.xml
index 9976f95..28e687e 100644
--- a/wayland-kms.xml
+++ b/wayland-kms.xml
@@ -114,7 +114,7 @@
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"/>