chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Wayland-Weston運(yùn)行Qt程序

工程師鄧生 ? 來源:嵌入式小生 ? 作者:iriczhao ? 2022-09-27 09:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、開篇

前不久,寫了篇《經(jīng)驗(yàn) | 如何破Qt窗體的“卡頓”》一文,那篇文章中描述的Qt啟動(dòng)方式是基于linuxfb的,在構(gòu)建編譯Qt源碼的時(shí)候,會(huì)自動(dòng)創(chuàng)建與linuxfb相關(guān)的插件。該插件是通過linux的fbdev子系統(tǒng)直接寫入framebuffer去實(shí)現(xiàn)圖形顯示的,它只支持軟件渲染的內(nèi)容。

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

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

【開五個(gè)進(jìn)程的效果,每個(gè)進(jìn)程為一個(gè)窗體】

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

【開六個(gè)窗體的效果】

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

二、Wayland簡(jiǎn)介

Wayland是一個(gè)顯示服務(wù)協(xié)議,用于創(chuàng)建多進(jìn)程系統(tǒng)。使用該協(xié)議,多個(gè)客戶機(jī)應(yīng)用程序(下文簡(jiǎn)稱:客戶端)可以將它們自己的圖形內(nèi)容呈現(xiàn)到屏幕外緩沖區(qū),然后,使用Wayland協(xié)議將這些緩沖區(qū)傳遞給顯示服務(wù)器(通常稱為合成器),最后,合成器將合成內(nèi)容并將其定位在物理顯示器上。

總而言之,可以理解成為多個(gè)應(yīng)用程序的運(yùn)行提供了一種類似于桌面的環(huán)境。

三、單進(jìn)程系統(tǒng)和多進(jìn)程系統(tǒng)

在單進(jìn)程系統(tǒng)中,關(guān)于UI的所有東西運(yùn)行在一個(gè)單一的進(jìn)程中。在多進(jìn)程系統(tǒng)中,所有客戶端則在它們自己的專用進(jìn)程中運(yùn)行。

單進(jìn)程系統(tǒng)是這樣一種場(chǎng)景:在設(shè)備系統(tǒng)上電啟動(dòng)后,直接進(jìn)入我們?cè)O(shè)計(jì)的應(yīng)用程序,而沒有其他的軟件窗體進(jìn)程運(yùn)行,在整個(gè)設(shè)備系統(tǒng)的完整運(yùn)行周期里,這種狀態(tài)將一直維持。如下圖所示:

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

多進(jìn)程系統(tǒng)是這樣一種場(chǎng)景:這個(gè)與桌面環(huán)境類似,支持多個(gè)進(jìn)程的窗體顯示,而且彼此之間不會(huì)受到任何影響。如下圖所示:

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

嵌入式設(shè)備系統(tǒng)中,由于其特殊性,單進(jìn)程系統(tǒng)多進(jìn)程系統(tǒng)都會(huì)涉及到。

四、使用多進(jìn)程系統(tǒng)的優(yōu)點(diǎn)

(4-1)穩(wěn)定性提高了

當(dāng)客戶端掛起或崩潰后更容易恢復(fù)。如果我們?cè)O(shè)計(jì)的軟件UI比較復(fù)雜,這時(shí)候可考慮選擇多進(jìn)程系統(tǒng),因?yàn)槿绻鸘I的一部分崩潰了,它不會(huì)影響整個(gè)系統(tǒng)

多進(jìn)程系統(tǒng)可以防止可能的內(nèi)存泄露。在多進(jìn)程系統(tǒng)中,如果一個(gè)客戶端發(fā)生了內(nèi)存泄漏并消耗了大量?jī)?nèi)存,那么當(dāng)客戶端退出時(shí),該內(nèi)存將被恢復(fù)。與單進(jìn)程相比,內(nèi)存泄漏將會(huì)一直持續(xù)到整個(gè)系統(tǒng)重新啟動(dòng)。

(4-2)安全性提高了

在單進(jìn)程系統(tǒng)中,都可以訪問彼此的內(nèi)存。例如,對(duì)敏感數(shù)據(jù)傳輸是沒有隔離的。在多進(jìn)程系統(tǒng)中,會(huì)進(jìn)行內(nèi)存隔離,從而提高系統(tǒng)的安全性。

