使用樣本子集的多樣本表面處理的制作方法
【專利摘要】使用樣本子集的多樣本表面處理。提供用于多樣本處理的系統、方法和計算機程序產品。接收并分析多樣本像素數據以標識多樣本像素的具有相等數據的樣本的子集,使得用于子集中的一個樣本的數據代表用于子集中的所有樣本的多樣本像素數據。生成指示多樣本像素的哪些樣本被包括在子集的每一個中的編碼狀態。
【專利說明】使用樣本子集的多樣本表面處理
【技術領域】
[0001]本發明涉及圖形處理,并且,更具體地,涉及多樣本處理。
【背景技術】
[0002]當多重采樣技術用來產生抗鋸齒圖像時,用于每個像素的處理的量可隨著每像素樣本數的增加而增加。除了處理增加以外,在圖形處理器內的不同處理單元之間轉移數據所消耗的帶寬的量也增加。處理需求的增加和增加的帶寬消耗可導致圖形處理性能降低和/或系統成本增加。
[0003]因此,存在對于解決增加的處理和增加的帶寬消耗的問題和/或與現有技術相關聯的其他問題的需求。
【發明內容】
[0004]提供用于多樣本處理的系統、方法和計算機程序產品。接收并分析多樣本像素數據以標識多樣本像素的具有相等數據的樣本的子集,使得用于子集中的一個樣本的數據代表用于子集中的所有樣本的多樣本像素數據。生成指示多樣本像素的哪些樣本被包括在子集中的每一個中的編碼狀態。
【專利附圖】
【附圖說明】
[0005]圖1示出根據一個實施例的、用于處理多樣本數據的方法的流程圖;
[0006]圖2A示出根據一個實施例的、像素內的樣本位置的示意圖;
[0007]圖2B示出根據一個實施例的、在多樣本處理期間所使用的各處理單元和互連的示圖;
[0008]圖2C示出根據一個實施例的、圖2B中示出的處理單元的示圖;
[0009]圖2D示出根據一個實施例的、圖2B中示出的加載/存儲單元的另一示圖;
[0010]圖3示出根據一個實施例的、用于處理多樣本數據的方法的另一流程圖;
[0011]圖4A示出根據一個實施例的、用于合并處理多樣本數據的方法的流程圖;
[0012]圖4B示出根據一個實施例的、用于實施圖3中示出的方法步驟的方法的流程圖;
[0013]圖5A示出根據一個實施例的、圖2B中示出的處理單元的另一示圖;
[0014]圖5B示出根據一個實施例的、圖2B中示出的加載/存儲單元的另一示圖;
[0015]圖5C示出根據一個實施例的、在圖2B中示出的多樣本處理期間所使用的各處理單元和互連的另一示圖;
[0016]圖6A示出根據一個實施例的、用于處理多樣本數據的方法的另一流程圖;
[0017]圖6B示出根據一個實施例的、用于合并處理多樣本數據的方法的另一流程圖;
[0018]圖7示出根據一個實施例的并行處理單元(PI3U);
[0019]圖8示出根據一個實施例的、圖5的流多處理器;以及
[0020]圖9示出例示性系統,其中可實現各先前實施例的各種架構和/或功能性。
【具體實施方式】
[0021]當常規圖形處理器配置為生成多樣本表面時,存儲器的被分配以存儲多樣本像素數據的量基于被包括在每個像素中的樣本數而增加。隨著每像素樣本數的增加,讀取、寫入和傳送多樣本像素數據所消耗的帶寬也增加。
[0022]當針對像素的每個樣本來說數據相同時,可存儲單個樣本,所述單個樣本代表多樣本像素的所有樣本或多樣本像素的一部分的所有樣本,其中所述部分包括兩個或更多個樣本。編碼狀態可與多樣本像素相關聯,其指示單個樣本代表所有樣本即ISPP (每像素部分一個樣本)。在一個實施例中,像素被分組成塊,并且當塊內的所有多樣本像素每個可被各自的單個樣本所代表時,ISPP的編碼狀態可與整個塊相關聯。當編碼狀態是ISPP時,用于存儲多樣本像素數據的存儲器占用空間減少,以及讀取、寫入和傳送多樣本像素數據所消耗的帶寬也減少。此外,在一些情況下,處理單元可配置為處理單個樣本以生成用于單個樣本的經處理的像素數據,其代表用于兩個或更多個樣本或甚至像素全部樣本的經處理的多樣本像素數據。這樣,當編碼狀態是ISPP時,處理多樣本像素所需的處理能力也可減少。
[0023]圖1示出根據一個實施例的、用于多樣本處理的方法100的流程圖。在步驟105,接收多樣本像素數據。在步驟110,確定與多樣本像素數據相關聯的編碼狀態。在一個實施例中,分析多樣本像素數據以確定編碼狀態。在另一實施例中,隨著多樣本像素數據來接收編碼狀態。在步驟115,用于多樣本像素的一個樣本的數據和編碼狀態被提供到處理單元。在步驟120,由處理單元處理像素的一個樣本以生成用于一個樣本的經處理的數據。用于一個樣本的經處理的數據代表用于多樣本像素的所有的樣本或至少一部分(即整個多樣本像素的所有樣本或多樣本像素的一部分的所有樣本)的經處理的多樣本像素數據。
[0024]現在將關于各種可選架構和特征闡述更多示例性的信息,前述框架根據用戶意愿可以采用或可以不采用所述各種可選架構和特征來實現。應強烈注意的是,下面的信息出于示例性目的而被闡述,并且不應視為以任何方式加以限制。任何下面的特征可被可選地包含,排斥或不排斥所描述的其他特征。
[0025]圖2A示出根據一個實施例的、像素210、211、212和213內的樣本位置的示意圖200。當數據讀取自具有每像素4個樣本、具有不是ISPP的編碼狀態的多樣本表面時,針對每個像素在多樣本表面中存儲與位置A、B、C和D相對應的4個單獨的值。多樣本表面可以是多樣本z緩沖區或多樣本顏色緩沖區。相反,當多樣本表面的編碼狀態是ISPP時,僅存儲代表所有樣本(例如樣本A、B、C和D)的值的一個值。
[0026]除了像素級別之外,ISPP編碼狀態還可應用到像素的塊或甚至整個表面。像素塊可包括在屏幕空間中或存儲器中鄰近的一個或多個像素。可以以存儲單位指定塊大小,例如256字節,而非像素的數量。因此,塊中的像素的數目可基于多樣本模式而變化(即每像素較多樣本導致較小的塊大小)。相同塊中的像素不一定需要在屏幕空間中鄰近。在一個實施例中,像素塊被定制大小以與可在多線程圖形核心內并行處理的像素數相對應。
[0027]如圖2A所示,樣本位置可在每個像素內抖動(即分布)以改進圖像質量。在一個實施例中,樣本位置可位于每個像素的中心。其他多樣本像素模式可包括對于每個像素來說多于4個樣本或少于4個樣本。用于每個樣本的多樣本數據可包括z (深度)、顏色、紋理坐標、或與圖形基元相關聯的其他屬性。
[0028]圖2B示出根據一個實施例的、在多樣本處理期間所使用的各處理單元和互連的示圖220。L2高速緩存265配置為對與多樣本表面的一部分相對應的數據進行高速緩存,這按需要對幀緩沖區存儲器270進行讀取和寫入以滿足訪問多樣本表面的加載和存儲請求。L2高速緩存265可直接耦連到幀緩沖區存儲器270,或者L2高速緩存265可通過諸如存儲器控制器(未示出)的一個或多個中間單元間接地耦連到幀緩沖區存儲器270。
[0029]在一個實施例中,L2高速緩存265存儲或另行獲得與多樣本表面相關聯的編碼狀態。在一個實施例中,編碼狀態可針對幀緩沖區存儲器270的存儲器的每頁而存儲在存儲器控制器內。L2高速緩存265經由交叉開關260耦連到加載/存儲單元290。在一個實施例中,幀緩沖區存儲器270通過多個存儲器接口與L2高速緩存265相接,并且交叉開關260配置為按需要在加載/存儲單元290和耦連到不同存儲器接口的多個L2高速緩存265之間對數據進行路由以到達幀緩沖區存儲器270中的相應存儲器位置。圖5示出關于存儲器接口的較多細節。多個加載/存儲單元290可耦連在交叉開關260和配置為處理像素數據的多個處理單元250之間。
[0030]不同于當編碼狀態是ISPP時配置為復制用于多樣本像素中的所有樣本的樣本數據以將多樣本像素數據提供到加載/存儲單元290,L2高速緩存265可配置為經由交叉開關260將具有僅一個樣本多樣本像素數和ISPP的編碼狀態據提供到加載/存儲單元290。通過交叉開關260每像素傳送較少的數據消耗較少帶寬。因為跨交叉開關260轉移較少數據,所以消耗的功率也較少。因此,使用ISPP的編碼狀態來傳送多樣本像素數據是可取的。在一個實施例中,L2高速緩存265可配置為經由交叉開關260將塊大小增加的多樣本像素數據(ISPP格式或不是ISPP格式)傳送到加載/存儲單元290。因此,加載/存儲單元290可配置為存儲塊大小增加的多樣本像素數據。在另一個實施例中,L2高速緩存265配置為基于從加載/存儲單元290所接收的請求而傳送用于多樣本像素的樣本子集。
[0031]加載/存儲單元290配置為當從處理單元250接收加載請求時將多樣本像素數據提供到處理單元250。加載/存儲單元290還配置為從處理單元250接收經處理的多樣本像素數據并存儲多樣本像素數據。加載/存儲單元290可包括緩沖區用于在經由交叉開關260和L2高速緩存265將經處理的多樣本數據輸出到幀緩沖區存儲器270之前臨時地存儲經處理的多樣本數據。在一個實施例中,加載/存儲單元290至少部分地起高速緩存的作用,所述高速緩存配置為在單個緩沖區中緩沖接收自L2高速緩存265的多樣本像素數據和接收自處理單元250的經處理的多樣本像素數據。當緩沖區中的條目不可用來存儲多樣本像素數據或經處理的多樣本像素數據時,一個或多個條目經由交叉開關260和L2高速緩存265回寫到幀緩沖區存儲器270 (即被轉儲)。當尚未采用接收自處理單元250的經處理的多樣本像素數據對條目進行寫入時,條目可被替換并且不轉儲到L2高速緩存265。加載/存儲單元290的細節結合圖2C來進行描述。
[0032]加載/存儲單元290接收多樣本像素數據并確定與多樣本像素數據相關聯的編碼狀態。當編碼狀態是ISPP時,用于多樣本像素的一個樣本的數據和編碼狀態被提供到處理單元250。當編碼狀態不是ISPP時,加載/存儲單元290可配置為將用于多樣本像素的所有樣本或至少一部分的數據與編碼狀態一起提供到處理單元250。
[0033]在一個實施例中,處理單元250可配置為加載多樣本像素的單個樣本而非多樣本像素的所有樣本,并且,如果返回單個樣本并且用于單個樣本的編碼狀態是1SPP,那么處理單元250處理單個樣本。如果返回單個樣本并且用于單個樣本的編碼狀態不是1SPP,那么處理單元250隨后加載多樣本像素的其余樣本并處理多樣本像素的所有樣本。通過推遲其余樣本的加載,當編碼狀態是ISPP并且不加載其余樣本時,轉移多樣本像素數據所消耗的帶寬減少。在另一實施例中,如果返回單個樣本并且用于單個樣本的編碼狀態不是ISPPjP么處理單元250發出針對一個或多個附加樣本的加載請求。
[0034]包括與多樣本像素的樣本相對應的掩碼的多樣本加載指令可用來加載多樣本像素的單個樣本或加載多樣本像素的一個或多個附加樣本。在一個實施例中,多樣本加載指令指定與樣本相對應的索引以請求樣本或樣本的序列。當被執行時,多樣本加載指令可配置為返回與樣本相對應的多樣本像素數據和掩碼,所述掩碼指示多樣本像素中的具有多樣本像素的相同多樣本像素數據和/或編碼狀態的其他樣本。
[0035]當編碼狀態是ISPP時,多樣本像素的一個樣本由處理單元250所處理以生成用于一個樣本的經處理的數據,其代表用于多樣本像素的所有樣本或至少一部分的經處理的多樣本像素數據。當編碼狀態不是ISPP時,多樣本像素部分的所有樣本被處理以生成用于所有樣本的經處理的數據。因此,當每像素樣本數是8時,與當編碼狀態是ISPP時相比較,當編碼狀態不是ISPP時每像素處理的量是8倍。當編碼狀態是ISPP時,處理針對其他數目的每像素樣本而成比例地減少。減少多樣本像素處理可改進性能并且還可以減少功耗。在其他實施例中,如結合圖5A、5B、5C、6A和6B所描述的,處理單元250可配置為處理樣本的子集,并且處理單元250提供信息(例如每像素樣本掩碼或每像素部分樣本掩碼),所述信息指示哪些樣本由輸出到加載/存儲單元290的經處理的多樣本數據所代表。
[0036]當處理單元250配置為實施混合操作或片段著色操作時,多樣本像素視為與源像素數據組合的目標像素以產生用于多樣本像素的經處理的數據。源像素數據針對多樣本像素的所有樣本具有相同值是常見的,使得混合或著色操作生成用于單個樣本的經處理的數據,所述單個樣本代表經處理的多樣本像素的所有樣本的。在該情況中,處理單元250在存儲請求中將用于單個樣本的經處理的數據與ISPP的編碼狀態一起提供到加載/存儲單元290。否則,當針對所有樣本生成經處理的數據時,處理單元250在存儲請求中將用于所有樣本的經處理的數據與不是ISPP的編碼狀態一起提供到加載/存儲單元290。包括與多樣本像素的樣本相對應的掩碼的多樣本存儲指令可用來將值存儲到多樣本像素的一個或多個樣本。
[0037]可通過隨著用于多樣本像素的數據提供編碼狀態來在傳送用于每個多樣本像素的較少數據中和在數據的處理中實現高效率。針對加載操作和/或存儲操作,跨交叉開關260傳送數據所消耗的帶寬的量可減少。與分配多個線程以生成用于具有不是ISPP的編碼狀態的多樣本像素的數據相比,可由處理單元250分配單個處理線程以生成用于具有ISPP的編碼狀態的多樣本像素的數據。在一個實施例中,加載/存儲單元290可配置為在通過交叉開關260將數據傳送到L2高速緩存265之前將用于接收自處理單元250的多樣本像素的數據合并成塊。當數據的整個塊被傳送到L2高速緩存265時,加載/存儲單元290可提供用于整個塊的而非用于各自的多樣本像素的編碼狀態。
[0038]圖2C示出根據一個實施例的、圖2B中示出的加載/存儲單元290的示圖。如圖2C所示,在一個實施例中,加載/存儲單元290包括高速緩存280、加載請求單元285、合并單元255和覆蓋跟蹤單元275。高速緩存280接收用于一個或多個多樣本像素的數據并將數據存儲在高速緩存條目中。數據可與包括兩個或更多個多樣本像素的塊相對應。高速緩存280還可存儲與(用于每個塊或每個多樣本像素的)數據相關聯的編碼狀態。在一個實施例中,高速緩存280還可存儲與數據相關聯的其他信息,諸如每像素樣本數(多樣本模式)和/或每像素樣本掩碼。加載請求單元285配置為確定用于響應于加載請求被返回到處理單元250的數據的編碼狀態。
[0039]在一個實施例中,編碼狀態隨著數據被接收自L2高速緩存265,并且加載請求單元285將編碼狀態與數據一起提供到處理單元250。在另一實施例中,加載請求單元285不從L2高速緩存265接收編碼狀態,并且加載請求單元285配置為將用于多樣本像素或多樣本像素的一部分的不同樣本的數據的值加以比較并在當多樣本像素的所有樣本具有相同值時確定編碼狀態是1SPP。否則加載請求單元285確定編碼狀態不是1SPP。在一個實施例中,L2高速緩存265配置為將用于多樣本像素或多樣本像素的一部分的不同樣本的數據的值加以比較并確定用于每個像素的或用于像素的塊的編碼狀態,以將編碼狀態提供到加載/存儲單元290。在其他實施例中,如結合圖5A、5B、5C、6A和6B所描述的,L2高速緩存265和/或加載/存儲單元290可配置為將用于多樣本像素或多樣本像素的一部分的不同樣本的數據的值加以比較并提供信息(例如每像素樣本掩碼或每像素部分樣本掩碼),所述信息指示哪些樣本由分別輸出到加載/存儲單元290或處理單元250的經處理的多樣本數據所代表。
[0040]取決于多樣本模式(即針對多樣本像素所使用的樣本數),加載請求單元285可配置為生成用于部分多樣本像素(即多樣本像素的部分)的編碼狀態。例如,當高速緩存280的高速緩存行是32字節并且多樣本表面針對每個多樣本像素分別存儲4字節的16個樣本時,加載請求單元285可配置為將多樣本像素的8個不同樣本加以比較并確定用于8個樣本的編碼狀態。因此,每個16樣本的多樣本像素可具有兩個編碼狀態,每部分樣本一個編碼狀態。另一方面,當多樣本表面針對每個多樣本像素分別存儲4字節的4個樣本時,加載請求單元285可配置為將用于2個不同多樣本像素的4個不同樣本加以比較并確定用于兩個不同多樣本像素的一個編碼狀態。因此,編碼狀態的粒度可根據由加載請求單元285所作出的比較的數目和/或高速緩存行的大小而變化。
[0041]合并單元255從處理單元250接收用于多樣本像素的經處理的數據和與多樣本像素相對應的編碼狀態。合并單元255可包括合并緩沖區258,經處理的數據存儲到所述合并緩沖區258中。合并緩沖區258可配置為存儲用于一個或多個塊的經處理的數據,或甚至當合并緩沖區258中所需的存儲的量不足夠大以存儲用于整個塊的經處理的數據時存儲用于部分塊的經處理的數據。當合并緩沖區258存儲多于一個塊時,覆蓋跟蹤單元275配置為跟蹤用于每個塊的覆蓋。此外,當多樣本模式針對每個塊可能不同時,合并單元255存儲指示用于每個塊的多樣本模式的信息。當合并緩沖區258中的條目被寫入時,可能使高速緩存280中的相應高速緩存行或高速緩存行的部分無效。
[0042]在一個實施例中,省略了合并緩沖區258,經處理的數據存儲在高速緩存280中。換句話說,合并緩沖區258具體化成高速緩存280內的存儲用于經處理的像素的數據的條目。當接收自處理單元250的編碼狀態是ISPP時,多樣本像素或多樣本像素的一部分的所有樣本具有相同值。當樣本數高時ISPP編碼狀態可用于多樣本像素的一部分。例如,當存儲用于多樣本像素中的所有樣本的數據所需的字節數大于256字節或高速緩存行的大小時。
[0043]在一個實施例中,覆蓋跟蹤單元275針對每個多樣本像素存儲單個位,并且當針對多樣本像素由加載/存儲單元290接收存儲請求時位被設置。當用于塊的多樣本像素的所有位被設置時,已針對塊中的所有多樣本像素接收存儲請求,并且塊是“滿”的。在另一實施例中,覆蓋跟蹤單元275使用計數器以跟蹤用于塊的存儲操作的數目以確定是否已針對塊中的所有多樣本像素接收存儲請求。當塊是“滿”的時,可將用于塊的數據從合并緩沖區258或高速緩存280轉儲到L2高速緩存265。當轉儲塊時,高速緩存280中的存儲用于塊的數據的條目可標記為空并且可清除覆蓋跟蹤單元275中的與塊相對應的位。
[0044]當合并緩沖區258配置為存儲部分塊時,當覆蓋跟蹤單元275指示已針對部分塊中的所有多樣本像素接收存儲操作時,可轉儲用于部分塊的經處理的數據。當轉儲部分塊時,高速緩存280中的存儲用于部分塊的數據的條目可標記為空并且可清除覆蓋跟蹤單元275中的與部分塊相對應的位。存儲用于多樣本像素組的經處理的數據的優點是可針對整個組例如塊將單個編碼狀態輸出到L2高速緩存265,而非針對每個多樣本像素輸出編碼狀態。
[0045]在某些條件下,可在從處理單元250接收用于塊中的所有多樣本像素的經處理的數據之前或者當塊不是“滿”的時,由合并單元255轉儲塊。第一條件是針對“新”塊接收經處理的數據并且在合并緩沖區258中的存儲不可用來合并新塊。第二條件是經處理的數據是用于已針對正被合并的塊所接收的多樣本像素的(即在覆蓋跟蹤單元275中與多樣本像素相關聯的位被設置)。合并單元255可轉儲已針對塊所存儲的經處理的數據以采用新經處理的數據再次開始合并塊。可替代地,合并單元255可將新經處理的數據與存儲在合并緩沖區258中的經處理的數據相比較,并且如果新經處理的數據等于所存儲的經處理的數據,那么合并單元255可丟棄新經處理的數據(或采用新經處理的數據覆寫所存儲的經處理的數據)并避免轉儲塊。當新經處理的數據與所存儲的經處理的數據不匹配時,合并單元255轉儲塊以采用新經處理的數據再次開始合并塊。可替代地,合并單元255可轉儲合并緩沖區258中的被所存儲的經處理的數據所占用的一個或多個條目并將新經處理的數據存儲在該一個或多個條目中。
[0046]當不完整的塊(即塊不是“滿”的)被轉儲時,加載/存儲單元290輸出用于已從處理單元250所接收的多樣本像素的經處理的數據。可由合并單元255使用維持在跟蹤單元275中的塊覆蓋信息以確定哪些多樣本像素被轉儲。當經處理的數據存儲在高速緩存280中(即省略了合并緩沖區258)時,高速緩存未命中發生時可轉儲經處理的像素數據。在一個實施例中,處理單元250配置為并行地處理用于一個塊內的樣本的數據以使加載/存儲單元290能夠將樣本合并到可作為“滿”塊被轉儲到L2高速緩存265的塊中。
[0047]被轉儲的用于多樣本像素的經處理的數據可全部具有相同的編碼狀態或可針對每個多樣本像素將編碼狀態存儲在合并緩沖區258中。用于不完整塊的經處理的數據可隨著單個編碼狀態或隨著用于每個多樣本像素的編碼狀態(每像素編碼狀態)或多樣本像素的部分的編碼狀態被輸出。當所有的多樣本像素具有相同的編碼狀態時,經處理的數據可隨著指示多樣本像素中的哪些被包括在轉儲中的塊掩碼被輸出。當針對每個多樣本像素維持編碼狀態時,合并單元255可配置為檢查用于像素塊的每像素編碼狀態。當所有的每像素編碼狀態相同時,經處理的數據可隨著指示多樣本像素中的哪些被包括在轉儲中的塊掩碼被輸出。
[0048]當每像素編碼狀態針對至少一個多樣本像素不同時,可針對各自的多樣本像素中的每個樣本復制與ISPP編碼狀態相關聯的經處理的數據,并且所有的經處理的數據可隨著塊掩碼和不是ISPP的編碼狀態被輸出。可替代地,可在兩個子轉儲中輸出經處理的數據。第一子轉儲可包括與ISPP的編碼狀態相關聯的經處理的數據和相應的第一塊掩碼。第二子轉儲可包括與不是ISPP的編碼狀態相關聯的經處理的數據和相應的第二塊掩碼。最后,經處理的數據可隨著每像素編碼狀態和塊掩碼被輸出。
[0049]圖2D示出根據一個實施例的、圖2B中示出的加載/存儲單元290的另一示圖。在一個實施例中,如圖2D所示,加載/存儲單元290包括高速緩存281、加載請求單元286、合并單元256和覆蓋跟蹤單元276。加載請求單元286和覆蓋跟蹤單元276實施與先前所描述的加載請求單元285和覆蓋跟蹤單元275大致相同的功能。高速緩存281實施與先前所描述的高速緩存280大致相同的功能。然而,高速緩存281配置為從處理單元250接收經處理的多樣本像素數據。在一個實施例中,當接收自處理單元250的經處理的多樣本像素數據具有ISPP的編碼狀態時,針對多樣本像素或多樣本像素的一部分中的所有樣本來復制經處理的多樣本像素數據并將其存儲在高速緩存281中。當配置為以該方式進行操作時,編碼狀態不需要存儲在高速緩存281中。
[0050]在一個實施例中,合并單元256配置為偵聽(snoop)接收自處理單元250的、對高速緩存281的寫入并對由覆蓋跟蹤單元276所維持的塊覆蓋掩碼進行更新。當塊是“滿”的時,合并單元256從高速緩存281讀取塊數據。當轉儲塊時,高速緩存281的存儲用于塊的數據的條目可標記為空并且可清除覆蓋跟蹤單元276中的與塊相對應的位。
[0051]在一個實施例中,當用于被轉儲的經處理的數據的編碼狀態不是ISPP時,合并單元256配置為分析經處理的數據。合并單元256配置為將用于每個多樣本像素或每個多樣本像素的一部分的不同樣本的經處理的數據的值加以比較,并確定用于每個像素或用于像素的塊的編碼狀態以將編碼狀態提供到L2高速緩存265。合并緩沖區259可配置為在實施分析的同時存儲用于不同樣本的經處理的數據。合并緩沖區259還可配置為隨著分析經處理的數據而存儲用于每個多樣本像素或每個多樣本像素的部分的編碼狀態。
[0052]當合并緩沖區259配置為輸出部分塊時,覆蓋跟蹤單元276指示已針對部分塊中的所有多樣本像素接收存儲操作時可轉儲用于部分塊的經處理的數據。當轉儲部分塊時,高速緩存281中的存儲用于部分塊的數據的條目可標記為空并可清除覆蓋跟蹤單元276中的與部分塊相對應的位。
[0053]在某些條件下,可在從處理單元250接收用于塊中的所有多樣本像素的經處理的數據之前或者當塊不是“滿”的時,由合并單元255轉儲塊。第一條件是針對“新”塊接收經處理的數據并且在高速緩存281中的存儲不可用來合并新塊。第二條件是經處理的數據是用于已針對正被合并的塊所接收的多樣本像素的(即在覆蓋跟蹤單元275中與多樣本像素相關聯的位被設置)。合并單元256可轉儲已針對塊所存儲的經處理的數據以采用新經處理的數據再次開始合并塊。可替代地,合并單元256可轉儲高速緩存281中的由所存儲的經處理的數據所占用的一個或多個條目并將新經處理的數據存儲在該一個或多個條目中。
[0054]當不完整的塊(即塊不是“滿”的)被轉儲時,加載/存儲單元290輸出已從處理單元250所接收的用于多樣本像素的經處理的數據。可由合并單元256使用維持在跟蹤單元276中的塊覆蓋信息以確定哪些多樣本像素被轉儲。當針對高速緩存281發生高速緩存未命中時可轉儲經處理的像素數據。在一個實施例中,處理單元250配置為并行地處理用于一個塊內的樣本的數據以使加載/存儲單元290能夠將樣本合并成可作為“滿”塊被轉儲到L2高速緩存265的塊。
[0055]被轉儲的用于多樣本像素的經處理的數據可全部具有相同的編碼狀態或可針對每個多樣本像素將編碼狀態存儲在合并緩沖區259或高速緩存281中。用于不完整塊的經處理的數據可隨著單個編碼狀態或隨著用于每個多樣本像素的編碼狀態(每像素編碼狀態)或多樣本像素的部分的編碼狀態被輸出。當所有的多樣本像素具有相同的編碼狀態時,經處理的數據可隨著指示多樣本像素中的哪些被包括在轉儲中的塊掩碼被輸出。當針對每個多樣本像素維持編碼狀態時,合并單元256可配置為檢查用于塊的每像素編碼狀態。當所有的每像素編碼狀態相同時,經處理的數據可隨著指示多樣本像素中的哪些被包括在轉儲中的塊掩碼被輸出。
[0056]當每像素編碼狀態針對至少一個多樣本像素不同時,可針對各自的多樣本像素中的每個樣本來復制與ISPP編碼狀態相關聯的經處理的數據,并且所有的經處理的數據可隨著塊掩碼和不是ISPP的編碼狀態被輸出。可替代地,可在兩個子轉儲中輸出經處理的數據。第一子轉儲可包括與ISPP的編碼狀態相關聯的經處理的數據和相應的第一塊掩碼。第二子轉儲可包括與不是ISPP的編碼狀態相關聯的經處理的數據和相應的第二塊掩碼。最后,經處理的數據可隨著每像素編碼狀態和塊掩碼被輸出。
[0057]圖3示出根據一個實施例的、用于處理多樣本數據的方法300的另一流程圖。可通過由圖形處理器所執行的著色器程序來實施方法300中示出的步驟。在步驟301,加載/存儲單元290接收多樣本像素數據。在步驟305,加載/存儲單元290確定與多樣本像素數據相關聯的編碼狀態是否是1SPP,并且如果是,那么在步驟310,加載/存儲單元290將用于每個多樣本像素的或多樣本像素的部分的一個樣本的數據和ISPP的編碼狀態提供到處理單元250。
[0058]在一個實施例中,加載/存儲單元290隨著多樣本像素數據接收用于多樣本像素的編碼狀態。在另一實施例中,如結合圖4B以進一步細節所描述的,加載/存儲單元290配置為實施多樣本像素數據的分析以確定是否可以以ISPP格式對多樣本像素數據進行編碼。在步驟305,當加載/存儲單元290通過分析多樣本像素數據而確定可以以ISPP格式對多樣本像素數據進行編碼時,編碼狀態被設置為1SPP。在步驟330,像素的一個樣本由處理單元250所處理以生成用于像素的所有樣本的經處理的數據。
[0059]在步驟305,如果加載/存儲單元290確定與多樣本像素數據相關聯的編碼狀態不是1SPP,那么在步驟315,加載/存儲單元290可將用于每個多樣本像素的或每個多樣本像素部分的所有樣本的數據和編碼狀態提供到處理單元250。在步驟315,編碼狀態被設置為不是ISPP并與用于每個多樣本像素的或每個多樣本像素部分的所有樣本的數據一起輸出到處理單元250。在步驟335,處理單元250處理用于每個多樣本像素或每個多樣本像素部分的所有樣本的數據。
[0060]在步驟340,處理單元250基于經處理的數據的表現來將編碼狀態設置為ISPP或不是1SPP。在步驟345,處理單元250將用于每個多樣本像素或每個多樣本像素部分的經處理的數據與編碼狀態一起輸出到加載/存儲單元290。經處理的數據可包括用于一個樣本或用于多樣本像素的所有樣本或用于多樣本像素部分的所有樣本的數據。
[0061]圖4A示出根據一個實施例的、用于合并處理多樣本數據的方法400的流程圖。雖然圖4A中示出的步驟被描述為通過加載/存儲單元290來實施,但加載/存儲單元290、L2高速緩存265、或處理單元250中的一個或多個可配置為實施圖4A中示出的步驟。在圖2C中示出的加載/存儲單元290的上下文中描述步驟。也可由圖2D中示出的加載/存儲單元290實施步驟,采用高速緩存281而非合并緩沖區258來存儲經處理的數據。
[0062]在步驟405,加載/存儲單元290從處理單元250接收用于多樣本像素的經處理的數據。在步驟410,加載/存儲單元290檢查隨著經處理的數據由處理單元250所提供的編碼狀態并確定編碼狀態是否是1SPP。當編碼狀態不是ISPP時,在步驟412,加載/存儲單元290將經處理的數據輸出到L2高速緩存265。在另一實施例中,當編碼狀態不是ISPP時,加載/存儲單元290將用于所有樣本的經處理的數據存儲在合并緩沖區258中。當從合并緩沖區258轉儲整個塊時,加載/存儲單元290隨后分析經處理的數據以確定針對每個多樣本像素是否可以僅使用一個樣本來代表用于整個塊的經處理的數據。可應用結合圖4B所描述的技術以實施分析。
[0063]在步驟410,如果編碼狀態是1SPP,那么在步驟415,加載/存儲單元290確定是否因為多樣本像素不在被存儲在合并緩沖區258中的當前塊內而需要新塊以存儲經處理的數據,并且如果否,那么加載/存儲單元290前進到步驟420。如果需要新塊,那么在步驟418,在加載/存儲單元290前進到步驟420之前將用于當前塊的經處理的數據轉儲到L2高速緩存265并在覆蓋跟蹤單元275中清除塊覆蓋。在步驟415,如果不需要新塊以存儲經處理的數據,那么在步驟420,加載/存儲單元290將用于多樣本像素的經處理的數據存儲在合并緩沖區258中。在步驟422,加載/存儲單元290對存儲在覆蓋跟蹤單元275中的塊覆蓋進行更新,并且加載/存儲單元290前進到步驟430。
[0064]在步驟430,加載/存儲單元290確定存儲在合并緩沖區258中的塊是否被完全覆蓋,并且如果是,那么將用于被完全覆蓋的塊的經處理的數據轉儲到L2高速緩存265并在覆蓋跟蹤單元275中清除塊覆蓋,并且加載/存儲單元290終止對在步驟405所接收的過程多樣本像素數據的處置。當合并緩沖區258配置為存儲部分塊而非整個塊時,也可針對部分塊實施結合圖4A所描述的步驟。
[0065]圖4B示出根據一個實施例的、用于實施圖3中示出的方法300的步驟305的方法的流程圖。雖然圖4B中示出的步驟描述為由加載/存儲單元290來實施,但加載/存儲單元290、L2高速緩存265、或處理單元250中的一個或多個可配置為實施圖4B中示出的步驟。
[0066]在步驟440,加載/存儲單元290確定ISPP的編碼狀態是否隨著多樣本像素數據而被接收,并且如果是,那么加載/存儲單元290前進到步驟310。否則,在步驟445,加載/存儲單元290分析多樣本像素數據以確定是否可以以ISPP格式對多樣本像素數據進行編碼。在一個實施例中,加載/存儲單元290將用于每個多樣本像素或多樣本像素的部分的所有樣本的值加以比較,以在將接收自L2高速緩存265的像素數據存儲在高速緩存280中之前確定像素數據的塊是否可每個被單個樣本所代表。在另一實施例中,加載/存儲單元290將用于讀取自高速緩存280的、用于輸出到處理單元250的每個多樣本像素的所有樣本的值加以比較,以在將像素數據輸出到處理單元250之前確定數據是否可每個被單個樣本所代表。在步驟450,如果加載/存儲單元290確定可以以ISPP格式對多樣本像素數據進行編碼,那么加載/存儲單元290前進到步驟310。否則,加載/存儲單元290前進到步驟315。
[0067]當數據針對像素的每個樣本相同時,ISPP編碼狀態可用來減少用于存儲多樣本像素數據的存儲器占用空間,并且讀取、寫入和傳送多樣本像素數據的所消耗的帶寬也減少。此外,在一些情況中,諸如處理單元250的處理單元可配置為處理單個樣本以生成用于單個樣本的經處理的多樣本像素數據,其代表用于多樣本像素的兩個或更多個樣本的、或甚至所有樣本的經處理的多樣本像素數據。
[0068]使用樣本子集的多樣本表面處理
[0069]除了 ISPP和不是ISPP的編碼狀態以外,還可提供或確定這樣的編碼狀態,其允許用于多樣本像素的樣本子集具有相同數據值,但不要求多樣本像素中的所有樣本具有相同數據值。這類編碼狀態稱為子集編碼狀態。換句話說,當編碼狀態是子集時,可存儲用于單個樣本的數據,其代表用于包括單個樣本的多樣本像素的子集中的所有樣本的多樣本像素數據。當可使用子集編碼狀態時,分析多樣本像素數據以標識多樣本像素具有相等數據的樣本的子集。
[0070]每個子集包括至少一個樣本,并且子集的編碼狀態指示哪些樣本被包括在用于多樣本像素的子集中。例如,子集編碼狀態可包括每像素樣本掩碼,所述每像素樣本掩碼指示多樣本像素的、被包括在子集中的樣本。典型地,子集編碼狀態與各自的多樣本像素相關。然而,子集的編碼狀態也可用于多樣本像素數據的整個塊或部分塊。
[0071]圖5A示出根據一個實施例的、圖2B中示出的加載/存儲單元290的另一示圖。在一個實施例中,如圖5A所示,加載/存儲單元290包括高速緩存580、加載請求單元585、合并單元555和覆蓋跟蹤單元575。高速緩存580實施與先前所描述的高速緩存280大致相同的功能,不同之處是存儲在高速緩存中的任何編碼狀態還可包括用于子集編碼狀態的每像素樣本掩碼。
[0072]加載請求單元585至少實施先前所描述的加載請求單元285的功能。加載請求單元585還包括分析單元500,所述分析單元500可配置為分析多樣本像素數據以確定是否可以以ISPP格式對多樣本像素數據進行編碼,如先前所述。此外,分析單元500可配置為分析多樣本像素數據以確定是否可采用子集的編碼狀態對多樣本像素數據進行編碼。更具體地,分析單元500可生成用于每個樣本子集的每像素樣本掩碼,其中子集中的所有樣本可由子集的單個樣本所代表,即子集中的樣本具有相同數據。分析單元500可確定輸出到處理單元250的編碼狀態。在一個實施例中,編碼狀態隨著數據被接收自L2高速緩存265,并且加載請求單元585將編碼狀態與數據一起提供到處理單元250。
[0073]合并單元555至少實施先前所描述的合并單元255的功能。合并單元555從處理單元250接收用于多樣本像素的經處理的數據和與多樣本像素相對應的編碼狀態。合并單元555可包括合并緩沖區558,經處理的數據存儲在所述合并緩沖區558中。當編碼狀態是子集時,合并緩沖區558還可配置為存儲用于樣本子集的每像素樣本掩碼。可替代地,每像素樣本掩碼可存儲在覆蓋跟蹤單元575中并且覆蓋跟蹤單元575可配置為跟蹤多樣本像素覆蓋以及塊(或部分塊)覆蓋。可使用按位(bit-wise) OR操作來歸并多樣本覆蓋掩碼。當在所存儲的、用于多樣本像素的多樣本覆蓋掩碼中的所有位被設置時,多樣本像素被完全覆蓋。然而,如果合并單元555配置為隨著子集的編碼狀態輸出經處理的多樣本像素數據,那么應分開存儲用于每個子集的分開的每像素覆蓋掩碼。在一個實施例中,每像素樣本掩碼隨著用于每個子集的經處理的多樣本像素數據存儲在合并緩沖區558中。
[0074]合并單元555還可包括先前所描述的分析單元500,所述分析單元500可配置為分析多樣本像素數據以確定是否可采用1SPP、不是1SPP、或子集的編碼狀態來對多樣本像素數據進行編碼。分析單元500可確定輸出到L2高速緩存265的編碼狀態。在一個實施例中,編碼狀態隨著數據接收自處理單元250并且合并單元555將編碼狀態與經處理的數據一起提供到L2高速緩存265。
[0075]當針對多樣本像素接收已針對正被合并的塊所接收的經處理的多樣本數據時(即與多樣本像素相關聯的至少一個位在存儲在覆蓋跟蹤單元575中的每像素樣本覆蓋掩碼中被設置),如果新經處理的數據等于所存儲的經處理的數據,那么當用于多樣本像素的編碼狀態是子集時可歸并多樣本數據。否則,新經處理的數據與所存儲的經處理的數據分開存儲,并且存儲在覆蓋跟蹤單元575中的每像素樣本覆蓋掩碼被更新以將新的每像素樣本覆蓋掩碼和所存儲的每像素樣本覆蓋掩碼加以歸并。
[0076]當每像素編碼狀態針對塊中的至少一個多樣本像素不同時,可針對各自的多樣本像素中的每個樣本復制與ISPP編碼狀態相關聯的經處理的數據,并可針對各自的子集中的每個樣本復制與子集編碼狀態相關聯的經處理的數據。隨后所有的經處理的數據可隨著塊掩碼和不是ISPP的編碼狀態被輸出。可替代地,可在兩個或三個子轉儲中輸出經處理的數據。第一子轉儲可包括與ISPP的編碼狀態相關聯的經處理的數據和相應的第一塊掩碼。第二子轉儲可包括與不是ISPP的編碼狀態相關聯的經處理的數據和相應的第二塊掩碼。第三子轉儲可包括與子集的編碼狀態(包括每像素樣本掩碼)相關聯的經處理的數據和相應的第三塊掩碼。最后,經處理的數據可隨著每像素編碼狀態和塊掩碼被輸出,其中用于每個像素的編碼狀態可包括子集的編碼狀態,其包括兩個或更多個每像素樣本掩碼。
[0077]在一個實施例中,合并緩沖區558將經處理的多樣本像素數據存儲為像素(X、y、經處理的數據、每像素樣本掩碼)值的列表。x、y坐標可以是塊相關的。值存儲為元組(tuple)的陣列,其中新傳入的經處理的數據存儲在下一可用索引中而非相對于多樣本像素的X、y位置。這可允許與多樣本像素的不同樣本相對應的、相等的經處理的數據值在合并緩沖區558的相同條目內“歸并”。在一個實施例中,當兩個值在相互的閾值內時可歸并數據值。在一個實施例中,可針對每個屬性指定不同閾值。因此可使用與用于歸并z值不同的閾值來歸并顏色值。在一個實施例中,合并緩沖區558可實現為內容可尋址存儲器(CAM)0當轉儲合并緩沖區558時,可輸出元組列表以發送到L2高速緩存265,或者存儲在合并緩沖區558中的經處理的數據可擴展到不是ISPP編碼狀態的格式。
[0078]圖5B示出根據一個實施例的、圖2B中示出的加載/存儲單元290的另一示圖。在一個實施例中,如圖5B所示,加載/存儲單元290包括高速緩存581、加載請求單元586、合并單元556和覆蓋跟蹤單元576。加載請求單元586和覆蓋跟蹤單元576實施與先前所描述的加載請求單元585和覆蓋跟蹤單元575大致相同的功能。高速緩存581實施與先前所描述的高速緩存580大致相同的功能。然而,高速緩存581配置為從處理單元250接收經處理的多樣本像素數據。在一個實施例中,當接收自處理單元250的經處理的多樣本像素數據具有ISPP的編碼狀態時,針對多樣本像素或多樣本像素的部分中的所有樣本復制經處理的多樣本像素數據并將其存儲在高速緩存581中。類似地,當接收自處理單元250的經處理的多樣本像素數據具有子集的編碼狀態時,針對多樣本像素的子集中的所有樣本復制經處理的多樣本像素數據并將其存儲在高速緩存581中。當配置為以該方式進行操作時,編碼狀態不需要存儲在高速緩存581中。
[0079]在一個實施例中,合并單元558配置為偵聽接收自處理單元250的、對高速緩存581的寫入并對由覆蓋跟蹤單元576所維持的塊覆蓋掩碼和每像素樣本覆蓋掩碼進行更新。當塊是“滿”的時,合并單元556從高速緩存581讀取塊數據。當轉儲塊時,高速緩存581的存儲用于塊的數據的條目可標記為空并且可清除覆蓋跟蹤單元576中的與塊相對應的位。
[0080]在一個實施例中,當用于被轉儲的經處理的數據的編碼狀態不是ISPP時,合并單元256、合并單元256內的分析單元500配置為分析經處理的數據。分析單元500可配置為將用于每個多樣本像素的不同樣本的經處理的數據的值加以比較,并確定用于每個像素或用于像素的塊的編碼狀態以將編碼狀態提供到L2高速緩存265。合并緩沖區559可配置為在實施分析的同時存儲用于不同樣本的經處理的數據。合并緩沖區559還可配置為隨著經處理的數據被分析而存儲用于每個多樣本像素或每個多樣本像素的部分的編碼狀態。
[0081]當合并緩沖區559配置為輸出部分塊時,覆蓋跟蹤單元576指示已針對部分塊中的所有多樣本像素的所有樣本接收存儲操作時可轉儲用于部分塊的經處理的數據。當轉儲部分塊時,高速緩存581中的存儲用于部分塊的數據的條目可標記為空并可清除覆蓋跟蹤單元576中的與部分塊相對應的位。
[0082]在某些條件下,可在從處理單元250接收用于塊中的所有多樣本像素的經處理的數據之前或者當塊不是“滿”的時,由合并單元556轉儲塊。第一條件是針對“新”塊接收經處理的數據并且在高速緩存581中的存儲不可用來合并新塊。第二條件是經處理的數據用于已針對正被合并的塊所接收的多樣本像素的樣本(即在覆蓋跟蹤單元576中與多樣本像素的樣本相關聯的位被設置)。合并單元556可轉儲已針對塊所存儲的經處理的數據以采用新經處理的數據再次開始合并塊。可替代地,合并單元556可轉儲高速緩存581中的由所存儲的經處理的數據所占用的一個或多個條目并將新經處理的數據存儲在該一個或多個條目中。
[0083]當不完整的塊(即塊不是“滿”的)被轉儲時,加載/存儲單元290輸出用于已從處理單元250所接收的多樣本像素的經處理的數據。可由合并單元556使用維持在跟蹤單元576中的塊覆蓋信息以確定哪些多樣本像素被轉儲。當針對高速緩存581發生高速緩存未命中時可轉儲經處理的像素數據。在一個實施例中,處理單元250配置為并行地處理用于一個塊內的樣本的數據以使加載/存儲單元290能夠將樣本合并成可作為“滿”塊被轉儲到L2高速緩存265的塊。
[0084]用于被轉儲的多樣本像素的經處理的數據可全部具有相同的編碼狀態或可針對每個多樣本像素或針對多樣本像素的每個樣本子集將編碼狀態存儲在合并緩沖區559或高速緩存581中。用于不完整塊的經處理的數據可隨著單個編碼狀態或隨著用于每個多樣本像素的編碼狀態(每像素編碼狀態)或用于多樣本像素的樣本子集的編碼狀態被輸出。當所有的多樣本像素具有相同的編碼狀態時,經處理的數據可隨著指示多樣本像素中的哪些被包括在轉儲中的塊掩碼被輸出。當針對每個多樣本像素維持編碼狀態時,合并單元556可配置為檢查用于塊的每像素或每子集編碼狀態。當所有的每像素編碼狀態相同時,經處理的數據可隨著指示多樣本像素中的哪些被包括在轉儲中的塊掩碼被輸出。當編碼狀態是子集時,將由合并單兀556輸出每像素樣本掩碼。
[0085]當每像素編碼狀態針對塊中的至少一個多樣本像素不同時,可針對各自的多樣本像素中的每個樣本復制與ISPP編碼狀態相關聯的經處理的數據,并可針對各自的子集中的每個樣本復制與子集編碼狀態相關聯的經處理的數據。隨后所有的經處理的數據可隨著塊掩碼和不是ISPP的編碼狀態被輸出。當每像素編碼狀態針對塊中的至少一個多樣本像素不同時(即子集和1SPP),與ISPP編碼狀態相關聯的經處理的數據可編碼為樣本子集。可替代地,可在兩個或三個子轉儲中輸出經處理的數據。第一子轉儲可包括與ISPP的編碼狀態相關聯的經處理的數據和相應的第一塊掩碼。第二子轉儲可包括與不是ISPP的編碼狀態相關聯的經處理的數據和相應的第二塊掩碼。第三子轉儲可包括與子集的編碼狀態(包括每像素樣本掩碼)相關聯的經處理的數據和相應的第三塊掩碼。最后,經處理的數據可隨著每像素編碼狀態和塊掩碼被輸出,其中用于每個像素的編碼狀態可包括子集的編碼狀態,其包括兩個或更多個每像素樣本掩碼。
[0086]圖5C示出根據一個實施例的、在多樣本處理期間所使用的各處理單元和互連的示圖520。L2高速緩存265實施L2高速緩存265的功能并還可包括一個或多個分析單元500以分析多樣本像素數據并確定與多樣本像素數據相關聯的編碼狀態。處理單元550實施處理單元250的功能并還可包括分析單元500,所述分析單元500配置為在處理接收自加載/存儲單元290的多樣本像素數據之前分析多樣本像素數據并確定與多樣本像素數據相關聯的編碼狀態。
[0087]圖6A示出根據一個實施例的、用于處理多樣本數據的方法600的另一流程圖。可通過由圖形處理器所執行的著色器程序來實施方法600中示出的步驟。在步驟601,加載/存儲單元290接收多樣本像素數據。在步驟603,加載/存儲單元290確定與多樣本像素數據相關聯的編碼狀態是否是1SPP,并且如果是,那么在步驟608,加載/存儲單元290將用于每個多樣本像素的或多樣本像素的部分的一個樣本的數據和ISPP的編碼狀態提供到處理單元250。
[0088]在一個實施例中,加載/存儲單元290隨著多樣本像素數據接收用于多樣本像素的編碼狀態。在另一實施例中,加載/存儲單元290包括分析單元500并配置為實施多樣本像素數據的分析以確定多樣本像素數據是否可以與ISPP或子集的編碼狀態相關聯。在步驟603,當加載/存儲單元290通過分析多樣本像素數據確定可以以ISPP格式對多樣本像素數據進行編碼時,編碼狀態被設置為1SPP。在步驟614,像素的一個樣本由處理單元250所處理以生成用于像素或像素部分的所有樣本的經處理的數據。
[0089]在步驟603,如果加載/存儲單元290確定與多樣本像素數據相關聯的編碼狀態不是1SPP,那么在步驟606,加載/存儲單元290確定多樣本像素數據是否可以與子集的編碼狀態相關聯。在步驟616,當加載/存儲單元290通過分析多樣本像素數據確定可采用子集的編碼狀態對多樣本像素數據進行編碼時,編碼狀態被設置為子集并且相應的每像素樣本掩碼被包括在用于每個樣本子集的編碼狀態中。在步驟616,編碼狀態與用于每個樣本子集的一個樣本的數據一起被輸出到處理單元250。在步驟618,像素的一個樣本由處理單元250所處理以生成用于樣本子集的所有樣本的經處理的數據。
[0090]在步驟606,如果加載/存儲單元290確定與多樣本像素數據相關聯的編碼狀態不是子集,那么在步驟623,加載/存儲單元290可將用于每個多樣本像素的或每個多樣本像素部分的所有樣本的數據和編碼狀態提供到處理單元250。在步驟623,編碼狀態被設置為不是ISPP并與用于每個多樣本像素的或每個多樣本像素部分的所有樣本的數據一起輸出到處理單元250。在步驟626,處理單元250處理用于每個多樣本像素或每個多樣本像素部分的所有樣本的數據。
[0091]在步驟632,處理單元250基于經處理的數據的表現將編碼狀態設置為1SPP、子集或不是1SPP。在步驟634,處理單元250將用于每個多樣本像素、每個多樣本像素部分、或每個樣本子集的經處理的數據與編碼狀態一起輸出到加載/存儲單元290。經處理的數據可包括用于多樣本像素的一個樣本或所有樣本、每個樣本子集的一個樣本、用于多樣本像素部分的所有樣本的一個樣本、或多樣本像素的所有樣本的數據。
[0092]圖6B示出根據一個實施例的、用于合并處理多樣本數據的方法635的流程圖。雖然圖6B中示出的步驟被描述為通過加載/存儲單元290來實施,但加載/存儲單元290、L2高速緩存265 (或565)、或處理單元250 (或550)中的一個或多個可配置為實施圖6B中示出的步驟。在圖5A中示出的加載/存儲單元290的上下文中描述步驟。也可由圖5B中示出的加載/存儲單元290實施步驟,采用高速緩存581而非合并緩沖區558來存儲經處理的數據。
[0093]在步驟605,加載/存儲單元290從處理單元250接收用于多樣本像素的經處理的數據。在步驟607,加載/存儲單元290確定是否因為多樣本像素不在被存儲在合并緩沖區558中的當前塊內而需要新塊以存儲經處理的數據,并且如果否,那么加載/存儲單元290前進到步驟610。如果需要新塊,那么在步驟609,在加載/存儲單元290前進到步驟610之前將用于當前塊的經處理的數據轉儲到L2高速緩存265并在覆蓋跟蹤單元575中清除塊覆蓋。
[0094]在步驟610,加載/存儲單元290檢查由處理單元250隨著經處理的數據所提供的編碼狀態并確定編碼狀態是否是1SPP。當編碼狀態不是ISPP時,在步驟640,加載/存儲單元290確定經處理的數據是否可編碼為一個或多個子集。加載/存儲單元290可使用分析單元500實施對經處理的數據的分析以確定編碼狀態。如果經處理的數據可編碼為一個或多個子集,那么在步驟645,針對每個子集生成每像素樣本掩碼。在步驟650,加載/存儲單元290確定合并緩沖區558中的條目是否與用于多樣本像素的X、y坐標(或其他唯一標識符)相匹配。如果在步驟650找到相匹配的條目,那么在步驟655,加載/存儲單元290將經處理的數據歸并到相匹配的條目中。否則,在步驟660,加載/存儲單元290將經處理的數據存儲在合并緩沖區558的空條目中。
[0095]在步驟640,如果加載/存儲單元290確定無法編碼一個或多個子集,那么在步驟660,加載/存儲單元290將經處理的數據存儲在合并緩沖區558的空條目中。當經處理的數據無法編碼為ISPP或子集時,編碼狀態不是1SPP,并針對多樣本像素存儲用于每個樣本的經處理的數據。在另一實施例中,當編碼狀態不是ISPP時加載/存儲單元290將經處理的數據輸出到L2高速緩存265。
[0096]在步驟610,如果編碼狀態是1SPP,那么在步驟620,加載/存儲單元290將用于多樣本像素的經處理的數據存儲在合并緩沖區558中。在步驟665,加載/存儲單元290對存儲在覆蓋跟蹤單元575中的塊覆蓋進行更新。在步驟670,加載/存儲單元290確定存儲在合并緩沖區558中的塊是否被完全覆蓋,并且如果是,那么將用于被完全覆蓋的塊的經處理的數據轉儲到L2高速緩存265并在覆蓋跟蹤單元575中清除塊覆蓋。隨后加載/存儲單元290終止對在步驟605所接收的過程多樣本像素數據的處置。當合并緩沖區558配置為存儲部分塊而非整個塊時,也可針對部分塊實施結合圖6B所描述的步驟。
[0097]當數據針對多樣本像素的樣本的一個或多個子集相同時,子集編碼狀態可用來減少用于存儲多樣本像素數據的存儲器占用空間,并且讀取、寫入和傳送多樣本像素數據的所消耗的帶寬也減少。此外,在一些情況中,諸如處理單元250或550的處理單元可配置為處理單個樣本以生成用于單個樣本的經處理的多樣本像素數據,其代表用于多樣本像素的兩個或更多個樣本的、或甚至所有樣本的經處理的多樣本像素數據。
[0098]多樣本加載和存儲指令
[0099]如先前所述,可支持多樣本加載指令(SULD.MS),其返回指示已知哪些樣本具有相同值的樣本掩碼。多樣本加載指令還指定多樣本像素的地址或坐標。在一個實施例中,多樣本加載指令返回指示多樣本像素是否具有不是ISPP的編碼狀態(即針對多樣本像素的每個樣本存儲分開的值)的斷言。在另一實施例中,斷言指示多樣本像素的編碼狀態,例如1SPP、不是1SPP、或子集。
[0100]在一個實施例中,到多樣本加載指令的輸入包括像素地址和與多樣本像素的一個樣本相對應的樣本標識符。除了返回用于一個樣本的數據之外,多樣本加載指令還返回整數樣本掩碼,所述整數樣本掩碼指示已知多樣本像素中的哪些其他樣本具有與該一個樣本相同的數據。可定義多樣本加載指令使得可伺機計算樣本掩碼。例如,如果已知多樣本像素是具有ISPP的編碼狀態的塊的一部分,那么樣本掩碼將指示即多樣本像素的所有樣本具有相同數據。當多樣本像素的編碼狀態是子集時,樣本掩碼將指示哪些樣本被包括在相同子集中作為與指定的樣本標識符相對應的樣本。加載/存儲單元290或L2高速緩存265可配置為分析多樣本像素數據,并生成子集相對應的每像素樣本掩碼,所述子集包括與指定的樣本標識符相對應的樣本。所生成的每像素樣本掩碼可作為樣本掩碼由多樣本加載指令返回。在一個實施例中,加載/存儲單元290或L2高速緩存265分析存儲在高速緩存行中的其他樣本以生成樣本掩碼,因此當用于所有樣本的數據不能存儲在單個高速緩存行中時樣本掩碼可以不代表子集中的所有樣本。
[0101]此外,可支持接受樣本掩碼的多樣本存儲指令(SUST.MS ),其中隨多樣本存儲指令所提供的值被存儲到根據指定的樣本掩碼所使能的多樣本像素的每個樣本。在一個實施例中,指示完全覆蓋的像素的樣本掩碼可以以ISPP格式存儲,如圖6B所示。在另一實施例中,指示被部分覆蓋的像素的樣本掩碼可以以子集編碼來存儲。
[0102]表I所示的代碼示出可如何在著色器程序中使用SUST.MS和SULD.MS指令以計算和存儲像素中的被基元所覆蓋的樣本值的函數的示例。
[0103]表I
【權利要求】
1.一種方法,包括: 接收多樣本像素數據; 分析所述多樣本像素數據以標識多樣本像素的具有相等數據的樣本的子集,使得用于子集中的一個樣本的數據代表用于所述子集中的所有樣本的多樣本像素數據;以及 生成指示所述多樣本像素的哪些樣本被包括在所述子集的每一個中的編碼狀態。
2.根據權利要求1所述的方法,進一步包括: 分析所述多樣本像素數據以標識所述多樣本像素的所有所述樣本具有相等數據,使得用于所述多樣本像素的一個樣本的數據代表用于所述多樣本像素的所有樣本的多樣本像素數據;以及 生成指示所述多樣本像素的所有所述樣本被所述多樣本像素的一個樣本所代表的所述編碼狀態。
3.根據權利要求1所述的方法,進一步包括: 分析所述多樣本像素數據以標識所述多樣本像素的至少一部分的所有所述樣本具有相等數據,使得用于所述多樣本像素的一個樣本的數據代表用于所述多樣本像素的所述至少一部分的所有樣本的多樣本像素數據;以及 生成指示所述多樣本像素的所述至少一部分的所有所述樣本被所述多樣本像素的一個樣本所代表的所述編碼狀 態。
4.根據權利要求1所述的方法,所述多樣本像素數據代表顏色值。
5.根據權利要求1所述的方法,所述多樣本像素數據代表深度值。
6.根據權利要求1所述的方法,進一步包括處理用于所述一個樣本的所述數據以生成用于所述一個樣本的經處理的數據,所述經處理的數據代表用于所述子集中的所有樣本的經處理的多樣本像素數據。
7.根據權利要求6所述的方法,進一步包括將用于所述一個樣本的所述經處理的多樣本像素數據和所述編碼狀態存儲在多樣本緩沖區中。
8.根據權利要求1所述的方法,進一步包括: 將所述多樣本像素數據存儲在緩沖區條目中;以及 接收用于所述多樣本像素的樣本的附加子集的一個樣本的附加多樣本像素數據。
9.根據權利要求8所述的方法,進一步包括: 確定所述附加多樣本像素數據與存儲在所述緩沖區條目中的所述多樣本像素數據相等;以及 將所述附加多樣本像素數據歸并到所述緩沖區條目中。
10.根據權利要求8所述的方法,進一步包括: 確定所述附加多樣本像素數據在存儲在所述緩沖區條目中的所述多樣本像素數據的閾值內;以及 將所述附加多樣本像素數據歸并到所述緩沖區條目中。
11.根據權利要求1所述的方法,進一步包括: 將所述多樣本像素數據存儲在緩沖區中;以及 存儲每像素樣本掩碼,所述每像素樣本掩碼指示所述多樣本像素的被包括在所述子集中的所述樣本。
12.根據權利要求11所述的方法,進一步包括: 確定用于塊中的所有所述多樣本像素的所有所述樣本的數據是否存儲在所述緩沖區中;以及 當所述塊中的所有所述多樣本像素的所有所述樣本存儲在所述緩沖區中時從所述緩沖區轉儲所述數據。
13.根據權利要求1所述的方法,進一步包括: 接收多樣本存儲指令,所述多樣本存儲指令指定用于多樣本像素的單個樣本的數據和樣本掩碼;以及 將用于所述單個樣本的所述數據存儲到所述多樣本像素的根據所述樣本掩碼所使能的每個樣本。
14.一種非暫時性計算機可讀存儲介質,其存儲指令,所述指令當由處理器所執行時,使所述處理器實施步驟,包括: 接收所述多樣本像素數據; 分析所述多樣本像素數據以標識多樣本像素的具有相等數據的樣本的子集,使得用于子集中的一個樣本的數據代表用于所述子集中的所有樣本的多樣本像素數據;以及 生成指示所述多樣本像素的哪些樣本被包括在所述子集的每一個中的編碼狀態。
15.—種系統,包括: 存儲器,其存儲多樣本像素數據;以及 分析單元,其耦連在所述存儲器和處理單元之間,并配置為: 接收多樣本像素數據; 分析所述多樣本像素數據以標識多樣本像素的具有相等數據的樣本的子集,使得用于子集中的一個樣本的數據代表用于所述子集中的所有樣本的多樣本像素數據;以及 生成指示所述多樣本像素的哪些樣本被包括在所述子集的每一個中的編碼狀態。
16.根據權利要求15所述的系統,其中所述分析單元進一步配置為: 分析所述多樣本像素數據以標識所述多樣本像素的所有所述樣本具有相等數據,使得用于所述多樣本像素的一個樣本的數據代表用于所述多樣本像素的所有樣本的多樣本像素數據;以及 生成指示所述多樣本像素的所有所述樣本被所述多樣本像素的一個樣本所代表的所述編碼狀態。
17.根據權利要求15所述的系統,其中所述分析單元進一步配置為: 分析所述多樣本像素數據以標識所述多樣本像素的至少一部分的所有所述樣本具有相等數據,使得用于所述多樣本像素的一個樣本的數據代表用于所述多樣本像素的所述至少一部分的所有樣本的多樣本像素數據;以及 生成指示所述多樣本像素的所述至少一部分的所有所述樣本被所述多樣本像素的一個樣本所代表的所述編碼狀態。
18.根據權利要求15所述的系統,其中所述分析單元駐留在加載/存儲單元、高速緩存和處理單元中的一個或多個內。
19.根據權利要求15所述的系統,其中所述部分與所述多樣本像素的存儲在單個高速緩存行中的樣本數相對應。
20.根據權利要求15所述的系統,進一步包括加載/存儲單元,所述加載/存儲單元配置為: 接收多樣本存儲指令,所述多樣本存儲指令指定用于多樣本像素的單個樣本的數據和樣本掩碼;以及
在所述存儲器中將用于所述單個樣本的所述數據存儲到所述多樣本像素的根據所述樣本掩碼所使能的每個樣本。
【文檔編號】G06T5/00GK104050633SQ201310745968
【公開日】2014年9月17日 申請日期:2013年12月30日 優先權日:2013年3月15日
【發明者】亞歷山大·列維·明金, 亨利·帕爾德·莫爾頓, 尤里·烏拉爾斯基, 埃里克·布雷恩·盧姆, 戴爾·L·柯克蘭, 史蒂文·詹姆斯·海因里希, 魯伊·曼紐爾·巴斯托斯, 埃米特·M·克里加里夫, 杰弗里·艾倫·博爾茲, 泰森·伯格蘭, 帕特里克·R·布勞萬 申請人:輝達公司