色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Wayland-Weston運行Qt程序

工程師鄧生 ? 來源:嵌入式小生 ? 作者:iriczhao ? 2022-09-27 09:11 ? 次閱讀

一、開篇

前不久,寫了篇《經驗 | 如何破Qt窗體的“卡頓”》一文,那篇文章中描述的Qt啟動方式是基于linuxfb的,在構建編譯Qt源碼的時候,會自動創建與linuxfb相關的插件。該插件是通過linux的fbdev子系統直接寫入framebuffer去實現圖形顯示的,它只支持軟件渲染的內容。

在本文中描述另外一種顯示方案:Wayland,并簡單描述Wayland的典型合成器:Weston(下文會寫到)。

下圖為小生使用Wayland-Weston運行Qt程序的Demo效果:

【開五個進程的效果,每個進程為一個窗體】

52c370fa-3dfc-11ed-9e49-dac502259ad0.jpg

【開六個窗體的效果】

52e3ca4e-3dfc-11ed-9e49-dac502259ad0.jpg

二、Wayland簡介

Wayland是一個顯示服務協議,用于創建多進程系統。使用該協議,多個客戶機應用程序(下文簡稱:客戶端)可以將它們自己的圖形內容呈現到屏幕外緩沖區,然后,使用Wayland協議將這些緩沖區傳遞給顯示服務器(通常稱為合成器),最后,合成器將合成內容并將其定位在物理顯示器上。

總而言之,可以理解成為多個應用程序的運行提供了一種類似于桌面的環境。

三、單進程系統和多進程系統

在單進程系統中,關于UI的所有東西運行在一個單一的進程中。在多進程系統中,所有客戶端則在它們自己的專用進程中運行。

單進程系統是這樣一種場景:在設備系統上電啟動后,直接進入我們設計的應用程序,而沒有其他的軟件窗體進程運行,在整個設備系統的完整運行周期里,這種狀態將一直維持。如下圖所示:

532ab0a8-3dfc-11ed-9e49-dac502259ad0.png

多進程系統是這樣一種場景:這個與桌面環境類似,支持多個進程的窗體顯示,而且彼此之間不會受到任何影響。如下圖所示:

534e70a6-3dfc-11ed-9e49-dac502259ad0.png

嵌入式設備系統中,由于其特殊性,單進程系統多進程系統都會涉及到。

四、使用多進程系統的優點

(4-1)穩定性提高了

當客戶端掛起或崩潰后更容易恢復。如果我們設計的軟件UI比較復雜,這時候可考慮選擇多進程系統,因為如果UI的一部分崩潰了,它不會影響整個系統

多進程系統可以防止可能的內存泄露。在多進程系統中,如果一個客戶端發生了內存泄漏并消耗了大量內存,那么當客戶端退出時,該內存將被恢復。與單進程相比,內存泄漏將會一直持續到整個系統重新啟動。

(4-2)安全性提高了

在單進程系統中,都可以訪問彼此的內存。例如,對敏感數據傳輸是沒有隔離的。在多進程系統中,會進行內存隔離,從而提高系統的安全性。

(4-3)性能提高了

如果我們硬件板卡上的CPU有多個核,那么多進程系統可以幫我們將負載均勻地分布到不同的核上,從而更有效地利用CPU,從而提高性能。

(4-4)提高互操作性

我們可以在多進程系統中與非Qt客戶端進行交互,只要客戶端能解析Wayland或X11。例如,如果我們將gstreamer用于視頻,或者如果想使用另一個UI工具包構建的應用程序,那么在多進程系統中,可以將這些客戶端與基于Qt的客戶端一起運行。

為什么使用wayland替代X11

X11是上世紀80年代的桌面協議,現在已經不太適合如今的圖形硬件。且X11很大、很復雜,缺少可定制性。用X11在不撕裂圖形的情況下達到60幀/秒運行客戶端幾乎很難。相比之下,Wayland則更容易實現,且具有更好的性能,并且可在現代圖形硬件上高效運行。對于linux上的嵌入式多進程系統,Wayland是一個標準可靠的選擇

然而在下列三種情況中,不太適合選擇wayland:

(1)硬件或平臺太老了,只支持X11的情況。

(2)必須運行Wayland協議中不存在特性的應用程序。

