[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libdrm: Changes to 'upstream-unstable'



 Android.mk                     |    4 
 amdgpu/Android.mk              |    2 
 configure.ac                   |    5 
 freedreno/Android.mk           |    2 
 freedreno/msm/msm_ringbuffer.c |    5 
 include/drm/vc4_drm.h          |   21 
 intel/Android.mk               |    2 
 intel/intel_chipset.h          |   26 
 libkms/Android.mk              |    2 
 libkms/linux.c                 |    5 
 nouveau/Android.mk             |    2 
 radeon/Android.mk              |    2 
 radeon/radeon_surface.c        |    6 
 tests/amdgpu/basic_tests.c     |   56 +
 tests/amdgpu/cs_tests.c        |   51 +
 tests/modetest/Android.mk      |    2 
 tests/proptest/Android.mk      |    2 
 tests/util/Android.mk          |    2 
 xf86drm.c                      | 1454 ++++++++++++++++++++---------------------
 19 files changed, 879 insertions(+), 772 deletions(-)

New commits:
commit 5d830819480b089f62637fecc3aad11c5d1d5857
Author: Eric Anholt <eric@anholt.net>
Date:   Wed Jul 20 11:42:45 2016 -0700

    Bump version to 2.4.69 for release.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>

diff --git a/configure.ac b/configure.ac
index 90fc455..0f91d43 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@
 
 AC_PREREQ([2.63])
 AC_INIT([libdrm],
-        [2.4.68],
+        [2.4.69],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI],
         [libdrm])
 

commit 2212a6465d1597fbc4d4ee0ea5ff87816bfa336e
Author: Eric Anholt <eric@anholt.net>
Date:   Sat Jul 2 14:18:43 2016 -0700

    vc4: Update kernel headers for getparam addition.
    
    This also brings over the C++ guard introduced recently in the kernel
    headers.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>

diff --git a/include/drm/vc4_drm.h b/include/drm/vc4_drm.h
index da3caa0..919eece 100644
--- a/include/drm/vc4_drm.h
+++ b/include/drm/vc4_drm.h
@@ -26,6 +26,10 @@
 
 #include "drm.h"
 
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
 #define DRM_VC4_SUBMIT_CL                         0x00
 #define DRM_VC4_WAIT_SEQNO                        0x01
 #define DRM_VC4_WAIT_BO                           0x02
@@ -33,6 +37,7 @@
 #define DRM_VC4_MMAP_BO                           0x04
 #define DRM_VC4_CREATE_SHADER_BO                  0x05
 #define DRM_VC4_GET_HANG_STATE                    0x06
+#define DRM_VC4_GET_PARAM                         0x07
 
 #define DRM_IOCTL_VC4_SUBMIT_CL           DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SUBMIT_CL, struct drm_vc4_submit_cl)
 #define DRM_IOCTL_VC4_WAIT_SEQNO          DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_SEQNO, struct drm_vc4_wait_seqno)
@@ -41,6 +46,7 @@
 #define DRM_IOCTL_VC4_MMAP_BO             DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_MMAP_BO, struct drm_vc4_mmap_bo)
 #define DRM_IOCTL_VC4_CREATE_SHADER_BO    DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_SHADER_BO, struct drm_vc4_create_shader_bo)
 #define DRM_IOCTL_VC4_GET_HANG_STATE      DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_HANG_STATE, struct drm_vc4_get_hang_state)
+#define DRM_IOCTL_VC4_GET_PARAM           DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_PARAM, struct drm_vc4_get_param)
 
 struct drm_vc4_submit_rcl_surface {
 	__u32 hindex; /* Handle index, or ~0 if not present. */
@@ -276,4 +282,19 @@ struct drm_vc4_get_hang_state {
 	__u32 pad[16];
 };
 
+#define DRM_VC4_PARAM_V3D_IDENT0		0
+#define DRM_VC4_PARAM_V3D_IDENT1		1
+#define DRM_VC4_PARAM_V3D_IDENT2		2
+#define DRM_VC4_PARAM_SUPPORTS_BRANCHES		3
+
+struct drm_vc4_get_param {
+	__u32 param;
+	__u32 pad;
+	__u64 value;
+};
+
+#if defined(__cplusplus)
+}
+#endif
+
 #endif /* _VC4_DRM_H_ */

commit 8c8d5dd76fb80637031e824a48ceaa0f9f65d2dd
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Tue Jun 21 12:18:15 2016 -0400

    pull in sys/sysmacros.h when available
    
    This header provides major/minor/makedev funcs under most Linux C
    libs.  Pull it in to fix building with newer versions that drop the
    implicit include via sys/types.h.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94231
    Signed-off-by: Mike Frysinger <vapier@gentoo.org>

