嵌入式linux QT平台的显示插件
linuxfb
直接往FrameBuffer寫數(shù)據(jù)
只支持軟件渲染(software-rendered),所以沒有g(shù)pu的片子選這個(gè)
某些配置會(huì)使顯示性能受到抑制
命令行可使用命令QT_QPA_PLATFORM=linuxfb:fb=/dev/fb1 和 -platform linuxfb使qt程序運(yùn)行在該plugin上
另外指定fb用fb=/dev/fbN,分配顯示區(qū)大小size=<width>x<height>,物理大小mmSize=<width>x<height>,設(shè)定便宜offset=<width>x<height>,有關(guān)于屏幕消影(blinking cursor)和閃爍光標(biāo)(screen blanking)的控制nographicsmodeswitch
directfb
eglfs
EGL是OpenGL與本機(jī)窗口系統(tǒng)之間的接口。Qt可以將EGL用于上下文和表面管理,但是API不包含特定于平臺(tái)的內(nèi)容。創(chuàng)建本機(jī)窗口(不一定是屏幕上的實(shí)際窗口),仍然必須通過特定于平臺(tái)的方式來完成。這就是為什么我們需要主板或GPU專用的適配代碼的原因。通常,這些改編提供為:
- EGLFS掛鉤?-編譯到平臺(tái)插件中的單個(gè)源文件
- EGL設(shè)備集成?-動(dòng)態(tài)加載的插件
EGLFS是一個(gè)平臺(tái)插件,用于在EGL和OpenGL ES 2.0之上運(yùn)行Qt5應(yīng)用程序,而沒有像X11或Wayland這樣的實(shí)際窗口系統(tǒng)。除了Qt Quick 2和本機(jī)OpenGL應(yīng)用程序之外,EGLFS還支持軟件渲染的窗口,例如QWidget。對(duì)于QWidget,小部件的內(nèi)容使用CPU渲染為圖像,然后將其上載為紋理并由插件進(jìn)行合成。
對(duì)于包含GPU的現(xiàn)代嵌入式Linux設(shè)備,推薦使用EGLFS插件。
EGLFS迫使第一頂層窗口-無論是QWidget的或QQuickView?-成為全屏。該窗口也被選擇為所有其他頂級(jí)窗口小部件都合并到其中的根窗口小部件窗口。例如,對(duì)話框,彈出菜單或組合框。此行為是必需的,因?yàn)槭褂肊GLFS時(shí),總是只有一個(gè)本機(jī)窗口和一個(gè)EGL窗口表面;這些屬于首先創(chuàng)建的小部件或窗口。當(dāng)存在顯示應(yīng)用程序生命周期的主窗口并且所有其他小部件不是非頂級(jí)窗口部件或隨后創(chuàng)建時(shí),此方法將很好地工作。
KMS
一個(gè)試驗(yàn)性的平臺(tái)plugin,利用內(nèi)核的 modesetting 和 drm(Direct Rendering Manager)機(jī)制,配合egl-device實(shí)現(xiàn)的帶有GPU加速模式。依賴內(nèi)核的配置和 drm
XCB
用于平常的桌面linux平臺(tái)
一些嵌入式平臺(tái)使用該plugin需要提供一些必要的開發(fā)文件
在x桌面下,有些設(shè)備不支持egl和 opengl因?yàn)镋GL的實(shí)現(xiàn)不適配Xlib,這種情況下編譯出來的XCB plugin將不支持EGL,也意味著 Qt Quick 2 和其他以 OpenGL 為基礎(chǔ)的應(yīng)用程序?qū)⒉荒茉谠撨@個(gè)平臺(tái)上成功運(yùn)行(這就是我們的程序?yàn)槭裁礇]有在imx6ul的xcb平臺(tái)下運(yùn)行成功的原因)。此時(shí),他能支持那些以軟件渲染(software-rendered)的程序運(yùn)行,例如 QWidget。
作為一個(gè)通用的規(guī)則,XCB是不建議在嵌入式平臺(tái)上使用的,eglfs能更好的展現(xiàn)較高的性能和支持硬件加速能力。
wayland
輕量級(jí)的視窗系統(tǒng)
一個(gè)關(guān)于client可以與顯示server連通的協(xié)議
Qt 提供了Wayland的相關(guān)插件使得Qt 應(yīng)用程序與wayland顯示進(jìn)行連通。
Wayland是一種顯示服務(wù)器協(xié)議,可以幫助您創(chuàng)建多進(jìn)程系統(tǒng)。多個(gè)客戶端應(yīng)用程序(“客戶端”)可以將其自己的內(nèi)容呈現(xiàn)到屏幕外緩沖區(qū)。然后,使用Wayland協(xié)議將這些緩沖區(qū)傳遞到通常稱為合成器的顯示服務(wù)器。最后,合成器將內(nèi)容合成并放置在物理顯示器上。
X11是80年代的桌面協(xié)議,如今已不再適合圖形硬件的工作方式。它很大,很復(fù)雜,并且缺乏可定制性。實(shí)際上,使用X11流暢地運(yùn)行客戶端并達(dá)到60 fps而不會(huì)撕裂是很困難的。相比之下,Wayland更易于實(shí)現(xiàn),具有更好的性能,并包含在現(xiàn)代圖形硬件上有效運(yùn)行的所有必要部件。對(duì)于Linux上的嵌入式多進(jìn)程系統(tǒng),Wayland是標(biāo)準(zhǔn)配置。
但是,如果您使用的是舊硬件或舊應(yīng)用程序,那么Wayland可能不是一個(gè)好的選擇。Wayland協(xié)議在設(shè)計(jì)時(shí)考慮了安全性和隔離性,并且嚴(yán)格/保守地向客戶提供了哪些信息和功能。盡管這樣可以使界面更清潔,更安全,但是舊版應(yīng)用程序期望的某些功能可能不再在Wayland上可用。
參考:
https://doc.qt.io/qt-5/embedded-linux.html
https://doc.qt.io/qt-5/wayland-and-qt.html#
?
總結(jié)
以上是生活随笔為你收集整理的嵌入式linux QT平台的显示插件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我差点错过高校毕业生毕业之后这个3000
- 下一篇: Scratch简单10以内加法游戏