亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        圖形渲染管線中頂點索引壓縮方法?

        2019-11-29 05:13:52杜慧敏黃虎才劉世豪
        計算機與數(shù)字工程 2019年11期
        關(guān)鍵詞:信息

        王 可 杜慧敏 黃虎才 劉世豪 劉 鑫

        (西安郵電大學(xué)電子工程學(xué)院 西安 710121)

        1 引言

        隨著半導(dǎo)體工藝、計算機圖形學(xué)以及微電子技術(shù)的迅速發(fā)展,人們不斷地追求視覺上更加逼真的渲染效果[1~2]。因此對于圖形處理器(Graphics Processing Unit,GPU)的繪制性能和功耗的要求也越來越高。人們需要GPU 以更低的功耗、更加有限的存儲資源和帶寬實現(xiàn)更高性能、更高質(zhì)量、更低功耗的圖形繪制。相較于PC 端的圖形處理器,嵌入式GPU 由于其電源的局限性,對于其功耗的要求更加苛刻。目前一些國際知名的GPU 廠商像NVIDIA、AMD 已經(jīng)相繼采用了HBM(high bandwidth memory)或者GDDR(graphic DDR)等關(guān)鍵技術(shù),且都不同程度地提升了GPU 的片外存儲器帶寬,但是同用戶持續(xù)增長的需求相比,存儲資源和帶寬的有限性依舊是一個技術(shù)難題。如何提高GPU功耗效率已經(jīng)成為了3D圖形渲染領(lǐng)域的一個熱點問題[3~6]。對于多核處理器實現(xiàn)的GPU 而言,限制其性能和功耗的最主要為運算速度、訪問存儲速度和存儲資源占用的問題。據(jù)統(tǒng)計,GPU進行三維圖形繪制需頻繁地訪問外部存儲器,導(dǎo)致訪問片外存儲器耗費的功耗接近芯片總功耗的60%~70%[7~8],成為圖形處理器的主要性能瓶頸[9]。

        為了減少對片外存儲的訪問,其中一種方法就是對處理的數(shù)據(jù)進行壓縮。在圖形處理器流水線上采用壓縮的圖形繪制數(shù)據(jù)能夠有效減少存儲的訪問量,降低數(shù)據(jù)的傳輸量。在圖形處理器中,數(shù)據(jù)壓縮時需要考慮不同的壓縮對象對數(shù)據(jù)精確性的要求。比如紋理數(shù)據(jù),作為只讀數(shù)據(jù),壓縮紋理圖像造成的誤差不會對最終繪制出的圖像產(chǎn)生較大的影響,故而紋理壓縮一般都是有損壓縮。但是頂點信息與繪制三角形的數(shù)量和類型直接相關(guān),對于產(chǎn)生的誤差十分敏感,需要較高的精確性,因此需要采取無損壓縮方式[10~11]。

        在圖形處理器流水線上采用壓縮的圖形繪制數(shù)據(jù)能夠有效減少存儲的訪問量,降低數(shù)據(jù)的傳輸量。例如,NVIDIA Tegra 4 移動圖形處理器核的圖形渲染流水線集成了專用存儲訪問管理系統(tǒng),實現(xiàn)16∶1 的無損深度(depth)壓縮、4∶1 的無損顏色和4∶1 的紋理。NVIDIA TegraX1 的Maxwell 系列GPU核對顏色數(shù)據(jù)(紋理、顏色緩沖區(qū)和幀緩沖區(qū))應(yīng)用數(shù)據(jù)壓縮技術(shù),相比未使用數(shù)據(jù)壓縮技術(shù)的GPU系統(tǒng),平均節(jié)省60%左右的存儲器帶寬[12~13]。

        OpenGL 中的DrawElements的繪制模式需要用戶利用頂點索引數(shù)組來指定頂點索引,導(dǎo)致GPU對外存的訪問頻繁。本文提出一種DrawElements模式對頂點索引信息進行無損壓縮的方法,對數(shù)據(jù)存儲空間做了較大的優(yōu)化,減少了存儲資源的占用。在主機端對用戶指定的頂點索引數(shù)組進行數(shù)據(jù)的無損壓縮,并在圖形處理器內(nèi)部進行解壓縮處理。這樣的處理方式雖然增加了硬件的復(fù)雜性,但是可以大大節(jié)省存儲空間的占用并且不會導(dǎo)致頂點索引數(shù)據(jù)的準(zhǔn)確度降低,在一定程度上提升了整個處理器的性能。

        本文對提出的壓縮算法進行了建模并用System Verilog 構(gòu)建了仿真平臺,對不同測試用例下的頂點索引進行了仿真,統(tǒng)計其壓縮比。由測試結(jié)果得出,該方法可以較好地減小存儲資源的占用。

        2 國內(nèi)外相關(guān)工作

        文獻[14~16]對數(shù)據(jù)壓縮的方式即有損壓縮和無損壓縮做了簡單的概述[14~16]。文獻[17]中針對圖形處理器流水線數(shù)據(jù)壓縮技術(shù)的應(yīng)用現(xiàn)狀進行了總結(jié)和分析。在3D 圖形渲染流水線的多個階段,使用了數(shù)據(jù)壓縮技術(shù)減少了訪問外部存儲器的次數(shù),從而達到提高渲染性能和降低能耗的效果。通過分析GPU 圖形渲染流水線和存儲系統(tǒng)的結(jié)構(gòu)特征,總結(jié)了各種緩沖區(qū)對象、紋理數(shù)據(jù)專用壓縮算法的關(guān)鍵特性以及所使用的壓縮算法的特征。最后,分析了當(dāng)前圖形流水線數(shù)據(jù)壓縮技術(shù)的研究現(xiàn)狀、不足與挑戰(zhàn)[17]。十多年前,Alliez[18]等分析并總結(jié)了三維網(wǎng)格壓縮算法特征,一些算法壓縮率較高,但是壓縮操作和解壓縮操作相當(dāng)復(fù)雜,面積開銷大,另外一些算法無法對壓縮數(shù)據(jù)實現(xiàn)并行解壓縮操作,導(dǎo)致這些算法無法應(yīng)用于嵌入式移動設(shè)備。2005 年,Pur-nomo[19]等提出一種幾何緩沖區(qū)的壓縮算法。為了使圖像空間的誤差最小化,為頂點屬性的不同信息(坐標(biāo)、法向量、紋理坐標(biāo))分配不同長度的字段,將頂點數(shù)據(jù)壓縮為96bit,以壓縮數(shù)據(jù)的形式送給頂點著色器進行渲染,并在渲染階段實現(xiàn)實時解壓縮操作。為了提高幾何數(shù)據(jù)的解壓縮速率,德國多個研究機構(gòu)聯(lián)合NVIDIA 等GPU企業(yè)研究面向?qū)崟r圖形繪制的幾何數(shù)據(jù)解壓縮算法[20~21]。

        綜上,在工業(yè)界和學(xué)術(shù)界對圖形渲染管線中的數(shù)據(jù)進行壓縮傳輸一直以來都是一個研究的熱點。

        3 頂點繪制模式

        頂點是構(gòu)成圖元的最基本的要素,它包含了多種屬性如頂點的顏色、頂點坐標(biāo)、紋理坐標(biāo)等。在渲染頂點前,需要先指定頂點屬性的基地址,如顏色信息基地址,坐標(biāo)信息基地址等。在進行頂點處理時,圖形處理器需要從內(nèi)存中讀出用戶寫入的頂點數(shù)據(jù)信息來進行處理。對于繪制復(fù)雜圖形即含有大量頂點的圖形時,如果采用DrawElements的繪制模式,函數(shù)中需要指定大量的頂點索引信息,會占用大量的存儲空間。例如圖1 所示,繪制這樣一個兔子需要35947 個頂點,采用Draw_Elements 時對應(yīng)的在頂點索引數(shù)組中需要35947個索引元素。

        圖2 頂點信息

        在訪問頂點數(shù)據(jù)時,會事先指定頂點顏色信息、坐標(biāo)信息以及其它屬性信息在顯存中的基地址,如上圖2 所示。然后根據(jù)要獲取的頂點屬性信息進行頂點抓取。在OpenGL標(biāo)準(zhǔn)中指定了兩種繪制模式:GLDrawArrays和GLDrawElements。當(dāng)采用DrawArrays 的繪制模式時,該函數(shù)需要指定頂點的起始索引,頂點數(shù)量以及圖元類型等信息,然后從頂點的起始索引開始,索引值依次加1,一直加到索引值的數(shù)量與指定的頂點數(shù)量相同為止;當(dāng)繪制模式為Draw_Elements 時,此函數(shù)指定頂點起始索引,頂點的數(shù)量,頂點的圖元類型以及一個索引數(shù)組等參數(shù),此時的頂點索引為索引數(shù)組中指定的值而不是依次加1。在獲取頂點信息時,會根據(jù)索引數(shù)組中的索引值和頂點數(shù)據(jù)的類型,加上指定的基地址得到頂點數(shù)據(jù)在顯存中的地址,并根據(jù)此地址在顯存中獲取數(shù)據(jù)。對于含有重復(fù)性頂點的場景時,由于采用DrawArrays 的模式在一次Draw 命令下不會出現(xiàn)相同的頂點索引,當(dāng)需要重復(fù)繪制一個頂點時,相同的頂點信息在顯存中需要重復(fù)存儲多次,使得顯存中不同位置會出現(xiàn)相同的頂點數(shù)據(jù),浪費了存儲空間也相應(yīng)地降低了存儲利用率。針對于這種情況,采用DrawElements的繪制模式能很好地降低此浪費情況,頂點信息只需要在顯存中存儲一次,通過索引數(shù)組制定的指定的索引去尋址對應(yīng)的頂點信息即可。對于頂點索引而言,它的數(shù)據(jù)類型有UNSIGNED_BYTE(無符號8 位整數(shù)),UNSIGNED_SHORT(無 符 號16 位 整 數(shù)),UNSIGNED_INT(無符號32 位整數(shù))。并且對于復(fù)雜的場景,頂點索引的數(shù)量大幅度增加,造成了頂點索引對存儲空間的大量占用。由于此種現(xiàn)象的存在,我們可以對頂點索引數(shù)據(jù)采取一些存儲優(yōu)化方法。

        4 索引存儲優(yōu)化方法

        4.1 存儲優(yōu)化策略(壓縮策略)

        在DrawElements的繪制模式下,由于頂點索引是索引數(shù)組指定的,因此需要使用用戶指定的數(shù)據(jù)格式來存儲每個頂點的索引,占用較大的空間。我們在主機端壓縮頂點索引,存入到顯示緩存中,在GPU端對數(shù)據(jù)進行解壓,以此減少頂點索引的存儲空間。當(dāng)GPU 核處理頂點數(shù)據(jù)時,先對從顯存中取出的頂點索引進行解壓縮,然后根據(jù)解壓縮后的數(shù)據(jù)進行頂點操作。頂點索引數(shù)據(jù)的處理框架如圖3所示

        圖3 整體處理框圖

        假設(shè)當(dāng)前采用的頂點索引數(shù)據(jù)類型的位寬為format_bit 位,顯存中每一行位寬為data_num_bit位。頂點數(shù)組的索引壓縮算法如下:

        1)求出當(dāng)前索引數(shù)組中的元素相鄰元素之間的索引差值。

        2)根據(jù)差值對頂點索引號進行分段處理,使得每個片段內(nèi)的差值范圍盡可能小,并記錄該段內(nèi)的差值最大的值所對應(yīng)的位數(shù)Max_diff_bit。分段的原 則 為Max_diff_bit*index_num<=data_num_bitformat_bit,分段后每個片段內(nèi)頂點索引的數(shù)量為index_num。

        3)保存每個片段內(nèi)其起始索引號、index_num和相鄰索引間的差值(索引間的差值位寬固定為Max_diff_bit,便于解壓縮處理)。

        4)經(jīng)過上述3 個步驟,對每個片段壓縮后的數(shù)據(jù)包含起始索引號和索引間的差值。

        上述的分段原則可以保證每段的壓縮數(shù)據(jù)對應(yīng)著顯存的每一行,以便于解壓縮提取一次數(shù)據(jù)時數(shù)據(jù)位寬滿足一次猝發(fā)傳輸。分段處理后的結(jié)果如圖4 所示,將若干個頂點索引分為了N-1 個片段,每個片段都對應(yīng)著顯存中的一行數(shù)據(jù)(如圖4)。

        圖4 分段后結(jié)果

        4.2 解壓縮處理

        經(jīng)過主機端的壓縮后,在顯存中存儲的為每一段頂點索引的壓縮數(shù)據(jù)。對頂點索引數(shù)據(jù)進行解壓縮時,需要先從顯存中讀出壓縮數(shù)據(jù),并對每一段的壓縮數(shù)據(jù)進行解碼,得到每一段的起始索引并且根據(jù)當(dāng)前段的index_num 和Max_diff_bit 按照編號的順序進行相應(yīng)的解碼處理,通過不斷地迭代處理,用當(dāng)前的差值加上前一個頂點的索引值,可以得到當(dāng)前頂點的索引值。依此類推,分別對每一個片段進行解壓縮,解壓縮完成后發(fā)送給計算核心進行著色處理。解壓縮流程與壓縮數(shù)據(jù)存儲方式如圖6所示。

        圖5 解壓縮處理

        通過上述步驟可以看出,在采用了此壓縮方法后,頂點索引數(shù)組在顯存中的存儲空間明顯地減少了,并且在經(jīng)過硬件的解壓縮處理后,可以達到無損壓縮的效果,不會對頂點數(shù)據(jù)的獲取有任何的誤差。

        5 性能測試

        本節(jié)對本文提出的頂點索引壓縮方法進行了驗證和性能分析,在不同的測試場景下,針對于Draw_elements 繪制模式對不同數(shù)據(jù)類型的頂點索引數(shù)組中的元素進行了壓縮,并利用硬件描述語言Verilog實現(xiàn)了硬件解壓縮處理。

        利用System Verilog 搭建了解壓縮模塊的驗證平臺,對壓縮數(shù)據(jù)進行了解壓縮處理,并將壓縮前與解壓縮后頂點索引進行對比驗證,統(tǒng)計其壓縮比。測試結(jié)果如表1 所示(da_ty 表示數(shù)據(jù)類型,number為頂點數(shù)量,bit_1 為壓縮前數(shù)據(jù)位寬,bit_2為壓縮后數(shù)據(jù)位寬)。

        表1 測試結(jié)果匯總

        測試集如圖6~7所示。

        圖6 Triangles

        圖7 Rectangles

        通過上表可以看出,本文實現(xiàn)的壓縮方法為一種無損壓縮方法,并且可以對頂點索引實現(xiàn)很好的壓縮,減少了存儲資源的占用,達到了預(yù)期目標(biāo)。

        6 結(jié)語

        頂點索引是GPU 尋址頂點數(shù)據(jù)的重要部分,尤其是采用繪制模式為Draw_Elements 的情況下,需要用戶自行指定頂點索引號。頂點索引按照順序依次存儲在顯存中,占據(jù)了較多的存儲資源。本文通過一種無損壓縮方式,在主機端對頂點索引數(shù)組元素進行了一定程度上的壓縮,并在圖形處理器內(nèi)部通過硬件電路實現(xiàn)了解壓縮過程對于不同場景下,整體的壓縮比率會有差異。最終經(jīng)過驗證測試后,達到了預(yù)期目標(biāo)。

        猜你喜歡
        信息
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        展會信息
        中外會展(2014年4期)2014-11-27 07:46:46
        信息超市
        展會信息
        展會信息
        展會信息
        展會信息
        展會信息
        信息
        健康信息
        祝您健康(1987年3期)1987-12-30 09:52:32
        欧美一级视频精品观看| 久久国产精品波多野结衣av| 国产福利片无码区在线观看 | 日韩激情av不卡在线| 免费国产黄线在线播放| 天天影视性色香欲综合网| 国产乱人伦偷精品视频免观看| 中文字幕色视频在线播放| 麻豆成人在线视频| 中文字幕日韩人妻不卡一区| 国产精品亚洲av高清二区| 无码视频一区二区三区在线播放| 亚洲va韩国va欧美va| 一区二区激情偷拍老牛视频av| 亚洲自拍愉拍| 亚洲国产精品久久久久秋霞1| 国产精品成人免费视频一区| 麻豆人妻性色av专区0000| 人妻色中文字幕免费视频| 亚洲AV无码精品色欲av | 久久精品国产亚洲av四叶草| 日韩人妖一区二区三区| 蜜桃在线播放免费一区二区三区| 综合色就爱涩涩涩综合婷婷| 久久精品国产免费一区二区三区| 一区二区三区熟妇人妻18| 自拍亚洲一区欧美另类| 无套内谢孕妇毛片免费看看| 东北女人毛多水多牲交视频| 日本污ww视频网站| 国产三级不卡一区不卡二区在线 | 在线观看中文字幕不卡二区| 少妇特殊按摩高潮惨叫无码| 午夜tv视频免费国产区4| 欧美成人精品一区二区综合 | 日本不卡视频一区二区| 色婷婷av一区二区三区不卡| 日韩av无卡无码午夜观看| 中文字幕久无码免费久久| 一本大道东京热无码| 柠檬福利第一导航在线|