diff --git a/configure.ac b/configure.ac
index a04ce87..90fc455 100644
--- a/configure.ac
+++ b/configure.ac
@@ -53,7 +53,8 @@ AC_USE_SYSTEM_EXTENSIONS
 AC_SYS_LARGEFILE
 AC_FUNC_ALLOCA
 
-AC_CHECK_HEADERS([sys/mkdev.h sys/sysctl.h sys/select.h])
+AC_HEADER_MAJOR
+AC_CHECK_HEADERS([sys/sysctl.h sys/select.h])
 
 # Initialize libtool
 LT_PREREQ([2.2])
diff --git a/libkms/linux.c b/libkms/linux.c
index 6e0da83..69eb1aa 100644
--- a/libkms/linux.c
+++ b/libkms/linux.c
@@ -41,9 +41,12 @@
 #include <unistd.h>
 #include <sys/stat.h>
 #include <sys/types.h>
-#ifdef HAVE_SYS_MKDEV_H
+#ifdef MAJOR_IN_MKDEV
 #include <sys/mkdev.h>
 #endif
+#ifdef MAJOR_IN_SYSMACROS
+#include <sys/sysmacros.h>
+#endif
 
 #include "libdrm_macros.h"
 #include "internal.h"
diff --git a/xf86drm.c b/xf86drm.c
index e99f2e2..8a858ef 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -54,8 +54,11 @@
 #include <sys/ioctl.h>
 #include <sys/time.h>
 #include <stdarg.h>
-#ifdef HAVE_SYS_MKDEV_H
-# include <sys/mkdev.h> /* defines major(), minor(), and makedev() on Solaris */
+#ifdef MAJOR_IN_MKDEV
+#include <sys/mkdev.h>
+#endif
+#ifdef MAJOR_IN_SYSMACROS
+#include <sys/sysmacros.h>
 #endif
 #include <math.h>
 

commit 50d3c85bdb4ac0b3d546336605a722889aff7066
Author: Jan Vesely <jan.vesely@rutgers.edu>
Date:   Thu Jun 30 14:22:52 2016 -0400

    xf86drm.c: Fix mix of tabs and spaces
    
    Remove whitespace at the end of line.

diff --git a/xf86drm.c b/xf86drm.c
index 804a413..e99f2e2 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -1,5 +1,5 @@
 /**
- * \file xf86drm.c 
+ * \file xf86drm.c
  * User-level interface to DRM device
  *
  * \author Rickard E. (Rik) Faith <faith@valinux.com>
@@ -70,13 +70,13 @@
 #include "util_math.h"
 
 #ifdef __OpenBSD__
-#define DRM_PRIMARY_MINOR_NAME	"drm"
-#define DRM_CONTROL_MINOR_NAME	"drmC"
-#define DRM_RENDER_MINOR_NAME	"drmR"
+#define DRM_PRIMARY_MINOR_NAME  "drm"
+#define DRM_CONTROL_MINOR_NAME  "drmC"
+#define DRM_RENDER_MINOR_NAME   "drmR"
 #else
-#define DRM_PRIMARY_MINOR_NAME	"card"
-#define DRM_CONTROL_MINOR_NAME	"controlD"
-#define DRM_RENDER_MINOR_NAME	"renderD"
+#define DRM_PRIMARY_MINOR_NAME  "card"
+#define DRM_CONTROL_MINOR_NAME  "controlD"
+#define DRM_RENDER_MINOR_NAME   "renderD"
 #endif
 
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
@@ -96,7 +96,7 @@
 #endif /* __OpenBSD__ */
 
 #ifndef DRM_MAJOR
-#define DRM_MAJOR 226		/* Linux */
+#define DRM_MAJOR 226 /* Linux */
 #endif
 
 #define DRM_MSG_VERBOSITY 3
@@ -128,18 +128,18 @@ drmDebugPrint(const char *format, va_list ap)
 void
 drmMsg(const char *format, ...)
 {
-    va_list	ap;
+    va_list ap;
     const char *env;
     if (((env = getenv("LIBGL_DEBUG")) && strstr(env, "verbose")) ||
         (drm_server_info && drm_server_info->debug_print))
     {
-	va_start(ap, format);
-	if (drm_server_info) {
-	  drm_server_info->debug_print(format,ap);
-	} else {
-	  drmDebugPrint(format, ap);
-	}
-	va_end(ap);
+        va_start(ap, format);
+        if (drm_server_info) {
+            drm_server_info->debug_print(format,ap);
+        } else {
+            drmDebugPrint(format, ap);
+        }
+        va_end(ap);
     }
 }
 
