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

圖形處理顯示列表的設計與實現

2016-02-24 10:41:13馬城城薛凌藝
計算機技術與發展 2016年4期
關鍵詞:功能

劉 暉,田 澤,馬城城,張 駿,薛凌藝

(1.中國航空工業西安航空計算技術研究所,陜西 西安 710068;22.集成電路與微系統設計航空科技重點試驗室,陜西 西安 710068;3.西安翔騰微電子科技有限公司,陜西 西安 710068)

圖形處理顯示列表的設計與實現

劉 暉1,2,田 澤1,2,馬城城1,2,張 駿1,2,薛凌藝3

(1.中國航空工業西安航空計算技術研究所,陜西 西安 710068;22.集成電路與微系統設計航空科技重點試驗室,陜西 西安 710068;3.西安翔騰微電子科技有限公司,陜西 西安 710068)

顯示列表功能是圖形處理器3D處理引擎的核心功能,通過將一段圖形繪制指令存儲到圖形處理器內部,來完成復雜場景下同一物體的重復繪制。該功能極大地減少了主機與圖形處理器之間的數據吞吐量,降低數據帶寬的壓力、高效地繪制復雜場景。文中基于Xilinx XC7VX1140T構建FPGA原型系統,參考ALT-M9芯片的實現能力,提出了一種軟硬件協同方式的顯示列表設計實現方法。該方法充分利用了CPU與GPU的處理能力,靈活實現了圖形處理命令在不同實現方式下顯示列表的設計與實現。驗證結果表明,軟硬件協同方式實現的顯示列表性能優越,空間分配管理靈活,可靠性高。

圖形處理器;OpenGL;顯示列表;空間管理

0 引 言

顯示列表功能廣泛應用于物體重復繪制、物體運動軌跡描述、儀表盤繪制等復雜場景繪制中,是一種簡單、高效的使用方式,極大地降低了CPU與GPU之間的帶寬壓力,提高了編程的效率與靈活性[1]。顯示列表已成為圖形處理器應用的一個新方向。

顯示列表分為編譯模式和編譯執行模式。在編譯模式下,圖形繪制指令僅存儲到圖形處理器內部;在編譯執行模式下,圖形繪制指令存儲到圖形處理器內部的同時發送給3D處理單元進行執行。傳統的硬件實現方式靈活性較差[2],浪費了主機處理器的性能,限制了圖形處理命令的實現方式。文中提出了一種軟硬件協同的實現方式,其適用范圍不局限于圖形處理語言和圖形處理命令的實現方式[3]。

1 顯示列表原理

在圖形處理器的應用中顯示列表用于多次繪制同一場景或物體,其原理如圖1所示。

圖1 顯示列表原理

當圖形處理器收到除顯示列表外的圖形繪制應用程序時,直接將圖形處理命令發送到3D功能執行單元進行處理。當圖形處理器收到定義顯示列表命令,并且當前定義的顯示列表為僅編譯模式時,圖形處理命令發送到顯示列表存儲單元,當前顯示列表中包括的圖形繪制命令僅做存儲,對當前的圖形繪制沒有影響。當圖形處理器收到定義顯示列表命令,并且當前定義的顯示列表為編譯執行模式時,圖形處理命令會同時發送給顯示列表存儲單元進行存儲和3D功能執行單元進行命令執行。當圖形處理器收到調用顯示列表命令時,圖形處理器從顯示列表存儲單元獲取對應的顯示列表命令,并將其發送到3D功能單元執行。當圖形處理器收到刪除顯示列表命令時,圖形處理器釋放對應顯示列表的存儲空間。

1.1 傳統的顯示列表實現方式

傳統的顯示列表實現方式中,每一條圖形處理指令都在對應的功能單元執行。這樣的實現方式方便了顯示列表的存儲、調用,但卻在很大程度上增加了圖形處理器的硬件資源開銷,增大了芯片的整體功耗[4],而且浪費了主機處理器的處理性能。

