K3的V2D硬件加速问题

V2D 硬件加速问题总结

一、硬件状态

  • :white_check_mark: V2D 硬件设备存在:/dev/v2d_dev
  • :white_check_mark: 内核驱动已加载:设备 minor 263
  • :white_check_mark: 硬件理论上支持 BGRA → NV12 格式转换

二、软件栈问题

1. 缺少关键符号

text

/usr/lib/libv2d_plugin.so: undefined symbol: ASR_V2D_EndJob

  • ASR_V2D_BeginJobASR_V2D_EndJob 等符号在用户空间不存在
  • 这些符号应由内核驱动或固件提供,但未导出到用户态

2. G2D API 崩溃

  • G2D_CreateChannel() 成功,但 ctx->pModule 为 NULL
  • G2D_SetParam()G2D_Init() 都导致段错误
  • 原因:内部函数指针表未正确初始化

3. MPP 框架问题

  • module_init(VPS_K1_V2D) 返回成功,但后续 API 调用崩溃
  • VI 框架错误地将 V2D 当作视频输入设备使用
  • libv2d_plugin.so 只导出 al_g2d_* ,不导出 al_vi_*

4. 官方测试程序也崩溃

text

/usr/bin/vi_file_vdec_vo_test --moduletype 301 … → Segmentation fault in VI_Init

三、缺失的组件

组件 状态 说明
libv2d_core.so :x: 不存在 提供 ASR_V2D_* 符号
v2d_test 工具 :x: 不存在 官方验证工具
示例代码 :x: 不存在 无参考实现
完整文档 :x: 不存在 README 为空
头文件 :warning: 部分存在 g2d.h 有但 API 崩溃

四、根本原因

SpacemiT K3 的 V2D 软件栈不完整:

  • 用户态库 libv2d_plugin.so 依赖的内核符号未导出
  • MPP 框架的 V2D 模块有 bug,无法正常使用
  • 缺少必要的运行时库(如 libv2d_core.so
  • 没有可用的示例程序和文档