@@ -166,10 +166,10 @@ void drmFree(void *pt)
 int
 drmIoctl(int fd, unsigned long request, void *arg)
 {
-    int	ret;
+    int ret;
 
     do {
-	ret = ioctl(fd, request, arg);
+        ret = ioctl(fd, request, arg);
     } while (ret == -1 && (errno == EINTR || errno == EAGAIN));
     return ret;
 }
@@ -190,16 +190,16 @@ drmHashEntry *drmGetEntry(int fd)
     drmHashEntry  *entry;
 
     if (!drmHashTable)
-	drmHashTable = drmHashCreate();
+        drmHashTable = drmHashCreate();
 
     if (drmHashLookup(drmHashTable, key, &value)) {
-	entry           = drmMalloc(sizeof(*entry));
-	entry->fd       = fd;
-	entry->f        = NULL;
-	entry->tagTable = drmHashCreate();
-	drmHashInsert(drmHashTable, key, entry);
+        entry           = drmMalloc(sizeof(*entry));
+        entry->fd       = fd;
+        entry->f        = NULL;
+        entry->tagTable = drmHashCreate();
+        drmHashInsert(drmHashTable, key, entry);
     } else {
-	entry = value;
+        entry = value;
     }
     return entry;
 }
@@ -221,41 +221,41 @@ static int drmMatchBusID(const char *id1, const char *id2, int pci_domain_ok)
 {
     /* First, check if the IDs are exactly the same */
     if (strcasecmp(id1, id2) == 0)
-	return 1;
+        return 1;
 
     /* Try to match old/new-style PCI bus IDs. */
     if (strncasecmp(id1, "pci", 3) == 0) {
-	unsigned int o1, b1, d1, f1;
-	unsigned int o2, b2, d2, f2;
-	int ret;
-
-	ret = sscanf(id1, "pci:%04x:%02x:%02x.%u", &o1, &b1, &d1, &f1);
-	if (ret != 4) {
-	    o1 = 0;
-	    ret = sscanf(id1, "PCI:%u:%u:%u", &b1, &d1, &f1);
-	    if (ret != 3)
-		return 0;
-	}
-
-	ret = sscanf(id2, "pci:%04x:%02x:%02x.%u", &o2, &b2, &d2, &f2);
-	if (ret != 4) {
-	    o2 = 0;
-	    ret = sscanf(id2, "PCI:%u:%u:%u", &b2, &d2, &f2);
-	    if (ret != 3)
-		return 0;
-	}
-
-	/* If domains aren't properly supported by the kernel interface,
-	 * just ignore them, which sucks less than picking a totally random
-	 * card with "open by name"
-	 */
-	if (!pci_domain_ok)
-		o1 = o2 = 0;
-
-	if ((o1 != o2) || (b1 != b2) || (d1 != d2) || (f1 != f2))
-	    return 0;
-	else
-	    return 1;
+        unsigned int o1, b1, d1, f1;
+        unsigned int o2, b2, d2, f2;
+        int ret;
+
+        ret = sscanf(id1, "pci:%04x:%02x:%02x.%u", &o1, &b1, &d1, &f1);
+        if (ret != 4) {
+            o1 = 0;
+            ret = sscanf(id1, "PCI:%u:%u:%u", &b1, &d1, &f1);
+            if (ret != 3)
+                return 0;
+        }
+
+        ret = sscanf(id2, "pci:%04x:%02x:%02x.%u", &o2, &b2, &d2, &f2);
+        if (ret != 4) {
+            o2 = 0;
+            ret = sscanf(id2, "PCI:%u:%u:%u", &b2, &d2, &f2);
+            if (ret != 3)
+                return 0;
+        }
+
+        /* If domains aren't properly supported by the kernel interface,
+         * just ignore them, which sucks less than picking a totally random
+         * card with "open by name"
+         */
+        if (!pci_domain_ok)
+            o1 = o2 = 0;
+
+        if ((o1 != o2) || (b1 != b2) || (d1 != d2) || (f1 != f2))
+            return 0;
+        else
+            return 1;
     }
     return 0;
 }
