使用統一著色器的圖形處理結構的製作方法
2023-11-12 04:09:07 3
專利名稱:使用統一著色器的圖形處理結構的製作方法
技術領域:
本發明通常涉及一種圖形處理器,並且尤其涉及一種使用單個著色器的圖形處理器結構。
背景技術:
在計算機圖形應用中,通過對多個被稱為圖元的簡單對象的採樣、互連和渲染而形成複雜形狀和結構。這種圖元可以是三角形或者其它適當的多邊形。這些圖元又由單獨像素的互連形成。然後將顏色和紋理應用於單獨像素,所述單獨像素包括基於它們在圖元中的位置的形狀和相對於所產生的形狀的圖元方位;從而產生被渲染到相應的顯示器以便以後觀看的對象。
通常圖形處理器執行圖元的互連以及將顏色和紋理應用於所產生的形狀。傳統圖形處理器包括一系列著色器,其指定如何以及以什麼相應的屬性在屏幕或者適當的顯示裝置上繪製最終圖像。如圖1所示,傳統著色器10可表示為接收多個輸入數據位的處理模塊12,例如所述輸入數據位可以為諸如對象空間(x,y,z)中的對象形狀數據(14);諸如顏色(16)的對象的材料特性;紋理信息(18);亮度信息(20)和視角信息(22),並且提供有以應用於(x′,y′,z′)的紋理和其它外觀特性表示對象的輸出數據(28)。
例如,如圖2A-2B所示,所述著色器接收表示立方體30(圖2A)的頂點坐標數據作為輸入並且提供表示例如立方體30′(圖2B)的透視修正圖的數據作為輸出。例如,可以通過將適當的轉換矩陣應用到表示初始立方體30的數據而提供所述修正圖。更具體地,頂點著色器提供圖2B中所示的表示,所述頂點著色器接收表示在立方體30中的頂點VX、VY和VZ的數據作為輸入,並且提供包括相應的立方體30′的任何外觀屬性的角度定位頂點VX′、VY′和VZ′。
除了上述頂點著色器外,當產生用於顯示的對象時,還使用稱為像素著色器的在像素級上操作的著色處理模塊。通常,所述像素著色器提供與所渲染的對象的各個像素相關的顏色值。傳統上,頂點著色器和像素著色器是被配置來只執行單個轉換或操作的獨立的元件。因此,為了執行輸入的位置和紋理轉換,需要使用至少兩個著色操作和至少兩個著色器。為了產生對象,傳統圖形處理器需要使用頂點著色器和像素著色器。因為需要兩種類型的著色器,所以已知的圖形處理器在尺寸上相對比較大,其大多數有效面積被頂點和像素著色器佔據。
除了與傳統圖形處理器相關的有效面積損失外,還有相應的與其相關的性能損失。在傳統圖形處理器中,頂點著色器和像素著色器順次地流水線式地並置,頂點著色器放置在前並且在像素著色器能夠對單獨像素數據進行操作之前對頂點數據進行操作。
因此,需要使用空間高效的和計算有效的著色器的改進的圖形處理器。
發明內容
簡言之,本發明設計了一種使用統一著色器的圖形處理器,所述統一著色器能夠以節省空間和計算高效的方式執行頂點操作和像素操作。在示例性實施例中,根據本發明的圖形處理器包括判優器電路,用於響應於控制信號選擇多個輸入中的一個用於處理;以及著色器,與判優器電路耦合,用於處理多個輸入中的所選擇的一個,所述著色器包括用於執行頂點操作和像素操作的部件,其中所述著色器基於多個輸入中的所選擇的一個執行頂點操作或像素操作中的一個。
所述著色器包括通用寄存器模塊,用於存儲至少多個所選擇的輸入;序列器,用於存儲執行頂點和像素操縱操作所用的邏輯和算術指令;以及處理器,能夠根據保存在所述序列器中的指令對所選擇的輸入進行浮點算術和邏輯操作。本發明的著色器被稱為「統一」著色器是因為它被配置來執行頂點和像素操作。通過使用本發明的統一著色器,相關的圖形處理器比傳統圖形處理器更加空間有效,因為統一著色器比傳統多著色器處理器結構佔據更少的有效面積。
此外,根據本發明,所述統一著色器更加計算有效,因為它允許著色器基於工作量被靈活地分配給像素或頂點。
結合以下附圖,通過查看本發明的以下詳細描述,可以更好地理解本發明及其相關優點和特徵,在附圖中,相同的數字代表相同的元件,其中圖1為傳統著色器的示意性方框圖;圖2A-2B為由圖1所示的著色器執行的操作的圖形表示;圖3為傳統圖形處理器結構的示意性方框圖;圖4A為根據本發明的圖形處理器結構的示意性方框圖;圖4B為根據本發明的替換實施例的圖形處理器的可選輸入組件的示意性方框圖;以及圖5為在圖4A中所示的圖形處理器中使用的統一著色器的分解示意性方框圖。
具體實施例方式
圖3描繪了結合有傳統流水線結構的圖形處理器。如圖所示,圖形處理器40包括頂點取得模塊42,其通過線41接收來自片外存儲器55的與待渲染的圖元相關的頂點信息。然後通過線43將所取得的頂點數據傳輸到頂點高速緩存44以存儲。一旦請求,就通過線45將保存在頂點高速緩存44中的頂點數據傳輸至頂點著色器46。如上所述,被頂點著色器46請求並傳輸至頂點著色器46的信息的實例包括對象形狀、材料特性(例如顏色)、紋理信息以及視角。通常,頂點著色器46為可編程機制,該可編程機制將轉換位置矩陣應用到輸入的位置信息(從頂點高速緩存44獲得),從而提供表示待渲染的對象的透視修正圖像及其紋理或顏色坐標的數據。
在執行轉換操作後,通過線47向頂點儲存器48提供表示轉換後的頂點的數據。然後頂點儲存器48通過線49將其中包括的修改後的頂點信息傳輸至圖元組合模塊50。圖元組合模塊50將輸入的頂點信息組合或者轉換為多個待隨後處理的圖元。將輸入的頂點信息組合為圖元的適當的方法在本領域中公知並且在此將不再詳細討論。然後將所組合的圖元傳輸至光柵化引擎52,光柵化引擎52通過稱為步進(walking)的處理將先前組合的圖元轉換為像素數據。然後通過線53將產生的像素數據傳輸至像素著色器54。
像素著色器54產生將被應用於給定像素的顏色和額外外觀屬性,並且將外觀屬性應用到各個像素。此外,像素著色器54能夠從由來自光柵化引擎52的像素數據索引的紋理地圖57中取得紋理數據,而這是通過在線55上將這樣的信息傳輸到紋理地圖。然後通過線57′將所請求的紋理數據從紋理地圖57傳輸回來,並且在通過線58被路由至像素著色器前存儲在紋理高速緩存56中。一旦接收到紋理數據,像素著色器54對接收到的紋理數據進行指定的邏輯或算術操作以生成像素顏色或其它感興趣的外觀屬性。然後將所生成的像素外觀屬性與通過線53由光柵化引擎提供的基色相結合,從而向感興趣的位置處對應的像素提供像素顏色。然後將線59上的像素外觀屬性傳輸至後光柵處理模塊(未顯示)。
如上所述,傳統圖形處理器40需要使用兩個獨立的著色器頂點著色器46和像素著色器54。與這樣的結構相關的缺陷是圖形處理器的總覆蓋區相對大,因為兩個著色器佔據大量的有效面積。與傳統圖形處理器結構相關的另一缺陷是其計算效率較差。
現在參考圖4A,在一個示例性實施例中,本發明的圖形處理器60包括多路器66,所述多路器66具有在第一個輸入處提供的頂點(例如索引)數據,以及在第二個輸入處提供的來自光柵化引擎74的內插像素參數(例如位置)數據和屬性數據。通過線63將由判優器64產生的控制信號傳輸至多路器66。判優器64確定將多路器66的兩個輸入中的哪個傳輸至統一著色器62用於進一步處理。判優器64使用的判優方案如下如果在統一著色器62中有足夠的資源可用,則通過線65將多路器66的第一個輸入處的頂點數據傳輸至統一著色器62以對該頂點數據進行操作;否則,將第二個輸入處的內插像素參數數據傳遞至統一著色器62用於進一步處理。
簡要參考圖5,現在描述統一著色器62。如圖所示,統一著色器62包括通用寄存器模塊92,多個源寄存器包括源寄存器A 93、源寄存器B 95和源寄存器C 97,處理器(例如CPU)96和序列器99。通用寄存器模塊92包括六十四個寄存器,或者可用的輸入,用於儲存通過線65從多路器66傳輸的信息或者任何其它要在統一著色器中保存的信息。通過線109將通用寄存器模塊92中的數據傳輸至多個源寄存器。
處理器96可以包括專用硬體塊或者可以配置成通用計算設備(即,個人計算機)的部分。在一個示例性實施例中,處理器96用於執行32位浮點算術操作和對相應操作數的一系列邏輯操作。如圖所示,所述處理器被邏輯上分成兩個部分。例如,部分96被配置來執行統一著色器的32位浮點算術操作。第二個部分96A被配置來執行統一著色器的定標器(scaler)操作(例如對數、指數、反平方根)。
序列器99包括常量模塊91和指令儲存器98。常量模塊91例如包括用於連接頂點操縱操作的幾個轉換矩陣。指令儲存器98包括由處理器96執行的必要指令,用於對通用寄存器模塊92中保存的由源寄存器93-95提供的數據執行分別的算術和邏輯操作。指令儲存器98還包括存儲器取得指令,當執行所述存儲器取得指令時,所述存儲器取得指令使統一著色器62從存儲器82(圖4A)取得紋理以及其它類型的數據。在操作中,序列器99確定將要執行的下一指令(來自指令儲存器98)是算術或邏輯指令還是存儲器(例如紋理取得)指令。如果下一指令是存儲器指令或者請求,則序列器99發送請求至取得模塊(未顯示),該取得模塊從存儲器82(圖4A)檢索所需信息。下面將詳細描述通過頂點紋理高速緩存68(圖4A)將所檢索的信息傳輸至序列器99。
如果待執行的下一指令是算術或邏輯指令,則序列器99將適當的操作數從通用寄存器模塊92轉移至適當的源寄存器(93,95,97)用於執行,並且通過線101向處理器96發送適當的信號來指示將對源寄存器中的幾個操作數進行什麼操作或者什麼系列操作。此時,處理器96對源寄存器中的操作數執行指令並且通過線85提供結果。線85上的信息可以被傳輸回通用寄存器模塊92用於存儲,或者被傳輸至圖形處理器60後面的組件。
如上所述,指令儲存器98保存頂點操縱指令和像素操縱指令。因此,本發明的統一著色器99能夠執行頂點和像素操作以及執行存儲器取得操作。同樣地,本發明的統一著色器62能夠基於從多路器傳遞來的信息對圖形控制器中的數據執行頂點著色和像素著色操作。通過用來執行存儲器取得,本發明的統一著色器能夠執行傳統頂點著色器不能執行的額外處理;同時執行像素操作。
通過能夠非常快速地在保存於指令儲存器98中的這種程序或指令之間自由地切換,統一著色器62能夠以各種完成程度同時執行頂點操縱操作和像素操縱操作。在應用中,將待處理的頂點數據從多路器66傳輸至通用寄存器模塊92。然後指令儲存器98通過線101將相應的控制信號傳遞到處理器96以執行這種頂點操作。然而,如果通用寄存器模塊92沒有足夠可用的空間以存儲進入的頂點數據的話,則由於不滿足判優器64的判優方案而不傳輸這種信息。通過這種方式,基於保存在指令儲存器98中的指令,繼續處理器96將要執行或者正在執行的任何像素計算操作,直到可獲得足夠的通用寄存器模塊92中的寄存器。因此,通過共享統一著色器62中的資源,則由於不存在與處理器96相關的停機時間而增強了對圖像數據的處理。
回頭參考圖4A,圖形處理器60還包括高速緩存模塊70,高速緩存模塊70包括參數高速緩存70A和位置高速緩存70B,其通過線85接收統一著色器62的基於像素的輸出並且將各自的像素參數和位置信息儲存在相應的高速緩存中。然後通過線71將高速緩存模塊70中的像素信息傳輸至圖元組合模塊72。圖元組合模塊72負責將從高速緩存模塊70傳輸到其中的信息組合為一系列三角形或者其它適當的圖元用於進一步處理。然後通過線73將所組合的圖元傳輸至光柵化引擎模塊74,在該光柵化引擎模塊74處通過步進處理或任何其它適當的像素生成處理將所傳輸的圖元轉換為單獨像素數據。從光柵化引擎模塊74產生的像素數據為通過線75傳輸至多路器66的第二個輸入的內插像素參數數據。
在通過多路器66將頂點數據傳輸至統一著色器62的情況下,將處理器96產生的結果頂點數據傳輸至渲染後端模塊76,所述渲染後端模塊76將產生的頂點數據轉換成幾種適於以後在顯示裝置84上顯示的格式中的至少一種。例如,如果將被染色的玻璃外觀效應應用到圖像,則由渲染後端76將與這種外觀效應對應的信息與適當的位置數據相關聯。經由存儲控制器78將來自渲染後端76的信息傳輸到存儲器82和顯示控制器線80。然後通過線83將這種適當地格式化後的信息傳輸以在顯示裝置84上表現。
現在參照圖4B,其中顯示了頂點模塊61,其用於在根據本發明的替換實施例的多路器66的第一個輸入處提供頂點信息。頂點模塊61包括頂點取得模塊61A,其負責當請求時從存儲器82檢索頂點信息,並且將所述頂點信息傳輸至頂點高速緩存61B。存儲在頂點高速緩存61B中的信息包括耦合至多路器66的第一個輸入的頂點信息。
如上所述,本發明的圖形處理器60包括統一著色器62,其能夠基於儲存在指令儲存器98中的指令執行頂點操縱操作和像素操縱操作。通過這種方法,由於不再需要單獨的頂點著色器和像素著色器,所以本發明的圖形處理器60比傳統圖形處理器佔據更小的有效面積。此外,統一著色器62能夠在執行頂點操縱操作和像素操縱操作之間轉換,由於一種類型的數據操作不依賴於另一種類型的數據操作,所以提高了圖形處理效率。因此,克服了由於傳統圖形處理器中的依賴性操作而產生的性能損失。
本發明的上述詳細描述和其中描述的實例用於說明和描述的目的。因此希望本發明包括在這裡公開和要求的基本原理範圍之內的所有修改、變形和等價物。
權利要求
1.一種圖形處理器(60),包括判優器電路(64),用於響應於控制信號選擇多個輸入中的一個;以及著色器(62),與所述判優器電路(64)耦合,用於處理所述多個輸入中所選擇的一個,所述著色器(62)包括執行頂點操作和像素操作的部件,並且基於所述多個輸入中所選擇的一個執行所述頂點操作或者像素操作中的一個,其中所述著色器(62)提供外觀屬性。
2.根據權利要求1所述的圖形處理器,還包括頂點儲存模塊(70),用於保存頂點信息。
3.根據權利要求2所述的圖形處理器,其中所述頂點儲存模塊(70)還包括參數高速緩存(70A),用於為相應的頂點保存外觀屬性數據;以及位置高速緩存(70B),用於為相應的頂點保存位置數據。
4.根據以上權利要求中任一項所述的圖形處理器,其中所述外觀屬性是顏色、光照、紋理、標準和位置數據中的至少一種。
5.根據權利要求4所述的圖形處理器,其中所述外觀屬性為顏色,並且當所述多個輸入中所選擇的一個為像素數據時將所述顏色與相應的像素相關聯。
6.根據權利要求4或權利要求5所述的圖形處理器,其中所述外觀屬性為位置,並且當所述多個輸入中所選擇的一個為頂點數據時將所述位置屬性與相應的頂點相關聯。
7.根據以上權利要求中任一項所述的圖形處理器,其中所述外觀值為深度。
8.根據以上權利要求中任一項所述的圖形處理器,包括選擇電路,所述選擇電路包括多路器(66),其與所述判優器(64)耦合,其中所述判優器(64)提供控制信號以控制所述多路器選擇所需輸入(66)。
9.根據以上權利要求中任一項所述的圖形處理器,其中所述著色器(62)提供頂點位置數據並且還包括圖元組合模塊(72),其與所述著色器(62)耦合,用於響應於所述頂點位置數據而產生圖元。
10.根據權利要求9所述的圖形處理器,還包括光柵引擎(74),其與所述圖元組合模塊(72)耦合,用於響應於組合後的頂點數據產生像素參數數據。
11.根據以上權利要求中任一項所述的圖形處理器,其中所述著色器(62)響應於所述多個輸入中所選擇的一個產生像素顏色信息。
12.根據以上權利要求中任一項所述的圖形處理器,其中所述著色器(62)包括寄存器模塊,用於保存所述多個輸入中所選擇的一個;計算元件,用於對保存在所述寄存器模塊中的所述數據執行算術和邏輯操作;以及序列器,用於保存由所述計算元件執行的指令。
13.根據以上權利要求中任一項所述的圖形處理器,其中所述著色器(62)還包括用於訪問存儲器(82)的電路。
14.一種統一著色器,包括通用寄存器模塊(92),用於保存數據;處理器單元(96);以及序列器(99),其與所述通用寄存器模塊(92)和所述處理器單元(96)耦合,所述序列器(99)保存指令,所述指令用於使所述處理器單元(96)對保存在所述通用寄存器模塊(92)中的所選擇的數據執行頂點計算和像素計算操作。
15.根據權利要求14所述的著色器,其中所述序列器(99)還包括用於從存儲器取得數據的電路。
16.根據權利要求14或權利要求15所述的著色器,還包括選擇電路,用於響應於控制信號向所述通用寄存器模塊(92)提供信息。
17.根據權利要求16所述的著色器,其中所述選擇電路為多路器(66)並且由判優器(64)提供所述控制信號。
18.根據權利要求14至17中任一項所述的著色器,其中所述處理器單元(96)響應於所述多個輸入中所選擇的一個執行產生像素顏色的指令。
19.根據權利要求14至18中任一項所述的著色器,其中當所述像素計算仍在進行時,所述處理器單元(96)執行頂點計算。
20.根據權利要求14至19中任一項所述的著色器,其中所述處理器單元(96)響應於所述多個輸入中所選擇的一個產生頂點位置和外觀數據。
全文摘要
公開了一種使用單個著色器的圖形處理結構。所述結構包括用於響應於控制信號選擇多個輸入中的一個的電路;以及著色器,其與判優器耦合,用於處理所述多個輸入中所選擇的一個,所述著色器包括執行頂點操作和像素操作的部件,並且其中所述著色器基於所述多個輸入中所選擇的一個執行所述頂點操作和像素操作中的一個。所述著色器包括寄存器模塊,用於存儲多個被選擇的輸入;序列器,其保存頂點操縱和像素操縱指令;以及處理器,其能夠響應於保存在所述序列器中的指令對所選擇的輸入進行浮點算術和邏輯操作。
文檔編號G06T15/00GK1947156SQ200480040570
公開日2007年4月11日 申請日期2004年11月19日 優先權日2003年11月20日
發明者史蒂文·莫雷因, 勞倫特·勒費布爾, 安迪·格魯伯, 安迪·斯肯德 申請人:Ati技術公司