树莓派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.)项目地址

具体的库文件结构如图
树莓派GPU使用心得_第1张图片

该项目中包括的库文件有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库文件,相关编译可以参考文章。

你可能感兴趣的:(树莓派)