例如曲線曲面功能,需要根據用戶規定的控制點信息,通過Bernstein多項式計算出繪制點信息,并按照點的處理方式進行剪裁、消隱、歸一化等處理并最終繪制出來。若采用硬件方式實現,需要實現階乘等超越函數,對硬件資源的開銷較大,浪費了主機處理器的處理性能[5]。

1.2 軟硬件協同方式

HKM9000圖形處理器是中航工業計算所自主研發的一款功能性能與ALT-M9相當的圖形處理器。文中以HKM9000圖形處理器為設計載體,設計方法的應用不局限于某款圖形處理器。

在HKM9000圖形處理器設計中,將圖形處理命令進行分類,曲線曲面功能、頂點數組功能及查詢類相關功能由主機軟件實現;其他功能由硬件電路實現,因此需要將顯示列表命令分為軟件記錄和硬件記錄。軟件記錄占用主處理器的空間,可由用戶分配,硬件記錄占用圖形處理器內的存儲空間,由顯示存儲單元分配空間。這種設計方式極大地提高了圖形指令設計的靈活性。

2 基于HKM9000圖形處理器的顯示列表設計與實現

2.1 顯示列表數據管理

顯示列表存儲數據包括硬件數據節點和軟件數據節點。軟件數據節點需要進行軟件空閑節點池管理,記錄軟件節點函數、函數參數及后續節點號;硬件數據節點需要進行硬件空閑節點池管理,記錄硬件節點地址和數據量及后續節點號。

對軟件記錄進行數據管理如下所示:

typedef struct

{/*指向軟件實現函數的函數指針*/

GLVoid (*Func_Pointer)(Glvoid);

/*函數指針映射表的項數*/

GLin Func_Pointer_num;

/*記錄指向函數的參數*/

GLFloat Params[SW_API_PAMS_NUM];

/*指向當前軟件記錄節點的下一個節點*/

GLushort Next;

}ST_SW_NODE;

typedef struct

{/*記錄顯示列表中空閑軟件節點個數*/

Glushort SW_Idle_Cnt;

/*記錄顯示列表中空閑軟件節點頭*/

Glushort SW_Idle_Head;

/*記錄顯示列表中空閑軟件節點尾*/

Glushort SW_Idle_Tail;

/*記錄軟件實現的API在顯示列表中的信息*/

ST_SW_NODE SW_Node[SW_API_SIZE];

}ST_SW_NODE_INFO;

對硬件記錄進行數據管理如下所示:

typedef struct

{/*保存顯示列表號*/

GLuint NewList_Num;

/*保存對應的首節點號*/

Glushort Node_Num;

/*顯示列表是否可用*/

GLboolean NewList_Enable;

}ST_NEWLIST_NODE;

typedef struct

{/*當前節點中存儲的API個數*/

GLubyte Size;

/*指向當前節點的下一節點*/

GLushort Next;

}ST_CALLLIST_NODE;

2.2 顯示列表資源

經測試,ALT-M9內部能存放約200萬條OpenGL命令,所以在HKM9000圖形處理器內部分配50 MB的存儲空間,最多能夠存儲1 638 400條圖形處理指令,其處理能力與ALT-M9相當。

顯示列表可供支配的資源如圖2所示,包括51 201個可被記錄的顯示列表NewList節點、51 200個硬件記錄的頁,及2 000個軟件記錄的函數節點。

2.2.1 NewList節點

當定義顯示列表時,首先判斷當前的顯示列表號在NewList節點中是否已被占用:若已被占用但節點號不相同,則當前顯示列表定義不成功;若已被占用且節點號相同則需要先刪除之前的顯示列表釋放占用空間,再記錄當前定義的顯示列表;若節點號未被占用,則當前顯示列表可定義。

圖2 顯示列表資源

2.2.2 硬件空閑頁節點

為了方便存儲空間尋址和內存管理,采用頁式管理的方法,將50 MB的GPU存儲空間劃分為50K個1 kB大小的頁,每一頁最多可存儲32條圖形指令,且每一頁只能對應唯一的顯示列表。當多個節點對應一個顯示列表時,各節點按照定義順序依次組成節點鏈[6]。

