Appendix · reference

RK3399 RGA

Rockchip 2D blit / rotation / scaling engine — not yet driven.

The Raster Graphic Acceleration block on RK3399 is a fixed-function 2D engine for blits, rotations, alpha compositing, and color-space conversion. Compositors and video pipelines lean on it for cheap surface transforms; on a phone the obvious uses are panel rotation (portrait ↔ landscape) and I420/NV12 → ARGB conversion for camera preview and video playback.

Right now we don’t drive it.

Identity

PropertyValue
BlockRockchip RGA (RK3399 / RK3399S)
MMIO base0xff680000
Bus / interfaceInternal AXI master, behind RK IOMMU instance
DTS compatiblerockchip,rk3399-rga
IOMMURequired for non-contiguous source/dest buffers
Linux driverdrivers/media/platform/rockchip/rga/

Driver

· not started No driver in tree.

The RGA is one of six RK3399 IP blocks that sit behind a Rockchip IOMMU instance (the others are VOP, ISP0, ISP1, VPU-L, VPU-R). Without a working rockchip-iommu port the RGA can only operate against physically contiguous DMA buffers, which makes it useless for the GPU buffers a compositor would actually want to rotate. So in practice the RGA blocks on the RK IOMMU port, which itself blocks on FreeBSD’s IOMMU framework being wired up for a non-PCIe device. See HARDWARE.md under “System Peripherals” for the full IOMMU dependency chain.

To bring this up we would need:

  1. A working rockchip-iommu driver (six instances on RK3399). FreeBSD’s iommu(4) is PCIe-shaped; the RK IOMMU is a memory-mapped device in front of an IP block. Linux ref: drivers/iommu/rockchip-iommu.c.
  2. A V4L2-style mem2mem framework or equivalent userland API for submitting source/dest buffer pairs and an operation descriptor. Linux exposes RGA via V4L2; FreeBSD has no V4L2 layer.
  3. The RGA driver itself — register programming is well-documented in the Linux source (rga-hw.c, rga-buf.c).

This is months of work for a low-leverage block. Software compositing of the 720×1440 panel via the Mali-T860 is fast enough today, and we have no camera or video-decode pipeline that would benefit from RGA output.

Status

QuestionAnswer
Probes?n/a
Used by anything?No — Sway / Hyprland composite via panfrost / GLES
User-visible?No
Blocking?No — display path works without it

Open work