「含源码」关于NXP IMX8 Mini的图形开发指南(GPU)案例分享!

前言
graphical demo框架提供了对平台相关依赖的抽象。graphical应用的通用封装,如模型加载、纹理加载、着色器编译等,以及其它一些通用的应用逻辑处理的封装,使得使用框架的开发人员(以下简称开发人员)可专注于具体应用需要的渲染相关代码的开发,提高graphical应用的开发效率。
demo framework是nxp官方开发的一个跨平台的graphical demo开发框架。此框架有以下特点:
● 仅需编写一次应用代码;
● 可运行于android、yocto linux、ubuntu、ms windows(yocto linux泛指基于yocto构建的linux系统);
● 易于移植至其它平台;
● 支持opengl es2、opengl es3、openvg和试验性的g2d api。
备注:i.mx 8m mini不支持opengl es3 api,详情参考下图
图 1
*测试硬件平台:tlimx8-evm评估板(nxp i.mx 8m mini)
图 2 tlimx8-evm评估板
1、框架结构 
图 3 demo framework简要框架
demo app对应具体的某个graphical应用,开发人员可基于demo frame core和demo framework services开发自己的应用。同时helper classes亦提供了许多通用功能的代码实现,比如其中的glprogram和glshader等封装了许多复杂的opengl es的使用逻辑,开发人员可直接调用helper classes封装好的api来进行开发。
备注:框架的更多设计细节请参考产品资料“6-开发参考资料\nxp官方参考文档\”目录下的《i.mx_graphics_user's_guide.pdf》手册中的17.3~17.7章节。
2、框架使用2.1 demo framework开发环境搭建
确保虚拟机上已完成nxp i.mx 8m mini sdk环境安装和配置,若未完成,请参考产品资料用户手册目录下的linux开发环境搭建手册。
请在ubuntu执行如下命令安装依赖工具包。
host# sudo apt-get install build-essential libxrandr-dev
host# sudo apt-get install libgles2-mesa-dev
host# sudo apt-get install libdevil-dev
图 4
图 5
图 6
执行如下命令通过git工具下载demo framework源码。
host# mkdir imx-gpu-sdk-5.6.2-build
host# cd imx-gpu-sdk-5.6.2-build
host# git clone git://github.com/nxpmicro/gtec-demo-framework.git
host# cd gtec-demo-framework
host# git checkout df9afd8c21b603662a9d8fcf049d01da0c5cc358
图 7
2.2 源码编译
在demo framework源码所在路径执行如下命令加载sdk环境变量,加载成功即可查看到交叉编译工具链aarch64-poky-linux-gcc。
host# source /home/tronlong/sdk/environment-setup-aarch64-poky-linux
图 8
执行如下命令进行编译。
host# . ./prepare.sh//注意:两个点之间有空格
host# fslbuild.py -vvvvv -t sdk --usefeatures [earlyaccess,egl,googleunittest,openvg,g2d,opengles2,opencv] --useextensions [*] --variants [windowsystem=wayland] --buildthreads 24 -c install --cmakeinstallprefix `pwd`
备注:--buildthreads 24为编译时的线程数,一般为处理器核心数的两倍,请根据实际情况修改,fslbuild部分参数说明如下图。
图 9
图 10
图 11
编译耗时约30min,编译完成后将在当前目录下生成bin文件夹。
图 12
执行如下命令可查看bin目录结构,如未安装tree,请执行“sudo apt-get install tree”进行安装。
host# tree -l 2 bin
图 13
其中部分案例的实现和效果说明,可参考如下连接:
https://developer.ridgerun.com/wiki/index.php?title=imx8/multimedia/gpu/opengl。
2.3 案例测试
评估板连接hdmi显示器,将编译生成的bin拷贝至评估板“/home/root/”目录下。本次测试将bin目录重命名为tec-demo-framework-bin,以blur demo案例测试为例。
target# cd tec-demo-framework-bin/gles2/blur/
target# ./gles2.blur_wayland
图 14
hdmi显示器输出如下渲染对比视频效果。
图 15
3、demo新增3.1 利用脚本生成demo
demo新增需在源码编译后的基础上进行,并通过fslbuildnew.py脚本来完成,注意不同类型的应用需不同的template参数。在demo framework源码目录下,执行如下命令查看相关参数。
host# . ./prepare.sh
host# fslbuildnew.py –help
图 16
3.2 新增gles2类型demo示例
以gles2类型demo为例,新增gles2类型的coolnewdemo至demoapps/gles2目录。请在gtec-demo-framework目录下,执行如下命令。
host# source /home/tronlong/sdk/environment-setup-aarch64-poky-linux
host# . ./prepare.sh
host# cd demoapps/gles2
host# fslbuildnew.py gles2 coolnewdemo
host# cd coolnewdemo
host# fslbuild.py --variants [windowsystem=wayland]
图 17
编译完成后,生成的文件目录为“
gtec-demo-framework/build/yocto/ninja/release/demoapps/gles2/coolnewdemo/gles2.coolnewdemo_wayland”。
备注:若遇到如下错误,请执行命令“sudo apt-get ninja-build”安装ninja build工具。
图 18
通过fslbuildnew.py脚本生成的demo仅是一个骨架,在实际应用中,需根据实际应用功能添加代码。然后使用fslbuild.py脚本进行编译,最后将对应的的可执行文件及其依赖的资源文件拷贝至评估板运行。
将coolnewdemo文件夹拷贝至评估板文件系统,执行如下命令进行测试。
target# ./gles2.coolnewdemo_wayland
图 19
hdmi显示器输出如下效果。
图20
想要获取这个案例的详细说明内容,以及本篇案例的源码,请在下方评论区留言~~感谢大家的喜爱

在不久的将来电动汽车将会取缔燃油车的地位
abb变频器最低频率设置
比Colab更方便的GPU平台-GPUlab
CAN协议数据帧的介绍
越来越多竞争者纷纷入局,工业物联网平台会走向垄断吗?
「含源码」关于NXP IMX8 Mini的图形开发指南(GPU)案例分享!
热参数如何与PCB温度或IC结温进行比较
Exo Imaging推出便携式超声波设备,助力新冠病毒诊断
英特尔图形性能分析器2016 R4版本的功能介绍
STM32WB55_NUCLEO开发(3)----手机与STM32WB直接配对
光学轮廓仪检测原理是什么
大疆推出了旗下首款手机飞行云台
PCB板三防漆可靠性试验的注意事项
OPPO在ETSI宣称已经拥有了600项5G标准专利
LT8711 Type-C/DP1.2至HDMI1.4转换器简介
三星S8和小米MIX哪个好? 三星S8和小米MIX对比评测
中国的5G建设带动了5G产业链生产规模的快速增长
英国新车销量同比下跌7.3% 汽车市场整体下滑的态势令人不安
荣耀V20手机综合评测 到底怎么样
为什么智能家居离不开云计算