@@ -277,18 +277,18 @@ static int drmMatchBusID(const char *id1, const char *id2, int pci_domain_ok)
 #if !defined(UDEV)
 static int chown_check_return(const char *path, uid_t owner, gid_t group)
 {
-	int rv;
+        int rv;
 
-	do {
-		rv = chown(path, owner, group);
-	} while (rv != 0 && errno == EINTR);
+        do {
+            rv = chown(path, owner, group);
+        } while (rv != 0 && errno == EINTR);
 
-	if (rv == 0)
-		return 0;
+        if (rv == 0)
+            return 0;
 
-	drmMsg("Failed to change owner or group for file %s! %d: %s\n",
-			path, errno, strerror(errno));
-	return -1;
+        drmMsg("Failed to change owner or group for file %s! %d: %s\n",
+               path, errno, strerror(errno));
+        return -1;
 }
 #endif
 
@@ -297,7 +297,7 @@ static int chown_check_return(const char *path, uid_t owner, gid_t group)
  *
  * \param dev major and minor numbers of the device.
  * \param minor minor number of the device.
- * 
+ *
  * \return a file descriptor on success, or a negative value on error.
  *
  * \internal
@@ -321,99 +321,99 @@ static int drmOpenDevice(dev_t dev, int minor, int type)
 
     switch (type) {
     case DRM_NODE_PRIMARY:
-	    dev_name = DRM_DEV_NAME;
-	    break;
+        dev_name = DRM_DEV_NAME;
+        break;
     case DRM_NODE_CONTROL:
-	    dev_name = DRM_CONTROL_DEV_NAME;
-	    break;
+        dev_name = DRM_CONTROL_DEV_NAME;
+        break;
     case DRM_NODE_RENDER:
-	    dev_name = DRM_RENDER_DEV_NAME;
-	    break;
+        dev_name = DRM_RENDER_DEV_NAME;
+        break;
     default:
-	    return -EINVAL;
+        return -EINVAL;
     };
 
     sprintf(buf, dev_name, DRM_DIR_NAME, minor);
     drmMsg("drmOpenDevice: node name is %s\n", buf);
 
     if (drm_server_info && drm_server_info->get_perms) {
-	drm_server_info->get_perms(&serv_group, &serv_mode);
-	devmode  = serv_mode ? serv_mode : DRM_DEV_MODE;
-	devmode &= ~(S_IXUSR|S_IXGRP|S_IXOTH);
+        drm_server_info->get_perms(&serv_group, &serv_mode);
+        devmode  = serv_mode ? serv_mode : DRM_DEV_MODE;
+        devmode &= ~(S_IXUSR|S_IXGRP|S_IXOTH);
     }
 
 #if !defined(UDEV)
     if (stat(DRM_DIR_NAME, &st)) {
-	if (!isroot)
-	    return DRM_ERR_NOT_ROOT;
-	mkdir(DRM_DIR_NAME, DRM_DEV_DIRMODE);
-	chown_check_return(DRM_DIR_NAME, 0, 0); /* root:root */
-	chmod(DRM_DIR_NAME, DRM_DEV_DIRMODE);
+        if (!isroot)
+            return DRM_ERR_NOT_ROOT;
+        mkdir(DRM_DIR_NAME, DRM_DEV_DIRMODE);
+        chown_check_return(DRM_DIR_NAME, 0, 0); /* root:root */
+        chmod(DRM_DIR_NAME, DRM_DEV_DIRMODE);
     }
 
     /* Check if the device node exists and create it if necessary. */
     if (stat(buf, &st)) {
-	if (!isroot)
-	    return DRM_ERR_NOT_ROOT;
-	remove(buf);
-	mknod(buf, S_IFCHR | devmode, dev);
+        if (!isroot)
+            return DRM_ERR_NOT_ROOT;
+        remove(buf);
+        mknod(buf, S_IFCHR | devmode, dev);
     }
 
     if (drm_server_info && drm_server_info->get_perms) {
-	group = ((int)serv_group >= 0) ? serv_group : DRM_DEV_GID;
-	chown_check_return(buf, user, group);
-	chmod(buf, devmode);
+        group = ((int)serv_group >= 0) ? serv_group : DRM_DEV_GID;
+        chown_check_return(buf, user, group);
+        chmod(buf, devmode);
     }
 #else
     /* if we modprobed then wait for udev */
     {
-	int udev_count = 0;
+        int udev_count = 0;
 wait_for_udev:
         if (stat(DRM_DIR_NAME, &st)) {
-		usleep(20);
-		udev_count++;
-
-		if (udev_count == 50)
-			return -1;
-		goto wait_for_udev;
-	}
-
-    	if (stat(buf, &st)) {
-		usleep(20);
-		udev_count++;
-
-		if (udev_count == 50)
-			return -1;
-		goto wait_for_udev;
-    	}
+            usleep(20);
+            udev_count++;
+
+            if (udev_count == 50)
+                return -1;
+            goto wait_for_udev;
+        }
+
+        if (stat(buf, &st)) {
+            usleep(20);
+            udev_count++;
+
+            if (udev_count == 50)
+                return -1;
+            goto wait_for_udev;
+        }
     }
 #endif
 
     fd = open(buf, O_RDWR, 0);
     drmMsg("drmOpenDevice: open result is %d, (%s)\n",
-		fd, fd < 0 ? strerror(errno) : "OK");
+           fd, fd < 0 ? strerror(errno) : "OK");
     if (fd >= 0)
