樹莓派GPU使用心得

型號:樹莓派3B+
系統:2020-02-13-raspbian-buster
編譯器: QTCreator
QT版本:qt5.11.3

1、首先要先修改當前GPU的容量(建議128MB)
sudo raspi-config
7 Advanced Options->A3 Memory Split
注意:這裏設置的GPU容量其實是芯片上的內存總量分出來的空間,3B+的內存總量是1GB分給GPU128MB剩餘的就都是內存大小了。

2、樹莓派在安裝完系統後在目錄/opt/vc下會有一系列庫文件、頭文件、源碼以及一些非常炫酷的例子。這裏的文件在官方項目的描述是:arm端樹莓派的GPU接口庫文件源碼(Source code for ARM side libraries for interfacing to Raspberry Pi GPU.)項目地址

具體的庫文件結構如圖
在這裏插入圖片描述

該項目中包括的庫文件有EGL(Open EGL), mmal(), GLESv2(OpenGL ES 2.0), vcos(), openmaxil(OpenMAX IL), vchiq_arm(), bcm_host(), WFC(), OpenVG(hardware-accelerated OpenVG 1.1).

3、其中EGL和GLESv2的庫文件會和命令安裝的qt中依賴的GLESv2庫文件衝突,經過試驗可以將/opt/vc/lib下的libbrcmEGL.so和libbrcmGLESv2.so文件備份刪除。然後軟連接成/usr/lib/arm-linux-gnueabihf文件夾下的libEGL.so.1.1.0和libGLESv2.so.2.1.0
sudo ln -sf libGLESv2.so.2.1.0 libbrcmGLESv2.so
sudo ln -sf libEGL.so.1.1.0 libbrcmEGL.so
這樣就能解決qt在使用GPU庫文件的時候QWidget調用show函數段錯誤的情況。

在使用GPU的任意庫進行開發時都要先執行函數bcm_host_init();

更新

經過踩坑發現/usr/lib/arm-linux-gnueabihf下的libGLESv2.so和libEGL.so庫文件是使用軟件方法實現的Opengl ES渲染庫文件,不會使用GPU進行硬件加速,而/opt/vc/lib文件夾下的libbrcmEGL.so和libbrcmGLESv2.so是使用GPU硬件加速了的opengl es庫文件,使用系統命令(sudo apt install qt5-default qtcreator -y)安裝的qt庫文件使用的渲染庫是軟件實現的opengl es庫文件,所以如果需要同時使用命令安裝的qt庫文件和樹莓派GPU除opengles外其他相關lib庫文件,則需要進行上面3中更改依賴(不建議)。
(強烈建議)最好自己編譯qt庫文件,相關編譯可以參考文章

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