Firefly开源社区

打印 上一主题 下一主题

[Linux] RGA的使用?

67

积分

0

威望

0

贡献

技术小白

积分
67

RGA的使用?

发表于 2024-1-2 17:00:07      浏览:571 | 回复:7        打印      只看该作者   [复制链接] 楼主
  • 固件类型: 官方提供的固件
  • 固件文件名称: rk356x_linux_release_20220726_v1.3.0a.xml
  • 固件下载地址:
  • Log日志: 空白.zip
问题描述及复现步骤:
请问一下官方的RGA应该怎么使用?
root@firefly:/usr/lib/aarch64-linux-gnu# strings librga.so |grep rga_api |grep version
RGA版本为1.3.0,但是教程https://wiki.t-firefly.com/zh_CN ... ual_ubuntu.html#rga并没有说明如何使用RGA,请问是否有相关demo?

空白.zip

188 Bytes, 下载次数: 0, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

1009

积分

1

威望

3

贡献

官方团队

Rank: 9Rank: 9Rank: 9

积分
1009
发表于 2024-1-3 09:02:08        只看该作者  沙发
sdk  里的external\linux-rga\samples
回复

使用道具 举报

67

积分

0

威望

0

贡献

技术小白

积分
67
发表于 2024-1-5 13:41:05        只看该作者  板凳
本帖最后由 lee.123 于 2024-1-5 14:44 编辑

找到了,在编译的时候报错以下内容,请问这是遇到什么问题呢?




后面我用了板子上自带的librga.so库给编译了一个demo,但是上面的问题还是没有解决。


回复

使用道具 举报

67

积分

0

威望

0

贡献

技术小白

积分
67
发表于 2024-1-6 15:57:21        只看该作者  地板
同时还想请问RGA对比GPU的优势在哪里呢,看资料的rk3568带的GPU性能也算不错的。
回复

使用道具 举报

67

积分

0

威望

0

贡献

技术小白

积分
67
发表于 2024-1-6 20:25:25        只看该作者  5#
zhangzhenzhao 发表于 2024-1-3 09:02
sdk  里的external\linux-rga\samples

好的,谢谢您,还请您看看下面的问题
回复

使用道具 举报

67

积分

0

威望

0

贡献

技术小白

积分
67
发表于 2024-1-9 14:37:04        只看该作者  6#
本帖最后由 lee.123 于 2024-1-9 14:47 编辑

Q3:
我现在改了一下提供的demo,做了一个yuv数据转rgb的测试,大概720*1280的yuv图像转换为同分辨率下的rgb图像效率为8ms/frame;但是cpu占用率还是很高。看到了官方文档有以下说明:
现在我想要使用dma_buf_alloc()提升一下速率,请问一下有没有进一步的教程呢?
我没有找到/dev/dma_heap/*这个路径。


--------------------------------------------------

---------------------------------------------------



回复

使用道具 举报

1009

积分

1

威望

3

贡献

官方团队

Rank: 9Rank: 9Rank: 9

积分
1009
发表于 2024-1-9 15:00:16        只看该作者  7#
没有具体步骤,都在例程里和参考文档,如果你的测试代码包含类似memcpy拷贝的函数肯定有问题,一般是用importbuffer_fd引用
回复

使用道具 举报

67

积分

0

威望

0

贡献

技术小白

积分
67
发表于 2024-1-9 17:36:35        只看该作者  8#
zhangzhenzhao 发表于 2024-1-9 15:00
没有具体步骤,都在例程里和参考文档,如果你的测试代码包含类似memcpy拷贝的函数肯定有问题,一般是用impo ...
  1.       我使用了fread来作拷贝,这样是有问题吗?
  2. src_buf = (char*)malloc(SRC_WIDTH * SRC_HEIGHT * get_bpp_from_format(SRC_FORMAT));
  3.     dst_buf = (char*)malloc(DST_WIDTH * DST_HEIGHT * get_bpp_from_format(DST_FORMAT));

  4.     // // 从文件中获取源缓冲区数据
  5.     // ret = get_buf_from_file(src_buf, SRC_FORMAT, SRC_WIDTH, SRC_HEIGHT, 0);
  6.     // if (!ret)
  7.     //     printf("打开文件1\n");
  8.     // else
  9.     //     printf("无法打开文件2\n");



  10.         // 如果是其他模式,将目标缓冲区清零
  11.     memset(dst_buf, 0x00, DST_WIDTH * DST_HEIGHT * get_bpp_from_format(DST_FORMAT));


  12.     // 包装源和目标缓冲区,创建相应的结构体
  13.     src = wrapbuffer_virtualaddr(src_buf, SRC_WIDTH, SRC_HEIGHT, SRC_FORMAT);
  14.     dst = wrapbuffer_virtualaddr(dst_buf, DST_WIDTH, DST_HEIGHT, DST_FORMAT);
  15. fseek(src_file, 0, 0);
  16.     gettimeofday(&start, NULL);
  17.     while(1){
  18.         i++;
  19.         printf("%d \n",i);
  20.         if(fread(src_buf, SRC_WIDTH * SRC_HEIGHT * get_bpp_from_format(SRC_FORMAT), 1, src_file) == 0){
  21.             break;
  22.         }
  23.         STATUS = imcvtcolor(src, dst, src.format, dst.format);
  24.     }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表