Plex in FreeNAS jail and vaapi Intel hardware acceleration support

Server Version#: 1.13.9.5439
Player Version#: N/A

As soon as FreeNAS 11.2 finally provided support for DRM-KMS and included i915kms.ko library in /boot/modules we have a chance to use vaapi for transcoding process. Did someone had a luck to use hw acceleration in jain in FreeBSD?

I included i915kms.ko and drm.ko, put devfs /dev/dri to the jail, but still have error in vainfo and ffmpeg error in logs.

root@Plex:/ # kldstat
Id Refs Address            Size     Name
 1   71 0xffffffff80200000 2186000  kernel
 2    1 0xffffffff8271f000 101064   ispfw.ko
 4    1 0xffffffff82831000 84cc     freenas_sysctl.ko
 5    1 0xffffffff82d11000 6880     ipmi.ko
 6    1 0xffffffff82d18000 a60      smbus.ko
 7    1 0xffffffff82d19000 32e048   vmm.ko
 8    1 0xffffffff83048000 a74      nmdm.ko
 9    1 0xffffffff83049000 e640     geom_mirror.ko
10    1 0xffffffff83058000 3a44     geom_multipath.ko
11    1 0xffffffff8305c000 2ec      dtraceall.ko
12    9 0xffffffff8305d000 3ad18    dtrace.ko
13    1 0xffffffff83098000 5b8      dtmalloc.ko
14    1 0xffffffff83099000 1898     dtnfscl.ko
15    1 0xffffffff8309b000 1d31     fbt.ko
16    1 0xffffffff8309d000 533a0    fasttrap.ko
17    1 0xffffffff830f1000 bfc      sdt.ko
18    1 0xffffffff830f2000 6d80     systrace.ko
19    1 0xffffffff830f9000 6d48     systrace_freebsd32.ko
20    1 0xffffffff83100000 f9c      profile.ko
21    1 0xffffffff83101000 120cb8   i915kms.ko
22    1 0xffffffff83222000 74c40    drm.ko
23    3 0xffffffff83297000 124a8    linuxkpi_gplv2.ko
24    2 0xffffffff832aa000 6b8      debugfs.ko
root@Plex:/ # ls -la /dev/dri
total 1
dr-xr-xr-x   2 root  wheel  512 Nov 14 20:57 .
dr-xr-xr-x  16 root  wheel  512 Nov 14 20:57 ..
lrwxr-xr-x   1 root  wheel    8 Nov 14 20:57 card0 -> ../drm/0
lrwxr-xr-x   1 root  wheel   10 Nov 14 20:57 renderD128 -> ../drm/128
root@Plex:/ # vainfo
error: can't connect to X server!
libva info: VA-API version 1.3.0
libva info: va_getDriverName() returns 1
libva error: va_getDriverName() failed with operation failed,driver_name=i965
vaInitialize failed with error code 1 (operation failed),exit
root@Plex:/ # pciconf -lv
-------
vgapci0@pci0:0:2:0:     class=0x030000 card=0xd0001458 chip=0x01028086 rev=0x09 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '2nd Generation Core Processor Family Integrated Graphics Controller'
    class      = display
    subclass   = VGA
-------
root@Plex:/ # cat /usr/local/plexdata-plexpass/Plex\ Media\ Server/Logs/Plex\ Media\ Server.log | grep FFMPEG
Nov 15, 2018 10:16:43.812 [0x80c1fc900] ERROR - [FFMPEG] - No VA display found for device: /dev/dri/renderD128.
Nov 15, 2018 10:16:43.812 [0x80c1fc900] ERROR - [FFMPEG] - No VA display found for device: /dev/dri/renderD128.
Nov 15, 2018 10:16:43.813 [0x80c1fc900] ERROR - [FFMPEG] - No VA display found for device: /dev/dri/renderD128.
Nov 15, 2018 10:16:43.813 [0x80c1fc900] ERROR - [FFMPEG] - No VA display found for device: /dev/dri/renderD128.
Nov 15, 2018 10:16:43.814 [0x80c1fc900] ERROR - [FFMPEG] - No VA display found for device: /dev/dri/renderD128.
Nov 15, 2018 10:16:43.814 [0x80c1fc900] ERROR - [FFMPEG] - No VA display found for device: /dev/dri/renderD128.

Talking to myself - I moved further and found out that card0 is available in jail to use with vaapi. Can I change /dev/dri/renderD128 to /dev/dri/card0 somehow?

