圖形處理中的拼補著色的制作方法
【專利摘要】本發(fā)明的方面涉及一種用于渲染圖形的過程,其包含指定圖形處理單元GPU的硬件著色單元執(zhí)行與渲染管線的第一著色器級相關(guān)聯(lián)的第一著色操作。所述過程還包含在完成所述第一著色操作后即刻切換所述硬件著色單元的操作模式。所述過程還包含使用所述GPU的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第二不同著色器級相關(guān)聯(lián)的第二著色操作。
【專利說明】圖形處理中的拼補著色
[0001]本申請案要求2012年4月4日申請的第61/620,340號美國臨時申請案、2012年4月4日申請的第61/620,358號美國臨時申請案和2012年4月4日申請的第61/620,333號美國臨時申請案的權(quán)益,所有前述申請案的完整內(nèi)容都以引用的方式并入本文中。
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及計算機圖形。
【背景技術(shù)】
[0003]為視覺呈現(xiàn)提供內(nèi)容的裝置通常包含圖形處理單元(GPU)。GPU在顯示器上渲染表示所述內(nèi)容的像素。GPU為顯示器上的每一像素產(chǎn)生一或多個像素值,以便渲染每一像素以供呈現(xiàn)。
[0004]在一些例子中,GPU可以實施統(tǒng)一的著色器架構(gòu)來渲染圖形。在此些例子中,GPU可以配置多個類似的計算單元來執(zhí)行不同著色操作的管線。所述計算單元可以稱為統(tǒng)一著色單元或統(tǒng)一著色器處理器。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的技術(shù)總體上涉及執(zhí)行與圖形渲染管線的著色器級相關(guān)聯(lián)的著色操作。舉例來說,圖形處理單元(GPU)可以調(diào)用一或多個著色單元以執(zhí)行與圖形渲染管線的著色器級相關(guān)聯(lián)的著色操作。根據(jù)本發(fā)明的方面,所述GPU可以接著使用被指定用于執(zhí)行所述第一著色操作的著色單元執(zhí)行與圖形渲染管線的第二不同著色器級相關(guān)聯(lián)的著色操作。舉例來說,GPU可以在遵照與第一著色器級相關(guān)聯(lián)的輸入/輸出接口的同時執(zhí)行與第二級相關(guān)聯(lián)的著色操作。以此方式,GPU可以通過使用相同的著色單元執(zhí)行多個著色操作而模仿具有更大著色資源的GPU。
[0006]在一個實例中,本發(fā)明的方面涉及一種渲染圖形的方法,其包含:使用圖形處理單元的被指定用于頂點著色的硬件著色單元執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,其中所述硬件單元經(jīng)配置以接收單個頂點作為輸入,并且產(chǎn)生單個頂點作為輸出;以及使用所述圖形處理單元的所述硬件著色單元執(zhí)行幾何形狀著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個新頂點,其中所述幾何形狀著色操作對所述一或多個經(jīng)頂點著色的頂點中的至少一個進行操作以輸出所述一或多個新頂點。
[0007]在另一實例中,本發(fā)明的方面涉及一種用于渲染圖形的圖形處理單元,其包含經(jīng)配置以進行以下操作的一或多個處理器:使用圖形處理單元的被指定用于頂點著色的硬件著色單元執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,其中所述硬件單元經(jīng)配置以接收單個頂點作為輸入,并且產(chǎn)生單個頂點作為輸出;以及使用所述圖形處理單元的所述硬件著色單元執(zhí)行幾何形狀著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個新頂點,其中所述幾何形狀著色操作對所述一或多個經(jīng)頂點著色的頂點中的至少一個進行操作以輸出所述一或多個新頂點。
[0008]在另一實例中,本發(fā)明的方面涉及一種用于渲染圖形的設(shè)備,其包含:用于使用圖形處理單元的被指定用于頂點著色的硬件著色單元執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點的裝置,其中所述硬件單元經(jīng)配置以接收單個頂點作為輸入,并且產(chǎn)生單個頂點作為輸出;以及用于使用所述圖形處理單元的所述硬件著色單元執(zhí)行幾何形狀著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個新頂點的裝置,其中所述幾何形狀著色操作對所述一或多個經(jīng)頂點著色的頂點中的至少一個進行操作以輸出所述一或多個新頂點。
[0009]在另一實例中,本發(fā)明的方面涉及一種上面存儲有指令的非暫時性計算機可讀媒體,所述指令在被執(zhí)行時使得一或多個處理器使用被指定用于頂點著色的硬件著色單元執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,其中所述硬件單元經(jīng)配置以接收單個頂點作為輸入并且產(chǎn)生單個頂點作為輸出,并且使用被指定用于頂點著色的硬件著色單元執(zhí)行幾何形狀著色操作以基于經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個新頂點,其中所述幾何形狀著色操作對所述一或多個經(jīng)頂點著色的頂點中的至少一個進行操作以輸出一或多個新頂點。
[0010]在另一實例中,本發(fā)明的方面涉及一種用于渲染圖形的方法,其包含:使用圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,其中所述硬件單元遵照一個接口,所述接口接收單個頂點作為輸入,并且產(chǎn)生單個頂點作為輸出;以及使用所述圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行殼體著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個控制點,其中所述一或多個殼體著色操作對所述一或多個經(jīng)頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控制點。
[0011]在另一實例中,本發(fā)明的方面涉及一種用于渲染圖形的圖形處理單元,其包含一或多個經(jīng)配置以進行以下操作的處理器:使用圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,其中所述硬件單元遵照一個接口,所述接口接收單個頂點作為輸入,并且產(chǎn)生單個頂點作為輸出;以及使用所述圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行殼體著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個控制點,其中所述一或多個殼體著色操作對所述一或多個經(jīng)頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控制點。
[0012]在另一實例中,本發(fā)明的方面涉及一種用于渲染圖形的設(shè)備,其包含:用于使用圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點的裝置,其中所述硬件單元遵照一個接口,所述接口接收單個頂點作為輸入,并且產(chǎn)生單個頂點作為輸出;以及用于使用所述圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行殼體著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個控制點的裝置,其中所述一或多個殼體著色操作對所述一或多個經(jīng)頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控制點。
[0013]在另一實例中,本發(fā)明的方面涉及一種上面存儲有指令的非暫時性計算機可讀媒體,所述指令當被執(zhí)行時使得一或多個處理器進行以下操作:使用圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,其中所述硬件單元遵照一個接口,所述接口接收單個頂點作為輸入,并且產(chǎn)生單個頂點作為輸出;以及使用所述圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行殼體著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個控制點,其中所述一或多個殼體著色操作對所述一或多個經(jīng)頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控制點。
[0014]在一個實例中,本發(fā)明的方面涉及一種渲染圖形的方法,其包含:指定圖形處理單元的硬件著色單元執(zhí)行與渲染管線的第一著色器級相關(guān)聯(lián)的第一著色操作,在完成所述第一著色操作后即刻切換所述硬件著色單元的操作模式,并且使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的硬件著色單元執(zhí)行與渲染管線的第二不同著色器級相關(guān)聯(lián)的第二著色操作。
[0015]在另一實例中,本發(fā)明的方面涉及一種用于渲染圖形的圖形處理單元,其包括經(jīng)配置以進行以下操作的一或多個處理器:指定圖形處理單元的硬件著色單元執(zhí)行與渲染管線的第一著色器級相關(guān)聯(lián)的第一著色操作,在完成所述第一著色操作后即刻切換所述硬件著色單元的操作模式,并且使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的硬件著色單元執(zhí)行與渲染管線的第二不同著色器級相關(guān)聯(lián)的第二著色操作。
[0016]在另一實例中,本發(fā)明的方面涉及一種用于渲染圖形的設(shè)備,其包含:用于指定圖形處理單元的硬件著色單元執(zhí)行與渲染管線的第一著色器級相關(guān)聯(lián)的第一著色操作的裝置,用于在完成所述第一著色操作后即刻切換所述硬件著色單元的操作模式的裝置,以及用于使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的硬件著色單元執(zhí)行與渲染管線的第二不同著色器級相關(guān)聯(lián)的第二著色操作的裝置。
[0017]在另一實例中,本發(fā)明的方面涉及一種上面存儲著指令的非暫時性計算機可讀媒體,所述指令在被執(zhí)行時使得一或多個處理器進行以下操作:指定圖形處理單元的硬件著色單元執(zhí)行與渲染管線的第一著色器級相關(guān)聯(lián)的第一著色操作,在完成所述第一著色操作后即刻切換所述硬件著色單元的操作模式,并且使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的硬件著色單元執(zhí)行與渲染管線的第二不同著色器級相關(guān)聯(lián)的第二著色操作。
[0018]附圖和下面的描述中闡述了本發(fā)明的一或多個實例的細節(jié)。通過描述和圖式并且通過權(quán)利要求將明白其它特征、目的和優(yōu)點。
【專利附圖】
【附圖說明】
[0019]圖1是說明可以實施本發(fā)明中描述的技術(shù)的計算裝置的框圖。
[0020]圖2是說明示范性圖形處理管線80的框圖。
[0021]圖3A和3B是根據(jù)本發(fā)明的方面的圖形渲染管線中的數(shù)據(jù)流的概念圖。
[0022]圖4是實施本發(fā)明中描述的技術(shù)以執(zhí)行頂點著色操作和幾何形狀著色操作的硬件著色單元的實例操作的圖。
[0023]圖5A說明合并頂點著色器/幾何形狀著色器硬件著色單元在執(zhí)行頂點著色操作和幾何形狀著色操作時執(zhí)行的操作的流程。
[0024]圖5B說明對應于可以由合并頂點著色器/幾何形狀著色器硬件著色單元執(zhí)行的圖5A所示的操作流程的偽碼。
[0025]圖6是說明根據(jù)本發(fā)明的方面的用于執(zhí)行合并頂點著色操作和幾何形狀著色操作的圖形處理單元的實例組件的圖。
[0026]圖7是說明根據(jù)本發(fā)明的方面的用于執(zhí)行頂點著色操作和幾何形狀著色操作的實例過程的流程圖。
[0027]圖8是說明包含曲面細分器級的實例圖形處理管線的框圖。
[0028]圖9是說明曲面細分的概念圖。
[0029]圖1OA和1B是根據(jù)本發(fā)明的方面的圖形渲染管線中的數(shù)據(jù)流的概念圖。
[0030]圖11是實施本發(fā)明中描述的技術(shù)以執(zhí)行頂點著色和殼體著色操作的硬件著色單元的實例操作的圖。
[0031]圖12A說明合并頂點著色器/殼體著色器硬件著色單元在執(zhí)行頂點著色操作和殼體著色操作時執(zhí)行的操作的流程。
[0032]圖12B總體上說明對應于可以由合并頂點著色器/殼體著色器硬件著色單元執(zhí)行的圖12A所示的操作流程的偽碼。
[0033]圖13A總體上說明合并域著色器/幾何形狀著色器硬件著色單元在執(zhí)行域著色操作和幾何形狀著色操作時執(zhí)行的操作的流程。
[0034]圖13B總體上說明對應于可以由合并域著色器/幾何形狀著色器硬件著色單元執(zhí)行的圖13A所示的操作流程的偽碼。
[0035]圖14是說明根據(jù)本發(fā)明的方面的用于執(zhí)行合并頂點著色、殼體著色、域著色和幾何形狀著色操作的圖形處理單元的實例組件的圖。
[0036]圖15是說明根據(jù)本發(fā)明的方面使用相同硬件著色單元在兩個渲染遍次中執(zhí)行圖形渲染的流程圖。
[0037]圖16是說明根據(jù)本發(fā)明的方面執(zhí)行與兩個遍次的圖形渲染過程中的第一遍次相關(guān)聯(lián)的圖形渲染操作的流程圖。
[0038]圖17是說明根據(jù)本發(fā)明的方面執(zhí)行與兩個遍次的圖形渲染過程中的第二遍次相關(guān)聯(lián)的圖形渲染操作的流程圖。
[0039]圖18是說明根據(jù)本發(fā)明的方面將一個以上著色器級拼補在一起以供相同硬件著色單元執(zhí)行的流程圖。
【具體實施方式】
[0040]本發(fā)明的技術(shù)總體上涉及執(zhí)行與圖形渲染管線的著色器級相關(guān)聯(lián)的著色操作。舉例來說,圖形處理單元(GPU)可以調(diào)用一或多個著色單元以執(zhí)行與圖形渲染管線的著色器級相關(guān)聯(lián)的著色操作。根據(jù)本發(fā)明的方面,GPU可以接著使用被指定用于執(zhí)行第一著色操作的著色單元來執(zhí)行與圖形渲染管線的第二不同著色器級相關(guān)聯(lián)的著色操作。舉例來說,GPU可以在遵照與第一著色器級相關(guān)聯(lián)的輸入/輸出接口的同時執(zhí)行與第二級相關(guān)聯(lián)的著色操作。以此方式,GPU可以通過用相同的著色單元執(zhí)行多個著色操作而模仿具有更大著色資源的GPU。
[0041]圖1是說明可以實施本發(fā)明中描述的技術(shù)的計算裝置30的框圖。計算裝置30的實例包含但不限于無線裝置、移動或蜂窩電話(包含所謂的智能手機)、個人數(shù)字助理(PDA)、包含視頻顯示器的視頻游戲控制臺、移動視頻游戲裝置、移動視頻會議單元、膝上型計算機、臺式計算機、電視機頂盒、平板計算裝置、電子書閱讀器、固定或移動媒體播放器等坐寸O
[0042]在圖1的實例中,計算裝置30包含具有CPU存儲器34的中央處理單元(CPU) 32、具有GPU存儲器38和一或多個著色單元40的圖形處理單元(GPU) 36、顯示器單元42、顯示器緩沖器單元44、用戶接口單元46和存儲單元48。此外,存儲單元48可以存儲具有編譯器54的GPU驅(qū)動器50、GPU程序52和本機編譯的GPU程序56。
[0043]CPU 32的實例包含但不限于數(shù)字信號處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現(xiàn)場可編程邏輯陣列(FPGA)或其它等效的集成或離散邏輯電路。雖然CPU32和GPU 36在圖1的實例中被說明成分開的單元,但是在一些實例中,CPU 32和GPU 36可以集成為單個單元。CPU 32可以執(zhí)行一或多個應用程序。應用程序的實例可以包含網(wǎng)絡(luò)瀏覽器、電子郵件應用程序、電子表格、視頻游戲、音頻和/或視頻捕獲、回放或編輯應用程序或其它起始有待經(jīng)由顯示器單元42呈現(xiàn)的圖像數(shù)據(jù)的產(chǎn)生的應用程序。
[0044]在圖1所示的實例中,CPU 32包含CPU存儲器34。CPU存儲器34可以表示在執(zhí)行機器或?qū)ο蟠a時使用的芯片上存儲設(shè)備或存儲器。CPU存儲器34可以各自包括能夠存儲固定數(shù)目個數(shù)字位的硬件存儲器寄存器。CPU 32可以能夠比從存儲單元48(其可例如經(jīng)由系統(tǒng)總線存取)讀取值或者向存儲單元48寫入值更迅速地從本機CPU存儲器34讀取值或者向本機CPU存儲器34寫入值。
[0045]GPU 36表示用于執(zhí)行圖形操作的一或多個專用處理器。也就是說,舉例來說,GPU36可以是具有固定功能和用于渲染圖形和執(zhí)行GPU應用程序的可編程組件的專用硬件單元。GPU 36還可包含DSP、通用微處理器、ASIC、FPGA或其它等效的集成或離散邏輯電路。
[0046]GPU 36還包含GPU存儲器38,其可以表示在執(zhí)行機器或?qū)ο蟠a時使用的芯片上存儲設(shè)備或存儲器。GPU存儲器38可以各自包括能夠存儲固定數(shù)目個數(shù)字位的硬件存儲器寄存器。GPU 36可以能夠比從存儲單元48 (其可例如經(jīng)由系統(tǒng)總線存取)讀取值或者向存儲單元48寫入值更迅速地從本機GPU存儲器38讀取值或者向本機GPU存儲器38寫入值。
[0047]GPU 36還包含著色單元40。如下文更詳細地描述,著色單元40可以配置成處理組件的可編程管線。在一些實例中,著色單元40可以稱為“著色器處理器”或“統(tǒng)一著色器”,并且可以執(zhí)行幾何形狀、頂點、像素或其它著色操作以渲染圖形。著色單元40可以包含圖1中為了清晰起見未具體展示的一或多個組件,例如用于取出和解碼指令的組件、用于實行算術(shù)計算的一或多個算術(shù)邏輯單元(“ALU”)和一或多個存儲器、高速緩存或寄存器。
[0048]顯示器單元42表示能夠顯示視頻數(shù)據(jù)、圖像、文本或任何其它類型的數(shù)據(jù)以供觀看者消費的單元。顯示器單元42可以包含液晶顯示器(LCD)、發(fā)光二極管(LED)顯示器、有機LED (OLED)、有源矩陣OLED (AMOLED)顯示器等等。
[0049]顯示器緩沖器單元44表示專用于為顯示器單元42存儲數(shù)據(jù)以供呈現(xiàn)圖像(例如照片或視頻幀)的存儲器或存儲裝置。顯示器緩沖器單元44可以表示包含多個存儲位置的二維緩沖器。顯示器緩沖器單元44內(nèi)的存儲位置的數(shù)目可以基本上類似于有待在顯示器單元42上顯示的像素的數(shù)目。舉例來說,如果顯示器單元42經(jīng)配置以包含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或其它光盤存儲裝置、磁盤存儲裝置或其它磁性存儲裝置、快閃存儲器或可以用于以指令或數(shù)據(jù)結(jié)構(gòu)的形式存儲期望的程序代碼并且可以由計算機或處理器存取的任何其它媒體。
[0052]在一些實例實施方案中,存儲單元48可以包含使得CPU 32和/或GPU 36執(zhí)行本發(fā)明中歸于CPU 32和GPU 36的功能的指令。在一些實例中,存儲單元48可以被視為非暫時性存儲媒體。術(shù)語“非暫時性”可以指示存儲媒體不是體現(xiàn)在載波或傳播信號中。然而,術(shù)語“非暫時性”不應解釋為意味著存儲單元48是不能移動的。作為一個實例,存儲單元48可以從計算裝置30中移除,并且移動到另一裝置。作為另一實例,基本上類似于存儲單元48的存儲單元可以插入到計算裝置30中。在某些實例中,非暫時性存儲媒體可以存儲可能隨時間而改變的數(shù)據(jù)(例如,在RAM中)。
[0053]如圖2的實例中所說明,存儲單元48存儲GPU驅(qū)動器50和編譯器54、GPU程序52和本機編譯的GPU程序56。GPU驅(qū)動器50表示提供存取GPU 36的接口的計算機程序或可執(zhí)行代碼。CPU 32執(zhí)行GPU驅(qū)動器50或其若干部分以與GPU 36介接,并且出于此原因,GI3U驅(qū)動器50在圖1的實例中展示為CPU 32內(nèi)的用虛線框標記的“GPU驅(qū)動器50”。GPU驅(qū)動器50可以存取CPU 32執(zhí)行的程序或其它可執(zhí)行文件,包含GPU程序52。
[0054]GPU程序52可以包含(例如,使用應用程序編程接口(API))用高級(HL)編程語言編寫的代碼。API的實例包含微軟公司開發(fā)的開放計算語言(“OpenCL”)、開放圖形庫(“OpenGL”)和DirectX??偟貋碚f,API包含由相關(guān)聯(lián)的硬件執(zhí)行的預定的標準化的成組命令。API命令允許用戶指令GPU的硬件組件執(zhí)行命令,而無需用戶知道硬件組件的具體情況。
[0055]GPU程序52可以調(diào)用或者以其它方式包含GPU驅(qū)動器50提供的一或多個功能。CPU 32總體上執(zhí)行其中嵌入著GPU程序52的程序,并且在遇到GPU程序52后,即刻將GPU程序52傳遞給GPU驅(qū)動器50 (例如,以命令流的形式)。CPU 32在這個上下文中執(zhí)行GPU驅(qū)動器50以處理GPU程序52。也就是說,舉例來說,GPU驅(qū)動器50可以通過將GPU程序52編譯成GPU 36可執(zhí)行的對象或機器代碼而處理GPU程序52。這個對象代碼在圖1的實例中展示為本機編譯的GPU程序56。
[0056]在一些實例中,編譯器54可以實時或近實時地操作,以在執(zhí)行其中嵌入著GPU程序52的程序期間編譯GPU程序52。舉例來說,編譯器54總體上表示將根據(jù)HL編程語言定義的HL指令精簡成低級(LL)編程語言的LL指令的模塊。在編譯之后,這些LL指令能夠由特定類型的處理器或其它類型的硬件(例如FPGA、ASIC等等(包含例如CPU 32和GPU36)來執(zhí)行。
[0057]在LL編程語言提供從處理器或其它類型的硬件的指令集架構(gòu)的很少抽象或較低級抽象的意義上,LL編程語目被視為是低級的。LL語目總體上是指匯編和/或機器語目。匯編語言是稍微比機器語言高的LL語言,但是總體上無需使用編譯器或其它翻譯模塊就可以將匯編語言轉(zhuǎn)換成機器語言。機器語言表示任何定義與基礎(chǔ)硬件(例如,處理器)原生執(zhí)行的指令(例如,x86機器代碼(其中x86是指因特爾公司開發(fā)的x86處理器的指令集架構(gòu))類似(如果不是相同)的指令的語言。
[0058]在任何情況下,編譯器54都可以將根據(jù)HL編程語言定義的HL指令翻譯成基礎(chǔ)硬件支持的LL指令。編譯器54移除與HL編程語言(和API)相關(guān)聯(lián)的抽象,使得根據(jù)這些HL編程語言定義的軟件能夠被實際基礎(chǔ)硬件更直接地執(zhí)行。
[0059]在圖1的實例中,編譯器54可以在執(zhí)行包含GPU程序52的HL代碼時從CPU 32接收GPU程序52。編譯器54可以將GPU程序52編譯成符合LL編程語言的本機編譯的GPU程序56。編譯器54接著輸出包含LL指令的本機編譯的GPU程序56。
[0060]GPU 36總體上接收本機編譯的GPU程序56 (如通過GPU 36內(nèi)的虛線框標記的“本機編譯的GPU程序56”所展示),在這之后,在一些例子中,GPU 36即刻渲染圖像并且將圖像的經(jīng)渲染部分輸出到顯示器緩沖器單元44。舉例來說,GPU 36可以產(chǎn)生有待在顯示器單元42處顯示的多個基元?;梢园换蚨鄺l線(包含曲線、樣條等)、點、圓、橢圓、多邊形(其中通常將多邊形定義為一或多個三角形的集合)或任何其它二維(2D)基元。術(shù)語“基元”還可以指代三維(3D)基元,例如立方體、圓柱體、球體、圓錐體、金字塔、圓環(huán)等等。總地來說,術(shù)語“基元”是指任何被GPU 36渲染以供經(jīng)由顯示器單元42作為圖像(或在視頻數(shù)據(jù)的上下文中的幀)顯示的幾何形狀或要素。
[0061]GPU 36可以通過應用一或多個模型變換(其也可以在狀態(tài)數(shù)據(jù)中指定)將基元或基元的其它狀態(tài)數(shù)據(jù)(例如,其定義基元的紋理、亮度、相機配置或其它方面)變換成所謂的“世界空間”。一旦經(jīng)過變換,GPU 36就可以應用有效相機的視圖變換(其同樣也可以在定義相機的狀態(tài)數(shù)據(jù)中指定)以將基元和光的坐標變換到相機或眼睛空間中。GPU36還可以執(zhí)行頂點著色以在任何有效光的視圖中渲染基元的外觀。GPU 36可以在上述模型、世界或視圖空間中的一或多個中執(zhí)行頂點著色(雖然頂點著色通常是在世界空間中執(zhí)行的)。
[0062]一旦基元經(jīng)過著色,GPU 36就可以執(zhí)行投影以將圖像投影到(作為一個實例)在(-1,-1, -1)和(1,1,1)處具有極點的單位立方體中。這個單位立方體通常稱為典型視圖體。在將模型從眼睛空間變換到典型視圖體之后,GPU 36可以執(zhí)行裁剪以移除任何不至少部分地駐留在視圖體中的基元。換句話說,GPU 36可以移除任何不在相機幀內(nèi)的基元。GPU36可以接著將基元的坐標從視圖體映射到屏幕空間,從而有效地將基元的3D基元精簡成屏幕的2D坐標。
[0063]在給定用其相關(guān)聯(lián)的著色數(shù)據(jù)定義基元的經(jīng)變換和投影的頂點的情況下,GPU 36可以接著使基元光柵化。舉例來說,GPU 36可以計算和設(shè)置基元所覆蓋的屏幕的像素的顏色。在光柵化期間,GPU 36可以應用與基元相關(guān)聯(lián)的任何紋理(其中紋理可以包括狀態(tài)數(shù)據(jù))。GPU 36還可以在光柵化期間執(zhí)行Z緩沖器算法(也稱為深度測試)以確定是否有任何基元和/或?qū)ο蟊蝗魏纹渌鼘ο笳诒巍緩沖器算法根據(jù)基元的深度將基元排序,使得GPU 36知道將每一基元繪制到屏幕上時的次序。GPU 36將經(jīng)渲染的像素輸出到顯示器緩沖器單元44。
[0064]顯示器緩沖器單元44可以暫時存儲經(jīng)渲染的圖像的經(jīng)渲染的像素,直到整個圖像都被渲染了為止。在這個上下文中,可以將顯示器緩沖器單元44視為圖像幀緩沖器。顯示器緩沖器單元44可以接著發(fā)射有待在顯示器單元42上顯示的經(jīng)渲染的圖像。在一些替代的實例中,GPU 36可以將圖像的經(jīng)渲染的部分直接輸出到顯示器單元42以供顯示,而不是將圖像暫時存儲在顯示器緩沖器單元44中。顯示器單元42可以接著顯示在顯示器緩沖器單元78中存儲的圖像。
[0065]為了用上述方式渲染像素,GPU 36可以指定著色單元40執(zhí)行多種著色操作(如舉例來說相對于圖2和8更詳細地描述)。然而,某些被設(shè)計成支持相對更短的渲染管線的GPU(例如GPU 36)可能不能夠支持具有擴展渲染管線的API。舉例來說,可以防止一些GPU指定著色單元40執(zhí)行兩種以上不同類型的著色操作。
[0066]在一個實例中,GPU 36可以指定著色單元40執(zhí)行頂點著色和像素著色操作。在這個實例中,GPU 36可能缺乏指定著色單元40執(zhí)行與殼體著色器、域著色器和/或幾何形狀著色器相關(guān)聯(lián)的操作的資源。也就是說,硬件和/或軟件限制可能會防止GPU 36指定著色單元40執(zhí)行殼體著色、域著色和/或幾何形狀著色操作。因此,GPU 36可能不能夠支持與包含此功能性的API相關(guān)聯(lián)的著色器級。
[0067]舉例來說,支持先前DirectX 9 API (由微軟開發(fā),可包含Direct3D 9 API)的前代GPU可能不能夠支持DirectX 10 API (其可包含Direct3D 10 API)。也就是說,使用前代GPU可能不能夠執(zhí)行DirectX 10 API的特征中的至少一些(例如某些著色器級)。此夕卜,支持先前DirectX 9 API和DirectX 10 API的GPU可能不能夠支持DirectX 11 API的所有特征。此些不兼容性可能產(chǎn)生可能不再為執(zhí)行依靠DirectX 10或DirectX 11的軟件或其它應用程序提供支持的大量當前部署的GPU。雖然上述實例是相對于微軟的DirectX族的API描述的,但是其它API和舊式GPU 36也可能存在類似的兼容性問題。
[0068]此外,支持相對更長的圖形處理管線(例如,具有額外著色器級的渲染管線)可能必需更加復雜的硬件配置。舉例來說,將幾何形狀著色器級引入到渲染管線以執(zhí)行幾何形狀著色(當由專用的一個著色單元40執(zhí)行時),可能導致對芯片外存儲器的額外讀取和寫入。也就是說,GPU 36可以起初用著色單元40中的一個執(zhí)行頂點著色,并且將頂點存儲到存儲單元48。GPU 36還可以讀取頂點著色器輸出的頂點,并且寫入當通過著色單元40中的一個執(zhí)行幾何形狀著色時產(chǎn)生的新頂點。如下所述,給渲染管線包含曲面細分級(例如,殼體著色器級和域著色器級)可能會引入類似的復雜性。
[0069]對芯片外存儲器的額外讀取和寫入可能會消耗存儲器總線帶寬(例如,將GPU 36連接到存儲單元48的通信信道),同時還潛在地增加了所消耗的功率量(考慮到每次讀取和寫入都必需給存儲器總線和存儲單元48供電)。在這個意義上,對每一著色器級使用專用著色單元40來實施具有許多級的圖形管線,可能會導致功率效率較低的GPU。此外,由于在從存儲單元48檢索數(shù)據(jù)時的延遲,此些GPU 36在輸出經(jīng)渲染的圖像方面也可能執(zhí)行得較慢。
[0070]本發(fā)明的方面總體上涉及合并著色單元40中的一或多個的功能,使得著色單元40中的一個可以執(zhí)行一種以上著色功能。舉例來說,通常GPU 36可以通過指定著色單元40執(zhí)行特定的著色操作來執(zhí)行渲染過程(其可以稱為具有著色器級的渲染管線),其中著色單元40中的每一個可以同時實施相同著色器的多個例子。也就是說,GPU 36可以指定著色單元40中的一或多個執(zhí)行頂點著色操作,例如支持頂點著色器的多達256個并行例子。GPU 36還可以指定著色單元40中的一或多個執(zhí)行像素著色操作,例如支持像素著色器的多達256個并行例子。這些硬件單元可以將執(zhí)行三個著色器中的一個所得到的輸出存儲到芯片外存儲器,例如存儲單元48,直到下一指定硬件單元可以用于處理圖形處理管線中的前一硬件單元的輸出為止。
[0071]雖然本發(fā)明的方面可能用單數(shù)形式提到特定硬件著色單元(例如,一個硬件著色單元),但是應理解,此些單元可以實際上包括一或多個著色單元40 (—個以上著色器處理器),以及GPU 36的用于執(zhí)行著色操作的一或多個其它組件。舉例來說,如上所述,GPU 36可以具有多個相關(guān)聯(lián)的著色單元40。GPU 36可以指定著色單元40中的一個以上執(zhí)行相同的著色操作,其中著色單元40中的每一個經(jīng)配置以執(zhí)行本發(fā)明的用于合并著色操作的技術(shù)。總地來說,硬件著色單元可以指代GPU(例如GPU 36)調(diào)用以執(zhí)行特定的著色操作的一組硬件組件。
[0072]在一個實例中,本發(fā)明的方面包含使用單個硬件著色單元執(zhí)行頂點著色操作和幾何形狀著色操作。在另一實例中,本發(fā)明的方面包含使用單個硬件著色單元執(zhí)行頂點著色操作和殼體著色操作。在又一實例中,本發(fā)明的方面包含使用單個硬件著色單元執(zhí)行域著色操作和幾何形狀著色操作。本發(fā)明的方面還涉及硬件著色單元在著色操作之間的過渡方式。也就是說,本發(fā)明的方面涉及在使用硬件著色單元執(zhí)行第一著色操作與使用相同的硬件著色單元執(zhí)行第二著色操作之間的過渡。
[0073]舉例來說,根據(jù)本發(fā)明的方面,GPU 36可以使用被指定用以執(zhí)行頂點著色操作的著色單元40執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點。在這個實例中,可以用接收單個頂點作為輸入并且產(chǎn)生單個頂點作為輸出的接口來配置著色單元40。此外,GPU 36可以使用相同的著色單元40來執(zhí)行幾何形狀著色操作以基于經(jīng)頂點著色的頂點中的一或多個執(zhí)行一或多個新頂點。幾何形狀著色操作可以對一或多個經(jīng)頂點著色的頂點中的至少一個進行操作以輸出一或多個新頂點。同樣,雖然是相對于單個著色單元40描述的,但是這些技術(shù)可以通過GPU 36的多個著色單元40并行地實施。
[0074]某些API可能必需被指定執(zhí)行頂點著色操作的著色單元40實施或遵照1:1接口,其接收單個頂點作為輸入并且產(chǎn)生單個頂點作為輸出。相比之下,專用于執(zhí)行幾何形狀著色操作的著色單元40可以實施或遵照1:N接口,其接收一或多個頂點作為輸入并且產(chǎn)生一或多個(并且通常是許多,因此上面使用“N”)頂點作為輸出。
[0075]根據(jù)本發(fā)明的方面,GPU 36可以利用著色單元40的被指定執(zhí)行頂點著色操作的I: I接口來模仿這個1:N幾何形狀著色器接口,方法是通過調(diào)用幾何形狀著色器程序的多個例子。GPU 36可以并行地執(zhí)行這些幾何形狀著色器程序中的每一個以產(chǎn)生從執(zhí)行幾何形狀著色器操作得出的新頂點中的一個。也就是說,著色單元40可以使用HLSL(例如,具有圖形渲染API)可編程,使得著色單元40可以并行地執(zhí)行通常稱為“著色器程序”的多個例子。這些著色器程序可以稱為“纖程”或“線程”(這兩者都可以指代形成程序或執(zhí)行線程的指令流)。根據(jù)本發(fā)明的方面并且如下文更詳細地描述,GPU 36可以使用被指定用于頂點著色操作的硬件著色單元來執(zhí)行幾何形狀著色器程序的多個例子。GPU 36可以將幾何形狀著色器指令附加到頂點著色器指令,使得相同的著色單元40循序地執(zhí)行這兩個著色器,例如頂點著色器和幾何形狀著色器。
[0076]在另一實例中,根據(jù)本發(fā)明的方面,GPU 36可以使用指定用以執(zhí)行頂點著色操作的硬件著色單元來執(zhí)行頂點著色操作以對輸入頂點進行著色,以便輸出經(jīng)頂點著色的頂點。硬件著色單元可以遵照接收單個頂點作為輸入并且產(chǎn)生單個頂點作為輸出的接口。此夕卜,GPU可以使用被指定用于執(zhí)行頂點著色操作的相同硬件著色單元來執(zhí)行一或多個曲面細分操作(例如,殼體著色操作和/或域著色操作)以基于經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個新頂點。所述一或多個曲面細分操作可以對所述一或多個經(jīng)頂點著色的頂點中的至少一個進行操作以輸出一或多個新頂點。
[0077]舉例來說,除了上述著色器級之外,一些圖形渲染管線還可以包含殼體著色器級、曲面細分器級和域著色器級。總地來說,包含殼體著色器級、曲面細分器級和域著色器級以適應硬件曲面細分。也就是說,包含殼體著色器級、曲面細分器級和域著色器級以適應GPU36的曲面細分,而不是(舉例來說)由CPU 32執(zhí)行的軟件應用程序來執(zhí)行。
[0078]根據(jù)本發(fā)明的方面,GPU 36可以使用相同著色單元40執(zhí)行頂點著色和曲面細分操作。舉例來說,GPU 36可以在兩個遍次中執(zhí)行頂點著色和曲面細分操作。根據(jù)本發(fā)明的方面并且在下文中更詳細地描述,GPU 36可以存儲各種值以實現(xiàn)不同著色操作之間的過渡。
[0079]在一實例中,在第一遍次中,GPU 36可以指定一或多個著色單元40執(zhí)行頂點著色和殼體著色操作。在這個實例中,GPU 36可以將殼體著色器指令附加到頂點著色器指令。因此,相同的著色單元40循序地執(zhí)行頂點著色和殼體著色器指令。
[0080]在第二遍次中,GPU 36可以指定一或多個著色單元40執(zhí)行域著色和幾何形狀著色操作。在這個實例中,GPU 36可以將域著色器指令附加到幾何形狀著色器指令。因此,相同的著色單元40循序地執(zhí)行域著色和幾何形狀著色操作。通過在多個遍次中執(zhí)行多個著色操作,GPU 36可以使用相同的著色硬件來模仿具有額外著色能力的GPU。
[0081]本發(fā)明的方面還涉及GPU 36在不同著色操作之間過渡的方式。舉例來說,本發(fā)明的方面涉及將著色操作拼補在一起使得所述操作由相同的硬件著色單元循序地執(zhí)行的方式。
[0082]根據(jù)本發(fā)明的方面,在一實例中,GPU 36可以指定一或多個著色單元40執(zhí)行與渲染管線的第一著色器級相關(guān)聯(lián)的第一著色操作。GPU 36可以在完成第一著色操作后即刻切換著色單元40的操作模式。GPU 36可以接著使用被指定用以執(zhí)行第一著色操作的相同的著色單元40執(zhí)行與渲染管線的第二不同著色器級相關(guān)聯(lián)的第二著色操作。
[0083]根據(jù)一些實例,GPU 36可以使用多種模式將著色操作拼補在一起,其中每一模式具有特定一組相關(guān)聯(lián)的著色操作。舉例來說,第一模式可以指示繪制調(diào)用僅包含頂點著色操作。在這個實例中,在執(zhí)行繪制調(diào)用后,GPU 36即刻可以指定一或多個著色單元40根據(jù)模式信息執(zhí)行頂點著色操作。此外,第二模式可以指示繪制調(diào)用包含頂點著色和幾何形狀著色操作兩者。在這個實例中,在執(zhí)行繪制調(diào)用后,GPU 36即刻可以指定一或多個著色單元40執(zhí)行頂點著色操作。此外,根據(jù)本發(fā)明的方面,GPU 36可以將幾何形狀著色器指令附加到頂點著色器指令,使得相同的著色單元執(zhí)行頂點著色操作和幾何形狀著色操作兩者。可以使用額外模式來指示著色器的其它組合,如下文更詳細地描述。
[0084]在一些實例中,GPU驅(qū)動器50可以產(chǎn)生GPU 36使用的模式信息。根據(jù)本發(fā)明的方面,不同著色器(例如,頂點著色操作、幾何形狀著色操作、殼體著色操作、域著色操作等等)不必須用特定方式編譯以便由相同的著色單元40循序地執(zhí)行。而是每一著色器可以獨立編譯(無需參考任何其它著色器)并且在繪制時被GPU 36拼補在一起。也就是說,在執(zhí)行了繪制調(diào)用后,GPU 36即刻可以確定與繪制調(diào)用相關(guān)聯(lián)的模式,并且相應地將編譯的著色器拼補在一起。
[0085]本發(fā)明的技術(shù)可以使得具有用于執(zhí)行著色操作的有限數(shù)目個著色單元40的GPU (例如GPU 36)能夠模仿具有更大數(shù)目個著色單元40的GPU。舉例來說,雖然GPU 36可能受到阻止無法指定著色單元40執(zhí)行兩個以上著色操作(例如,頂點著色操作和像素著色操作),但是本發(fā)明的技術(shù)可以使得GPU 36能夠執(zhí)行額外的著色操作(例如,幾何形狀著色操作、殼體著色操作和/或域著色操作),而無需重新配置著色單元40。也就是說,所述技術(shù)可以允許著色單元40在執(zhí)行其它著色操作時遵照某些著色器級的輸入/輸出約束。
[0086]此外,通過用相同的著色單元40執(zhí)行多個著色操作,所述技術(shù)可以減少存儲器總線帶寬消耗。舉例來說,在用其它著色操作(例如,幾何形狀著色)執(zhí)行頂點著色的情況下,用于頂點著色的著色單元40無需在執(zhí)行其它著色器操作之前將頂點著色結(jié)果存儲到芯片外存儲器(例如存儲單元48)。而是可以將頂點著色結(jié)果存儲到GPU存儲器38并且立即將所述結(jié)果用于幾何形狀著色操作。
[0087]以此方式,所述技術(shù)與具有額外著色單元40的GPU相比可以減少存儲器總線帶寬消耗,這可以減少功率消耗。所述技術(shù)可以因此促成功率效率更高的GPU,其利用的功率少于具有額外硬件著色器單元的GPU。因此,在一些實例中,所述技術(shù)可以部署在功率有限的裝置中,例如移動裝置、膝上型計算機和任何其它類型不具有恒定的專用功率供應的裝置。
[0088]應理解,計算裝置30可以包含圖1中為了清晰起見未展示的額外模塊或單元。舉例來說,計算裝置30可以包含用于發(fā)射和接收數(shù)據(jù)的收發(fā)器模塊,并且可以包含用以允許計算裝置30與另一裝置或網(wǎng)絡(luò)之間的無線或有線通信的電路。計算裝置30還可包含揚聲器和麥克風(圖1中都未展示)以在計算裝置30是移動無線電話的實例中實行電話通信,或者在計算裝置30是媒體播放器的實例中包含揚聲器。在一些例子中,在計算裝置30是臺式計算機或其它經(jīng)裝備以與外部用戶接口或顯示器介接的裝置的實例中,用戶接口單元46和顯示器單元42可以在計算裝置30外部。
[0089]圖2是說明示范性圖形處理管線80的框圖。實例管線80包含輸入?yún)R編器級82、頂點著色器級84、幾何形狀著色器級86、光柵化器級88、像素著色器級90和輸出合并器級92。在一些實例中,API (例如DirectX 10(或Direct3D 10)API)可經(jīng)配置以使用圖2中展示的級中的每一個。圖形處理管線80在下文被描述為由GPU 36執(zhí)行,但是可以由多種其它圖形處理器執(zhí)行。
[0090]圖形處理管線80總體上包含可編程級(例如,用圓角說明)和固定功能級(例如,用方角說明)。舉例來說,與圖形渲染管線80的某些級相關(guān)聯(lián)的圖形渲染操作總體上由可編程著色器處理器(例如,著色單元40中的一個)執(zhí)行,而與圖形渲染管線80相關(guān)聯(lián)的其它圖形渲染操作總體上由與GPU 36相關(guān)聯(lián)的不可編程的固定功能硬件單元執(zhí)行。著色單元40執(zhí)行的圖形渲染級總體上可以稱為“可編程”級,而固定功能單元執(zhí)行的級總體上可以稱為固定功能級。
[0091]輸入?yún)R編器級82在圖2的實例中展示為固定功能級,并且總體上負責將圖形數(shù)據(jù)(三角形、線和點)供應到圖形處理管線80。舉例來說,輸入?yún)R編器級82可以收集用于高階表面、基元等等的頂點數(shù)據(jù),并且將頂點數(shù)據(jù)和屬性輸出到頂點著色器級84。因此,輸入?yún)R編器級80可以使用固定功能操作從芯片外存儲器(例如,存儲單元48)讀取頂點。輸入?yún)R編器級80可以接著從這些頂點創(chuàng)建管線工作項目,同時還產(chǎn)生頂點識別符(“VertexID”)、例子識別符(“InstancelD”,其可供頂點著色器使用)和基元識別符(“PrimativelD”,其可供幾何形狀著色器和像素著色器使用)。輸入?yún)R編器級80可以在讀取頂點后即刻自動產(chǎn)生 VertexID、InstanceID 和 PrimitiveID0
[0092]頂點著色器級84可以處理接收到的頂點數(shù)據(jù)和屬性。舉例來說,頂點著色器級84可以執(zhí)行逐個頂點的處理,例如變換、蒙皮、頂點位移和計算逐個頂點的材料屬性。在一些實例中,頂點著色器級84可以產(chǎn)生紋理坐標、頂點顏色、頂點照明、霧因子等等。頂點著色器級84總體上獲得單個輸入頂點,并且輸出單個經(jīng)處理的輸出頂點。
[0093]幾何形狀著色器級86可以接收由頂點數(shù)據(jù)(例如,用于三角形的三個頂點、用于線的兩個頂點或用于點的單個頂點)定義的基元,并且進一步處理所述基元。舉例來說,幾何形狀著色器級86可以執(zhí)行逐個基元的處理,例如輪廓邊緣檢測和陰影體擠出,以及其它可能的處理操作。因此,幾何形狀著色器級86可以接收一個基元作為輸入(其可包含一或多個頂點),并且輸出零個、一個或多個基元(其同樣可包含一或多個頂點)。輸出基元可以含有比在沒有幾何形狀著色器級86的情況下可能的更多的數(shù)據(jù)。輸出數(shù)據(jù)的總量可以等于頂點大小乘以頂點計數(shù)并且對每個調(diào)用可能受到限制。來自幾何形狀著色器級86的流式輸出可以允許將到達這個級的基元存儲到芯片外存儲器,例如存儲器單元48。輸出流通常被連接到幾何形狀著色器級86,并且兩者可以編程在一起(例如,使用API)。
[0094]光柵化器級88通常是負責剪切基元并且為像素著色器級90準備基元的固定功能級。舉例來說,光柵化器級88可以執(zhí)行剪切(包含定制剪切邊界)、視角劃分、視區(qū)/剪刀選擇和實施、渲染目標選擇和基元設(shè)置。以此方式,光柵化器級88可以產(chǎn)生多個片段以供像素著色器級90著色。
[0095]像素著色器級90從光柵化器級88接收片段,并且產(chǎn)生逐個像素的數(shù)據(jù),例如顏色。像素著色器級96還可以執(zhí)行逐個像素的處理,例如紋理混合和照明模型計算。因此,像素著色器級90可以接收一個像素作為輸入,并且可以輸出在相同相對位置處的一個像素(或像素的零值)。
[0096]輸出合并器級92總體上負責組合各種類型的輸出數(shù)據(jù)(例如像素著色器值、深度和模板信息)以產(chǎn)生最終結(jié)果。舉例來說,輸出合并器級92可以為渲染目標(像素位置)執(zhí)行固定功能混合、深度和/或模板操作。雖然上文總體上是相對于頂點著色器級84、幾何形狀著色器級86和像素著色器級90描述的,但是前述描述中的每一個可以涉及由GPU指定來執(zhí)行相應著色操作的一或多個著色單元(例如著色單元40)。
[0097]某些GPU可能不能夠支持圖2中展示的所有著色器級。舉例來說,一些GPU可能不能夠指定著色單元執(zhí)行兩個以上著色操作,原因在于硬件和/或軟件限制(例如,著色單元40和相關(guān)聯(lián)的組件的數(shù)目有限)。在一實例中,某些GPU可能不支持與幾何形狀著色器級86相關(guān)聯(lián)的操作。而是GPU可以只包含對于指定著色單元執(zhí)行頂點著色器級84和像素著色器級90的支持。因此,由著色單元執(zhí)行的操作必須遵照與頂點著色器級84和像素著色器級90相關(guān)聯(lián)的輸入/輸出接口。
[0098]此外,在一些實例中,相對于不包含幾何形狀著色器級86的圖形處理管線,將幾何形狀著色器級86引入到管線可能會導致對存儲單元48的額外讀取和寫入。舉例來說,如上所述,頂點著色器級86可以將頂點向外寫入到芯片外存儲器,例如存儲單元48。幾何形狀著色器級86可以讀取這些頂點(頂點著色器級84輸出的頂點)并且寫入新頂點,接著對新頂點進行像素著色。對存儲單元48的這些額外讀取和寫入可能會消耗存儲器總線帶寬,同時還潛在地增加所消耗的功率量。在這個意義上,實施包含頂點著色器級84、幾何形狀著色器級86和像素著色器級90中的每一個的圖形處理管線可能會產(chǎn)生功率效率更低的GPU,其在輸出經(jīng)渲染的圖像方面可能也更慢,原因在于從存儲單元48檢索數(shù)據(jù)時的延遲。
[0099]如上所述,本發(fā)明的方面總體上涉及合并著色單元40中的一或多個的功能,使得被指定用于特定著色操作的著色單元40可以執(zhí)行一個以上著色操作。如下文更詳細地描述,在一些實例中,可以指定一個著色單元40執(zhí)行與頂點著色器級84相關(guān)聯(lián)的頂點著色操作。根據(jù)本發(fā)明的方面,也可以實施相同的著色單元40以執(zhí)行與幾何形狀著色器級86相關(guān)聯(lián)的幾何形狀著色操作。也就是說,GPU 36可以調(diào)用著色單元40以執(zhí)行頂點著色操作,但是也可以實施著色單元40以執(zhí)行幾何形狀著色操作,而無需重新指定著色單元40執(zhí)行幾何形狀著色任務(wù)。
[0100]圖3A和3B是根據(jù)本發(fā)明的方面的圖形渲染管線中的數(shù)據(jù)流的概念圖。舉例來說,圖3A說明頂點著色器級100、幾何形狀著色器級102、流式輸出104和像素著色器級106??偟貋碚f,圖3A中展示的頂點著色器級100、幾何形狀著色器級102和像素著色器級106各自表示用于執(zhí)行著色操作的相關(guān)聯(lián)的硬件。也就是說,舉例來說,頂點著色器級100、幾何形狀著色器級102和像素著色器級106中的每一個可以與分開指定的處理單元(例如,被指定執(zhí)行相應任務(wù)的著色單元40)相關(guān)聯(lián)。
[0101]舉例來說,頂點著色器級100表示執(zhí)行頂點著色操作的一或多個單元(例如,著色單元40)。也就是說,頂點著色器級100可以包含被GPU 36調(diào)用以執(zhí)行頂點著色操作的組件。舉例來說,頂點著色器級100可以接收頂點作為輸入,并且將輸入頂點從三維(3D)模型空間翻譯成屏幕空間中的二維(2D)坐標。頂點著色器級100可以接著輸出頂點的經(jīng)翻譯版本(其可以稱為“經(jīng)翻譯頂點”)。頂點著色器級100—般不創(chuàng)建新頂點,而是一次對一個頂點進行操作。因此,頂點著色器級100可以稱為一對一(1:1)級,頂點著色器級100接收單個輸入頂點并且輸出單個輸出頂點。
[0102]幾何形狀著色器級102表示執(zhí)行幾何形狀著色操作的一或多個單元(例如著色單元40)。也就是說,幾何形狀著色器級102可以包含被GPU 36調(diào)用以執(zhí)行幾何形狀著色操作的組件。舉例來說,幾何形狀著色器級102可以用于執(zhí)行多種多樣的操作,例如對立方體貼圖的單遍渲染、點塊紋理產(chǎn)生等等。通常幾何形狀著色器級102接收由一或多個經(jīng)翻譯頂點構(gòu)成的基元,所述頂點已經(jīng)被頂點著色器級100頂點著色。幾何形狀著色器級102執(zhí)行幾何形狀著色操作以創(chuàng)建可以形成新基元的新頂點(或者可能將輸入基元變換成具有額外新頂點的新類型的基元)。
[0103]舉例來說,幾何形狀著色器級102通常接收由一或多個經(jīng)翻譯的頂點定義的基元,并且基于接收到的基元產(chǎn)生一或多個新頂點。幾何形狀著色器級102接著輸出新頂點(其可以形成一或多個新基元)。結(jié)果,幾何形狀著色器級102可以稱為一對多(1:N)或甚至多對多(N:N)級,因為幾何形狀著色器級102接收一或多個經(jīng)翻譯的頂點并且產(chǎn)生多個新頂點。
[0104]雖然被描述為是一對多或甚至多對多,但是在一些例子中,幾何形狀著色器級102也可以不輸出任何新頂點或者僅輸出單個新頂點。在這個方面,所述技術(shù)不應僅限于在每個例子中輸出許多頂點的那些幾何形狀著色器,而是可以總體上相對于任何可輸出零、一個或許多新頂點的幾何形狀著色器級102來實施,如下文將更詳細地解釋。
[0105]可以存儲幾何形狀著色器級102的輸出以用于額外的幾何形狀著色(例如,在流式輸出104期間)。還可以將幾何形狀著色器級102的輸出輸出到光柵化器,其使新頂點(和經(jīng)翻譯的頂點)光柵化以產(chǎn)生由像素構(gòu)成的光柵圖像。
[0106]還可以將來自幾何形狀著色器級102的像素傳遞到像素著色器級106。像素著色器級106 (也可以稱為片段著色器)可以計算每一像素的顏色和其它屬性,從而執(zhí)行多種多樣的操作以產(chǎn)生經(jīng)著色的像素??梢詫⒔?jīng)著色的像素與深度貼圖合并,并且可以執(zhí)行其它著色后操作以產(chǎn)生輸出圖像供經(jīng)由顯示器裝置(例如計算機監(jiān)視器、電視機或其它類型的顯示器裝置)顯示。
[0107]圖3A中展示的著色器級可以支持一或多個圖形API。在用于說明的目的的實例中,頂點著色器級100、幾何形狀著色器級102和像素著色器級106可以支持DirectXlOAPI。也就是說,可以通過頂點著色器級100、幾何形狀著色器級102和像素著色器級106執(zhí)行使用DirectX 10 API產(chǎn)生的代碼,以渲染圖形數(shù)據(jù)。然而,幾何形狀著色器級102可能不包含在所有圖形渲染管線中,并且可能不能由所有GPU執(zhí)行。舉例來說,雖然DirectX 10API包含對于幾何形狀著色器級102的支持,但是某些較早版本(例如,DirectX 9)不包含此支持。因此,經(jīng)設(shè)計以執(zhí)行用DirectX API的較早版本創(chuàng)建的代碼(或針對其它API設(shè)計的GPU)可能不能夠指定著色單元40執(zhí)行幾何形狀著色器級102。
[0108]圖3B說明根據(jù)本發(fā)明的技術(shù)的圖形渲染管線(相對于圖3A中展示的實例)中的數(shù)據(jù)流的修改概念圖。圖3B中展示的實例包含合并的頂點著色器/幾何形狀著色器(VS/GS)級110、流式輸出112和像素著色器級114。根據(jù)本發(fā)明的方面,合并的VS/GS級110可包含用于執(zhí)行上文相對于頂點著色器級100和幾何形狀著色器級102描述的功能的一或多個處理單元。也就是說,雖然頂點著色器級100和幾何形狀著色器級102表示被GPU (例如GPU 36)調(diào)用以便分別執(zhí)行頂點著色操作和幾何形狀著色操作的不同單元,但是根據(jù)本發(fā)明的方面,此些功能可以由基本上相同的硬件(例如,著色單元40)執(zhí)行。
[0109]舉例來說,在GPU 36調(diào)用了頂點著色操作之后,VS/GS級110即刻可以執(zhí)行頂點著色操作和幾何形狀著色操作兩者。也就是說,合并的VS/GS級110可以包含用于執(zhí)行上文相對于頂點著色器級100描述的操作和用于執(zhí)行上文相對于幾何形狀著色器級102描述的操作的相同組的著色單元40。
[0110]然而,因為GPU 36起初是作為頂點著色單元調(diào)用每一著色單元40,但是GPU 36的組件可以經(jīng)配置以用特定格式(例如,遵照1:1輸入/輸出接口)從頂點著色單元接收數(shù)據(jù)。舉例來說,GPU 36可以分配高速緩存(例如,頂點參數(shù)高速緩存,如下文更詳細地描述)中的單個條目來存儲來自著色單元40的用于經(jīng)著色的頂點的輸出。GPU 36還可以基于著色單元40被調(diào)用的方式來執(zhí)行一些光柵化操作。如下文更詳細地描述,本發(fā)明的方面允許GPU 36使用與頂點著色操作相同的著色單元執(zhí)行幾何形狀著色操作,同時仍然遵照適當?shù)慕涌凇?br>
[0111]在一些例子中,幾何形狀著色器級102可以主要用于對數(shù)據(jù)的低放大(例如,點塊紋理產(chǎn)生)。此些操作可能必需每次幾何形狀著色器調(diào)用有相對低的ALU使用。因此,著色單元40的ALU可能在幾何形狀著色器級102期間未被完全利用。根據(jù)本發(fā)明的方面,可以將幾何形狀著色器級102附加到頂點著色器級100以形成合并的VS/GS級110,其可以在GPU架構(gòu)中作為頂點著色器級100來調(diào)用。用上述方式調(diào)用合并的VS/GS級110可以增加ALU利用率,方法是通過允許由相同處理單元執(zhí)行頂點著色和幾何形狀著色操作兩者。
[0112]為了啟用合并的VS/GS級110,GPU 36可以執(zhí)行用于在頂點著色操作(1:1級)與幾何形狀著色操作(1:N級)之間過渡的功能,如相對于圖4中展示的實例更詳細地描述。以此方式,本發(fā)明的技術(shù)允許具有有限資源的GPU(例如,其可能阻止GPU指定著色單元40執(zhí)行兩個以上著色操作)以模仿具有額外資源的GPU。
[0113]圖4是說明實施本發(fā)明描述的技術(shù)以執(zhí)行頂點著色操作和幾何形狀著色操作的硬件著色單元的實例操作的圖。雖然是相對于GPU 36(圖1)描述的,但是本發(fā)明的方面可以由具有各種其它組件的各種其它GPU執(zhí)行。
[0114]在圖4的實例中,GPU 36可以指定著色單元40執(zhí)行頂點著色操作。因此,GPU36的組件可以經(jīng)配置以向著色單元40發(fā)送用于頂點的數(shù)據(jù),并且從著色單元40接收用于經(jīng)著色的頂點的數(shù)據(jù)(例如,1:1接口)。著色單元40可以執(zhí)行頂點著色器以執(zhí)行頂點著色操作,因而產(chǎn)生第一組基元120。在圖4的實例中,第一組基元120包含帶有四個頂點(標記為點P0_p3)的具有鄰接關(guān)系的三角形。
[0115]在執(zhí)行了頂點著色操作之后,GPU 36可以將經(jīng)著色的頂點存儲到本機存儲器資源。舉例來說,GPU 36可以將頂點著色器輸出連同“切割”信息(如果存在的話)和流識別符一起導出到(例如,GPU存儲器38的)位置高速緩存。可以通過VS END指令將頂點著色操作與幾何形狀著色操作分開。因此,在執(zhí)行了 VS END指令和完成頂點著色操作之后,被指定執(zhí)行頂點著色操作的一或多個著色單元40各自開始執(zhí)行幾何形狀著色操作。
[0116]也就是說,根據(jù)本發(fā)明的方面,被指定執(zhí)行頂點著色操作的相同的著色單元40還執(zhí)行幾何形狀著色操作。舉例來說,GPU 36可以通過改變一或多個資源指針而改變幾何形狀著色器特定的資源的狀態(tài)(例如,幾何形狀著色器常數(shù)、紋理偏移量等等)。GPU36可以根據(jù)被指派給著色操作的模式(繪制模式)來執(zhí)行這個狀態(tài)改變。
[0117]在一些實例中,GPU 36可以在執(zhí)行繪制調(diào)用時設(shè)置繪制模式。繪制模式可以指示哪些著色操作與繪制調(diào)用相關(guān)聯(lián)。在用于說明的目的的實例中,繪制模式O可以指示繪制調(diào)用僅包含頂點著色操作。繪制模式I可以指示繪制調(diào)用包含頂點著色操作和幾何形狀著色操作兩者。如下文更詳細地描述,其它繪制模式也是可能的。表I提供了具有兩種模式的實例模式表:
[0118]表1:模式信息合并的VS/GS
[0119]
【權(quán)利要求】
1.一種渲染圖形的方法,所述方法包括: 指定圖形處理單元的硬件著色單元執(zhí)行與渲染管線的第一著色器級相關(guān)聯(lián)的第一著色操作; 在完成所述第一著色操作后即刻切換所述硬件著色單元的操作模式;以及 使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第二不同著色器級相關(guān)聯(lián)的第二著色操作。
2.根據(jù)權(quán)利要求1所述的方法,其中切換操作模式包括確定繪制調(diào)用的包括所述第一著色操作和所述第二著色操作的模式。
3.根據(jù)權(quán)利要求2所述的方法,其進一步包括: 在完成所述第二著色操作后即刻切換所述硬件著色單元的操作模式;以及 使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第三不同著色器級相關(guān)聯(lián)的第三著色操作。
4.根據(jù)權(quán)利要求3所述的方法,其進一步包括: 在完成所述第三著色操作后即刻切換所述硬件著色單元的操作模式;以及 使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第四不同著色器級相關(guān)聯(lián)的第四著色操作。
5.根據(jù)權(quán)利要求1所述的方法,其中切換操作模式包括在維持與所述第一著色級相關(guān)聯(lián)的輸入/輸出接口的同時切換操作模式。
6.根據(jù)權(quán)利要求1所述的方法,其中切換操作模式包括切換用于所述第二著色操作的程序計數(shù)器與一或多個資源指針。
7.根據(jù)權(quán)利要求1所述的方法,其中與同所述第二著色操作相關(guān)聯(lián)的第二指令獨立地編譯與所述第一著色操作相關(guān)聯(lián)的第一指令,使得所述第一指令不依賴于所述第二指令。
8.根據(jù)權(quán)利要求7所述的方法,其進一步包括在本機存儲器中為一或多個系統(tǒng)產(chǎn)生的值預留一或多個預定位置,其中所述系統(tǒng)產(chǎn)生的值用于所述第一著色操作和所述第二著色操作。
9.根據(jù)權(quán)利要求1所述的方法,其進一步包括將來自所述第一著色操作的結(jié)果存儲到本機存儲器,以及對所述第一著色操作的所述結(jié)果執(zhí)行所述第二著色操作,而無需存取位于所述圖形處理單元外部的芯片外存儲器。
10.根據(jù)權(quán)利要求1所述的方法,其中執(zhí)行所述第一著色操作包括執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,并且執(zhí)行所述第二著色操作包括執(zhí)行幾何形狀著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個新頂點。
11.根據(jù)權(quán)利要求1所述的方法,其中執(zhí)行所述第一著色操作包括執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,并且執(zhí)行所述第二著色操作包括執(zhí)行殼體著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個控制點。
12.根據(jù)權(quán)利要求1所述的方法,其中執(zhí)行所述第一著色操作包括執(zhí)行域著色操作以產(chǎn)生頂點,并且執(zhí)行所述第二著色操作包括執(zhí)行幾何形狀著色操作以基于所述經(jīng)域著色的頂點中的一或多個產(chǎn)生一或多個新頂點。
13.一種用于渲染圖形的圖形處理單元,其包括經(jīng)配置以進行以下操作的一或多個處理器: 指定所述圖形處理單元的硬件著色單元執(zhí)行與渲染管線的第一著色器級相關(guān)聯(lián)的第一著色操作; 在完成所述第一著色操作后即刻切換所述硬件著色單元的操作模式;以及使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第二不同著色器級相關(guān)聯(lián)的第二著色操作。
14.根據(jù)權(quán)利要求13所述的圖形處理單元,其中為了切換操作模式,所述一或多個處理器經(jīng)配置以確定繪制調(diào)用的包括所述第一著色操作和所述第二著色操作的模式。
15.根據(jù)權(quán)利要求14所述的圖形處理單元,其中所述一或多個處理器進一步經(jīng)配置以: 在完成所述第二著色操作后即刻切換所述硬件著色單元的操作模式;以及使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第三不同著色器級相關(guān)聯(lián)的第三著色操作。
16.根據(jù)權(quán)利要求15所述的圖形處理單元,其中所述一或多個處理器進一步經(jīng)配置以: 在完成所述第三著色操作后即刻切換所述硬件著色單元的操作模式;以及使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第四不同著色器級相關(guān)聯(lián)的第四著色操作。
17.根據(jù)權(quán)利要求13所述的圖形處理單元,其中為了切換操作模式,所述一或多個處理器經(jīng)配置以在維持與所述第一著色級相關(guān)聯(lián)的輸入/輸出接口的同時切換操作模式。
18.根據(jù)權(quán)利要求13所述的圖形處理單元,其中為了切換操作模式,所述一或多個處理器經(jīng)配置以切換用于所述第二著色操作的程序計數(shù)器與一或多個資源指針。
19.根據(jù)權(quán)利要求13所述的圖形處理單元,其中與同所述第二著色操作相關(guān)聯(lián)的第二指令獨立地編譯與所述第一著色操作相關(guān)聯(lián)的第一指令,使得所述第一指令不依賴于所述第二指令。
20.根據(jù)權(quán)利要求19所述的圖形處理單元,其中所述一或多個處理器進一步經(jīng)配置以在所述圖形處理單元的本機存儲器中為一或多個系統(tǒng)產(chǎn)生的值預留一或多個預定位置,其中所述系統(tǒng)產(chǎn)生的值用于所述第一著色操作和所述第二著色操作。
21.根據(jù)權(quán)利要求13所述的圖形處理單元,其中所述一或多個處理器進一步經(jīng)配置以將來自所述第一著色操作的結(jié)果存儲到所述圖形處理單元的本機存儲器,并且對所述第一著色操作的所述結(jié)果執(zhí)行所述第二著色操作,而無需存取位于所述圖形處理單元外部的芯片外存儲器。
22.根據(jù)權(quán)利要求13所述的圖形處理單元,其中為了執(zhí)行所述第一著色操作,所述硬件著色單元經(jīng)配置以執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,并且為了執(zhí)行所述第二著色操作,所述硬件著色單元經(jīng)配置以執(zhí)行幾何形狀著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個新頂點。
23.根據(jù)權(quán)利要求13所述的圖形處理單元,其中為了執(zhí)行所述第一著色操作,所述硬件著色單元經(jīng)配置以執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,并且為了執(zhí)行所述第二著色操作,所述硬件著色單元經(jīng)配置以執(zhí)行殼體形狀著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個控制點。
24.根據(jù)權(quán)利要求13所述的圖形處理單元,其中為了執(zhí)行所述第一著色操作,所述硬件著色單元經(jīng)配置以執(zhí)行域著色操作以產(chǎn)生頂點,并且為了執(zhí)行所述第二著色操作,所述硬件著色單元經(jīng)配置以執(zhí)行幾何形狀著色操作以基于所述經(jīng)域著色的頂點中的一或多個產(chǎn)生一或多個新頂點。
25.一種用于渲染圖形的設(shè)備,所述設(shè)備包括: 用于指定圖形處理單元的硬件著色單元執(zhí)行與渲染管線的第一著色器級相關(guān)聯(lián)的第一著色操作的裝置; 用于在完成所述第一著色操作后即刻切換所述硬件著色單元的操作模式的裝置;以及 用于使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第二不同著色器級相關(guān)聯(lián)的第二著色操作的裝置。
26.根據(jù)權(quán)利要求25所述的設(shè)備,其中用于切換操作模式的所述裝置包括用于確定繪制調(diào)用的包括所述第一著色操作和所述第二著色操作的模式的裝置。
27.根據(jù)權(quán)利要求26所述的設(shè)備,其進一步包括: 用于在完成所述第二著色操作后即刻切換所述硬件著色單元的操作模式的裝置;以及 用于使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第三不同著色器級相關(guān)聯(lián)的第三著色操作的裝置。
28.根據(jù)權(quán)利要求27所述的設(shè)備,其進一步包括: 用于在完成所述第三著色操作后即刻切換所述硬件著色單元的操作模式的裝置;以及 用于使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第四不同著色器級相關(guān)聯(lián)的第四著色操作的裝置。
29.根據(jù)權(quán)利要求25所述的設(shè)備,其中用于切換操作模式的所述裝置包括用于在維持與所述第一著色級相關(guān)聯(lián)的輸入/輸出接口的同時切換操作模式的裝置。
30.根據(jù)權(quán)利要求25所述的設(shè)備,其中所述切換操作模式包括用于切換用于所述第二著色操作的程序計數(shù)器與一或多個資源指針的裝置。
31.根據(jù)權(quán)利要求25所述的設(shè)備,其中與同所述第二著色操作相關(guān)聯(lián)的第二指令獨立地編譯與所述第一著色操作相關(guān)聯(lián)的第一指令,使得所述第一指令不依賴于所述第二指令。
32.根據(jù)權(quán)利要求31所述的設(shè)備,其進一步包括用于在本機存儲器中為一或多個系統(tǒng)產(chǎn)生的值預留一或多個預定位置的裝置,其中所述系統(tǒng)產(chǎn)生的值用于所述第一著色操作和所述第二著色操作。
33.根據(jù)權(quán)利要求25所述的設(shè)備,其進一步包括用于將來自所述第一著色操作的結(jié)果存儲到本機存儲器以及對所述第一著色操作的所述結(jié)果執(zhí)行所述第二著色操作而無需存取位于所述圖形處理單元外部的芯片外存儲器的裝置。
34.根據(jù)權(quán)利要求25所述的設(shè)備,其中用于執(zhí)行所述第一著色操作的所述裝置包括用于執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點的裝置,并且用于執(zhí)行所述第二著色操作的所述裝置包括用于執(zhí)行幾何形狀著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個新頂點的裝置。
35.根據(jù)權(quán)利要求25所述的設(shè)備,其中用于執(zhí)行所述第一著色操作的所述裝置包括用于執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點的裝置,并且用于執(zhí)行所述第二著色操作的所述裝置包括用于執(zhí)行殼體形狀著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個控制點的裝置。
36.根據(jù)權(quán)利要求25所述的設(shè)備,其中用于執(zhí)行所述第一著色操作的所述裝置包括用于執(zhí)行域著色操作以產(chǎn)生頂點的裝置,并且用于執(zhí)行所述第二著色操作的所述裝置包括用于執(zhí)行幾何形狀著色操作以基于所述經(jīng)域著色的頂點中的一或多個產(chǎn)生一或多個新頂點的裝置。
37.一種上面存儲有指令的非暫時性計算機可讀媒體,所述指令在被執(zhí)行時使得一或多個處理器: 指定圖形處理單元的硬件著色單元執(zhí)行與渲染管線的第一著色器級相關(guān)聯(lián)的第一著色操作; 在完成所述第一著色操作后即刻切換所述硬件著色單元的操作模式;以及 使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第二不同著色器級相關(guān)聯(lián)的第二著色操作。
38.根據(jù)權(quán)利要求37所述的非暫時性計算機可讀媒體,其中為了切換操作模式,所述指令使得所述一或多個處理器確定繪制調(diào)用的包括所述第一著色操作和所述第二著色操作的模式。
39.根據(jù)權(quán)利要求38所述的非暫時性計算機可讀媒體,其進一步包括使得所述一或多個處理器進行以下操作的指令: 在完成所述第二著色操作后即刻切換所述硬件著色單元的操作模式;以及 使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第三不同著色器級相關(guān)聯(lián)的第三著色操作。
40.根據(jù)權(quán)利要求39所述的非暫時性計算機可讀媒體,其進一步包括使得所述一或多個處理器進行以下操作的指令: 在完成所述第三著色操作后即刻切換所述硬件著色單元的操作模式;以及 使用所述圖形處理單元的被指定執(zhí)行所述第一著色操作的所述硬件著色單元執(zhí)行與所述渲染管線的第四不同著色器級相關(guān)聯(lián)的第四著色操作。
41.根據(jù)權(quán)利要求37所述的非暫時性計算機可讀媒體,其中為了切換操作模式,所述指令使得所述一或多個處理器在維持與所述第一著色級相關(guān)聯(lián)的輸入/輸出接口的同時切換操作模式。
42.根據(jù)權(quán)利要求37所述的非暫時性計算機可讀媒體,其中為了切換操作模式,所述指令使得所述一或多個處理器切換用于所述第二著色操作的程序計數(shù)器與一或多個資源指針。
43.根據(jù)權(quán)利要求37所述的非暫時性計算機可讀媒體,其中與同所述第二著色操作相關(guān)聯(lián)的第二指令獨立地編譯與所述第一著色操作相關(guān)聯(lián)的第一指令,使得所述第一指令不依賴于所述第二指令。
44.根據(jù)權(quán)利要求43所述的非暫時性計算機可讀媒體,其進一步包括使得所述一或多個處理器在所述圖形處理單元的本機存儲器中為一或多個系統(tǒng)產(chǎn)生的值預留一或多個預定位置的指令,其中所述系統(tǒng)產(chǎn)生的值用于所述第一著色操作和所述第二著色操作。
45.根據(jù)權(quán)利要求37所述的非暫時性計算機可讀媒體,其進一步包括使得所述一或多個處理器將來自所述第一著色操作的結(jié)果存儲到所述圖形處理單元的本機存儲器,并且對所述第一著色操作的所述結(jié)果執(zhí)行所述第二著色操作,而無需存取位于所述圖形處理單元外部的芯片外存儲器。
46.根據(jù)權(quán)利要求37所述的非暫時性計算機可讀媒體,其中為了執(zhí)行所述第一著色操作,所述指令使得所述硬件著色執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,并且為了執(zhí)行所述第二著色操作,所述指令使得所述硬件著色單元執(zhí)行幾何形狀著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個新頂點。
47.根據(jù)權(quán)利要求37所述的非暫時性計算機可讀媒體,其中為了執(zhí)行所述第一著色操作,所述指令使得所述硬件著色單元執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經(jīng)頂點著色的頂點,并且為了執(zhí)行所述第二著色操作,所述指令使得所述硬件著色單元執(zhí)行殼體形狀著色操作以基于所述經(jīng)頂點著色的頂點中的一或多個產(chǎn)生一或多個控制點。
48.根據(jù)權(quán)利要求37所述的非暫時性計算機可讀媒體,其中為了執(zhí)行所述第一著色操作,所述指令使得所述硬件著色單元執(zhí)行域著色操作以產(chǎn)生頂點,并且為了執(zhí)行所述第二著色操作,所述指令使得所述硬件著色單元執(zhí)行幾何形狀著色操作以基于所述經(jīng)域著色的頂點中的一或多個產(chǎn)生一或多個新頂點。
【文檔編號】G06T15/80GK104205174SQ201380018600
【公開日】2014年12月10日 申請日期:2013年3月15日 優(yōu)先權(quán)日:2012年4月4日
【發(fā)明者】維尼特·戈爾, 安德魯·E·格魯伯 申請人:高通股份有限公司