-	return fd;
+        return fd;
 
 #if !defined(UDEV)
     /* Check if the device node is not what we expect it to be, and recreate it
      * and try again if so.
      */
     if (st.st_rdev != dev) {
-	if (!isroot)
-	    return DRM_ERR_NOT_ROOT;
-	remove(buf);
-	mknod(buf, S_IFCHR | devmode, dev);
-	if (drm_server_info && drm_server_info->get_perms) {
-	    chown_check_return(buf, user, group);
-	    chmod(buf, devmode);
-	}
+        if (!isroot)
+            return DRM_ERR_NOT_ROOT;
+        remove(buf);
+        mknod(buf, S_IFCHR | devmode, dev);
+        if (drm_server_info && drm_server_info->get_perms) {
+            chown_check_return(buf, user, group);
+            chmod(buf, devmode);
+        }
     }
     fd = open(buf, O_RDWR, 0);
     drmMsg("drmOpenDevice: open result is %d, (%s)\n",
-		fd, fd < 0 ? strerror(errno) : "OK");
+           fd, fd < 0 ? strerror(errno) : "OK");
     if (fd >= 0)
-	return fd;
+        return fd;
 
     drmMsg("drmOpenDevice: Open failed\n");
     remove(buf);
@@ -429,7 +429,7 @@ wait_for_udev:
  * \param create allow to create the device if set.
  *
  * \return a file descriptor on success, or a negative value on error.
- * 
+ *
  * \internal
  * Calls drmOpenDevice() if \p create is set, otherwise assembles the device
  * name from \p minor and opens it.
@@ -439,37 +439,37 @@ static int drmOpenMinor(int minor, int create, int type)
     int  fd;
     char buf[64];
     const char *dev_name;
-    
+
     if (create)
-	return drmOpenDevice(makedev(DRM_MAJOR, minor), minor, type);
-    
+        return drmOpenDevice(makedev(DRM_MAJOR, minor), minor, type);
+
     switch (type) {
     case DRM_NODE_PRIMARY:
-	    dev_name = DRM_DEV_NAME;
-	    break;
+        dev_name = DRM_DEV_NAME;
+        break;
     case DRM_NODE_CONTROL:
-	    dev_name = DRM_CONTROL_DEV_NAME;
-	    break;
+        dev_name = DRM_CONTROL_DEV_NAME;
+        break;
     case DRM_NODE_RENDER:
-	    dev_name = DRM_RENDER_DEV_NAME;
-	    break;
+        dev_name = DRM_RENDER_DEV_NAME;
+        break;
     default:
-	    return -EINVAL;
+        return -EINVAL;
     };
 
     sprintf(buf, dev_name, DRM_DIR_NAME, minor);
     if ((fd = open(buf, O_RDWR, 0)) >= 0)
-	return fd;
+        return fd;
     return -errno;
 }
 
 
 /**
  * Determine whether the DRM kernel driver has been loaded.
- * 
+ *
  * \return 1 if the DRM driver is loaded, 0 otherwise.
  *
- * \internal 
+ * \internal
  * Determine the presence of the kernel driver by attempting to open the 0
  * minor and get version information.  For backward compatibility with older
  * Linux implementations, /proc/dri is also checked.
@@ -482,16 +482,16 @@ int drmAvailable(void)
 
     if ((fd = drmOpenMinor(0, 1, DRM_NODE_PRIMARY)) < 0) {
 #ifdef __linux__
-	/* Try proc for backward Linux compatibility */
-	if (!access("/proc/dri/0", R_OK))
-	    return 1;
+        /* Try proc for backward Linux compatibility */
+        if (!access("/proc/dri/0", R_OK))
+            return 1;
 #endif
-	return 0;
+        return 0;
     }
