在使用rk356x 以及 rk3588 linux平台媒体框架rockit时,在用vo 显示时常见的一个问题就是有报下面的的错误提示:
rk-debug init version=3.78,args[16,16,2], threadId=547608325760
eglInitialize() returned 0
after eglInitialize() eglError (0x3001)
eglInitialize failed
此问题一般是mali库引起的,rk的mali 库分2种一个是依赖native_window_system(X11, wayland, gbm), 另一个是独立的可以被直接使用的,简称dummy库。rockit 通过libgraphic_lsf.so 使用GPU,使用GPU必须正确的初始化mali。如果你的库是前者,必须先启动相应的桌面系统,否则可以直接启动rockit。
因为sdk默认编译出来的是带weston 桌面的,所以使用的是wayland的mali库。 但是很多人是不启动桌面的,所以这就导致再使用rockit vo时就会报上面的错误。
解决方式就是将wayland 的 mali库替换成dummy的mali库。
1、make menuconfig
2、在界面输入/ROCKCHIP_MALI ,输入1
3、按照图片进行修改:
4、保存配置 make savedefconfig
5、清除已有的mali编译内容:make rockchip-mali-dirclean
6、重新编译:make rockchip-mali-rebuild
7、生成的tar文件在buildroot/output/rockchip_rk3588/build/rockchip-mali-master/rockchip-mali-master.tar ,将压缩包push 到板子上解压
ps:在编译mali过程可能会报x11库找不到的问题,先执行make xlib_libX11,即可继续编译