新四季網

圖形處理中的拼補著色的製作方法

2023-05-03 17:46:51

圖形處理中的拼補著色的製作方法
【專利摘要】本發明的方面涉及一種用於渲染圖形的過程,其包含指定圖形處理單元GPU的硬體著色單元執行與渲染管線的第一著色器級相關聯的第一著色操作。所述過程還包含在完成所述第一著色操作後即刻切換所述硬體著色單元的操作模式。所述過程還包含使用所述GPU的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第二不同著色器級相關聯的第二著色操作。
【專利說明】圖形處理中的拼補著色
[0001]本申請案要求2012年4月4日申請的第61/620,340號美國臨時申請案、2012年4月4日申請的第61/620,358號美國臨時申請案和2012年4月4日申請的第61/620,333號美國臨時申請案的權益,所有前述申請案的完整內容都以引用的方式併入本文中。

【技術領域】
[0002]本發明涉及計算機圖形。

【背景技術】
[0003]為視覺呈現提供內容的裝置通常包含圖形處理單元(GPU)。GPU在顯示器上渲染表示所述內容的像素。GPU為顯示器上的每一像素產生一或多個像素值,以便渲染每一像素以供呈現。
[0004]在一些例子中,GPU可以實施統一的著色器架構來渲染圖形。在此些例子中,GPU可以配置多個類似的計算單元來執行不同著色操作的管線。所述計算單元可以稱為統一著色單元或統一著色器處理器。


【發明內容】

[0005]本發明的技術總體上涉及執行與圖形渲染管線的著色器級相關聯的著色操作。舉例來說,圖形處理單元(GPU)可以調用一或多個著色單元以執行與圖形渲染管線的著色器級相關聯的著色操作。根據本發明的方面,所述GPU可以接著使用被指定用於執行所述第一著色操作的著色單元執行與圖形渲染管線的第二不同著色器級相關聯的著色操作。舉例來說,GPU可以在遵照與第一著色器級相關聯的輸入/輸出接口的同時執行與第二級相關聯的著色操作。以此方式,GPU可以通過使用相同的著色單元執行多個著色操作而模仿具有更大著色資源的GPU。
[0006]在一個實例中,本發明的方面涉及一種渲染圖形的方法,其包含:使用圖形處理單元的被指定用於頂點著色的硬體著色單元執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,其中所述硬體單元經配置以接收單個頂點作為輸入,並且產生單個頂點作為輸出;以及使用所述圖形處理單元的所述硬體著色單元執行幾何形狀著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個新頂點,其中所述幾何形狀著色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個新頂點。
[0007]在另一實例中,本發明的方面涉及一種用於渲染圖形的圖形處理單元,其包含經配置以進行以下操作的一或多個處理器:使用圖形處理單元的被指定用於頂點著色的硬體著色單元執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,其中所述硬體單元經配置以接收單個頂點作為輸入,並且產生單個頂點作為輸出;以及使用所述圖形處理單元的所述硬體著色單元執行幾何形狀著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個新頂點,其中所述幾何形狀著色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個新頂點。
[0008]在另一實例中,本發明的方面涉及一種用於渲染圖形的設備,其包含:用於使用圖形處理單元的被指定用於頂點著色的硬體著色單元執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點的裝置,其中所述硬體單元經配置以接收單個頂點作為輸入,並且產生單個頂點作為輸出;以及用於使用所述圖形處理單元的所述硬體著色單元執行幾何形狀著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個新頂點的裝置,其中所述幾何形狀著色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個新頂點。
[0009]在另一實例中,本發明的方面涉及一種上面存儲有指令的非暫時性計算機可讀媒體,所述指令在被執行時使得一或多個處理器使用被指定用於頂點著色的硬體著色單元執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,其中所述硬體單元經配置以接收單個頂點作為輸入並且產生單個頂點作為輸出,並且使用被指定用於頂點著色的硬體著色單元執行幾何形狀著色操作以基於經頂點著色的頂點中的一或多個產生一或多個新頂點,其中所述幾何形狀著色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出一或多個新頂點。
[0010]在另一實例中,本發明的方面涉及一種用於渲染圖形的方法,其包含:使用圖形處理單元的被指定用於頂點著色的硬體單元執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,其中所述硬體單元遵照一個接口,所述接口接收單個頂點作為輸入,並且產生單個頂點作為輸出;以及使用所述圖形處理單元的被指定用於頂點著色的硬體單元執行殼體著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個控制點,其中所述一或多個殼體著色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控制點。
[0011]在另一實例中,本發明的方面涉及一種用於渲染圖形的圖形處理單元,其包含一或多個經配置以進行以下操作的處理器:使用圖形處理單元的被指定用於頂點著色的硬體單元執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,其中所述硬體單元遵照一個接口,所述接口接收單個頂點作為輸入,並且產生單個頂點作為輸出;以及使用所述圖形處理單元的被指定用於頂點著色的硬體單元執行殼體著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個控制點,其中所述一或多個殼體著色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控制點。
[0012]在另一實例中,本發明的方面涉及一種用於渲染圖形的設備,其包含:用於使用圖形處理單元的被指定用於頂點著色的硬體單元執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點的裝置,其中所述硬體單元遵照一個接口,所述接口接收單個頂點作為輸入,並且產生單個頂點作為輸出;以及用於使用所述圖形處理單元的被指定用於頂點著色的硬體單元執行殼體著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個控制點的裝置,其中所述一或多個殼體著色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控制點。
[0013]在另一實例中,本發明的方面涉及一種上面存儲有指令的非暫時性計算機可讀媒體,所述指令當被執行時使得一或多個處理器進行以下操作:使用圖形處理單元的被指定用於頂點著色的硬體單元執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,其中所述硬體單元遵照一個接口,所述接口接收單個頂點作為輸入,並且產生單個頂點作為輸出;以及使用所述圖形處理單元的被指定用於頂點著色的硬體單元執行殼體著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個控制點,其中所述一或多個殼體著色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控制點。
[0014]在一個實例中,本發明的方面涉及一種渲染圖形的方法,其包含:指定圖形處理單元的硬體著色單元執行與渲染管線的第一著色器級相關聯的第一著色操作,在完成所述第一著色操作後即刻切換所述硬體著色單元的操作模式,並且使用所述圖形處理單元的被指定執行所述第一著色操作的硬體著色單元執行與渲染管線的第二不同著色器級相關聯的第二著色操作。
[0015]在另一實例中,本發明的方面涉及一種用於渲染圖形的圖形處理單元,其包括經配置以進行以下操作的一或多個處理器:指定圖形處理單元的硬體著色單元執行與渲染管線的第一著色器級相關聯的第一著色操作,在完成所述第一著色操作後即刻切換所述硬體著色單元的操作模式,並且使用所述圖形處理單元的被指定執行所述第一著色操作的硬體著色單元執行與渲染管線的第二不同著色器級相關聯的第二著色操作。
[0016]在另一實例中,本發明的方面涉及一種用於渲染圖形的設備,其包含:用於指定圖形處理單元的硬體著色單元執行與渲染管線的第一著色器級相關聯的第一著色操作的裝置,用於在完成所述第一著色操作後即刻切換所述硬體著色單元的操作模式的裝置,以及用於使用所述圖形處理單元的被指定執行所述第一著色操作的硬體著色單元執行與渲染管線的第二不同著色器級相關聯的第二著色操作的裝置。
[0017]在另一實例中,本發明的方面涉及一種上面存儲著指令的非暫時性計算機可讀媒體,所述指令在被執行時使得一或多個處理器進行以下操作:指定圖形處理單元的硬體著色單元執行與渲染管線的第一著色器級相關聯的第一著色操作,在完成所述第一著色操作後即刻切換所述硬體著色單元的操作模式,並且使用所述圖形處理單元的被指定執行所述第一著色操作的硬體著色單元執行與渲染管線的第二不同著色器級相關聯的第二著色操作。
[0018]附圖和下面的描述中闡述了本發明的一或多個實例的細節。通過描述和圖式並且通過權利要求將明白其它特徵、目的和優點。

【專利附圖】

