專利名稱:基于分塊渲染的gpu中塊存儲策略的實現(xiàn)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及到GPU芯片設(shè)計中的分塊渲染實現(xiàn)領(lǐng)域,特指基于分塊渲染的 GPU中塊存儲策略的實現(xiàn)。
背景技術(shù):
計算機圖形繪制技術(shù)很早以前就是信息技術(shù)研究的一個重要方向,尤其是近十幾 年以來,隨著計算機性能的不斷提升,計算機圖形應(yīng)用也從2D延伸到3D,相應(yīng)的應(yīng)用范圍 也更加廣泛,在商業(yè)、工業(yè)、娛樂、藝術(shù)、教育、醫(yī)療、軍事等各個方面都發(fā)揮著重要的作用, 圖形芯片的實現(xiàn)架構(gòu)也在不斷的創(chuàng)新和發(fā)展。早期的GPU設(shè)計領(lǐng)域,一般都采取固定流水線(Fixed Pipeline)的設(shè)計方式。其 固定流程包括幾何變換、光照、裁剪、光柵化、Z測試、紋理貼圖等,在設(shè)計中除了考慮要提 供足夠的整數(shù)和浮點運算之外,另一個重要的考慮因素就是存儲體的帶寬,根據(jù)研究表明, 在渲染階段,影響GPU運行速度的主要因素就是存儲體的帶寬,因為在這一過程中,需要頻 繁的讀取紋理、深度、幀存等外存數(shù)據(jù),往往一個像素需要讀取多次外存才能夠最終寫入幀 存,為了減小存儲體帶寬的影響,在這種架構(gòu)中往往采取加大片上存儲(Cache)的方法來減 少外存的訪問量,但是這種方式增大了芯片的功耗,對性能的提高程度也有限。實際上在固定流水線架構(gòu)中,造成存儲帶寬不夠的原因是大量相互遮蓋的圖元在 繪制,最終顯示的像素需要多次重復(fù)渲染,為了解決這一問題,將繪圖流程進行改進,比較 常見的就是延遲渲染(Deferred Rendering),延遲渲染是利用額外的緩沖區(qū)來緩存繪圖過 程中間的信息,在確定像素最終顏色之前,盡量延后像素實際寫入輸出圖像緩沖區(qū)的時間, 來避免處理多余不必要的像素以及緩沖區(qū)讀寫,因為最終能夠顯示在屏幕上的三角形占原 始輸入圖元的209Γ83%,所以這種延遲渲染的方式可以在一定程度上減少運算量和訪存次 數(shù),提高性能。另一種GPU的實現(xiàn)架構(gòu)為分塊渲染技術(shù)。這項技術(shù)是將繪圖區(qū)劃分為若干個相同 大小的塊,然后將所有的待繪制圖元收集完畢寫入外存后,再從外存將每一塊的圖元讀出, 以塊為單位進行渲染。這種技術(shù)可以大大減少訪問外存的次數(shù),大大提高GPU的繪制效率, 在分塊渲染技術(shù)中,塊的存儲是一個重要的問題,以前的做法是將圖元分塊之后順序存放 在外存,片上維持一個鏈接表,讀取的時候按照鏈接表將當前塊的圖元讀出進行繪制。
發(fā)明內(nèi)容
本發(fā)明要解決的問題就在于針對現(xiàn)有技術(shù)存在的技術(shù)難點,本發(fā)明提供了一種 基于分塊渲染的GPU中塊的高效存儲策略,該發(fā)明可以減小片上存儲的信息,同時可以將 塊的收集和繪制時間重合,加快GPU的繪制效率。與現(xiàn)有的技術(shù)相比,本發(fā)明的優(yōu)點就在于1、邏輯簡單本發(fā)明提出的塊存儲策 略在實現(xiàn)結(jié)構(gòu)上將寫入和讀出分開,兩者之間通過一個計數(shù)器建立關(guān)系;2、片上存儲資源 少本發(fā)明提出的塊存儲策略只需要在片上維持兩個RAM(作為奇數(shù)幀和偶數(shù)幀的計數(shù)器),
4而其余的信息全部寫入外存DDR中,大大減少片上存儲資源;3、性能優(yōu)良本發(fā)明提出的奇 偶兩幀緩存的技術(shù),可以將圖元繪制時間和圖元收集時間重合,繪制一幀的時間平均可以 節(jié)約30% 50%。
圖1是本發(fā)明實現(xiàn)的塊存儲策略結(jié)構(gòu)圖。
具體實施例方式以下將結(jié)合附圖和具體實施例對本發(fā)明做進一步詳細說明。如圖1所示,本發(fā)明的基于分塊渲染的GPU中塊存儲策略的實現(xiàn),它包括每一塊最 多包含的塊數(shù)目確定,本實現(xiàn)中,塊的存儲空間設(shè)置為一固定大小的區(qū)域,同時設(shè)置塊的大 小為一固定值,那么繪圖區(qū)域大小不同,該存儲區(qū)域能夠存儲的塊的數(shù)目就不同,每一塊能 夠存儲的圖元數(shù)目就不同。根據(jù)圖元分塊送入的塊號,從本地RAM(內(nèi)部維持每個塊的計數(shù) 器)中取出當前塊中已經(jīng)存儲的塊的數(shù)目,若為第一次處理該塊,那么塊的數(shù)目為0。根據(jù) 當前繪圖區(qū)塊的數(shù)目、每一塊占用的存儲空間、當前待寫入的塊號、當前塊已寫入的圖元數(shù) 目、每一塊占用的存儲空間計算當前圖元寫入DDR存儲體的地址。得到存儲地址之后,將圖 元的繪制信息寫入DDR存儲體中。同時將對應(yīng)塊的計數(shù)器加1。由于存儲空間有限,若當前 塊存儲的塊的數(shù)目超過最大數(shù)目,前面的分塊算法需要停頓,然后優(yōu)先讀取該塊繪制,直到 小于最大存儲數(shù)目,前面分塊算法再繼續(xù)執(zhí)行。當所有的塊都寫入完畢之后,開始讀取塊, 首先按塊的順序輪詢保持的計數(shù)器的值,直到找到第一個圖元數(shù)目不為0的塊。將該計數(shù) 器的值讀出,根據(jù)當前塊號、每一塊占用的存儲空間、每一個圖元所占用的存儲空間計算讀 取塊的地址。所有圖元讀取完畢,當前幀繪制完畢。為了提高繪圖效率,本實現(xiàn)策略將維持 兩個計數(shù)器,奇數(shù)幀和偶數(shù)幀分別用一個計數(shù)器,這樣可以再奇數(shù)幀收集圖元時,偶數(shù)幀進 行繪制,反之亦然。
權(quán)利要求
1.基于分塊渲染的GPU中塊存儲策略的實現(xiàn),其輸入為圖元(包括線段和三角形)分塊 后得到的塊號及塊內(nèi)圖元的繪制信息。
2.根據(jù)當前繪圖區(qū)的大小確定每一塊最多包含的塊數(shù)目,本實現(xiàn)策略中,塊的存儲空 間設(shè)置為一固定大小的區(qū)域,同時設(shè)置塊的大小為一固定值,那么繪圖區(qū)域不同,該存儲區(qū) 域能夠存儲的塊的數(shù)目就不同,每一塊能夠存儲的圖元數(shù)目也不同。
3 . 假設(shè)用 來存儲 塊 的 空 間 為 M (單位字節(jié)),本實現(xiàn)策略中采用乒乓操作,需要存儲兩幀的圖元分塊信息,所以每幀占 用的空間為JM72 ,當前繪圖區(qū)的大小為JTxAT (單位像素),分塊的大小為ΓχΓ (像素), 每個圖元占用的存儲空間為C (單位字節(jié)),那么,「 ΤχΛ"總共的塊數(shù)目為
4.計算當前圖元寫入DDR存儲體的地址。
5.假設(shè)當前繪圖區(qū)塊的數(shù)目為N,每一塊占用的存儲空間為Cji,當前待寫入的塊號為 Ik,從2中讀出的塊的數(shù)目為n,每一個圖元所占用的存儲空間為C (單位字節(jié)),那么當 前待寫入圖元的存儲地址為
6.得到存儲地址之后,將圖元的繪制信息寫入DDR存儲體中。
7.同時將對應(yīng)塊的計數(shù)器加1。
8.由于存儲空間有限,若當前塊存儲的圖元數(shù)目超過最大數(shù)目,前面的分塊模塊需要 停頓,然后優(yōu)先讀取該塊繪制,直到小于最大圖元存儲數(shù)目,前面的分塊模塊再繼續(xù)執(zhí)行。
9.重復(fù)1-4,直到將所有的圖元信息都寫入DDR存儲體中,寫入過程結(jié)束。
10.讀取時,首先按塊的順序查詢保持的計數(shù)器的值,直到找到第一個圖元數(shù)目不為0 的塊。
11.將該計數(shù)器的值讀出(假設(shè)為Jfe),計算讀取塊的地址,假設(shè)當前塊號為Ihi,每 一塊占用的存儲空間為^ ,每一個圖元所占用的存儲空間為C (單位字節(jié)),那么第一 次讀取的圖元地址
12.在分塊渲染算法中,一般情況下需要等到所有的塊寫入DDR完畢才可以進行繪制 (中間出現(xiàn)塊滿的情況除外),那么在塊收集的過程中,塊繪制模塊空閑,為了將兩部分時間 重合,在本策略實現(xiàn)中維持兩個計數(shù)器,同時有兩塊DDR存儲空間,當奇數(shù)幀在塊收集的過程中,偶數(shù)幀在進行繪制,偶數(shù)幀在塊收集時,奇數(shù)幀在進行繪制。
全文摘要
本發(fā)明公開了一種基于分塊渲染的GPU中塊存儲策略的實現(xiàn),它包括寫入塊和讀出塊兩個部分,寫入塊時,根據(jù)圖元分塊的結(jié)果將塊號作為索引,將塊寫入對應(yīng)本塊的存儲空間(具體地址計算得到),同時維持一個本地計數(shù)器,將寫入塊的計數(shù)器加1;讀出塊時,根據(jù)每一塊計數(shù)器的值按順序?qū)K內(nèi)存儲的圖元信息取出來送入繪制模塊。
文檔編號G06T1/60GK102096897SQ20111006516
公開日2011年6月15日 申請日期2011年3月17日 優(yōu)先權(quán)日2011年3月17日
發(fā)明者焦勇, 陳怒興, 饒先宏 申請人:長沙景嘉微電子有限公司