硬件空閑節點池由頭尾指針維護,顯示列表定義時從頭指針處獲取硬件空閑節點,顯示列表刪除時從尾指針處添加已釋放的空閑節點[7]。

2.2.3 軟件空閑節點

軟件空閑節點的使用及管理方式與硬件空閑頁節點類似,用來記錄軟件方式實現的顯示列表函數,軟件節點占用主處理器的存儲空間可在使用時靈活調整。

2.3 顯示列表設計與實現

顯示列表各接口按照實現功能分為軟件實現和軟硬件協同實現。

2.3.1 glGenLists函數

GLuint glGenLists(GLsizei range)圖形命令由軟件實現,返回在0到最大整數之間range個連續的數,作為可用現實列表號的選擇。

2.3.2 glNewList/glEndList函數

void glNewList(GLuint list,GLenum mode)/ void glEndList(void)圖形指令由硬件實現,它們指定了當前要聲明的顯示列表及顯示列表內包含的圖形指令。首先在NewList節點中查找下標為list的節點中存儲的顯示列表號,若與當前定義的顯示列表號相同,則刪除之前定義的顯示列表并釋放其占用的空間節點,否則當前NewList節點被占用,顯示列表定義失敗。

顯示列表空間按照頁式管理,每個顯示列表所占用的空間可在NewList節點號對應的后續節點中查找。為方便顯示列表的數據調用與地址查找[8],更新圖形指令接口如下:void glNewList(GLuint addr,GLenum mode,GLuint size)。其中,addr表示當前使用的節點號,mode表示當前顯示列表類型,size表示當前節點號中包括的命令條數。顯示列表按照API的實現方式來分配當前的顯示列表空間。

2.3.3 glListBase函數

void glListBase(GLuint base)由軟件實現,它將顯示列表索引數組按照指定的偏移進行排序,并最終由顯示列表調用。

2.3.4 glCallList/glCallLists函數

void glCallList(GLuint list)/void glCallLists(GLsizei n,GLenum type,const GLvoid * lists)用于調用顯示列表,glCallList函數功能由硬件實現,根據調用的顯示列表號來查找NewList節點中對應的節點數據。若與調用的顯示列表號相等,查找后續鏈接的節點并依次調用,調用的函數接口更新為:void glCallList(GLuint addr,GLuint size),更方便于數據調用與地址查找。glCallLists封裝glCallList實現[9],依次按照顯示列表索引數組獲得當前調用號并查找NewList節點計算。

2.3.5 glDeleteLists函數

void glDeleteLists(GLuint list,GLsizei range)功能是刪除已定義的顯示列表。它由軟件實現,先查找顯示列表索引判斷當前的顯示列表是否存在,對于存在的顯示列表,釋放鏈接節點的地址空間,并在軟/硬件空閑節點池中存儲,以備后續調用。

2.3.6 glIsList函數

GLboolean glIsList(GLuint list)功能是查詢當前號是否為一個顯示列表號。它由軟件實現,通過遍歷NewList節點查找是否有對應的號,若有則當前號是一個顯示列表號,否則不是。

3 顯示列表測試

為評估以上設計中顯示列表的功能及性能,搭建HKM9000 FPGA驗證平臺與ALT-M9圖形處理器進行對比實驗。

HKM9000 FPGA原型測試平臺如圖3所示。

圖3 HKM9000 FPGA驗證平臺

將經過編譯、綜合后生成的邏輯bin文件加載到FPGA原型系統中[10],主機端運行圖形繪制軟件,圖形處理驅動程序將上層的圖形應用程序翻譯為硬件可識別的命令碼流,通過PCI總線將命令碼流傳輸給HKM9000原型系統,并在其上執行功能,最終的結果由顯控單元輸出到顯示器上[11]。

軟硬件測試環境如表1所示。

表1 軟硬件測試環境

3.1 功能測試

