summaryrefslogtreecommitdiff
path: root/usr/src/common/libdrm/patches/intel-drm.patch
blob: 47fa4d360f4c3cb9cb2674cc10a9ccc97f9bf435 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
diff ... libdrm-2.4.74/intel/intel_bufmgr_gem.c
--- libdrm-2.4.74-ref/intel/intel_bufmgr_gem.c	Tue Nov 29 06:15:10 2016
+++ libdrm-2.4.74/intel/intel_bufmgr_gem.c	Sat Dec 31 18:30:23 2016
@@ -3363,6 +3363,16 @@
 static pthread_mutex_t bufmgr_list_mutex = PTHREAD_MUTEX_INITIALIZER;
 static drmMMListHead bufmgr_list = { &bufmgr_list, &bufmgr_list };
 
+static int
+compare_file_descriptor(int fd1, int fd2) {
+	struct stat stat1, stat2;
+	if (fstat (fd1, &stat1) < 0)
+		return -1;
+	if (fstat (fd2, &stat2) < 0)
+		return -1;
+	return (stat1.st_dev == stat2.st_dev) && (stat1.st_ino == stat2.st_ino);
+}
+
 static drm_intel_bufmgr_gem *
 drm_intel_bufmgr_gem_find(int fd)
 {
@@ -3369,7 +3379,8 @@
 	drm_intel_bufmgr_gem *bufmgr_gem;
 
 	DRMLISTFOREACHENTRY(bufmgr_gem, &bufmgr_list, managers) {
-		if (bufmgr_gem->fd == fd) {
+		if (bufmgr_gem->fd == fd ||
+		    compare_file_descriptor (bufmgr_gem->fd, fd)) {
 			atomic_inc(&bufmgr_gem->refcount);
 			return bufmgr_gem;
 		}
diff ... libdrm-2.4.74/intel/intel_decode.c
--- libdrm-2.4.74-ref/intel/intel_decode.c	Tue Nov 29 06:15:10 2016
+++ libdrm-2.4.74/intel/intel_decode.c	Sat Dec 31 18:30:23 2016
@@ -402,6 +402,7 @@
 		format = "1555";
 		break;
 	case 3:
+	default:	/* Keep GCC happy. */
 		format = "8888";
 		break;
 	}