(3)應用程序使用的UI工具包不能在Wayland上運行的情況。

嵌入式系統中,由于硬件資源的限制和對Wayland的一些影響,在選擇wayland作為窗體系統還需要折衷考慮:

(1)會增加顯存消耗

在多進程中,每個客戶端都需要有自己的圖形緩沖區,并將其發送到合成器。因此,與單進程系統相比,將使用更多的顯存:在單進程情況下,所有內容都是一次性繪制的,不需要將不同的部分存儲在中間緩沖區中。

(2)會增加主內存消耗

除了操作系統級的一些額外開銷外,運行多個客戶端還可能使用更多主內存,因為每個客戶端需要重復一些部件。例如:如果運行QML,每個客戶端都需要一個單獨的QML引擎。因此,如果我們運行一個使用Qt Quick Controls的客戶端,它只加載一次。如果將這個客戶端拆分為多個客戶端,那么將多次加載Qt Quick Controls,初始化客戶端的啟動成本將變得很高。

(3)會重復存儲圖形資源

在單進程系統中,如果我們在多個地方使用相同的紋理、背景或圖標,這些圖像只會存儲一次。相反,如果在多進程系統中使用這些資源,則必須將它們存儲多次。在這種情況下,一種解決方案是:在客戶端之間共享圖形資源(Qt已經允許在不涉及Wayland的情況下跨進程共享主存中的映像資源)。

五、Weston

Weston是一個Wayland 合成器的參考實現。它開箱即用,提供一個功能齊全的桌面環境??捎糜诜亲烂媸褂玫沫h境,例如:汽車、嵌入式、飛行、工業、機頂盒和電視。它還提供了一個庫允許其他項目在Weston的基礎上構建自己的運行環境。

如果我們將Qt運行在嵌入式linux平臺上,且選擇Weston作為了桌面環境,我們也可以單進程的方式運行Qt程序:將Weston桌面的狀態欄取消,且將背景設置為透明的,然后設置Qt應用程序為開機自啟動。這也是一種比較好的方式解決《經驗 | 如何破Qt窗體的“卡頓”》一文中出現的現象。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 合成器
    +關注

    關注

    0

    文章

    273

    瀏覽量

    25356
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209328
  • 服務器
    +關注

    關注

    12

    文章

    9123

    瀏覽量

    85324

原文標題:Wayland多進程顯示