-    
+
     if ((version = drmGetVersion(fd))) {
-	retval = 1;
-	drmFreeVersion(version);
+        retval = 1;
+        drmFreeVersion(version);
     }
     close(fd);
 
@@ -570,37 +570,37 @@ static int drmOpenByBusid(const char *busid, int type)
 
     drmMsg("drmOpenByBusid: Searching for BusID %s\n", busid);
     for (i = base; i < base + DRM_MAX_MINOR; i++) {
-	fd = drmOpenMinor(i, 1, type);
-	drmMsg("drmOpenByBusid: drmOpenMinor returns %d\n", fd);
-	if (fd >= 0) {
-	    /* We need to try for 1.4 first for proper PCI domain support
-	     * and if that fails, we know the kernel is busted
-	     */
-	    sv.drm_di_major = 1;
-	    sv.drm_di_minor = 4;
-	    sv.drm_dd_major = -1;	/* Don't care */
-	    sv.drm_dd_minor = -1;	/* Don't care */
-	    if (drmSetInterfaceVersion(fd, &sv)) {
+        fd = drmOpenMinor(i, 1, type);
+        drmMsg("drmOpenByBusid: drmOpenMinor returns %d\n", fd);
+        if (fd >= 0) {
+            /* We need to try for 1.4 first for proper PCI domain support
+             * and if that fails, we know the kernel is busted
+             */
+            sv.drm_di_major = 1;
+            sv.drm_di_minor = 4;
+            sv.drm_dd_major = -1;        /* Don't care */
+            sv.drm_dd_minor = -1;        /* Don't care */
+            if (drmSetInterfaceVersion(fd, &sv)) {
 #ifndef __alpha__
-		pci_domain_ok = 0;
+                pci_domain_ok = 0;
 #endif
-		sv.drm_di_major = 1;
-		sv.drm_di_minor = 1;
-		sv.drm_dd_major = -1;       /* Don't care */
-		sv.drm_dd_minor = -1;       /* Don't care */
-		drmMsg("drmOpenByBusid: Interface 1.4 failed, trying 1.1\n");
-		drmSetInterfaceVersion(fd, &sv);
-	    }
-	    buf = drmGetBusid(fd);
-	    drmMsg("drmOpenByBusid: drmGetBusid reports %s\n", buf);
-	    if (buf && drmMatchBusID(buf, busid, pci_domain_ok)) {
-		drmFreeBusid(buf);
-		return fd;
-	    }
-	    if (buf)
-		drmFreeBusid(buf);
-	    close(fd);
-	}
+                sv.drm_di_major = 1;
+                sv.drm_di_minor = 1;
+                sv.drm_dd_major = -1;       /* Don't care */
+                sv.drm_dd_minor = -1;       /* Don't care */
+                drmMsg("drmOpenByBusid: Interface 1.4 failed, trying 1.1\n");
+                drmSetInterfaceVersion(fd, &sv);
+            }
+            buf = drmGetBusid(fd);
+            drmMsg("drmOpenByBusid: drmGetBusid reports %s\n", buf);
+            if (buf && drmMatchBusID(buf, busid, pci_domain_ok)) {
+                drmFreeBusid(buf);
+                return fd;
+            }
+            if (buf)
+                drmFreeBusid(buf);
+            close(fd);
+        }
     }
     return -1;
 }
@@ -611,14 +611,14 @@ static int drmOpenByBusid(const char *busid, int type)
  *
  * \param name driver name.
  * \param type the device node type.
- * 
+ *
  * \return a file descriptor on success, or a negative value on error.
- * 
+ *
  * \internal
  * This function opens the first minor number that matches the driver name and
  * isn't already in use.  If it's in use it then it will already have a bus ID
  * assigned.
- * 
+ *
  * \sa drmOpenMinor(), drmGetVersion() and drmGetBusid().
  */
 static int drmOpenByName(const char *name, int type)
