RGA 多核 2D 加速架构

RGA 多核 2D 加速架构

1. 功能

RGA执行:

  • copy/blit;
  • crop和scale;
  • rotate/mirror;
  • colorspace/format conversion;
  • alpha blend;
  • fill/palette等。

2. 三代目录

  • rga/:旧RGA;
  • rga2/:RGA2;
  • rga3/:Multi-RGA,统一管理多类核心。

RK3588 vendor defconfig启用ROCKCHIP_MULTI_RGA

3. RGA3对象划分

文件 作用
rga_drv.c platform/misc device/ioctl/PM
rga_job.c job、queue、运行与完成
rga_policy.c core选择和调度策略
rga_mm.c 内存对象管理
rga_dma_buf.c dma-buf import/map
rga_iommu.c IOMMU映射
rga_fence.c async fence
rga_hw_config.c hardware capabilities
rga2_reg_info.crga3_reg_info.c 请求到寄存器转换
rga_debugger.c proc/debugfs

4. 用户入口

RGA3注册misc device,rga_ioctl处理同步、异步、import/release和版本/能力等命令。Compat当前复用同一handler,因此UAPI结构必须保持32/64位布局可兼容。

5. 数据路径

1
2
3
4
5
6
7
8
9
10
11
12
13
request
-> copy_from_user
-> validate image/rect/format
-> resolve handles/fds
-> map source/destination buffers
-> choose capable core
-> build register command
-> queue job
-> runtime PM/clock on
-> start hardware
-> IRQ
-> signal fence/wakeup
-> unmap/release

6. Buffer

支持dma-buf等来源。每个plane都要验证:

  • width/height;
  • stride;
  • format plane count;
  • offset;
  • required bytes;
  • chroma alignment;
  • address width;
  • read/write direction。

7. 多核策略

Policy根据格式、尺寸、scale比例、功能和core忙闲选择硬件。不是所有RGA core支持同一操作。

8. Async

ROCKCHIP_RGA_ASYNC依赖sync_file。Input fences表示producer完成;output fence在RGA完成后signal。

同步请求等待job completion;等待超时后不能立即释放仍被硬件访问的buffer。

9. IOMMU

IOMMU把scatter-gather dma-buf映射到设备地址。Fault通常来自offset/size错误、提前unmap、设备地址位宽或IOMMU domain问题。

10. Reset

Timeout/error需:

1
2
3
4
5
6
stop queue
-> dump state
-> reset core
-> fail active job/fence
-> restore clocks/register context
-> resume pending jobs

11. 性能

关键瓶颈常是DDR带宽而非计算。避免无意义格式转换、重复scale和cache bounce;批量提交可降低ioctl/PM开销。

12. 安全

Vendor ioctl直接驱动DMA硬件,必须防:

  • integer overflow导致buffer越界;
  • 任意寄存器写;
  • fence cycle/deadlock;
  • job队列DoS;
  • IOMMU fault storm;
  • secure/non-secure buffer混用。

13. 调试

可选procfs/debugfs由ROCKCHIP_RGA_DEBUGGER构建。结合job/core状态、IRQ、IOMMU fault、clock和fence timeline定位。

文章互动

阅读 --

留言

0 条留言

正在加载留言…