海思QT开发系列(四):Hi3559 Qt+OpenGL移植

海思QT开发系列(一):3559平台QT移植

海思QT开发系列(二):构建海思Qt项目Sample

海思QT开发系列(三):Hi3559 Qt Sample开发板运行测试

海思QT开发系列(四):Hi3559 Qt+OpenGL移植


参考

  1. 海思3559A QT 5.12移植(带webengine 和 opengl es)
  2. Qt5.9.7 移植到Hi3536,支持OpenGL和tsLib
  3. 海思开发板hi3559移植带opengl的qt并成功运行血泪史
  4. EGL library doesn’t support Emulator extensions—问题解决记录
  5. Qt5.9.3源码的交叉编译—Jetson TX1
  6. 《GPU 开发用户指南》
    网上资料如参考3小彭同学所言都不完整,参考这位同学的流程,陆续花了2个下午跑通全流程,供大家参考!

海思GPU环境准备

  • 请详读海思文档《GPU 开发用户指南》在这里插入图片描述
  • 运行mpp\sample\gpu下的sample,确认GPU环境ok
    在这里插入图片描述

这部分比较简单,安装文档一步步来就ok,本人编译环境有做过内核配置调整,导致无法成功编译驱动,耽误了几个小时,记住使用3559原生SDK配置就ok!!!

最后在release下会生成三个目录

include  ko  lib

inclue 待会交叉编译OpenGL会用到
ko 需要拷贝到开发板加载
lib 交叉编译和运行都需要

QT交叉编译支持OpenGL

方法一

方法一是错误示范!!!
这是我踩过的坑,直接点的盆友可以直接看方法二干货!

  • 修改congif指定头文件路径
    qtbase/mkspecs/linux-aarch64-himix100-g++/qmake.conf
    在这里指定QMAKE_INCDIR_OPENGL_ES2等三个宏,方法用尽,各种路径指定,configure就是不能enable OpenGL,尴尬!!!
  OpenGL:
    Desktop OpenGL ....................... no
    OpenGL ES 2.0 ........................ no
    OpenGL ES 3.0 ........................ no
    OpenGL ES 3.1 ........................ no
    OpenGL ES 3.2 ........................ no
ERROR: Feature 'opengles2' was enabled, but the pre-condition '(config.win32 && !features.opengl-dynamic) || (!config.watchos && !features.opengl-desktop && libs.opengl_es2)' failed.

ERROR: Feature 'eglfs' was enabled, but the pre-condition '!config.android && !config.darwin && !config.win32 && !config.wasm && features.egl' failed.

ERROR: The OpenGL functionality tests failed!
You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2],
QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.

Check config.log for details.

如果发生类似这样的错 安装完相关依赖库之后 记得运行 rm config.cache来删除缓存的配置

来源: https://www.cnblogs.com/ahuo/p/11286843.html
这个没有用

后面,仔细研究了一些参考1的文章,找到了正确的打开方式!
前期观此文章排版一言难尽,直接略过了!看文章要仔细,也建议大家写记录的话重要的步骤,一定要特殊说明,最好介绍下缘由这样修改的缘由。

方法二

新增交叉编译器软链接

这一步是关键

方法一里面,总找到OpenGL的头文件定义,缘由我不知道,这种用到的是另一种方法,直接将引用放到交叉编译器的相关目录,这些路径configure的时候肯定要遍历的,而我们3559的编译器有些usr等目录更深,所以,做一些软连接支持!

到交叉编译器根目录(/opt/hisi-linux/x86-arm/aarch64-himix100-linux/)

  • 将target/usr 链接到根目录usr
 cd /opt/hisi-linux/x86-arm/aarch64-himix100-linux
 sudo ln -s ./target/usr usr
  • 将aarch64-linux-gnu链接到/usr/lib下
sudo ln -s /opt/hisi-linux/x86-arm/aarch64-himix100-linux/aarch64-linux-gnu /usr/lib/aarch64-linux-gnu

拷贝GPU头文件和库

将海思SDK里mpp/component/gpu/release目录下的include目录和lib目录拷贝到opt/hisi-linux/x86-arm/aarch64-himix100-linux/usr目录下

qmake 支持

在qtbase/mkspecs/linux-aarch64-himix100-g++/qmake.conf文件加入对mali的支持

# gpu  
QMAKE_LIBS_EGL         += -lmali
QMAKE_LIBS_OPENGL_ES2  += -lmali
DEFINES                += EGL_EGLEXT_PROTOTYPES GL_GLEXT_PROTOTYPES  EGL_FBDEV EGL_API_FBDEV EGL_API_MIDGARD PLATFORM_MALI700

配置QT源文件,支持OpenGL

QT根目录新建脚本文件hayson_configure.sh
增加执行权限
配置如下:

#!/bin/bash
./configure -v \
-opensource -confirm-license \
-release -shared \
-make libs \
-strip \
-xplatform linux-aarch64-himix100-g++ \
-prefix $PWD/qt5.14.2_hi3559av100_release \
-opengl es2 \
-eglfs \
-no-gcc-sysroot -no-pkg-config \
-nomake examples -nomake tests \
-no-ico -nomake examples \
-no-sse2 -nomake tools \
-no-iconv -no-gif \
-no-rpath -no-pch \
-no-avx -no-openssl \
-no-cups -no-dbus \
-no-glib -no-tslib \

配置结果

在这里插入图片描述

编译

make -j$(nproc)
make install

创作不易,欢迎点赞!海星出品,转载请注明出处!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章