| 
 | 
 
我在rk3588上调试rga填充图像,调试代码来自https://github.com/airockchip/librga, 
在rgaImDemo.cpp中加入: 
STATUS = imconfig(IM_CONFIG_SCHEDULER_CORE, IM_SCHEDULER_RGA3_CORE0); 
尝试启动RGA3,结果报错: 
//======================================================================= 
Start selecting mode 0 
im2d fill .. 
fill red ... 
MODE = 9 
[main][289]src_buf addr: 0x7f7ff9d010        dst_buf addr: 0x7f7fc18010 
open file 
open file 
[main][306]src_buf addr: 0x7f7ff9d010        dst_buf addr: 0x7f7fc18010 
rga_api version 1.8.1_[0] 
651, imconfig return:Run successfully 
653, imconfig return:Run successfully 
RgaCollorFill(1717) RGA_COLORFILL fail: Invalid argument 
RgaCollorFill(1718) RGA_COLORFILL fail: Invalid argument 
srect[x,y,w,h] = [0, 0, 0, 0] src[w,h,ws,hs] = [0, 0, 0, 0] 
 
drect[x,y,w,h] = [100, 100, 300, 300] dst[w,h,ws,hs] = [300, 300, 1280, 720] 
 
usage[0x280000] 
filling .... cost time 138 us, Fatal error: Failed to call RockChipRga interface, query log to find the cause of failure. 
open /usr/data/out0w1280-h720-rgba8888.bin and write ok 
//======================================================================= 
以上是在16GB的开发板上的调试结果,在4GB的开发板上可以正确执行。 
查阅文档可知: 
**A1.8:**由于目前RGA1/RGA2的MMU仅支持最大32位的物理地址,所以当在搭载4G以上DDR的设备中,传给RGA大于4G内存空间的buffer时,RGA驱动会通过dma接口将高位地址的内存里的数据拷贝至swiotlb预留的低位内存上,并返回对应的地址以供RGA读写,RGA工作结束后再通过dma将结果拷贝至原本的高位目标地址上,因此增加了CPU的介入,导致librga整体的工作时间严重增加。对于这种仅搭载RGA2/RGA1,并且设备DDR大于4G的情况,建议调用RGA时使用低于4G空间的内存,保证RGA的效率。 
 
问题: 
在rk3588j 16GB的板卡上如何正确使用RGA3? |   
 
 
 
 |