root@Plex_112:/media/Others # vainfo --display drm --device /dev/dri/card0
libva info: VA-API version 1.3.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_3
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.3 (libva 2.3.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Sandybridge Desktop - 2.2.0
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc

I’ve got the same issue as you have, and I too haven’t reached any conclusion as to where the issue might lie.

I do, however, have a slightly different error message. Otherwise the rest is identical.

Nov 16, 2018 22:40:46.231 [0x80ce40f00] ERROR - [FFMPEG] - libva: va_getDriverName() failed with operation failed,driver_name=i965
Nov 16, 2018 22:40:46.231 [0x80ce40f00] ERROR - [FFMPEG] - Failed to initialise VAAPI connection: 1 (operation failed).

I suppose you’ve checked that the plex user is a member of the video group.

root@plex:/usr/local/share/plexmediaserver-plexpass # ls -l /dev/dri
total 0
lrwxr-xr-x  1 root  wheel   8 Nov 16 22:24 card0 -> ../drm/0
lrwxr-xr-x  1 root  wheel  10 Nov 16 22:24 renderD128 -> ../drm/128

root@plex:/usr/local/share/plexmediaserver-plexpass # ls -l /dev/drm/
total 0
crw-rw----  1 root  video  0x1f4 Nov 16 12:22 0
crw-rw----  1 root  video  0x274 Nov 16 12:22 128

root@plex:/usr/local/share/plexmediaserver-plexpass # id plex
uid=972(plex) gid=972(plex) groups=972(plex),44(video)

Yes, sure, plex user is in video group. Issue is somewhere else. I think we need to change somehow vaapi device in PMS request for transcoding.

The error I’m experiencing points to a permission error. Not sure where or why though.
The first run is vainfo through card0, which is successful.

truss vainfo --display drm --device /dev/dri/card0
(Lines removed)
libva info: VA-API version 1.3.0
write(2,"libva info: VA-API version 1.3.0"...,33) = 33 (0x21)
ioctl(3,0xc0406400 { IORW 0x64('d'), 0, 64 },0x80281b040) = 0 (0x0)
ioctl(3,0xc0406400 { IORW 0x64('d'), 0, 64 },0x80281b040) = 0 (0x0)
libva info: va_getDriverName() returns 0
write(2,"libva info: va_getDriverName() r"...,41) = 41 (0x29)
geteuid()                                        = 0 (0x0)
getuid()                                         = 0 (0x0)
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
write(2,"libva info: Trying to open /usr/"...,64) = 64 (0x40)
(Lines removed)

The second run is vainfo through renderD128, which fails.

truss vainfo --display drm --device /dev/dri/renderD128
(Lines removed)
libva info: VA-API version 1.3.0
write(2,"libva info: VA-API version 1.3.0"...,33) = 33 (0x21)
ioctl(3,0xc0406400 { IORW 0x64('d'), 0, 64 },0x80281b040) = 0 (0x0)
ioctl(3,0xc0406400 { IORW 0x64('d'), 0, 64 },0x80281b040) = 0 (0x0)
ioctl(3,0x40046402 { IOR 0x64('d'), 2, 4 },0x7fffffffe5c0) ERR#13 'Permission denied'
libva info: va_getDriverName() returns 1
write(2,"libva info: va_getDriverName() r"...,41) = 41 (0x29)
libva error: va_getDriverName() failed with operation failed,driver_name=i965
write(2,"libva error: va_getDriverName() "...,78) = 78 (0x4e)
vaInitialize failed with error code 1 (operation failed),exit
write(2,"vaInitialize failed with error c"...,62) = 62 (0x3e)
close(3)                                         = 0 (0x0)
exit(0x3)
process exit, rval = 3

You’re right, the same output for me. But vainfo is executing from root, so I think it’s not simple permission issue.

I run it as root too. It’s my understanding that even root can be denied given the “right” circumstances. This is even outside of the jail, so I don’t believe this has something to do even with Plex. ffmpeg (as suggested on https://trac.ffmpeg.org/wiki/Hardware/VAAPI) renders the same error.

root@lrrr:~ # ffmpeg -init_hw_device vaapi=foo:/dev/dri/renderD128
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
  built with FreeBSD clang version 6.0.0 (tags/RELEASE_600/final 326565) (based on LLVM 6.0.0)
  configuration: --prefix=/usr/local --mandir=/usr/local/man --datadir=/usr/local/share/ffmpeg --pkgconfigdir=/usr/local/libdata/pkgconfig --enable-shared --enable-pic --enable-gpl --enable-postproc --enable-avfilter --enable-avresample --enable-pthreads --cc=cc --disable-alsa --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libaom --disable-libass --disable-libbs2b --disable-libcaca --disable-libcdio --disable-libcelt --disable-chromaprint --disable-libcodec2 --disable-libdavs2 --disable-libdc1394 --disable-debug --enable-htmlpages --disable-libdrm --enable-libfdk-aac --disable-libflite --enable-fontconfig --enable-libfreetype --enable-frei0r --disable-libfribidi --disable-gcrypt --disable-libgme --enable-gmp --enable-gnutls --enable-version3 --disable-libgsm --enable-iconv --disable-libilbc --disable-libjack --disable-libklvanc --disable-libkvazaar --disable-ladspa --disable-libmp3lame --disable-liblensfun --disable-libbluray --disable-librsvg --disable-librtmp --disable-libxml2 --disable-lv2 --disable-mbedtls --enable-mmx --disable-libmodplug --disable-libmysofa --enable-nonfree --disable-openal --disable-opencl --enable-libopencv --disable-opengl --disable-libopenh264 --disable-libopenjpeg --disable-libopenmpt --disable-openssl --disable-optimizations --disable-libopus --disable-libpulse --enable-runtime-cpudetect --disable-librubberband --disable-sdl2 --disable-libsmbclient --disable-libsnappy --disable-sndio --disable-libsoxr --disable-libspeex --disable-libsrt --enable-sse --disable-libssh --disable-libtensorflow --disable-libtesseract --enable-libtheora --disable-libtwolame --enable-libv4l2 --enable-vaapi --disable-vapoursynth --enable-vdpau --disable-libvidstab --enable-libvorbis --disable-libvo-amrwbenc --enable-libvpx --disable-libwavpack --disable-libwebp --enable-libx264 --enable-libx265 --disable-libxavs2 --disable-libxcb --enable-libxvid --disable-outdev=xv --disable-libzimg --disable-libzmq --disable-libzvbi
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
[AVHWDeviceContext @ 0x80c81b0c0] libva: va_getDriverName() failed with operation failed,driver_name=i965
[AVHWDeviceContext @ 0x80c81b0c0] Failed to initialise VAAPI connection: 1 (operation failed).
Device creation failed: -5.
Failed to set value 'vaapi=foo:/dev/dri/renderD128' for option 'init_hw_device': Input/output error
Error parsing global options: Input/output error

I’m using the following software on FreeBSD 11.2-RELEASE-p4;

[root@lrrr ~]# pkg info|grep drm
drm-next-kmod-4.11.g20181027_1 DRM modules for the linuxkpi-based KMS components
libdrm-2.4.93,1                Userspace interface to kernel Direct Rendering Module services
[root@lrrr ~]# pkg info|grep libva
libva-2.3.0_1                  VAAPI wrapper and dummy driver
libva-intel-driver-2.2.0_3     VAAPI intel driver
libva-intel-hybrid-driver-1.0.2 Hybrid VP8 encoder and VP9 decoder for Intel GPUs
libva-intel-media-driver-18.3.0 Intel Media Driver for VAAPI
libva-utils-2.3.0              Collection of tests and utilities for VAAPI

@mikec_pt could you please provide some advise for us trying to get hardware acceleration going on FreeBSD 11.2 over here?

FreeBSD 12 is needed and recent DRM (I posted in another thread about that) you need to install drm-next-kmod and that is only possible in FreeBSD 12 or at least that was the case back when I tested…

This seems to suggest FreeBSD 12 kernel is still needed: https://github.com/FreeBSDDesktop/kms-drm/wiki/Testing

I doubt this will be ported back to 11.X considering 12 is almost out the door and it didn’t happen until now so…

Also btw I never attempted this on a jail, I have no clue if that works, but I’m assuming if we can get access to /dev/dri/renderD128 on the jail (for the host its just a matter of adding plex user to the video group… but for the jail you’d need to expose that “dev”

Unfortunately I no longer have the hardware I used to test this so I can’t verify it works inside a jail, otherwise I’d be happy to try it out.

Alright, thanks for the clarification. FreeBSD 12.0-RELEASE is just around the corner. I’ll give it a go once it’s released and report back.

The issue remains with FreeBSD 12.0-RELEASE. Issuing a ffmpeg -init_hw_device vaapi=foo:/dev/dri/renderD128 still renders the same failure as my previous post, while addressing /dev/dri/card0 succeeds.

That why you need drm-kmod-next, have you installed it?

Also after you do make sure its there:

# ls /dev/dri/
card0 renderD128

Tbh I’m not sure what ships with 12.0 now that its release but back when I tested this I needed drm-kmod-next to see renderD128

btw the user running plex/ffmpeg need to be in the video group which by default should have access to this.

Thanks for taking your time to look at the issue.

Hostname plex is the jail
Hostname lrrr is the host

root@plex:~ # ls -l /dev/dri/
total 0
lrwxr-xr-x  1 root  wheel   8 Dec 13 20:54 card0 -> ../drm/0
lrwxr-xr-x  1 root  wheel  10 Dec 13 20:54 renderD128 -> ../drm/128
root@plex:~ # ls -l /dev/drm/{0,128}
crw-rw----  1 root  video  0x1ec Dec 13 21:48 /dev/drm/0
crw-rw----  1 root  video  0x26c Dec 13 21:48 /dev/drm/128

AND

root@plex:~ # getent group video
video:*:44:plex
root@lrrr:~ # pkg info -l drm-next-kmod
drm-next-kmod-4.11.g20181027_1:
        /boot/modules/amdgpu.ko
        /boot/modules/amdkfd.ko
        /boot/modules/debugfs.ko
        /boot/modules/drm.ko
        /boot/modules/i915kms.ko
        /boot/modules/linuxkpi_gplv2.ko
        /boot/modules/radeonkms.ko
        /usr/local/share/licenses/drm-next-kmod-4.11.g20181027_1/BSD2CLAUSE
        /usr/local/share/licenses/drm-next-kmod-4.11.g20181027_1/GPLv2
        /usr/local/share/licenses/drm-next-kmod-4.11.g20181027_1/LICENSE
        /usr/local/share/licenses/drm-next-kmod-4.11.g20181027_1/MIT
        /usr/local/share/licenses/drm-next-kmod-4.11.g20181027_1/catalog.mk
root@lrrr:~ # kldstat | egrep "(i915|drm|linuxkpi|debugfs)"
15    1 0xffffffff83023000   11f7c0 i915kms.ko
16    1 0xffffffff83143000    74190 drm.ko
17    4 0xffffffff831b8000    104f0 linuxkpi.ko
18    3 0xffffffff831c9000    11300 linuxkpi_gplv2.ko
19    2 0xffffffff831db000      6c0 debugfs.ko

But, as I said the issue isn’t jail or plex-specific. The issue exists with vainfo or ffmpeg on the host itself, even if running as root.

Summary
root@lrrr:~ # truss vainfo --display drm --device /dev/dri/renderD128
mmap(0x0,131072,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34361999360 (0x800228000)
issetugid()                                      = 0 (0x0)
openat(AT_FDCWD,"/etc/libmap.conf",O_RDONLY|O_CLOEXEC,00) = 3 (0x3)
fstat(3,{ mode=-rw-r--r-- ,inode=20991,size=122,blksize=4096 }) = 0 (0x0)
read(3,"# $FreeBSD: releng/12.0/libexec/"...,122) = 122 (0x7a)
close(3)                                         = 0 (0x0)
open("/usr/local/etc/libmap.d",O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC,0165) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/var/run/ld-elf.so.hints",O_RDONLY|O_CLOEXEC,00) = 3 (0x3)
read(3,"Ehnt\^A\0\0\0\M^@\0\0\0\M^F\^A\0"...,128) = 128 (0x80)
fstat(3,{ mode=-r--r--r-- ,inode=26084,size=518,blksize=4096 }) = 0 (0x0)
pread(3,"/lib:/usr/lib:/usr/lib/compat:/u"...,390,0x80) = 390 (0x186)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libX11.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libX11.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libX11.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libX11.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=78860,size=1311168,blksize=131072 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,1314816,PROT_NONE,MAP_GUARD,-1,0x0)     = 34362134528 (0x800249000)
mmap(0x800249000,688128,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34362134528 (0x800249000)
mmap(0x8002f1000,598016,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0xa8000) = 34362822656 (0x8002f1000)
mmap(0x800383000,24576,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x13a000) = 34363420672 (0x800383000)
mmap(0x800389000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34363445248 (0x800389000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libXext.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libXext.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libXext.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libXext.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=144468,size=76488,blksize=76800 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,81920,PROT_NONE,MAP_GUARD,-1,0x0)       = 34363449344 (0x80038a000)
mmap(0x80038a000,24576,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34363449344 (0x80038a000)
mmap(0x800390000,45056,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x6000) = 34363473920 (0x800390000)
mmap(0x80039b000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x11000) = 34363518976 (0x80039b000)
mmap(0x80039d000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34363527168 (0x80039d000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libXfixes.so.3",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libXfixes.so.3",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libXfixes.so.3",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libXfixes.so.3",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=162648,size=32208,blksize=32256 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,32768,PROT_NONE,MAP_GUARD,-1,0x0)       = 34363531264 (0x80039e000)
mmap(0x80039e000,8192,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34363531264 (0x80039e000)
mmap(0x8003a0000,12288,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x2000) = 34363539456 (0x8003a0000)
mmap(0x8003a3000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x5000) = 34363551744 (0x8003a3000)
mmap(0x8003a5000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34363559936 (0x8003a5000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libva-x11.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libva-x11.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libva-x11.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libva-x11.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=187743,size=27256,blksize=27648 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,32768,PROT_NONE,MAP_GUARD,-1,0x0)       = 34363564032 (0x8003a6000)
mmap(0x8003a6000,8192,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34363564032 (0x8003a6000)
mmap(0x8003a8000,12288,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x2000) = 34363572224 (0x8003a8000)
mmap(0x8003ab000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x5000) = 34363584512 (0x8003ab000)
mmap(0x8003ad000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34363592704 (0x8003ad000)
munmap(0x800248000,4096)                         = 0 (0x0)
__sysctl(0x7fffffffd0d8,0x2,0x80022761c,0x7fffffffd0e0,0x0,0x0) = 0 (0x0)
__sysctl(0x7fffffffd0d8,0x2,0x80022771c,0x7fffffffd0e0,0x0,0x0) = 0 (0x0)
__sysctl(0x7fffffffd0d8,0x2,0x80022781c,0x7fffffffd0e0,0x0,0x0) = 0 (0x0)
__sysctl(0x7fffffffd0d8,0x2,0x80022791c,0x7fffffffd0e0,0x0,0x0) = 0 (0x0)
__sysctl(0x7fffffffd0d8,0x2,0x800227a1c,0x7fffffffd0e0,0x0,0x0) = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libdrm.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libdrm.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libdrm.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libdrm.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=184503,size=84648,blksize=84992 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,90112,PROT_NONE,MAP_GUARD,-1,0x0)       = 34363596800 (0x8003ae000)
mmap(0x8003ae000,28672,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34363596800 (0x8003ae000)
mmap(0x8003b5000,49152,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x7000) = 34363625472 (0x8003b5000)
mmap(0x8003c1000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x13000) = 34363674624 (0x8003c1000)
mmap(0x8003c3000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34363682816 (0x8003c3000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libva-drm.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libva-drm.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libva-drm.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libva-drm.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=187734,size=15128,blksize=15360 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,16384,PROT_NONE,MAP_GUARD,-1,0x0)       = 34363686912 (0x8003c4000)
mmap(0x8003c4000,4096,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34363686912 (0x8003c4000)
mmap(0x8003c5000,4096,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x1000) = 34363691008 (0x8003c5000)
mmap(0x8003c6000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x2000) = 34363695104 (0x8003c6000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libva-wayland.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libva-wayland.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libva-wayland.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libva-wayland.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=187740,size=23640,blksize=24064 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,24576,PROT_NONE,MAP_GUARD,-1,0x0)       = 34363703296 (0x8003c8000)
mmap(0x8003c8000,8192,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34363703296 (0x8003c8000)
mmap(0x8003ca000,8192,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x2000) = 34363711488 (0x8003ca000)
mmap(0x8003cc000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x4000) = 34363719680 (0x8003cc000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libva.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libva.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libva.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libva.so.2",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=187746,size=159912,blksize=131072 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,163840,PROT_NONE,MAP_GUARD,-1,0x0)      = 34363727872 (0x8003ce000)
mmap(0x8003ce000,57344,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34363727872 (0x8003ce000)
mmap(0x8003dc000,94208,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0xe000) = 34363785216 (0x8003dc000)
mmap(0x8003f3000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x25000) = 34363879424 (0x8003f3000)
mmap(0x8003f5000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34363887616 (0x8003f5000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libwayland-client.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libwayland-client.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libwayland-client.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libwayland-client.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=139979,size=144904,blksize=131072 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,81920,PROT_NONE,MAP_GUARD,-1,0x0)       = 34363891712 (0x8003f6000)
mmap(0x8003f6000,32768,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34363891712 (0x8003f6000)
mmap(0x8003fe000,32768,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x8000) = 34363924480 (0x8003fe000)
mmap(0x800406000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x10000) = 34363957248 (0x800406000)
mmap(0x800409000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34363969536 (0x800409000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libthr.so.3",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=20729,size=131824,blksize=131072 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,176128,PROT_NONE,MAP_GUARD,-1,0x0)      = 34363973632 (0x80040a000)
mmap(0x80040a000,49152,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34363973632 (0x80040a000)
mmap(0x800416000,69632,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0xc000) = 34364022784 (0x800416000)
mmap(0x800427000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x1d000) = 34364092416 (0x800427000)
mmap(0x800429000,49152,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34364100608 (0x800429000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libc.so.7",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=20697,size=1949672,blksize=131072 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,4141056,PROT_NONE,MAP_GUARD,-1,0x0)     = 34364149760 (0x800435000)
mmap(0x800435000,491520,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34364149760 (0x800435000)
mmap(0x8004ad000,1331200,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x78000) = 34364641280 (0x8004ad000)
mmap(0x8005f2000,61440,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x1bd000) = 34365972480 (0x8005f2000)
mmap(0x800601000,2256896,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34366033920 (0x800601000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libxcb.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libxcb.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libxcb.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libxcb.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=75080,size=162640,blksize=131072 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,167936,PROT_NONE,MAP_GUARD,-1,0x0)      = 34368290816 (0x800828000)
mmap(0x800828000,86016,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34368290816 (0x800828000)
mmap(0x80083d000,69632,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x15000) = 34368376832 (0x80083d000)
mmap(0x80084e000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x26000) = 34368446464 (0x80084e000)
mmap(0x800850000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34368454656 (0x800850000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libm.so.5",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=20716,size=217024,blksize=131072 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,204800,PROT_NONE,MAP_GUARD,-1,0x0)      = 34368458752 (0x800851000)
mmap(0x800851000,69632,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34368458752 (0x800851000)
mmap(0x800862000,122880,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x11000) = 34368528384 (0x800862000)
mmap(0x800880000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x2f000) = 34368651264 (0x800880000)
mmap(0x800882000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34368659456 (0x800882000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libffi.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libffi.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libffi.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libffi.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=382202,size=35624,blksize=35840 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,40960,PROT_NONE,MAP_GUARD,-1,0x0)       = 34368663552 (0x800883000)
mmap(0x800883000,8192,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34368663552 (0x800883000)
mmap(0x800885000,20480,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x2000) = 34368671744 (0x800885000)
mmap(0x80088a000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x7000) = 34368692224 (0x80088a000)
mmap(0x80088c000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34368700416 (0x80088c000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libepoll-shim.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libepoll-shim.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libepoll-shim.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libepoll-shim.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=135997,size=23096,blksize=23552 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,28672,PROT_NONE,MAP_GUARD,-1,0x0)       = 34368704512 (0x80088d000)
mmap(0x80088d000,8192,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34368704512 (0x80088d000)
mmap(0x80088f000,8192,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x2000) = 34368712704 (0x80088f000)
mmap(0x800891000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x4000) = 34368720896 (0x800891000)
mmap(0x800893000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34368729088 (0x800893000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/librt.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/librt.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=20848,size=27384,blksize=27648 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,32768,PROT_NONE,MAP_GUARD,-1,0x0)       = 34368733184 (0x800894000)
mmap(0x800894000,12288,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34368733184 (0x800894000)
mmap(0x800897000,8192,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x3000) = 34368745472 (0x800897000)
mmap(0x800899000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x5000) = 34368753664 (0x800899000)
mmap(0x80089b000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34368761856 (0x80089b000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libXau.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libXau.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libXau.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libXau.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=74674,size=18552,blksize=18944 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,20480,PROT_NONE,MAP_GUARD,-1,0x0)       = 34368765952 (0x80089c000)
mmap(0x80089c000,4096,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34368765952 (0x80089c000)
mmap(0x80089d000,4096,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x1000) = 34368770048 (0x80089d000)
mmap(0x80089e000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x2000) = 34368774144 (0x80089e000)
mmap(0x8008a0000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34368782336 (0x8008a0000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
openat(AT_FDCWD,"/lib/libXdmcp.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libXdmcp.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libXdmcp.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libXdmcp.so.6",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-rwxr-xr-x ,inode=74879,size=31696,blksize=31744 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362130432 (0x800248000)
mmap(0x0,28672,PROT_NONE,MAP_GUARD,-1,0x0)       = 34368786432 (0x8008a1000)
mmap(0x8008a1000,12288,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34368786432 (0x8008a1000)
mmap(0x8008a4000,8192,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x3000) = 34368798720 (0x8008a4000)
mmap(0x8008a6000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x5000) = 34368806912 (0x8008a6000)
munmap(0x800248000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
mprotect(0x800387000,8192,PROT_READ)             = 0 (0x0)
mprotect(0x80039c000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8003a4000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8003ac000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8003c2000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8003c7000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8003cd000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8003f4000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x800407000,8192,PROT_READ)             = 0 (0x0)
mprotect(0x800428000,4096,PROT_READ)             = 0 (0x0)
munmap(0x80023f000,36864)                        = 0 (0x0)
mmap(0x0,200704,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34368815104 (0x8008a8000)
mprotect(0x8005f8000,36864,PROT_READ)            = 0 (0x0)
mprotect(0x80084f000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x800881000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x80088b000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x800892000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x80089a000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x80089f000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8008a7000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x205000,4096,PROT_READ)                = 0 (0x0)
sigprocmask(SIG_BLOCK,{ SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
readlink("/etc/malloc.conf",0x7fffffffd720,1024) ERR#2 'No such file or directory'
issetugid()                                      = 0 (0x0)
__sysctl(0x7fffffffd688,0x2,0x7fffffffd684,0x7fffffffd690,0x0,0x0) = 0 (0x0)
mmap(0x0,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34362093568 (0x80023f000)
madvise(0x80023f000,4096,MADV_FREE)              = 0 (0x0)
munmap(0x80023f000,4096)                         = 0 (0x0)
mmap(0x0,2097152,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369015808 (0x8008d9000)
munmap(0x8008d9000,2097152)                      = 0 (0x0)
mmap(0x0,4190208,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369015808 (0x8008d9000)
munmap(0x8008d9000,1208320)                      = 0 (0x0)
munmap(0x800c00000,884736)                       = 0 (0x0)
mmap(0x0,32768,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34362093568 (0x80023f000)
mmap(0x0,4194304,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34372321280 (0x800c00000)
mmap(0x0,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34362126336 (0x800247000)
mmap(0x0,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369015808 (0x8008d9000)
mmap(0x0,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369028096 (0x8008dc000)
mmap(0x0,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369040384 (0x8008df000)
sigprocmask(SIG_BLOCK,{ SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
__sysctl(0x7fffffffdb60,0x2,0x80042a040,0x7fffffffdb78,0x0,0x0) = 0 (0x0)
getrlimit(RLIMIT_STACK,{ cur=536870912,max=536870912 }) = 0 (0x0)
__sysctl(0x7fffffffda60,0x2,0x7fffffffdab0,0x7fffffffdaa8,0x80040a3cb,0xd) = 0 (0x0)
__sysctl(0x7fffffffdab0,0x3,0x8004340b0,0x7fffffffdb78,0x0,0x0) = 0 (0x0)
mmap(0x0,20480,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369052672 (0x8008e2000)
mmap(0x0,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34362130432 (0x800248000)
thr_self(0x8008e2000)                            = 0 (0x0)
mmap(0x7fffdfffe000,4096,PROT_NONE,MAP_ANON,-1,0x0) = 140736951476224 (0x7fffdfffe000)
rtprio_thread(RTP_LOOKUP,102846,0x7fffffffdb38)  = 0 (0x0)
sigaction(SIGTHR,{ 0x80041ca40 SA_SIGINFO ss_t },0x0) = 0 (0x0)
sigprocmask(SIG_UNBLOCK,{ },0x0)                 = 0 (0x0)
_umtx_op(0x7fffffffdb40,UMTX_OP_WAKE,0x1,0x0,0x0) = 0 (0x0)
mprotect(0x0,0,PROT_NONE)                        = 0 (0x0)
getpid()                                         = 68765 (0x10c9d)
getpid()                                         = 68765 (0x10c9d)
sigprocmask(SIG_BLOCK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
getcontext(0x7fffffffd640)                       = 0 (0x0)
sysarch(AMD64_GET_XFPUSTATE,0x7fffffffd608)      = 0 (0x0)
openat(AT_FDCWD,"/dev/dri/renderD128",O_RDWR,00) = 3 (0x3)
fstat(3,{ mode=crw-rw---- ,inode=620,size=0,blksize=4096 }) = 0 (0x0)
mmap(0x0,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369073152 (0x8008e7000)
mmap(0x0,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369085440 (0x8008ea000)
mmap(0x0,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369097728 (0x8008ed000)
mmap(0x0,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369101824 (0x8008ee000)
mmap(0x0,28672,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369105920 (0x8008ef000)
mmap(0x0,28672,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369134592 (0x8008f6000)
mmap(0x0,20480,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369163264 (0x8008fd000)
mmap(0x0,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369183744 (0x800902000)
open("/etc/libva.conf",O_RDONLY,0666)            ERR#2 'No such file or directory'
open("/etc/libva.conf",O_RDONLY,0666)            ERR#2 'No such file or directory'
open("/etc/libva.conf",O_RDONLY,0666)            ERR#2 'No such file or directory'
open("/etc/libva.conf",O_RDONLY,0666)            ERR#2 'No such file or directory'
open("/etc/libva.conf",O_RDONLY,0666)            ERR#2 'No such file or directory'
open("/etc/libva.conf",O_RDONLY,0666)            ERR#2 'No such file or directory'
open("/etc/libva.conf",O_RDONLY,0666)            ERR#2 'No such file or directory'
open("/etc/libva.conf",O_RDONLY,0666)            ERR#2 'No such file or directory'
libva info: VA-API version 1.3.0
write(2,"libva info: VA-API version 1.3.0"...,33) = 33 (0x21)
ioctl(3,0xc0406400 { IORW 0x64('d'), 0, 64 },0x800248040) = 0 (0x0)
mmap(0x0,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34369196032 (0x800905000)
ioctl(3,0xc0406400 { IORW 0x64('d'), 0, 64 },0x800248040) = 0 (0x0)
ioctl(3,0x40046402 { IOR 0x64('d'), 2, 4 },0x7fffffffe5a0) ERR#13 'Permission denied'
libva info: va_getDriverName() returns 1
write(2,"libva info: va_getDriverName() r"...,41) = 41 (0x29)
libva error: va_getDriverName() failed with operation failed,driver_name=i965
write(2,"libva error: va_getDriverName() "...,78) = 78 (0x4e)
vaInitialize failed with error code 1 (operation failed),exit
write(2,"vaInitialize failed with error c"...,62) = 62 (0x3e)
close(3)                                         = 0 (0x0)
exit(0x3)
process exit, rval = 3

I believe the critical issue is the line saying

ioctl(3,0x40046402 { IOR 0x64('d'), 2, 4 },0x7fffffffe5a0) ERR#13 'Permission denied'

About the Jail, I’m not sure if that works in a jail, however for it to work surely the dev must be “passed” to the jail (see devfs.rules) so there’s at least that… I mean renderD128 and I do think as long as that’s available the jail it self should be able to use HWT since this wouldn’t be full virtualization, jails share the hosts kernel and as long as access to the devices are granted I do believe it should work (but this was never tested, and other factor might come into play)

I don’t know about vainfo, but if ffmpeg fails in the host than something unrelated to plex is happening.
I would try to find the cause of this permission errors and if you can figure that out then test PMS in a host, then a jail.

Unfortunately there’s not much we can do to help if there are issues with the host it self.

Just to be 100% sure this is being tested on a chip with Quick Sync support right?

Indeed, I am trying to find out why ffmpeg/Plex Transcode fails to address renderD128 on the host.
Perhaps I need to dig in to the FreeBSD community to find out what’s failing.

The processor is supported by Intel QSV according to https://ark.intel.com/products/80917/Intel-Xeon-Processor-E3-1226-v3-8M-Cache-3-30-GHz-

I’ve been trying to get this working myself on a new FreeBSD 12.0 build. What’s the accepted way to confirm that Plex is using hardware transcoding?

Assuming the logs mean its all working correctly I’m happy to post a blow by blow on the setup in case others are having issues. There are a few extra steps required here and there.

I can see sections in my log files such as

Dec 22, 2018 13:12:33.334 [0x80bb18900] DEBUG - Codecs: testing h264_vaapi (encoder)
Dec 22, 2018 13:12:33.334 [0x80bb18900] DEBUG - Codecs: hardware transcoding: testing API vaapi
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Format 0x32315659 -> yuv420p.
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Format 0x30323449 -> yuv420p.
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Format 0x3231564e -> nv12.
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Format 0x32595559 -> yuyv422.
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Format 0x59565955 -> uyvy422.
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Format 0x48323234 -> yuv422p.
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Format 0x58424752 -> rgb0.
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Format 0x58524742 -> bgr0.
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Format 0x30313050 -> p010le.
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Created surface 0x4000000.
Dec 22, 2018 13:12:33.813 [0x80bb18900] DEBUG - [FFMPEG] - Direct mapping possible.
Dec 22, 2018 13:12:34.597 [0x80bb18900] DEBUG - TPU: hardware transcoding: using hardware decode accelerator vaapi
Dec 22, 2018 13:12:34.598 [0x80bb18900] DEBUG - [Universal] Using local file path instead of URL: /media/tv/Archer (2009)/Season 2/Archer (2009) - S02E05 - The Double Deuce.mkv
Dec 22, 2018 13:12:34.598 [0x80bb18900] DEBUG - TPU: hardware transcoding: zero-copy support present
Dec 22, 2018 13:12:34.598 [0x80bb18900] DEBUG - TPU: hardware transcoding: using zero-copy transcoding
Dec 22, 2018 13:12:34.599 [0x80bb18900] DEBUG - TPU: hardware transcoding: final decoder: vaapi, final encoder: vaapi
Dec 22, 2018 13:12:34.601 [0x80bb18900] DEBUG - Job running: EAE_ROOT='/tmp/pms-0fd3de6c-8c02-4578-bed4-78eed549667d/EasyAudioEncoder' FFMPEG_EXTERNAL_LIBS='/usr/local/plexdata-plexpass/Plex\ Media\ Server/Codecs/531e313-1328-freebsd-x86_64/' XDG_CACHE_HOME='/usr/local/plexdata-plexpass/Plex Media Server/Cache' XDG_DATA_HOME='/usr/local/share/plexmediaserver-plexpass/Resources' X_PLEX_TOKEN='xxxxxxxxxxxxxxxxxxxx' '/usr/local/share/plexmediaserver-plexpass/Plex Transcoder' '-codec:0' 'h264' '-hwaccel:0' 'vaapi' '-hwaccel_fallback_threshold:0' '10' '-hwaccel_output_format:0' 'vaapi' '-codec:1' 'dca' '-ss' '122' '-probesize' '10000000' '-i' '/media/tv/Archer (2009)/Season 2/Archer (2009) - S02E05 - The Double Deuce.mkv' '-filter_complex' '[0:0]hwupload[0];[0]scale_vaapi=w=1280:h=720:format=nv12[1];[1]hwupload[2]' '-filter_complex' '[0:1] aresample=async=1:ocl='\''5.1'\'':osr=48000[3]' '-map' '[2]' '-metadata:s:0' 'language=eng' '-codec:0' 'h264_vaapi' '-b:0' '3213k' '-maxrate:0' '4284k' '-bufsize:0' '8568k' '-r:0' '23.975999999999999' '-force_key_frames:0' 'expr:gte(t,120+n_forced*3)' '-map' '[3]' '-metadata:s:1' 'language=eng' '-codec:1' 'aac' '-strict:1' 'experimental' '-aac_coder:1' 'fast' '-q:1' '0' '-segment_format' 'mpegts' '-f' 'ssegment' '-individual_header_trailer' '0' '-segment_time' '3' '-segment_start_number' '40' '-segment_copyts' '1' '-segment_time_delta' '0.0625' '-segment_list' 'http://127.0.0.1:32400/video/:/transcode/session/A389A5A1-FF74-43F0-91D3-407E58DD21B6/8286702a-ee86-419d-93f9-42b49d4f3356/seglist' '-segment_list_type' 'csv' '-segment_list_size' '2147483647' '-segment_list_separate_stream_times' '1' '-max_delay' '5000000' '-avoid_negative_ts' 'disabled' '-map_metadata' '-1' '-map_chapters' '-1' 'media-%05d.ts' '-start_at_zero' '-copyts' '-y' '-vaapi_device' '/dev/dri/renderD128' '-nostats' '-loglevel' 'quiet' '-loglevel_plex' 'error' '-progressurl' 'http://127.0.0.1:32400/video/:/transcode/session/A389A5A1-FF74-43F0-91D3-407E58DD21B6/8286702a-ee86-419d-93f9-42b49d4f3356/progress'
Dec 22, 2018 13:12:34.609 [0x80bb18900] DEBUG - Jobs: Starting child process with pid 5032

And I can get the following result from ffmpeg inside my Plex iocage jail

ffmpeg -init_hw_device vaapi=foo:/dev/dri/renderD128
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Hyper fast Audio and Video encoder

Here’s how I got to the stage above. (Assuming its working properly, I’m new to Plex, so not 100% sure)

Setup:
FreeBSD 12.0-RELEASE
Intel i3-8300

Host:

pkg install drm-fbsd12.0-kmod

this will bring gpu-firmware-kmod along as well
I’m currently running
drm-fbsd12.0-kmod-4.16.g20181215
gpu-firmware-kmod-g20181104

Then add the following to /etc/rc.conf

kld_list="/boot/modules/i915kms.ko"
devfs_load_rulesets="YES"

this will load the kernel module on boot and tells devfs to look at the local rules file

You then need to create /etc/devfs.rules
This is what I used

[devfsrules_plex_jail=10]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add include $devfsrules_jail
add path 'dri*' unhide
add path 'dri/*' unhide
add path 'drm*' unhide
add path 'drm/*' unhide

This creates a new ruleset that allows access to the dri and drm devices
use iocage to add this ruleset to your plex jail

iocage set devfs_ruleset="10" 

restart the jail then console in

Jail:
once inside the jail you need to install some intel packages

pkg install libva-intel-driver
pkg install libva-intel-media-driver
pkg install libva-intel-hybrid-driver

I now have the following libva packages inside the jail

libva-2.3.0_1                  VAAPI wrapper and dummy driver
libva-intel-driver-2.2.0_5     VAAPI intel driver
libva-intel-hybrid-driver-1.0.2_1 Hybrid VP8 encoder and VP9 decoder for Intel GPUs
libva-intel-media-driver-18.3.0_3 Intel Media Driver for VAAPI

If that doesn’t work for others let me know and I’ll double check my steps.
I think the following things are probably critical

  • FreeBSD 12
  • Using Latest packages not quarterly
  • Loading the right kernel driver
  • Getting the devfs rules right
  • Adding the Intel specific libva packages
  • A few version bumps since previous attempts
2 Likes

Thanks for providing the steps. I verified that all your settings & parameters were present on my system as well, still I’m unable to use /dev/dri/renderD128. I’m not going to pursue this any more though.

Check https://support.plex.tv/articles/115002178853-using-hardware-accelerated-streaming/ QA section to find out how you verify that HW encoding/decoding is performed.

It all seems to be hooked up correctly from a device / library point of view, but getting it to reliably hardware transcode seems a bit buggy.
Lots of locked transcoding processes and other weirdness,

Might go back to software for a while.