EGL和opengles2在开发板上实现无窗口3D显示--Apple的学习笔记

继上一篇使用meson自己编译libdrm及修改example代码--Apple的学习笔记成功验证了drm的显示框架方案可行,并且硬件通路正常。于是最近做了2件事,一个是自己编译mesa。另一个是找到适用于开发板的显示框。

今天已经完成验证EGL+opengles2+drm的显示框架组合能在bb black开发板上实现。
过程中的问题:
  1. mesa自己编译不成功由于一定要使用llvm 8.0的版本,mesa demo在ubuntu18.04上与运行成功。本来想学习meson build来自己编译mesa然后再交叉编译mesa。但是meson不知道什么配置。由于之前查过开发板中已经有EGL及esglv2的lib所以直接使用方案2。
  2. 在mesademo中寻找native显示框架的代码,然后自制ccs9工程进行交叉编译。mesa demo例子比较多,后来找到了egl/opengl/eglkms,采用的是EGL+openges2+drm实现的。但是没有动画效果,只是shader编译后显示一个立方体。但是已经满足我在开发板进行方案验证的需求。
  3. 编译通过后运行不太顺利。
    问题1:透视投影函数编译不过。因为我注释了glu.h,查了下自己用矩阵算法也可以实现。我本次目的是不想编译开发板的lib,希望直接使用原有lib进行开发。后来从我之前从TI官网下载的gfx demo资料中找到了自己实现的函数来代替,解决了。
    问题2:运行的时候create FB函数返回错误。最早运行drm how-to demo也是此问题。但是上篇blog用的是create FB2函数是可以成功运行的。网上说区别就是多面屏用FB2,所以我改成FB2。成功通过验证。
    问题3:运行的时候提示opengles的连接配置参数不对。后来看了下rgb改成了888的。因为之前TI官网描述过驱动只支持3中。所以我之前做实验都是@XB24等。
    问题3:看似显示屏连接成功了,但是opengles中渲染的立方体没有显示?这个问题麻烦了,我得分析opengles相关的code,但是和我之前学习的opengl怎么区别那么大,都没shader文件,也没有属性关联。于是我想起来之前mesa demo有很多我的眼熟的code,把我看的懂的code都copy过来进行执行。
    原来我之前bind的是ES,而我看的懂的需要vertex文件的都是es2。怪不得。改成es2相关的api后,有修改了下rgb等参数,最终EGL+opengles2+drm的方案在开发板上能实现立体3D图。验证成功!
ccs9工程已经上传到我的码云
方案验证成功.jpg
EGL_opengles方案科学.png

4.我又快速的把3D变成动画,我自己把render函数放入while循环,在mesa demo中直接修改,然后在ubuntu18.04的tty无显示界面运行。结果只能运行4帧动画效果,然后就coredump了。需要用哪些api实现buffer刷新框架我还没找到例子,貌似之前看到filp相关的函数。
想起来了,TIsdk中有kmscube,我已经找到源码并且下载了,再学习下它的框架。路径https://packages.debian.org/testing/graphics/kmscube,其实很早我就搜索到此网站,只是下载了bin文件,后来发现右边树形有链接到源码,之后只要bb black开发板能运行动画,就可以实现QT+开发板的远程控制功能了。

今天算个重要里程碑,我离成功又近了一步。

你可能感兴趣的:(EGL和opengles2在开发板上实现无窗口3D显示--Apple的学习笔记)