@@ -637,56 +637,56 @@ static int drmOpenByName(const char *name, int type)
      * already in use.  If it's in use it will have a busid assigned already.
      */
     for (i = base; i < base + DRM_MAX_MINOR; i++) {
-	if ((fd = drmOpenMinor(i, 1, type)) >= 0) {
-	    if ((version = drmGetVersion(fd))) {
-		if (!strcmp(version->name, name)) {
-		    drmFreeVersion(version);
-		    id = drmGetBusid(fd);
-		    drmMsg("drmGetBusid returned '%s'\n", id ? id : "NULL");
-		    if (!id || !*id) {
-			if (id)
-			    drmFreeBusid(id);
-			return fd;
-		    } else {
-			drmFreeBusid(id);
-		    }
-		} else {
-		    drmFreeVersion(version);
-		}
-	    }
-	    close(fd);
-	}
+        if ((fd = drmOpenMinor(i, 1, type)) >= 0) {
+            if ((version = drmGetVersion(fd))) {
+                if (!strcmp(version->name, name)) {
+                    drmFreeVersion(version);
+                    id = drmGetBusid(fd);
+                    drmMsg("drmGetBusid returned '%s'\n", id ? id : "NULL");
+                    if (!id || !*id) {
+                        if (id)
+                            drmFreeBusid(id);
+                        return fd;
+                    } else {
+                        drmFreeBusid(id);
+                    }
+                } else {
+                    drmFreeVersion(version);
+                }
+            }
+            close(fd);
+        }
     }
 
 #ifdef __linux__
     /* Backward-compatibility /proc support */
     for (i = 0; i < 8; i++) {
-	char proc_name[64], buf[512];
-	char *driver, *pt, *devstring;
-	int  retcode;
-	
-	sprintf(proc_name, "/proc/dri/%d/name", i);
-	if ((fd = open(proc_name, 0, 0)) >= 0) {
-	    retcode = read(fd, buf, sizeof(buf)-1);
-	    close(fd);
-	    if (retcode) {
-		buf[retcode-1] = '\0';
-		for (driver = pt = buf; *pt && *pt != ' '; ++pt)
-		    ;
-		if (*pt) { /* Device is next */
-		    *pt = '\0';
-		    if (!strcmp(driver, name)) { /* Match */
-			for (devstring = ++pt; *pt && *pt != ' '; ++pt)
-			    ;
-			if (*pt) { /* Found busid */
-			    return drmOpenByBusid(++pt, type);
-			} else { /* No busid */
-			    return drmOpenDevice(strtol(devstring, NULL, 0),i, type);
-			}
-		    }
-		}
-	    }
-	}
+        char proc_name[64], buf[512];
+        char *driver, *pt, *devstring;
+        int  retcode;
+
+        sprintf(proc_name, "/proc/dri/%d/name", i);
+        if ((fd = open(proc_name, 0, 0)) >= 0) {
+            retcode = read(fd, buf, sizeof(buf)-1);
+            close(fd);
+            if (retcode) {
+                buf[retcode-1] = '\0';
+                for (driver = pt = buf; *pt && *pt != ' '; ++pt)
+                    ;
+                if (*pt) { /* Device is next */
+                    *pt = '\0';
+                    if (!strcmp(driver, name)) { /* Match */
+                        for (devstring = ++pt; *pt && *pt != ' '; ++pt)
+                            ;
+                        if (*pt) { /* Found busid */
+                            return drmOpenByBusid(++pt, type);
+                        } else { /* No busid */
+                            return drmOpenDevice(strtol(devstring, NULL, 0),i, type);
+                        }
+                    }
+                }
+            }
+        }
     }
 #endif
 
@@ -702,9 +702,9 @@ static int drmOpenByName(const char *name, int type)
  *
  * \param name driver name. Not referenced if bus ID is supplied.
  * \param busid bus ID. Zero if not known.
- * 
+ *
  * \return a file descriptor on success, or a negative value on error.
- * 
+ *
  * \internal
  * It calls drmOpenByBusid() if \p busid is specified or drmOpenByName()
  * otherwise.
@@ -734,21 +734,21 @@ int drmOpenWithType(const char *name, const char *busid, int type)
 {
     if (!drmAvailable() && name != NULL && drm_server_info &&
         drm_server_info->load_module) {
-	/* try to load the kernel module */
-	if (!drm_server_info->load_module(name)) {
-	    drmMsg("[drm] failed to load kernel module \"%s\"\n", name);
-	    return -1;
-	}
+        /* try to load the kernel module */
+        if (!drm_server_info->load_module(name)) {
+            drmMsg("[drm] failed to load kernel module \"%s\"\n", name);
+            return -1;
+        }
     }
 
     if (busid) {
-	int fd = drmOpenByBusid(busid, type);
-	if (fd >= 0)
-	    return fd;
+        int fd = drmOpenByBusid(busid, type);
+        if (fd >= 0)
+            return fd;
     }
-    
+
     if (name)
-	return drmOpenByName(name, type);
+        return drmOpenByName(name, type);
 
     return -1;
 }