文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式Linux-Qt環境搭建 Qt程序運行測試

    本編介紹如何在嵌入式Linux開發板上配置Qt運行環境,并進行Qt程序運行測試。
    的頭像 發表于 06-01 09:07 ?7448次閱讀
    嵌入式Linux-<b class='flag-5'>Qt</b>環境搭建 <b class='flag-5'>Qt</b><b class='flag-5'>程序</b><b class='flag-5'>運行</b>測試

    如何運行基于eglfs_kms的QT應用程序

    QT應用直接運行在EGL和OpenGL ES 2.0上。也就是,可以在沒有窗口管理器(windowing system like X11 or Wayland)的情況下,運行
    發表于 01-07 17:13

    weston啟動失敗是為什么?

    Date: 2017-09-30 UTC[23:27:44.450] weston 1.11.0http://wayland.freedesktop.orgBug reports to: https
    發表于 01-06 06:52

    QT運行程序時出現walyland2個錯誤要怎么解決呢

    問題描述及復現步驟:QT運行程序,經常碰到下邊這2個錯誤,不曉得要怎么規避或解決。很難重現,偶然性的。錯誤1:經常是鼠標滾輪造成如下這個錯誤:listener function for opcode
    發表于 11-10 17:28

    imx6移植wayland&weston運行參數失敗請問如何解決這個問題

    :04.004] weston 5.0.90https://wayland.freedesktop.orgBug reports to: https://gitlab.freedesktop.org
    發表于 12-01 07:57

    請問下RK3568J buildroot怎么從wayland切換到eglfs呢

    你好,我這邊不希望使用wayland桌面,只使用eglfs按說明關閉桌面系統/etc/init.d/S50launcher stop然后運行QT系統,/var/quicknanobrowser
    發表于 12-21 15:40

    qt.qpa.wayland:xkbcommon在此構建中不可用,不執行鍵映射如何解決?

    我使用 fsl-wayland 發行版為 IMX8M Quad 構建了 fsl-image-qt5-validation-imx。我在我的 imx8 中運行 QT 應用
    發表于 04-11 07:27

    為什么無法在imx8mm上啟動weston/wayland?

    :57:29 arx2 systemd[1]: Failed to start Weston, a Wayland compositor, as a system service. 嘗試手動運行
    發表于 06-01 07:39

    imx8mmini qt客戶端應用程序weston桌面上運行時,顯示weston桌面背景顏色并立即恢復如何解決?

    中央處理器型號:MIMX8MM6CVTKZAA Linux內核:4.19.35 Qt版本:5.12.3 編譯版本:aarch64-poky-linux-gcc 8.3.0 客戶端應用程序weston桌面上
    發表于 06-05 08:07

    在MPSoC上運行基于eglfs_kms的QT應用程序

    EGLFS可以讓QT應用直接運行在EGL和OpenGL ES 2.0上。也就是,可以在沒有窗口管理器(windowing system like X11 or Wayland)的情況下,運行
    的頭像 發表于 01-14 10:29 ?4216次閱讀

    在MPSoC上運行QT應用程序

    Xilinx為MPSoC支持4種libMali的backend: X11, Wayland/GBM, Fbdev, Headless-EGL。QT支持4種plugin(插件)或者backend,FB,X11,Wayland,eg
    的頭像 發表于 02-08 14:34 ?2797次閱讀

    【工程師分享】在MPSoC上運行基于eglfs_kms的QT應用程序

    Xilinx為MPSoC支持4種libMali的backend: X11, Wayland/GBM, Fbdev, Headless-EGL。QT支持4種plugin(插件)或者backend,FB,X11,Wayland,eg
    發表于 03-08 06:18 ?1次下載
    【工程師分享】在MPSoC上<b class='flag-5'>運行</b>基于eglfs_kms的<b class='flag-5'>QT</b>應用<b class='flag-5'>程序</b>

    QT5多個layoutWidget引起程序運行出錯

    QT5 多個layoutWidget 引起程序運行出錯
    發表于 11-19 09:23 ?876次閱讀

    Qt 6.5添加Wayland原生接口

    因此,對于任何高級用例,Qt 6.5 都可以訪問 Qt 6.5+ 在內部使用的 Wayland 對象。但對于 6.5 工具包版本,它目前是 QNativeInterface 私有命名空間的一部分,因為該接口在對于下一個
    的頭像 發表于 12-14 10:49 ?915次閱讀

    國產自主操作系統內核宣布支持weston

    weston是一套Wayland窗口顯示協議的實現。而目前主流的Linux發行版桌面系統都在使用Wayland的方式做多窗口的顯示合成,例如Ubuntu,Federa等。
    的頭像 發表于 01-05 09:58 ?794次閱讀
    國產自主操作系統內核宣布支持<b class='flag-5'>weston</b>
    主站蜘蛛池模板: 好男人资源免费观看1| 刮伦人妇A极一片| seyeye免费高清观看| 朝鲜女人性猛交| 国产九九九九九九九A片| 国产自啪偷啪视频在线| 九九热在线观看| 免费观看国产视频| 日韩欧美成人免费中文字幕| 四房播播最新地址| 亚洲色t图| 9久久99久久久精品齐齐综合色圆| 擦擦擦在线视频观看| 国产手机在线视频| 久久久大香菇| 人人碰在线视频| 亚洲粉嫩美白在线| 最新无码国产在线视频| 边做边爱BD免费看片| 国产亚洲日韩欧美视频| 久久这里有精品| 色色色久久久免费视频| 野花日本大全免费高清完整版| 99re 这里只有精品| 国产精品2020观看久久| 久艾草在线精品视频在线观看| 欧美久久综合性欧美| 亚洲第一免费播放区| free高跟丝袜秘书hd| 果冻传媒2021一二三区| 欧美精品AV精品一区视频| 香蕉久久日日躁夜夜嗓| 2020国产成人精品视频人| 国产AV天堂一区二区三区| 久久精品在现线观看免费15| 日日a.v拍夜夜添久久免费| 伊人22222| 国产精品第十页| 年轻的女职工在线观看| 亚洲成年人影院| 波多野结衣 无码片|