(4-3)性能提高了

如果我們硬件板卡上的CPU有多個(gè)核,那么多進(jìn)程系統(tǒng)可以幫我們將負(fù)載均勻地分布到不同的核上,從而更有效地利用CPU,從而提高性能。

(4-4)提高互操作性

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

為什么使用wayland替代X11

X11是上世紀(jì)80年代的桌面協(xié)議,現(xiàn)在已經(jīng)不太適合如今的圖形硬件。且X11很大、很復(fù)雜,缺少可定制性。用X11在不撕裂圖形的情況下達(dá)到60幀/秒運(yùn)行客戶端幾乎很難。相比之下,Wayland則更容易實(shí)現(xiàn),且具有更好的性能,并且可在現(xiàn)代圖形硬件上高效運(yùn)行。對(duì)于linux上的嵌入式多進(jìn)程系統(tǒng),Wayland是一個(gè)標(biāo)準(zhǔn)可靠的選擇。

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

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

(2)必須運(yùn)行Wayland協(xié)議中不存在特性的應(yīng)用程序。

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

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

(1)會(huì)增加顯存消耗

在多進(jìn)程中,每個(gè)客戶端都需要有自己的圖形緩沖區(qū),并將其發(fā)送到合成器。因此,與單進(jìn)程系統(tǒng)相比,將使用更多的顯存:在單進(jìn)程情況下,所有內(nèi)容都是一次性繪制的,不需要將不同的部分存儲(chǔ)在中間緩沖區(qū)中。

(2)會(huì)增加主內(nèi)存消耗

除了操作系統(tǒng)級(jí)的一些額外開銷外,運(yùn)行多個(gè)客戶端還可能使用更多主內(nèi)存,因?yàn)槊總€(gè)客戶端需要重復(fù)一些部件。例如:如果運(yùn)行QML,每個(gè)客戶端都需要一個(gè)單獨(dú)的QML引擎。因此,如果我們運(yùn)行一個(gè)使用Qt Quick Controls的客戶端,它只加載一次。如果將這個(gè)客戶端拆分為多個(gè)客戶端,那么將多次加載Qt Quick Controls,初始化客戶端的啟動(dòng)成本將變得很高。

(3)會(huì)重復(fù)存儲(chǔ)圖形資源

在單進(jìn)程系統(tǒng)中,如果我們?cè)诙鄠€(gè)地方使用相同的紋理、背景或圖標(biāo),這些圖像只會(huì)存儲(chǔ)一次。相反,如果在多進(jìn)程系統(tǒng)中使用這些資源,則必須將它們存儲(chǔ)多次。在這種情況下,一種解決方案是:在客戶端之間共享圖形資源(Qt已經(jīng)允許在不涉及Wayland的情況下跨進(jìn)程共享主存中的映像資源)。

五、Weston

Weston是一個(gè)Wayland 合成器的參考實(shí)現(xiàn)。它開箱即用,提供一個(gè)功能齊全的桌面環(huán)境??捎糜诜亲烂媸褂玫沫h(huán)境,例如:汽車、嵌入式、飛行、工業(yè)、機(jī)頂盒和電視。它還提供了一個(gè)庫允許其他項(xiàng)目在Weston的基礎(chǔ)上構(gòu)建自己的運(yùn)行環(huán)境。

如果我們將Qt運(yùn)行在嵌入式linux平臺(tái)上,且選擇Weston作為了桌面環(huán)境,我們也可以單進(jìn)程的方式運(yùn)行Qt程序:將Weston桌面的狀態(tài)欄取消,且將背景設(shè)置為透明的,然后設(shè)置Qt應(yīng)用程序?yàn)殚_機(jī)自啟動(dòng)。這也是一種比較好的方式解決《經(jīng)驗(yàn) | 如何破Qt窗體的“卡頓”》一文中出現(xiàn)的現(xiàn)象。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 合成器
    +關(guān)注

    關(guān)注

    0

    文章

    314

    瀏覽量

    27704
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11641

    瀏覽量

    218191
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    10117

    瀏覽量

    91037

原文標(biāo)題:Wayland多進(jìn)程顯示

