999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VxWorks圖形應用編程接口庫的設計與實現

2016-07-06 01:44:51謝曉燕崔繼興鄧軍勇
西安郵電大學學報 2016年2期

謝曉燕,崔繼興,鄧軍勇,蔣 林

(1.西安郵電大學 計算機學院,陜西 西安 710121;2.西安郵電大學 電子工程學院,陜西 西安 710121)

基于VxWorks圖形應用編程接口庫的設計與實現

謝曉燕1,崔繼興1,鄧軍勇2,蔣林2

(1.西安郵電大學 計算機學院,陜西 西安 710121;2.西安郵電大學 電子工程學院,陜西 西安 710121)

摘要:針對圖形應用編程接口庫的圖形處理器應用問題,設計一個圖形應用編程接口函數庫。該函數庫基于開放的圖形庫標準OpenGL,采用3層結構設計實現。應用編程接口管理層管理和封裝整個函數庫,函數預處理層完成上下文的建立和函數參數的校驗,命令解析層將函數參數轉換成圖形處理器能夠識別的指令序列,參數轉換完成后調用驅動程序將指令序列傳遞給底層硬件。以VxWorks為軟件平臺,對該函數庫進行測試驗證,結果表明該函數庫可以滿足圖形處理器系統的要求。

關鍵詞:圖形軟件庫;應用編程接口;Open Graphics Library;圖形處理器

新一代圖形處理器[1](GraphicsProcessingUnit,GPU)不僅可以代替中央處理器(CentralProcessingUnit,CPU)實現視頻編解碼、圖形加速等功能, 而且在某些方面計算速度是CPU的數十倍[2]。三維圖形處理應用編程接口[3](ApplicationProgrammingInterface,API)通過將上層函數接口和底層驅動隔離,使得應用程序具有可移植性,是GPU的重要組成部分。

與GPU配套的圖形API庫很多,典型的是多媒體編程接口DirectX,該圖形API庫基于組件對象模型(ComponentObjectModel,COM),由C++編程語言設計實現,被廣泛應用于電子游戲開發[4]。但是DirectX軟件庫可移植性差,用戶只能在Windows平臺上使用[5]。具有移植性較好圖形API庫的Mesa3D軟件庫[6]是由C語言設計實現。該軟件庫是一個與硬件無關的3D圖形模型庫,能夠滿足大多數用戶對于3D圖形開發的需求[7]。但是Mesa3D軟件庫中的大部分API函數并沒有實現硬件加速功能,不能很好發揮GPU的性能。因此,需要一套功能較全并且能夠充分發揮GPU硬件加速功能的圖形API軟件庫。

OpenGL[8](OpenGraphicsLibrary)定義了一個跨編程語言、跨平臺的專業圖形程序接口標準。從本質上說它是一個3D圖形和模型庫,具有高度的可移植性,并且具有非常快的渲染速度[9]。本文基于OpenGL標準及Mesa3D開源軟件庫,在VxWorks平臺[10]設計一種面向GPU硬件的圖形API軟件庫。通過API管理層、函數預處理層和命令解析層三層結構設計來實現圖形API軟件庫。

1圖形API庫的系統架構

圖形API庫由API管理層、函數預處理層和命令解析層三層結構管理組成,結構如圖1所示。其中最頂層是API管理層,用于管理和封裝整個API庫,能夠對應用程序的語法錯誤進行簡單的處理,同時方便圖形API庫版本的管理;中間層是函數預處理層,用于完成上下文的建立、函數參數的錯誤檢測和處理,以及API管理層和命令預處理層的連接,提高OpenGL庫的穩定性;最底層是命令解析層,該層是整個軟件庫的核心部分,主要完成將函數參數轉換為GPU可識別的指令序列,從而實現硬件加速功能,并且接收硬件反饋的數據完成軟硬件的數據交互。

圖1 圖形API庫結構

2圖形API庫的設計與實現

2.1API管理層的設計與實現

API管理層采用函數分發表的思想設計實現,Fun_Dispatch是由函數指針組成的函數分發表,Current_Dispatch是指向當前函數分發表的指針。

當用戶調用圖形API庫中的函數時,先通過宏定義找到當前函數分發表的指針Current_Dispatch,再通過當前函數分發表指針找到該函數的函數體,最后圖形處理器執行該函數的函數體完成用戶分配的任務。如果用戶輸入的函數參數和圖形API庫中的函數參數不匹配,則程序執行過程將會跳過該API函數并且將錯誤反饋給用戶,從而提高圖形API庫的穩定性。

2.2函數預處理層的設計與實現

函數預處理層采用上下文機制管理圖形API庫的狀態信息,其中Context是一個結構體即圖形API庫中的上下文,該結構體包含函數分發表、驅動函數表、矩陣參數、顯示列表狀態、各緩沖區屬性、光照屬性、錯誤標志等狀態信息。上述狀態信息將在圖形API庫預處理過程中完成初始化,并且當用戶調用狀態信息查詢命令時,會返回當前的狀態值。函數預處理層的工作流程如圖2所示。

圖2 預處理層流程

2.3命令解析層的設計與實現

