1.一種操作圖形處理流水線的方法,該圖形處理流水線包括執(zhí)行指令以進行著色操作的可編程著色階段,其中,執(zhí)行線程能夠一起被分組為線程組,在所述線程組中,分組的線程以一致步調(diào)、一次一個指令地來執(zhí)行,所述方法包括以下步驟:
連同線程組合并事件指示一起向所述著色器階段發(fā)出用于通過所述著色器階段執(zhí)行以對執(zhí)行線程進行處理用于生成渲染輸出的著色器程序,所述線程組合并事件指示表示所述著色器程序執(zhí)行中的如下的點,即,在該點處,能夠?qū)⒕€程組中的并非全部線程都是活動的所述線程組進行合并;
所述圖形處理流水線:
識別要通過所述著色階段進行處理的一組兩個或更多個線程組,對于所述兩個或更多個線程組,所述線程組中的并非全部線程都是活動的,并且所述兩個或更多個線程組能夠被合并為單個線程組;以及
所述著色階段:
針對所識別的線程組執(zhí)行所述著色器程序,針對所識別的線程組執(zhí)行所述著色器程序包括以下步驟:
當所識別的線程組已經(jīng)到達所述線程組合并事件指示時,將所述線程組合并為包含來自所述線程組中的每一個線程組的活動線程的單個線程組;以及
在所述合并事件指示點之后,針對經(jīng)合并的線程組執(zhí)行所述著色器程序中的進一步的指令。
2.根據(jù)權(quán)利要求1所述的方法,所述方法包括用于所述圖形處理流水線的所述著色器編譯器,其針對要通過著色器階段執(zhí)行的著色器程序執(zhí)行以下步驟:
確定在所述著色器程序的執(zhí)行內(nèi)是否存在如下的點,即,在該點處,能夠?qū)⒏髯跃哂蟹腔顒泳€程的兩個或更多個線程組進行合并;以及
當確定在所述著色器程序執(zhí)行中存在能夠?qū)⒕哂蟹腔顒泳€程的兩個或更多個線程組進行合并的點時,在所述著色器程序中包括或者為所述著色器程序提供線程組合并事件指示,所述線程組合并事件指示表示所述著色器程序執(zhí)行中能夠?qū)⒏髯跃哂蟹腔顒泳€程的兩個或更多個線程組進行合并的點。
3.一種對程序進行編譯以生成用于圖形處理流水線的著色階段的指令的方法,該圖形處理流水線執(zhí)行指令以執(zhí)行著色操作,其中,執(zhí)行線程能夠一起被分組為線程組,在所述線程組中,分組的線程以一致步調(diào)、一次一個指令地來執(zhí)行;
針對要通過著色器階段執(zhí)行的著色器程序,所述方法包括以下步驟:
確定在所述著色器程序的執(zhí)行內(nèi)是否存在如下的點,即,在該點處,能夠?qū)⒏髯跃哂蟹腔顒泳€程的兩個或更多個線程組進行合并;以及
當確定在所述著色器程序執(zhí)行中存在能夠?qū)⒕哂蟹腔顒泳€程的兩個或更多個線程組進行合并的點時,在所述著色器程序中包括或者為所述著色器程序提供線程組合并事件指示,所述線程組合并事件指示表示所述著色器程序執(zhí)行中能夠?qū)⒏髯跃哂蟹腔顒泳€程的兩個或更多個線程組進行合并的點。
4.根據(jù)權(quán)利要求2或3所述的方法,所述方法進一步包括以下步驟:
在所述著色器程序執(zhí)行中,所述編譯器將要求針對非活動線程的結(jié)果的任何著色器程序操作布置在所述線程組合并事件點之前,并且將不需要針對線程組中的非活動線程而被執(zhí)行的任何著色器程序操作布置在所述線程組合并事件點之后。
5.根據(jù)權(quán)利要求1至3中的任一項所述的方法,其中,將具有非重疊活動線程的線程組被識別為能夠被合并為單個線程組的線程組。
6.根據(jù)權(quán)利要求1至3中的任一項所述的方法,所述方法進一步包括以下步驟:
將采樣位置的分配重新映射到針對線程組的線程組路徑,以允許線程組然后進行合并。
7.根據(jù)權(quán)利要求1至3中的任一項所述的方法,所述方法進一步包括以下步驟:
針對在執(zhí)行所述著色器程序時要被合并為單個線程組的一組線程組,提供以下組件,以供在針對所述線程組的所述著色器程序的執(zhí)行期間使用:
一組公共寄存器,其在物理上由要被合并為所述單個線程組的所述一組線程組中的所述線程組共享;以及
一組私人寄存器,其是如下的寄存器的組,即,對于所述一組線程組中的每個線程組來說分別是專屬的,并且對于要進行合并的所述一組線程組中的其它線程組來說是不可訪問。
8.根據(jù)權(quán)利要求7所述的方法,所述方法進一步包括以下步驟:
在所述著色器程序執(zhí)行中的所述線程組合并點之前,所述線程組僅針對其各自的活動線程對針對所述一組線程組的所述公共寄存器進行寫入。
9.根據(jù)權(quán)利要求7所述的方法,所述方法進一步包括以下步驟:
執(zhí)行在所述著色器程序執(zhí)行中的所述合并事件點之前的要求使用非活動線程的任何著色器程序操作,并且使用針對所討論的線程組的所述私人寄存器。
10.根據(jù)權(quán)利要求7所述的方法,所述方法進一步包括以下步驟:
將需要跨越所述線程組合并事件而保存的來自所述線程組合并事件點之前的任何數(shù)據(jù)項存儲在針對所述一組線程組的所述公共寄存器中。
11.一種數(shù)據(jù)處理系統(tǒng),該數(shù)據(jù)處理系統(tǒng)包括:
圖形處理流水線,該圖形處理流水線包括執(zhí)行指令以進行著色操作的可編程著色階段,其中,執(zhí)行線程能夠一起被分組為線程組,在所述線程組中,分組的線程以一致步調(diào)、一次一個指令地來執(zhí)行;以及
編譯器,該編譯器對針對所述著色階段的程序進行編譯以生成用于通過所述著色階段執(zhí)行的指令;
其中,所述編譯器被配置為:
連同線程組合并事件指示一起向所述著色器階段發(fā)出用于通過所述著色器階段執(zhí)行以對執(zhí)行線程進行處理用于生成渲染輸出的著色器程序,所述線程組合并事件指示表示所述著色器程序執(zhí)行中的如下的點,即,在該點處,能夠?qū)⒕€程組中的并非全部線程都是活動的所述線程組進行合并;
所述圖形處理流水線被配置為:
識別要通過所述著色階段進行處理的各個組的兩個或更多個線程組,對于所述兩個或更多個線程組,所述線程組中的并非全部線程都是活動的,并且所述兩個或更多個線程組能夠被合并為相應(yīng)的單個線程組;以及
所述著色階段被配置為:
執(zhí)行針對所識別的線程組的所述著色器程序,所述執(zhí)行針對所識別的線程組的所述著色器程序包括以下步驟:
當相應(yīng)的所識別的一組可合并的線程組中的線程組已經(jīng)到達所述線程組合并事件指示時,將所述線程組合并為包含來自所述線程組中的每一個線程組的活動線程的單個線程組;以及
在所述合并事件指示點之后,針對經(jīng)合并的線程組執(zhí)行所述著色器程序中的進一步的指令。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,所述編譯器被配置為:
確定在所述著色器程序的執(zhí)行內(nèi)是否存在如下的點,即,在該點處,能夠?qū)⒏髯跃哂蟹腔顒泳€程的兩個或更多個線程組進行合并;以及
當確定在所述著色器程序執(zhí)行中存在能夠?qū)⒕哂蟹腔顒泳€程的兩個或更多個線程組進行合并的點時,在所述著色器程序中包括或者為所述著色器程序提供線程組合并事件指示,所述線程組合并事件指示表示所述著色器程序執(zhí)行中能夠?qū)⒏髯跃哂蟹腔顒泳€程的兩個或更多個線程組進行合并的點。
13.根據(jù)權(quán)利要求11或12所述的系統(tǒng),其中,所述編譯器被配置為:
在所述著色器程序執(zhí)行中,將要求針對非活動線程的結(jié)果的任何著色器程序操作布置在所述線程組合并事件點之前,并且將不需要針對線程組中的非活動線程而被執(zhí)行的任何著色器程序操作布置在所述線程組合并事件點之后。
14.根據(jù)權(quán)利要求11或12所述的系統(tǒng),其中,將具有非重疊活動線程的線程組被識別為能夠被合并為單個線程組的線程組。
15.根據(jù)權(quán)利要求11或12所述的系統(tǒng),其中,所述圖形處理流水線能夠:
將采樣位置的分配重新映射到針對線程組的線程組路徑,以允許線程組然后進行合并。
16.根據(jù)權(quán)利要求11或12所述的系統(tǒng),針對在執(zhí)行所述著色器程序時要被合并為單個線程組的一組線程組,所述系統(tǒng)還包括以下組件,以供在針對所述線程組的所述著色器程序的執(zhí)行期間使用:
一組公共寄存器,其在物理上由要被合并為所述單個線程組的所述一組線程組中的所述線程組共享;以及
一組私人寄存器,其是如下的寄存器的組,即,對于所述一組線程組中的每個線程組來說分別是專屬的,并且對于要進行合并的所述一組線程組中的其它線程組來說是不可訪問。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述著色階段被配置為:
針對所述線程組,在所述著色器程序執(zhí)行中的所述線程組合并點之前,僅針對其各自的活動線程對針對所述一組線程組的所述公共寄存器進行寫入。
18.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述著色階段被配置為:
執(zhí)行在所述著色器程序執(zhí)行中的所述合并事件點之前的要求使用非活動線程的任何著色器程序操作,并且使用針對所討論的線程組的所述私人寄存器。
19.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述著色階段被配置為:
將需要跨越所述線程組合并事件而保存的來自所述線程組合并事件點之前的任何數(shù)據(jù)項存儲在針對所述一組線程組的所述公共寄存器中。
20.一種編譯器,該編譯器對程序進行編譯以生成用于圖形處理流水線的著色階段的指令,該圖形處理流水線執(zhí)行指令以執(zhí)行著色操作,并且其中,執(zhí)行線程能夠一起被分組為線程組,在所述線程組中,分組的線程以一致步調(diào)、一次一個指令地來執(zhí)行;
其中,所述編譯器被配置為,針對要通過著色器階段執(zhí)行的著色器程序執(zhí)行以下步驟:
確定在所述著色器程序的執(zhí)行內(nèi)是否存在如下的點,即,在該點處,能夠?qū)⒏髯跃哂蟹腔顒泳€程的兩個或更多個線程組進行合并;以及
當確定在所述著色器程序執(zhí)行中存在能夠?qū)⒕哂蟹腔顒泳€程的兩個或更多個線程組進行合并的點時,在所述著色器程序中包括或者為所述著色器程序提供線程組合并事件指示,所述線程組合并事件指示表示所述著色器程序執(zhí)行中能夠?qū)⒏髯跃哂蟹腔顒泳€程的兩個或更多個線程組進行合并的點。