Jump to content

Recommended Posts

Posted

I have been experimenting with trying to get video acceleration working on the A83T. I can see from /proc/device-tree/soc/... that there is already a video-engine node within the current A83T device tree. It appears to be applied as one of the megous patches ARM-dts-sun8i-a83t-Add-cedrus-video-codec-support-to-A83T-untes.patch. Admittedly this is noted as being untested. In my initially created build via the build framework, Cedrus was not present at all among the list of loaded modules. I addressed this by creating an entry in the Cedrus compatibility table for the sun8i-a83t-video engine

 

drv-sun8i-a83t-cedrus-add-variant.patch

 

It now appears to load but complains about being unable to allocated an SRAM:

 

[   10.046406] cedrus 1c0e000.video-codec: Failed to claim SRAM
[   10.046490] cedrus 1c0e000.video-codec: Failed to probe hardware
[   10.091215] cedrus 1c0e000.video-codec: Failed to claim SRAM
[   10.091339] cedrus 1c0e000.video-codec: Failed to probe hardware
[   10.419296] cedrus 1c0e000.video-codec: Failed to claim SRAM
[   10.419597] cedrus 1c0e000.video-codec: Failed to probe hardware
[   20.193058] cedrus 1c0e000.video-codec: Failed to claim SRAM
[   20.193114] cedrus 1c0e000.video-codec: Failed to probe hardware
[   20.193322] platform 1c0e000.video-codec: deferred probe pending: (reason unknown)

 

Using both sun8i-a23-a33.dtsi and sun8i-h3.dtsi as points of reference, I attempted to make an SRAM allocation under the system controller but this still appears to fail with the same failure messages. I have double checked in the user manual and VE memory should definitely exist at 0x01D0 0000.

 

arm-dts-sun8i-a83t-add-ve-node.patch

 

I would be grateful for any pointers.

 

Thanks 

 

Ryzer

 

Posted

It appears that the system control was not configured properly. In the default DTS the binding is "sun8i-a83t-system-controller" which appears to have been deprecated in favor of the suffix "system-control" from what I could find. So tested with "sun8i-a83t-system-control" and "sun8-h3-system-control" as a fall back option. This time we no complaints from Cedrus:

ryzer@cubietruckplus:~$ sudo dmesg | grep cedrus
[   10.624985] sunxi_cedrus: module is from the staging directory, the quality is unknown, you have been warned.
[   10.652836] cedrus 1c0e000.video-codec: Device registered as /dev/video0

 

Second test was to ensure that the video-engine clocks are set correctly, which can be done by temporarily disabling driver suspension.

ryzer@cubietruckplus:/sys/kernel$ sudo cat debug/clk/bus-ve/clk_enable_count
1
ryzer@cubietruckplus:/sys/kernel$ sudo cat debug/clk/ve/clk_enable_count
1
ryzer@cubietruckplus:/sys/kernel$ sudo cat debug/clk/dram-ve/clk_enable_count
1

 

Next test trying to get working which should be using the version of ffmpeg as detailed here: 

This is the current output of ffmpeg:

 

ffmpeg version 5.1.7-0+deb12u1 Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 12 (Debian 12.2.0-14)
  configuration: --prefix=/usr --extra-version=0+deb12u1 --toolchain=hardened --libdir=/usr/lib/arm-linux-gnueabihf --incdir=/usr/include/arm-linux-gnueabihf --arch=arm --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-v4l2-request --enable-v4l2-m2m --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libudev --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --disable-sndio --enable-libjxl --enable-pocketsphinx --enable-librsvg --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-librav1e --enable-shared
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Hardware acceleration methods:
vdpau
vaapi
drm
opencl
vulkan

 

It is also worth mention that as there is no support for the SGX544 GPU, we are limited to a CLI only interface for which MPV can only be launched full-screen. MPV fails to use hardware decoding and falls back to using software. MPV version is reported as 0.35.1

 

[   3.639][v][vo/gpu-next/opengl] Initializing GPU context 'drm'
[   3.643][e][vo/gpu-next] Can't handle VT release - signal already used
[   3.647][w][vo/gpu-next/opengl] Failed to set up VT switcher. Terminal switching will be unavailable.
[   3.651][v][vo/gpu-next/opengl] Initializing KMS
[   3.657][v][vo/gpu-next/opengl] Picked DRM card 0, primary node /dev/dri/card0 as the default.
[   3.662][v][vo/gpu-next/opengl] Driver: sun4i-drm 1.0.0 (0)
[   3.666][v][vo/gpu-next/opengl/kms] Connector 63 currently connected to encoder 62
[   3.670][v][vo/gpu-next/opengl/kms] Selected Encoder 62 with CRTC 61
[   3.675][v][vo/gpu-next/opengl/kms] Selected mode: 1920x1200 (1920x1200@60.00Hz)
[   3.679][v][vo/gpu-next/opengl] DRM Atomic support found
[   3.684][v][vo/gpu-next/opengl/kms] Using overlay plane 51 as draw plane
[   3.689][v][vo/gpu-next/opengl/kms] Using primary plane 57 as drmprime plane
[   3.693][v][vo/gpu-next] GBM_FORMAT_ARGB8888 not supported by draw plane: Falling back to GBM_FORMAT_XRGB8888.
[   3.697][v][vo/gpu-next] Supported modifier: 0x0
[   3.702][v][vo/gpu-next] Creating GBM device
[   4.915][v][vo/gpu-next] Initializing GBM surface (1920 x 1200)
[   4.920][e][vo/gpu-next] Failed to create GBM surface.
[   4.924][e][vo/gpu-next] Failed to setup GBM.

 

[   5.397][v][vd] Container reported FPS: 30.000000
[   5.405][v][vd] Codec list:
[   5.409][v][vd]     h264 - H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
[   5.414][v][vd]     h264_v4l2m2m (h264) - V4L2 mem2mem H.264 decoder wrapper
[   5.418][v][vd] Opening decoder h264
[   5.424][v][vd] Looking at hwdec h264-drm...
[   5.428][v][vd] Could not create device.
[   5.433][v][vd] No hardware decoding available for this codec.
[   5.437][v][vd] Using software decoding.
[   5.445][v][vd] Detected 8 logical cores.

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines