aboutsummaryrefslogtreecommitdiff
path: root/multimedia/libva-intel-media-driver
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2019-12-20 04:15:56 +0000
committerJan Beich <jbeich@FreeBSD.org>2019-12-20 04:15:56 +0000
commit18789087a0a884a3f5f3e46f57bbc8307ee4ba75 (patch)
treed44561a22e2ea434c7f8df6a9ccdc599b662e2ac /multimedia/libva-intel-media-driver
parent465e50c225b8bb47bf8b089d1a3eaf669a94151b (diff)
downloadports-18789087a0a884a3f5f3e46f57bbc8307ee4ba75.tar.gz
ports-18789087a0a884a3f5f3e46f57bbc8307ee4ba75.zip
multimedia/libva-intel-media-driver: try harder with userptr
Notes
Notes: svn path=/head/; revision=520462
Diffstat (limited to 'multimedia/libva-intel-media-driver')
-rw-r--r--multimedia/libva-intel-media-driver/Makefile1
-rw-r--r--multimedia/libva-intel-media-driver/files/patch-userptr31
2 files changed, 32 insertions, 0 deletions
diff --git a/multimedia/libva-intel-media-driver/Makefile b/multimedia/libva-intel-media-driver/Makefile
index 8d7b2aa7e2e6..e335e3227054 100644
--- a/multimedia/libva-intel-media-driver/Makefile
+++ b/multimedia/libva-intel-media-driver/Makefile
@@ -3,6 +3,7 @@
PORTNAME= media-driver
DISTVERSIONPREFIX= intel-media-
DISTVERSION= 19.4.0
+PORTREVISION= 1
CATEGORIES= multimedia
PKGNAMEPREFIX= libva-intel-
diff --git a/multimedia/libva-intel-media-driver/files/patch-userptr b/multimedia/libva-intel-media-driver/files/patch-userptr
new file mode 100644
index 000000000000..0be32504c772
--- /dev/null
+++ b/multimedia/libva-intel-media-driver/files/patch-userptr
@@ -0,0 +1,31 @@
+Try unsynchronized userptr if regular one fails.
+https://github.com/FreeBSDDesktop/kms-drm/issues/197
+
+--- media_driver/linux/common/os/i915/mos_bufmgr.c.orig 2019-12-10 08:54:00 UTC
++++ media_driver/linux/common/os/i915/mos_bufmgr.c
+@@ -945,10 +945,15 @@ mos_gem_bo_alloc_userptr(struct mos_bufmgr *bufmgr,
+ userptr.user_size = size;
+ userptr.flags = 0;
+
++retry:
+ ret = drmIoctl(bufmgr_gem->fd,
+ DRM_IOCTL_I915_GEM_USERPTR,
+ &userptr);
+ if (ret != 0) {
++ if (errno == ENODEV && userptr.flags == 0) {
++ userptr.flags = I915_USERPTR_UNSYNCHRONIZED;
++ goto retry;
++ }
+ MOS_DBG("bo_create_userptr: "
+ "ioctl failed with user ptr %p size 0x%lx, "
+ "user flags 0x%lx\n", addr, size, flags);
+@@ -1021,6 +1026,9 @@ retry:
+ if (errno == ENODEV && userptr.flags == 0) {
+ userptr.flags = I915_USERPTR_UNSYNCHRONIZED;
+ goto retry;
++ }
++ if (geteuid() != 0) {
++ fprintf(stderr, "%s", "ioctl(I915_GEM_USERPTR) failed. Try running as root but expect poor stability.\n");
+ }
+ free(ptr);
+ return false;