【附圖說明】
[0019]圖1是說明可以實施本發明中描述的技術的計算裝置的框圖。
[0020]圖2是說明示範性圖形處理管線80的框圖。
[0021]圖3A和3B是根據本發明的方面的圖形渲染管線中的數據流的概念圖。
[0022]圖4是實施本發明中描述的技術以執行頂點著色操作和幾何形狀著色操作的硬體著色單元的實例操作的圖。
[0023]圖5A說明合併頂點著色器/幾何形狀著色器硬體著色單元在執行頂點著色操作和幾何形狀著色操作時執行的操作的流程。
[0024]圖5B說明對應於可以由合併頂點著色器/幾何形狀著色器硬體著色單元執行的圖5A所示的操作流程的偽碼。
[0025]圖6是說明根據本發明的方面的用於執行合併頂點著色操作和幾何形狀著色操作的圖形處理單元的實例組件的圖。
[0026]圖7是說明根據本發明的方面的用於執行頂點著色操作和幾何形狀著色操作的實例過程的流程圖。
[0027]圖8是說明包含曲面細分器級的實例圖形處理管線的框圖。
[0028]圖9是說明曲面細分的概念圖。
[0029]圖1OA和1B是根據本發明的方面的圖形渲染管線中的數據流的概念圖。
[0030]圖11是實施本發明中描述的技術以執行頂點著色和殼體著色操作的硬體著色單元的實例操作的圖。
[0031]圖12A說明合併頂點著色器/殼體著色器硬體著色單元在執行頂點著色操作和殼體著色操作時執行的操作的流程。
[0032]圖12B總體上說明對應於可以由合併頂點著色器/殼體著色器硬體著色單元執行的圖12A所示的操作流程的偽碼。
[0033]圖13A總體上說明合併域著色器/幾何形狀著色器硬體著色單元在執行域著色操作和幾何形狀著色操作時執行的操作的流程。
[0034]圖13B總體上說明對應於可以由合併域著色器/幾何形狀著色器硬體著色單元執行的圖13A所示的操作流程的偽碼。
[0035]圖14是說明根據本發明的方面的用於執行合併頂點著色、殼體著色、域著色和幾何形狀著色操作的圖形處理單元的實例組件的圖。
[0036]圖15是說明根據本發明的方面使用相同硬體著色單元在兩個渲染遍次中執行圖形渲染的流程圖。
[0037]圖16是說明根據本發明的方面執行與兩個遍次的圖形渲染過程中的第一遍次相關聯的圖形渲染操作的流程圖。
[0038]圖17是說明根據本發明的方面執行與兩個遍次的圖形渲染過程中的第二遍次相關聯的圖形渲染操作的流程圖。
[0039]圖18是說明根據本發明的方面將一個以上著色器級拼補在一起以供相同硬體著色單元執行的流程圖。