文章出處:【微信號(hào):嵌入式小生,微信公眾號(hào):嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式Linux-Qt環(huán)境搭建 Qt程序運(yùn)行測(cè)試

    本編介紹如何在嵌入式Linux開發(fā)板上配置Qt運(yùn)行環(huán)境,并進(jìn)行Qt程序運(yùn)行測(cè)試。
    的頭像 發(fā)表于 06-01 09:07 ?8881次閱讀
    嵌入式Linux-<b class='flag-5'>Qt</b>環(huán)境搭建 <b class='flag-5'>Qt</b><b class='flag-5'>程序</b><b class='flag-5'>運(yùn)行</b>測(cè)試

    如何運(yùn)行基于eglfs_kms的QT應(yīng)用程序

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

    weston啟動(dòng)失敗是為什么?

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

    QT運(yùn)行程序時(shí)出現(xiàn)walyland2個(gè)錯(cuò)誤要怎么解決呢

    問題描述及復(fù)現(xiàn)步驟:QT運(yùn)行程序,經(jīng)常碰到下邊這2個(gè)錯(cuò)誤,不曉得要怎么規(guī)避或解決。很難重現(xiàn),偶然性的。錯(cuò)誤1:經(jīng)常是鼠標(biāo)滾輪造成如下這個(gè)錯(cuò)誤:listener function for opcode
    發(fā)表于 11-10 17:28

    imx6移植wayland&weston運(yùn)行參數(shù)失敗請(qǐng)問如何解決這個(gè)問題

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

    請(qǐng)問下RK3568J buildroot怎么從wayland切換到eglfs呢

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

    qt.qpa.wayland:xkbcommon在此構(gòu)建中不可用,不執(zhí)行鍵映射如何解決?

    我使用 fsl-wayland 發(fā)行版為 IMX8M Quad 構(gòu)建了 fsl-image-qt5-validation-imx。我在我的 imx8 中運(yùn)行 QT 應(yīng)用
    發(fā)表于 04-11 07:27

    為什么無法在imx8mm上啟動(dòng)weston/wayland?

    :57:29 arx2 systemd[1]: Failed to start Weston, a Wayland compositor, as a system service. 嘗試手動(dòng)運(yùn)行
    發(fā)表于 06-01 07:39

    imx8mmini qt客戶端應(yīng)用程序weston桌面上運(yùn)行時(shí),顯示weston桌面背景顏色并立即恢復(fù)如何解決?

    中央處理器型號(hào):MIMX8MM6CVTKZAA Linux內(nèi)核:4.19.35 Qt版本:5.12.3 編譯版本:aarch64-poky-linux-gcc 8.3.0 客戶端應(yīng)用程序weston桌面上
    發(fā)表于 06-05 08:07

    在MPSoC上運(yùn)行基于eglfs_kms的QT應(yīng)用程序

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

    在MPSoC上運(yùn)行QT應(yīng)用程序

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

    【工程師分享】在MPSoC上運(yùn)行基于eglfs_kms的QT應(yīng)用程序

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

    QT5多個(gè)layoutWidget引起程序運(yùn)行出錯(cuò)

    QT5 多個(gè)layoutWidget 引起程序運(yùn)行出錯(cuò)
    發(fā)表于 11-19 09:23 ?1204次閱讀

    Qt 6.5添加Wayland原生接口

    因此,對(duì)于任何高級(jí)用例,Qt 6.5 都可以訪問 Qt 6.5+ 在內(nèi)部使用的 Wayland 對(duì)象。但對(duì)于 6.5 工具包版本,它目前是 QNativeInterface 私有命名空間的一部分,因?yàn)樵摻涌谠趯?duì)于下一個(gè)
    的頭像 發(fā)表于 12-14 10:49 ?1442次閱讀

    國(guó)產(chǎn)自主操作系統(tǒng)內(nèi)核宣布支持weston

    weston是一套Wayland窗口顯示協(xié)議的實(shí)現(xiàn)。而目前主流的Linux發(fā)行版桌面系統(tǒng)都在使用Wayland的方式做多窗口的顯示合成,例如Ubuntu,F(xiàn)edera等。
    的頭像 發(fā)表于 01-05 09:58 ?2195次閱讀
    國(guó)產(chǎn)自主操作系統(tǒng)內(nèi)核宣布支持<b class='flag-5'>weston</b>