命令解析層負責將API函數轉換成特定格式的命令標識符,以供GPU底層硬件識別和處理。圖形API庫的指令集是由160位的二進制數組成,從高到低分別是命令碼(159~ 138位)、控制字(137~128位)、參數3(127~96位)、參數2(95~64位)、參數1(63~32位)、參數0(31~0位)。

命令碼用于識別不同的API命令,控制字用來指定函數參數的數據格式和個數,參數3到0用來傳遞函數參數。例如,將函數glVertex(x,y,z,w)轉換成160位的命令標識符,具體轉換過程如下。

(1)通過查找命令碼表,可得函數glVertex命令碼為000001010110。

(2)通過查找控制字表,可得函數glVertex的控制字為0100000011。

(3)將函數參數x、y、z、w分別轉換為32位二進制數,分別作為參數3、參數2、參數1、參數0。所有的圖形API函數采用類似的方法進行編譯。

命令解析層的處理流程如圖3所示。

圖3 命令解析層流程

3軟硬件數據交互的設計與實現

基于嵌入式操作系統Vxworks設計圖形API庫,在采用3層結構設計軟件庫的過程中,由于軟硬件存儲命令的方式不同,需要進行適當的轉換。具體過程如下。

(1)將每一條指令分為5部分,每部分由32位二進制數組成。

(2)將每部分分別轉換為無符號十進制數,一共5個十進制數。

(3)將上述5個十進制數進行大小端轉換。

(4)將轉換完成的數據存入命令存儲區。

當命令存儲區中的命令條數超過限定值或者用戶調用刷新內存命令時,函數庫將命令存儲區的起始地址和命令條數分別寫入GPU內部命令處理器的基址寄存器和命令條數寄存器中。GPU會根據這兩個寄存器的值從相應的地址讀取命令,完成硬件從軟件獲取數據的操作。

為了提高驅動程序的安全性和并行性,圖像API庫在內存中設置兩塊命令存儲區:緩存區0和緩存區1,用來存放解析好的命令。當GPU從緩存區0讀取命令時,經過解析的命令可以存放在緩存區1中;當GPU從緩存區1讀取命令時,可以將解析的命令存放在緩存區0中。交替使用兩個緩存區來實現解析命令與GPU讀取命令的并行操作。

4系統測試

為驗證API函數庫的正確性,編寫4 246個測試程序在圖形處理原型系統[11]中對其進行測試,并與在Windows及Mesa3D中的運行結果比較。

圖4所示為兩個典型程序分別在圖形API庫、Windows及Mesa3D平臺上的繪制結果,其中圖4(a)為Windows的繪制結果,圖4(b)為Mesa3D的繪制結果,圖4(c)圖形API庫的繪制結果。

(a) Windows的測試結果

(b) Mesa3D的測試結果

(c) 圖形API庫的測試結果

經過使用4 246個測試程序對圖形API庫進行驗證測試,并且將運行結果同Windows及Mesa3D的運行結果比較,結果表明圖形API庫可以實現OpenGL核心函數庫的全部功能,而且繪圖質量可以滿足普通GPU系統的要求。

5結語

基于OpenGL標準及Mesa3D開源軟件庫,設計管理和封裝整個函數庫的API管理層;建立上下文和校驗函數參數的函數預處理層;將函數參數轉換成GPU可識別的指令序列的命令預處理層3個層次的圖形API庫,通過驅動程序將指令序列傳遞給底層硬件。使用4 246個OpenGL測試程序對開發的圖形API庫進行測試和驗證,并與Windows及Mesa3D的運行結果比較,結果表明圖形API軟件庫可實現OpenGL核心函數庫的全部功能,且繪圖質量滿足三維圖形開發要求。

參考文獻

[1]闕恒.嵌入式圖形處理器的設計[D].南京:南京航空航天大學,2007:2.

[2]韓俊剛,劉有耀,張 曉. 圖形處理器的歷史現狀和發展趨勢[J]. 西安郵電學院學報,2011,16(3)61-64.

[3]劉暉,田澤,黎小玉,等. 3D圖形處理器API符合性驗證方法關鍵技術研究[J]. 計算機技術與發展,2014,24(10):193-196.DOI:10.3969/j.issn.1673-629X.2014.10.047.

[4]任義. 基于DirectX的 3D圖形引擎的設計和實現[D].南京:南京航空航天大學,2008:9.

[5]周思遠.3D圖形引擎的研究與實現[D].北京:北京郵電大學,2010:7.

[6]Themesa3dgraphicslibrary[EB/OL].[2015-11-25].http://www.mesa3d.org.

[7]馬棟,韓俊剛.VxWorks的三維圖形環境的開發[J]. 計算機技術與發展,2014,24(9):187-190.DOI:10.3969/j.issn.1673-629X.2014.09.043.

[8]SHREINERD.OpenGL編程指南[M].7版,李軍,徐波譯.北京:機械工業出版社,2010:1-18.

