• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Qt/Embedded的圖形硬加速方法研究與實現(xiàn)

      2018-06-20 07:46:08凱,寧鈺,周
      計算機技術(shù)與發(fā)展 2018年6期
      關(guān)鍵詞:矩形嵌入式繪制

      王 凱,寧 鈺,周 威

      (江南計算技術(shù)研究所第三處,江蘇 無錫 214083)

      0 引 言

      嵌入式系統(tǒng)是一種“完全嵌入受控器件內(nèi)部,為特定應(yīng)用而設(shè)計的專用計算機系統(tǒng)”,在電子產(chǎn)品集成度越來越高的今天,廣泛應(yīng)用于工業(yè)生產(chǎn)和生活的各個方面。全球生產(chǎn)的CPU(中央處理器),超過80%應(yīng)用于各類嵌入式系統(tǒng)。隨著嵌入式系統(tǒng)的日益發(fā)展,嵌入式處理器運算能力的不斷增強,越來越多的嵌入式設(shè)備開始采用較為復(fù)雜的GUI系統(tǒng),嵌入式設(shè)備的GUI系統(tǒng)發(fā)展得十分迅速[1]。傳統(tǒng)的嵌入式GUI系統(tǒng),如Microwindows等,由于項目規(guī)模較小,功能較薄弱,缺乏第三方支持等諸多原因,已經(jīng)越來越不能滿足用戶的需要。

      Qt/Embedded是著名的Qt庫開發(fā)商Trolltech公司開發(fā)的面向嵌入式系統(tǒng)的Qt版本。Qt/Embedded與X11版本的Qt接口在最大程度上兼容,大部分基于Qt的X-Window程序移植到Qt/Embedded是非常方便的。Qt/Embedded延續(xù)了在X-Window上的強大功能[2-3]。Qt/Embedded類庫完全采用C++封裝,豐富的控件資源和較好的可移植性是Qt/Embedded最為優(yōu)秀的特點。Qt是完全面向?qū)ο蟮?易擴展,并且允許真正的組件編程。使用X-Window下的開發(fā)工具Qt Creator可以直接開發(fā)基于Qt/Embedded的UI(用戶操作接口)界面。采用Qt/Embedded開發(fā)嵌入式Linux下的應(yīng)用軟件的第三方公司也日益增加。

      文中分析了Qt/Embedded的體系結(jié)構(gòu)和底層支持的方式,闡述了Qt/Embedded圖形事件服務(wù)的源碼和架構(gòu)原理,通過結(jié)合幀緩沖驅(qū)動體系與Qt/Embedded圖形引擎,對在嵌入式系統(tǒng)下如何實現(xiàn)圖形硬件加速進行了詳細(xì)的研究和實現(xiàn)。

      1 Qt/Embedded底層支持分析

      1.1 Qt/Embedded的體系結(jié)構(gòu)

      Qt/Embedded庫是Qt圖形界面庫的嵌入式版本,為了適應(yīng)嵌入式操作系統(tǒng)環(huán)境,做出了許多改動和調(diào)整。它放棄了原本使用的X11也就是X Window體系去構(gòu)建GUI環(huán)境,因此也就不需要使用較大的Xlib庫,所以內(nèi)存占用十分小,能夠適應(yīng)嵌入式開發(fā)的需求。在放棄了X Window體系之后,Qt/Embedded庫底層使用幀緩沖體系作為底層圖形接口,并使用輸入事件作為具體的輸入設(shè)備的抽象[4],比如keyboard和mouse等。在上層,Qt/Embedded庫繼續(xù)使用原本的Qt架構(gòu),從而保證用戶使用的便利性和一致性,并能夠與X Window系統(tǒng)下的程序兼容,使得用戶可以方便地進行程序移植。

      Qt/Embedded圖形引擎的基礎(chǔ)是圖形幀緩沖體系(framebuffer),它是一種采用mmap系統(tǒng)調(diào)用的驅(qū)動接口,正是依靠幀緩沖驅(qū)動,屏幕才能顯示內(nèi)容,幀緩沖驅(qū)動為上層QWS Server提供圖形支持,同時也為下層操作系統(tǒng)提供對圖形事件訪問服務(wù)的接口[5]。

      1.2 Qt/Embedded的圖形引擎架構(gòu)

      Qt/Embedded的GUI系統(tǒng)采用了C/S結(jié)構(gòu),每個獨立的Qt/Embedded程序都允許作為系統(tǒng)中唯一的一個GUI Server存在。在應(yīng)用程序首次以系統(tǒng)GUI Server的方式加載時,將創(chuàng)建QWS Server實體。QWS Server創(chuàng)建底層顯示設(shè)備抽象基類QScreen,其中聲明了對于顯示設(shè)備的基本描述和操作方式,如打開、關(guān)閉、獲得顯示能力、創(chuàng)建GFX操作對象等等[6]。同時,QWS Server調(diào)用QWSServer::openDisplay()函數(shù)創(chuàng)建窗體,在窗體創(chuàng)建過程中調(diào)用QWSServer::Data::Init()進行初始化工作,之后創(chuàng)建Qt/Embedded的圖形引擎中幀緩沖驅(qū)動類QLinuxFbScreen的實體對象,在QLinuxFbScreen對象中獲取設(shè)置QScreen關(guān)鍵指針qt_screen的信息并調(diào)用connect()打開幀緩沖體系中的抽象顯示設(shè)備(dev/fb0)。在QWSServer中所有對顯示設(shè)備的調(diào)用都由qt_screen發(fā)起[7]。

      至此,完成了Qt/Embedded中圖形引擎的創(chuàng)建,并通過Qt/Embedded的圖形引擎中的幀緩沖驅(qū)動類與系統(tǒng)幀緩沖驅(qū)動直接相關(guān)聯(lián),由系統(tǒng)幀緩沖驅(qū)動提供進一步的支持。

      2 幀緩沖驅(qū)動體系結(jié)構(gòu)

      2.1 幀緩沖驅(qū)動顯示原理

      幀緩沖(framebuffer)是Linux系統(tǒng)的顯示設(shè)備驅(qū)動接口,Linux系統(tǒng)通過它屏蔽不同圖形硬件的底層差異性,對顯示緩沖區(qū)進行抽象,實現(xiàn)上層應(yīng)用在圖形模式下直接對顯示緩沖區(qū)進行I/O操作[8]。用戶不需要關(guān)心物理顯示緩沖區(qū)的具體位置及數(shù)據(jù)存放方式,這些都由幀緩沖設(shè)備的驅(qū)動本身來完成。

      在顯示過程中,用戶進程的顯示數(shù)據(jù)將會存放在幀緩沖映射的內(nèi)存中,然后顯示設(shè)備會從幀緩沖映射的內(nèi)存中將數(shù)據(jù)取出,然后顯示到屏幕上。通過系統(tǒng)調(diào)用mmap將顯示設(shè)備物理內(nèi)存抽象為幀緩沖區(qū),使得用戶可以直接訪問。對用戶來說,它即是物理顯存的一個映像,幀緩沖系統(tǒng)將其映射到用戶虛擬進程地址空間[9]。對于用戶而言,幀緩沖區(qū)可以直接讀、寫、映射。這樣用戶程序就可以對這塊內(nèi)存區(qū)域填充任何已經(jīng)定義的像素及顏色,而屏幕也就可以在幀緩沖系統(tǒng)的控制下顯示畫面[10]。

      2.2 Linux幀緩沖驅(qū)動程序的體系結(jié)構(gòu)

      對于Linux系統(tǒng),幀緩沖設(shè)備是標(biāo)準(zhǔn)的字符設(shè)備,采用“文件層—驅(qū)動層”的接口方式,主設(shè)備號為29,從設(shè)備號為0~31[11]。對應(yīng)的設(shè)備文件為/dev/fb*。在linux中,fb設(shè)備驅(qū)動的源碼主要在Fb.h(linuxincludelinux)和Fbmem.c(linuxdriversvideo)兩個文件中,它們是fb設(shè)備驅(qū)動的中間層,為上層提供系統(tǒng)調(diào)用,為底層驅(qū)動提供接口。

      由于Linux將設(shè)備也認(rèn)為是一個文件,F(xiàn)ramebuffer驅(qū)動核心Fbmem.c文件中定義了幀緩沖設(shè)備的文件層接口,該接口即為file_operations結(jié)構(gòu)體,它是提供給用戶空間應(yīng)用程序使用的。在file_operations中,統(tǒng)一實現(xiàn)了字符設(shè)備文件層次上的文件操作接口函數(shù),用戶空間的應(yīng)用程序通過它的接口函數(shù)對幀緩沖設(shè)備進行訪問[12]。在驅(qū)動核心層上方的是Framebuffer特定幀緩沖設(shè)備層,在這一層中實現(xiàn)具體的Framebuffer驅(qū)動接口,例如特定幀緩沖設(shè)備fb_info結(jié)構(gòu)體的注冊函數(shù),fb_ops結(jié)構(gòu)體成員函數(shù)以及使用完畢后的結(jié)構(gòu)體注銷函數(shù)[13]。fb_ops結(jié)構(gòu)體是特定幀緩沖設(shè)備層的核心模塊,它的成員函數(shù)實現(xiàn)了對應(yīng)的幀緩沖驅(qū)動功能,最終直接控制顯示設(shè)備的硬件寄存器[14-15]。

      3 Qt/Embedded GUI環(huán)境下圖形硬件加速實現(xiàn)方法

      3.1 基于Qt/Embedded的嵌入式圖形硬件加速架構(gòu)

      通過對Qt/Embedded底層支持和幀緩沖驅(qū)動體系結(jié)構(gòu)的分析,提出一種基于Qt/Embedded環(huán)境的嵌入式系統(tǒng)GUI圖形加速支持體系結(jié)構(gòu),如圖1所示。

      圖1 基于Qt/Embedded GUI環(huán)境的嵌入式系統(tǒng)

      圖1描述了實現(xiàn)嵌入式系統(tǒng)圖形加速方法的體系結(jié)構(gòu),從上至下可以分為三部分:

      (1)Qt/Embedded GUI支持及實現(xiàn)部分:該部分包含圖中最上方1,2,3層,在該部分中,通過Qt/Embedded嵌入式圖形支持中的QLinuxFbScreen對象,實現(xiàn)了Qt/Embedded庫和幀緩沖體系結(jié)構(gòu)內(nèi)接口的對接,Qt/Embedded庫使用Linux操作系統(tǒng)提供的open,write,read,close等文件系統(tǒng)接口函數(shù),基于幀緩沖驅(qū)動體系對幀緩沖進行操作。

      (2)Framebuffer驅(qū)動核心部分:該部分為圖中第4,5層,實現(xiàn)了VFS虛擬文件系統(tǒng)與幀緩沖驅(qū)動體系間的對接,在這一層實現(xiàn)file_operations結(jié)構(gòu)體成員函數(shù)的內(nèi)部功能,Qt/Embedded應(yīng)用程序通過訪問file_operations結(jié)構(gòu)體統(tǒng)一實現(xiàn)的文件操作函數(shù)對幀緩沖設(shè)備進行讀寫等操作,上層使用的文件系統(tǒng)接口在這里得到具體實現(xiàn)。

      (3)Framebuffer幀緩沖設(shè)備支持部分:該部分為圖中第6層,定義了特定幀緩沖設(shè)備fb_info結(jié)構(gòu)體,它是特定幀緩沖物理設(shè)備的軟件實體和驅(qū)動層接口的核心數(shù)據(jù)結(jié)構(gòu),記錄了關(guān)于幀緩沖設(shè)備屬性、參數(shù)以及操作函數(shù)指針的完整信息。系統(tǒng)中每一個幀緩沖設(shè)備對應(yīng)一個fb_info結(jié)構(gòu)體。在對該部分的具體實現(xiàn)過程中,通過使用硬件GPU的圖形加速功能,優(yōu)化fb_info結(jié)構(gòu)體中對應(yīng)軟件功能接口函數(shù),從而完成Qt/Embedded GUI環(huán)境下的圖形硬件加速。

      3.2 嵌入式Linux下的圖形硬件加速接口設(shè)計

      在嵌入式Linux的GUI圖形硬件加速架構(gòu)下,framebuffer框架最重要的實體就是fb_info,其中涉及驅(qū)動的操作接口fb_ops,這些操作接口是framebuffer框架實現(xiàn)交互的橋梁,也是實現(xiàn)圖形硬件的途徑和接口。

      fb_ops以結(jié)構(gòu)體形式展現(xiàn),內(nèi)部接口函數(shù)數(shù)量繁多,如fb_check_var()檢查可修改的屏幕參數(shù)并調(diào)整到硬件所支持的值,fb_setcolreg()設(shè)置顏色寄存器來實現(xiàn)偽顏色表和顏色表的填充等等。fb_ops結(jié)構(gòu)體的成員函數(shù)最終與顯示適配器和LCD控制器硬件打交道,需要根據(jù)顯示適配器的硬件設(shè)置及LCD顯示屏的硬件參數(shù)進行編寫。

      fb_ops結(jié)構(gòu)體圖形硬件加速成員函數(shù)接口:fb_fillrect()實現(xiàn)屏幕上矩形區(qū)域的顏色填充與繪制,fb_copyarea()實現(xiàn)對屏幕區(qū)域顯示數(shù)據(jù)的復(fù)制與重新繪制,fb_imageblit()實現(xiàn)位圖數(shù)據(jù)的讀取與繪制。這3個接口函數(shù)是實現(xiàn)GUI圖形硬件加速功能的關(guān)鍵函數(shù),它們的函數(shù)聲明代碼如下:

      struct fb_ops {

      ……

      /*繪制矩形*/

      void(*fb_fillrect) (struct fb_info *info, const struct fb_fillrect *rect);

      /*從一個區(qū)域復(fù)制數(shù)據(jù)到另一個區(qū)域*/

      void(*fb_copyarea) (struct fb_info *info, const struct fb_copyarea *region);

      /*繪制一幅位圖到顯示設(shè)備 */

      void(*fb_imageblit) (struct fb_info *info, const struct fb_image *image);

      ……

      }

      通過上述fb_ops圖形硬件加速成員函數(shù)接口,在函數(shù)體中可以使用硬件圖形繪制命令和算法,從而釋放軟件繪制圖形占用的CPU時間,實現(xiàn)圖形繪制的硬件加速。

      Qt/Embedded GUI應(yīng)用程序通過fbmem.c文件的file_operations結(jié)構(gòu)體統(tǒng)一實現(xiàn)文件操作接口對幀緩沖硬件設(shè)備的訪問,特定幀緩沖硬件設(shè)備的軟件抽象與fb_info結(jié)構(gòu)體一一對應(yīng),fb_info結(jié)構(gòu)體的注冊、注銷及其中成員函數(shù)的實現(xiàn)工作由內(nèi)核中對應(yīng)的xxxfb.c文件來完成。指定的fb_ops結(jié)構(gòu)體成員函數(shù)作為驅(qū)動層的核心模塊實現(xiàn)對應(yīng)的圖形硬件加速操作,最終通過圖形硬件控制及加速算法實現(xiàn)圖形繪制工作硬件化。

      3.3 嵌入式Linux下的圖形硬件加速方法實現(xiàn)

      通過前面建立起的嵌入式Linux下的圖形硬件加速架構(gòu)和硬件加速系統(tǒng)的設(shè)計,在實現(xiàn)過程中可以充分利用圖形硬件加速的優(yōu)勢:2D圖形硬件加速沒有大量的循環(huán)操作占用CPU時間,在硬件加速過程中,只有兩個基本的CPU操作—等待和賦值,極大地節(jié)約了CPU時間,從而大大地提高了圖形操作的效率。其中具體的繪圖工作通過DMA(直接內(nèi)存存取)由GPU(圖形處理單元)完成,在使用GPU的過程中,依賴GPU提供的各種功能寄存器對GPU的功能進行控制。等待操作和DMA操作的具體流程如圖2所示。

      圖2 等待操作和DMA操作的流程

      圖2中一共有兩組不同的繪圖操作,每組操作內(nèi)部都是等待DMA命令狀態(tài)和繪圖操作執(zhí)行交替執(zhí)行。在DMA等待過程中,釋放CPU時間片,CPU處于空閑狀態(tài)。控制DMA等待和開始執(zhí)行的寄存器為DMA控制命令寄存器DMA_COMMAND。

      在具體的實現(xiàn)過程中,2D圖形硬件加速包含如下內(nèi)容:矩形填充、位塊傳輸BitBLT、圖像旋轉(zhuǎn)和地址定位、圖像剪切、光柵操作、矩形區(qū)域復(fù)制等。

      現(xiàn)選取較為有代表性的矩形填充、位塊傳輸BitBLT、矩形區(qū)域復(fù)制三個操作進行具體實現(xiàn)。

      3.3.1 矩形填充

      矩形填充,指的是對一個矩形區(qū)域進行像素的填充。矩形填充功能的實現(xiàn),依賴于GPU提供的Fast Solid Color Fill(快速固色填充)功能,通過前文提到的fb_fillrect()接口實現(xiàn)。在fb_fillrect()接口的輸入?yún)?shù)結(jié)構(gòu)體fb_info中,獲得了目標(biāo)圖像的基地址、目標(biāo)圖像顏色以及圖像顏色模式和通道信息。在輸入?yún)?shù)結(jié)構(gòu)體fb_fillrect中,獲得了目標(biāo)圖像的左上角坐標(biāo)和右下角坐標(biāo),確定了圖像的位置,在確定目標(biāo)圖像信息后,將這些信息輸入到快速固色填充功能寄存器中,啟動GPU進行圖像的繪制。矩形填充的邏輯流程見圖3。

      在矩形填充開始前,需等待上一個DMA操作結(jié)束,通過訪問前文提到的DMA控制命令寄存器DMA_COMMAND來獲取當(dāng)前DMA狀態(tài),在DMA可用之后,從結(jié)構(gòu)體fb_info中讀出目標(biāo)圖像基地址,將它寫入地址寄存器DST_BASE_ADDR_REG,然后從fb_info中讀取出目標(biāo)圖像顏色相關(guān)信息,從結(jié)構(gòu)體fb_fillrect中讀出圖像最終顯示位置坐標(biāo),將它們分別寫入每個對應(yīng)的功能寄存器,最后通過使能Fast Solid Color Fill命令寄存器BITBLT_COMMAND_REG啟動GPU的快速固色填充功能,完成圖像矩形填充的繪制工作。

      圖3 矩形填充的邏輯流程

      3.3.2 位塊傳輸BitBLT

      位塊傳輸BitBLT,指的是將源設(shè)備環(huán)境區(qū)域中的像素進行位塊(bit_block)轉(zhuǎn)換,以傳送到目標(biāo)設(shè)備環(huán)境。位塊傳輸功能依賴于GPU中的BitBLT功能,在前文提到的接口fb_imageblit()中實現(xiàn)。在fb_imageblit()的參數(shù)結(jié)構(gòu)體fb_info中,獲取目標(biāo)圖像的基地址和左上角和右下角坐標(biāo),目標(biāo)圖像的前景色和背景色,目標(biāo)圖像的stride值等信息,在參數(shù)結(jié)構(gòu)體fb_image中,獲得了源圖像的左上角和右下角坐標(biāo),源圖像的數(shù)據(jù)指針、顏色模式、通道模式等信息。在獲得所有相關(guān)信息后,使能位塊傳輸?shù)拿罴拇嫫鲉覩PU的位塊傳輸功能。位塊傳輸BitBLT的邏輯流程見圖4。

      圖4 位塊傳輸BitBLT的邏輯流程

      在實現(xiàn)位塊傳輸?shù)倪^程中,需要注意的是GPU硬件中的BitBLT操作分為On-Screen Rendering(在屏渲染)和Off-Screen Rendering(離屏渲染)。on-screen BitBLT操作在屏幕上拷貝一個矩形像素塊到屏幕上的另一個位置,而off-screen BitBLT操作是將像素數(shù)據(jù)從off-screen內(nèi)存放到屏幕內(nèi)存幀緩沖區(qū),當(dāng)SRC_COLOR_MODE_REG值和DST_COLOR_MODE_REG不相同時,該操作會自動進行顏色模式轉(zhuǎn)換。在這里實現(xiàn)的是off-screen位塊傳輸BitBLT操作。

      3.3.3 矩形區(qū)域復(fù)制

      矩形區(qū)域復(fù)制,指的是選擇一個矩形區(qū)域的圖像并把它復(fù)制到另一個矩形區(qū)域顯示。實現(xiàn)該功能由GPU提供的Clipping功能以及GPU的BitBLT功能中的On-Screen Rendering共同完成。GPU的Clipping功能提供一個clipping window,使用這個clipping window確定裁剪的圖像大小及位置,clipping window的大小必須小于屏幕大小。在前文的fb_copyarea()接口中,通過fb_copyarea結(jié)構(gòu)體獲得需要裁剪的區(qū)域位置和大小,并將位置和大小參數(shù)傳到Clipping功能寄存器,然后通過on-screen BitBLT操作將裁剪的圖像繪制到屏幕。繪制的目標(biāo)圖像的信息從參數(shù)結(jié)構(gòu)體fb_info中獲取。矩形區(qū)域復(fù)制的邏輯流程基本與圖4類似,在矩形區(qū)域復(fù)制的過程中,無需進行圖4中的源圖像寄存器相關(guān)操作。

      在矩形區(qū)域復(fù)制的過程中,源圖像的基本信息大部分都由GPU硬件Clipping操作獲得,在實現(xiàn)過程中有3點需要注意:源基地址和目標(biāo)基地址一致;源stride值和目標(biāo)stride值一致;源顏色模式和目標(biāo)顏色模式一致。

      反映在寄存器對應(yīng)關(guān)系上即為:

      SRC_BASE_ADDR_REG = DST_BASE_ADDR_REG

      SRC_STRIDE_REG = DST_STRIDE_REG

      SRC_COLOR_MODE_REG = DST_COLOR_MODE_

      REG

      這也是矩形區(qū)域賦值的前提要求。

      4 圖形硬件加速測試

      4.1 測試平臺與環(huán)境

      文中使用的測試平臺是訊為科技的iTop-4412開發(fā)板,iTop-4412開發(fā)板精英版搭載三星Exynos 4412處理器,配備1 GB DDR3內(nèi)存,4 GB固態(tài)硬盤EMMC存儲。

      三星Exynos 4412處理器搭載4核心Cortex-A9,每個核心的主頻大小為1.6 GHz,內(nèi)部圖形核心為Mail400MP。

      測試平臺的軟件環(huán)境為嵌入式Linux+Qt操作系統(tǒng),Linux內(nèi)核版本為3.0.15,Qt/Embedded庫版本為4.7.1,使用u-boot-1.3.4引導(dǎo)啟動軟件環(huán)境,交叉編譯器為arm-2009q3。

      4.2 測試方法

      測試以最典型的矩形填充功能為例,編寫基于Qt/Embedded庫的Qt GUI測試?yán)獭T谠摾讨?,使用Qt/Embedded庫自帶的矩形繪制功能drawRcet函數(shù)進行矩形填充,通過內(nèi)部計時器計算出Qt/Embedded庫的繪圖時間,同時在該例程中通過ioctl接口調(diào)用前面實現(xiàn)的底層硬件加速功能進行矩形填充,按同樣方式計算出繪圖時間,并將該時間與Qt/Embedded庫的繪制時間進行對比,從而得出測試結(jié)果。

      4.3 測試結(jié)果與分析

      測試1,繪制寬度﹡高度為40﹡30像素的矩形,重復(fù)次數(shù)為10 000,20 000,30 000,40 000,50 000,結(jié)果見圖5。

      圖5 不同繪制次數(shù)下的加速效果對比

      從圖中可以看出,隨著繪制次數(shù)的增加,Qt繪制矩形的時間基本呈線性增長,在使用硬件加速功能后,繪制同樣次數(shù)矩形的時間大大縮短;同樣,隨著繪制次數(shù)的增加,加速后的繪制時間也單調(diào)遞增,但增加的幅度略有波動。對圖中數(shù)據(jù)進行計算后可知,加速比(加速前時間/加速后時間)基本在2.3~2.7之間,實現(xiàn)了圖形繪制硬件加速的效果。

      測試2,繪制50 000次不同像素的矩形,像素寬度*高度分別為40*30,60*45,80*60,100*75,120*90,結(jié)果見圖6。

      圖6 繪制不同像素矩形的加速效果對比

      從圖中可知,隨著繪制矩形像素數(shù)目的增加,無論是Qt繪制,還是硬件加速后繪制,繪制所需的時間都基本是線性增加的,使用Qt繪制時間的增加基本與像素數(shù)目的增加成正比,增量較為平滑,使用硬件加速后的繪制時間的增量略有波動。

      綜合圖5和圖6的數(shù)據(jù)可知,硬件加速后,在矩形填充這個基本圖形操作上,硬件加速獲得了較好的效果,加速比基本維持在2以上,實現(xiàn)了預(yù)期的目的。

      5 結(jié)束語

      通過對Qt/Embedded體系結(jié)構(gòu)和Qt/Embedded圖形引擎架構(gòu)的分析,利用嵌入式Linux下的幀緩沖體系結(jié)構(gòu),提出一種Qt/Embedded GUI環(huán)境下圖形硬件加速實現(xiàn)方法和圖形加速實現(xiàn)架構(gòu)。實現(xiàn)了幀緩沖體系對Qt/Embedded GUI體系的底層硬件支持,依賴于Linux幀緩沖體系的加速接口,使用硬件GPU內(nèi)部加速功能對Qt/Embedded GUI環(huán)境下的基本圖形繪制進行了硬件加速,取得了較好的加速效果。

      參考文獻:

      [1] 蔣 飛.基于嵌入式Linux系統(tǒng)的數(shù)字電視GUI圖形加速設(shè)計[D].北京:北京郵電大學(xué),2010.

      [2] 李升亮,徐劍鋒,李峻林.嵌入式系統(tǒng)中的多窗口GUI系統(tǒng)的研究[J].計算機與數(shù)字工程,2008,36(10):126-128.

      [3] 周 鴻.基于嵌入式系統(tǒng)的智能縫制設(shè)備研究[D].西安:西安電子科技大學(xué),2010.

      [4] 李軍民,祝紅軍.基于ARMlinux平臺的QT/E鍵盤實現(xiàn)[J].微計算機信息,2008,24(26):27-29.

      [5] 周 開,倪 偉.基于Qt/E的嵌入式Linux GUI研究與實現(xiàn)[J].淮陰工學(xué)院學(xué)報,2015,24(3):10-13.

      [6] 嚴(yán)吉國.基于嵌入式Linux的200MHz數(shù)字存儲示波器的設(shè)計與實現(xiàn)[D].南京:東南大學(xué),2009.

      [7] CHEN F,FAN X.Embedded system’s performance analysis with RTC and QT[C]//Proceedings of the 7th international conference on advanced parallel processing technologies.Berlin:Springer-Verlag,2007:569-579.

      [8] 郭小梅.Linux下的幀緩沖設(shè)備驅(qū)動研究與應(yīng)用[J].工業(yè)控制計算機,2012,25(6):3-4.

      [9] YANG L, SANDER P V, LAWRENCE J. Geometry-aware framebuffer level of detail[J].Computer Graphics Forum,2008,27(4):1183-1188.

      [10] MAO C,JOHNSON K M.Fast-switching liquid-crystal-on-silicon microdisplay with framebuffer pixels and surface-mode optically compensated birefringence[J].Optical Engineering,2006,45(12):1269-1278.

      [11] 趙 潔,龔 威.嵌入式Linux幀緩沖設(shè)備驅(qū)動程序[J].計算機系統(tǒng)應(yīng)用,2010,19(12):208-211.

      [12] CHANG C Y,HUANG C H,CHU Y S.Efficient memory access methods for framebuffer-less video processing applications[C]//IEEE international symposium on circuits and systems.[s.l.]:IEEE,2013:3026-3029.

      [13] 宋方偉,劉 勇,聶詩良,等.SM502移動多媒體協(xié)處理器在嵌入式系統(tǒng)中的應(yīng)用[J].兵工自動化,2010,29(2):91-92.

      [14] 蘇哲欣,劉鴻飛,薛 曉.基于嵌入式Linux的LCD驅(qū)動分析與實現(xiàn)[J].工業(yè)控制計算機,2009,22(2):29-30.

      [15] 黃相平,余水寶,夏 燦.基于S3C6410平臺的嵌入式Linux系統(tǒng)LCD驅(qū)動模塊[J].微型機與應(yīng)用,2013,32(13):9-12.

      猜你喜歡
      矩形嵌入式繪制
      Art on coffee cups
      兩矩形上的全偏差
      化歸矩形證直角
      放學(xué)后
      童話世界(2018年17期)2018-07-30 01:52:02
      搭建基于Qt的嵌入式開發(fā)平臺
      從矩形內(nèi)一點說起
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      在轉(zhuǎn)變中繪制新藍圖
      Altera加入嵌入式視覺聯(lián)盟
      倍福 CX8091嵌入式控制器
      自動化博覽(2014年4期)2014-02-28 22:31:15
      普定县| 南城县| 宁都县| 香港 | 杨浦区| 台安县| 右玉县| 宝清县| 江口县| 时尚| 文登市| 黄冈市| 巴彦淖尔市| 乌鲁木齐县| 万荣县| 收藏| 红河县| 新乐市| 轮台县| 观塘区| 临漳县| 郎溪县| 阳西县| 积石山| 丰台区| 延津县| 乐平市| 三门峡市| 鄂温| 江城| 盐池县| 嘉鱼县| 伊川县| 酒泉市| 汉川市| 大关县| 湾仔区| 原阳县| 亳州市| 永福县| 晴隆县|