导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. laocai
    3. 最佳
    L
    • 资料
    • 关注 0
    • 粉丝 1
    • 我的积分 1653
    • 主题 3
    • 帖子 23
    • 最佳 3
    • 群组 0

    laocai 发布的最佳帖子

    • 回复: 【FAQ】全志D1芯片 如何解决Gstreamer:fb UI旋转(直接修改内核参数)后,sunxifbsink显示异常问题?

      @houxiaoni 全志对gstreamer做了适配支持,怎么tina的开发文档里都没有提及?还是我漏看了什么重要内容?我看到的文档,多媒体开发只有tplayer工具这一种,楼主能否澄清一下?

      发布在 其它全志芯片讨论区
      L
      laocai
    • sunxi图层之间的显示切换

      现在有两个图层,它们由其他app生成,我希望通过编程的方法,简单的进行切换:显示图层1-->显示图层2-->再显示图层1-- >以此类推。如果通过DISP_LAYER_SET_CONFIG调用的话,似乎要把图层所有的参数,包括缓冲区地址等统统设置一遍,而我只想简单的切换两个图层,并不知道也不关心这些图层的详细参数。请问我该怎么做?

      # cat /sys/class/disp/disp/attr/sys | more
      screen 0:
      de_rate 300000000 hz, ref_fps:62
      mgr0: 480x480 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_
      sync[0] unblank direct_show[false] iommu[1]
      dmabuf: cache[0] cache max[0] umap skip[0] umap skip max[18]
              lcd output      backlight(229)  fps:62.1         480x 480
              err:11428       skip:90 irq:14361       vsync:0 vsync_skip:0
         BUF    enable ch[0] lyr[0] z[0] prem[N] a[globl 255] fmt[ 11] fb[ 480, 480;
       0,   0;   0,   0] crop[   0,   0,   0,   0] frame[   0,   0, 480, 480] addr[  2
      80000,       0,       0] flags[0x       0] trd[0,0]
      depth[ 0]    BUF    enable ch[1] lyr[0] z[16] prem[N] a[pixel 255] fmt[  0] fb[
      480, 480; 480, 480; 480, 480] crop[   0,   0, 480, 480] frame[   0,   0, 480, 48
      0] addr[       0,       0,       0] flags[0x       0] trd[0,0]
      depth[ 0]
      
      发布在 其它全志芯片讨论区
      L
      laocai
    • 回复: 关于sunxi图层设置DISP_LAYER_SET_CONFIG的一个问题

      @zheng1 在 关于sunxi图层设置DISP_LAYER_SET_CONFIG的一个问题 中说:

      @laocai tina的sdk有一个libuapi库是对这部分接口的封装,我在v851s上用DISP_LAYER_SET_CONFIG2会导致内核内存泄漏,你可以试试有没有同样的问题

      我猜你遇到的问题可能和这段代码有关:

      #if defined(CONF_KERNEL_IOMMU)
                  ret = ioctl(g_ion_alloc_context->cedar_fd, AW_MEM_ENGINE_REL, 0);
                  if (ret)
                      logv("ENGINE_REL failed\n");
      
                  struct user_iommu_param iommu_param;
                  memset(&iommu_param, 0, sizeof(iommu_param));
                  iommu_param.fd = tmp->fd_data.aw_fd;
                  ret = ioctl(g_ion_alloc_context->cedar_fd, AW_MEM_FREE_IOMMU_ADDR, &iommu_param);
                  if (ret)
                      logv("FREE_IOMMU_ADDR err, ret %d\n", ret);
      #endif
      
                  /*close dma buffer fd*/
                  close(tmp->fd_data.aw_fd);
                  /* free buffer */
                  handle_data.handle = tmp->fd_data.handle;
      
                  ret = ioctl(g_ion_alloc_context->fd, AW_MEM_ION_IOC_FREE, &handle_data);
                  if (ret)
                      logv("TON_IOC_FREE failed\n");
      
                  aw_mem_list_del(&tmp->i_list);
                  free(tmp);
      
                  flag = 1;
      
              handle_data.handle = tmp->fd_data.handle;
      

      内核版本为高版本(5.4)的时候,libuapi库在申请内存时根本没有初始化这个handle。然后释放内存的时候,却又用这个空的handle去调用释放的系统调用,内存根本不可能真正释放。换句话说,这个libuapi库只有在低版本内核上才有可能正常工作;高版本内核上,内存只能申请,无法释放。

      发布在 其它全志芯片讨论区
      L
      laocai
    • 1 / 1