專利名稱:繪圖處理器中的保護(hù)帶剪切系統(tǒng)、保護(hù)帶剪切方法
技術(shù)領(lǐng)域:
本發(fā)明涉及 一 種數(shù)據(jù)處理系統(tǒng),尤其設(shè)計 一 種計算機(jī)圖形 系統(tǒng)和方法。
背景技術(shù):
計算機(jī)圖形學(xué)是一 門用計算機(jī)產(chǎn)生圖形,圖像或者其它繪 畫或者圖示信息的科學(xué)和藝術(shù)。圖形或者圖像的產(chǎn)生通常被稱 為渲染。通常,在計算機(jī)三維繪圖中, 一個場景中代表對象表 面(或者體積)的幾何圖形被翻譯為像素(圖像基本圖元),存 貯在幀緩存器中,然后顯示于顯示設(shè)備上。一幅圖形或者圖像渲染時,當(dāng)通過多種并行系統(tǒng)處理的時 候,對象通過管道的多個階段經(jīng)歷多種處理,這通常稱為空間。請見圖1,渲染過程10 —般顯示為從模型空間102到世界空間 104,再到觀察空間106,再到剪切空間108,再到顯示空間IIO。 在某些執(zhí)行過程中,這個過程可能包含世界空間104,并且直接 從模型空間102跳到觀察空間106。簡單地說,才莫型空間102代表 原始的調(diào)整系統(tǒng),因此那些將被包含在現(xiàn)實場景中的特定的對 象尚未被轉(zhuǎn)換。模型空間102為用戶提供了 一個通過使用模型轉(zhuǎn) 換以在顯示器上處理對象的平臺。通過計算機(jī)顯示器的用戶界 面,用戶可以嘗試用各種態(tài)樣、形狀和/或尺寸對對象進(jìn)行尋找 方向或排序。更詳細(xì)的說,通過用戶界面,用戶能夠經(jīng)由各種 為對象或模型提供的模型轉(zhuǎn)換來指揮主處理器執(zhí)行修改,結(jié)果 使模型空間102變?yōu)槭澜缈臻g104。更多轉(zhuǎn)換(例如觀察轉(zhuǎn)換)從世界空間104提供給轉(zhuǎn)換的對 象的頂點,以促進(jìn)發(fā)射和剪切,從而發(fā)展為觀察空間106。在觀察空間106(也稱為拍攝空間)中,產(chǎn)生各種功能——例如添加、 修改亮度和/或陰影,微小拒絕,創(chuàng)建觀察冊等,這形成一個判斷什么對象能被照相機(jī)拍到以及什么對象不能被照相機(jī)拍到。 例如, 一個具有近距離和遠(yuǎn)距離剪切面的平面截體的觀察被典 型的創(chuàng)建。渲染過的三維場景的對象,如果近距離和遠(yuǎn)距離剪 切面和平面截體的邊纟彖不相匹配,則忽略處理,以此減少剪切操作。在剪切空間108中,在觀察空間106中創(chuàng)建的平面截體的坐 標(biāo)被格式化(例如,通過透視劃分)以簡化剪切的復(fù)雜性,然 后執(zhí)行剪切。一旦剪切執(zhí)行,觀察量中的基本圖元就被影射到顯示空間 110并被渲染到顯示設(shè)備上。請注意,在有些情況下,各種如前 所述的處理都可以在不同的和/或其他的空間發(fā)生?,F(xiàn)在請見剪切空間108,應(yīng)用了各種技術(shù)來減少需要剪切的 基本圖元的數(shù)量(比如三角)。常用的其中一個技術(shù)為保護(hù)帶剪 切技術(shù)。在保護(hù)帶剪切中,觀察空間106中創(chuàng)建的近距離和遠(yuǎn)距 離剪切面維持不變,但是平面截體被拉伸,超過期望的視口。 換句話說,共兩個平面截體被創(chuàng)建 一個是保護(hù)帶平面截體, 另 一個是較小視口平面截體。渲染和剪切的環(huán)境可以按照如下 步驟來實現(xiàn)。如果三角位于視口之外,則完全丟棄。如果三角 位于視口內(nèi),則不需剪切,直接渲染。而如果三角與視口和保護(hù)帶平面截體交叉或者如果三角與近距離和遠(yuǎn)距離剪切面交 叉,則執(zhí)行剪切。盡管保護(hù)帶剪切提供了一個渲染的保守方法(例如,比起 需要剪切的三角來,更多的三角直接通過),這種保守方法仍然 要與剪切操作的減少相平衡。也就是說,大多數(shù)情況下,保護(hù) 帶剪切減少的時間間隔取決于主處理器(例如中央處理器,或者說CPU )通過接收部分位于顯示屏之外的三角來執(zhí)行的剪切、 允許主處理器執(zhí)行更為簡單和快速的選擇和剪切測試的時間間 隔。然而,當(dāng)三角將要被剪切時,處理是很費力和費時的。在 傳統(tǒng)的系統(tǒng)中,典型的做法是通過在主處理器上執(zhí)行多個不 同算法中的 一 個算法來做剪切,比如科恩-薩瑟蘭都算法(Cohen-Sutherland ),薩瑟蘭都-霍德格曼算法 (Sutherland-Hodgman ),威勒-阿瑟頓算法(Weiler-Atherton ), 帕特里克吉爾斯美勒特算法(Patrick Gilles Maillot)等等。這些算法通常需要完整地分類(比如,觀察平面截體剪切碼),與 觀察量剪切平面的交叉判斷和頂點的每個參數(shù)(比如阿爾法參 數(shù)、福戈參數(shù)等)的插補(bǔ),這些都需要很強(qiáng)的計算步驟,對硬 件的映射不太好。發(fā)明內(nèi)容本發(fā)明提供了保護(hù)帶剪切的系統(tǒng)與方法。簡要地說,在架 構(gòu)中,本發(fā)明的其中一個方法的實施例包含將轉(zhuǎn)換后的頂點 數(shù)據(jù)向繪圖管道的下游傳送;保護(hù)帶剪切模塊判斷與轉(zhuǎn)換后的 頂點數(shù)據(jù)相應(yīng)的基本圖元是否需要剪切,以及基于上述判斷執(zhí) 行保護(hù)保護(hù)帶剪切和重心插補(bǔ),以便保護(hù)帶剪切計算邏輯單元 定義新頂點的坐標(biāo)。本發(fā)明的其中一個保護(hù)帶剪切系統(tǒng)的實施例包含 一頂點 處理器,將轉(zhuǎn)換后的頂點數(shù)據(jù)轉(zhuǎn)換至整數(shù)顯示空間數(shù)據(jù),計算剪切碼并將轉(zhuǎn)換后的頂,泉數(shù)據(jù)傳輸至繪圖管道的下游;以及一 保護(hù)帶剪切模塊耦接到頂點處理器, 一 保護(hù)帶計算邏輯單元耦 接到該保護(hù)帶剪切模塊,該保護(hù)帶剪切模塊用來判斷與該轉(zhuǎn)換 后的頂點數(shù)據(jù)相應(yīng)的基本圖元是否需要剪切,依據(jù)該判斷,將 該基本圖元傳輸至該保護(hù)帶計算邏輯單元,以執(zhí)行保護(hù)帶剪切。7本發(fā)明的其中 一個保護(hù)帶剪切系統(tǒng)的實施例包含 一狀態(tài) 機(jī),接收狀態(tài)數(shù)據(jù)和轉(zhuǎn)換的頂點; 一頂點索引緩沖器,耦接至 該狀態(tài)機(jī); 一頂點緩沖器,由該頂點索引緩沖器索引,該頂點 緩沖器存儲該轉(zhuǎn)換的頂點; 一頂點處理器,耦接至該頂點索引 緩沖器,該頂點處理器產(chǎn)生頂點的剪切碼,并對剪切后的基本 圖元的結(jié)果相應(yīng)的頂點坐標(biāo)的屬性執(zhí)行透一見畫法校正; 一樣史小 拒絕模塊,依據(jù)該剪切碼的值執(zhí)行微小拒絕; 一保護(hù)帶剪切模 塊,依據(jù)該剪切碼的值判斷基本圖元是否需要執(zhí)行保護(hù)帶剪切; 以及一保護(hù)帶剪切計算邏輯單元,響應(yīng)于需要剪切的判斷而剪 切該基本圖元;該保護(hù)帶剪切計算邏輯單元還用來執(zhí)行插補(bǔ), 以定義新剪切的頂點的坐標(biāo)。本發(fā)明所揭露的繪圖處理器中的保護(hù)帶剪切系統(tǒng)(簡稱為 GB剪切系統(tǒng))、保護(hù)帶剪切方法,提供了一種快速、便捷、基 于硬件的保護(hù)帶剪切。在一個實施例中,由一個或多個固定點 的計算邏輯單元(ALU)執(zhí)行剪切,無須主處理器工作,與傳 統(tǒng)技術(shù)相比,加快了剪切處理速度。在這樣的實施例中,剪切 在顯示空間執(zhí)行,微小拒絕在剪切空間或顯示空間執(zhí)行。因為 以專用硬件實現(xiàn),本發(fā)明各個不使用主處理器的GB剪切系統(tǒng)的 實施例提供了高效、高速的計算,減少了復(fù)雜性。
圖1為描述繪圖處理系統(tǒng)中渲染圖像的各種等同系統(tǒng)或空 間的一個概念性的框圖;圖2為本發(fā)明繪圖處理系統(tǒng)中保護(hù)帶剪切系統(tǒng)和方法的實 施例;圖3為圖2中繪圖處理單元和保護(hù)帶剪切系統(tǒng)實施例的示意圖4為圖3所示保護(hù)帶剪切系統(tǒng)實施例的部分組件的示意圖;圖5至圖7為描述圖4所示保護(hù)帶剪切系統(tǒng)的方法實施例的流程圖。
具體實施方式
圖2是繪圖處理系統(tǒng)100的實施例,其中包含保護(hù)帶剪切系 統(tǒng)200的實施例。在有些情況下,繪圖處理系統(tǒng)100可以被配置 為一個計算機(jī)系統(tǒng)。繪圖處理系統(tǒng)100可以包含顯示設(shè)備202, 由顯示接口單元(DIU) 204和本地存儲器206 (例如,可以包 含顯示緩沖器,紋理緩沖器,命令緩沖器等等)。在這里,本地 存儲器206也可以包含幀緩沖器或存儲單元。本地存儲器206通 過存儲接口單元(MIU) 210耦接到繪圖處理單元(GPU) 214。 在本實施例中,存儲接口單元MIU210,《會圖處理單元GPU 214 和顯示接口單元DIU 204耦接到總線接口單元(BIU) 218。在 一個實施例中,總線接口單元BIU218可以兼容PCIE,并且可以 使用繪圖地址重映射表(GART),雖然會用到其它的存儲器映 射機(jī)制。繪圖處理單元GPU 214包含GB剪切系統(tǒng)200,如下所 述。雖然只是顯示為繪圖處理單元GPU214的一個部件,但在一 些實施例中,GB剪切系統(tǒng)200可以包含如圖所示的一個或者多 個繪圖處理系統(tǒng)100的其它組件??偩€接口單元BIU218耦接到芯片組222(比如北橋芯片組) 或者轉(zhuǎn)換器。芯片組222包含接口電路,用來增強(qiáng)來自中央處理 器(CPU) 226 (這里也稱為主處理器)的信號,并將進(jìn)出系統(tǒng) 存儲器224的信號與進(jìn)出輸入輸出設(shè)備(1/0)(圖中未示出)的 信號分離出來。盡管在這里描述了PCIE總線協(xié)議,在某些實施 例中,主處理器226和《會圖處理單元GPU214之間可以采用其他一些連接和/或通信方式(比如PCI,專用高速總線等等)。系統(tǒng)存儲器224也包含驅(qū)動軟件250,通過使用CPU226傳送通信指令 或命令給繪圖處理單元GPU214中的寄存器和指令流處理機(jī)。在一些實施例中,還包含其它繪圖處理單元,比如通過芯 片組22 2經(jīng)由P CIE總線協(xié)議耦接到圖2中顯示的組件。在 一 個實 施例中,l會圖處理系統(tǒng)100可以包含圖2中顯示的所有組件,還 可以包含其中的幾個和/或不同的組件。另夕卜,在一些實施例中, 還可以用到其他組件,例如耦接到芯片組222的南橋芯片組。在某些特定的實施例中,GB剪切系統(tǒng)200用硬件實現(xiàn),包 含如下技術(shù)中的任何一個或者其組合,如本領(lǐng)域沖支術(shù)人員所知 一個具有邏輯門來實現(xiàn)數(shù)據(jù)信號邏輯功能的邏輯分立電路,一 個具有相應(yīng)邏輯門組合的專用集成電^各(ASIC), —個可編程門 陣列(PGA), —個現(xiàn)場可編程門陣列(FPGA),狀態(tài)機(jī)等等。 圖3為圖2中繪圖處理單元214和保護(hù)帶(GB)剪切系統(tǒng)200 實施例的示意圖。在一些實施例中,還可以包含比圖3中所示的 組件多或者少。比如,每一個如下所述的模塊或者單元都可以 具有它自己的內(nèi)部寄存器或者寄存器,圖中未示出,可以是模 塊中獨立使用,或者和其他模塊共用。在一個實施例中,繪圖 處理單元214可以設(shè)置為管道架構(gòu),包含命令流處理器 (CSP)302,執(zhí)行單元池(EU)304,三角結(jié)構(gòu)單元(TSU)306和GB 剪切系統(tǒng)200,屬性設(shè)置單元(ASU)308,范圍和瓦片產(chǎn)生單元 (STG)310,紋理先進(jìn)先出單元(TFIFO)312,深度先進(jìn)先出單元 (ZFIFO)314,屬性設(shè)置單元先進(jìn)先出單元(ASU FIFO單元(AFIFO)) 316組成一體。CSP 302提供狀態(tài)數(shù)據(jù)(來自于驅(qū)動軟件250 ),執(zhí)行單元池(EU) 304 (比如頂點形狀功能)提供交換的頂點數(shù)據(jù)(也可 以來自于驅(qū)動軟件250 )給三角結(jié)構(gòu)單元TSU306。在有些實施例中,頂點數(shù)據(jù)可以由固定功能頂點陰影處理器提供?;谒邮盏臄?shù)據(jù),三角結(jié)構(gòu)單元TSU306整合和設(shè)置基本圖元(比如線,三角形,如多邊形,三角帶,扇形的組合基本圖元等等)來空白剪切,以及為屬性設(shè)置單元A S U 3 0 8重新處理數(shù)據(jù)。例如, 三角結(jié)構(gòu)單元TSU306執(zhí)行眾所周知的任務(wù)視口轉(zhuǎn)換,微小拒 絕,范圍盒產(chǎn)生和剔除。另外,三角結(jié)構(gòu)單元TSU306通過使用 GB剪切系統(tǒng)200執(zhí)行保護(hù)帶剪切。三角結(jié)構(gòu)單元TSU 306將這些數(shù)據(jù)從上述的處理器提供給 屬性設(shè)置單元ASU 308,屬性設(shè)置單元ASU 308為每個將被渲染(例如,通過像素級插補(bǔ))的基本圖元分別設(shè)置屬性三角值(比 如顏色、深度、透明度、模糊等)。這樣的屬性三角值被送到深 度先進(jìn)先出單元ZFIF0314和AFIFO單元316。例如,如果屬性 設(shè)置單元ASU 308包含Z(深度),屬性三角值處理單元(例如ALU 等)則與深度先進(jìn)先出單元ZFIFO 314 —起來執(zhí)行此類計算,如 本領(lǐng)域人員所知,在深度先進(jìn)先出單元ZFIFO 314中寫入這些 三角值以便后續(xù)在Z-test單元中使用。屬性設(shè)置單元ASU 308與 AFIFO單元3 16協(xié)同動作,執(zhí)行本領(lǐng)域人員所知的像素顏色和紋 理屬性三角值處理,以便在像素級上的進(jìn)一步插補(bǔ)。屬性設(shè)置 單元ASU 308也將三角結(jié)構(gòu)單元TSU邊緣函數(shù)傳遞給STG 310, STG 310提供瓦片生成功能,使得數(shù)據(jù)對象分割為瓦片(例如8x8, 16xl6等),并傳遞至TFIFO單元312。圖4為圖3所示保護(hù)帶剪切系統(tǒng)2 0 0的實施例的部分組件的 示意圖。如前所述,在其中一個實施例中,GB剪切系統(tǒng)200為 三角結(jié)構(gòu)單元TSU 306的一部分,包含輸入狀態(tài)機(jī)(ISM)402、 寄存器模塊404 、頂點索引緩沖器(VIB)406 、頂點緩沖器 (VB)408、頂點處理器410、基本圖元匯編/微小拒絕(PATR)模塊 412 (也被稱為微小拒絕模塊),保護(hù)帶剪切模塊(GBC)414、保ii護(hù)帶頂點緩沖器(GBVB)416 、保護(hù)帶計算邏輯單元(GB ALU)418、三角處理器(TRIPROC)420以及保護(hù)帶屬性輸出狀態(tài) 機(jī)(OSM GBA)才莫塊422。保護(hù)帶屬性輸出狀態(tài)才幾(OSM GBA)才莫 塊422輸出保護(hù)帶頂點屬性的結(jié)果至屬性設(shè)置單元ASU 3 08 ,以 便進(jìn)行進(jìn)一步設(shè)置。圖4中顯示了屬性設(shè)置單元ASU 308還可以 包含其他組件,屬性設(shè)置單元計算邏輯單元ASU ALU424將數(shù) 據(jù)傳送至STG 310、 AFIFO單元316和深度先進(jìn)先出單元ZFIFO 314,如圖3中所描述。保護(hù)帶剪切系統(tǒng)200的有些實施例可以包 含更少、更多或不同的組件。一般來說,保護(hù)帶剪切是在頂點坐標(biāo)(和相關(guān)屬性)依透 視畫法校正和映射到VP 410中的整數(shù)顯示坐標(biāo)后才執(zhí)行的,使 得線性內(nèi)插匹配顯示空間的需求。在一個實施例中,透視畫法 校正全部屬性與XYZ坐標(biāo)判斷同步獲得,可以理解為, 一些頂 點可稍后在GB ALU418中隨著新頂點結(jié)果的計算值而獲得剪 切。因此,如隨后將進(jìn)一步討論的,VP410為至少兩個硬件模 塊服務(wù),他們稱為VIB 406和GBC模塊414。在一個實施例中, GBC模塊414比設(shè)置在VP 410和VIB 406之間的標(biāo)準(zhǔn)階段有更高 的優(yōu)先級,因此來自GBC模塊414的與剪切操作相關(guān)的請求能夠 中斷當(dāng)前來自VIB 406的VP處理。ISM 402用來同步執(zhí)行單元池(EU)數(shù)據(jù)(例如狀態(tài)、命 令、轉(zhuǎn)換的頂點數(shù)據(jù))和CSP數(shù)據(jù)(例如狀態(tài)、命令)。ISM402 將命令和狀態(tài)數(shù)據(jù)傳送至寄存器模塊404,將轉(zhuǎn)換的頂點數(shù)據(jù)傳 送至VIB 406。 VIB 406將頂點數(shù)據(jù)寫入到VB 408。 VIB 406沖艮 據(jù)每個頂點在基本圖元中的位置(例如帶)來判斷^參考數(shù)。 當(dāng)基本圖元被拒絕或完成(若完成則傳送至屬性設(shè)置單元ASU 308 ),在相同或?qū)嵸|(zhì)相同的時間內(nèi),VIB 406更新(自己更新或 依下游模塊的請求更新)所有特定基本圖元的所有頂點的參考數(shù)。當(dāng)VB的任何一個輸入釋放時(比如,當(dāng)所有基本圖元都被拒絕或者都被傳送至屬性設(shè)置單元ASU 308時),VB 408接收從 ISM 402傳送來的頂點數(shù)據(jù)。VP 410從VB 408 (通過VIB406使用索引)接收剪切空間頂 點數(shù)據(jù),執(zhí)行透視畫法校正和視口轉(zhuǎn)換,轉(zhuǎn)換數(shù)據(jù)至整數(shù)顯示 空間。VP 410也產(chǎn)生頂點的剪切碼,;故下游各個才莫塊用來判斷 是否包含微小拒絕或保護(hù)帶剪切。并且,VP410可將轉(zhuǎn)換后的 頂點數(shù)據(jù)傳輸至繪圖管道的下游。在一個實施例中,VP410包 含管道(例如多階段管道架構(gòu))。因此,在標(biāo)準(zhǔn)處理過程中, VP410處理所有即將到來的VIB 406所需的全部頂點,并將數(shù)據(jù) 傳送至PATR一莫塊412和GBC一莫塊414。由VP 410和VIB 406執(zhí)行的標(biāo)準(zhǔn)處理一直進(jìn)行,直到GBC 模塊414傳送信號至VP410表明收到一個剪切事件。 一般地,響 應(yīng)于基于剪切操作的新頂點的產(chǎn)生,GBC才莫塊414請求VP 410 從VIB 406的處理中中斷,XYZ頂點計算和屬性透S見畫法校正一皮 VP410重做(該VP 410重新計算頂點坐標(biāo)和該重新計算的頂點 坐標(biāo)的剪切碼,對與該重新計算的頂點坐標(biāo)相應(yīng)的屬性執(zhí)行一 透視畫法校正,并將該重新計算的頂點坐標(biāo)影射至整數(shù)顯示空 間)。如上所示,VP410通過將所有的當(dāng)前數(shù)據(jù)臨時存儲于頂點 緩沖器而完成如上各種任務(wù),并即時服務(wù)GBC請求。待處理完 GBC請求后,VIB406的處理繼續(xù)進(jìn)行。特別地,為了將要進(jìn)行 保護(hù)帶剪切的基本圖元,VP410從VIB406獲取剪切空間數(shù)據(jù), 然后為剪切的基本圖元產(chǎn)生新頂點。例如,當(dāng)保護(hù)帶剪切事件在后續(xù)管道階段中產(chǎn)生時(比如G B C模塊414的信號表明剪切事 件產(chǎn)生),VP410將數(shù)據(jù)(當(dāng)前階段處理所需的數(shù)據(jù))從VIB 406 中復(fù)制出來,臨時存儲于臨時緩沖器,在一個實施例中,是存 儲于VP410中。當(dāng)服務(wù)GBC請求之后,VP410存取此臨時存儲數(shù)據(jù)并繼續(xù)處理VIB 406的數(shù)據(jù)。VP410處理過之后,PATR模塊412對所有位于視口之外(由 VP410的剪切碼表示)的頂點執(zhí)行微小拒絕??梢允褂靡环N或 多種微小拒絕技術(shù)(在顯示空間或剪切空間中),包括本領(lǐng)域所 公知的負(fù)W,剪切窗,Z近距離,Z遠(yuǎn)距離,剔除距離測試以 及剪切面測試?;緢D元數(shù)據(jù)被傳送至GBC模塊414,其基于VP410產(chǎn)生的 剪切碼判斷是否需要保護(hù)帶剪切,剪切碼還向GBC模塊414暗示 了以保護(hù)帶和視口部分為參照,基本圖元頂點所處的位置。如 果需要剪切,即傳送頂點數(shù)據(jù)至GB VB 416并在GB ALU418中 執(zhí)行剪切計算。剪切后的三角傳送至三角處理器420,在這里執(zhí) 行計算,例如決定性計算,范圍盒,邊緣函數(shù),屬性函數(shù)等本 領(lǐng)域技術(shù)人員所知的方法。三角處理器420的輸出提供至 OSMGBA模塊422,如上所述。OSM GBA模塊422的輸出(頂 點屬性)輸出至屬性設(shè)置單元計算邏輯單元ASU ALU 424,然 后輸出至STG 310和各種FIFO,如上所詳述。屬性i殳置單元ASU ALU 424從OSM GBA模塊422接收剪切后的(或稱為被保護(hù)的) 頂點屬性(Z,顏色、紋理等),并計算三角值,以便在像素處 理階段執(zhí)行進(jìn)一步的插補(bǔ)。這樣,屬性設(shè)置單元計算邏輯單元 ASU ALU 424將三角幾何設(shè)置數(shù)據(jù)從三角處理器420傳送到 STG 310。屬性三角值和任何狀態(tài)信息都被寫入深度先進(jìn)先出 單元ZFIFO 314和AFIFO單元316。圖5描述了圖4所示保護(hù)帶剪切系統(tǒng)的 一個方法實施例的流 程圖,用200a表示。圖6和圖7分別詳細(xì)描述方法200a的相關(guān)部 分。GB剪切方法200a執(zhí)行保護(hù)帶剪切測試502?,F(xiàn)進(jìn)一步參照 圖6, 602步驟,VIB 406從VB 408中存取顯示空間數(shù)據(jù),并在 步驟604提供給VP 410。在其中一個實施例中,此類存取將在GBC模塊414的下游模塊變?yōu)榭臻e狀態(tài)后開始。下列公式表示了 VP410使用偽碼產(chǎn)生剪切碼的機(jī)制wclip—flag = ( |w| < wnear ) || ( |w| > wfar ) xyclip—flag =x0.exp >= GB—range || yO.exp >= GB—range ||xl.exp >= GB—range卄yl.exp >= GB—range ||x2.exp >= GB—range || y2.exp >= GB—range簡而言之,上述偽碼為每一個頂點設(shè)置了剪切標(biāo)志或剪切 碼,其對GBC模塊414表明是否要進(jìn)行保護(hù)帶剪切。驅(qū)動軟件250 設(shè)置不同的wnear和wfar值,并將剪切空間中的深度范圍設(shè)置為 大于顯示空間的z范圍(znear, zfar )。 GB—range與GB范圍指數(shù) 值(例如13, 23 )相對應(yīng)。剪切空間數(shù)據(jù)(例如xO, yO等)被VIB406 從VB 408中存取。請注意,VP410執(zhí)行浮點運算,每一個數(shù)字 具有數(shù)值部分和指數(shù)部分。作為保護(hù)帶剪切測試步驟502的一部分,VIB 406還將顯示 空間數(shù)據(jù)傳輸至PATR模塊412,見步驟606。據(jù)此,步驟608判 斷是否執(zhí)行微小拒絕。PATR模塊412通過給定基本圖元(例如 三角)的頂點的剪切碼來判斷。剪切碼描述了頂點相對于保護(hù) 帶所處的位置,由如上所述的實施例的方法產(chǎn)生。另外,剪切 碼還對于隨后的保留三角(比如沒有^皮剪切處理所^i到)有用, 用來控制新頂點的插補(bǔ)。下列偽碼描述了 PATR模塊412執(zhí)行處 理的實施例If ( wclip—flag|xyclip—flag )Jump to GBC Module 414 Else15Do trivial rejection using screen data from VIB 4061. Negative W rejection, i.e., if w0<=0 && wl<=0 && w2<=02. X/Y rejection against the viewport boundary3. znear rejection,i.e. if z0<0 && zl<0 && z2<04. zfar rejection,i.e. if z0 〉 zfar && zl 〉 zfar && z2 〉zfar從上述偽碼的第二部分可見,如果將要執(zhí)行微小拒絕,在 一個實施例中,微小拒絕的執(zhí)行(步驟610)將基于頂點標(biāo)志的 設(shè)置,而頂點標(biāo)志依據(jù)在二維空間的保護(hù)帶的范圍和來自VIB 406的Z或W使用的顯示空間數(shù)據(jù)的對比而產(chǎn)生。例如,如果三 角的所有三個頂點都位于Z范圍之外(Z<0 ),則此三角被拒絕。 也就是說,如果所有的三個頂點均為負(fù)Z,即使上述偽碼(與 VP410的操作相應(yīng))所描述的情況為真而且三角位于保護(hù)帶以 內(nèi),此三角仍將被拒絕。應(yīng)該注意的是,三角是不可見的,因 為所有的三個頂點均為負(fù)Z。在其中一個實施例中,微小拒絕 的實現(xiàn)包含執(zhí)行Z近距離測試。在Z近距離測試中,對于與各 種頂點組合相應(yīng)的三角段執(zhí)行下列程序設(shè)頂點V。Vn V!V2, v2v。,在Z范圍上產(chǎn)生剪切標(biāo)志 Need—Znear—Clipping=wclip—flag||Z0<0||Zl<0||Z2<0 對于與P AT R沖莫塊412相對應(yīng)的上述偽碼的第 一 部分來說, 沒有被微小拒絕的三角將執(zhí)行保護(hù)帶剪切(步驟5 0 4)。請見圖7, 更進(jìn)一步描述了保護(hù)帶剪切方法504??偟膩碚f,為了保護(hù)帶剪 切,執(zhí)行下列操作(a)如果全部三個頂點的w-O,則拒絕此三角(例如三角的 W均為負(fù)W,則此三角為不可見,拒絕此三角。對Z也一樣);(b) 執(zhí)行xy-剪切(依據(jù)保護(hù)帶邊緣區(qū)域,由畫w〈x〈w, -w<y<w 定義,(依據(jù)xy畫clip碼),為每個XY剪切面(x^w, x=-w, y=w, y二-w));以及(c) 執(zhí)行W-剪切(wnear〈w〈wfar,為每個W剪切面(w=wnear, w=wfar)。更進(jìn)一步說,GBC模塊414從VB 408(通過VIB 406)接收頂 點數(shù)據(jù)(將剪切的)(步驟702),在GB ALU 418中^l行Z近距離剪 切(步驟704 )。在Z近距離剪切中,每個頂點組合(VoVn ViV2, v2v0)都依次被Z近距離平面所剪切。為了定義新的剪切后頂點的坐標(biāo), 執(zhí)行重心插補(bǔ)(由GB ALU 418執(zhí)行重心插補(bǔ))。以v)V2為例, 下列偽碼描述了一個示范性的流程(注意,參考下述輸出緩沖 器,在一個實施例中,參考GBVB416, "r"代表源自邊緣的兩 個頂點所產(chǎn)生的新頂點的比率,"r,,也#皮重心插補(bǔ)以為其他屬性 (例如RGB )所用,包括XYZW):1) If v卜z > 0 && v2.z > 0,put Vi into output buffer, goto 4)If v.z > 0 && v2.z < 0,put Vi into output buffer,goto 3) If v!.z <0 && v2.z > 0,goto 2) If v"〈0 && v2.z <0,goto 4)2) swap v"v2 (interpolate from the inside vertex to the outside vertex)3) Ratio = Vi.z / (v,.z - v2.z)v.x 二 * (1-Ratio) + v2.x * Ratio v.y = v!.y * (l國Ratio) + v2.y * Ratio v.w = Vj.w * (1-Ratio) + v2.w * Ratio v.r0 = v"o * (1-Ratio) + v2.r0 * Ratiov.ri = v卜ri * (1-Ratio) + v2.ri * Ratio v.r2 = Vi.r2 * (1-Ratio) + v2.r2 * Ratio put v into output buffer 4) Move to the next edge在一個實施例中,在執(zhí)行Z近距離剪切的同時,GB ALU 418 執(zhí)行XY剪切和W剪切(步驟706, 708)。在^丸行上述Z近距離剪 切的同時,個別剪切后的頂點存儲于GB VB 416。如果這些頂 點中的至少一個頂點位于視口內(nèi),這個頂點則位于保護(hù)帶中, 用以下表達(dá)式表示-w<x<w,-w<y<w 。 長口jt匕一來, 對于XY剪切,為每個頂點產(chǎn)生(比如由VP410產(chǎn)生)剪切碼, 并產(chǎn)生新頂點(基于剪切程序)。在其中一個實施例中,每個頂 點用下列4個位來描述剪切碼(比如左,右,底,頂)Bit0= (x<_w)Bit, = (x > w)Bit2= (y<-w)Bit3= (y>w)下面繼續(xù)描述XY剪切程序,在其中一個實施例中,GB ALU 418執(zhí)行左、右、底、頂?shù)募羟?。在每個剪切階段的過程中,使 用一個或多個緩沖器(比如包含VB416)來臨時地存儲頂點數(shù) 據(jù)。例如,用一個緩沖器存儲輸入,用另一個緩沖器存儲輸出。 舉例來說,GB ALU 418執(zhí)行下列偽碼1) Fetch Vi,v2 from input buffer in sequence.2) If v卜Bito == 0 && v2.Bito == 0, put Vi into output buffer, goto 5)If v!.Bito 0 && v2.Bit0 == 1,put Vi into output buffer, goto 4)If v卜Bito == 1 && v2. Bito == 0,goto 3)v2. Bito == 1,goto 5)3) swap v2 (always interpolate from the inside vertex to the outside vertex4) dl = v卜x + v卜w d2 : v2.x + v2.wRatio = dl / (dl - d2)v.x = v!.x * (1-Ratio) + v2.x * Ratio v.y = v!.y * (1-Ratio) + v2.y * Ratio v.w = vi.w*(l-Ratio) + v2'w * Ratio v.r0 = vi.r0 * (1-Ratio) + v2.r0 * Ratio v.n = vi.r! * (1-Ratio) + v2.ri * Ratio v.r2 = vi.r2 * (1-Ratio) + v2.r2 * Ratio compute v,s clipcode put v into output buffer5) If not swapped (Vi, v2),v! move forward to v26) If Vi is the first one of input buffer, end.Else v2 move forward to the next vertex in GB VB 416, goto2)GB VB 416可以存儲一系列的頂點(比如8個),這一系列的 頂點由vO位于頭部,各點連起來組成一個扇形,其伴隨著保護(hù) 帶標(biāo)志輸出至三角處理器420。例如,可以用保護(hù)帶標(biāo)志來定義 剪切后頂點的屬性值的插補(bǔ)命令。請注意,雖然在以上描述中 偽碼為并行處理,但是W剪切和XY剪切可以按順序執(zhí)行。隨后, 執(zhí)行三角匯編(比如,由GB ALU 418執(zhí)行)。三角匯編之后, 屬性設(shè)置單元ASU 308的屬性設(shè)置單元計算邏輯單元ASU ALU 424執(zhí)行屬性插補(bǔ)。為了計算新三角的屬性值,屬性設(shè)置單元計 算邏輯單元ASU ALU 424向GB VB 416請求比率,向VB 408請19求屬性。圖5至圖7的流程圖顯示了保護(hù)帶剪切系統(tǒng)200和相應(yīng)的方 法200a的架構(gòu)、功能和/或操作的實施例。在這點上,每個方塊 代表一個或多個模塊的各種功能。應(yīng)當(dāng)理解的是,其他可替代 的裝置、元件、功能、流程可以超出圖5至圖7所描述的范圍。 例如,圖5中用兩個方塊相連接所表示的流程也可以部分為兩個 方塊而連續(xù)的執(zhí)行,或者有時也可以以倒序4丸行,這取決于所 需的功能。以上所述僅為本發(fā)明較佳實施例,然其并非用以限定本發(fā) 明的范圍,任何熟悉本項技術(shù)的人員,在不脫離本發(fā)明的精神 和范圍內(nèi),可在此基礎(chǔ)上做進(jìn)一步的改進(jìn)和變化,因此本發(fā)明 的保護(hù)范圍當(dāng)以本申請的權(quán)利要求書所界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種繪圖處理器中的保護(hù)帶剪切系統(tǒng),其特征在于,包含一頂點處理器,將轉(zhuǎn)換后的頂點數(shù)據(jù)轉(zhuǎn)換至整數(shù)顯示空間,產(chǎn)生剪切碼并將轉(zhuǎn)換后的頂點數(shù)據(jù)傳輸至繪圖管道的下游;以及一保護(hù)帶剪切模塊耦接到該頂點處理器,一保護(hù)帶計算邏輯單元耦接到該保護(hù)帶剪切模塊,該保護(hù)帶剪切模塊用來判斷與該轉(zhuǎn)換后的頂點數(shù)據(jù)相應(yīng)的基本圖元是否需要剪切,依據(jù)該判斷,將該基本圖元傳輸至該保護(hù)帶計算邏輯單元,以執(zhí)行保護(hù)帶剪切。
2. 根據(jù)權(quán)利要求1所述的繪圖處理器中的保護(hù)帶剪切系 統(tǒng),其特征在于,該頂點處理器通過經(jīng)由一頂點索引緩沖器存 取 一 頂,泉緩沖器來執(zhí)行該轉(zhuǎn)換后的頂,泉數(shù)據(jù)的標(biāo)準(zhǔn)處理。
3. 根據(jù)權(quán)利要求2所述的繪圖處理器中的保護(hù)帶剪切系 統(tǒng),其特征在于,響應(yīng)于該保護(hù)帶計算邏輯單元所執(zhí)行的一保 護(hù)帶剪切操作,該保護(hù)帶剪切模塊還用來通過該頂點處理器請 求該標(biāo)準(zhǔn)處理的 一 中斷。
4. 根據(jù)權(quán)利要求3所述的繪圖處理器中的保護(hù)帶剪切系統(tǒng), 其特征在于,響應(yīng)于該中斷,該頂點處理器重新計算頂點坐標(biāo) 和該重新計算的頂點坐標(biāo)的剪切碼,對與該重新計算的頂點坐 標(biāo)相應(yīng)的屬性^l行一透一見畫法4交正,并將該重新計算的頂點坐 標(biāo)影射至整數(shù)顯示空間。
5. 根據(jù)權(quán)利要求1所述的繪圖處理器中的保護(hù)帶剪切系統(tǒng), 其特征在于,還包含如下兩者之一一微小拒絕模塊,依據(jù)來自該頂點處理器的剪切碼判斷是 否需要執(zhí)行基本圖元的微小拒絕,并響應(yīng)該判斷,該微小拒絕 模塊用來執(zhí)行該微小拒絕;一屬性設(shè)置單元,從該保護(hù)帶剪切系統(tǒng)接收保護(hù)帶剪切數(shù) 據(jù),并為每一個將被渲染的基本圖元分別設(shè)置屬性三角值。
6. 根據(jù)權(quán)利要求1所述的繪圖處理器中的保護(hù)帶剪切系統(tǒng), 其特征在于,該保護(hù)帶剪切模塊還用來依據(jù)來自該頂點處理器 的剪切碼判斷是否需要執(zhí)行基本圖元的保護(hù)帶剪切。
7. 根據(jù)權(quán)利要求1所述的繪圖處理器中的保護(hù)帶剪切系統(tǒng), 其特征在于,該保護(hù)帶剪切計算邏輯單元用來執(zhí)行重心插補(bǔ), 以定義新剪切的頂點的坐標(biāo)。
8. —種保護(hù)帶剪切方法,其特征在于,包含 向繪圖管道的下游傳輸轉(zhuǎn)換后的頂點數(shù)據(jù);在保護(hù)帶剪切模塊中判斷與轉(zhuǎn)換后的頂點數(shù)據(jù)相應(yīng)的基本 圖元是否需要剪切;以及依據(jù)所述判斷,執(zhí)行保護(hù)帶剪切并執(zhí)行插補(bǔ),以在保護(hù)帶 剪切計算邏輯單元中定義新剪切的頂點的坐標(biāo)。
9. 根據(jù)權(quán)利要求8所述的保護(hù)帶剪切方法,其特征在于, 該插^卜為重心4翁^卜。
10. 根據(jù)權(quán)利要求8所述的保護(hù)帶剪切方法,其特征在于, 還包含存儲該轉(zhuǎn)換后的頂點數(shù)據(jù)并在 一通過一 頂點索引緩沖器索 引的頂點緩沖器中剪切空間頂點數(shù)據(jù)。
11. 根據(jù)權(quán)利要求10所述的保護(hù)帶剪切方法,其特征在于, 還包含通過經(jīng)由該頂點索引緩沖器存取該頂點緩沖器,處理該轉(zhuǎn) 換后的頂點數(shù)據(jù)。
12. 根據(jù)權(quán)利要求ll所述的保護(hù)帶剪切方法,其特征在于, 還包含響應(yīng)于該保護(hù)帶剪切計算邏輯單元所執(zhí)行的一保護(hù)帶剪切操作,該保護(hù)帶剪切模塊請求 一 頂點處理器標(biāo)準(zhǔn)操作的中斷。
13. 根據(jù)權(quán)利要求12所述的保護(hù)帶剪切方法,其特征在于,還包含該頂點處理器響應(yīng)于該中斷喉文出如下步驟重新計算頂點坐標(biāo)并為該重新計算的頂點坐標(biāo)重新計算剪切碼;為與該重新計算的頂點坐標(biāo)相應(yīng)的屬性執(zhí)行透視畫法校正;以及影射該重新計算的頂點坐標(biāo)至整數(shù)顯示空間。
14. 根據(jù)權(quán)利要求8所述的保護(hù)帶剪切方法,其特征在于, 還包含如下三者之一一微小拒絕模塊依據(jù)來自 一頂點處理器的剪切碼判斷基本 圖元是否需要執(zhí)行微小拒絕;依據(jù)來自 一頂點處理器的剪切碼判斷基本圖元是否需要執(zhí)行保護(hù)帶剪切;一屬性設(shè)置單元從保護(hù)帶剪切系統(tǒng)中接收保護(hù)帶剪切處理 后的數(shù)據(jù),并為每一個將被渲染的基本圖元分別設(shè)置屬性三角值。
全文摘要
本發(fā)明揭露了一種繪圖處理器中的保護(hù)帶剪切系統(tǒng)、保護(hù)帶剪切方法。在一個系統(tǒng)實施例中,本系統(tǒng)包含一頂點處理器,將轉(zhuǎn)換的頂點數(shù)據(jù)轉(zhuǎn)換至整數(shù)顯示空間并將該轉(zhuǎn)換的頂點數(shù)據(jù)向繪圖管道的下游傳送;一保護(hù)帶剪切模塊,耦接到該頂點處理器;一保護(hù)帶計算邏輯單元,耦接到該保護(hù)帶剪切模塊,該保護(hù)帶剪切模塊判斷與該轉(zhuǎn)換的頂點數(shù)據(jù)相應(yīng)的基本圖元是否需要執(zhí)行剪切;以及基于此判斷,將該基本圖元傳送至該保護(hù)帶計算邏輯單元以執(zhí)行保護(hù)帶剪切。本發(fā)明所述的繪圖處理器中的保護(hù)帶剪切系統(tǒng)、保護(hù)帶剪切方法,提供了高效、高速的計算,減少了復(fù)雜性。
文檔編號G06T15/10GK101261744SQ200810084828
公開日2008年9月10日 申請日期2008年3月27日 優(yōu)先權(quán)日2008年3月27日
發(fā)明者翁國尹, 許云杰 申請人:威盛電子股份有限公司