lee.123 发表于 2024-1-2 17:00:07

RGA的使用?

请问一下官方的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/Firefly-Linux-Guide/manual_ubuntu.html#rga并没有说明如何使用RGA,请问是否有相关demo?

zhangzhenzhao 发表于 2024-1-3 09:02:08

sdk里的external\linux-rga\samples

lee.123 发表于 2024-1-5 13:41:05

本帖最后由 lee.123 于 2024-1-5 14:44 编辑

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




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


lee.123 发表于 2024-1-6 15:57:21

同时还想请问RGA对比GPU的优势在哪里呢,看资料的rk3568带的GPU性能也算不错的。

lee.123 发表于 2024-1-6 20:25:25

zhangzhenzhao 发表于 2024-1-3 09:02
sdk里的external\linux-rga\samples

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

lee.123 发表于 2024-1-9 14:37:04

本帖最后由 lee.123 于 2024-1-9 14:47 编辑

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


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

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



zhangzhenzhao 发表于 2024-1-9 15:00:16

没有具体步骤,都在例程里和参考文档,如果你的测试代码包含类似memcpy拷贝的函数肯定有问题,一般是用importbuffer_fd引用

lee.123 发表于 2024-1-9 17:36:35

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

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



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


    // 包装源和目标缓冲区,创建相应的结构体
    src = wrapbuffer_virtualaddr(src_buf, SRC_WIDTH, SRC_HEIGHT, SRC_FORMAT);
    dst = wrapbuffer_virtualaddr(dst_buf, DST_WIDTH, DST_HEIGHT, DST_FORMAT);
fseek(src_file, 0, 0);
    gettimeofday(&start, NULL);
    while(1){
      i++;
      printf("%d \n",i);
      if(fread(src_buf, SRC_WIDTH * SRC_HEIGHT * get_bpp_from_format(SRC_FORMAT), 1, src_file) == 0){
            break;
      }
      STATUS = imcvtcolor(src, dst, src.format, dst.format);
    }
页: [1]
查看完整版本: RGA的使用?