https://blog.csdn.net/wade_510/article/details/102991631
FBO与fb0的区别
FBO(Frame Buffer Object帧缓存对象)是OpenGL对渲染目的地的扩展,提供创建额外非可显示的FBO
的接口。它可以实现OpenGL渲染输出重定向。OpenGL默认把framebuffer当作渲染的目的地,它由窗口系
统创建并管理。
texture(纹理)和renderbuffer(渲染缓存)是两种可附着的framebuffer,它们附加到FBO,OpenGL可
以执行“渲染到纹理”或“离屏渲染”。
参考网:https://www.jianshu.com/p/c16c7e7cdf91
fb0只是一个显存设备较为常用命名,可以有fb1、fb2等等,这些都可以在framebuffer驱动中修改。
gpu与fb的关系
gpu就是soc中的一个外设,cpu可以发命令给gpu,比如给两个端点,gpu就会去做具体的画线操作。
这样就减轻了cpu的负担,有点类似于DMA的作用。
参考网:https://blog.csdn.net/qq_28992301/article/details/52727342
对于嵌入式系统显示机制:
① 应用层(App —>OpenGL库 [硬件加速自动画线、计算颜色等])—>内核(GPU驱动)—>硬件(GPU
寄存器 —>fb帧缓存 —>LCD控制器)
② 应用层(App [也可以纯手动操作fb…])—>硬件(fb帧缓存 —>LCD控制器)
qt显示系统的选择
qt可以通过 QT_QPA_PLATFORM 设置或./app -platform xxx选择视窗系统(视窗插件有EGLFS、LinuxFB、
KMS、DirectFB、Wayland)。
视窗插件介绍:
linuxFB:直接往FrameBuffer写数据,只支持软件渲染。通过-platform linuxfb使qt程序运行在该plugin上。
EGLFS: EGL是OpenGL和底层本地视窗系统之间的接口, 而为了qt应用能在EGL和OpenGL ES2.0上运行,qt开发了 EGLFS 平台插件。它不支持多窗口,带GPU的嵌入式系统最好用这个。
Wayland:wayland是轻量级的视窗系统。QtWayland模块是一个wayland插件,使得Qt应用程序与wayland显示进行连通。注意:使用 Weston,Qt焦点或输入可能有一些问题。
XCB:这是在普通桌面linux平台上使用的x11插件。嵌入式系统不推荐。
参考网:
Qt 的 linuxFB KMS XCB Wayland:
https://blog.csdn.net/deggfg/article/details/81478056
Qt5.7 Qt for Embedded Linux:
https://blog.csdn.net/chongzi865458/article/details/54406865
海思HI3798 Qt OpenGL的使用:
https://blog.csdn.net/wo_Niu123/article/details/84960206
http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_Graphics.html
关于linuxFB与EGLFS使用时,系统环境配置请查阅相关资料,此处不再讲述。
关于QtWayland
4.1 什么是QtWayland?
QtWayland是封装了Wayland功能的Qt 5模块。QtWayland被分为一个客户端(client)和一个服务端(server)。客户端是wayland平台插件,提供了运行Wayland客户端Qt程序的方法。服务端是QtCompositor
应用程序接口(API),允许用户编写自己的compositors(合成器)。
4.2 怎样使用QtWayland?作为Wayland客户端运行Qt程序。
当您编译完QtWayland模块,您将得到一个新的wayland平台插件。要使用它,您首先需要有一个已经运行的Wayland compositor。这可以是一个Wayland项目提供的Weston reference compositor,或是QtWayland提供的Qt example compositor。
===创建您自己的compositor:创建Wayland compositor和控制相关事件的应用程序接口在QtWayland
类的WaylandCompositor中。它的构造函数需要QWindow对象指针作为主参数。这使实现compositor更加灵活。
总结:Weston和QtWayland中compositor都是Wayland协议的一个compositor的实现。
参考网址:https://wiki.qt.io/QtWayland/zh
pkill app*
/etc/init.d/weston stop
./app -platform linuxfd
其他重点基础参考网:
Linux graphic subsystem(2)_DRI介绍:
http://www.wowotech.net/linux_kenrel/dri_overview.html 该博客主还有很多精彩内容。
根据文章思考问题:
① framebuffer显示框架与DRI显示框架的区别究竟在哪里?
② DRI框架主要两个组成部分:DRI和KMS,DRI负责Rendering,KMS负责display。/dev/dri/card0是
操作gpu的接口,发送命令等操作都是通过对这个设备节点进行的。/dev/dri/controlD64是kms相关的
设备节点。
③ opengl使用dri框架是怎样一个运行流程?
————————————————
版权声明:本文为CSDN博主「何妨一下楼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wade_510/article/details/102991631