專利名稱:使用統(tǒng)一著色器的圖形處理結構的制作方法
技術領域:
本發(fā)明通常涉及一種圖形處理器,并且尤其涉及一種使用單個著色器的圖形處理器結構。
背景技術:
在計算機圖形應用中,通過對多個被稱為圖元的簡單對象的采樣、互連和渲染而形成復雜形狀和結構。這種圖元可以是三角形或者其它適當?shù)亩噙呅?。這些圖元又由單獨像素的互連形成。然后將顏色和紋理應用于單獨像素,所述單獨像素包括基于它們在圖元中的位置的形狀和相對于所產(chǎn)生的形狀的圖元方位;從而產(chǎn)生被渲染到相應的顯示器以便以后觀看的對象。
通常圖形處理器執(zhí)行圖元的互連以及將顏色和紋理應用于所產(chǎn)生的形狀。傳統(tǒng)圖形處理器包括一系列著色器,其指定如何以及以什么相應的屬性在屏幕或者適當?shù)娘@示裝置上繪制最終圖像。如圖1所示,傳統(tǒng)著色器10可表示為接收多個輸入數(shù)據(jù)位的處理模塊12,例如所述輸入數(shù)據(jù)位可以為諸如對象空間(x,y,z)中的對象形狀數(shù)據(jù)(14);諸如顏色(16)的對象的材料特性;紋理信息(18);亮度信息(20)和視角信息(22),并且提供有以應用于(x′,y′,z′)的紋理和其它外觀特性表示對象的輸出數(shù)據(jù)(28)。
例如,如圖2A-2B所示,所述著色器接收表示立方體30(圖2A)的頂點坐標數(shù)據(jù)作為輸入并且提供表示例如立方體30′(圖2B)的透視修正圖的數(shù)據(jù)作為輸出。例如,可以通過將適當?shù)霓D換矩陣應用到表示初始立方體30的數(shù)據(jù)而提供所述修正圖。更具體地,頂點著色器提供圖2B中所示的表示,所述頂點著色器接收表示在立方體30中的頂點VX、VY和VZ的數(shù)據(jù)作為輸入,并且提供包括相應的立方體30′的任何外觀屬性的角度定位頂點VX′、VY′和VZ′。
除了上述頂點著色器外,當產(chǎn)生用于顯示的對象時,還使用稱為像素著色器的在像素級上操作的著色處理模塊。通常,所述像素著色器提供與所渲染的對象的各個像素相關的顏色值。傳統(tǒng)上,頂點著色器和像素著色器是被配置來只執(zhí)行單個轉換或操作的獨立的元件。因此,為了執(zhí)行輸入的位置和紋理轉換,需要使用至少兩個著色操作和至少兩個著色器。為了產(chǎn)生對象,傳統(tǒng)圖形處理器需要使用頂點著色器和像素著色器。因為需要兩種類型的著色器,所以已知的圖形處理器在尺寸上相對比較大,其大多數(shù)有效面積被頂點和像素著色器占據(jù)。
除了與傳統(tǒng)圖形處理器相關的有效面積損失外,還有相應的與其相關的性能損失。在傳統(tǒng)圖形處理器中,頂點著色器和像素著色器順次地流水線式地并置,頂點著色器放置在前并且在像素著色器能夠對單獨像素數(shù)據(jù)進行操作之前對頂點數(shù)據(jù)進行操作。
因此,需要使用空間高效的和計算有效的著色器的改進的圖形處理器。
發(fā)明內(nèi)容
簡言之,本發(fā)明設計了一種使用統(tǒng)一著色器的圖形處理器,所述統(tǒng)一著色器能夠以節(jié)省空間和計算高效的方式執(zhí)行頂點操作和像素操作。在示例性實施例中,根據(jù)本發(fā)明的圖形處理器包括判優(yōu)器電路,用于響應于控制信號選擇多個輸入中的一個用于處理;以及著色器,與判優(yōu)器電路耦合,用于處理多個輸入中的所選擇的一個,所述著色器包括用于執(zhí)行頂點操作和像素操作的部件,其中所述著色器基于多個輸入中的所選擇的一個執(zhí)行頂點操作或像素操作中的一個。
所述著色器包括通用寄存器模塊,用于存儲至少多個所選擇的輸入;序列器,用于存儲執(zhí)行頂點和像素操縱操作所用的邏輯和算術指令;以及處理器,能夠根據(jù)保存在所述序列器中的指令對所選擇的輸入進行浮點算術和邏輯操作。本發(fā)明的著色器被稱為“統(tǒng)一”著色器是因為它被配置來執(zhí)行頂點和像素操作。通過使用本發(fā)明的統(tǒng)一著色器,相關的圖形處理器比傳統(tǒng)圖形處理器更加空間有效,因為統(tǒng)一著色器比傳統(tǒng)多著色器處理器結構占據(jù)更少的有效面積。
此外,根據(jù)本發(fā)明,所述統(tǒng)一著色器更加計算有效,因為它允許著色器基于工作量被靈活地分配給像素或頂點。
結合以下附圖,通過查看本發(fā)明的以下詳細描述,可以更好地理解本發(fā)明及其相關優(yōu)點和特征,在附圖中,相同的數(shù)字代表相同的元件,其中圖1為傳統(tǒng)著色器的示意性方框圖;圖2A-2B為由圖1所示的著色器執(zhí)行的操作的圖形表示;圖3為傳統(tǒng)圖形處理器結構的示意性方框圖;圖4A為根據(jù)本發(fā)明的圖形處理器結構的示意性方框圖;圖4B為根據(jù)本發(fā)明的替換實施例的圖形處理器的可選輸入組件的示意性方框圖;以及圖5為在圖4A中所示的圖形處理器中使用的統(tǒng)一著色器的分解示意性方框圖。
具體實施例方式
圖3描繪了結合有傳統(tǒng)流水線結構的圖形處理器。如圖所示,圖形處理器40包括頂點取得模塊42,其通過線41接收來自片外存儲器55的與待渲染的圖元相關的頂點信息。然后通過線43將所取得的頂點數(shù)據(jù)傳輸?shù)巾旤c高速緩存44以存儲。一旦請求,就通過線45將保存在頂點高速緩存44中的頂點數(shù)據(jù)傳輸至頂點著色器46。如上所述,被頂點著色器46請求并傳輸至頂點著色器46的信息的實例包括對象形狀、材料特性(例如顏色)、紋理信息以及視角。通常,頂點著色器46為可編程機制,該可編程機制將轉換位置矩陣應用到輸入的位置信息(從頂點高速緩存44獲得),從而提供表示待渲染的對象的透視修正圖像及其紋理或顏色坐標的數(shù)據(jù)。
在執(zhí)行轉換操作后,通過線47向頂點儲存器48提供表示轉換后的頂點的數(shù)據(jù)。然后頂點儲存器48通過線49將其中包括的修改后的頂點信息傳輸至圖元組合模塊50。圖元組合模塊50將輸入的頂點信息組合或者轉換為多個待隨后處理的圖元。將輸入的頂點信息組合為圖元的適當?shù)姆椒ㄔ诒绢I域中公知并且在此將不再詳細討論。然后將所組合的圖元傳輸至光柵化引擎52,光柵化引擎52通過稱為步進(walking)的處理將先前組合的圖元轉換為像素數(shù)據(jù)。然后通過線53將產(chǎn)生的像素數(shù)據(jù)傳輸至像素著色器54。
像素著色器54產(chǎn)生將被應用于給定像素的顏色和額外外觀屬性,并且將外觀屬性應用到各個像素。此外,像素著色器54能夠從由來自光柵化引擎52的像素數(shù)據(jù)索引的紋理地圖57中取得紋理數(shù)據(jù),而這是通過在線55上將這樣的信息傳輸?shù)郊y理地圖。然后通過線57′將所請求的紋理數(shù)據(jù)從紋理地圖57傳輸回來,并且在通過線58被路由至像素著色器前存儲在紋理高速緩存56中。一旦接收到紋理數(shù)據(jù),像素著色器54對接收到的紋理數(shù)據(jù)進行指定的邏輯或算術操作以生成像素顏色或其它感興趣的外觀屬性。然后將所生成的像素外觀屬性與通過線53由光柵化引擎提供的基色相結合,從而向感興趣的位置處對應的像素提供像素顏色。然后將線59上的像素外觀屬性傳輸至后光柵處理模塊(未顯示)。
如上所述,傳統(tǒng)圖形處理器40需要使用兩個獨立的著色器頂點著色器46和像素著色器54。與這樣的結構相關的缺陷是圖形處理器的總覆蓋區(qū)相對大,因為兩個著色器占據(jù)大量的有效面積。與傳統(tǒng)圖形處理器結構相關的另一缺陷是其計算效率較差。
現(xiàn)在參考圖4A,在一個示例性實施例中,本發(fā)明的圖形處理器60包括多路器66,所述多路器66具有在第一個輸入處提供的頂點(例如索引)數(shù)據(jù),以及在第二個輸入處提供的來自光柵化引擎74的內(nèi)插像素參數(shù)(例如位置)數(shù)據(jù)和屬性數(shù)據(jù)。通過線63將由判優(yōu)器64產(chǎn)生的控制信號傳輸至多路器66。判優(yōu)器64確定將多路器66的兩個輸入中的哪個傳輸至統(tǒng)一著色器62用于進一步處理。判優(yōu)器64使用的判優(yōu)方案如下如果在統(tǒng)一著色器62中有足夠的資源可用,則通過線65將多路器66的第一個輸入處的頂點數(shù)據(jù)傳輸至統(tǒng)一著色器62以對該頂點數(shù)據(jù)進行操作;否則,將第二個輸入處的內(nèi)插像素參數(shù)數(shù)據(jù)傳遞至統(tǒng)一著色器62用于進一步處理。
簡要參考圖5,現(xiàn)在描述統(tǒng)一著色器62。如圖所示,統(tǒng)一著色器62包括通用寄存器模塊92,多個源寄存器包括源寄存器A 93、源寄存器B 95和源寄存器C 97,處理器(例如CPU)96和序列器99。通用寄存器模塊92包括六十四個寄存器,或者可用的輸入,用于儲存通過線65從多路器66傳輸?shù)男畔⒒蛘呷魏纹渌诮y(tǒng)一著色器中保存的信息。通過線109將通用寄存器模塊92中的數(shù)據(jù)傳輸至多個源寄存器。
處理器96可以包括專用硬件塊或者可以配置成通用計算設備(即,個人計算機)的部分。在一個示例性實施例中,處理器96用于執(zhí)行32位浮點算術操作和對相應操作數(shù)的一系列邏輯操作。如圖所示,所述處理器被邏輯上分成兩個部分。例如,部分96被配置來執(zhí)行統(tǒng)一著色器的32位浮點算術操作。第二個部分96A被配置來執(zhí)行統(tǒng)一著色器的定標器(scaler)操作(例如對數(shù)、指數(shù)、反平方根)。
序列器99包括常量模塊91和指令儲存器98。常量模塊91例如包括用于連接頂點操縱操作的幾個轉換矩陣。指令儲存器98包括由處理器96執(zhí)行的必要指令,用于對通用寄存器模塊92中保存的由源寄存器93-95提供的數(shù)據(jù)執(zhí)行分別的算術和邏輯操作。指令儲存器98還包括存儲器取得指令,當執(zhí)行所述存儲器取得指令時,所述存儲器取得指令使統(tǒng)一著色器62從存儲器82(圖4A)取得紋理以及其它類型的數(shù)據(jù)。在操作中,序列器99確定將要執(zhí)行的下一指令(來自指令儲存器98)是算術或邏輯指令還是存儲器(例如紋理取得)指令。如果下一指令是存儲器指令或者請求,則序列器99發(fā)送請求至取得模塊(未顯示),該取得模塊從存儲器82(圖4A)檢索所需信息。下面將詳細描述通過頂點紋理高速緩存68(圖4A)將所檢索的信息傳輸至序列器99。
如果待執(zhí)行的下一指令是算術或邏輯指令,則序列器99將適當?shù)牟僮鲾?shù)從通用寄存器模塊92轉移至適當?shù)脑醇拇嫫?93,95,97)用于執(zhí)行,并且通過線101向處理器96發(fā)送適當?shù)男盘杹碇甘緦υ醇拇嫫髦械膸讉€操作數(shù)進行什么操作或者什么系列操作。此時,處理器96對源寄存器中的操作數(shù)執(zhí)行指令并且通過線85提供結果。線85上的信息可以被傳輸回通用寄存器模塊92用于存儲,或者被傳輸至圖形處理器60后面的組件。
如上所述,指令儲存器98保存頂點操縱指令和像素操縱指令。因此,本發(fā)明的統(tǒng)一著色器99能夠執(zhí)行頂點和像素操作以及執(zhí)行存儲器取得操作。同樣地,本發(fā)明的統(tǒng)一著色器62能夠基于從多路器傳遞來的信息對圖形控制器中的數(shù)據(jù)執(zhí)行頂點著色和像素著色操作。通過用來執(zhí)行存儲器取得,本發(fā)明的統(tǒng)一著色器能夠執(zhí)行傳統(tǒng)頂點著色器不能執(zhí)行的額外處理;同時執(zhí)行像素操作。
通過能夠非??焖俚卦诒4嬗谥噶顑Υ嫫?8中的這種程序或指令之間自由地切換,統(tǒng)一著色器62能夠以各種完成程度同時執(zhí)行頂點操縱操作和像素操縱操作。在應用中,將待處理的頂點數(shù)據(jù)從多路器66傳輸至通用寄存器模塊92。然后指令儲存器98通過線101將相應的控制信號傳遞到處理器96以執(zhí)行這種頂點操作。然而,如果通用寄存器模塊92沒有足夠可用的空間以存儲進入的頂點數(shù)據(jù)的話,則由于不滿足判優(yōu)器64的判優(yōu)方案而不傳輸這種信息。通過這種方式,基于保存在指令儲存器98中的指令,繼續(xù)處理器96將要執(zhí)行或者正在執(zhí)行的任何像素計算操作,直到可獲得足夠的通用寄存器模塊92中的寄存器。因此,通過共享統(tǒng)一著色器62中的資源,則由于不存在與處理器96相關的停機時間而增強了對圖像數(shù)據(jù)的處理。
回頭參考圖4A,圖形處理器60還包括高速緩存模塊70,高速緩存模塊70包括參數(shù)高速緩存70A和位置高速緩存70B,其通過線85接收統(tǒng)一著色器62的基于像素的輸出并且將各自的像素參數(shù)和位置信息儲存在相應的高速緩存中。然后通過線71將高速緩存模塊70中的像素信息傳輸至圖元組合模塊72。圖元組合模塊72負責將從高速緩存模塊70傳輸?shù)狡渲械男畔⒔M合為一系列三角形或者其它適當?shù)膱D元用于進一步處理。然后通過線73將所組合的圖元傳輸至光柵化引擎模塊74,在該光柵化引擎模塊74處通過步進處理或任何其它適當?shù)南袼厣商幚韺⑺鶄鬏數(shù)膱D元轉換為單獨像素數(shù)據(jù)。從光柵化引擎模塊74產(chǎn)生的像素數(shù)據(jù)為通過線75傳輸至多路器66的第二個輸入的內(nèi)插像素參數(shù)數(shù)據(jù)。
在通過多路器66將頂點數(shù)據(jù)傳輸至統(tǒng)一著色器62的情況下,將處理器96產(chǎn)生的結果頂點數(shù)據(jù)傳輸至渲染后端模塊76,所述渲染后端模塊76將產(chǎn)生的頂點數(shù)據(jù)轉換成幾種適于以后在顯示裝置84上顯示的格式中的至少一種。例如,如果將被染色的玻璃外觀效應應用到圖像,則由渲染后端76將與這種外觀效應對應的信息與適當?shù)奈恢脭?shù)據(jù)相關聯(lián)。經(jīng)由存儲控制器78將來自渲染后端76的信息傳輸?shù)酱鎯ζ?2和顯示控制器線80。然后通過線83將這種適當?shù)馗袷交蟮男畔鬏斠栽陲@示裝置84上表現(xiàn)。
現(xiàn)在參照圖4B,其中顯示了頂點模塊61,其用于在根據(jù)本發(fā)明的替換實施例的多路器66的第一個輸入處提供頂點信息。頂點模塊61包括頂點取得模塊61A,其負責當請求時從存儲器82檢索頂點信息,并且將所述頂點信息傳輸至頂點高速緩存61B。存儲在頂點高速緩存61B中的信息包括耦合至多路器66的第一個輸入的頂點信息。
如上所述,本發(fā)明的圖形處理器60包括統(tǒng)一著色器62,其能夠基于儲存在指令儲存器98中的指令執(zhí)行頂點操縱操作和像素操縱操作。通過這種方法,由于不再需要單獨的頂點著色器和像素著色器,所以本發(fā)明的圖形處理器60比傳統(tǒng)圖形處理器占據(jù)更小的有效面積。此外,統(tǒng)一著色器62能夠在執(zhí)行頂點操縱操作和像素操縱操作之間轉換,由于一種類型的數(shù)據(jù)操作不依賴于另一種類型的數(shù)據(jù)操作,所以提高了圖形處理效率。因此,克服了由于傳統(tǒng)圖形處理器中的依賴性操作而產(chǎn)生的性能損失。
本發(fā)明的上述詳細描述和其中描述的實例用于說明和描述的目的。因此希望本發(fā)明包括在這里公開和要求的基本原理范圍之內(nèi)的所有修改、變形和等價物。
權利要求
1.一種圖形處理器(60),包括判優(yōu)器電路(64),用于響應于控制信號選擇多個輸入中的一個;以及著色器(62),與所述判優(yōu)器電路(64)耦合,用于處理所述多個輸入中所選擇的一個,所述著色器(62)包括執(zhí)行頂點操作和像素操作的部件,并且基于所述多個輸入中所選擇的一個執(zhí)行所述頂點操作或者像素操作中的一個,其中所述著色器(62)提供外觀屬性。
2.根據(jù)權利要求1所述的圖形處理器,還包括頂點儲存模塊(70),用于保存頂點信息。
3.根據(jù)權利要求2所述的圖形處理器,其中所述頂點儲存模塊(70)還包括參數(shù)高速緩存(70A),用于為相應的頂點保存外觀屬性數(shù)據(jù);以及位置高速緩存(70B),用于為相應的頂點保存位置數(shù)據(jù)。
4.根據(jù)以上權利要求中任一項所述的圖形處理器,其中所述外觀屬性是顏色、光照、紋理、標準和位置數(shù)據(jù)中的至少一種。
5.根據(jù)權利要求4所述的圖形處理器,其中所述外觀屬性為顏色,并且當所述多個輸入中所選擇的一個為像素數(shù)據(jù)時將所述顏色與相應的像素相關聯(lián)。
6.根據(jù)權利要求4或權利要求5所述的圖形處理器,其中所述外觀屬性為位置,并且當所述多個輸入中所選擇的一個為頂點數(shù)據(jù)時將所述位置屬性與相應的頂點相關聯(lián)。
7.根據(jù)以上權利要求中任一項所述的圖形處理器,其中所述外觀值為深度。
8.根據(jù)以上權利要求中任一項所述的圖形處理器,包括選擇電路,所述選擇電路包括多路器(66),其與所述判優(yōu)器(64)耦合,其中所述判優(yōu)器(64)提供控制信號以控制所述多路器選擇所需輸入(66)。
9.根據(jù)以上權利要求中任一項所述的圖形處理器,其中所述著色器(62)提供頂點位置數(shù)據(jù)并且還包括圖元組合模塊(72),其與所述著色器(62)耦合,用于響應于所述頂點位置數(shù)據(jù)而產(chǎn)生圖元。
10.根據(jù)權利要求9所述的圖形處理器,還包括光柵引擎(74),其與所述圖元組合模塊(72)耦合,用于響應于組合后的頂點數(shù)據(jù)產(chǎn)生像素參數(shù)數(shù)據(jù)。
11.根據(jù)以上權利要求中任一項所述的圖形處理器,其中所述著色器(62)響應于所述多個輸入中所選擇的一個產(chǎn)生像素顏色信息。
12.根據(jù)以上權利要求中任一項所述的圖形處理器,其中所述著色器(62)包括寄存器模塊,用于保存所述多個輸入中所選擇的一個;計算元件,用于對保存在所述寄存器模塊中的所述數(shù)據(jù)執(zhí)行算術和邏輯操作;以及序列器,用于保存由所述計算元件執(zhí)行的指令。
13.根據(jù)以上權利要求中任一項所述的圖形處理器,其中所述著色器(62)還包括用于訪問存儲器(82)的電路。
14.一種統(tǒng)一著色器,包括通用寄存器模塊(92),用于保存數(shù)據(jù);處理器單元(96);以及序列器(99),其與所述通用寄存器模塊(92)和所述處理器單元(96)耦合,所述序列器(99)保存指令,所述指令用于使所述處理器單元(96)對保存在所述通用寄存器模塊(92)中的所選擇的數(shù)據(jù)執(zhí)行頂點計算和像素計算操作。
15.根據(jù)權利要求14所述的著色器,其中所述序列器(99)還包括用于從存儲器取得數(shù)據(jù)的電路。
16.根據(jù)權利要求14或權利要求15所述的著色器,還包括選擇電路,用于響應于控制信號向所述通用寄存器模塊(92)提供信息。
17.根據(jù)權利要求16所述的著色器,其中所述選擇電路為多路器(66)并且由判優(yōu)器(64)提供所述控制信號。
18.根據(jù)權利要求14至17中任一項所述的著色器,其中所述處理器單元(96)響應于所述多個輸入中所選擇的一個執(zhí)行產(chǎn)生像素顏色的指令。
19.根據(jù)權利要求14至18中任一項所述的著色器,其中當所述像素計算仍在進行時,所述處理器單元(96)執(zhí)行頂點計算。
20.根據(jù)權利要求14至19中任一項所述的著色器,其中所述處理器單元(96)響應于所述多個輸入中所選擇的一個產(chǎn)生頂點位置和外觀數(shù)據(jù)。
全文摘要
公開了一種使用單個著色器的圖形處理結構。所述結構包括用于響應于控制信號選擇多個輸入中的一個的電路;以及著色器,其與判優(yōu)器耦合,用于處理所述多個輸入中所選擇的一個,所述著色器包括執(zhí)行頂點操作和像素操作的部件,并且其中所述著色器基于所述多個輸入中所選擇的一個執(zhí)行所述頂點操作和像素操作中的一個。所述著色器包括寄存器模塊,用于存儲多個被選擇的輸入;序列器,其保存頂點操縱和像素操縱指令;以及處理器,其能夠響應于保存在所述序列器中的指令對所選擇的輸入進行浮點算術和邏輯操作。
文檔編號G06T15/00GK1947156SQ200480040570
公開日2007年4月11日 申請日期2004年11月19日 優(yōu)先權日2003年11月20日
發(fā)明者史蒂文·莫雷因, 勞倫特·勒費布爾, 安迪·格魯伯, 安迪·斯肯德 申請人:Ati技術公司