NXP MCU 技术论坛
直播中

蒲泛粟

7年用户 915经验值
私信 关注
[问答]

如何使用g2d_multi_blit交织数据?

i.MX8 系列处理器(特别是那些带有 GC520L GPU 的处理器)上的 2D GPU 的 G2D API 似乎硬件应该能够以缓存高效(带宽高效)的方式执行交错。
如果我有 4 个包含 int16 值的 128K 长度的数组,并且我希望交错这些以产生一个长度为 128K 的数组,包含四个 int16 值,那么 2D GPU blitter 看起来很完美:使用 16 位像素格式设置问题,例如作为 BGR565,并将四个源阵列视为 1 宽、128K 高的图像,并将输出阵列视为 4 宽、128K 高的图像(实际上,由于 32K x 32K 光栅大小限制,我们会将问题分为 4 个部分,但仍然可以在 CPU 外完成)。然而,g2d_multi_blit 的文档 IMXGRAPHICUG.pdf 说“关键限制是无法设置目标矩形,这意味着目标矩形必须与源矩形相同。”
这似乎阻止了在这个用例中的使用——另一种可能性涉及写入行,然后旋转,需要两次传递,因为文档还指出目标表面不能有 g2d_multi_blit 的非零旋转。为此,我们必须使用 g2d_multi_blit 将我们的四个数组构建成 4 高、128K 宽图像的行,然后使用 g2d_blit 将其旋转 90 度(如前所述,我们需要拆分为 4 以尊重32K 光栅大小限制)。在使用这种方法使其脱离 CPU 时,它不必要地使用了两倍的内存带宽。
有没有更好的办法?

更多回帖

发帖
×
20
完善资料,
赚取积分