Toybrick

RockchipDrmOpen 返回 -1

zhuo799154051

中级会员

积分
443
楼主
发表于 2020-9-28 10:38:59    查看: 27738|回复: 10 | [复制链接]    打印 | 只看该作者
本帖最后由 zhuo799154051 于 2020-9-28 10:41 编辑

平台是官方的RK3399pro,该有的环境都搭好了。编译rockchip_drm的example是成功的,但是运行时RockchipDrmOpen会返回-1。
我又测试了包含DRM库的mpp_encode的官方demo,结果还是一样返回-1。
查找了其他相关帖子没有具体回答,版主提到的链接 https://github.com/rockchip-linux/libdrm-rockchip 已经失效。
后续将RockchipDrmOpen改为open(card, O_RDWR | O_CLOEXEC),返回3,程序可正常运行。

请问是什么原因?


下面是修改后的demo,打印结果为:
return 3
--------run---------


回复

使用道具 举报

zhuo799154051

中级会员

积分
443
沙发
 楼主| 发表于 2020-9-28 10:40:22 | 只看该作者
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <rockchip/rockchip_drm.h>
#include <fcntl.h>
#define SIZE_1M                (1 << 20)

int main(int arc, char **argv)
{
        int fd, ret = 0;
        CmaBuffer *cma = NULL;
        DrmBuffer *drm = NULL;
       
        const char* card;
        card = "/dev/dri/card0";
        /* open the DRM device */
        fd = open(card, O_RDWR | O_CLOEXEC);
        printf("return %d\n", fd);

        //fd = RockchipDrmOpen();
        if(fd < 0)
                return fd;
       
        cma = RockchipCmaAlloc(fd, SIZE_1M);
        if(!cma) {
                ret = -ENOMEM;
                goto exit;
        }
        drm = RockchipDrmAlloc(fd, V4L2_PIX_FMT_BGR24, 1920, 1080);
        if(!drm) {
                ret = -ENOMEM;
                goto exit;
        }
        printf("--------run---------\n");
        /* TODO: cma and drm buffer operation */

exit:
        if(drm)
                RockchipDrmFree(fd, drm);       
        if(cma)
                RockchipCmaFree(fd, cma);       

        RockchipDrmClose(fd);
        return ret;
}
回复

使用道具 举报

jefferyzhang

版主

积分
13582
板凳
发表于 2020-9-28 10:45:53 | 只看该作者
该论坛提供的所有库都仅可用于Toybrick平台,其他的平台我们无法保证正常使用。
硬件、驱动、系统、库都是为Toybrick平台量身打造的
回复

使用道具 举报

jefferyzhang

版主

积分
13582
地板
发表于 2020-9-28 10:47:15 | 只看该作者
rockchip-linux开源库失效是由于法律原因,所有开源库都在内部审查中,过一段时间就会放出来
回复

使用道具 举报

zhuo799154051

中级会员

积分
443
5#
 楼主| 发表于 2020-9-28 10:50:53 | 只看该作者
jefferyzhang 发表于 2020-9-28 10:45
该论坛提供的所有库都仅可用于Toybrick平台,其他的平台我们无法保证正常使用。
硬件、驱动、系统、库都是 ...

就是toybrick平台的RK3399proD
回复

使用道具 举报

zhuo799154051

中级会员

积分
443
6#
 楼主| 发表于 2020-9-28 10:53:54 | 只看该作者
jefferyzhang 发表于 2020-9-28 10:45
该论坛提供的所有库都仅可用于Toybrick平台,其他的平台我们无法保证正常使用。
硬件、驱动、系统、库都是 ...

公司从你们官方买来的两块板子跑RockchipDrm都出现这种现象
回复

使用道具 举报

jefferyzhang

版主

积分
13582
7#
发表于 2020-9-28 11:16:04 | 只看该作者
zhuo799154051 发表于 2020-9-28 10:53
公司从你们官方买来的两块板子跑RockchipDrm都出现这种现象

如果是toybrick的板子,请升级到最新的系统(debian10)并更新,升级方法置顶帖有。
有些板子出产固件会比较老旧
回复

使用道具 举报

zhuo799154051

中级会员

积分
443
8#
 楼主| 发表于 2020-9-28 11:20:14 | 只看该作者
系统和所有库都已经更新到最新版了。

toybrick@debian10:~/Videos/mpp_encode_demo$ sudo apt install rockchip-drm-dev libdrm-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树      
正在读取状态信息... 完成      
libdrm-dev 已经是最新版 (2.4.97-1)。
rockchip-drm-dev 已经是最新版 (1.0.0-5)。
下列软件包是自动安装的并且现在不需要了:
  gir1.2-gst-plugins-base-1.0 libgles1 libgles2 libglvnd-core-dev libglvnd-dev
   libopengl0 liborc-0.4-dev liborc-0.4-dev-bin libwayland-bin libwayland-dev
   libx11-xcb-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-glx0-dev
   libxcb-present-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev
   libxcb-xfixes0-dev libxshmfence-dev libxxf86vm-dev x11proto-xf86vidmode-dev
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级
回复

使用道具 举报

zhuo799154051

中级会员

积分
443
9#
 楼主| 发表于 2020-9-28 11:21:08 | 只看该作者
jefferyzhang 发表于 2020-9-28 11:16
如果是toybrick的板子,请升级到最新的系统(debian10)并更新,升级方法置顶帖有。
有些板子出产固件会比 ...

系统和所有库都已经更新到最新版了。

toybrick@debian10:~/Videos/mpp_encode_demo$ sudo apt install rockchip-drm-dev libdrm-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树      
正在读取状态信息... 完成      
libdrm-dev 已经是最新版 (2.4.97-1)。
rockchip-drm-dev 已经是最新版 (1.0.0-5)。
下列软件包是自动安装的并且现在不需要了:
  gir1.2-gst-plugins-base-1.0 libgles1 libgles2 libglvnd-core-dev libglvnd-dev
   libopengl0 liborc-0.4-dev liborc-0.4-dev-bin libwayland-bin libwayland-dev
   libx11-xcb-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-glx0-dev
   libxcb-present-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev
   libxcb-xfixes0-dev libxshmfence-dev libxxf86vm-dev x11proto-xf86vidmode-dev
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级
回复

使用道具 举报

jefferyzhang

版主

积分
13582
10#
发表于 2020-9-28 11:39:48 | 只看该作者
刚看明白.
DRM在图形界面本身就已经被打开,无法再次被open的
回复

使用道具 举报

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

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表