功能測試結果如圖4所示。

圖4 顯示列表功能測試效果圖

在HKM9000 FPGA平臺上測試了顯示列表的定義、調用、查詢及刪除操作,其繪圖結果與返回值與ALT-M9平臺一致,基本功能實現正確。

3.2 性能測試

性能測試結果如圖5所示。

圖5 顯示列表接口性能測試

測試結果為100萬次調用的平均運行時間。從結果可以看出,HKM9000圖形處理器上顯示列表接口的處理性能與ALT-M9平臺下的性能基本相當,其中某些接口的處理性能還要優于ALT-M9平臺[12]。

4 結束語

文中介紹了圖形處理器中的顯示列表功能,在分析ALT-M9芯片功能性能的基礎上,提出了一種軟硬件結合方式來實現顯示列表功能的方法[13]。該方法充分利用了圖形處理的顯示列表空間,靈活地適用于多種圖形處理接口實現方式[14],具有可靠性高、編程靈活、易于實現、易于維護、成本低廉等優點。

[1] 譚顯強.基于FPGA的3D圖形處理器IP核的設計與實現[D].南京:南京航空航天大學,2010.

[2] Sefraoui O,Aissaoui M,Eleuldj M.Openstack:toward an open-source solution for cloud computing[J].International Journal of Computer Applications,2012,55(3):38-42.

[3] Nvidia.Dedicated GPU technology for virtual desktops[EB/OL].[2013-11-05].http://www.nvidia.com/object/dedicated-gpus.html.

[4] Lindholm E,Nickolls J,Oberman S,et al.Nvidia tesla:a unified graphics and computing architecture[J].IEEE Micro,2008,28(2):39-55.

[5] Brodtkorb A R,Hagen T R,Stra M L.Graphics Processing Unit (GPU) programming strategies and trends in GPU computing[J].Journal of Parallel and Distributed Computing,2013,73(1):4-13.

[6] 邱 航,陳雷霆.基于點的計算機圖形學研究與進展[J].計算機科學,2009,36(6):10-15.

[7] Shreiner D.OpenGL編程指南[M].第6版.北京:機械工業出版社,2009.

[8] Shreiner D,Woo M,Neider J,et al.OpenGL編程指南[M].李 軍,徐 波,譯.第7版.北京:機械工業出版社,2010:77-79.

[9] James F,Andriesvan D,Steven K,et al.計算機圖形學導論[M].董士海,唐澤圣,李 華,等,譯.北京:機械工業出版社,2004.

[10] 武 丹,許如星.淺析《計算機圖形學》中線裁剪算法的講授方法[J].科技創新導報,2009(30):182-182.

[11] 韓俊剛,蔣 林,杜慧敏,等.一種圖形加速器和著色器的體系結構[J].計算機輔助設計與圖形學學報,2010,22(3):363-372.

[12] 楊 毅.面向移動設備的真實感圖形處理系統設計與實現[D].合肥:中國科技大學,2008.

[13] 劉 鑫,蔣 林.2D圖形加速器設計與實現[J].微電子學與計算機,2013,30(6):75-79.

[14] 盧 俊,顏 哲,田 澤.一種高效GPU存儲系統體系架構設計[J].計算機技術與發展,2015,25(4):6-9.

Design and Realization of Display List Function in Graph Process

LIU Hui1,2,TIAN Ze1,2,MA Cheng-cheng1,2,ZHANG Jun1,2,XUE Ling-yi3

(1.Aeronautical Computing Technique Research Institute,Xi’an 710068,China; 2.Key Lab of Aeronautics Science and Technology of Integrate Circuit and Micro-system Design, Xi’an 710068,China; 3.Xiangteng Micro-electronics Technology Co.,Ltd.,Xi’an 710068,China)