[9]LIULF,LIUML,WANGCJ.AnOptimizedGP-GPUWarpSchedulingAlgorithmforSparseMatrix-VectorMultiplication[C]//2013IEEEEighthInternationalConferenceonNetworking,ArchitectureandStorage(NAS).Xi’an:IEEE,2013:222-231.DOI:10.1109/NAS.2013.35.

[10]翁羽翔.基于嵌入式VxWorks系統的應用研究 [D].上海:同濟大學,2007:6.

[11]馬城城,田 澤,黎小玉. 基于GPUFPGA芯片原型的VxWorks下驅動軟件開發[J].計算機技術與發展,2013,23(7):84-86.DOI:10.3969/j.issn.1673-629X.2013.07.021

[責任編輯:祝劍]

DesignandimplementationofgraphicsapplicationprogramminginterfacelibrarybasedonVxWorks

XIEXiaoyan1,CUIJixing1,DENGJunyong2,JIANGLin2

(1.SchoolofComputerScienceandTechnology,Xi’anUniversityofPostsandTelecommunications,Xi’an710121,China;2.SchoolofElectronicEngineering,Xi’anUniversityofPostsandTelecommunications,Xi’an710121,China)

Abstract:To accommodate the application of graphics processing unit, a graphics application programming interface library is designed. The library follows the open graphics library standards OpenGL and is implemented with three-layer architecture. The management layer provides an interface to whole function library. The function pre-process layer is used to set up contexts and verify parameters. The command resolution layer is used to translate parameters to instruction sequences which can be recognized by graphics processing unit. After the completion of the parameter conversion, the instruction sequences can then be delivered to underlying hardware by drivers. This graphics application programming interface library is tested and verified in graphics processing unit prototype system based on VxWorks platform. The results show that the designed graphics library can meet the common requirements of graphics processing system.

Keywords:graphics software library, application programming interface, ppen graphics library(OpenGL), graphics processing unit

doi:10.13682/j.issn.2095-6533.2016.02.019

收稿日期:2015-10-16

基金項目:國家自然科學基金資助項目(61272120);陜西省自然科學基金資助項目(2015JM6326);西安郵電大學研究生創新基金資助項目(CXL2014-20)

作者簡介:謝曉燕(1972-),女,碩士,教授,從事視頻編解碼算法研究。E-mail: 35731599@qq.com 崔繼興(1989-),男,碩士研究生,研究方向為服務計算及其應用關鍵技術。E-mail:841040934@qq.com

中圖分類號:TP399

文獻標識碼:A

文章編號:2095-6533(2016)02-0098-04

主站蜘蛛池模板: 伊人天堂网| 亚洲综合一区国产精品| 97国产在线播放| 免费在线成人网| 欧美中出一区二区| 亚洲性日韩精品一区二区| 99中文字幕亚洲一区二区| 在线播放真实国产乱子伦| 2024av在线无码中文最新| 麻豆国产原创视频在线播放 | 亚洲天堂色色人体| 国产91色| 福利小视频在线播放| 精品一区二区三区水蜜桃| 国产 在线视频无码| 国产精品无码AⅤ在线观看播放| 亚洲精品在线91| 精品欧美一区二区三区在线| 人人91人人澡人人妻人人爽| 久久福利片| 日韩高清成人| 深爱婷婷激情网| 亚洲人成网站日本片| 中文天堂在线视频| 亚洲不卡网| 日韩欧美国产三级| 91麻豆精品国产91久久久久| 久久黄色毛片| 成人av手机在线观看| 在线观看欧美国产| 色噜噜狠狠狠综合曰曰曰| 亚洲综合极品香蕉久久网| 亚洲AV无码久久天堂| 亚洲天堂在线视频| 狠狠躁天天躁夜夜躁婷婷| 任我操在线视频| 成人免费午间影院在线观看| 亚洲一级毛片在线观播放| av性天堂网| 国产交换配偶在线视频| 天天摸天天操免费播放小视频| 国产菊爆视频在线观看| 黄色成年视频| 国产伦精品一区二区三区视频优播 | 3p叠罗汉国产精品久久| 一本大道无码高清| 国产成人禁片在线观看| 丁香婷婷久久| 亚洲成av人无码综合在线观看| 亚洲精品在线观看91| 亚洲第一视频网站| 玖玖精品视频在线观看| 美女被操黄色视频网站| 久久久精品久久久久三级| 狠狠色成人综合首页| 在线综合亚洲欧美网站| 久久精品无码一区二区日韩免费| 97国产在线视频| 欧美亚洲网| 一区二区三区四区日韩| 欧美自慰一级看片免费| 亚洲天堂免费| 精品久久高清| 亚洲成在人线av品善网好看| 婷婷色中文| 免费一看一级毛片| 日韩欧美中文在线| 亚洲AV无码久久天堂| a色毛片免费视频| 国产色伊人| 日本精品视频| 亚洲人成网址| 国产成年女人特黄特色毛片免| 漂亮人妻被中出中文字幕久久| 亚洲成人网在线观看| 亚洲视频a| 亚洲欧美日韩视频一区| 中文字幕无线码一区| 国产成年女人特黄特色毛片免 | 亚洲国产一成久久精品国产成人综合| 国产白丝av| 国产尤物在线播放|