Toybrick

标题: 新人请教一下为什么MPP解码后用fd调用RGA进行格式转换效率高 [打印本页]

作者: cfan    时间: 2021-1-7 15:55
标题: 新人请教一下为什么MPP解码后用fd调用RGA进行格式转换效率高
这个是直接用地址
YUV420toRGB24_RGA(RK_FORMAT_YCrCb_420_SP,base,1280,720,RK_FORMAT_RGB_888,rgb_888,512,256,0);
这个是用fd
YUV420toRGB24_RGA_FD(RK_FORMAT_YCrCb_420_SP,mpp_buffer_fd,1280,720,RK_FORMAT_RGB_888,buf_drm[4].fb_id,512,256,0);
请教一下为什么使用fd可以少拷贝一次,是因为用虚拟地址的话要先拷贝数据到物理地址吗?因此效率高吗?
再请教一下每解码一帧视频就要进行格式转换以及缩放,是不是采用fd方式比给地址效率会更高?


作者: leok    时间: 2021-1-8 14:53
没有很理解你的意思;
正常快慢和物理地址是否连续有关,比如CMA buffer。
作者: troy    时间: 2021-1-8 15:09
你看到的虚拟地址是属于用户层的,RGA驱动是无法直接访问用户层的数据,必须先从用户地址拷到内核空间,这是第一次拷贝操作。转换完成也是同理,RGA驱动需要从内核空间拷贝到用户空间,应用才能正常使用数据,这是第二次拷贝。
使用fd的话,驱动无需拷贝,可以直接读写fd对应区域的数据。而且通常fd用的是cma buffer,物理地址是连续的,RGA硬件操作效率会更高。而虚拟地址连续不代表物理地址连续。
作者: cfan    时间: 2021-1-9 15:38
troy 发表于 2021-1-8 15:09
你看到的虚拟地址是属于用户层的,RGA驱动是无法直接访问用户层的数据,必须先从用户地址拷到内核空间,这 ...

谢谢大佬解释,明白了。
作者: cfan    时间: 2021-1-9 15:40
leok 发表于 2021-1-8 14:53
没有很理解你的意思;
正常快慢和物理地址是否连续有关,比如CMA buffer。

emmm我对基础知识不懂所以问的不准确。




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3