丁振青 熊庭剛 秦信剛
(武漢數(shù)字工程研究所 武漢 430205)
?
GPU像素引擎的設(shè)計(jì)與實(shí)現(xiàn)*
丁振青 熊庭剛 秦信剛
(武漢數(shù)字工程研究所 武漢 430205)
隨著各種娛樂(lè)設(shè)備以及數(shù)據(jù)處理設(shè)備的普及,三維圖形技術(shù)逐漸應(yīng)用到各種領(lǐng)域。論文對(duì)于針對(duì)國(guó)內(nèi)目前GPU中像素引擎研究的不足,設(shè)計(jì)了一種具有完整功能的像素引擎,能夠完成alpha測(cè)試、模板測(cè)試、深度測(cè)試和alpha混合。采用Verilog HDL語(yǔ)言設(shè)計(jì)了各功能模塊,并生成了各功能模塊的內(nèi)部電路圖。最后對(duì)各個(gè)功能模塊進(jìn)行了功能仿真,并在開(kāi)發(fā)驗(yàn)證平臺(tái)上驗(yàn)證像素引擎的功能。
計(jì)算機(jī)圖形學(xué); 圖形處理器; 像素引擎; 像素測(cè)試; Cache
Class Number TP301
隨著計(jì)算機(jī)軟硬件突飛猛進(jìn)的發(fā)展,數(shù)據(jù)處理的重點(diǎn)從聲音轉(zhuǎn)向圖形[1],隨著圖形的復(fù)雜度越來(lái)越高,僅僅依靠軟件算法來(lái)繪制圖形大大加重了中央處理器(CPU)的負(fù)擔(dān),不僅顯示效率低下,而且會(huì)影響整個(gè)系統(tǒng)的性能[2]。因此需要專(zhuān)用的硬件,圖形處理器(GPU)來(lái)加速圖形處理,從而解放CPU,提高系統(tǒng)性能。
GPU是現(xiàn)代信息系統(tǒng)中把復(fù)雜信息通過(guò)圖形圖像方式展現(xiàn)出來(lái),并能夠?qū)D形圖像信息進(jìn)行高速處理的集成電路。隨著處理能力的加強(qiáng),圖形處理器已被廣泛應(yīng)用于辦公自動(dòng)化、動(dòng)畫(huà)制作、視頻加速[3~4]、3D游戲[5]和高性能計(jì)算[6]等民用領(lǐng)域,同時(shí),在軍隊(duì)的武器裝備中圖形處理器也有巨大的用途。像素引擎是GPU的重要組成部分,直接影響著像素處理的速度和輸出畫(huà)質(zhì)的質(zhì)量,像素引擎的研究對(duì)于國(guó)產(chǎn)GPU的研制具有重要的意義。
像素引擎處在圖形處理流水線(xiàn)的最后,負(fù)責(zé)剔除和渲染輸出像素。像素引擎完成各種像素級(jí)的操作,通過(guò)alpha測(cè)試、深度測(cè)試、模板測(cè)試快速剔除不符合要求的像素,減輕圖形管線(xiàn)負(fù)擔(dān),提升系統(tǒng)性能,通過(guò)對(duì)源像素進(jìn)行適當(dāng)?shù)母袷睫D(zhuǎn)化,使之與目標(biāo)像素完成alpha混合最終將完整處理的像素寫(xiě)入顯存。經(jīng)過(guò)測(cè)試和混合后的像素進(jìn)入顯存,最終才能夠在屏幕上顯示一幅清晰、平滑的圖像[7]。
查詢(xún)了大量資料發(fā)現(xiàn),在20世紀(jì)90年代國(guó)外關(guān)于像素引擎的研究處于一個(gè)高峰期[8~10],但隨著研究的愈發(fā)成熟,近年來(lái)已經(jīng)很少有這類(lèi)的文章出現(xiàn),因此可知在像素引擎的研究方面國(guó)外起步較早,研究已經(jīng)比較完善。國(guó)內(nèi)的GPU研究處于起步階段,像素引擎研究則相對(duì)落后。研究成果大致分為兩類(lèi),一類(lèi)是采用國(guó)外的商用GPU IP,但是沒(méi)有自主知識(shí)產(chǎn)權(quán),且大都是嵌入式產(chǎn)品,不能夠運(yùn)行于通用操作系統(tǒng)。如華為、瑞芯微電子、全志、新岸線(xiàn)等公司都只是采用了集成進(jìn)口商用嵌入式GPU IP的方案[11~12],有一定的圖形處理能力。另外一類(lèi)是自主研發(fā)的產(chǎn)品,不兼容通用操作系統(tǒng)、通用圖形API,經(jīng)像素引擎輸出的圖形性能也不及商用的嵌入式GPU IP,這都不能滿(mǎn)足市場(chǎng)需求[13]。在國(guó)內(nèi)的文章和研究報(bào)告中可以看到,上世紀(jì)90年代國(guó)外像素引擎研究的高潮階段國(guó)內(nèi)基本沒(méi)有參與,到21世紀(jì)后才能在一些高校的文章中找到一些蹤跡,但大多數(shù)都只是建立模型,沒(méi)有實(shí)際產(chǎn)品出現(xiàn)。近年來(lái)隨著國(guó)家的重視和集成電路產(chǎn)業(yè)的發(fā)展,國(guó)內(nèi)在像素引擎方面的研究突飛猛進(jìn),取得了一定的成果,但是總體還處于起始階段,和國(guó)外高性能GPU還有一定的差距。
像素在被寫(xiě)入顯存前還必須進(jìn)行一系列的測(cè)試,當(dāng)某項(xiàng)測(cè)試默認(rèn)關(guān)閉時(shí),該測(cè)試直接通過(guò)。若某個(gè)像素在一項(xiàng)測(cè)試中被排除,后面的測(cè)試則不需要執(zhí)行。通過(guò)測(cè)試的像素在完成混合后才能被寫(xiě)入顯存。完整的像素測(cè)試包括alpha測(cè)試、模板測(cè)試和深度測(cè)試。
本節(jié)依次探討了像素引擎的這些主要功能,明確了主要流程,根據(jù)流程圖設(shè)計(jì)RTL代碼。并用Synopsys公司的Verdi軟件進(jìn)行仿真,并生成RTL級(jí)電路。
2.1 alpha測(cè)試
alpha測(cè)試去除大量的alpha值不滿(mǎn)足需要的像素,減少系統(tǒng)資源消耗,有效提升圖形流水線(xiàn)的處理速度。在一個(gè)復(fù)雜的三維場(chǎng)景中,大量的像素測(cè)試耗費(fèi)巨大的系統(tǒng)資源,尤其是大部分的像素并不會(huì)繪制到顯存中,盡量剔除這些不滿(mǎn)足需要的像素,可以有效減輕圖形管線(xiàn)的負(fù)擔(dān)。
在RGBA模式下,alpha測(cè)試是根據(jù)一個(gè)像素的alpha值來(lái)判斷是否保留或者丟棄這個(gè)像素。alpha測(cè)試啟用時(shí),可通過(guò)驅(qū)動(dòng)為alpha測(cè)試配置一個(gè)參考值,硬件設(shè)計(jì)中通過(guò)將各像素的alpha值與參考值相比較來(lái)決定保留還是丟棄該像素[14]。
alpha測(cè)試的實(shí)現(xiàn)的流程圖如圖1所示。
圖1 alpha測(cè)試的實(shí)現(xiàn)的流程圖
根據(jù)alpha測(cè)試的流程圖,設(shè)計(jì)alpha測(cè)試的Verilog HDL代碼。在Linux環(huán)境下用Synopsys公司的Verdi軟件進(jìn)行仿真,并生成RTL級(jí)電路,alpha測(cè)試的內(nèi)部電路如圖2所示。
圖2 alpha測(cè)試的內(nèi)部電路
2.2 alpha混合
alpha混合實(shí)現(xiàn)一種半透明的效果,模擬復(fù)雜場(chǎng)景中透過(guò)透明物體看到后面的物體的情況,alpha混合使場(chǎng)景看起來(lái)更加真實(shí)自然,有層次感。透過(guò)透明物體看向遠(yuǎn)處時(shí)既能看到透明物體的顏色也能看到后面物體的顏色,在這種場(chǎng)景中,將透明物體的顏色和后面物體的顏色按照一定規(guī)律組合來(lái)實(shí)現(xiàn)這種半透明的效果。
在硬件設(shè)計(jì)上當(dāng)一個(gè)像素通過(guò)alpha測(cè)試后,它就可以按照不同的方式與當(dāng)前顏色緩沖區(qū)的顏色進(jìn)行混合,即將源像素的R、G、B和alpha值與已經(jīng)存儲(chǔ)在這個(gè)點(diǎn)的像素的對(duì)應(yīng)值進(jìn)行組合。
alpha混合啟用后,一般按照以下四個(gè)邏輯步驟執(zhí)行,但不一定是實(shí)際步驟:
1) 透明/不透明轉(zhuǎn)化:在這個(gè)階段,輸入的alpha值(獨(dú)立的源像素alpha值和目標(biāo)像素alpha值)必須加以轉(zhuǎn)化,從而匹配內(nèi)部的alpha規(guī)則。在像素引擎內(nèi),alpha為“0”或“0x0”表示透明,alpha值為“1”或“0xFF”表示不透明。外部的alpha值也許使用的是相反的規(guī)則。這一步的輸出是As(目標(biāo)像素alpha值是Ad)或者1-As(目標(biāo)像素alpha值是1-Ad);
2) 環(huán)境alpha替換:寄存器中的環(huán)境alpha值可以放大或者替換輸入的alpha值,在這一步中,輸入alpha值能夠通過(guò),或者直接被Ags(環(huán)境alpha)替換,或者被環(huán)境alpha放大(As*Ags)。源像素alpha值和目標(biāo)像素alpha是完全不同的。
3) 混合因子的產(chǎn)生:在這個(gè)步驟,混合因子被計(jì)算出來(lái)。根據(jù)混合模式的不同,每個(gè)alpha的值可能為0、1、A或1-A。
4) 最終混合:這是最后一個(gè)步驟,源和目標(biāo)像素最終混合,混合操作按根據(jù)混合模式參數(shù)的不同而有多種混合方式。
alpha混合的步驟如圖3所示。
圖3 alpha混合的實(shí)現(xiàn)
根據(jù)alpha混合的原理,設(shè)計(jì)alpha混合的Verilog HDL代碼。在Linux環(huán)境下用Synopsys公司的Verdi軟件進(jìn)行仿真,并生成RTL級(jí)電路,alpha混合的內(nèi)部電路如圖4所示。
2.3 模板測(cè)試
模板測(cè)試基于片段掩碼移除不符合條件的片段,它只有在存在模板緩沖區(qū)的情況下才會(huì)執(zhí)行,如果不存在模板緩沖區(qū),模板測(cè)試總能通過(guò)。模板測(cè)試啟用時(shí),可通過(guò)驅(qū)動(dòng)為模板測(cè)試配置一個(gè)參考值,硬件設(shè)計(jì)中通過(guò)將像素的一個(gè)值與參考值相比較來(lái)決定保留還是丟棄該像素。無(wú)論一個(gè)像素通過(guò)或未通過(guò)模板測(cè)試,模板緩沖區(qū)的數(shù)據(jù)必須修改[14]。
模板緩沖區(qū)存儲(chǔ)模板參考值,使用模板緩沖區(qū)可以把將要繪制的圖形限制在屏幕的某個(gè)特定區(qū)域內(nèi),就像使用鏤空的紙板噴漆一樣。比如,實(shí)現(xiàn)一個(gè)模擬駕駛的程序,在模板緩沖區(qū)內(nèi)存儲(chǔ)一幅擋風(fēng)玻璃形狀的圖像,然后繪制整個(gè)場(chǎng)景,模板緩沖區(qū)能夠防止那些透過(guò)擋風(fēng)玻璃無(wú)法看到的物體被繪制出來(lái)。
圖4 alpha混合的內(nèi)部電路
模板測(cè)試把參考值與模板緩沖區(qū)的值進(jìn)行比較,但比較只在那些對(duì)應(yīng)的掩碼設(shè)置為1的位上進(jìn)行。當(dāng)模板測(cè)試開(kāi)啟后,無(wú)論這個(gè)像素是否通過(guò)模板測(cè)試,必須修改模板緩沖區(qū)的數(shù)據(jù)。fail、zfail、zpass這三個(gè)函數(shù)指定了像素進(jìn)行了模板測(cè)試后怎樣修改模板緩沖區(qū)的值。如果像素?zé)o法通過(guò)模板測(cè)試,則應(yīng)用fail函數(shù);如果模板測(cè)試通過(guò)但是卻無(wú)法通過(guò)深度測(cè)試,zfail函數(shù)就會(huì)應(yīng)用;如果模板測(cè)試通過(guò),深度也通過(guò)或者未執(zhí)行那個(gè)深度測(cè)試的情況下,應(yīng)用zpass函數(shù)。模板測(cè)試的實(shí)現(xiàn)的流程圖如圖5所示。
圖5 模板測(cè)試的實(shí)現(xiàn)的流程圖
根據(jù)模板測(cè)試的流程圖,設(shè)計(jì)模板測(cè)試的Verilog HDL代碼。在Linux環(huán)境下用Synopsys公司的Verdi軟件進(jìn)行仿真,并生成RTL級(jí)電路,模板測(cè)試的內(nèi)部電路如圖6所示。
圖6 模板測(cè)試的內(nèi)部電路
2.4 深度測(cè)試
深度測(cè)試剔除被遮擋的像素,在場(chǎng)景渲染完成之后,只有那些沒(méi)有被其他物體遮擋的物體才會(huì)保留,并繪制到顯存。在一個(gè)復(fù)雜的三維場(chǎng)景中,存在著大量物體,但有很多物體是被其他物體遮擋的,深度測(cè)試將這些被近處不透明物體遮擋的遠(yuǎn)處物體剔除[14]。
對(duì)于屏幕上的每一個(gè)像素,都會(huì)對(duì)應(yīng)一個(gè)與屏幕像素?cái)?shù)目一致的緩沖區(qū),用來(lái)保存片段的深度值,這就是深度緩沖區(qū),即Z_buffer、Z緩沖區(qū)。深度緩沖區(qū)一般用于隱藏表面的消除。當(dāng)整個(gè)場(chǎng)景完成深度測(cè)試之后,只有那些沒(méi)有被其他物體遮擋的物體或者物體的部分才會(huì)保留。因此場(chǎng)景中需要繪制的像素?cái)?shù)量會(huì)急劇減小,有效地提升圖形處理器的處理能力。
當(dāng)深度測(cè)試通過(guò),深度緩沖區(qū)可寫(xiě)時(shí),將測(cè)試像素的深度值寫(xiě)入對(duì)應(yīng)的深度緩沖區(qū),深度測(cè)試的實(shí)現(xiàn)的流程圖如圖7所示。
圖7 深度測(cè)試的實(shí)現(xiàn)的流程圖
根據(jù)深度測(cè)試的流程圖,設(shè)計(jì)深度測(cè)試的Verilog HDL代碼。在Linux環(huán)境下用Synopsys公司的Verdi軟件進(jìn)行仿真,并生成RTL級(jí)電路,深度測(cè)試的內(nèi)部電路如圖8所示。
圖8 深度測(cè)試的內(nèi)部電路
硬件代碼設(shè)計(jì)完成并完成功能仿真后,需要對(duì)圖形處理器進(jìn)行FPGA驗(yàn)證,進(jìn)一步驗(yàn)證設(shè)計(jì)的合理性和正確性。本節(jié)包括圖形處理器像素引擎的FPGA驗(yàn)證以及驗(yàn)證結(jié)果。
本課題設(shè)計(jì)的圖形處理器選擇在S2C公司的QuadE Virtex-7 TAI Logic Module開(kāi)發(fā)驗(yàn)證平臺(tái)板上實(shí)現(xiàn)驗(yàn)證。該驗(yàn)證板豐富的板上資源可以完全滿(mǎn)足本課題的FPGA驗(yàn)證需要。
在Linux環(huán)境下用Synopsys公司的vcs軟件進(jìn)行功能仿真,驗(yàn)證設(shè)計(jì)的合理性和正確性。在功能仿真通過(guò)后,在驗(yàn)證版上進(jìn)行實(shí)際驗(yàn)證。該驗(yàn)證板可以運(yùn)行Linux操作系統(tǒng),為了便于快速驗(yàn)證,在Linux操作系統(tǒng)中編寫(xiě)測(cè)試程序,觀察測(cè)試程序的運(yùn)行效果。
3.1 alpha測(cè)試
alpha測(cè)試剔除那些alpha值不符合要求的物體,大大減輕了圖形處理流水線(xiàn)的負(fù)擔(dān),因此在一個(gè)擁有較多透明物體的場(chǎng)景中,alpha測(cè)試是一種有效的提升系統(tǒng)性能的方法。
在Linux環(huán)境下用Synopsys公司的vcs軟件進(jìn)行功能仿真,仿真波形圖如圖9所示。PixelColor_a、PixelColor_r、PixelColor_g和PixelColor_b分別是進(jìn)入alpha測(cè)試的像素顏色的RGBA分量,States_AlphaReference和States_AlphaCompare分別是alpha參考值和alpha比較參考函數(shù)。
圖9 alpha測(cè)試仿真波形圖
當(dāng)States_AlphaTestEnable為0,即alpha測(cè)試關(guān)閉alpha時(shí)測(cè)試直接通過(guò)。當(dāng)States_AlphaTestEnable不為0時(shí),根據(jù)輸入像素的alpha值和alpha比較參考值States_AlphaReference比較得到比較中間結(jié)果Greater和Equal的值,并根據(jù)alpha比較參考函數(shù)States_AlphaCompare得到alpha測(cè)試比較結(jié)果Passed,若Passed為1表明alpha測(cè)試通過(guò)。
3.2 alpha混合
alpha混合實(shí)現(xiàn)的半透明效果物體透明可極大地提高場(chǎng)景的真實(shí)性,alpha混合就是源像素和目標(biāo)像素的組合。在Linux環(huán)境下用Synopsys公司的vcs軟件進(jìn)行功能仿真,alpha混合仿真波形圖如圖10所示。pe_3d_ab_src_pixel是源像素顏色值,pe_3d_ab_dst_pixel是目標(biāo)像素顏色值,pe_3d_ab_src_factor和pe_3d_ab_dst_factor分別是源像素混合因子和目標(biāo)像素混合因子,pe_3d_ab_BlendOperationAlpha和pe_3d_ab_BlendOperation分別為alpha混合函數(shù)和顏色混合函數(shù)。
圖10 alpha混合的仿真波形
當(dāng)源像素和目標(biāo)像素輸入alpha混合模塊后,首先將其拆分為R、G、B、A值和混合因子混合,然后分別對(duì)各分量進(jìn)行混合,混合完成后將個(gè)顏色組合并輸出像素顏色值ab_pe_3d_data,并輸出顏色使能ab_pe_3d_valid。圖11顯示了在一個(gè)有無(wú)數(shù)不同顏色透明矩形映射到屏幕上得效果,各矩形互相疊加,但是在屏幕上的疊加區(qū)域一個(gè)像素點(diǎn)顯示多個(gè)像素的顏色,因此alpha混合可以實(shí)現(xiàn)半透明的效果。
圖11 alpha混合效果圖
3.3 模板測(cè)試
模板測(cè)試可以將要繪制的圖形限制在屏幕的某個(gè)特定區(qū)域內(nèi),比如使用鏤空的紙板噴漆一樣。在指定區(qū)域繪制圖像,當(dāng)此區(qū)域場(chǎng)景變化時(shí)只需重新繪制此區(qū)域的圖像,屏蔽其它部分,減少圖形繪制量,提高圖形處理器的速度。在Linux環(huán)境下用Synopsys公司的vcs軟件進(jìn)行功能仿真,仿真波形圖如圖12所示。在輸入接口中,DS_Enabled為模板測(cè)試使能位,DDT2Stencil_Depth是輸入像素的深度值,States_StencilType是輸模板類(lèi)型,States_StencilMask是模板掩碼,States_StencilReference是模板參考值,States_StencilCompare是模板,States_StencilCompare是模板比較函數(shù),States_StencilOperation是得知測(cè)試結(jié)果后模板緩沖區(qū)的修改函數(shù),States_StencilWriteMask表明模板緩沖區(qū)是否可寫(xiě),DDT2Stencil_DepthPassed是表明深度測(cè)試是否通過(guò)。
圖12 模板測(cè)試仿真波形
當(dāng)DS_Enabled為0時(shí),表明模板測(cè)試被禁用,模板測(cè)試直接通過(guò)。當(dāng)DS_Enabled為1時(shí),模板測(cè)試開(kāi)啟。首先根據(jù)輸入像素深度值得到像素的模板值,并與模板參考值相比較得到比較中間結(jié)果Greater和Equal的值,并根據(jù)模板比較參考函數(shù)Compare得到模板測(cè)試比較結(jié)果Passed,若Passed為1表明模板測(cè)試通過(guò)。
當(dāng)像素?zé)o法通過(guò)模板測(cè)試時(shí),應(yīng)用Fail函數(shù)修改模板緩沖區(qū)的值,當(dāng)像素通過(guò)模板測(cè)試但是未通過(guò)深度測(cè)試時(shí),Zfail函數(shù)就會(huì)應(yīng)用,當(dāng)兩者都通過(guò)時(shí),應(yīng)用Pass函數(shù)修改模板緩沖區(qū)的值。當(dāng)模板緩沖區(qū)可寫(xiě)時(shí),修改模板緩沖區(qū)的值并輸出像素的深度值next_Stencil2ZC_Depth,同時(shí)輸出像素保留標(biāo)志位KillPixel。
3.4 深度測(cè)試
對(duì)于圖形處理器,深度測(cè)試的目的就是去除那些被遮擋的像素,減少繪制的像素的數(shù)量,提升系統(tǒng)性能。根據(jù)深度測(cè)試的流程圖,設(shè)計(jì)深度測(cè)試的Verilog HDL代碼。在Linux環(huán)境下用Synopsys公司的vcs軟件進(jìn)行功能仿真,仿真波形圖如圖13所示。
圖13 深度測(cè)試的仿真波形
在輸入接口中,States_DisablePEDepth為深度測(cè)試使能位,States_DepthWriteEnable是深度寫(xiě)使能,DepthMask_p6是深度字節(jié)掩碼,States_DepthType為深度類(lèi)型,Depth_xy_1_0_p5為深度有效位,States_DepthCompare為深度比較函數(shù),States_DepthType為深度類(lèi)型,DepthValue_p4為目標(biāo)像素深度值。
當(dāng)States_DisablePEDepth為1時(shí),深度測(cè)試關(guān)閉,測(cè)試直接通過(guò);為0時(shí),深度測(cè)試開(kāi)啟。根據(jù)輸入像素的深度值和深度比較參考值比較得到比較中間結(jié)果Greater和Equal的值,并根據(jù)深度比較參考函數(shù)States_DepthCompare得到深度測(cè)試比較結(jié)果Passed,若Passed為1表明深度測(cè)試通過(guò)。DDT2Stencil_Depth輸出通過(guò)測(cè)試的像素深度值。像素未通過(guò)測(cè)試時(shí),丟棄該像素。
圖14顯示了在一個(gè)大廳中鏡頭隨圓球移動(dòng)的效果。物體的深度測(cè)試開(kāi)啟后,圓球背后的物體都被遮擋,無(wú)法被看到,只有前面物體可以顯示出來(lái),因此深度測(cè)試可以實(shí)現(xiàn)剔除被遮擋物體的效果。
圖14 深度測(cè)試效果圖
像素引擎直接影響著輸出畫(huà)面的效果是GPU研究的重點(diǎn),本文詳細(xì)介紹了像素引擎的主要功能,畫(huà)出了各功能模塊的流程圖,采用Verilog HDL語(yǔ)言設(shè)計(jì)了各功能模塊。最后用Synopsys公司的vcs軟件對(duì)各個(gè)功能模塊進(jìn)行了功能仿真,并在S2C公司的QuadE Virtex-7 TAI Logic Module開(kāi)發(fā)驗(yàn)證平臺(tái)驗(yàn)證像素引擎的功能。在Linux系統(tǒng)下運(yùn)行一些程序,以驗(yàn)證像素引擎的功能的完整性,并根據(jù)驗(yàn)證結(jié)果不斷修改設(shè)計(jì),驗(yàn)證結(jié)果表明該像素引擎能夠有效實(shí)現(xiàn)國(guó)產(chǎn)GPU的像素處理的所有功能,達(dá)到了設(shè)計(jì)要求。
[1] 徐偉.基于嵌入式系統(tǒng)的二維圖形處理加速器[D].西安:電子科技大學(xué),2012.
[2] KAINULAINEN J. Stencil Shadow Volumes[D]. Helsinki: Helsinki University of Technology,2002.
[3] 占衛(wèi)華.龍芯平臺(tái)GPU驅(qū)動(dòng)實(shí)現(xiàn)與瀏覽器Flash性能優(yōu)化[D].北京:中國(guó)科學(xué)院研究生院,2012.
[4] 鐘煜,朱敏,陳雪,等.基于DSMI算法和GPU加速的大規(guī)模視頻檢索系統(tǒng)[J].計(jì)算機(jī)應(yīng)用研究,2011,28(11):4373-4375.
[5] 唐兵.GPU優(yōu)化的3D游戲室外大場(chǎng)景的渲染[D].金華:浙江師范大學(xué),2010.
[6] 趙改善.地球物理高性能計(jì)算的新選擇:GPU計(jì)算技術(shù)[J].勘探地球物理進(jìn)展,2007,30(5):399-404.
[7] SHREINER D. THE KHRONOS OPENGL ARB WORKING GROUP. OpenGL Programming Guide[M]. Seventh Edition.北京:機(jī)械工業(yè)出版社,2010:7-9.
[8] HOLTEN-LUND H. FPGA-Based 3D Graphics Processor with PCI-Bus Interface, An Implementation Case Study[C]//Norchip Proceedings,2002:316-321.
[9] KILGARD M J. Realizing OpenGL: Two Implementation of One Architecture[J]. Graphics Hardware,1997:45-55.
[10] Jon P. Ewins, Phil L. Watten, Martin White, et al. Codesign of Graphics Hardware Accelerators[J]. Graphics Hardware,1997:103-110.
[11] 李實(shí).2014年國(guó)產(chǎn)ARM SoC芯片巡禮(上)[J].微型計(jì)算機(jī),2014,8(上):56-60.
[12] 李實(shí).2014年國(guó)產(chǎn)ARM SoC芯片巡禮(下)[J].微型計(jì)算機(jī),2014,8(下):54-58.
[13] 長(zhǎng)沙景嘉微電子[EB/OL]. http://www.jingjiamicro.com/index.html.
[14] STALLINGS W. Computer Organization & Architecture[M]. Seventh Edition.北京:清華大學(xué)出版社,2006:91-94.
Pixel Engine in GPU Design and Implementation
DING Zhenqing XIONG Tinggang QIN Xingang
(Wuhan Digital Engineering Institute, Wuhan 430205)
With the spread of various of amusement equipments and date processing equipment, 3D graphic technique has gradually been used in all kinds of fileds. Aiming at the shortage of GPU research, this paper designs a full function Pixel Engine with alpha test, stencil test, depth test and alpha blend. Then, this paper designs the function module for Pixel Engine by Verilog HDL and generates the internal circuit diagram. Last, this paper does emulation for the function module and validates its function in develop board. The verification result indicates that Pixel Engine can complete all the function of domestic GPU Pixel Engine, and it has met the design requirements.
computer graphics, GPU, pixel engine, pixel test, Cache
2015年4月11日,
2015年5月29日
丁振青,男,碩士,研究方向:計(jì)算機(jī)圖形學(xué)、FPGA設(shè)計(jì)、云計(jì)算。熊庭剛,男,博士,研究員,碩士生導(dǎo)師,研究方向:計(jì)算機(jī)體系結(jié)構(gòu)。秦信剛,男,高級(jí)工程師,研究方向:計(jì)算機(jī)圖形學(xué)、FPGA設(shè)計(jì)、系統(tǒng)總線(xiàn)設(shè)計(jì)。
TP301
10.3969/j.issn.1672-9730.2015.10.029
驗(yàn)證結(jié)果表明,該像素引擎能夠有效實(shí)現(xiàn)國(guó)產(chǎn)GPU的像素處理的所有功能,達(dá)到了設(shè)計(jì)要求。