svn commit: r520462 - in head/multimedia/libva-intel-media-driver: . files
Jan Beich
jbeich at FreeBSD.org
Fri Dec 20 04:15:57 UTC 2019
Author: jbeich
Date: Fri Dec 20 04:15:56 2019
New Revision: 520462
URL: https://svnweb.freebsd.org/changeset/ports/520462
Log:
multimedia/libva-intel-media-driver: try harder with userptr
Added:
head/multimedia/libva-intel-media-driver/files/patch-userptr (contents, props changed)
Modified:
head/multimedia/libva-intel-media-driver/Makefile (contents, props changed)
Modified: head/multimedia/libva-intel-media-driver/Makefile
==============================================================================
--- head/multimedia/libva-intel-media-driver/Makefile Fri Dec 20 04:15:46 2019 (r520461)
+++ head/multimedia/libva-intel-media-driver/Makefile Fri Dec 20 04:15:56 2019 (r520462)
@@ -3,6 +3,7 @@
PORTNAME= media-driver
DISTVERSIONPREFIX= intel-media-
DISTVERSION= 19.4.0
+PORTREVISION= 1
CATEGORIES= multimedia
PKGNAMEPREFIX= libva-intel-
Added: head/multimedia/libva-intel-media-driver/files/patch-userptr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/multimedia/libva-intel-media-driver/files/patch-userptr Fri Dec 20 04:15:56 2019 (r520462)
@@ -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;
More information about the svn-ports-all
mailing list