QCS6490 VPU (qcom-iris): 10-bit HEVC rejected, 8-bit HEVC 1080p60/4K60 hangs — below chip spec

Hi — follow-up on VPU for the QCS6490 (cross-link from the Video acceleration on QCS6490 thread). After switching the UEFI hypervisor override off, the VPU now comes up cleanly on my Dragon Q6A and I can use the V4L2 M2M
codecs. While validating 60fps/4K playback I found the VPU firmware ships well short of the QCS6490’s VPU4 spec on the HEVC path. Reporting with a measured capability matrix and repro steps.

Board / setup

  • Radxa Dragon Q6A (QCS6490), RadxaOS (Ubuntu 24.04 noble)
  • Kernel 7.0.11-6-qcom — VPU driver qcom-iris (/dev/video0 qcom-iris-decoder, /dev/video1 qcom-iris-encoder)
  • VPU firmware: linux-firmware-dragonwing 20260613 — /lib/firmware/qcom/vpu-2.0/vpu20_1v.mbn (the qcom/vpu/vpu20_p1_gen2_s6.mbn path is a symlink chain into it)
  • SPI NOR firmware: 6.0.260120.BOOT.MXF.1.0.1-00549-KODIAKWP-1
  • ffmpeg 6.1.1-3ubuntu5, decode via h264_v4l2m2m / hevc_v4l2m2m
  • UEFI HypervisorOverride = 0 (off) — required for the VPU firmware download to succeed

What I found

1. 10-bit HEVC (Main10) is rejected at every resolution/framerate. The VPU session opens, but zero frames are ever produced:

   $ ffmpeg -c:v hevc_v4l2m2m -i t10_108030.mp4 -f null -                                                                                                                                                                                                                 
   frame= 0 ... [vist#0:0/hevc @ ...] Decode error rate 1 exceeds maximum 0.666667                                                                                                                                                                                        
   [out#0/null @ ...] Output file is empty, nothing was encoded                                                                                                                                                                                                           
   Conversion failed!   (exit 69)                                                                                                                                                                                                                                         

Tested 10-bit 1080p30 and 10-bit 720p60 — both fail identically. So this is not resolution- or rate-dependent: the firmware simply does not accept Main10 input at all.

2. 8-bit HEVC 1080p60 and 4K60 hang. Session opens, no frames, no ffmpeg error — until killed. Kernel log:

   qcom-iris aa00000.video-codec: session error received 0x1000005: unknown                                                                                                                                                                                               

3. 8-bit H.264 is fine, including 4K60.

4. Real-world impact: a 10-bit HEVC 1080p59.94 capture (e.g. a ~55 Mbps 1080p60 10-bit log file, AAC 48k stereo) cannot be played at all through the VPU. A one-time CPU transcode to H.264 8-bit (libx264 CRF 18, ~2 min for 10 s on the A78 cores) makes it play
perfectly: full-file VPU decode at 1.09× real-time with audio in sync.

Measured capability matrix (all via *_v4l2m2m on this board)

codec 720p60 1080p30 1080p60 4K30 4K60
H.264 8-bit ✓ ✓ ✓ 5.7× ✓ ✓ 1.5×
HEVC 8-bit ✓ 9.7× ✓ 9.0× ✗ hang ✓ 2.6× ✗ hang
HEVC 10-bit ✗ 0 frames ✗ 0 frames ✗ — —

(8-bit HEVC 1280×720 at 5/15/30 fps also fails for encode, but that’s the encoder table, separate from these decode findings.)

The QCS6490 (SM7325) VPU4 is specced for HEVC Main10 up to 4K60 / 8K30, so both gaps are on the firmware/driver side, not the silicon.

Repro

   # 10-bit HEVC 1080p30 -> expect: frame= 0, "Decode error rate 1 exceeds maximum 0.666667"                                                                                                                                                                              
   ffmpeg -f lavfi -i testsrc2=duration=1:size=1920x1080:rate=30 \                                                                                                                                                                                                        
     -c:v libx265 -preset ultrafast -pix_fmt yuv420p10 -y t10.mp4                                                                                                                                                                                                         
   ffmpeg -c:v hevc_v4l2m2m -i t10.mp4 -f null -                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                          
   # 8-bit HEVC 1080p60 -> expect: no output, hang; dmesg: session error 0x1000005                                                                                                                                                                                        
   ffmpeg -f lavfi -i testsrc2=duration=1:size=1920x1080:rate=60 \                                                                                                                                                                                                        
     -c:v libx265 -preset ultrafast -pix_fmt yuv420p -y t8.mp4                                                                                                                                                                                                            
   timeout 30 ffmpeg -c:v hevc_v4l2m2m -i t8.mp4 -f null - ; dmesg | tail                                                                                                                                                                                                 

Questions

  1. Is vpu20_1v.mbn (linux-firmware-dragonwing 20260613) the final VPU firmware for the QCS6490, or is a newer snapshot planned?
  2. Is HEVC Main10 expected on this platform at all — in a future blob, or 8-bit-only by design?
  3. Is the 8-bit HEVC 1080p60/4K60 hang a known issue? Any workaround (profile/level caps, driver option) besides transcoding?

Note: this report was prepared with AI assistance; all measurements above were taken on the hardware and are reproducible with the commands provided.