@@ -775,7 +775,7 @@ int drmOpenRender(int minor)
 void drmFreeVersion(drmVersionPtr v)
 {
     if (!v)
-	return;
+        return;
     drmFree(v->name);
     drmFree(v->date);
     drmFree(v->desc);
@@ -795,7 +795,7 @@ void drmFreeVersion(drmVersionPtr v)
 static void drmFreeKernelVersion(drm_version_t *v)
 {
     if (!v)
-	return;
+        return;
     drmFree(v->name);
     drmFree(v->date);
     drmFree(v->desc);
@@ -805,10 +805,10 @@ static void drmFreeKernelVersion(drm_version_t *v)
 
 /**
  * Copy version information.
- * 
+ *
  * \param d destination pointer.
  * \param s source pointer.
- * 
+ *
  * \internal
  * Used by drmGetVersion() to translate the information returned by the ioctl
  * interface in a private structure into the public structure counterpart.
@@ -831,12 +831,12 @@ static void drmCopyVersion(drmVersionPtr d, const drm_version_t *s)
  * Query the driver version information.
  *
  * \param fd file descriptor.
- * 
+ *
  * \return pointer to a drmVersion structure which should be freed with
  * drmFreeVersion().
- * 
+ *
  * \note Similar information is available via /proc/dri.
- * 
+ *
  * \internal
  * It gets the version information via successive DRM_IOCTL_VERSION ioctls,
  * first with zeros to get the string lengths, and then the actually strings.
@@ -850,21 +850,21 @@ drmVersionPtr drmGetVersion(int fd)
     memclear(*version);
 
     if (drmIoctl(fd, DRM_IOCTL_VERSION, version)) {
-	drmFreeKernelVersion(version);
-	return NULL;
+        drmFreeKernelVersion(version);
+        return NULL;
     }
 
     if (version->name_len)
-	version->name    = drmMalloc(version->name_len + 1);
+        version->name    = drmMalloc(version->name_len + 1);
     if (version->date_len)
-	version->date    = drmMalloc(version->date_len + 1);
+        version->date    = drmMalloc(version->date_len + 1);
     if (version->desc_len)
-	version->desc    = drmMalloc(version->desc_len + 1);
+        version->desc    = drmMalloc(version->desc_len + 1);
 
     if (drmIoctl(fd, DRM_IOCTL_VERSION, version)) {
-	drmMsg("DRM_IOCTL_VERSION: %s\n", strerror(errno));
-	drmFreeKernelVersion(version);
-	return NULL;
+        drmMsg("DRM_IOCTL_VERSION: %s\n", strerror(errno));
+        drmFreeKernelVersion(version);
+        return NULL;
     }
 
     /* The results might not be null-terminated strings, so terminate them. */
@@ -881,13 +881,13 @@ drmVersionPtr drmGetVersion(int fd)
 
 /**
  * Get version information for the DRM user space library.
- * 
+ *
  * This version number is driver independent.
- * 
+ *
  * \param fd file descriptor.
  *
  * \return version information.
- * 
+ *
  * \internal
  * This function allocates and fills a drm_version structure with a hard coded
  * version number.
@@ -915,29 +915,29 @@ drmVersionPtr drmGetLibVersion(int fd)
 
 int drmGetCap(int fd, uint64_t capability, uint64_t *value)
 {
-	struct drm_get_cap cap;
-	int ret;
+    struct drm_get_cap cap;
+    int ret;
 
-	memclear(cap);
-	cap.capability = capability;
+    memclear(cap);
+    cap.capability = capability;
 
-	ret = drmIoctl(fd, DRM_IOCTL_GET_CAP, &cap);
-	if (ret)
-		return ret;
+    ret = drmIoctl(fd, DRM_IOCTL_GET_CAP, &cap);
+    if (ret)
+        return ret;
 
-	*value = cap.value;
-	return 0;
+    *value = cap.value;
+    return 0;
 }
 
 int drmSetClientCap(int fd, uint64_t capability, uint64_t value)
 {
-	struct drm_set_client_cap cap;
+    struct drm_set_client_cap cap;
 
-	memclear(cap);
-	cap.capability = capability;
-	cap.value = value;
+    memclear(cap);
+    cap.capability = capability;
+    cap.value = value;
 
-	return drmIoctl(fd, DRM_IOCTL_SET_CLIENT_CAP, &cap);
+    return drmIoctl(fd, DRM_IOCTL_SET_CLIENT_CAP, &cap);
 }
 
 /**
@@ -973,10 +973,10 @@ char *drmGetBusid(int fd)
     memclear(u);


Reply to: