海思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

創作不易,歡迎點贊!海星出品,轉載請註明出處!

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