一、PXP介绍
在图像显示在显示器之前,i.MX RT1170 可以通过 2D矢量图形、PXP 或者 LCDIF 等图形加速器来生成、合成和混合图形的内容,本文将介绍其中 PXP 图形加速器。
PXP (Pixel Processing Pipeline) 是 NXP 设计的一种高性能的 2D 图形处理微构架,用于在 LCD 显示之前对图像数据进行数据处理,处理操作例如图像缩放、旋转、色彩空间转换等,为无 SDRAM 和基于 SRAM 的系统,提供占用内存最小的图像数据优化和性能,PXP 将几个独立的处理阶段集成到一个内聚策略中,以创建灵活的像素管道。
1.1 PXP 功能描述
PXP由多个管线式模块组成,执行视频源帧缩放、颜色空间转换、阿尔法混合/颜色键算法、次级CSC、像素校正等,本文将介绍其中的旋转功能。
1.2 PXP 特性
- 位块传输
- 灵活的图像合成的
- Porter-Duff 颜色渲染操作
- 图像旋转 (90°、180°、270°)
- 图像调整大小
- 颜色空间转换
- 多像素格式支持(RGB, YUV444, YUV422, YUV420, YUV400)
- 标准 2D-RAM 操作
二、PXP的旋转功能
PXP中集成了一个单独的旋转资源,该资源在PXP数据路径中的位置是可编程的,旋转在输出阶段合成 AS 和 PS 缓冲区后。
作为替代配置,PS 缓冲区可以旋转,然后与未旋转的 AS 面合成,有一个配置位提供在 PXP 中执行旋转的位置配置。
要旋转图形,硬件必须在帧缓冲区的同一个方向上读取像素,并在另一个方向上写入像素,对于90度和270度的情况,这意味着在帧缓冲区中读取或写入像素行必须垂直,如下图所示。
为了更有效地旋转,就必须旋转多个列,以使引擎能够获取和存储像素,从而提高内存性能。最简单的方法是对像素进行块操作,要旋转图像,就必须按所需的每个像素块进行旋转,如下图所示。
为了管理旋转过程,可以将源图像分解为具有下图所示坐标的子块网格,除了旋转块外,每个块都必须转换到新的坐标位置,对于每种旋转角度(0、90、180、270),可以定义用于计算新转换的网格地址的简单算法,然后,硬件必须简单地从加载和存储操作的基本网格地址来计算内存地址。
为了平衡对内存控制器的合理突发大小要求,并将硬件存储要求保持在最低水平,混合/旋转引擎将在 8x8 或 16x16 像素块上运行处理,将旋转引擎与输入提取引擎一起使用时,所以需要对输入提取引擎进行编程,使其在8x8块模式下工作。