Display list is the core function of 3D process engine in GPU,through storing a number of graph commands to GPU to complete repeat drawing for the same object in complex scene.It reduces the amount of data between CPU and GPU in a large degree,and lows pressure of data bandwidth and draws complex scene efficiently.Based on FPGA system built by Xilinx XC7VX1140T,taking a consideration in the capability of ALT-M9 chip,a method of collaborating hardware and software in display list design and realization is proposed.This method makes full use of the ability with CPU and GPU to complie the display list flexibly based on different way in graph commands realization.Verification results show that performance of collaborating hardware and software in display list is superior,with flexible the space allocation management and high reliability.

GPU;OpenGL;display list;memory management

2015-06-16

2015-09-22

時間:2016-03-22

中國航空工業集團創新基金(2010BD63111)

劉 暉(1986-),男,碩士,研究方向為SoC設計與驗證;田 澤,研究員,研究方向為SoC設計、嵌入式系統設計、VLSI設計。

http://www.cnki.net/kcms/detail/61.1450.TP.20160322.1517.012.html

TP39

A

1673-629X(2016)04-0119-04

10.3969/j.issn.1673-629X.2016.04.026

猜你喜歡
功能
拆解復雜功能
鐘表(2023年5期)2023-10-27 04:20:44
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
基層弄虛作假的“新功能取向”
當代陜西(2021年21期)2022-01-19 02:00:26
深刻理解功能關系
鉗把功能創新實踐應用
關于非首都功能疏解的幾點思考
基于PMC窗口功能實現設備同步刷刀功能
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 精品成人一区二区三区电影| 久久精品国产精品一区二区| 日韩精品成人网页视频在线| 青青国产在线| 91视频精品| 亚洲最猛黑人xxxx黑人猛交| 亚洲视频在线青青| 国产成人永久免费视频| 欧美日韩中文字幕在线| 美臀人妻中出中文字幕在线| 久久精品人妻中文视频| 亚洲va视频| 国产主播福利在线观看| 91区国产福利在线观看午夜| 91精品国产一区| 日本尹人综合香蕉在线观看| 国产精品白浆无码流出在线看| 亚洲国产中文综合专区在| 国产视频一二三区| 久久www视频| 亚洲视频欧美不卡| 欧美va亚洲va香蕉在线| 在线国产三级| 草草影院国产第一页| 国产精品白浆在线播放| 91青青在线视频| 亚洲天堂视频在线观看免费| 欧亚日韩Av| av大片在线无码免费| 91美女在线| 女人18毛片一级毛片在线 | 国产97视频在线观看| 高清免费毛片| 2021国产精品自产拍在线| 亚洲热线99精品视频| 日韩亚洲综合在线| 久久伊伊香蕉综合精品| 欧美三级自拍| 亚洲AV无码久久精品色欲| 伊人久久精品无码麻豆精品 | 凹凸国产分类在线观看| 人妻一本久道久久综合久久鬼色| 国产va在线观看免费| 亚洲一区无码在线| 国产中文在线亚洲精品官网| 国产欧美日韩另类精彩视频| 色悠久久久| 一级福利视频| 欧亚日韩Av| 国产99久久亚洲综合精品西瓜tv| 亚洲一级无毛片无码在线免费视频 | 人妻一区二区三区无码精品一区| 亚洲一区二区成人| 国产麻豆va精品视频| 亚洲人成网站色7777| 热热久久狠狠偷偷色男同| 好吊妞欧美视频免费| 色老二精品视频在线观看| 青草娱乐极品免费视频| www.亚洲色图.com| 国产青榴视频在线观看网站| 在线观看亚洲天堂| 日韩高清欧美| 国产资源免费观看| 国产高清在线观看91精品| 欧美三级自拍| 女高中生自慰污污网站| 91无码网站| 欧美v在线| 爱色欧美亚洲综合图区| 色综合热无码热国产| 久久人体视频| 欧美日韩精品综合在线一区| 色综合热无码热国产| 国产精品免费露脸视频| 91无码人妻精品一区| 欧美亚洲欧美| 婷婷色丁香综合激情| 国产无码性爱一区二区三区| 无码高潮喷水专区久久| 国产制服丝袜91在线| 久久久黄色片|