欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

文檔序號:6533500閱讀:444來源:國知局
圖形處理中的拼補著色的制作方法
【專利摘要】本發(fā)明的方面涉及一種用于渲染圖形的過程,其包含:使用圖形處理單元GPU的被指定用于頂點著色的硬件單元執(zhí)行頂點著色操作以對輸入頂點進行著色以便輸出經頂點著色的頂點,其中所述硬件單元遵照接收單個頂點作為輸入并且產生單個頂點作為輸出的接口。所述過程還包含使用所述GPU的被指定用于頂點著色的所述硬件單元執(zhí)行殼體著色操作以基于所述經頂點著色的頂點中的一或多個產生一或多個控制點,其中所述一或多個殼體著色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控制點。
【專利說明】圖形處理中的拼補著色
[0001]本申請案要求2012年4月4日申請的第61/620, 340號美國臨時申請案、2012年 4月4日申請的第61/620, 358號美國臨時申請案和2012年4月4日申請的第61/620, 333 號美國臨時申請案的權益,所有前述申請案的完整內容都以引用的方式并入本文中。

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

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


【發(fā)明內容】

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

【專利附圖】

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

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

【權利要求】
1. 一種用于渲染圖形的方法,所述方法包括: 使用圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行頂點著色操作以對輸入頂 點進行著色以便輸出經頂點著色的頂點,其中所述硬件單元遵照接收單個頂點作為輸入并 且產生單個頂點作為輸出的接口;以及 使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行殼體著色操作以 基于所述經頂點著色的頂點中的一或多個產生一或多個控制點,其中所述一或多個殼體著 色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控 制點。
2. 根據權利要求1所述的方法,其中執(zhí)行所述頂點著色操作和執(zhí)行所述殼體著色操 作與執(zhí)行第一渲染遍次相關聯,并且所述方法進一步包括執(zhí)行包括以下操作的第二渲染遍 次: 使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行包括至少部分地 基于所述控制點產生頂點值的域著色操作;以及 使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行幾何形狀著色操 作以基于所述經域著色的頂點中的所述一或多個產生一或多個新頂點,其中所述幾何形狀 著色操作對所述一或多個經域著色的頂點中的至少一個進行操作以輸出所述一或多個新 頂點。
3. 根據權利要求2所述的方法,其進一步包括在執(zhí)行所述第二遍次之前先完成所述第 一遍次,使得所述圖形處理單元的一或多個組件在所述第一遍次與所述第二遍次之間是閑 置的。
4. 根據權利要求2所述的方法,其中所述頂點著色操作、所述殼體著色操作、所述域著 色操作和所述幾何形狀著色操作與繪制調用相關聯,并且所述方法進一步包括基于所述圖 形處理單元的存儲器的大小將所述繪制調用分成多個子繪制調用,其中所述多個子繪制調 用的所述子繪制調用中的每一個包括所述第一遍次的操作和所述第二遍次的操作。
5. 根據權利要求2所述的方法,其進一步包括將與所述殼體著色操作相關聯的指令附 加到與所述頂點著色操作相關聯的指令,以及將與所述幾何形狀著色操作相關聯的指令附 加到與所述域著色操作相關聯的指令,使得所述頂點著色操作和所述殼體著色操作循序地 執(zhí)行,并且所述域著色操作和所述幾何形狀著色操作循序地執(zhí)行。
6. 根據權利要求1所述的方法,其中執(zhí)行所述殼體著色操作包括: 使用所述圖形處理單元的所述硬件單元執(zhí)行殼體著色器程序的第一例子; 使用所述圖形處理單元的所述硬件單元執(zhí)行所述殼體著色器程序的第二例子; 從所述殼體著色器程序的所述第一例子輸出單個控制點,以便遵照所述硬件單元的所 述接口;以及 從所述殼體著色器程序的所述第二例子輸出第二單個控制點,以便遵照所述硬件單元 的所述接口。
7. 根據權利要求6所述的方法,其中執(zhí)行所述殼體著色器程序的所述第一例子包括使 用所述圖形處理單元的所述硬件單元并行地執(zhí)行所述殼體著色器程序的所述第一例子和 所述殼體著色器程序的所述第二例子。
8. 根據權利要求6所述的方法, 其中給所述殼體著色器程序的所述第一例子指派第一殼體著色器輸出識別符, 其中給所述殼體著色器程序的所述第二例子指派第二殼體著色器輸出識別符, 其中輸出所述單個控制點包括基于所述第一殼體著色器輸出識別符與第一控制點識 別符的比較輸出所述單個控制點,并且 其中輸出所述第二單個控制點包括基于所述第二殼體著色器輸出識別符與第二控制 點識別符的比較輸出所述第二單個控制點。
9. 根據權利要求1所述的方法,其進一步包括在執(zhí)行所述殼體著色操作之前切換用于 所述殼體著色操作的程序計數器與一或多個資源指針。
10. -種用于渲染圖形的圖形處理單元,其包括一或多個處理器,所述一或多個處理器 經配置以: 使用所述圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行頂點著色操作以對輸 入頂點進行著色以便輸出經頂點著色的頂點,其中所述硬件單元遵照接收單個頂點作為輸 入并且產生單個頂點作為輸出的接口;以及 使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行殼體著色操作以 基于所述經頂點著色的頂點中的一或多個產生一或多個控制點,其中所述一或多個殼體著 色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控 制點。
11. 根據權利要求10所述的圖形處理單元,其中所述頂點著色操作和所述殼體著色操 作與第一渲染遍次相關聯,并且其中所述一或多個處理器進一步經配置以執(zhí)行第二渲染遍 次,其中所述一或多個處理器經配置以: 使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行包括至少部分地 基于所述控制點產生頂點值的域著色操作;以及 使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行幾何形狀著色操 作以基于所述經域著色的頂點中的所述一或多個產生一或多個新頂點,其中所述幾何形狀 著色操作對所述一或多個經域著色的頂點中的至少一個進行操作以輸出所述一或多個新 頂點。
12. 根據權利要求11所述的圖形處理單元,其中所述一或多個處理器進一步經配置以 在執(zhí)行所述第二遍次之前先完成所述第一遍次,使得所述圖形處理單元的一或多個組件在 所述第一遍次與所述第二遍次之間是閑置的。
13. 根據權利要求11所述的圖形處理單元,其中所述頂點著色操作、所述殼體著色操 作、所述域著色操作和所述幾何形狀著色操作與繪制調用相關聯,并且其中所述一或多個 處理器進一步經配置以基于所述圖形處理單元的存儲器的大小將所述繪制調用分成多個 子繪制調用,其中所述多個子繪制調用的所述子繪制調用中的每一個包括所述第一遍次的 操作和所述第二遍次的操作。
14. 根據權利要求11所述的圖形處理單元,其中所述一或多個處理器進一步經配置以 將與所述殼體著色操作相關聯的指令附加到與所述頂點著色操作相關聯的指令,并且將與 所述幾何形狀著色操作相關聯的指令附加到與所述域著色操作相關聯的指令,使得所述頂 點著色操作和所述殼體著色操作循序地執(zhí)行,并且所述域著色操作和所述幾何形狀著色操 作循序地執(zhí)行。
15. 根據權利要求10所述的圖形處理單元,其中為了執(zhí)行所述殼體著色操作,所述硬 件著色單元經配置以: 使用所述圖形處理單元的所述硬件單元執(zhí)行殼體著色器程序的第一例子; 使用所述圖形處理單元的所述硬件單元執(zhí)行所述殼體著色器程序的第二例子; 從所述殼體著色器程序的所述第一例子輸出單個控制點,以便遵照所述硬件單元的所 述接口;以及 從所述殼體著色器程序的所述第二例子輸出第二單個控制點,以便遵照所述硬件單元 的所述接口。
16. 根據權利要求15所述的圖形處理單元,其中所述硬件著色單元經配置以使用所述 圖形處理單元的所述硬件單元并行地執(zhí)行所述殼體著色器程序的所述第一例子和所述殼 體著色器程序的所述第二例子。
17. 根據權利要求15所述的圖形處理單元, 其中給所述殼體著色器程序的所述第一例子指派第一殼體著色器輸出識別符, 其中給所述殼體著色器程序的所述第二例子指派第二殼體著色器輸出識別符, 其中為了輸出所述單個控制點,所述硬件著色單元經配置以基于所述第一殼體著色器 輸出識別符與第一控制點識別符的比較輸出所述單個控制點;并且 其中為了輸出所述第二單個控制點,所述硬件著色單元經配置以基于所述第二殼體著 色器輸出識別符與第二控制點識別符的比較輸出所述第二單個控制點。
18. 根據權利要求10所述的圖形處理單元,其中所述一或多個處理器經配置以在執(zhí)行 所述殼體著色操作之前,切換用于所述殼體著色操作的程序計數器與一或多個資源指針。
19. 一種用于渲染圖形的設備,所述設備包括: 用于使用圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行頂點著色操作以對輸 入頂點進行著色以便輸出經頂點著色的頂點的裝置,其中所述硬件單元遵照接收單個頂點 作為輸入并且產生單個頂點作為輸出的接口;以及 用于使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行殼體著色操 作以基于所述經頂點著色的頂點中的一或多個產生一或多個控制點的裝置,其中所述一或 多個殼體著色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述 一或多個控制點。
20. 根據權利要求19所述的設備,其中用于執(zhí)行所述頂點著色操作的所述裝置和用于 執(zhí)行所述殼體著色操作的所述裝置與用于執(zhí)行第一渲染遍次的裝置相關聯,并且所述設備 進一步包括用于執(zhí)行第二渲染遍次的裝置,其包括: 用于使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行包括至少部 分地基于所述控制點產生頂點值的域著色操作的裝置;以及 用于使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行幾何形狀著 色操作以基于所述經域著色的頂點中的所述一或多個產生一或多個新頂點的裝置,其中所 述幾何形狀著色操作對所述一或多個經域著色的頂點中的至少一個進行操作以輸出所述 一或多個新頂點。
21. 根據權利要求20所述的設備,其進一步包括用于在執(zhí)行所述第二遍次之前先完成 所述第一遍次的裝置,使得所述圖形處理單元的一或多個組件在所述第一遍次與所述第二 遍次之間是閑置的。
22. 根據權利要求20所述的設備,其中所述頂點著色操作、所述殼體著色操作、所述域 著色操作和所述幾何形狀著色操作與繪制調用相關聯,并且所述設備進一步包括用于基于 所述圖形處理單元的存儲器的大小將所述繪制調用分成多個子繪制調用的裝置,其中所述 多個子繪制調用的所述子繪制調用中的每一個包括所述第一遍次的操作和所述第二遍次 的操作。
23. 根據權利要求20所述的設備,其進一步包括用于將與所述殼體著色操作相關聯 的指令附加到與所述頂點著色操作相關聯的指令的裝置,以及用于將與所述幾何形狀著色 操作相關聯的指令附加到與所述域著色操作相關聯的指令的裝置,使得所述頂點著色操作 和所述殼體著色操作循序地執(zhí)行,并且所述域著色操作和所述幾何形狀著色操作循序地執(zhí) 行。
24. 根據權利要求19所述的設備,其中用于執(zhí)行所述殼體著色操作的所述裝置包括: 用于使用所述圖形處理單元的所述硬件單元執(zhí)行殼體著色器程序的第一例子的裝 置; 用于使用所述圖形處理單元的所述硬件單元執(zhí)行所述殼體著色器程序的第二例子的 裝置; 用于從所述殼體著色器程序的所述第一例子輸出單個控制點以便遵照所述硬件單元 的所述接口的裝置;以及 用于從所述殼體著色器程序的所述第二例子輸出第二單個控制點以便遵照所述硬件 單元的所述接口的裝置。
25. 根據權利要求24所述的設備,其中用于執(zhí)行所述殼體著色器程序的所述第一例子 的裝置包括用于使用所述圖形處理單元的所述硬件單元并行地執(zhí)行所述殼體著色器程序 的所述第一例子和所述殼體著色器程序的所述第二例子的裝置。
26. 根據權利要求24所述的設備, 其中給所述殼體著色器程序的所述第一例子指派第一殼體著色器輸出識別符, 其中給所述殼體著色器程序的所述第二例子指派第二殼體著色器輸出識別符, 其中用于輸出所述單個控制點的所述裝置包括用于基于所述第一殼體著色器輸出識 別符與第一控制點識別符的比較輸出所述單個控制點的裝置,并且 其中用于輸出所述第二單個控制點的所述裝置包括用于基于所述第二殼體著色器輸 出識別符與第二控制點識別符的比較輸出所述第二單個控制點的裝置。
27. 根據權利要求19所述的設備,其進一步包括用于在執(zhí)行所述殼體著色操作之前切 換用于所述殼體著色操作的程序計數器與一或多個資源指針的裝置。
28. -種上面存儲有指令的非暫時性計算機可讀媒體,所述指令在被執(zhí)行時使得一或 多個處理器: 使用圖形處理單元的被指定用于頂點著色的硬件單元執(zhí)行頂點著色操作以對輸入頂 點進行著色以便輸出經頂點著色的頂點,其中所述硬件單元遵照接收單個頂點作為輸入并 且產生單個頂點作為輸出的接口;以及 使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行殼體著色操作以 基于所述經頂點著色的頂點中的一或多個產生一或多個控制點,其中所述一或多個殼體著 色操作對所述一或多個經頂點著色的頂點中的至少一個進行操作以輸出所述一或多個控 制點。
29. 根據權利要求28所述的非暫時性計算機可讀媒體,其中所述頂點著色操作和所述 殼體著色操作與第一渲染遍次相關聯,并且所述非暫時性計算機可讀媒體進一步包括使得 所述一或多個處理器執(zhí)行第二渲染遍次的指令,其中所述指令使得所述一或多個處理器: 使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行包括至少部分地 基于所述控制點產生頂點值的域著色操作;以及 使用所述圖形處理單元的被指定用于頂點著色的所述硬件單元執(zhí)行幾何形狀著色操 作以基于所述經域著色的頂點中的所述一或多個產生一或多個新頂點,其中所述幾何形狀 著色操作對所述一或多個經域著色的頂點中的至少一個進行操作以輸出所述一或多個新 頂點。
30. 根據權利要求29所述的非暫時性計算機可讀媒體,其進一步包括使得所述一或多 個處理器在執(zhí)行所述第二遍次之前先完成所述第一遍次并且在所述第一遍次與所述第二 遍次之間等待閑置的指令。
31. 根據權利要求29所述的非暫時性計算機可讀媒體,其中所述頂點著色操作、所述 殼體著色操作、所述域著色操作和所述幾何形狀著色操作與繪制調用相關聯,并且所述非 暫時性計算機可讀媒體進一步包括使得所述一或多個處理器基于所述圖形處理單元的存 儲器的大小將所述繪制調用分成多個子繪制調用的指令,其中所述多個子繪制調用的所述 子繪制調用中的每一個包括所述第一遍次的操作和所述第二遍次的操作。
32. 根據權利要求29所述的非暫時性計算機可讀媒體,其進一步包括使得所述一或多 個處理器將與所述殼體著色操作相關聯的指令附加到與所述頂點著色操作相關聯的指令 并且將與所述幾何形狀著色操作相關聯的指令附加到與所述域著色操作相關聯的指令的 指令,使得所述頂點著色操作和所述殼體著色操作循序地執(zhí)行,并且所述域著色操作和所 述幾何形狀著色操作循序地執(zhí)行。
33. 根據權利要求28所述的非暫時性計算機可讀媒體,其中為了執(zhí)行所述殼體著色操 作,所述指令使得所述硬件著色單元: 使用所述圖形處理單元的所述硬件單元執(zhí)行殼體著色器程序的第一例子; 使用所述圖形處理單元的所述硬件單元執(zhí)行所述殼體著色器程序的第二例子; 從所述殼體著色器程序的所述第一例子輸出單個控制點,以便遵照所述硬件單元的所 述接口;以及 從所述殼體著色器程序的所述第二例子輸出第二單個控制點,以便遵照所述硬件單元 的所述接口。
34. 根據權利要求33所述的非暫時性計算機可讀媒體,其中所述指令使得所述硬件著 色單元使用所述圖形處理單元的所述硬件單元并行地執(zhí)行所述殼體著色器程序的所述第 一例子和所述殼體著色器程序的所述第二例子。
35. 根據權利要求33所述的非暫時性計算機可讀媒體, 其中給所述殼體著色器程序的所述第一例子指派第一殼體著色器輸出識別符, 其中給所述殼體著色器程序的所述第二例子指派第二殼體著色器輸出識別符, 其中為了輸出所述單個控制點,所述指令使得所述硬件著色單元基于所述第一殼體著 色器輸出識別符與第一控制點識別符的比較輸出所述單個控制點;并且 其中為了輸出所述第二單個控制點,所述指令使得所述硬件著色單元基于所述第二殼 體著色器輸出識別符與第二控制點識別符的比較輸出所述第二單個控制點。
36.根據權利要求28所述的非暫時性計算機可讀媒體,其中指令使得所述一或多個處 理器在執(zhí)行所述殼體著色操作之前切換用于所述殼體著色操作的程序計數器與一或多個 資源指針。
【文檔編號】G06T15/00GK104246829SQ201380018326
【公開日】2014年12月24日 申請日期:2013年3月15日 優(yōu)先權日:2012年4月4日
【發(fā)明者】維尼特·戈爾, 安德魯·E·格魯伯, 金東炫 申請人:高通股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
芜湖县| 海宁市| 类乌齐县| 怀远县| 连山| 翁牛特旗| 汶上县| 天峻县| 昆山市| 天长市| 高安市| 德保县| 扬中市| 贵德县| 洞头县| 十堰市| 汨罗市| 思茅市| 西丰县| 北川| 博乐市| 科技| 任丘市| 安吉县| 贵南县| 余江县| 汉源县| 青神县| 盐边县| 成安县| 怀宁县| 平凉市| 潢川县| 彩票| 平潭县| 东明县| 仙居县| 渝中区| 梧州市| 晋州市| 肇庆市|