Collabora a annoncé un support principal de Linux pour le décodage vidéo matériel H.264 et H.265 sur les systèmes-sur-puce Rockchip RK3588 et RK3576. Ce développement met fin à la dépendance aux noyaux BSP spécifiques au fournisseur pour ces fonctionnalités. La mise à jour inclut de nouveaux contrôles d'API et des correctifs pour les problèmes matériels.
Les SoC Rockchip RK3588 et RK3576, ainsi que les variantes telles que RK3588S et RK3576J, intègrent les décodeurs vidéo VDPU381 et VDPU383 respectivement. Jusqu'à présent, le décodage matériel des formats H.264 (AVC) et H.265 (HEVC) nécessitait le noyau BSP de Rockchip. Le travail récent de Collabora introduit un support upstream Linux via une série de 17 patches qui ajoutent la fonctionnalité de décodeur, les bindings device tree et les nœuds. Les améliorations clés incluent de nouveaux contrôles API espace utilisateur V4L2 HEVC pour gérer les ensembles d'images de référence à court et long terme (RPS). Ces contrôles sont essentiels pour les décodeurs VDPU381 et VDPU383, contrairement à certains autres qui peuvent les contourner. Les applications espace utilisateur doivent désormais fournir des tables RPS complètes au noyau. Le support de ces contrôles a été ajouté à GStreamer 1.28, avec une intégration préliminaire dans FFmpeg, et facilite la compatibilité avec Vulkan Video Decode. Le pilote Virtual Stateless Decoder (visl) a également été mis à jour pour tracer tous les paramètres de contrôle. Une correction notable résout un problème de restauration IOMMU : comme l'IOMMU est intégré dans les décodeurs, les resets effacent les mappages d'adresses, mais le noyau les traitait précédemment comme valides. Le patch restaure les mappages mis en cache après reset, affectant d'autres blocs IP Rockchip comme l'accélérateur graphique 2D RGA. Pour la programmation des registres, les ingénieurs ont adopté un modèle basé sur des structures C plutôt que des écritures ad hoc pour s'assurer que tous les registres sont définis dans le bon ordre, évitant les incohérences même avec des valeurs par défaut. Cette approche favorise l'exhaustivité et prépare à l'utilisation multi-cœur. Les patches devraient être intégrés dans Linux 7.1, environ trois mois après la sortie de Linux 6.19 en février. Les efforts futurs de Collabora incluent le décodage multi-cœur sur RK3588, le support AV1 pour RK3576, VP9 pour RK3588 et la compatibilité VDPU346 pour les SoC RK356X. Un résumé détaillé est disponible sur le site web de Collabora.