Qualcomm engineer Vikash Garodia has just pushed a commit to add “Qualcomm Iris V4L2 encoder/decoder driver” to mainline Linux enabling support for H.264, H.265, and VP9 decoding, H.264 and H.265 encoding, as well as M2M and STREAMING capabilities.
The Adreno GPUs found in Qualcomm SoC have been supported by the open-source Freedreno driver for several years, but this was not the case with the IP block taking care of hardware video encoding and decoding. The latest patchset addresses this issue for “Qualcomm’s new video acceleration hardware architecture”, meaning it might not work for older Qualcomm processors.
The list of features implemented in the Iris V4L2 encoder/decoder driver:
- Centralized resource and memory management.
- Centralized management of core and instance states.
- Defines platform-specific capabilities and features providing a single point of control to enable/disable a given feature depending on specific platform capabilities.
- Handles hardware interdependent configurations.
- Handles multiple complex video scenarios involving state transitions: DRC, Drain, Seek, back-to-back DRC, DRC during Drain sequence, DRC during Seek sequence.
- Introduces a flexible way for the driver to subscribe for any property with hardware.
- Introduces performance (clock and bus) model based on new hardware architecture.
- Introduces multi-thread safe design to handle communication between client and hardware.
- Adapts encoder quality improvements available in new hardware architecture.
- Implements asynchronous communication with hardware to achieve better experience in low latency use cases.
- Supports multi-stage hardware architecture for encode/decode.
- Output and capture planes are controlled independently, providing a way to reconfigure individual planes.
- Hardware packetization layer supports synchronization between configuration packet and data packet.
- Introduces the flexibility to receive a hardware response for a given command packet.
- Native hardware support of LAST flag which is mandatory to align with port reconfiguration and DRAIN sequence as per V4L guidelines.
- Native hardware support for drain sequence.
It’s very hard to find information about the new Iris VPU architecture, so we don’t know which Qualcomm processors rely on the new architecture, except for the sm8550 (Snapdragon 8 Gen 2) that shows up in the patch set. In some ways, Qualcomm is way worse than Allwinner as I’ve never seen a Qualcomm datasheet or technical reference manual myself. That’s because everything is under NDA, but at least they pay people to work on the software side, and software support is usually much better than for companies like Allwinner.
You’ll find a few more details and the code on the Linux Kernel Mailing List.
Via Phoronix and thanks to TLS for the tip.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.