radeon: handle P16 pipe configs for Hawaii
[platform/upstream/libdrm.git] / xf86drm.c
index 6ea068f..720952f 100644 (file)
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -823,6 +823,13 @@ int drmGetCap(int fd, uint64_t capability, uint64_t *value)
        return 0;
 }
 
+int drmSetClientCap(int fd, uint64_t capability, uint64_t value)
+{
+       struct drm_set_client_cap cap  = { capability, value };
+
+       return drmIoctl(fd, DRM_IOCTL_SET_CLIENT_CAP, &cap);
+}
+
 /**
  * Free the bus ID information.
  *
@@ -1946,7 +1953,7 @@ int drmWaitVBlank(int fd, drmVBlankPtr vbl)
 
     ret = clock_gettime(CLOCK_MONOTONIC, &timeout);
     if (ret < 0) {
-       fprintf(stderr, "clock_gettime failed: %s\n", strerror(ret));
+       fprintf(stderr, "clock_gettime failed: %s\n", strerror(errno));
        goto out;
     }
     timeout.tv_sec++;
@@ -2542,3 +2549,34 @@ char *drmGetDeviceNameFromFd(int fd)
 
        return strdup(name);
 }
+
+int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd)
+{
+       struct drm_prime_handle args;
+       int ret;
+
+       args.handle = handle;
+       args.flags = flags;
+       ret = drmIoctl(fd, DRM_IOCTL_PRIME_HANDLE_TO_FD, &args);
+       if (ret)
+               return ret;
+
+       *prime_fd = args.fd;
+       return 0;
+}
+
+int drmPrimeFDToHandle(int fd, int prime_fd, uint32_t *handle)
+{
+       struct drm_prime_handle args;
+       int ret;
+
+       args.fd = prime_fd;
+       args.flags = 0;
+       ret = drmIoctl(fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &args);
+       if (ret)
+               return ret;
+
+       *handle = args.handle;
+       return 0;
+}
+