国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      多分辨率一致光柵化的制作方法

      文檔序號:6527066閱讀:288來源:國知局
      多分辨率一致光柵化的制作方法
      【專利摘要】用于多分辨率一致光柵化的技術,在其中設定單元針對通用分辨率計算通用邊緣等式。光柵化器基于邊緣等式評估針對兩個不同分辨率的覆蓋數據。光柵化器評估用于不同有效像素大小——大像素大小和小像素大小的覆蓋數據??蛇x地,光柵化器可通過實施保守光柵化以確定用于大像素的覆蓋數據來確定覆蓋數據的第一集合。可選地,光柵化器可隨后通過實施用于小像素的標準光柵化來確定覆蓋數據的第二集合??蛇x地,對于覆蓋數據的第二集合,光柵化器可僅對在評估為被覆蓋的覆蓋數據的第一集合中的大像素內的小像素進行評估。
      【專利說明】多分辨率一致光柵化【技術領域】
      [0001]本發(fā)明的實施例總地涉及三維圖形處理管線,并且更具體地,涉及多分辨率一致光柵化。
      【背景技術】
      [0002]圖像處理管線將典型地與三維對象相關聯(lián)的輸入圖形數據轉換成與二維表面相關聯(lián)的像素數據。在常規(guī)的實現(xiàn)方案中,圖形處理管線的世界空間部分負責在輸入圖形數據被轉換成像素數據之前處理輸入圖形數據,其通常由三角形和相關頂點的集合所組成。圖形處理管線的屏幕空間部分負責處理經轉換的像素數據并生成最終像素值用于顯示。
      [0003]圖形處理管線中的多級(stage)中的一個級是光柵化級,其典型地涉及將由圖形處理管線的世界空間部分所處理的圖形數據轉換成像素數據。光柵化可涉及生成描述在管線的世界空間部分所處理的三角形邊緣的邊緣等式、確定用于那些三角形的覆蓋信息并計算用于由三角形所覆蓋像素和片段的屬性值。在光柵化中所涉及的計算一般是采用固定分數像素精度所正常實施的定點計算。因此,定點光柵化計算的結果可被認為是“對齊”(snap)到柵格,此處柵格的方格(box)與分數像素大小的方格相對應。
      [0004]在許多實現(xiàn)方案中,圖形處理管線可以以不同的分辨率來光柵化相同的三維對象。例如,可首先以低分辨率來光柵化三角形以做出關于三角形的某些確定,諸如表面的哪些一般部分被三角形所覆蓋。隨后可以較高分辨率來光柵化三角形以生成圖像數據用于顯示。然而,以較低分辨率所進行的光柵化一般提供“對齊”到比以較高分辨率所進行的光柵化粗糙的柵格的結果。因此,較低分辨率光柵化可產生與較高分辨率光柵化的覆蓋結果不適當對準的覆蓋結果。例如,如果基于低分辨率光柵化的結果來分配存儲器,則可能由于較低分辨率光柵化的結果對齊到較粗糙柵格的事實而使存儲器被超額分配或分配不足。更具體地,存儲器可能被分配給不需要分配的塊,或者存儲器可能未能被分配給事實上需要分配的塊。
      [0005]如前述所示,本領域所需要的是以不同分辨率來光柵化圖形數據的更有效的方式。

      【發(fā)明內容】

      [0006]本發(fā)明的一個實施例闡述了用于光柵化對象的方法。方法包括確定與通用柵格相對應的通用分辨率。方法進一步包括基于所述通用分辨率和表示與所述對象相關聯(lián)的幾何數據的數據來計算通用邊緣等式。方法進一步包括基于所述通用邊緣等式和第一分辨率來確定包括多個覆蓋大像素的大像素覆蓋數據。
      [0007]其他實施例包括但不限于包括使能處理單元實現(xiàn)所公開的方法的一個或多個方面的指令的計算機可讀介質。其他實施例包括但不限于包括配置為實現(xiàn)所公開的方法的一個或多個方面的處理單元的子系統(tǒng),以及配置為實現(xiàn)所公開的方法的一個或多個方面的計
      算設備。【專利附圖】

      【附圖說明】
      [0008]因此,可以詳細地理解本發(fā)明的上述特征,并且可以參考實施例得到對如上面所簡要概括的本發(fā)明更具體的描述,其中一些實施例在附圖中示出。然而,應當注意的是,附圖僅示出了本發(fā)明的典型實施例,因此不應被認為是對其范圍的限制,本發(fā)明可以具有其他等效的實施例。
      [0009]圖1是示出了配置為實現(xiàn)本發(fā)明的一個或多個方面的計算機系統(tǒng)的框圖;
      [0010]圖2是根據本發(fā)明的一個實施例的、用于圖1的計算機系統(tǒng)的并行處理子系統(tǒng)的框圖;
      [0011]圖3A是根據本發(fā)明的一個實施例的、圖2的PTO之一內的分區(qū)單元的框圖;
      [0012]圖3B是根據本發(fā)明的一個實施例的、駐留在圖2的通用處理集群(GPC)內的流多處理器(SM)的一部分的框圖;
      [0013]圖4是根據本發(fā)明的一個實施例的、圖2的通用處理集群(GPC)中的一個或多個可經配置以實現(xiàn)的圖形處理管線的概念圖;
      [0014]圖5示出了根據本發(fā)明的一個實施例的、在低分辨率區(qū)域中的未對齊基元和對齊基元的示例;
      [0015]圖6A示出了根據本發(fā)明的一個實施例的、在高分辨率區(qū)域中的未對齊基元和對齊基元的示例;
      [0016]圖6B示出了根據本發(fā)明的一個實施例的、經由多分辨率一致光柵化所光柵化的基元的大像素覆蓋的示例;
      [0017]圖6C示出了根據本發(fā)明的一個實施例的、經由多分辨率一致光柵化所光柵化的基元的小像素覆蓋的示例;以及
      [0018]圖7是根據本發(fā)明的一個實施例的、用于實施多分辨率一致光柵化的方法步驟的流程圖。
      【具體實施方式】
      [0019]在下面的描述中,將闡述大量的具體細節(jié)以提供對本發(fā)明更透徹的理解。然而,本領域的技術人員應該清楚,本發(fā)明可以在沒有一個或多個這些具體細節(jié)的情況下得以實施。在其他實例中,未描述公知特征以避免對本發(fā)明造成混淆。
      [0020]系統(tǒng)概述
      [0021]圖1為示出了配置為實現(xiàn)本發(fā)明的一個或多個方面的計算機系統(tǒng)100的框圖。計算機系統(tǒng)100包括經由可以包括存儲器橋105的互連路徑通信的中央處理單元(CPU) 102和系統(tǒng)存儲器104。存儲器橋105可以是例如北橋芯片,經由總線或其他通信路徑106 (例如超傳輸(HyperTransport)鏈路)連接到輸入/輸出(I/O)橋107。I/O橋107,其可以是例如南橋芯片,從一個或多個用戶輸入設備108 (例如鍵盤、鼠標)接收用戶輸入并且經由通信路徑106和存儲器橋105將該輸入轉發(fā)到CPU102。并行處理子系統(tǒng)112經由總線或第二通信路徑113 (例如外圍部件互連(PCI)Express、加速圖形端口或超傳輸鏈路)耦連到存儲器橋105 ;在一個實施例中,并行處理子系統(tǒng)112是將像素傳遞到顯示設備110的圖形子系統(tǒng),所述顯示設備110可以是任何常規(guī)的陰極射線管、液晶顯示器、發(fā)光二極管顯示器等等。系統(tǒng)盤114也連接到I/O橋107并可配置為存儲內容和應用和數據用于由CPU102和并行處理子系統(tǒng)112使用。系統(tǒng)盤114提供用于應用和數據的非易失性存儲并可包括固定或可移動硬盤驅動器、閃速存儲器設備以及壓縮光盤只讀存儲器(CD-ROM)、數字通用光盤ROM (DVD-ROM)、藍光、高清晰度DVD (HD-DVD)或其他磁、光、或固態(tài)存儲設備。
      [0022]交換器116提供I/O橋107與諸如網絡適配器118以及各種插卡120和121的其他部件之間的連接。其他部件(未明確示出),包括通用串行總線(USB)或其他端口連接、壓縮光盤(CD)驅動器、數字通用光盤(DVD)驅動器、膠片錄制設備及類似部件,也可以連接到I/O橋107。圖1所示的各種通信路徑包括具體命名的通信路徑106和113可以使用任何適合的協(xié)議實現(xiàn),諸如PC1-EXpreSS、AGP (加速圖形端口)、超傳輸或者任何其他總線或點到點通信協(xié)議,并且如本領域已知的,不同設備間的連接可使用不同協(xié)議。
      [0023]在一個實施例中,并行處理子系統(tǒng)112包含經優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構成圖形處理單元(GPU)。在另一個實施例中,并行處理子系統(tǒng)112包含經優(yōu)化用于通用處理的電路,同時保留底層(underlying)的計算架構,本文將更詳細地進行描述。在又一個實施例中,可以將并行處理子系統(tǒng)112與一個或多個其他系統(tǒng)元件集成在單個子系統(tǒng)中,諸如結合存儲器橋105、CPU102以及I/O橋107,以形成片上系統(tǒng)(SoC)。
      [0024]應該理解,本文所示系統(tǒng)是示例性的,并且變化和修改都是可能的。連接拓撲,包括橋的數目和布置、CPU102的數目以及并行處理子系統(tǒng)112的數目,可根據需要修改。例如,在一些實施例中,系統(tǒng)存儲器104直接連接到CPU102而不是通過橋,并且其他設備經由存儲器橋105和CPU102與系統(tǒng)存儲器104通信。在其他替代性拓撲中,并行處理子系統(tǒng)112連接到I/O橋107或直接連接到CPU102,而不是連接到存儲器橋105。而在其他實施例中,I/O橋107和存儲器橋 105可能被集成到單個芯片上而不是作為一個或多個分立設備存在。大型實施例可以包括兩個或更多個CPU102以及兩個或更多個并行處理子系統(tǒng)112。本文所示的特定部件是可選的;例如,任何數目的插卡或外圍設備都可能得到支持。在一些實施例中,交換器116被去掉,網絡適配器118和插卡120、121直接連接到I/O橋107。
      [0025]圖2示出了根據本發(fā)明的一個實施例的并行處理子系統(tǒng)112。如所示的,并行處理子系統(tǒng)112包括一個或多個并行處理單元(PI3U) 202,每個并行處理單元202都耦連到本地并行處理(PP)存儲器204。通常,并行處理子系統(tǒng)包括U個PPU,其中U≥I。(本文中,類似對象的多個實例需要時以標識對象的參考數字和標識實例的括號中的數字來表示。)PPU202和并行處理存儲器204可使用一個或多個集成電路設備來實現(xiàn),諸如可編程處理器、專用集成電路(ASIC)或存儲器設備,或者以任何其他技術可行的方式來實現(xiàn)。
      [0026]再參考圖1以及圖2,在一些實施例中,并行處理子系統(tǒng)112中的一些或所有PPU202是具有渲染管線的圖形處理器,其可以配置為實施與下述相關的各種操作:經由存儲器橋105和第二通信路徑113從CPU102和/或系統(tǒng)存儲器104所供應的圖形數據生成像素數據,與本地并行處理存儲器204 (可被用作圖形存儲器,包括例如常規(guī)幀緩沖區(qū)(buffer))交互以存儲和更新像素數據,傳遞像素數據到顯示設備110等等。在一些實施例中,并行處理子系統(tǒng)112可包括一個或多個作為圖形處理器而操作的PPU202以及一個或多個用于通用計算的其他PPU202。這些PTO可以是同樣的或不同的,并且每個PPU可具有專用并行處理存儲器設備或不具有專用并行處理存儲器設備。并行處理子系統(tǒng)112中的一個或多個PPU202可輸出數據到顯示設備110,或者并行處理子系統(tǒng)112中的每個PPU202可輸出數據到一個或多個顯示設備110。
      [0027]在操作中,CPU102是計算機系統(tǒng)100的主處理器,控制和協(xié)調其他系統(tǒng)部件的操作。具體地,CPU102發(fā)出控制PPU202的操作的命令。在一些實施例中,CPU102寫入用于每個PPU202的命令流到數據結構中(在圖1或圖2中未明確示出),該數據結構可位于系統(tǒng)存儲器104、并行處理存儲器204、或CPU102和PPU202都可訪問的其他存儲位置中。將指向每個數據結構的指針寫到入棧緩沖區(qū)(pushbuffer)以發(fā)起對數據結構中的命令流的處理。PPU202從一個或多個入棧緩沖區(qū)讀取命令流,然后相對于CPU102的操作異步地執(zhí)行命令??梢越浻稍O備驅動程序103由應用程序為每個入棧緩沖區(qū)指定執(zhí)行優(yōu)先級以控制對不同入棧緩沖區(qū)的調度。
      [0028]現(xiàn)在返回參考圖2和圖1,每個PPU202包括經由連接到存儲器橋105 (或者,在一個替代性實施例中,直接連接到CPU102)的通信路徑113與計算機系統(tǒng)100的其余部分通信的I/O (輸入/輸出)單元205。PPU202到計算機系統(tǒng)100的其余部分的連接也可以變化。在一些實施例中,并行處理子系統(tǒng)112可實現(xiàn)為可插入到計算機系統(tǒng)100的擴展槽中的插卡。在其他實施例中,PPU202可以和諸如存儲器橋105或I/O橋107的總線橋集成在單個芯片上。而在其他實施例中,PPU202的一些或所有元件可以和CPU102集成在單個芯片上。
      [0029]在一個實施例中,通信路徑113是PCI Express鏈路,如本領域所知的,其中專用通道被分配到每個PPU202。也可以使用其他通信路徑。I/O單元205生成用于在通信路徑113上傳送的包(或其他信號),并且還從通信路徑113接收所有傳入的包(或其他信號),將傳入的包引導到PPU202的適當部件。例如,可將與處理任務相關的命令引導到主機接口206,而將與存儲器操作相關的命令(例如,對并行處理存儲器204的讀取或寫入)引導到存儲器交叉開關單元210。主機接口 206讀取每個入棧緩沖區(qū),并且將存儲在入棧緩沖區(qū)中的命令流輸出到前端212。
      [0030]有利地,每個PPU202都實現(xiàn)高度并行處理架構。如詳細示出的,PPU202 (O)包括處理集群陣列230,該陣列230包括C個通用處理集群(GPC)208,其中C≥I。每個GPC208能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個線程是程序的實例(instance)。在各種應用中,可分配不同的GPC208用于處理不同類型的程序或用于實施不同類型的計算。GPC208的分配可以取決于因每種類型的程序或計算所產生的工作量而變化。
      [0031]GPC208從任務/工作單元207內的工作分布單元接收所要執(zhí)行的處理任務。工作分布單元接收指向編碼為任務元數據(TMD)并存儲在存儲器中的處理任務的指針。指向TMD的指針包括在存儲為入棧緩沖區(qū)并由前端單元212從主機接口 206接收的命令流中??梢跃幋a為TMD的處理任務包括所要處理的數據的索引,以及定義數據將被如何處理(例如,什么程序將被執(zhí)行)的狀態(tài)參數和命令。任務/工作單元207從前端212接收任務并確保在每一個TMD所指定的處理發(fā)起前,將GPC208配置為有效狀態(tài)??梢詾槊總€TMD指定用來調度處理任務的執(zhí)行的優(yōu)先級。還可從處理集群陣列230接收處理任務。可選地,TMD可包括控制將TMD添加到處理任務列表(或指向處理任務的指針的列表)的頭部還是尾部的參數,從而提供除優(yōu)先級以外的另一級別的控制。
      [0032]存儲器接口 214包括D個分區(qū)單元215,每個分區(qū)單元215直接耦連到并行處理存儲器204的一部分,其中D > I。如所示的,分區(qū)單元215的數目一般等于動態(tài)隨機存取存儲器(DRAM) 220的數目。在其他實施例中,分區(qū)單元215的數目也可以不等于存儲器設備的數目。本領域的普通技術人員應該理解DRAM220可以用其他合適的存儲設備來替代并且可以是一般常規(guī)的設計。因此省略了詳細描述。諸如幀緩沖區(qū)或紋理映射圖的渲染目標可以跨DRAM220加以存儲,這允許分區(qū)單元215并行寫入每個渲染目標的各部分以有效地使用并行處理存儲器204的可用帶寬。
      [0033]任何一個GPC208都可以處理要被寫到并行處理存儲器204內的任何DRAM220的數據。交叉開關單元210配置為路由每個GPC208的輸出到任何分區(qū)單元215的輸入或到另一個GPC208用于進一步處理。GPC208通過交叉開關單元210與存儲器接口 214通信,以對各種外部存儲器設備進行讀取或寫入。在一個實施例中,交叉開關單元210具有到存儲器接口 214的連接以和I/O單元205通信,以及到本地并行處理存儲器204的連接,從而使得在不同GPC208內的處理內核能夠與系統(tǒng)存儲器104或對于PPU202而言非本地的其他存儲器通信。在圖2所示的實施例中,交叉開關單元210直接與I/O單元205連接。交叉開關單元210可使用虛擬信道來分開GPC208與分區(qū)單元215之間的業(yè)務流。
      [0034]另外,GPC208可被編程以執(zhí)行與種類繁多的應用相關的處理任務,包括但不限于,線性和非線性數據變換、視頻和/或音頻數據過濾、建模操作(例如,應用物理定律以確定對象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細分(tessellat1n)著色器、頂點著色器、幾何著色器、和/或像素著色器程序)等等。PPU202可將數據從系統(tǒng)存儲器104和/或本地并行處理存儲器204轉移到內部(片上)存儲器中,處理該數據,并且將結果數據寫回到系統(tǒng)存儲器104和/或本地并行處理存儲器204,其中這樣的數據可以由其他系統(tǒng)部件訪問,所述其他系統(tǒng)部件包括CPU102或另一個并行處理子系統(tǒng)112。
      [0035]PPU202可配備有任何容量(amount)的本地并行處理存儲器204,包括沒有本地存儲器,并且可以以任何組合方式使用本地存儲器和系統(tǒng)存儲器。例如,在統(tǒng)一存儲器架構(UMA)實施例中,PPU202可以是圖形處理器。在這樣的實施例中,將不提供或幾乎不提供專用的圖形(并行處理)存儲器,并且PPU202會以排他或幾乎排他的方式使用系統(tǒng)存儲器。在UMA實施例中,PPU202可集成到橋式芯片中或處理器芯片中,或作為具有高速鏈路(例如,PCI Express)的分立芯片提供,所述高速鏈路經由橋式芯片或其他通信手段將PPU202連接到系統(tǒng)存儲器。
      [0036]如上所示,在并行處理子系統(tǒng)112中可以包括任何數目的PPU202。例如,可在單個插卡上提供多個PPU202、或可將多個插卡連接到通信路徑113、或可將一個或多個PPU202集成到橋式芯片中。在多PPU系統(tǒng)中的PPU202可以彼此同樣或不同。例如,不同的PPU202可能具有不同數目的處理內核、不同容量的本地并行處理存儲器等等。在存在多個PPU202的情況下,可并行操作那些PI3U從而以高于單個PPU202所可能達到的吞吐量來處理數據。包含一個或多個PPU202的系統(tǒng)可以以各種配置和形式因素來實現(xiàn),包括臺式電腦、筆記本電腦或手持式個人計算機、服務器、工作站、游戲控制臺、嵌入式系統(tǒng)等等。
      [0037]圖3A為根據本發(fā)明的一個實施例的、圖2的PPU202之一內的分區(qū)單元215的框圖。如所示的,分區(qū)單元215包括L2高速緩存350、幀緩沖區(qū)(FB)DRAM接口 355以及光柵操作單元(ROP) 360。L2高速緩存350是配置為實施從交叉開關單元210和R0P360所接收的加載和存儲操作的讀/寫高速緩存。讀未命中(miss)和緊急寫回請求由L2高速緩存350輸出至FB DRAM接口 355用于處理。臟(dirty)更新也被發(fā)送到FB355用于伺機處理。[0038]在圖形應用中,R0P360是實施諸如模板、z測試、混合等等的光柵操作、并輸出像素數據作為經處理的圖形數據用于存儲在圖形存儲器中的處理單元。在本發(fā)明的一些實施例中,R0P360包括在每個GPC208內而不是分區(qū)單元215內,并且通過交叉開關單元210傳送像素讀和寫請求而不是像素片段數據。
      [0039]經處理的圖形數據可顯示在顯示設備110上或被路由用于由GPU或并行處理子系統(tǒng)112內的處理實體之一進行進一步處理。每個分區(qū)單元215包括R0P360以分布光柵操作的處理。在一些實施例中,R0P360可配置為壓縮寫入到存儲器的z或顏色數據以及解壓縮從存儲器讀取的z或顏色數據。
      [0040]圖3B為根據本發(fā)明的一個實施例的、在圖2的通用處理集群(GPC) 208內的流多處理器(SM) 310的一部分的框圖。每個GPC208可配置為并行執(zhí)行大量線程,其中術語“線程”是指在特定輸入數據集上執(zhí)行的特定程序的實例。在一些實施例中,單指令、多數據(SMD)指令發(fā)出技術用于在不提供多個獨立指令單元的情況下支持大量線程的并行執(zhí)行。在其他實施例中,單指令、多線程(SMT)技術用于使用配置為向GPC208中的每一個內的處理引擎集發(fā)出指令的公共指令單元來支持大量一般來說同步的線程的并行執(zhí)行。不同于所有處理引擎通常都執(zhí)行同樣指令的SMD執(zhí)行機制,SIMT執(zhí)行通過給定線程程序允許不同線程更容易跟隨分散執(zhí)行路徑。本領域普通技術人員應該理解SMD處理機制代表SMT處理機制的功能子集。
      [0041]經由將處理任務分布到一個或多個流多處理器(SM)310的管線管理器(未示出)來有利地控制GPC208的操作。其中每個SM310配置為處理一個或多個線程組。每個SM310包括指令LI高速緩存370,其配置為經由GPC208內的L1.5高速緩存(未示出)從存儲器接收指令和常量。線程束調度器和指令單元312從指令LI高速緩存370接收指令和常量并根據該指令和常量控制本地寄存器堆304和SM310功能單元。SM310功能單元包括N個exec(執(zhí)行或處理)單元302和P個加載-存儲單元(LSU) 303。如本領域已知的,SM功能單元可被管線化,這允許在前一個指令完成之前發(fā)出新指令??商峁┕δ軋?zhí)行單元的任何組合。在一個實施例中,功能單元支持各種各樣的操作,包括整數和浮點運算(例如加法和乘法)、比較操作、布爾操作(AND、0R、X0R)、移位和各種代數函數的計算(例如平面插值、三角函數、指數函數和對數函數等等);以及相同功能單元硬件可均衡地用來實施不同的操作。
      [0042]如本文之前所定義的,傳送到特定GPC208的一系列指令構成線程,并且跨SM310內的并行處理引擎(未示出)的某一數目的并發(fā)執(zhí)行線程的集合在本文中稱為“線程束(warp)”或“線程組”。如本文所使用的,“線程組”是指對不同輸入數據并發(fā)執(zhí)行相同程序的一組線程,所述組的一個線程被指派到SM310內的不同處理引擎。線程組可以包括比SM310內的處理引擎數目少的線程,在這種情況下一些處理引擎將在該線程組正在被處理的周期期間處于閑置狀態(tài)。線程組還可以包括比SM310內的處理引擎數目多的線程,在這種情況下處理將在連續(xù)的時鐘周期內發(fā)生。因為每個SM310可以并發(fā)支持多達G個線程組,結果是在包括M個流多處理器310的GPC208中的、在任何給定時間在GPC208中可以執(zhí)行多達G*M個線程組的系統(tǒng)。
      [0043]此外,多個相關線程組可以在SM310內同時活動(在執(zhí)行的不同階段)。該線程組集合在本文中稱為“協(xié)作線程陣列”(“CTA”)或“線程陣列”。特定CTA的大小等于m*k,其中k是線程組中并發(fā)執(zhí)行線程的數目并且通常是SM310內的并行處理引擎數目的整數倍,以及m是SM310內同時活動的線程組的數目。CTA的大小一般由編程者以及可用于CTA的硬件資源諸如存儲器或寄存器的容量來確定。
      [0044]在本發(fā)明的實施例中,使用計算系統(tǒng)的PPU202或其他處理器來使用線程陣列執(zhí)行通用計算是可取的。為線程陣列中的每個線程指派在線程的執(zhí)行期間對于線程可訪問的唯一的線程標識符(“線程ID”)??杀欢x為一維或多維數值的線程ID控制線程處理行為的各方面。例如,線程ID可用于確定線程將要處理輸入數據集的哪部分和/或確定線程將要產生或寫輸出數據集的哪部分。
      [0045]每線程指令序列可包括定義線程陣列的代表性線程和一個或多個其他線程之間的協(xié)作行為的至少一個指令。例如,每線程指令序列可能包括在序列中的特定點處掛起用于代表性線程的操作執(zhí)行直到諸如其他線程的一個或多個到達該特定點的時間為止的指令、用于代表性線程將數據存儲在其他線程的一個或多個有權訪問的共享存儲器中的指令、用于代表性線程原子地讀取和更新存儲在其他線程的一個或多個基于它們的線程ID有權訪問的共享存儲器中的數據的指令等等。CTA程序還可以包括計算數據將從其讀取的共享存儲器中的地址的指令,該地址是線程ID的函數。通過定義合適的函數并提供同步技術,可以以可預測的方式由CTA的一個線程將數據寫入共享存儲器中的給定位置并由同一個CTA的不同線程從該位置讀取數據。因此,數據在線程之間共享的任何期望模式可以得到支持,以及CTA中的任何線程可以與同一個CTA中的任何其他線程共享數據。如果存在數據在CTA的線程之間的共享,則其范圍由CTA程序確定;因此,應該理解的是,在使用CTA的特定應用中,CTA的線程可能會或可能不會真正互相共享數據,這取決于CTA程序,術語“CTA”和“線程陣列”在本文作為同義詞使用。
      [0046]SM310提供具有不同級別的可訪問性的片上(內部)數據存儲。特殊寄存器(未示出)對于LSU303可讀但不可寫并且用于存儲定義每個線程的“位置”的參數。在一個實施例中,特殊寄存器包括每線程(或SM310內的每exec單元302) —個的存儲線程ID的寄存器;每個線程ID寄存器僅由各自的exec單元302可訪問。特殊寄存器還可以包括附加寄存器,其對于執(zhí)行由任務元數據(TMD)(未示出)所代表的同一個處理任務的所有線程(或由所有LSU303)可讀,其存儲CTA標識符、CTA維數、CTA所屬網格(grid)的維數(或隊列位置,如果TMD編碼隊列任務而不是網格任務的話)、以及CTA被指派到的TMD的標識符。
      [0047]如果TMD是網格TMD,則TMD的執(zhí)行會啟動和執(zhí)行固定數目的CTA以處理存儲在隊列525中的固定量的數據。將CTA的數目指定為網格寬度、高度和深度的乘積??梢詫⒐潭康臄祿鎯υ赥MD中或TMD可以存儲指向將由CTA所處理的數據的指針。TMD還存儲由CTA所執(zhí)行的程序的開始地址。
      [0048]如果TMD是隊列TMD,那么使用TMD的隊列特點,這意味著將要被處理的數據量不一定是固定的。隊列條目存儲用于由指派到TMD的CTA所處理的數據。隊列條目還可以代表在線程執(zhí)行期間由另一個TMD所生成的子任務,從而提供嵌套并行性。通常線程或包括線程的CTA的執(zhí)行被掛起直到子任務的執(zhí)行完成??梢詫㈥犃写鎯υ赥MD中或與TMD分開存儲,在該情況下TMD存儲指向該隊列的隊列指針。有利地,當代表子任務的TMD正在執(zhí)行時可以將由子任務所生成的數據寫到隊列。隊列可以實現(xiàn)為循環(huán)隊列以使得數據的總量不限于隊列的大小。
      [0049]屬于網格的CTA具有指示網格內各自CTA的位置的隱含網格寬度、高度和深度參數。在初始化期間響應于經由前端212從設備驅動程序103所接收的命令來寫特殊寄存器并且在處理任務的執(zhí)行期間特殊寄存器不改變。前端212調度每個處理任務用于執(zhí)行。每個CTA與具體TMD相關聯(lián)用于一個或多個任務的并發(fā)執(zhí)行。此外,單個GPC208可以并發(fā)執(zhí)行多個任務。
      [0050]參數存儲器(未示出)存儲可由同一個CTA內的任何線程(或任何LSU303)讀取但不可由其寫入的運行時間參數(常數)。在一個實施例中,設備驅動程序103在引導SM310開始執(zhí)行使用參數的任務之前將這些參數提供給參數存儲器。任何CTA內的任何線程(或SM310內的任何exec單元302)可以通過存儲器接口 214訪問全局存儲器??梢詫⑷执鎯ζ鞯母鞑糠执鎯υ贚I高速緩存320中。
      [0051]每個線程將本地寄存器堆304用作暫存空間;每個寄存器被分配以專用于一個線程,并且在本地寄存器堆304的任何部分中的數據僅對于寄存器被分配到的線程可訪問。本地寄存器堆304可以實現(xiàn)為物理上或邏輯上分為P個通道的寄存器堆,每個通道具有一定數目的條目(其中每個條目可以存儲例如32位字)。將一個通道指派到N個exec單元302和P個下載-存儲單元LSU303的每一個,并且利用用于執(zhí)行同一個程序的不同線程的數據來填充不同通道中的相應條目以幫助SIMD執(zhí)行??梢詫⑼ǖ赖牟煌糠址峙涞紾個并發(fā)線程組中的不同線程組,以使得本地寄存器堆304中的給定條目僅對于特定線程可訪問。在一個實施例中,保留本地寄存器堆304內的某些條目用于存儲線程標識符,實現(xiàn)特殊寄存器之一。此外,一致LI高速緩存375存儲用于N個exec單元302和P個下載-存儲單元LSU303的每個通道的一致值或常數值。
      [0052]共享存儲器306對于單個CTA內的線程可訪問;換言之,共享存儲器306中的任何位置對于同一個CTA內的任何線程(或對于SM310內的任何處理引擎)可訪問。共享存儲器306可以實現(xiàn)為具有允許任何處理引擎對共享存儲器中的任何位置讀取或寫入的互連的共享寄存器堆或共享片上高速緩存存儲器。在其他實施例中,共享狀態(tài)空間可能映射到片外存儲器的每CTA區(qū)上并被高速緩存在LI高速緩存320中。參數存儲器可以實現(xiàn)為在實現(xiàn)共享存儲器306的同一個共享寄存器堆或共享高速緩存存儲器內的指定部分,或者實現(xiàn)為LSU303對其具有只讀訪問權限的分開的共享寄存器堆或片上高速緩存存儲器。在一個實施例中,實現(xiàn)參數存儲器的區(qū)域還用于存儲CTA ID和任務ID,以及CTA和網格維數或隊列位置,實現(xiàn)特殊寄存器的各部分。SM310中的每個LSU303耦連到統(tǒng)一地址映射單元352,統(tǒng)一地址映射單元352將為在統(tǒng)一存儲器空間中所指定的加載和存儲指令所提供的地址轉換為每個各異存儲器空間中的地址。因此,指令可以用于通過指定統(tǒng)一存儲器空間中的地址來訪問本地、共享或全局存儲器空間中的任何一個。
      [0053]每個SM310中的LI高速緩存320可以用于高速緩存私有的每線程本地數據還有每應用全局數據。在一些實施例中,可以將每CTA共享數據高速緩存在LI高速緩存320中。LSU303經由存儲器和高速緩存互連380耦連到共享存儲器306和LI高速緩存320。
      [0054]應該理解本文所述的內核架構是示例性的并且變化和修改都是可能的。任何數目的處理單元例如SM310可以包括在GPC208內。進一步地,如圖2所示,PPU202可以包括任何數目的GPC208,所述GPC208有利地在功能上彼此相似以使得執(zhí)行行為不取決于哪個GPC208接收特定處理任務。進一步地,每個GPC208有利地使用分開且各異的處理單元、LI高速緩存來獨立于其他GPC208操作以為一個或多個應用程序執(zhí)行任務。[0055]本領域普通技術人員應該理解圖1-3B所描述的架構決不限制本發(fā)明的范圍并且在不脫離本發(fā)明范圍的情況下本文所教導的技術可以在任何經適當配置的處理單元上實現(xiàn),所述處理單元包括但不限于一個或多個CPU、一個或多個多核CPU、一個或多個PPU202、一個或多個GPC208、一個或多個圖形或專用處理單元等等。
      [0056]圖形管線架構
      [0057]圖4是根據本發(fā)明的一個實施例的、圖2的PPU202中的一個或多個可經配置以實現(xiàn)的圖形處理管線400的概念圖。例如,SM310中的一個可配置為實施頂點處理單元415、曲面細分初始化處理單元420、曲面細分處理單元440、幾何處理單元445、片段處理單元460中的一個或多個的功能。還可由GPC208內的其他處理引擎和相應的分區(qū)單元215實施基元分布器(distributor) 410、任務生成單元425、任務分布器430、拓撲生成單元435、視口縮放、剔除(cull)和裁剪(clip)單元450、光柵化器455和光柵操作單元465的功能??商娲兀墒褂糜糜谝粋€或多個功能的專用處理單元來實現(xiàn)圖形處理管線400。
      [0058]圖形處理管線400還包括本地存儲器,其在圖形處理管線400之中被共享。例如,圖形處理管線可以使用SM310內的共享存儲器306來作為這類本地存儲器。如下文所進一步描述的,圖形處理管線400中的各處理單元按照需要對共享存儲器306內的級間緩沖區(qū)(未示出)進行分配或解除分配(deallocate)。處理單元從一個或多個級間緩沖區(qū)讀取輸入數據、處理輸入數據以產生輸出數據并將結果輸出數據存儲在一個或多個級間緩沖區(qū)中。后續(xù)處理單元可讀取該結果輸出數據作為用于后續(xù)處理單元的輸入數據。后續(xù)處理單元處理數據并將輸出數據存儲在一個或多個級間緩沖區(qū)中,以此類推。共享存儲器306和圖像處理管線的各其他級(stage)經由存儲器接口 214與外部存儲器連接。
      [0059]基元分布器410處理單元收集用于高階表面、基元等的頂點數據,并將包括頂點屬性的頂點數據輸出到頂點處理單兀415。在一些實施例中,基兀分布器410包括頂點屬性獲取單元(未示出),其檢索頂點屬性并將頂點屬性存儲在共享存儲器306中。頂點處理單元415是可編程執(zhí)行單元,其配置為執(zhí)行頂點著色器程序,按頂點著色器程序所指定的來亮化和變換頂點數據。例如,頂點處理單元415可被編程以將頂點數據從基于對象的坐標表示(對象空間)變換到可替代地基于諸如世界空間或規(guī)格化設備坐標(NDC)空間的坐標系。頂點處理單元415可讀取由基元分布器410所存儲在共享存儲器306、L1高速緩存320、并行處理存儲器204、或系統(tǒng)存儲器104中的數據用于在處理頂點數據中使用。頂點處理單元415將經處理的頂點存儲在共享存儲器306內的級間緩沖區(qū)中。
      [0060]曲面細分初始化處理單元420是可編程執(zhí)行單元,其配置為執(zhí)行曲面細分初始化著色器程序。曲面細分初始化處理單元420處理由頂點處理單元415所產生的頂點并生成被稱為補丁(patch)的圖形基元。曲面細分初始化處理單元420隨后將補丁數據和補丁屬性存儲在共享存儲器306內的級間緩沖區(qū)中。在一些實施例中,曲面細分初始化著色器程序可被稱為外殼著色器或曲面細分控制著色器。
      [0061]任務生成單元425從共享存儲器306的級間緩沖區(qū)檢索用于頂點和補丁的數據和屬性。任務生成單元425生成用于處理頂點和補丁的任務用于由圖形處理管線400中的后面的級進行處理。
      [0062]任務分布器430重新分布由任務生成單元425所產生的任務。由頂點著色器程序和曲面細分初始化程序的各實例所產生的任務可能在一個圖形處理管線400和另一個之間顯著地變化。任務分布器430重新分布這些任務,使得每個圖形處理管線400在后面的管線級期間近似地具有相同的工作量。
      [0063]拓撲生成單元435檢索由任務分布器430所分布的任務。拓撲生成單元435將頂點編入索引,包括與補丁相關聯(lián)的頂點,并且計算與頂點相對應的紋理坐標。拓撲生成單元435隨后將索引頂點存儲在共享存儲器306內的級間緩沖區(qū)中。
      [0064]曲面細分處理單元440是可編程執(zhí)行單元,其配置為執(zhí)行曲面細分著色器程序。曲面細分處理單元440從共享存儲器306內的級間緩沖區(qū)讀取輸入數據并對共享存儲器306內的級間緩沖區(qū)寫入輸出數據。級間緩沖區(qū)中的輸出數據被傳遞到下一個著色器級幾何處理單元455作為輸入數據。在一些實施例中,曲面細分著色器程序可被稱為域著色器或曲面細分評估著色器。
      [0065]幾何處理單元445是可編程執(zhí)行單元,其配置為執(zhí)行幾何著色器程序,從而變換圖形基元。頂點被分組以構建圖形基元用于處理,此處圖形基元包括三角形、線段、點等等。例如,幾何處理單元445可被編程以將圖形基元細分成一個或多個新圖形基元并計算用來將新圖形基元光柵化的參數,諸如平面方程系數。
      [0066]在一些實施例中,幾何處理單元445還可在幾何流中添加或刪除元素。幾何處理單元445將指定新圖形基元的參數和頂點輸出到視口縮放、剔除(cull)和裁剪(clip)單元450。幾何處理單元445可讀取存儲在共享存儲器306、并行處理存儲器204或系統(tǒng)存儲器104中的數據用于在處理幾何數據中使用。視口縮放、剔除和裁剪單元450實施裁剪、剔除和視口縮放,并將所處理的圖形基元輸出到光柵化器455。
      [0067]光柵化器455掃描轉換新圖形基元并將片段和覆蓋數據輸出到片段處理單元460。此外,光柵化器455可配置為實施z剔除(z-culling)和其他基于z的優(yōu)化。
      [0068]片段處理單元460是可編程的執(zhí)行單元,其配置為執(zhí)行片段著色器程序,按片段著色器程序所指定的來變換從光柵化器455所接收的片段。例如,片段處理單元460可被編程以實施諸如透視校正、紋理映射、著色、混合等操作,以產生輸出到光柵操作單元465的經著色的片段。片段處理單元460可讀取存儲在共享存儲器306、并行處理存儲器204或系統(tǒng)存儲器104中的數據用于在處理片段數據中使用。可以像素、樣本、或其他粒度對片段著色,這取決于所編程的采樣率。
      [0069]光柵操作單元465是處理單元,其實施諸如模板(Stencil)、Z測試、混合等的光柵操作,并輸出像素數據作為經處理的圖形數據用于存儲在圖形存儲器中。經處理的圖形數據可存儲在圖形存儲器例如并行處理存儲器204和/或系統(tǒng)存儲器104中,用于在顯示設備110上顯示或用于由CPU102或并行處理子系統(tǒng)112進一步處理。在本發(fā)明的一些實施例中,光柵操作單元465配置為壓縮寫入到存儲器的z或顏色數據以及解壓縮從存儲器中讀取的z或顏色數據。在各實施例中,R0P465可位于存儲器接口 214中、GPC208中、GPC之外的處理集群陣列230中、或PPU202內的分開的單元(未示出)中。
      [0070]視口變換和光柵化
      [0071]仍然參考圖4,常以兩個不同的分辨率來光柵化圖形對象。例如,為了確定用于以“正?!狈直媛实臉藴使鈻呕拇鎯ζ鞣峙洌鈻呕?55可首先以“較低”分辨率來光柵化對象以確定存儲器分配,并且隨后以正常分辨率來光柵化對象。為了以兩個不同的分辨率來光柵化對象,在圖形處理管線400中的數個單元中設置與兩個不同分辨率相關的具體參數的兩個不同設置,并且同一對象被光柵化兩次一一次針對參數的每個設置,并且因此針對每個分辨率。參數針對其而被設置的圖形處理管線400中的一些單元包括光柵化器455以及來自光柵化器455上游的單元,包括視口縮放、剔除和裁剪單元450。下文更詳細描述光柵化器455和上游單元用于以兩個不同分辨率來光柵化對象的操作。
      [0072]視口縮放、剔除和裁剪單元450接收與來自視口縮放、剔除和裁剪單元450的上游的單元的對象相關的幾何數據。視口縮放、剔除和裁剪單元450對幾何數據執(zhí)行視口變換,以產生用于在二維屏幕空間中的對象的頂點的坐標。視口變換指定總地與二維柵格或空間相對應的某個分辨率。在二維空間中的對象的頂點的坐標具有與該分辨率相對應的值。因此,對于320x240的分辨率,用于對象的頂點的橫坐標范圍可為O到320,并且縱坐標范圍可為O到240。對于其他分辨率,坐標可以具有不同的范圍。
      [0073]從概念上講,第一分辨率中的坐標可被映射到第二分辨率中的坐標,通過將第一分辨率中的坐標向上或向下縮放以產生第二分辨率中的相對應的坐標。例如,對于320x240的第一分辨率,一套坐標10,5可通過按照2的因數來向上縮放坐標而被映射到640x480的分辨率,使得新坐標為20,10。以該方式映射的坐標在本文中被稱為具有跨兩個不同分辨率的相同的“邏輯位置”。
      [0074]用于視口變換的計算典型地包括一些舍入(rounding)。即視口變換所產生的坐標具有所應用的一定量的舍入,意思是用于生成屏幕空間頂點的計算的結果被舍入到某一精度。視口變換還將用于對象頂點的坐標“對齊”到指定的子像素柵格。換句話說,用于已經被應用視口變換的對象的頂點的屏幕空間位置被與柵格對準。此處柵格的元(cell)(或“子像素”)具有等于像素的指定分數的大小(例如,柵格中的所有元可具有等于像素的第1/4或第1/64的大小)?!皩R”使對象的坐標與這些分數像素大小的子像素對準。視口變換的結果包括對齊和舍入的效應,并且一般包括用于與每個對象的子像素柵格對齊的每個頂點的屏幕空間坐標。
      [0075]光柵化器455從視口縮放、剔除和裁剪單元450接收用于對象的頂點的屏幕空間坐標。光柵化器455包括計算用于對象的邊緣等式的設定單元。光柵化器455從設定單元取走基元和邊緣等式,并評估由設定單元所提供的邊緣等式,以確定用于對象的樣本或像素的覆蓋。邊緣等式典型地以E(x,y)=Ax+By+C的形式,此處A、B和C是由設定單元所計算的系數,X和I是將被邊緣等式所評估的像素或樣本的坐標,并且E (x, y)表示針對一套x_y坐標評估邊緣等式的結果。因為X和y坐標依賴于在視口變換期間所指定的分辨率,所以邊緣等式的系數常規(guī)地對于以不同分辨率的光柵化是不同的。
      [0076]常規(guī)多分辨率光柵化
      [0077]在常規(guī)方法中,對對象以兩個不同的分辨率來光柵化通過以下來實現(xiàn):以兩個不同的分辨率對對象應用視口變換、針對兩個不同的分辨率計算相對應的邊緣等式、以及以兩個不同的分辨率來光柵化對象。第一視口變換以第一分辨率產生用于對象的頂點的二維屏幕空間坐標,并且第二視口變換以第二分辨率產生用于對象的頂點的二維屏幕空間坐標。然而如下文所描述的,用于被以兩個不同分辨率光柵化的對象的頂點的位置在跨兩個不同的分辨率的大約相同的“邏輯位置”。被以兩個不同分辨率光柵化的對象的頂點不一定占據完全相同的邏輯位置。
      [0078]然而,該常規(guī)方法的一個缺點是,針對兩個不同分辨率應用視口變換意味著以兩個不同分辨率的頂點位置可能由于舍入的效應而不在相同的邏輯位置。常規(guī)方法的附加缺點是針對兩個不同分辨率應用視口變換致使用于對象的頂點的坐標被“對齊”到兩個不同的柵格,因為固定分數像素大小對于兩個不同分辨率是不同的。“對齊”到兩個不同的分辨率意味著以第一分辨率的對象的頂點不一定在與以第二分辨率的對象的頂點相同的“邏輯位置”。該不一致性可導致針對第一分辨率的光柵化產生在坐標位置方面不一致的光柵化結果,并且可導致結果的應用的不準確。例如,如果基于低分辨率光柵化的結果來分配存儲器,那么存儲器可能由于光柵化中的不一致性而被分配給渲染目標的不正確的部分。
      [0079]多分辨率一致光柵化
      [0080]由于上文所描述的采用常規(guī)方法的問題,所以圖形處理管線400可配置為操作在“多分辨率一致光柵化模式”中。在這類模式中,指令被發(fā)送到圖形處理管線400中以使用多分辨率一致光柵化模式來以兩個不同分辨率(“低”分辨率和“高”分辨率)來光柵化對象。視口縮放、剔除和裁剪單元450上游的單元正常地處理對象,但是僅對對象應用一個視口變換,并且該視口變換以“通用”分辨率而不是以兩個不同分辨率產生用于對象的頂點的屏幕空間坐標。在一個實施例中,通用分辨率是對象被光柵化的低和高分辨率的最小公倍數分辨率。對通用分辨率的視口變換的結果是用于對象的一套坐標,其指示對象在與通用分辨率相對應的通用柵格上的頂點位置。通用柵格具有通用像素以及“子像素柵格”,此處在子像素柵格中的子像素的大小是通用像素的分數大小部分。
      [0081]在多分辨率一致光柵化模式中,設定計算在通用分辨率中用于對象的邊緣等式。因為僅存在一個分辨率,所以針對對象僅計算一套邊緣等式。隨后,光柵化器對用于對象的邊緣等式評估兩次(第一評估和第二評估),即一次針對兩個分辨率中的每一個。以兩個分辨率的評估包括基于不同的“有效像素大小”(諸如“大像素”和“小像素”)來評估,此處每個有效像素大小包括在通用柵格中的通用像素中的一個或多個。在一些實施例中,以兩個分辨率的評估還包括基于不同的評估標準來評估,諸如標準光柵化或保守光柵化。
      [0082]在第一評估中,與較低分辨率相對應,光柵化器455基于第一套評估標準并以第一分辨率來評估邊緣等式。以第一分辨率評估邊緣等式包括針對大像素的集合中的每個“大像素”來評估邊緣等式。“大像素”是通用像素的簡單的大集合。換句話說,每個大像素包括大數目的通用像素。在一個是實施例中,第一套評估標準是保守光柵化。在保守光柵化中,如果對象接觸到像素或樣本的任何部分,則像素或樣本評估為被覆蓋。因此,對于大像素,如果對象接觸到大像素的任何部分,則保守光柵化評估為被覆蓋。
      [0083]在一些實施例中,第一評估的結果被存儲在存儲器位置中。用于第一評估的特定結果的存儲器地址是基于大像素的坐標。更具體地,用于每個大像素的存儲器地址與在通用柵格中的每個“大像素”的“大像素位置”相對應。每個大像素具有與大像素的通用柵格中的X和y坐標這兩者中的數字上最小的位置相對應的大像素位置。例如,如果大像素水平地跨越通用像素32-63號、并且垂直地跨越通用像素32-63號,那么大像素的大像素位置是32,32。為了確定用于存儲第一評估的結果的存儲器地址,用于每個大像素的大像素位置被縮放因數所除??s放因數是大像素的大小與通用柵格的單元大小的比?!皢卧笮 笔亲酉袼貣鸥裰械姆謹底酉袼氐拇笮?例如,如果通用柵格具有是通用像素的大小的四分之一的子像素,那么單元大小等于通用像素的大小的四分之一)。如示例,大像素可具有32個單元大小的32的大像素大小。因此,縮放因數為32。在該示例中,為了確定用于存儲第一評估的結果的存儲器地址,用于每個大像素\的像素位置被縮放因數所除。因此,對于水平地跨越子像素32-63號、并且垂直地跨越子像素32-63號的大像素,給出大像素的大像素位置32,32,存儲器地址將是 32/32,32/32=1,I。
      [0084]在第二評估中,與較高分辨率相對應,光柵化器455基于第二套評估標準并以第二分辨率來評估邊緣等式。以第二分辨率評估邊緣等式包括針對小像素的集合中的每個“小像素”來評估邊緣等式?!靶∠袼亍笔且粋€或多個通用像素的簡單的集合,此處“小像素”具有的通用像素比大像素少。換句話說,每個小像素包含的通用像素數目小于每個大像素。例如,當大像素可包括32乘以32個通用像素時,小像素可僅包括4乘以4個通用像素。在一個是實施例中,第二套評估標準是標準光柵化。在標準光柵化中,光柵化器455評估邊緣等式以確定用于小像素中的每一個的樣本覆蓋,此處可能存在每個小像素一個或多個樣本。
      [0085]在一個實施例中,光柵化器455僅評估用于落到基于保守光柵化的結果評估為被覆蓋的大像素內的小像素的覆蓋。為了確定落在基于保守光柵化的結果評估為被覆蓋的大像素內的小像素在通用柵格中的位置,光柵化器455將用于存儲用于每個所覆蓋的大像素的覆蓋數據的存儲器地址乘以縮放因數,并且添加偏移,此處偏移對于在大像素內的每個小像素是不同的。例如,如果用于大像素的存儲器地址是4,3,則光柵化器將存儲器地址乘以縮放因數,諸如8,以得出經縮放的存儲器地址,其等于用于小像素的評估的通用柵格中的位置32,24。然后,光柵化器455評估大像素內的每個小像素。大像素中的每個小像素可通過將偏移添加到經縮放的存儲器地址而被評估。
      [0086]在一些實施例中,縮放因數是2的冪。在一些實施例中,小像素大小和通用像素大小之間的比是2的冪。2的冪的比允許使用移位操作來完成乘和除,其典型地比乘或除任意大的數消耗較少的處理功率。
      [0087]第一評估和第二評估的結果由光柵化器455提供給下游單元用于進一步處理。
      [0088]在一些實施例中,光柵化器455僅針對一個像素大小一“大像素大小”僅評估一套評估標準。在這類情況中,大和小像素之間不需要做出區(qū)別,因為僅存在一個像素大小。然而為了清楚,當光柵化器455針對一個像素大小僅評估一套評估標準時使用術語“大像素大小”。在這類實施例中,光柵化器455確定大像素大小,其可以是單元大小的任何倍數,并且光柵化器455評估上文所描述的一套評估標準。不進行針對第二像素大小的附加評估。
      [0089]在一些實施例中,大像素大小或小像素大小可在水平和垂直方向包括不同數目的單元大小。(即大和/或小像素可以是矩形的)。
      [0090]多分辨率一致光柵化的示例
      [0091]圖5不出了根據本發(fā)明的一個實施例的、在低分辨率區(qū)域500中的未未對齊基兀504和對齊基元506的示例。如所示的,區(qū)域500包括像素502、子像素503、具有未對齊頂點508的未對齊基元504以及具有對齊頂點510的對齊基元506。
      [0092]區(qū)域500是在其中對象被以第一分辨率(第一分辨率是“低”分辨率,與下文所討論的圖6A-6C中所示的分辨率相比)光柵化的區(qū)域。區(qū)域500中所示的像素502由實線所定義,而子像素503由虛線所定義。如通過在區(qū)域500的左側和上部的柵格標簽可以看出的,區(qū)域500中的像素502具有0,O、0,2、0,4、0,6、2,O、2,2、2,4的像素位置(最左和最上的坐標),以此類推,而子像素具有O,0、0,1、0,2、0,3、0,4、0,5、0,6、1,O、1,I的子像素位置,以
      此類推。
      [0093]未對齊基元504由頂點508-1、508-2以及508-3所定義,其由來自光柵化器455的上游的單元所計算。頂點508-1具有1.3,1.2的位置,頂點508-2具有3.7,5.9的位置,并且頂點508-3具有6.3,3.7的位置。當應用視口變換時,未對齊基元504被對齊以形成對齊基元506。更具體地,未對齊基元504的頂點508被對齊到柵格的子像素503。
      [0094]對齊基元506由頂點510-1、510_2以及510-3所定義。頂點510-1具有1,I的位置,頂點510-2具有4,6的位置,并且頂點510-3具有6,4的位置。如可看出的,“對齊”使頂點508被對齊,使得對齊頂點510的位置為最接近未對齊頂點508的子像素柵格位置。(例如,位置1.3,1.2對齊到1,1,3.7,5.9對齊到4,6,以此類推)。
      [0095]圖6A不出了根據本發(fā)明的一個實施例的、在高分辨率區(qū)域600中的未未對齊基兀604和對齊基元606的示例。如所示的,區(qū)域600包括像素602、子像素603、具有未對齊頂點608的未對齊基元604以及具有對齊頂點610的對齊基元606。
      [0096]區(qū)域600是在其中對象被以第二分辨率(第一分辨率是“較高”分辨率,與圖5中所示的第一分辨率相比)光柵化的區(qū)域。區(qū)域600中所示的像素602由實線所定義,而子像素603由虛線所定義。如通過在區(qū)域600的左側和上部的柵格標簽可以看出的,區(qū)域600中的像素602具有0,0、0,2、0,4、0,6、2,0、2,2、2,4的像素位置(最左和最上的坐標),以此類推,而子像素具有0,0、0,1、0,2、0,3、0,4、0,5、0,6、1,0、1,I的子像素位置,以此類推。
      [0097]未對齊基元604由頂點608-1、608-2以及608-3所定義,其由來自光柵化器455的上游的單元所計算。頂點608-1具有2.6,2.4的位置,頂點608-2具有7.4,11.8的位置,并且頂點608-3具有12.6,7.4的位置。當應用視口變換時,未對齊基元604被對齊以形成對齊基元606。更具體地,未對齊基元604的頂點608被對齊到柵格的子像素603。
      [0098]對齊基元606由頂點610-1、610-2以及610-3所定義。頂點610-1具有3,2的位置,頂點610-2具有7,12的位置,并且頂點610-3具有13,7的位置。如可看出的,“對齊”使頂點608被對齊,使得對齊頂點610的位置為最接近未對齊頂點608的子像素柵格位置。(例如,位置2.6,2.4對齊到3,2,7.4,11.8對齊到7,12,以此類推)。
      [0099]一起參考圖5和6A,用于區(qū)域500的分辨率是用于區(qū)域600的分辨率的一半。區(qū)域500是8x8面積,而區(qū)域600是16x16面積。因此,用于區(qū)域600的分辨率在水平和垂直方向這二者是用于區(qū)域500的分辨率的兩倍。對于區(qū)域500中的任何位置,在區(qū)域600中的等價“邏輯位置”因此通過將位置的坐標乘以2而被確定。因此,對于區(qū)域500中的位置
      I,I,在區(qū)域600中的相同邏輯位置將是1x2,1x2=2,2。
      [0100]未對齊基元504和604分別在區(qū)域500和區(qū)域600中的相同邏輯位置中。因此,用于未對齊基元504的所有未對齊頂點508在與用于未對齊基元604的未對齊頂點608相同的邏輯位置中。具體地,具有1.3,1.2的位置的未對齊頂點508-1在與具有2.6,2.4的位置的未對齊頂點608-1相同的邏輯位置中。如可以看出的,未對齊頂點608-1的坐標是未對齊頂點508-1的坐標的兩倍。
      [0101]然而,因為兩個分辨率是不同的,并且因此子像素大小是不同的,如可以看出的,對齊基元506和606不具有在相同邏輯位置中的頂點。具體地,對齊基元506具有1,I的位置的頂點510-1、4,6的位置的頂點510-2、以及6,4的位置的頂點510-3,而對齊基元606具有3,2的位置的頂點610-1、7,12的位置的頂點610-2、以及13,7的位置的頂點610-3。頂點610-1不在與頂點510-1相同的邏輯位置中,因為用于頂點610-1的坐標為3,2,其不等于1,1x2。類似地,頂點610-2不在與頂點510-2相同的邏輯位置中,因為用于頂點610-2的坐標為7,12,其不等于4,6x2。最后,頂點610-3不在與頂點510-3相同的邏輯位置中,因為用于頂點610-3的坐標為13,7,其不等于6,4x2。對齊頂點610不在與對齊頂點510在區(qū)域500中的相同的邏輯位置中的原因是,未對齊頂點508所對齊到的子像素是未對齊頂點608所對齊到的子像素的四倍大。
      [0102]因此,如可以看出的,圖5和6A所示的以不同分辨率所光柵化的基元的邏輯位置存在差別。因此,如果基于低分辨率對齊基元506的光柵化結果來將存儲器分配給高分辨率對齊基元606的光柵化,則存儲器可能由于低分辨率對齊基元506的光柵化結果未必要地與高分辨率對齊基元606的光柵化結果對準而被不正確地分配。
      [0103]圖6B示出了根據本發(fā)明的一個實施例的、在包括對齊基元606以及覆蓋大像素612的區(qū)域600中經由多分辨率一致光柵化所光柵化的基元的大像素覆蓋的示例。如所示的,區(qū)域600包括通用像素602、子像素603以及對齊基元606。在區(qū)域600中,通用像素602以實(非粗體)黑線為輪廓。用于通用像素602的子像素603以虛線為輪廓。大像素612以實線和虛線一起為輪廓。每個大像素612包括四個通用像素602。對齊基元606是與圖6A中所示的對齊基元606相同的基元,并且因此具有如在圖6A中所示的相同對齊頂點610。在圖6B中,采用保守光柵化以低分辨率來光柵化對齊基元606。更具體地,由對齊基元606所接觸到的每個大像素612被認為是“被覆蓋”(以粗體示出),而對齊基元606所未接觸到的每個大像素612不被認為是被覆蓋。因此,在位置0,0,4,0,0, 4、4,4、8,4、12,4、4,8以及8,8處的大像素是被覆蓋的,因為對齊基元606接觸到了那些大像素的部分,而位置8,O、12,0、0,8、12,8、0,12,4, 12,8, 12以及12,12處的大像素是未被覆蓋的,因為基元606未接觸到那些大像素的任何部分。
      [0104]在一個實施例中,用于存儲區(qū)域600中的對齊基元606的保守光柵化的覆蓋數據的存儲器被分配為4x4元素陣列,在水平和垂直兩個方向從0-3可尋址。用于區(qū)域600中的每個大像素612的覆蓋數據占據4x4元素陣列的元素。進一步地,陣列可通過依據縮放因數向下縮放大像素的像素位置而是可尋址的,其等于由通用柵格的“單元大小”所除的大像素的大小。術語“單元大小”指的是與一個單元在長度和寬度上相對應的通用分辨率的元素的大小。在該情況中,單元大小在水平和垂直方向上都是通用像素的一半。因此,縮放因數在兩個方向上都是4,并且陣列中用于存儲覆蓋數據的地址可通過將大像素位置在兩個方向上都除以4而被確定。因此,用于大像素的覆蓋數據,可通過將相對應的大像素位置除以4而被存儲在陣列中。
      [0105]例如,對于位置8,4處的大像素612,用于存儲覆蓋數據的陣列位置通過將8除以4以及將4除以4而獲取,其得到2,I的陣列位置。存儲用于區(qū)域600的所有大像素612覆蓋數據的陣列包括下列數據,此處O指示大像素612未被覆蓋,并且I指示大像素612被覆
      至JHL ο
      [0106][I, 1,0,0]
      [0107][I, I, I, I]
      [0108][O, I, 1,0][0109][0,0,0,0]
      [0110]圖6C示出了根據本發(fā)明的一個實施例的、在包括對齊基元606以及覆蓋小像素614的區(qū)域600中經由多分辨率一致光柵化所光柵化的基元的小像素覆蓋的示例。如所示的,區(qū)域600包括通用像素602、子像素603以及對齊基元606。
      [0111]在區(qū)域600中,在區(qū)域600中,通用像素602以實(非粗體)黑線為輪廓。用于通用像素602的子像素603以虛線為輪廓。每個小像素614包括一個通用像素602。進一步地,每個小像素614包括4個子像素603。對齊基元606是與圖6A和6B中所示的對齊基元606相同的基元,并且因此具有如在圖6A和6B中所示的相同對齊頂點610。在圖6C中,采用標準光柵化采用4個子像素樣本以高分辨率來光柵化對齊基元606。更具體地,針對其子像素603的中心被對齊基元606所覆蓋的每個小像素614中的每個子像素603被認為是“被覆蓋”(以粗體示出),而針對其子像素603的中心未被對齊基元606所覆蓋的每個小像素614中的每個子像素603被認為是“未被覆蓋”。因此在位置3,2、4,3、5,3、4,4、5,4、6,4、7,4處以及所示的許多其他位置處的子像素603被覆蓋,因為對齊基元606接觸到了那些子像素603的中心,而位置0,O、1,0、2,0、3,O等等處的子像素未被覆蓋,因為對齊基元606未覆蓋子像素603的中心。
      [0112]在一個實施例中,如果子像素在用于低分辨率光柵化的覆蓋大像素內,則子像素603僅針對覆蓋被評估,為了確定哪些子像素603在覆蓋大像素內,覆蓋大像素的存儲器地址被乘以縮放因數,并且偏移被添加到結果。例如,對于在地址1,I處的圖6B中的大像素612,地址被乘以縮放因數4以得到位置4,4。然后,偏移被添加用于將被評估的每個子像素603。因為每個大像素612中存在16個子像素,所以不同的偏移被添加16次,一次針對每個子像素603。因此,偏移0,O被添加用于4,4處的子像素,偏移1,O被添加用于5,4處的子像素,以此類推。存儲用于區(qū)域600的所有子像素603覆蓋數據的陣列包括下列數據,此處O指示子像素603未被覆蓋,并且I指示子像素603被覆蓋。
      [0113][O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O]
      [0114][O, O, O, I, O, O, O, O, O, O, O, O, O, O, O, O]
      [0115][O, O, O, O, I, I, O, O, O, O, O, O, O, O, O, O]
      [0116][O, O, O, O, I, I, I, I, O, O, O, O, O, O, O, O]
      [0117][O, O, O, O, I, I, I, I, I, I, O, O, O, O, O, O]
      [0118][O, O, O, O, O, I, I, I, I, I, I, I, O, O, O, O]
      [0119][O, O, O, O, O, I, I, I, I, I, I, I, O, O, O, O]
      [0120][O, O, O, O, O, O, I, I, I, I, I, O, O, O, O, O]
      [0121][O, O, O, O, O, O, I, I, I, I, O, O, O, O, O, O]
      [0122][O, O, O, O, O, O, I, I, I, O, O, O, O, O, O, O]
      [0123][O, O, O, O, O, O, O, I, O, O, O, O, O, O, O, O]
      [0124]圖7是根據本發(fā)明的一個實施例的、用于實施多分辨率一致光柵化的方法步驟的流程圖。雖然結合圖1-4的系統(tǒng)描述了方法步驟,但是本領域普通技術人員將理解的是,配置為以任何次序實施方法步驟的任何系統(tǒng)均落在本發(fā)明的范圍內。
      [0125]如所示的,方法700開始于步驟702,此處光柵化器455內的設定單元確定與通用柵格相對應的通用分辨率。在步驟704中,光柵化器455內的設定單元基于通用分辨率計算通用邊緣等式。在步驟706中,光柵化器455計算第一光柵化結果作為用于大像素的覆蓋數據。在步驟708中,光柵化器455通過將覆蓋大像素的位置向下縮放來確定用于存儲第一光柵化結果的地址。在步驟710中,光柵化器455通過將用于存儲第一光柵化結果的地址向上縮放并且添加小像素偏移來確定用于第二光柵化結果的小像素的位置。最后,在步驟712中,光柵化器計算第二光柵化結果作為用于小像素的覆蓋數據。
      [0126]總而言之,圖形處理管線配置為計算通用邊緣等式,使得以不同分辨率光柵化圖形數據產生一致的結果。更具體地,設定單元基于由圖形處理管線的時間空間級所產生的數據來計算通用邊緣等式。然后光柵化器生成定點光柵化結果,諸如用于正常光柵化的覆蓋數據或用于低分辨率保守光柵化的覆蓋數據,其基于通用邊緣等式與通用柵格的坐標對準。對于低分辨率光柵化,光柵化器基于較大大小的像素評估通用邊緣等式,而對于高分辨率光柵化,光柵化器基于較小大小的像素評估通用邊緣等式。用于低分辨率像素的地址通過依據縮放因數將低分辨率光柵化的結果向下縮放而被計算。用于小像素的像素位置通過將用于低分辨率像素的地址乘以縮放因數和添加小像素偏移而被計算。
      [0127]所公開的技術的一個優(yōu)點是,對象可以多個分辨率而被一致地光柵化。該一致性允許低分辨率光柵化產生比現(xiàn)有技術更準確和精確的光柵化結果,用于隨后以較高分辨率的光柵化??缍鄠€分辨率光柵化的技術因此能夠更好地利用低分辨率光柵化的光柵化結果來做出某些決策,諸如分配多少存儲器,從而提高存儲器利用率,并增加性能。
      [0128]本發(fā)明的一個實施例可被實現(xiàn)為與計算機系統(tǒng)一起使用的程序產品。該程序產品的程序定義實施例的各功能(包括本文中描述的方法)并且可以被包含在各種計算機可讀存儲介質上。示例性計算機可讀存儲介質包括但不限于:(i)不可寫的存儲介質(例如,計算機內的只讀存儲器設備,諸如可由壓縮光盤只讀存儲器(CD-ROM)驅動器讀取的CD-ROM盤、閃存存儲器、只讀存儲器(ROM)芯片或任何類型的固態(tài)非易失性半導體存儲器),在其上存儲永久性信息jP(ii)可寫的存儲介質(例如,磁盤驅動器或硬盤驅動器內的軟盤或者任何類型的固態(tài)隨機存取半導體存儲器),在其上存儲可更改的信息。
      [0129]以上已參照具體實施例對本發(fā)明進行了描述。然而,本領域普通技術人員將理解的是,可對此做出各種修改和改變而不脫離如隨附權利要求書中所闡述的本發(fā)明的較寬精神和范圍。因此,前面的描述以及附圖應被視為是例示性而非限制性的意義。
      [0130]因此,本發(fā)明的實施例的范圍在下面的權利要求中加以闡述。
      【權利要求】
      1.一種用于光柵化對象的方法,包括: 確定與通用柵格相對應的通用分辨率; 基于所述通用分辨率和表示與所述對象相關聯(lián)的幾何數據的數據來計算通用邊緣等式;以及 基于所述通用邊緣等式和第一分辨率來確定包括多個覆蓋大像素的大像素覆蓋數據。
      2.一種用于光柵化對象的圖形處理管線,包括: 設定單元,其配置為基于通用分辨率和表示與所述對象相關聯(lián)的幾何數據的數據來計算通用邊緣等式;以及 光柵化器單元,其配置為基于所述通用邊緣等式和第一分辨率來確定包括多個覆蓋大像素的大像素覆蓋數據。
      3.根據權利要求2所述的圖形處理管線,其中所述光柵化器單元進一步配置為基于所述通用邊緣等式、所述多個覆蓋大像素以及第二分辨率來確定包括多個覆蓋小像素的小像素覆蓋數據,其中所述第二分辨率高于所述第一分辨率。
      4.根據權利要求3所述的圖形處理管線,其中確定所述多個覆蓋大像素包括評估用于所述通用柵格中的多個大像素的覆蓋,并且其中確定所述多個覆蓋小像素包括評估用于所述通用柵格中的多個小像素的覆蓋。
      5.根據權利要求4所述的圖形處理管線,其中評估用于所述通用柵格中的所述多個大像素的覆蓋包括:針對所述多個大像素中的每個大像素,確定所述對象是否覆蓋所述大像素的任何部分。
      6.根據權利要求5所述的圖形處理管線,其中評估用于所述通用柵格中的所述多個小像素的覆蓋包括:針對所述多個小像素中的每個小像素,確定所述對象是否覆蓋所述小像素內的樣本。
      7.根據權利要求6所述的圖形處理管線,其中所述通用柵格中的所述多個大像素中的每個大像素具有大像素位置,并且進一步包括:針對所述多個大像素中的每個大像素,通過將所述大像素位置除以縮放因數來確定用于存儲大像素覆蓋數據的地址。
      8.根據權利要求7所述的圖形處理管線,其中所述通用柵格中的所述多個小像素中的每個小像素具有小像素位置,并且其中評估用于所述多個小像素的覆蓋數據進一步包括:針對所述多個小像素中的每個小像素,通過將用于存儲所述大像素覆蓋數據的地址乘以所述縮放因數和添加小像素偏移來確定小像素位置。
      9.根據權利要求8所述的圖形處理管線,其中所述因數是基于2的冪,并且其中除用于存儲所述大像素覆蓋數據的地址進一步包括:依據所述縮放因數的以2為底的對數來對用于存儲所述大像素覆蓋數據的地址進行移位。
      10.根據權利要8所述的圖形處理管線,其中乘用于存儲所述大像素覆蓋數據的地址進一步包括:依據所述縮放因數的以2為底的對數來對用于存儲所述大像素覆蓋數據的地址進行移位。
      【文檔編號】G06T15/00GK104036537SQ201310752855
      【公開日】2014年9月10日 申請日期:2013年12月31日 優(yōu)先權日:2013年3月8日
      【發(fā)明者】埃里克·B·盧姆, 約翰·S·蒙提姆, 沃爾特·R·斯坦納, 賈斯廷·科布, 亨利·帕爾德·莫爾頓 申請人:輝達公司
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1