【具體實施方式】
[0040]本發明的技術總體上涉及執行與圖形渲染管線的著色器級相關聯的著色操作。舉例來說,圖形處理單元(GPU)可以調用一或多個著色單元以執行與圖形渲染管線的著色器級相關聯的著色操作。根據本發明的方面,GPU可以接著使用被指定用於執行第一著色操作的著色單元來執行與圖形渲染管線的第二不同著色器級相關聯的著色操作。舉例來說,GPU可以在遵照與第一著色器級相關聯的輸入/輸出接口的同時執行與第二級相關聯的著色操作。以此方式,GPU可以通過用相同的著色單元執行多個著色操作而模仿具有更大著色資源的GPU。
[0041]圖1是說明可以實施本發明中描述的技術的計算裝置30的框圖。計算裝置30的實例包含但不限於無線裝置、移動或蜂窩電話(包含所謂的智慧型手機)、個人數字助理(PDA)、包含視頻顯示器的視頻遊戲控制臺、移動視頻遊戲裝置、移動視頻會議單元、膝上型計算機、臺式計算機、電視機頂盒、平板計算裝置、電子書閱讀器、固定或移動媒體播放器等坐寸O
[0042]在圖1的實例中,計算裝置30包含具有CPU存儲器34的中央處理單元(CPU) 32、具有GPU存儲器38和一或多個著色單元40的圖形處理單元(GPU) 36、顯示器單元42、顯示器緩衝器單元44、用戶接口單元46和存儲單元48。此外,存儲單元48可以存儲具有編譯器54的GPU驅動器50、GPU程序52和本機編譯的GPU程序56。
[0043]CPU 32的實例包含但不限於數位訊號處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現場可編程邏輯陣列(FPGA)或其它等效的集成或離散邏輯電路。雖然CPU32和GPU 36在圖1的實例中被說明成分開的單元,但是在一些實例中,CPU 32和GPU 36可以集成為單個單元。CPU 32可以執行一或多個應用程式。應用程式的實例可以包含網絡瀏覽器、電子郵件應用程式、電子表格、視頻遊戲、音頻和/或視頻捕獲、回放或編輯應用程式或其它起始有待經由顯示器單元42呈現的圖像數據的產生的應用程式。
[0044]在圖1所示的實例中,CPU 32包含CPU存儲器34。CPU存儲器34可以表示在執行機器或對象代碼時使用的晶片上存儲設備或存儲器。CPU存儲器34可以各自包括能夠存儲固定數目個數字位的硬體存儲器寄存器。CPU 32可以能夠比從存儲單元48(其可例如經由系統總線存取)讀取值或者向存儲單元48寫入值更迅速地從本機CPU存儲器34讀取值或者向本機CPU存儲器34寫入值。
[0045]GPU 36表示用於執行圖形操作的一或多個專用處理器。也就是說,舉例來說,GPU36可以是具有固定功能和用於渲染圖形和執行GPU應用程式的可編程組件的專用硬體單元。GPU 36還可包含DSP、通用微處理器、ASIC、FPGA或其它等效的集成或離散邏輯電路。
[0046]GPU 36還包含GPU存儲器38,其可以表示在執行機器或對象代碼時使用的晶片上存儲設備或存儲器。GPU存儲器38可以各自包括能夠存儲固定數目個數字位的硬體存儲器寄存器。GPU 36可以能夠比從存儲單元48 (其可例如經由系統總線存取)讀取值或者向存儲單元48寫入值更迅速地從本機GPU存儲器38讀取值或者向本機GPU存儲器38寫入值。
[0047]GPU 36還包含著色單元40。如下文更詳細地描述,著色單元40可以配置成處理組件的可編程管線。在一些實例中,著色單元40可以稱為「著色器處理器」或「統一著色器」,並且可以執行幾何形狀、頂點、像素或其它著色操作以渲染圖形。著色單元40可以包含圖1中為了清晰起見未具體展示的一或多個組件,例如用於取出和解碼指令的組件、用於實行算術計算的一或多個算術邏輯單元(「ALU」)和一或多個存儲器、高速緩存或寄存器。
[0048]顯示器單元42表示能夠顯示視頻數據、圖像、文本或任何其它類型的數據以供觀看者消費的單元。顯示器單元42可以包含液晶顯示器(LCD)、發光二極體(LED)顯示器、有機LED (OLED)、有源矩陣OLED (AMOLED)顯示器等等。
[0049]顯示器緩衝器單元44表示專用於為顯示器單元42存儲數據以供呈現圖像(例如照片或視頻幀)的存儲器或存儲裝置。顯示器緩衝器單元44可以表示包含多個存儲位置的二維緩衝器。顯示器緩衝器單元44內的存儲位置的數目可以基本上類似於有待在顯示器單元42上顯示的像素的數目。舉例來說,如果顯示器單元42經配置以包含640x480個像素,那麼顯示器緩衝器單元44可以包含640x480個存儲位置。顯示器緩衝器單元44可以存儲由GPU 36處理的像素中的每一個的最終像素值。顯示器單元42可以從顯示器緩衝器單元44檢索最終像素值,並且基於顯示器緩衝器單元44中存儲的像素值顯示最終圖像。
[0050]用戶接口單元46表示用戶可以用來與計算裝置30的其它單元(例如,CPU 32)交互或者以其它方式介接以與計算裝置30的其它單元通信的單元。用戶接口單元46的實例包含但不限於軌跡球、滑鼠、鍵盤和其它類型的輸入裝置。用戶接口單元46還可以是觸控螢幕,並且可以併入為顯示器單元42的一部分。
[0051]存儲單元48可以包括一或多個計算機可讀存儲媒體。存儲單元48的實例包含但不限於隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、CD-ROM或其它光碟存儲裝置、磁碟存儲裝置或其它磁性存儲裝置、快閃記憶體或可以用於以指令或數據結構的形式存儲期望的程序代碼並且可以由計算機或處理器存取的任何其它媒體。
[0052]在一些實例實施方案中,存儲單元48可以包含使得CPU 32和/或GPU 36執行本發明中歸於CPU 32和GPU 36的功能的指令。在一些實例中,存儲單元48可以被視為非暫時性存儲媒體。術語「非暫時性」可以指示存儲媒體不是體現在載波或傳播信號中。然而,術語「非暫時性」不應解釋為意味著存儲單元48是不能移動的。作為一個實例,存儲單元48可以從計算裝置30中移除,並且移動到另一裝置。作為另一實例,基本上類似於存儲單元48的存儲單元可以插入到計算裝置30中。在某些實例中,非暫時性存儲媒體可以存儲可能隨時間而改變的數據(例如,在RAM中)。
[0053]如圖2的實例中所說明,存儲單元48存儲GPU驅動器50和編譯器54、GPU程序52和本機編譯的GPU程序56。GPU驅動器50表示提供存取GPU 36的接口的電腦程式或可執行代碼。CPU 32執行GPU驅動器50或其若干部分以與GPU 36介接,並且出於此原因,GI3U驅動器50在圖1的實例中展示為CPU 32內的用虛線框標記的「GPU驅動器50」。GPU驅動器50可以存取CPU 32執行的程序或其它可執行文件,包含GPU程序52。
[0054]GPU程序52可以包含(例如,使用應用程式編程接口(API))用高級(HL)程式語言編寫的代碼。API的實例包含微軟公司開發的開放計算語言(「OpenCL」)、開放圖形庫(「OpenGL」)和DirectX。總地來說,API包含由相關聯的硬體執行的預定的標準化的成組命令。API命令允許用戶指令GPU的硬體組件執行命令,而無需用戶知道硬體組件的具體情況。
[0055]GPU程序52可以調用或者以其它方式包含GPU驅動器50提供的一或多個功能。CPU 32總體上執行其中嵌入著GPU程序52的程序,並且在遇到GPU程序52後,即刻將GPU程序52傳遞給GPU驅動器50 (例如,以命令流的形式)。CPU 32在這個上下文中執行GPU驅動器50以處理GPU程序52。也就是說,舉例來說,GPU驅動器50可以通過將GPU程序52編譯成GPU 36可執行的對象或機器代碼而處理GPU程序52。這個對象代碼在圖1的實例中展示為本機編譯的GPU程序56。
[0056]在一些實例中,編譯器54可以實時或近實時地操作,以在執行其中嵌入著GPU程序52的程序期間編譯GPU程序52。舉例來說,編譯器54總體上表示將根據HL程式語言定義的HL指令精簡成低級(LL)程式語言的LL指令的模塊。在編譯之後,這些LL指令能夠由特定類型的處理器或其它類型的硬體(例如FPGA、ASIC等等(包含例如CPU 32和GPU36)來執行。
[0057]在LL程式語言提供從處理器或其它類型的硬體的指令集架構的很少抽象或較低級抽象的意義上,LL編程語目被視為是低級的。LL語目總體上是指彙編和/或機器語目。彙編語言是稍微比機器語言高的LL語言,但是總體上無需使用編譯器或其它翻譯模塊就可以將彙編語言轉換成機器語言。機器語言表示任何定義與基礎硬體(例如,處理器)原生執行的指令(例如,x86機器代碼(其中x86是指因特爾公司開發的x86處理器的指令集架構)類似(如果不是相同)的指令的語言。
[0058]在任何情況下,編譯器54都可以將根據HL程式語言定義的HL指令翻譯成基礎硬體支持的LL指令。編譯器54移除與HL程式語言(和API)相關聯的抽象,使得根據這些HL程式語言定義的軟體能夠被實際基礎硬體更直接地執行。
[0059]在圖1的實例中,編譯器54可以在執行包含GPU程序52的HL代碼時從CPU 32接收GPU程序52。編譯器54可以將GPU程序52編譯成符合LL程式語言的本機編譯的GPU程序56。編譯器54接著輸出包含LL指令的本機編譯的GPU程序56。
[0060]GPU 36總體上接收本機編譯的GPU程序56 (如通過GPU 36內的虛線框標記的「本機編譯的GPU程序56」所展示),在這之後,在一些例子中,GPU 36即刻渲染圖像並且將圖像的經渲染部分輸出到顯示器緩衝器單元44。舉例來說,GPU 36可以產生有待在顯示器單元42處顯示的多個基元。基元可以包含一或多條線(包含曲線、樣條等)、點、圓、橢圓、多邊形(其中通常將多邊形定義為一或多個三角形的集合)或任何其它二維(2D)基元。術語「基元」還可以指代三維(3D)基元,例如立方體、圓柱體、球體、圓錐體、金字塔、圓環等等。總地來說,術語「基元」是指任何被GPU 36渲染以供經由顯示器單元42作為圖像(或在視頻數據的上下文中的幀)顯示的幾何形狀或要素。
[0061]GPU 36可以通過應用一或多個模型變換(其也可以在狀態數據中指定)將基元或基元的其它狀態數據(例如,其定義基元的紋理、亮度、相機配置或其它方面)變換成所謂的「世界空間」。一旦經過變換,GPU 36就可以應用有效相機的視圖變換(其同樣也可以在定義相機的狀態數據中指定)以將基元和光的坐標變換到相機或眼睛空間中。GPU36還可以執行頂點著色以在任何有效光的視圖中渲染基元的外觀。GPU 36可以在上述模型、世界或視圖空間中的一或多個中執行頂點著色(雖然頂點著色通常是在世界空間中執行的)。
[0062]一旦基元經過著色,GPU 36就可以執行投影以將圖像投影到(作為一個實例)在(-1,-1, -1)和(1,1,1)處具有極點的單位立方體中。這個單位立方體通常稱為典型視圖體。在將模型從眼睛空間變換到典型視圖體之後,GPU 36可以執行裁剪以移除任何不至少部分地駐留在視圖體中的基元。換句話說,GPU 36可以移除任何不在相機幀內的基元。GPU36可以接著將基元的坐標從視圖體映射到屏幕空間,從而有效地將基元的3D基元精簡成屏幕的2D坐標。
[0063]在給定用其相關聯的著色數據定義基元的經變換和投影的頂點的情況下,GPU 36可以接著使基元光柵化。舉例來說,GPU 36可以計算和設置基元所覆蓋的屏幕的像素的顏色。在光柵化期間,GPU 36可以應用與基元相關聯的任何紋理(其中紋理可以包括狀態數據)。GPU 36還可以在光柵化期間執行Z緩衝器算法(也稱為深度測試)以確定是否有任何基元和/或對象被任何其它對象遮蔽。Z緩衝器算法根據基元的深度將基元排序,使得GPU 36知道將每一基元繪製到屏幕上時的次序。GPU 36將經渲染的像素輸出到顯示器緩衝器單元44。
[0064]顯示器緩衝器單元44可以暫時存儲經渲染的圖像的經渲染的像素,直到整個圖像都被渲染了為止。在這個上下文中,可以將顯示器緩衝器單元44視為圖像幀緩衝器。顯示器緩衝器單元44可以接著發射有待在顯示器單元42上顯示的經渲染的圖像。在一些替代的實例中,GPU 36可以將圖像的經渲染的部分直接輸出到顯示器單元42以供顯示,而不是將圖像暫時存儲在顯示器緩衝器單元44中。顯示器單元42可以接著顯示在顯示器緩衝器單元78中存儲的圖像。
[0065]為了用上述方式渲染像素,GPU 36可以指定著色單元40執行多種著色操作(如舉例來說相對於圖2和8更詳細地描述)。然而,某些被設計成支持相對更短的渲染管線的GPU(例如GPU 36)可能不能夠支持具有擴展渲染管線的API。舉例來說,可以防止一些GPU指定著色單元40執行兩種以上不同類型的著色操作。
[0066]在一個實例中,GPU 36可以指定著色單元40執行頂點著色和像素著色操作。在這個實例中,GPU 36可能缺乏指定著色單元40執行與殼體著色器、域著色器和/或幾何形狀著色器相關聯的操作的資源。也就是說,硬體和/或軟體限制可能會防止GPU 36指定著色單元40執行殼體著色、域著色和/或幾何形狀著色操作。因此,GPU 36可能不能夠支持與包含此功能性的API相關聯的著色器級。
[0067]舉例來說,支持先前DirectX 9 API (由微軟開發,可包含Direct3D 9 API)的前代GPU可能不能夠支持DirectX 10 API (其可包含Direct3D 10 API)。也就是說,使用前代GPU可能不能夠執行DirectX 10 API的特徵中的至少一些(例如某些著色器級)。此夕卜,支持先前DirectX 9 API和DirectX 10 API的GPU可能不能夠支持DirectX 11 API的所有特徵。此些不兼容性可能產生可能不再為執行依靠DirectX 10或DirectX 11的軟體或其它應用程式提供支持的大量當前部署的GPU。雖然上述實例是相對於微軟的DirectX族的API描述的,但是其它API和舊式GPU 36也可能存在類似的兼容性問題。
[0068]此外,支持相對更長的圖形處理管線(例如,具有額外著色器級的渲染管線)可能必需更加複雜的硬體配置。舉例來說,將幾何形狀著色器級引入到渲染管線以執行幾何形狀著色(當由專用的一個著色單元40執行時),可能導致對晶片外存儲器的額外讀取和寫入。也就是說,GPU 36可以起初用著色單元40中的一個執行頂點著色,並且將頂點存儲到存儲單元48。GPU 36還可以讀取頂點著色器輸出的頂點,並且寫入當通過著色單元40中的一個執行幾何形狀著色時產生的新頂點。如下所述,給渲染管線包含曲面細分級(例如,殼體著色器級和域著色器級)可能會引入類似的複雜性。
[0069]對晶片外存儲器的額外讀取和寫入可能會消耗存儲器總線帶寬(例如,將GPU 36連接到存儲單元48的通信信道),同時還潛在地增加了所消耗的功率量(考慮到每次讀取和寫入都必需給存儲器總線和存儲單元48供電)。在這個意義上,對每一著色器級使用專用著色單元40來實施具有許多級的圖形管線,可能會導致功率效率較低的GPU。此外,由於在從存儲單元48檢索數據時的延遲,此些GPU 36在輸出經渲染的圖像方面也可能執行得較慢。
[0070]本發明的方面總體上涉及合併著色單元40中的一或多個的功能,使得著色單元40中的一個可以執行一種以上著色功能。舉例來說,通常GPU 36可以通過指定著色單元40執行特定的著色操作來執行渲染過程(其可以稱為具有著色器級的渲染管線),其中著色單元40中的每一個可以同時實施相同著色器的多個例子。也就是說,GPU 36可以指定著色單元40中的一或多個執行頂點著色操作,例如支持頂點著色器的多達256個並行例子。GPU 36還可以指定著色單元40中的一或多個執行像素著色操作,例如支持像素著色器的多達256個並行例子。這些硬體單元可以將執行三個著色器中的一個所得到的輸出存儲到晶片外存儲器,例如存儲單元48,直到下一指定硬體單元可以用於處理圖形處理管線中的前一硬體單元的輸出為止。
[0071]雖然本發明的方面可能用單數形式提到特定硬體著色單元(例如,一個硬體著色單元),但是應理解,此些單元可以實際上包括一或多個著色單元40 (—個以上著色器處理器),以及GPU 36的用於執行著色操作的一或多個其它組件。舉例來說,如上所述,GPU 36可以具有多個相關聯的著色單元40。GPU 36可以指定著色單元40中的一個以上執行相同的著色操作,其中著色單元40中的每一個經配置以執行本發明的用於合併著色操作的技術。總地來說,硬體著色單元可以指代GPU(例如GPU 36)調用以執行特定的著色操作的一組硬體組件。
[0072]在一個實例中,本發明的方面包含使用單個硬體著色單元執行頂點著色操作和幾何形狀著色操作。在另一實例中,本發明的方面包含使用單個硬體著色單元執行頂點著色操作和殼體著色操作。在又一實例中,本發明的方面包含使用單個硬體著色單元執行域著色操作和幾何形狀著色操作。本發明的方面還涉及硬體著色單元在著色操作之間的過渡方式。也就是說,本發明的方面涉及在使用硬體著色單元執行第一著色操作與使用相同的硬體著色單元執行第二著色操作之間的過渡。
[0073]舉例來說,根據本發明的方面,GPU 36可以使用被指定用以執行頂點著色操作的著色單元40執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點。在這個實例中,可以用接收單個頂點作為輸入並且產生單個頂點作為輸出的接口來配置著色單元40。此外,GPU 36可以使用相同的著色單元40來執行幾何形狀著色操作以基於經頂點著色的頂點中的一或多個執行一或多個新頂點。幾何形狀著色操作可以對一或多個經頂點著色的頂點中的至少一個進行操作以輸出一或多個新頂點。同樣,雖然是相對於單個著色單元40描述的,但是這些技術可以通過GPU 36的多個著色單元40並行地實施。
[0074]某些API可能必需被指定執行頂點著色操作的著色單元40實施或遵照1:1接口,其接收單個頂點作為輸入並且產生單個頂點作為輸出。相比之下,專用於執行幾何形狀著色操作的著色單元40可以實施或遵照1:N接口,其接收一或多個頂點作為輸入並且產生一或多個(並且通常是許多,因此上面使用「N」)頂點作為輸出。
[0075]根據本發明的方面,GPU 36可以利用著色單元40的被指定執行頂點著色操作的I: I接口來模仿這個1:N幾何形狀著色器接口,方法是通過調用幾何形狀著色器程序的多個例子。GPU 36可以並行地執行這些幾何形狀著色器程序中的每一個以產生從執行幾何形狀著色器操作得出的新頂點中的一個。也就是說,著色單元40可以使用HLSL(例如,具有圖形渲染API)可編程,使得著色單元40可以並行地執行通常稱為「著色器程序」的多個例子。這些著色器程序可以稱為「纖程」或「線程」(這兩者都可以指代形成程序或執行線程的指令流)。根據本發明的方面並且如下文更詳細地描述,GPU 36可以使用被指定用於頂點著色操作的硬體著色單元來執行幾何形狀著色器程序的多個例子。GPU 36可以將幾何形狀著色器指令附加到頂點著色器指令,使得相同的著色單元40循序地執行這兩個著色器,例如頂點著色器和幾何形狀著色器。
[0076]在另一實例中,根據本發明的方面,GPU 36可以使用指定用以執行頂點著色操作的硬體著色單元來執行頂點著色操作以對輸入頂點進行著色,以便輸出經頂點著色的頂點。硬體著色單元可以遵照接收單個頂點作為輸入並且產生單個頂點作為輸出的接口。此夕卜,GPU可以使用被指定用於執行頂點著色操作的相同硬體著色單元來執行一或多個曲面細分操作(例如,殼體著色操作和/或域著色操作)以基於經頂點著色的頂點中的一或多個產生一或多個新頂點。所述一或多個曲面細分操作可以對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出一或多個新頂點。
[0077]舉例來說,除了上述著色器級之外,一些圖形渲染管線還可以包含殼體著色器級、曲面細分器級和域著色器級。總地來說,包含殼體著色器級、曲面細分器級和域著色器級以適應硬體曲面細分。也就是說,包含殼體著色器級、曲面細分器級和域著色器級以適應GPU36的曲面細分,而不是(舉例來說)由CPU 32執行的軟體應用程式來執行。
[0078]根據本發明的方面,GPU 36可以使用相同著色單元40執行頂點著色和曲面細分操作。舉例來說,GPU 36可以在兩個遍次中執行頂點著色和曲面細分操作。根據本發明的方面並且在下文中更詳細地描述,GPU 36可以存儲各種值以實現不同著色操作之間的過渡。
[0079]在一實例中,在第一遍次中,GPU 36可以指定一或多個著色單元40執行頂點著色和殼體著色操作。在這個實例中,GPU 36可以將殼體著色器指令附加到頂點著色器指令。因此,相同的著色單元40循序地執行頂點著色和殼體著色器指令。
[0080]在第二遍次中,GPU 36可以指定一或多個著色單元40執行域著色和幾何形狀著色操作。在這個實例中,GPU 36可以將域著色器指令附加到幾何形狀著色器指令。因此,相同的著色單元40循序地執行域著色和幾何形狀著色操作。通過在多個遍次中執行多個著色操作,GPU 36可以使用相同的著色硬體來模仿具有額外著色能力的GPU。
[0081]本發明的方面還涉及GPU 36在不同著色操作之間過渡的方式。舉例來說,本發明的方面涉及將著色操作拼補在一起使得所述操作由相同的硬體著色單元循序地執行的方式。
[0082]根據本發明的方面,在一實例中,GPU 36可以指定一或多個著色單元40執行與渲染管線的第一著色器級相關聯的第一著色操作。GPU 36可以在完成第一著色操作後即刻切換著色單元40的操作模式。GPU 36可以接著使用被指定用以執行第一著色操作的相同的著色單元40執行與渲染管線的第二不同著色器級相關聯的第二著色操作。
[0083]根據一些實例,GPU 36可以使用多種模式將著色操作拼補在一起,其中每一模式具有特定一組相關聯的著色操作。舉例來說,第一模式可以指示繪製調用僅包含頂點著色操作。在這個實例中,在執行繪製調用後,GPU 36即刻可以指定一或多個著色單元40根據模式信息執行頂點著色操作。此外,第二模式可以指示繪製調用包含頂點著色和幾何形狀著色操作兩者。在這個實例中,在執行繪製調用後,GPU 36即刻可以指定一或多個著色單元40執行頂點著色操作。此外,根據本發明的方面,GPU 36可以將幾何形狀著色器指令附加到頂點著色器指令,使得相同的著色單元執行頂點著色操作和幾何形狀著色操作兩者。可以使用額外模式來指示著色器的其它組合,如下文更詳細地描述。
[0084]在一些實例中,GPU驅動器50可以產生GPU 36使用的模式信息。根據本發明的方面,不同著色器(例如,頂點著色操作、幾何形狀著色操作、殼體著色操作、域著色操作等等)不必須用特定方式編譯以便由相同的著色單元40循序地執行。而是每一著色器可以獨立編譯(無需參考任何其它著色器)並且在繪製時被GPU 36拼補在一起。也就是說,在執行了繪製調用後,GPU 36即刻可以確定與繪製調用相關聯的模式,並且相應地將編譯的著色器拼補在一起。
[0085]本發明的技術可以使得具有用於執行著色操作的有限數目個著色單元40的GPU (例如GPU 36)能夠模仿具有更大數目個著色單元40的GPU。舉例來說,雖然GPU 36可能受到阻止無法指定著色單元40執行兩個以上著色操作(例如,頂點著色操作和像素著色操作),但是本發明的技術可以使得GPU 36能夠執行額外的著色操作(例如,幾何形狀著色操作、殼體著色操作和/或域著色操作),而無需重新配置著色單元40。也就是說,所述技術可以允許著色單元40在執行其它著色操作時遵照某些著色器級的輸入/輸出約束。
[0086]此外,通過用相同的著色單元40執行多個著色操作,所述技術可以減少存儲器總線帶寬消耗。舉例來說,在用其它著色操作(例如,幾何形狀著色)執行頂點著色的情況下,用於頂點著色的著色單元40無需在執行其它著色器操作之前將頂點著色結果存儲到晶片外存儲器(例如存儲單元48)。而是可以將頂點著色結果存儲到GPU存儲器38並且立即將所述結果用於幾何形狀著色操作。
[0087]以此方式,所述技術與具有額外著色單元40的GPU相比可以減少存儲器總線帶寬消耗,這可以減少功率消耗。所述技術可以因此促成功率效率更高的GPU,其利用的功率少於具有額外硬體著色器單元的GPU。因此,在一些實例中,所述技術可以部署在功率有限的裝置中,例如移動裝置、膝上型計算機和任何其它類型不具有恆定的專用功率供應的裝置。
[0088]應理解,計算裝置30可以包含圖1中為了清晰起見未展示的額外模塊或單元。舉例來說,計算裝置30可以包含用於發射和接收數據的收發器模塊,並且可以包含用以允許計算裝置30與另一裝置或網絡之間的無線或有線通信的電路。計算裝置30還可包含揚聲器和麥克風(圖1中都未展示)以在計算裝置30是移動無線電話的實例中實行電話通信,或者在計算裝置30是媒體播放器的實例中包含揚聲器。在一些例子中,在計算裝置30是臺式計算機或其它經裝備以與外部用戶接口或顯示器介接的裝置的實例中,用戶接口單元46和顯示器單元42可以在計算裝置30外部。
[0089]圖2是說明示範性圖形處理管線80的框圖。實例管線80包含輸入彙編器級82、頂點著色器級84、幾何形狀著色器級86、光柵化器級88、像素著色器級90和輸出合併器級92。在一些實例中,API (例如DirectX 10(或Direct3D 10)API)可經配置以使用圖2中展示的級中的每一個。圖形處理管線80在下文被描述為由GPU 36執行,但是可以由多種其它圖形處理器執行。
[0090]圖形處理管線80總體上包含可編程級(例如,用圓角說明)和固定功能級(例如,用方角說明)。舉例來說,與圖形渲染管線80的某些級相關聯的圖形渲染操作總體上由可編程著色器處理器(例如,著色單元40中的一個)執行,而與圖形渲染管線80相關聯的其它圖形渲染操作總體上由與GPU 36相關聯的不可編程的固定功能硬體單元執行。著色單元40執行的圖形渲染級總體上可以稱為「可編程」級,而固定功能單元執行的級總體上可以稱為固定功能級。
[0091]輸入彙編器級82在圖2的實例中展示為固定功能級,並且總體上負責將圖形數據(三角形、線和點)供應到圖形處理管線80。舉例來說,輸入彙編器級82可以收集用於高階表面、基元等等的頂點數據,並且將頂點數據和屬性輸出到頂點著色器級84。因此,輸入彙編器級80可以使用固定功能操作從晶片外存儲器(例如,存儲單元48)讀取頂點。輸入彙編器級80可以接著從這些頂點創建管線工作項目,同時還產生頂點識別符(「VertexID」)、例子識別符(「InstancelD」,其可供頂點著色器使用)和基元識別符(「PrimativelD」,其可供幾何形狀著色器和像素著色器使用)。輸入彙編器級80可以在讀取頂點後即刻自動產生 VertexID、InstanceID 和 PrimitiveID0
[0092]頂點著色器級84可以處理接收到的頂點數據和屬性。舉例來說,頂點著色器級84可以執行逐個頂點的處理,例如變換、蒙皮、頂點位移和計算逐個頂點的材料屬性。在一些實例中,頂點著色器級84可以產生紋理坐標、頂點顏色、頂點照明、霧因子等等。頂點著色器級84總體上獲得單個輸入頂點,並且輸出單個經處理的輸出頂點。
[0093]幾何形狀著色器級86可以接收由頂點數據(例如,用於三角形的三個頂點、用於線的兩個頂點或用於點的單個頂點)定義的基元,並且進一步處理所述基元。舉例來說,幾何形狀著色器級86可以執行逐個基元的處理,例如輪廓邊緣檢測和陰影體擠出,以及其它可能的處理操作。因此,幾何形狀著色器級86可以接收一個基元作為輸入(其可包含一或多個頂點),並且輸出零個、一個或多個基元(其同樣可包含一或多個頂點)。輸出基元可以含有比在沒有幾何形狀著色器級86的情況下可能的更多的數據。輸出數據的總量可以等於頂點大小乘以頂點計數並且對每個調用可能受到限制。來自幾何形狀著色器級86的流式輸出可以允許將到達這個級的基元存儲到晶片外存儲器,例如存儲器單元48。輸出流通常被連接到幾何形狀著色器級86,並且兩者可以編程在一起(例如,使用API)。
[0094]光柵化器級88通常是負責剪切基元並且為像素著色器級90準備基元的固定功能級。舉例來說,光柵化器級88可以執行剪切(包含定製剪切邊界)、視角劃分、視區/剪刀選擇和實施、渲染目標選擇和基元設置。以此方式,光柵化器級88可以產生多個片段以供像素著色器級90著色。
[0095]像素著色器級90從光柵化器級88接收片段,並且產生逐個像素的數據,例如顏色。像素著色器級96還可以執行逐個像素的處理,例如紋理混合和照明模型計算。因此,像素著色器級90可以接收一個像素作為輸入,並且可以輸出在相同相對位置處的一個像素(或像素的零值)。
[0096]輸出合併器級92總體上負責組合各種類型的輸出數據(例如像素著色器值、深度和模板信息)以產生最終結果。舉例來說,輸出合併器級92可以為渲染目標(像素位置)執行固定功能混合、深度和/或模板操作。雖然上文總體上是相對於頂點著色器級84、幾何形狀著色器級86和像素著色器級90描述的,但是前述描述中的每一個可以涉及由GPU指定來執行相應著色操作的一或多個著色單元(例如著色單元40)。
[0097]某些GPU可能不能夠支持圖2中展示的所有著色器級。舉例來說,一些GPU可能不能夠指定著色單元執行兩個以上著色操作,原因在於硬體和/或軟體限制(例如,著色單元40和相關聯的組件的數目有限)。在一實例中,某些GPU可能不支持與幾何形狀著色器級86相關聯的操作。而是GPU可以只包含對於指定著色單元執行頂點著色器級84和像素著色器級90的支持。因此,由著色單元執行的操作必須遵照與頂點著色器級84和像素著色器級90相關聯的輸入/輸出接口。
[0098]此外,在一些實例中,相對於不包含幾何形狀著色器級86的圖形處理管線,將幾何形狀著色器級86引入到管線可能會導致對存儲單元48的額外讀取和寫入。舉例來說,如上所述,頂點著色器級86可以將頂點向外寫入到晶片外存儲器,例如存儲單元48。幾何形狀著色器級86可以讀取這些頂點(頂點著色器級84輸出的頂點)並且寫入新頂點,接著對新頂點進行像素著色。對存儲單元48的這些額外讀取和寫入可能會消耗存儲器總線帶寬,同時還潛在地增加所消耗的功率量。在這個意義上,實施包含頂點著色器級84、幾何形狀著色器級86和像素著色器級90中的每一個的圖形處理管線可能會產生功率效率更低的GPU,其在輸出經渲染的圖像方面可能也更慢,原因在於從存儲單元48檢索數據時的延遲。
[0099]如上所述,本發明的方面總體上涉及合併著色單元40中的一或多個的功能,使得被指定用於特定著色操作的著色單元40可以執行一個以上著色操作。如下文更詳細地描述,在一些實例中,可以指定一個著色單元40執行與頂點著色器級84相關聯的頂點著色操作。根據本發明的方面,也可以實施相同的著色單元40以執行與幾何形狀著色器級86相關聯的幾何形狀著色操作。也就是說,GPU 36可以調用著色單元40以執行頂點著色操作,但是也可以實施著色單元40以執行幾何形狀著色操作,而無需重新指定著色單元40執行幾何形狀著色任務。
[0100]圖3A和3B是根據本發明的方面的圖形渲染管線中的數據流的概念圖。舉例來說,圖3A說明頂點著色器級100、幾何形狀著色器級102、流式輸出104和像素著色器級106。總地來說,圖3A中展示的頂點著色器級100、幾何形狀著色器級102和像素著色器級106各自表示用於執行著色操作的相關聯的硬體。也就是說,舉例來說,頂點著色器級100、幾何形狀著色器級102和像素著色器級106中的每一個可以與分開指定的處理單元(例如,被指定執行相應任務的著色單元40)相關聯。
[0101]舉例來說,頂點著色器級100表示執行頂點著色操作的一或多個單元(例如,著色單元40)。也就是說,頂點著色器級100可以包含被GPU 36調用以執行頂點著色操作的組件。舉例來說,頂點著色器級100可以接收頂點作為輸入,並且將輸入頂點從三維(3D)模型空間翻譯成屏幕空間中的二維(2D)坐標。頂點著色器級100可以接著輸出頂點的經翻譯版本(其可以稱為「經翻譯頂點」)。頂點著色器級100—般不創建新頂點,而是一次對一個頂點進行操作。因此,頂點著色器級100可以稱為一對一(1:1)級,頂點著色器級100接收單個輸入頂點並且輸出單個輸出頂點。
[0102]幾何形狀著色器級102表示執行幾何形狀著色操作的一或多個單元(例如著色單元40)。也就是說,幾何形狀著色器級102可以包含被GPU 36調用以執行幾何形狀著色操作的組件。舉例來說,幾何形狀著色器級102可以用於執行多種多樣的操作,例如對立方體貼圖的單遍渲染、點塊紋理產生等等。通常幾何形狀著色器級102接收由一或多個經翻譯頂點構成的基元,所述頂點已經被頂點著色器級100頂點著色。幾何形狀著色器級102執行幾何形狀著色操作以創建可以形成新基元的新頂點(或者可能將輸入基元變換成具有額外新頂點的新類型的基元)。
[0103]舉例來說,幾何形狀著色器級102通常接收由一或多個經翻譯的頂點定義的基元,並且基於接收到的基元產生一或多個新頂點。幾何形狀著色器級102接著輸出新頂點(其可以形成一或多個新基元)。結果,幾何形狀著色器級102可以稱為一對多(1:N)或甚至多對多(N:N)級,因為幾何形狀著色器級102接收一或多個經翻譯的頂點並且產生多個新頂點。
[0104]雖然被描述為是一對多或甚至多對多,但是在一些例子中,幾何形狀著色器級102也可以不輸出任何新頂點或者僅輸出單個新頂點。在這個方面,所述技術不應僅限於在每個例子中輸出許多頂點的那些幾何形狀著色器,而是可以總體上相對於任何可輸出零、一個或許多新頂點的幾何形狀著色器級102來實施,如下文將更詳細地解釋。
[0105]可以存儲幾何形狀著色器級102的輸出以用於額外的幾何形狀著色(例如,在流式輸出104期間)。還可以將幾何形狀著色器級102的輸出輸出到光柵化器,其使新頂點(和經翻譯的頂點)光柵化以產生由像素構成的光柵圖像。
[0106]還可以將來自幾何形狀著色器級102的像素傳遞到像素著色器級106。像素著色器級106 (也可以稱為片段著色器)可以計算每一像素的顏色和其它屬性,從而執行多種多樣的操作以產生經著色的像素。可以將經著色的像素與深度貼圖合併,並且可以執行其它著色後操作以產生輸出圖像供經由顯示器裝置(例如計算機監視器、電視機或其它類型的顯示器裝置)顯示。
[0107]圖3A中展示的著色器級可以支持一或多個圖形API。在用於說明的目的的實例中,頂點著色器級100、幾何形狀著色器級102和像素著色器級106可以支持DirectXlOAPI。也就是說,可以通過頂點著色器級100、幾何形狀著色器級102和像素著色器級106執行使用DirectX 10 API產生的代碼,以渲染圖形數據。然而,幾何形狀著色器級102可能不包含在所有圖形渲染管線中,並且可能不能由所有GPU執行。舉例來說,雖然DirectX 10API包含對於幾何形狀著色器級102的支持,但是某些較早版本(例如,DirectX 9)不包含此支持。因此,經設計以執行用DirectX API的較早版本創建的代碼(或針對其它API設計的GPU)可能不能夠指定著色單元40執行幾何形狀著色器級102。
[0108]圖3B說明根據本發明的技術的圖形渲染管線(相對於圖3A中展示的實例)中的數據流的修改概念圖。圖3B中展示的實例包含合併的頂點著色器/幾何形狀著色器(VS/GS)級110、流式輸出112和像素著色器級114。根據本發明的方面,合併的VS/GS級110可包含用於執行上文相對於頂點著色器級100和幾何形狀著色器級102描述的功能的一或多個處理單元。也就是說,雖然頂點著色器級100和幾何形狀著色器級102表示被GPU (例如GPU 36)調用以便分別執行頂點著色操作和幾何形狀著色操作的不同單元,但是根據本發明的方面,此些功能可以由基本上相同的硬體(例如,著色單元40)執行。
[0109]舉例來說,在GPU 36調用了頂點著色操作之後,VS/GS級110即刻可以執行頂點著色操作和幾何形狀著色操作兩者。也就是說,合併的VS/GS級110可以包含用於執行上文相對於頂點著色器級100描述的操作和用於執行上文相對於幾何形狀著色器級102描述的操作的相同組的著色單元40。
[0110]然而,因為GPU 36起初是作為頂點著色單元調用每一著色單元40,但是GPU 36的組件可以經配置以用特定格式(例如,遵照1:1輸入/輸出接口)從頂點著色單元接收數據。舉例來說,GPU 36可以分配高速緩存(例如,頂點參數高速緩存,如下文更詳細地描述)中的單個條目來存儲來自著色單元40的用於經著色的頂點的輸出。GPU 36還可以基於著色單元40被調用的方式來執行一些光柵化操作。如下文更詳細地描述,本發明的方面允許GPU 36使用與頂點著色操作相同的著色單元執行幾何形狀著色操作,同時仍然遵照適當的接口。
[0111]在一些例子中,幾何形狀著色器級102可以主要用於對數據的低放大(例如,點塊紋理產生)。此些操作可能必需每次幾何形狀著色器調用有相對低的ALU使用。因此,著色單元40的ALU可能在幾何形狀著色器級102期間未被完全利用。根據本發明的方面,可以將幾何形狀著色器級102附加到頂點著色器級100以形成合併的VS/GS級110,其可以在GPU架構中作為頂點著色器級100來調用。用上述方式調用合併的VS/GS級110可以增加ALU利用率,方法是通過允許由相同處理單元執行頂點著色和幾何形狀著色操作兩者。
[0112]為了啟用合併的VS/GS級110,GPU 36可以執行用於在頂點著色操作(1:1級)與幾何形狀著色操作(1:N級)之間過渡的功能,如相對於圖4中展示的實例更詳細地描述。以此方式,本發明的技術允許具有有限資源的GPU(例如,其可能阻止GPU指定著色單元40執行兩個以上著色操作)以模仿具有額外資源的GPU。
[0113]圖4是說明實施本發明描述的技術以執行頂點著色操作和幾何形狀著色操作的硬體著色單元的實例操作的圖。雖然是相對於GPU 36(圖1)描述的,但是本發明的方面可以由具有各種其它組件的各種其它GPU執行。
[0114]在圖4的實例中,GPU 36可以指定著色單元40執行頂點著色操作。因此,GPU36的組件可以經配置以向著色單元40發送用於頂點的數據,並且從著色單元40接收用於經著色的頂點的數據(例如,1:1接口)。著色單元40可以執行頂點著色器以執行頂點著色操作,因而產生第一組基元120。在圖4的實例中,第一組基元120包含帶有四個頂點(標記為點P0_p3)的具有鄰接關係的三角形。
[0115]在執行了頂點著色操作之後,GPU 36可以將經著色的頂點存儲到本機存儲器資源。舉例來說,GPU 36可以將頂點著色器輸出連同「切割」信息(如果存在的話)和流識別符一起導出到(例如,GPU存儲器38的)位置高速緩存。可以通過VS END指令將頂點著色操作與幾何形狀著色操作分開。因此,在執行了 VS END指令和完成頂點著色操作之後,被指定執行頂點著色操作的一或多個著色單元40各自開始執行幾何形狀著色操作。
[0116]也就是說,根據本發明的方面,被指定執行頂點著色操作的相同的著色單元40還執行幾何形狀著色操作。舉例來說,GPU 36可以通過改變一或多個資源指針而改變幾何形狀著色器特定的資源的狀態(例如,幾何形狀著色器常數、紋理偏移量等等)。GPU36可以根據被指派給著色操作的模式(繪製模式)來執行這個狀態改變。
[0117]在一些實例中,GPU 36可以在執行繪製調用時設置繪製模式。繪製模式可以指示哪些著色操作與繪製調用相關聯。在用於說明的目的的實例中,繪製模式O可以指示繪製調用僅包含頂點著色操作。繪製模式I可以指示繪製調用包含頂點著色操作和幾何形狀著色操作兩者。如下文更詳細地描述,其它繪製模式也是可能的。表I提供了具有兩種模式的實例模式表:
[0118]表1:模式信息合併的VS/GS
[0119]

【權利要求】
1.一種渲染圖形的方法,所述方法包括: 指定圖形處理單元的硬體著色單元執行與渲染管線的第一著色器級相關聯的第一著色操作; 在完成所述第一著色操作後即刻切換所述硬體著色單元的操作模式;以及 使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第二不同著色器級相關聯的第二著色操作。
2.根據權利要求1所述的方法,其中切換操作模式包括確定繪製調用的包括所述第一著色操作和所述第二著色操作的模式。
3.根據權利要求2所述的方法,其進一步包括: 在完成所述第二著色操作後即刻切換所述硬體著色單元的操作模式;以及 使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第三不同著色器級相關聯的第三著色操作。
4.根據權利要求3所述的方法,其進一步包括: 在完成所述第三著色操作後即刻切換所述硬體著色單元的操作模式;以及 使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第四不同著色器級相關聯的第四著色操作。
5.根據權利要求1所述的方法,其中切換操作模式包括在維持與所述第一著色級相關聯的輸入/輸出接口的同時切換操作模式。
6.根據權利要求1所述的方法,其中切換操作模式包括切換用於所述第二著色操作的程序計數器與一或多個資源指針。
7.根據權利要求1所述的方法,其中與同所述第二著色操作相關聯的第二指令獨立地編譯與所述第一著色操作相關聯的第一指令,使得所述第一指令不依賴於所述第二指令。
8.根據權利要求7所述的方法,其進一步包括在本機存儲器中為一或多個系統產生的值預留一或多個預定位置,其中所述系統產生的值用於所述第一著色操作和所述第二著色操作。
9.根據權利要求1所述的方法,其進一步包括將來自所述第一著色操作的結果存儲到本機存儲器,以及對所述第一著色操作的所述結果執行所述第二著色操作,而無需存取位於所述圖形處理單元外部的晶片外存儲器。
10.根據權利要求1所述的方法,其中執行所述第一著色操作包括執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,並且執行所述第二著色操作包括執行幾何形狀著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個新頂點。
11.根據權利要求1所述的方法,其中執行所述第一著色操作包括執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,並且執行所述第二著色操作包括執行殼體著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個控制點。
12.根據權利要求1所述的方法,其中執行所述第一著色操作包括執行域著色操作以產生頂點,並且執行所述第二著色操作包括執行幾何形狀著色操作以基於所述經域著色的頂點中的一或多個產生一或多個新頂點。
13.一種用於渲染圖形的圖形處理單元,其包括經配置以進行以下操作的一或多個處理器: 指定所述圖形處理單元的硬體著色單元執行與渲染管線的第一著色器級相關聯的第一著色操作; 在完成所述第一著色操作後即刻切換所述硬體著色單元的操作模式;以及使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第二不同著色器級相關聯的第二著色操作。
14.根據權利要求13所述的圖形處理單元,其中為了切換操作模式,所述一或多個處理器經配置以確定繪製調用的包括所述第一著色操作和所述第二著色操作的模式。
15.根據權利要求14所述的圖形處理單元,其中所述一或多個處理器進一步經配置以: 在完成所述第二著色操作後即刻切換所述硬體著色單元的操作模式;以及使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第三不同著色器級相關聯的第三著色操作。
16.根據權利要求15所述的圖形處理單元,其中所述一或多個處理器進一步經配置以: 在完成所述第三著色操作後即刻切換所述硬體著色單元的操作模式;以及使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第四不同著色器級相關聯的第四著色操作。
17.根據權利要求13所述的圖形處理單元,其中為了切換操作模式,所述一或多個處理器經配置以在維持與所述第一著色級相關聯的輸入/輸出接口的同時切換操作模式。
18.根據權利要求13所述的圖形處理單元,其中為了切換操作模式,所述一或多個處理器經配置以切換用於所述第二著色操作的程序計數器與一或多個資源指針。
19.根據權利要求13所述的圖形處理單元,其中與同所述第二著色操作相關聯的第二指令獨立地編譯與所述第一著色操作相關聯的第一指令,使得所述第一指令不依賴於所述第二指令。
20.根據權利要求19所述的圖形處理單元,其中所述一或多個處理器進一步經配置以在所述圖形處理單元的本機存儲器中為一或多個系統產生的值預留一或多個預定位置,其中所述系統產生的值用於所述第一著色操作和所述第二著色操作。
21.根據權利要求13所述的圖形處理單元,其中所述一或多個處理器進一步經配置以將來自所述第一著色操作的結果存儲到所述圖形處理單元的本機存儲器,並且對所述第一著色操作的所述結果執行所述第二著色操作,而無需存取位於所述圖形處理單元外部的晶片外存儲器。
22.根據權利要求13所述的圖形處理單元,其中為了執行所述第一著色操作,所述硬體著色單元經配置以執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,並且為了執行所述第二著色操作,所述硬體著色單元經配置以執行幾何形狀著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個新頂點。
23.根據權利要求13所述的圖形處理單元,其中為了執行所述第一著色操作,所述硬體著色單元經配置以執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,並且為了執行所述第二著色操作,所述硬體著色單元經配置以執行殼體形狀著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個控制點。
24.根據權利要求13所述的圖形處理單元,其中為了執行所述第一著色操作,所述硬體著色單元經配置以執行域著色操作以產生頂點,並且為了執行所述第二著色操作,所述硬體著色單元經配置以執行幾何形狀著色操作以基於所述經域著色的頂點中的一或多個產生一或多個新頂點。
25.一種用於渲染圖形的設備,所述設備包括: 用於指定圖形處理單元的硬體著色單元執行與渲染管線的第一著色器級相關聯的第一著色操作的裝置; 用於在完成所述第一著色操作後即刻切換所述硬體著色單元的操作模式的裝置;以及 用於使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第二不同著色器級相關聯的第二著色操作的裝置。
26.根據權利要求25所述的設備,其中用於切換操作模式的所述裝置包括用於確定繪製調用的包括所述第一著色操作和所述第二著色操作的模式的裝置。
27.根據權利要求26所述的設備,其進一步包括: 用於在完成所述第二著色操作後即刻切換所述硬體著色單元的操作模式的裝置;以及 用於使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第三不同著色器級相關聯的第三著色操作的裝置。
28.根據權利要求27所述的設備,其進一步包括: 用於在完成所述第三著色操作後即刻切換所述硬體著色單元的操作模式的裝置;以及 用於使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第四不同著色器級相關聯的第四著色操作的裝置。
29.根據權利要求25所述的設備,其中用於切換操作模式的所述裝置包括用於在維持與所述第一著色級相關聯的輸入/輸出接口的同時切換操作模式的裝置。
30.根據權利要求25所述的設備,其中所述切換操作模式包括用於切換用於所述第二著色操作的程序計數器與一或多個資源指針的裝置。
31.根據權利要求25所述的設備,其中與同所述第二著色操作相關聯的第二指令獨立地編譯與所述第一著色操作相關聯的第一指令,使得所述第一指令不依賴於所述第二指令。
32.根據權利要求31所述的設備,其進一步包括用於在本機存儲器中為一或多個系統產生的值預留一或多個預定位置的裝置,其中所述系統產生的值用於所述第一著色操作和所述第二著色操作。
33.根據權利要求25所述的設備,其進一步包括用於將來自所述第一著色操作的結果存儲到本機存儲器以及對所述第一著色操作的所述結果執行所述第二著色操作而無需存取位於所述圖形處理單元外部的晶片外存儲器的裝置。
34.根據權利要求25所述的設備,其中用於執行所述第一著色操作的所述裝置包括用於執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點的裝置,並且用於執行所述第二著色操作的所述裝置包括用於執行幾何形狀著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個新頂點的裝置。
35.根據權利要求25所述的設備,其中用於執行所述第一著色操作的所述裝置包括用於執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點的裝置,並且用於執行所述第二著色操作的所述裝置包括用於執行殼體形狀著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個控制點的裝置。
36.根據權利要求25所述的設備,其中用於執行所述第一著色操作的所述裝置包括用於執行域著色操作以產生頂點的裝置,並且用於執行所述第二著色操作的所述裝置包括用於執行幾何形狀著色操作以基於所述經域著色的頂點中的一或多個產生一或多個新頂點的裝置。
37.一種上面存儲有指令的非暫時性計算機可讀媒體,所述指令在被執行時使得一或多個處理器: 指定圖形處理單元的硬體著色單元執行與渲染管線的第一著色器級相關聯的第一著色操作; 在完成所述第一著色操作後即刻切換所述硬體著色單元的操作模式;以及 使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第二不同著色器級相關聯的第二著色操作。
38.根據權利要求37所述的非暫時性計算機可讀媒體,其中為了切換操作模式,所述指令使得所述一或多個處理器確定繪製調用的包括所述第一著色操作和所述第二著色操作的模式。
39.根據權利要求38所述的非暫時性計算機可讀媒體,其進一步包括使得所述一或多個處理器進行以下操作的指令: 在完成所述第二著色操作後即刻切換所述硬體著色單元的操作模式;以及 使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第三不同著色器級相關聯的第三著色操作。
40.根據權利要求39所述的非暫時性計算機可讀媒體,其進一步包括使得所述一或多個處理器進行以下操作的指令: 在完成所述第三著色操作後即刻切換所述硬體著色單元的操作模式;以及 使用所述圖形處理單元的被指定執行所述第一著色操作的所述硬體著色單元執行與所述渲染管線的第四不同著色器級相關聯的第四著色操作。
41.根據權利要求37所述的非暫時性計算機可讀媒體,其中為了切換操作模式,所述指令使得所述一或多個處理器在維持與所述第一著色級相關聯的輸入/輸出接口的同時切換操作模式。
42.根據權利要求37所述的非暫時性計算機可讀媒體,其中為了切換操作模式,所述指令使得所述一或多個處理器切換用於所述第二著色操作的程序計數器與一或多個資源指針。
43.根據權利要求37所述的非暫時性計算機可讀媒體,其中與同所述第二著色操作相關聯的第二指令獨立地編譯與所述第一著色操作相關聯的第一指令,使得所述第一指令不依賴於所述第二指令。
44.根據權利要求43所述的非暫時性計算機可讀媒體,其進一步包括使得所述一或多個處理器在所述圖形處理單元的本機存儲器中為一或多個系統產生的值預留一或多個預定位置的指令,其中所述系統產生的值用於所述第一著色操作和所述第二著色操作。
45.根據權利要求37所述的非暫時性計算機可讀媒體,其進一步包括使得所述一或多個處理器將來自所述第一著色操作的結果存儲到所述圖形處理單元的本機存儲器,並且對所述第一著色操作的所述結果執行所述第二著色操作,而無需存取位於所述圖形處理單元外部的晶片外存儲器。
46.根據權利要求37所述的非暫時性計算機可讀媒體,其中為了執行所述第一著色操作,所述指令使得所述硬體著色執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,並且為了執行所述第二著色操作,所述指令使得所述硬體著色單元執行幾何形狀著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個新頂點。
47.根據權利要求37所述的非暫時性計算機可讀媒體,其中為了執行所述第一著色操作,所述指令使得所述硬體著色單元執行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,並且為了執行所述第二著色操作,所述指令使得所述硬體著色單元執行殼體形狀著色操作以基於所述經頂點著色的頂點中的一或多個產生一或多個控制點。
48.根據權利要求37所述的非暫時性計算機可讀媒體,其中為了執行所述第一著色操作,所述指令使得所述硬體著色單元執行域著色操作以產生頂點,並且為了執行所述第二著色操作,所述指令使得所述硬體著色單元執行幾何形狀著色操作以基於所述經域著色的頂點中的一或多個產生一或多個新頂點。
【文檔編號】G06T15/80GK104205174SQ201380018600
【公開日】2014年12月10日 申請日期:2013年3月15日 優先權日:2012年4月4日
【發明者】維尼特·戈爾, 安德魯·E·格魯伯 申請人:高通股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