Intel kmsgrab VAAPI interop assertions

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Intel kmsgrab VAAPI interop assertions

Marton Balint

I made some tests with kmsgrab (I have used the vaapi interop) and it
seems to me that sometimes if an app (e.g.: ffplay) is in fullscreen it
does not capture a fully drawn framebuffer but the one which is being
drawn to and which has not been presented to the user.

Also sometimes the capture stops with errors like this:

ffmpeg: ../intel/intel_bufmgr_gem.c:1409: drm_intel_gem_bo_unreference:
Assertion `atomic_read(&bo_gem->refcount) > 0' failed.

or like this:

[AVHWFramesContext @ 0x556a74d116c0] Failed to create surface from DRM
object: 18 (invalid parameter).

Example command (using a 4k framebuffer). Tested on Ubuntu 18.04 with
kernel from hwe (5.0). Also tried updating xorg/drm packages from 19.04,
but it does not seem to make a difference.

ffmpeg -vsync vfr -vaapi_device /dev/dri/renderD128 \
   -y -f kmsgrab -framerate 50 -i none \
   -vf 'hwmap=derive_device=vaapi,scale_vaapi=3840:2160:nv12' \
   -codec:v mjpeg_vaapi -f image2 -update 1 -atomic_writing 1 "${OUTFILE}.jpg"


ffmpeg version 4.1.3-0ubuntu1 Copyright (c) 2000-2019 the FFmpeg
   built with gcc 8 (Ubuntu 8.3.0-6ubuntu1)
   configuration: --prefix=/usr --extra-version=0ubuntu1
--toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu
--incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl
--disable-stripping --enable-avresample --disable-filter=resample
--enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom
--enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca
--enable-libcdio --enable-libcodec2 --enable-libflite
--enable-libfontconfig --enable-libfreetype --enable-libfribidi
--enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame
--enable-libmysofa --enable-libopenjpeg --enable-libopenmpt
--enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband
--enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex
--enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab
--enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp
--enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq
--enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl
--enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883
--enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
   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
[kmsgrab @ 0x556135cefcc0] Using plane 30 to locate framebuffers.
[kmsgrab @ 0x556135cefcc0] Template framebuffer is 143: 3840x2160 32bpp
24b depth.
Input #0, kmsgrab, from 'none':
   Duration: N/A, start: 1568913476.535418, bitrate: N/A
     Stream #0:0: Video: wrapped_avframe, drm_prime, 3840x2160, 50 tbr,
1000k tbn, 1000k tbc
Stream mapping:
   Stream #0:0 -> #0:0 (wrapped_avframe (native) -> mjpeg (mjpeg_vaapi))
Press [q] to stop, [?] for help
Output #0, image2, to '/mnt/compliance/out.jpg':
     encoder         : Lavf58.20.100
     Stream #0:0: Video: mjpeg (mjpeg_vaapi), vaapi_vld, 3840x2160, q=2-31,
50 fps, 50 tbn, 50 tbc
       encoder         : Lavc58.35.100 mjpeg_vaapi
ffmpeg: ../intel/intel_bufmgr_gem.c:1409: drm_intel_gem_bo_unreference:
Assertion `atomic_read(&bo_gem->refcount) > 0' failed.

Until the app is in a window, everything seems to work. If I switch it to
fullscreen, it will fail sooner or later. Happens with a 4.2 release as
well. I used the lightweight nodm window manager for testing. Happens with
ICEWM as well.

Any ideas?

ffmpeg-user mailing list
[hidden email]

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".