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

用于存儲共享頂點(diǎn)的技術(shù)的制作方法

文檔序號:6525069閱讀:248來源:國知局
用于存儲共享頂點(diǎn)的技術(shù)的制作方法
【專利摘要】公開了用于存儲共享頂點(diǎn)的技術(shù)。圖形處理單元包括其每個配置為彼此并行處理圖形基元的幾何處理單元集。給定幾何處理單元生成一個或多個圖形基元或者幾何對象,并且對相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)進(jìn)行本地緩沖。幾何處理單元還對針對那些頂點(diǎn)的不同索引集進(jìn)行緩沖,其中每個這樣的集代表不同圖形基元或者幾何對象。幾何處理單元隨后可以彼此并行地流出所緩沖的頂點(diǎn)和索引到全局緩沖區(qū)。流輸出同步單元采用頂點(diǎn)可以寫入其中的全局頂點(diǎn)緩沖區(qū)中的不同基地址來協(xié)調(diào)由每個幾何處理單元提供的頂點(diǎn)和索引并行流。流輸出同步單元還提供索引可以寫入其中的全局索引緩沖區(qū)中的不同基地址給每個幾何處理單元。
【專利說明】用于存儲共享頂點(diǎn)的技術(shù)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明總體涉及處理圖形數(shù)據(jù),并且更具體地涉及用于存儲共享頂點(diǎn)的技術(shù)。
【背景技術(shù)】
[0002]常規(guī)的圖形處理單元(GPU)通常實(shí)現(xiàn)包括一系列圖形處理段的圖形處理管線。在圖形處理管線的每個段,GPU可以實(shí)施一個或多個不同的面向圖形的處理操作。例如,在一個段GPU可以匯編代表圖形場景的基元集,并且在后續(xù)段GPU可以對與基元集相關(guān)聯(lián)的頂點(diǎn)實(shí)施著色操作。最后,GPU可以將那些頂點(diǎn)光柵化為代表圖形場景的像素。
[0003]諸如以上示例中所描述的、實(shí)施常規(guī)圖形處理管線的GPU,通常包括幾何著色單元,其配置為對頂點(diǎn)和基于幾何(geometry-based)的信息實(shí)施著色操作,并且隨后輸出一個或多個圖形基元或者一個或多個相對更復(fù)雜的幾何對象到后續(xù)單元用于光柵化。對于每個所生成的圖形基元或者幾何對象,幾何著色單元輸出和與該圖形基元或者幾何對象相關(guān)聯(lián)的每個頂點(diǎn)相對應(yīng)的頂點(diǎn)數(shù)據(jù)。例如,當(dāng)處理三角形時,幾何著色單元將輸出用于該三角形的三個點(diǎn)的每一個的頂點(diǎn)數(shù)據(jù)。用于給定頂點(diǎn)的頂點(diǎn)數(shù)據(jù)可以描述場景中頂點(diǎn)的位置、與頂點(diǎn)相關(guān)聯(lián)的覆蓋數(shù)據(jù)或者除此之外的與頂點(diǎn)相關(guān)聯(lián)的屬性集。當(dāng)生成圖形基元或者幾何對象時,幾何著色單元通常將所生成的圖形基元或者組成所生成的幾何對象的全部或一部分的每個圖形基元,存儲為與該基元相關(guān)聯(lián)的頂點(diǎn)集和與該集中的每個頂點(diǎn)相對應(yīng)的頂點(diǎn)數(shù)據(jù)。
[0004]另外,在一些情況中,幾何著色單元可能生成幾何對象,其包括共享頂點(diǎn)的互連的圖形基元的集合。幾何對象可以是例如扇形、條帶形或網(wǎng)狀類型的幾何對象。例如,給定圖形場景可以包括在扇形、條帶形或網(wǎng)狀中互連的數(shù)個個體圖形基元,以創(chuàng)建具有任意形狀的表面外觀。表面中的每個圖形基元可以通過在兩個圖形基元之間共享的一個或多個頂點(diǎn)連接到鄰近的圖形基元。在其他情況中,可以由幾何著色單元生成共享一個或多個公共頂點(diǎn)的諸如三角形或者條帶形的多個幾何對象。
[0005]在這些不同情況中,幾何著色單元通常存儲與在圖形基元或者幾何對象之間共享的每個頂點(diǎn)相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)的冗余復(fù)制(copy)。然而,因?yàn)榈湫偷膱D形場景可能包括數(shù)百萬個共享頂點(diǎn),所以這樣的方法是有問題的。結(jié)果是,常規(guī)幾何著色單元可能存儲數(shù)百萬個冗余數(shù)據(jù)的復(fù)制。處理這樣的冗余數(shù)據(jù)無效地消耗GPU資源并且可能降低渲染圖形場景的速度。
[0006]因此,本領(lǐng)域所需要的是,用于處理圖形場景中的圖形基元或者幾何對象之間所共享的頂點(diǎn)的改善的技術(shù)。

【發(fā)明內(nèi)容】

[0007]本發(fā)明的一個實(shí)施例闡述了用于緩沖與幾何對象相關(guān)聯(lián)的數(shù)據(jù)的計算機(jī)實(shí)現(xiàn)的方法。方法包括,接收第一幾何對象;生成與第一幾何對象相關(guān)聯(lián)的第一頂點(diǎn)集;以及將第一索引集存儲在本地索引緩沖區(qū)中的第一條目中,其中第一索引集中的每個索引引用(reference)第一頂點(diǎn)集中的不同頂點(diǎn),以及其中第一條目對應(yīng)于與第一頂點(diǎn)集相關(guān)聯(lián)的圖形基元或者幾何對象。
[0008]所公開的方法的一個優(yōu)點(diǎn)在于,由于頂點(diǎn)數(shù)據(jù)被索引,因此頂點(diǎn)數(shù)據(jù)的冗余復(fù)制不被存儲在不同幾何著色單元的本地的頂點(diǎn)緩沖區(qū)或者全局頂點(diǎn)緩沖區(qū)中,從而節(jié)約處理單元的資源并且提高整體處理效率。
【專利附圖】

【附圖說明】
[0009]因此,可以詳細(xì)地理解本發(fā)明的上述特征,并且可以參考實(shí)施例得到對如上面所簡要概括的本發(fā)明更具體的描述,其中一些實(shí)施例在附圖中示出。然而,應(yīng)當(dāng)注意的是,附圖僅示出了本發(fā)明的典型實(shí)施例,因此不應(yīng)被認(rèn)為是對其范圍的限制,本發(fā)明可以具有其他等效的實(shí)施例。
[0010]圖1是示出了配置為實(shí)現(xiàn)本發(fā)明的一個或多個方面的計算機(jī)系統(tǒng)的框圖;
[0011]圖2是根據(jù)本發(fā)明的一個實(shí)施例的、用于圖1的計算機(jī)系統(tǒng)的并行處理子系統(tǒng)的框圖;
[0012]圖3是根據(jù)本發(fā)明的一個實(shí)施例的、圖2的通用處理集群內(nèi)的流多處理器的一部分的框圖;
[0013]圖4是根據(jù)本發(fā)明一個實(shí)施例的、圖2的一個或多個并行處理單元可以配置以實(shí)現(xiàn)的圖形處理管線的示意圖;
[0014]圖5是根據(jù)本發(fā)明一個實(shí)施例的、幾何處理單元的集合的示意圖;
[0015]圖6是根據(jù)本發(fā)明一個實(shí)施例的、用于將頂點(diǎn)數(shù)據(jù)和索引數(shù)據(jù)存儲在多個本地緩沖區(qū)中的方法步驟的流程圖;
[0016]圖7是根據(jù)本發(fā)明一個實(shí)施例的、用于將頂點(diǎn)和索引流出(streaming)到多個全局緩沖區(qū)的方法步驟的流程圖;
[0017]圖8是根據(jù)本發(fā)明一個實(shí)施例的、用于填充多個全局緩沖區(qū)的方法步驟的流程圖;
[0018]圖9是根據(jù)本發(fā)明一個實(shí)施例的、示出配置為本地緩沖索引和頂點(diǎn)的示例性幾何處理單元的示意圖;
[0019]圖10是根據(jù)本發(fā)明一個實(shí)施例的、示出配置為存儲索引和頂點(diǎn)的示例性全局緩沖區(qū)的示意圖。
【具體實(shí)施方式】
[0020]在下面的描述中,將闡述大量的具體細(xì)節(jié)以提供對本發(fā)明更透徹的理解。然而,本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒有一個或多個這些具體細(xì)節(jié)的情況下得以實(shí)施。
[0021]系統(tǒng)概述
[0022]圖1為示出了配置為實(shí)現(xiàn)本發(fā)明的一個或多個方面的計算機(jī)系統(tǒng)100的框圖。計算機(jī)系統(tǒng)100包括經(jīng)由可以包括存儲器橋105的互連路徑通信的中央處理單元(CPU) 102和系統(tǒng)存儲器104。存儲器橋105可以是例如北橋芯片,經(jīng)由總線或其他通信路徑106 (例如超傳輸(HyperTransport)鏈路)連接到I/O (輸入/輸出)橋107。I/O橋107,其可以是例如南橋芯片,從一個或多個用戶輸入設(shè)備108 (例如鍵盤、鼠標(biāo))接收用戶輸入并且經(jīng)由通信路徑106和存儲器橋105將該輸入轉(zhuǎn)發(fā)到CPU102。并行處理子系統(tǒng)112經(jīng)由總線或第二通信路徑113 (例如外圍部件互連(PCI)Express、加速圖形端口或超傳輸鏈路)耦連到存儲器橋105。在一個實(shí)施例中,并行處理子系統(tǒng)112是將像素傳遞到顯示設(shè)備110的圖形子系統(tǒng),顯示設(shè)備110可以是任何常規(guī)的陰極射線管、液晶顯示器、發(fā)光二級管顯示器等。系統(tǒng)盤114也連接到I/O橋107并可以配置為存儲內(nèi)容、應(yīng)用程序和數(shù)據(jù),由CPU102和并行處理子系統(tǒng)112使用。系統(tǒng)盤114提供用于應(yīng)用程序和數(shù)據(jù)的非易失性存儲,并且可以包括固定的或者可移動的硬盤驅(qū)動器、閃存設(shè)備和⑶-ROM (光盤只讀存儲器)、DVD-ROM (數(shù)字通用光盤-ROM)、藍(lán)光光盤、HD-DVD (高清DVD)或者其他磁的、光的或固態(tài)存儲設(shè)備。
[0023]交換器116提供I/O橋107與諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的連接。其他部件(未明確示出),包括通用串行總線(USB)或其他端口連接、壓縮光盤(CD)驅(qū)動器、數(shù)字通用光盤(DVD)驅(qū)動器、膠片錄制設(shè)備及類似部件,也可以連接到I/O橋107。圖1所示的各種通信路徑包括具體命名的通信路徑106和113可以使用任何適合的協(xié)議實(shí)現(xiàn),諸如PC1-EXpreSS、AGP (加速圖形端口)、超傳輸或者任何其他總線或點(diǎn)到點(diǎn)通信協(xié)議,并且如本領(lǐng)域已知的,不同設(shè)備間的連接可使用不同協(xié)議。
[0024]在一個實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構(gòu)成圖形處理單元(GPU)。在另一個實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于通用處理的電路,同時保留底層(underlying)的計算架構(gòu),本文將更詳細(xì)地進(jìn)行描述。在又一個實(shí)施例中,可以將并行處理子系統(tǒng)112與一個或多個其他系統(tǒng)元件集成在單個子系統(tǒng)中,諸如結(jié)合存儲器橋105、CPU102以及I/O橋107,以形成片上系統(tǒng)(SoC)。
[0025]應(yīng)該理解,本文所示系統(tǒng)是示例性的,并且變化和修改都是可能的。連接拓?fù)?,包括橋的?shù)目和布置、CPU102的數(shù)目以及并行處理子系統(tǒng)112的數(shù)目,可根據(jù)需要修改。例如,在一些實(shí)施例中,系統(tǒng)存儲器104直接連接到CPU102而不是通過橋,并且其他設(shè)備經(jīng)由存儲器橋105和CPU102與系統(tǒng)存儲器104通信。在其他替代性拓?fù)渲?,并行處理子系統(tǒng)112連接到I/O橋107或直接連接到CPU102,而不是連接到存儲器橋105。而在其他實(shí)施例中,I/O橋107和存儲器橋105可能被集成到單個芯片上而不是作為一個或多個分立設(shè)備存在。大型實(shí)施例可以包括兩個或更多個CPU102以及兩個或更多個并行處理子系統(tǒng)112。本文所示的特定部件是可選的;例如,任何數(shù)目的插卡或外圍設(shè)備都可能得到支持。在一些實(shí)施例中,交換器116被去掉,網(wǎng)絡(luò)適配器118和插卡120、121直接連接到I/O橋107。
[0026]圖2示出了根據(jù)本發(fā)明的一個實(shí)施例的并行處理子系統(tǒng)112。如所示的,并行處理子系統(tǒng)112包括一個或多個并行處理單元(PI3U) 202,每個并行處理單元202都耦連到本地并行處理(PP)存儲器204。通常,并行處理子系統(tǒng)包括U個PPU,其中U≥1。(本文中,類似對象的多個實(shí)例需要時以標(biāo)識對象的參考數(shù)字和標(biāo)識實(shí)例的括號中的數(shù)字來表示。)PPU202和并行處理存儲器204可使用一個或多個集成電路設(shè)備來實(shí)現(xiàn),諸如可編程處理器、專用集成電路(ASIC)或存儲器設(shè)備,或者以任何其他技術(shù)可行的方式來實(shí)現(xiàn)。
[0027]再參考圖1以及圖2,在一些實(shí)施例中,并行處理子系統(tǒng)112中的一些或所有PPU202是具有渲染管線的圖形處理器,其可以配置為實(shí)施與下述相關(guān)的各種操作:經(jīng)由存儲器橋105和第二通信路徑113從CPU102和/或系統(tǒng)存儲器104所供應(yīng)的圖形數(shù)據(jù)生成像素數(shù)據(jù),與本地并行處理存儲器204 (可被用作圖形存儲器,包括例如常規(guī)幀緩沖區(qū)(buffer))交互以存儲和更新像素數(shù)據(jù),傳遞像素數(shù)據(jù)到顯示設(shè)備110等等。在一些實(shí)施例中,并行處理子系統(tǒng)112可包括一個或多個作為圖形處理器而操作的PPU202以及一個或多個用于通用計算的其他PPU202。這些PPU202可以是同樣的或不同的,并且每個PPU202可具有一個或多個專用并行處理存儲器設(shè)備或不具有專用并行處理存儲器設(shè)備。并行處理子系統(tǒng)112中的一個或多個PPU202可輸出數(shù)據(jù)到顯示設(shè)備110,或者并行處理子系統(tǒng)112中的每個PPU202可輸出數(shù)據(jù)到一個或多個顯示設(shè)備110。
[0028]在操作中,CPU102是計算機(jī)系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)部件的操作。具體地,CPU102發(fā)出控制PPU202的操作的命令。在一些實(shí)施例中,CPU102寫入用于每個PPU202的命令流到數(shù)據(jù)結(jié)構(gòu)中(在圖1或圖2中未明確示出),該數(shù)據(jù)結(jié)構(gòu)可位于系統(tǒng)存儲器104、并行處理存儲器204、或CPU102和PPU202都可訪問的其他存儲位置中。將指向每個數(shù)據(jù)結(jié)構(gòu)的指針寫到入棧緩沖區(qū)(pushbuffer)以發(fā)起對數(shù)據(jù)結(jié)構(gòu)中的命令流的處理。PPU202從一個或多個入棧緩沖區(qū)讀取命令流,然后相對于CPU102的操作異步地執(zhí)行命令??梢越?jīng)由設(shè)備驅(qū)動程序103由應(yīng)用程序?yàn)槊總€入棧緩沖區(qū)指定執(zhí)行優(yōu)先級以控制對不同入棧緩沖區(qū)的調(diào)度。
[0029]現(xiàn)在返回參考圖2和圖1,每個PPU202包括經(jīng)由連接到存儲器橋105 (或者,在一個替代性實(shí)施例中,直接連接到CPU102)的通信路徑113與計算機(jī)系統(tǒng)100的其余部分通信的I/O (輸入/輸出)單元205。PPU202到計算機(jī)系統(tǒng)100的其余部分的連接也可以變化。在一些實(shí)施例中,并行處理子系統(tǒng)112可實(shí)現(xiàn)為可插入到計算機(jī)系統(tǒng)100的擴(kuò)展槽中的插卡。在其他實(shí)施例中,PPU202可以和諸如存儲器橋105或I/O橋107的總線橋集成在單個芯片上。而在其他實(shí)施例中,PPU202的一些或所有元件可以和CPU102集成在單個芯片上。
[0030]在一個實(shí)施例中,通信路徑113是PCI Express鏈路,如本領(lǐng)域所知的,其中專用通道被分配到每個PPU202。也可以使用其他通信路徑。I/O單元205生成用于在通信路徑113上傳送的包(或其他信號),并且還從通信路徑113接收所有傳入的包(或其他信號),將傳入的包引導(dǎo)到PPU202的適當(dāng)部件。例如,可將與處理任務(wù)相關(guān)的命令引導(dǎo)到主機(jī)接口206,而將與存儲器操作相關(guān)的命令(例如,對并行處理存儲器204的讀取或?qū)懭?引導(dǎo)到存儲器交叉開關(guān)單元210。主機(jī)接口 206讀取每個入棧緩沖區(qū),并且將存儲在入棧緩沖區(qū)中的命令流輸出到前端212。
[0031]有利地,每個PPU202都實(shí)現(xiàn)高度并行處理架構(gòu)。如詳細(xì)示出的,PPU202 (O)包括處理集群陣列230,該陣列230包括C個通用處理集群(GPC)208,其中C≥I。每個GPC208能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個線程是程序的實(shí)例(instance)。在各種應(yīng)用中,可分配不同的GPC208用于處理不同類型的程序或用于實(shí)施不同類型的計算。GPC208的分配可以取決于因每種類型的程序或計算所產(chǎn)生的工作量而變化。
[0032]GPC208從任務(wù)/工作單元207內(nèi)的工作分布單元接收所要執(zhí)行的處理任務(wù)。工作分布單元接收指向編碼為任務(wù)元數(shù)據(jù)(TMD)并存儲在存儲器中的處理任務(wù)的指針。指向TMD的指針包括在存儲為入棧緩沖區(qū)并由前端單元212從主機(jī)接口 206接收的命令流中??梢跃幋a為TMD的處理任務(wù)包括所要處理的數(shù)據(jù)的索引,以及定義數(shù)據(jù)將被如何處理(例如,什么程序?qū)⒈粓?zhí)行)的狀態(tài)參數(shù)和命令。任務(wù)/工作單元207從前端212接收任務(wù)并確保在每一個TMD所指定的處理發(fā)起前,將GPC208配置為有效狀態(tài)??梢詾槊總€TMD指定用來調(diào)度處理任務(wù)的執(zhí)行的優(yōu)先級。還可從處理集群陣列230接收處理任務(wù)??蛇x地,TMD可包括控制將TMD添加到處理任務(wù)列表(或指向處理任務(wù)的指針的列表)的頭部還是尾部的參數(shù),從而提供除優(yōu)先級以外的另一級別的控制。
[0033]存儲器接口 214包括D個分區(qū)單元215,每個分區(qū)單元215直接耦連到并行處理存儲器204的一部分,其中D > I。如所示的,分區(qū)單元215的數(shù)目一般等于動態(tài)隨機(jī)存取存儲器(DRAM) 220的數(shù)目。在其他實(shí)施例中,分區(qū)單元215的數(shù)目也可以不等于存儲器設(shè)備的數(shù)目。本領(lǐng)域的普通技術(shù)人員應(yīng)該理解DRAM220可以用其他合適的存儲設(shè)備來替代并且可以是一般常規(guī)的設(shè)計。因此省略了詳細(xì)描述。諸如幀緩沖區(qū)或紋理映射圖的渲染目標(biāo)可以跨DRAM220加以存儲,這允許分區(qū)單元215并行寫入每個渲染目標(biāo)的各部分以有效地使用并行處理存儲器204的可用帶寬。
[0034]任何一個GPC208都可以處理要被寫到并行處理存儲器204內(nèi)的任何DRAM220的數(shù)據(jù)。交叉開關(guān)單元210配置為路由每個GPC208的輸出到任何分區(qū)單元215的輸入或到另一個GPC208用于進(jìn)一步處理。GPC208通過交叉開關(guān)單元210與存儲器接口 214通信,以對各種外部存儲器設(shè)備進(jìn)行讀取或?qū)懭?。在一個實(shí)施例中,交叉開關(guān)單元210具有到存儲器接口 214的連接以和I/O單元205通信,以及到本地并行處理存儲器204的連接,從而使得在不同GPC208內(nèi)的處理內(nèi)核能夠與系統(tǒng)存儲器104或?qū)τ赑PU202而言非本地的其他存儲器通信。在圖2所示的實(shí)施例中,交叉開關(guān)單元210直接與I/O單元205連接。交叉開關(guān)單元210可使用虛擬信道來分開GPC208與分區(qū)單元215之間的業(yè)務(wù)流。
[0035]另外,GPC208可被編程以執(zhí)行與種類繁多的應(yīng)用相關(guān)的處理任務(wù),包括但不限于,線性和非線性數(shù)據(jù)變換、視頻和/或音頻數(shù)據(jù)過濾、建模操作(例如,應(yīng)用物理定律以確定對象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細(xì)分(tessellation)著色器、頂點(diǎn)著色器、幾何著色器、和/或像素著色器程序)等等。PPU202可將數(shù)據(jù)從系統(tǒng)存儲器104和/或本地并行處理存儲器204轉(zhuǎn)移到內(nèi)部(片上)存儲器中,處理該數(shù)據(jù),并且將結(jié)果數(shù)據(jù)寫回到系統(tǒng)存儲器104和/或本地并行處理存儲器204,其中這樣的數(shù)據(jù)可以由其他系統(tǒng)部件訪問,所述其他系統(tǒng)部件包括CPU102或另一個并行處理子系統(tǒng)112。
[0036]PPU202可配備有任何容量(amount)的本地并行處理存儲器204,包括沒有本地存儲器,并且可以以任何組合方式使用本地存儲器和系統(tǒng)存儲器。例如,在統(tǒng)一存儲器架構(gòu)(UMA)實(shí)施例中,PPU202可以是圖形處理器。在這樣的實(shí)施例中,將不提供或幾乎不提供專用的圖形(并行處理)存儲器,并且PPU202會以排他或幾乎排他的方式使用系統(tǒng)存儲器。在UMA實(shí)施例中,PPU202可集成到橋式芯片中或處理器芯片中,或作為具有高速鏈路(例如,PCI Express)的分立芯片提供,所述高速鏈路經(jīng)由橋式芯片或其他通信手段將PPU202連接到系統(tǒng)存儲器。
[0037]如上所示,在并行處理子系統(tǒng)112中可以包括任何數(shù)目的PPU202。例如,可在單個插卡上提供多個PPU202、或可將多個插卡連接到通信路徑113、或可將一個或多個PPU202集成到橋式芯片中。在多PPU系統(tǒng)中的PPU202可以彼此同樣或不同。例如,不同的PPU202可能具有不同數(shù)目的處理內(nèi)核、不同容量的本地并行處理存儲器等等。在存在多個PPU202的情況下,可并行操作那些PI3U從而以高于單個PPU202所可能達(dá)到的吞吐量來處理數(shù)據(jù)。包含一個或多個PPU202的系統(tǒng)可以以各種配置和形式因素來實(shí)現(xiàn),包括臺式電腦、筆記本電腦或手持式個人計算機(jī)、服務(wù)器、工作站、游戲控制臺、嵌入式系統(tǒng)等等。[0038]可以在GPC208上并發(fā)執(zhí)行多個處理任務(wù)并且處理任務(wù)在執(zhí)行期間可以生成一個或多個“子”處理任務(wù)。任務(wù)/工作單元207接收任務(wù)并動態(tài)調(diào)度處理任務(wù)和子處理任務(wù)用于由GPC208執(zhí)行。
[0039]圖3是根據(jù)本發(fā)明的一個實(shí)施例的、圖2的GPC208內(nèi)的流多處理器(SM)310的框圖。每個GPC208可配置為并行執(zhí)行大量線程,其中術(shù)語“線程”是指在特定輸入數(shù)據(jù)集上執(zhí)行的特定程序的實(shí)例。在一些實(shí)施例中,單指令、多數(shù)據(jù)(SIMD)指令發(fā)出技術(shù)用于在不提供多個獨(dú)立指令單元的情況下支持大量線程的并行執(zhí)行。在其他實(shí)施例中,單指令、多線程(SMT)技術(shù)用于使用配置為向GPC208中的每一個內(nèi)的處理引擎集發(fā)出指令的公共指令單元來支持大量一般來說同步的線程的并行執(zhí)行。不同于所有處理引擎通常都執(zhí)行同樣指令的SMD執(zhí)行機(jī)制,SIMT執(zhí)行通過給定線程程序允許不同線程更容易跟隨分散執(zhí)行路徑。本領(lǐng)域普通技術(shù)人員應(yīng)該理解SMD處理機(jī)制代表SMT處理機(jī)制的功能子集。
[0040]經(jīng)由將處理任務(wù)分布到一個或多個流多處理器(SMs) 310的管線管理器(未示出)來有利地控制GPC208的操作,其中每個SM310配置為處理一個或多個線程組。每個SM310包括指令LI高速緩存370,其配置為經(jīng)由GPC208內(nèi)的L1.5高速緩存(未示出)接收指令和常數(shù)。線程束調(diào)度器和指令單元312從指令LI高速緩存370接收指令和常數(shù),并且根據(jù)指令和常數(shù)來控制本來寄存器堆304和SM310功能單元。SM310功能單元包括N個exec (執(zhí)行或處理)單元302和P個加載-存儲單元(LSU) 303。如本領(lǐng)域已知的,SM功能單元可以是管線化的,允許在前一個指令完成之前發(fā)出新指令??商峁┕δ軋?zhí)行單元的任何組合。在一個實(shí)施例中,功能單元支持各種各樣的操作,包括整數(shù)和浮點(diǎn)運(yùn)算(例如加法和乘法)、比較操作、布爾操作(AND、0R、X0R)、移位和各種代數(shù)函數(shù)的計算(例如平面插值、三角函數(shù)、指數(shù)函數(shù)和對數(shù)函數(shù)等等);以及相同功能單元硬件可均衡地用來實(shí)施不同的操作。
[0041]如本文之前所定義的,傳送到特定GPC208的一系列指令構(gòu)成線程,并且跨SM310內(nèi)的并行處理引擎(未示出)的某一數(shù)目的并發(fā)執(zhí)行線程的集合在本文中稱為“線程束(warp)”或“線程組”。如本文所使用的,“線程組”是指對不同輸入數(shù)據(jù)并發(fā)執(zhí)行相同程序的一組線程,所述組的一個線程被指派到SM310內(nèi)的不同處理引擎。線程組可以包括比SM310內(nèi)的處理引擎數(shù)目少的線程,在這種情況下一些處理引擎將在該線程組正在被處理的周期期間處于閑置狀態(tài)。線程組還可以包括比SM310內(nèi)的處理引擎數(shù)目多的線程,在這種情況下處理將在連續(xù)的時鐘周期內(nèi)發(fā)生。因?yàn)槊總€SM310可以并發(fā)支持多達(dá)G個線程組,結(jié)果是在包括M個流多處理器310的GPC208中,在任何給定時間在GPC208中可以執(zhí)行多達(dá)G*M個線程組的系統(tǒng)。
[0042]此外,多個相關(guān)線程組可以在SM310內(nèi)同時活動(在執(zhí)行的不同階段)。該線程組集合在本文中稱為“協(xié)作線程陣列”(“CTA”)或“線程陣列”。特定CTA的大小等于m*k,其中k是線程組中并發(fā)執(zhí)行線程的數(shù)目并且通常是SM310內(nèi)的并行處理引擎數(shù)目的整數(shù)倍,以及m是SM310內(nèi)同時活動的線程組的數(shù)目。CTA的大小一般由編程者以及可用于CTA的硬件資源諸如存儲器或寄存器的容量來確定。
[0043]在本發(fā)明的實(shí)施例中,使用計算系統(tǒng)的PPU202或其他處理器來使用線程陣列執(zhí)行通用計算是可取的。為線程陣列中的每個線程指派在線程的執(zhí)行期間對于線程可訪問的唯一的線程標(biāo)識符(“線程ID”)??杀欢x為一維或多維數(shù)值的線程ID控制線程處理行為的各方面。例如,線程ID可用于確定線程將要處理輸入數(shù)據(jù)集的哪部分和/或確定線程將要產(chǎn)生或?qū)戄敵鰯?shù)據(jù)集的哪部分。
[0044]每線程指令序列可包括定義線程陣列的代表性線程和一個或多個其他線程之間的協(xié)作行為的至少一個指令。例如,每線程指令序列可能包括在序列中的特定點(diǎn)處掛起用于代表性線程的操作執(zhí)行直到諸如其他線程的一個或多個到達(dá)該特定點(diǎn)的時間為止的指令、用于代表性線程將數(shù)據(jù)存儲在其他線程的一個或多個有權(quán)訪問的共享存儲器中的指令、用于代表性線程原子地讀取和更新存儲在其他線程的一個或多個基于它們的線程ID有權(quán)訪問的共享存儲器中的數(shù)據(jù)的指令等等。CTA程序還可以包括計算數(shù)據(jù)將從其讀取的共享存儲器中的地址的指令,該地址是線程ID的函數(shù)。通過定義合適的函數(shù)并提供同步技術(shù),可以以可預(yù)測的方式由CTA的一個線程將數(shù)據(jù)寫入共享存儲器中的給定位置并由同一個CTA的不同線程從該位置讀取數(shù)據(jù)。因此,數(shù)據(jù)在線程之間共享的任何期望模式可以得到支持,以及CTA中的任何線程可以與同一個CTA中的任何其他線程共享數(shù)據(jù)。如果存在數(shù)據(jù)在CTA的線程之間的共享,則其范圍由CTA程序確定;因此,應(yīng)該理解的是,在使用CTA的特定應(yīng)用中,CTA的線程可能會或可能不會真正互相共享數(shù)據(jù),這取決于CTA程序,術(shù)語“CTA”和“線程陣列”在本文作為同義詞使用。
[0045]SM310提供具有不同級別的可訪問性的片上(內(nèi)部)數(shù)據(jù)存儲。特殊寄存器(未示出)對于LSU303可讀但不可寫并且用于存儲定義每個線程的“位置”的參數(shù)。在一個實(shí)施例中,特殊寄存器包括每線程(或SM310內(nèi)的每exec單元302) —個的存儲線程ID的寄存器;每個線程ID寄存器僅由各自的exec單元302可訪問。特殊寄存器還可以包括附加寄存器,其對于執(zhí)行由TMD322所代表的同一個處理任務(wù)的所有線程(或由所有LSU303)可讀,其存儲CTA標(biāo)識符、CTA維數(shù)、CTA所屬網(wǎng)格(grid)的維數(shù)(或隊(duì)列位置,如果TMD322編碼隊(duì)列任務(wù)而不是網(wǎng)格任務(wù)的話)、以及CTA被指派到的TMD322的標(biāo)識符。
[0046]如果TMD322是網(wǎng)格TMD322,則TMD322的執(zhí)行會啟動和執(zhí)行固定數(shù)目的CTA以處理存儲在隊(duì)列525中的固定量的數(shù)據(jù)。將CTA的數(shù)目指定為網(wǎng)格寬度、高度和深度的乘積??梢詫⒐潭康臄?shù)據(jù)存儲在TMD322中或TMD322可以存儲指向?qū)⒂蒀TA所處理的數(shù)據(jù)的指針。TMD322還存儲由CTA所執(zhí)行的程序的開始地址。
[0047]如果TMD322是隊(duì)列TMD,那么使用TMD322的隊(duì)列特點(diǎn),這意味著將要被處理的數(shù)據(jù)量不一定是固定的。隊(duì)列條目存儲用于由指派到TMD322的CTA所處理的數(shù)據(jù)。隊(duì)列條目還可以代表在線程執(zhí)行期間由另一個TMD322所生成的子任務(wù),從而提供嵌套并行性。通常線程或包括線程的CTA的執(zhí)行被掛起直到子任務(wù)的執(zhí)行完成??梢詫㈥?duì)列存儲在TMD322中或與TMD322分開存儲,在該情況下TMD322存儲指向該隊(duì)列的隊(duì)列指針。有利地,當(dāng)代表子任務(wù)的TMD322正在執(zhí)行時可以將由子任務(wù)所生成的數(shù)據(jù)寫到隊(duì)列。隊(duì)列可以實(shí)現(xiàn)為循環(huán)隊(duì)列以使得數(shù)據(jù)的總量不限于隊(duì)列的大小。
[0048]屬于網(wǎng)格的CTA具有指示網(wǎng)格內(nèi)各自CTA的位置的隱含網(wǎng)格寬度、高度和深度參數(shù)。在初始化期間響應(yīng)于經(jīng)由前端212從設(shè)備驅(qū)動程序103所接收的命令來寫特殊寄存器并且在處理任務(wù)的執(zhí)行期間特殊寄存器不改變。前端212調(diào)度每個處理任務(wù)用于執(zhí)行。每個CTA與具體TMD322相關(guān)聯(lián)用于一個或多個任務(wù)的并發(fā)執(zhí)行。此外,單個GPC208可以并發(fā)執(zhí)行多個任務(wù)。
[0049]參數(shù)存儲器(未示出)存儲可由同一個CTA內(nèi)的任何線程(或任何LSU303)讀取但不可由其寫入的運(yùn)行時間參數(shù)(常數(shù))。在一個實(shí)施例中,設(shè)備驅(qū)動程序103在引導(dǎo)SM310開始執(zhí)行使用參數(shù)的任務(wù)之前將這些參數(shù)提供給參數(shù)存儲器。任何CTA內(nèi)的任何線程(或SM310內(nèi)的任何exec單元302)可以通過存儲器接口 214訪問全局存儲器。可以將全局存儲器的各部分存儲在LI高速緩存320中。
[0050]每個線程將本地寄存器堆304用作暫存空間;每個寄存器被分配以專用于一個線程,并且在本地寄存器堆304的任何部分中的數(shù)據(jù)僅對于寄存器被分配到的線程可訪問。本地寄存器堆304可以實(shí)現(xiàn)為物理上或邏輯上分為P個通道的寄存器堆,每個通道具有一定數(shù)目的條目(其中每個條目可以存儲例如32位字)。將一個通道指派到N個exec單元302和P個下載-存儲單元LSU303的每一個,并且利用用于執(zhí)行同一個程序的不同線程的數(shù)據(jù)來填充不同通道中的相應(yīng)條目以幫助SIMD執(zhí)行??梢詫⑼ǖ赖牟煌糠址峙涞紾個并發(fā)線程組中的不同線程組,以使得本地寄存器堆304中的給定條目僅對于特定線程可訪問。在一個實(shí)施例中,保留本地寄存器堆304內(nèi)的某些條目用于存儲線程標(biāo)識符,實(shí)現(xiàn)特殊寄存器之一。此外,一致LI高速緩存375存儲用于N個exec單元302和P個下載-存儲單元LSU303的每個通道的一致值或常數(shù)值。
[0051]共享存儲器306對于單個CTA內(nèi)的線程可訪問;換言之,共享存儲器306中的任何位置對于同一個CTA內(nèi)的任何線程(或?qū)τ赟M310內(nèi)的任何處理引擎)可訪問。共享存儲器306可以實(shí)現(xiàn)為具有允許任何處理引擎對共享存儲器中的任何位置讀取或?qū)懭氲幕ミB的共享寄存器堆或共享片上高速緩存存儲器。在其他實(shí)施例中,共享狀態(tài)空間可能映射到片外存儲器的每CTA區(qū)上并被高速緩存在LI高速緩存320中。參數(shù)存儲器可以實(shí)現(xiàn)為在實(shí)現(xiàn)共享存儲器306的同一個共享寄存器堆或共享高速緩存存儲器內(nèi)的指定部分,或者實(shí)現(xiàn)為LSU303對其具有只讀訪問權(quán)限的分開的共享寄存器堆或片上高速緩存存儲器。在一個實(shí)施例中,實(shí)現(xiàn)參數(shù)存儲器的區(qū)域還用于存儲CTA ID和任務(wù)ID,以及CTA和網(wǎng)格維數(shù)或隊(duì)列位置,實(shí)現(xiàn)特殊寄存器的各部分。SM310中的每個LSU303耦連到統(tǒng)一地址映射單元352,統(tǒng)一地址映射單元352將為在統(tǒng)一存儲器空間中所指定的加載和存儲指令所提供的地址轉(zhuǎn)換為每個各異存儲器空間中的地址。因此,指令可以用于通過指定統(tǒng)一存儲器空間中的地址來訪問本地、共享或全局存儲器空間中的任何一個。
[0052]每個SM310中的LI高速緩存320可以用于高速緩存私有的每線程本地數(shù)據(jù)還有每應(yīng)用全局?jǐn)?shù)據(jù)。在一些實(shí)施例中,可以將每CTA共享數(shù)據(jù)高速緩存在LI高速緩存320中。LSU303經(jīng)由存儲器和高速緩存互連380耦連到共享存儲器306和LI高速緩存320。
[0053]應(yīng)該理解本文所述的內(nèi)核架構(gòu)是示例性的并且變化和修改都是可能的。任何數(shù)目的處理單元例如SM310可以包括在GPC208內(nèi)。進(jìn)一步地,如圖2所示,PPU202可以包括任何數(shù)目的GPC208,所述GPC208有利地在功能上彼此相似以使得執(zhí)行行為不取決于哪個GPC208接收特定處理任務(wù)。進(jìn)一步地,每個GPC208有利地使用分開且各異的處理單元、LI高速緩存來獨(dú)立于其他GPC208操作以為一個或多個應(yīng)用程序執(zhí)行任務(wù)。
[0054]本領(lǐng)域普通技術(shù)人員應(yīng)該理解圖1-3所描述的架構(gòu)決不限制本發(fā)明的范圍并且在不脫離本發(fā)明范圍的情況下本文所教導(dǎo)的技術(shù)可以在任何經(jīng)適當(dāng)配置的處理單元上實(shí)現(xiàn),所述處理單元包括但不限于一個或多個CPU、一個或多個多核CPU、一個或多個PPU202、一個或多個GPC208、一個或多個圖形或?qū)S锰幚韱卧鹊取?br> [0055]圖形管線架構(gòu)
[0056]圖4為根據(jù)本發(fā)明一個實(shí)施例的,由圖2中一個或多個PPU202經(jīng)配置以實(shí)現(xiàn)的圖形處理管線400的示意圖。例如,一個SPM310可被配置為執(zhí)行一個或多個頂點(diǎn)處理單元415、幾何(geometry)處理單元425以及片段處理單元460的功能。數(shù)據(jù)匯編器410、基元匯編器420、光柵器455以及光柵操作單元465的功能也可以由GPC208和相應(yīng)的分區(qū)單元215中的其他處理引擎執(zhí)行。可替代地,可采用用于一個或多個功能的專用處理單元來實(shí)現(xiàn)圖形處理管線400。
[0057]數(shù)據(jù)匯編器410處理單元針對高序位的表面、基元等采集頂點(diǎn)數(shù)據(jù),并輸出包括頂點(diǎn)屬性的頂點(diǎn)數(shù)據(jù)到頂點(diǎn)處理單元415。頂點(diǎn)處理單元415是被配置為執(zhí)行頂點(diǎn)著色器程序的可編程執(zhí)行單元,根據(jù)頂點(diǎn)著色器程序的指定,光照(lighting)和轉(zhuǎn)換頂點(diǎn)數(shù)據(jù)。例如,頂點(diǎn)處理單元415可被編程為將頂點(diǎn)數(shù)據(jù)從基于對象的坐標(biāo)表示(對象空間)轉(zhuǎn)換到可選地基于諸如世界空間或標(biāo)準(zhǔn)化設(shè)備坐標(biāo)(NDC)空間的坐標(biāo)系統(tǒng)。頂點(diǎn)處理單元415可讀取由數(shù)據(jù)匯編器410存儲在LI高速緩存320、并行處理存儲器204、系統(tǒng)存儲器104中的數(shù)據(jù),用于處理頂點(diǎn)數(shù)據(jù)。
[0058]基元匯編器420從頂點(diǎn)處理單元415接收頂點(diǎn)屬性,按需讀取存儲的頂點(diǎn)屬性,并且構(gòu)建用于通過幾何處理單元425處理的圖形基元。圖形基元包括三角形、線段、點(diǎn)等。幾何處理單元425是被配置為執(zhí)行幾何著色器程序的可編程執(zhí)行單元,根據(jù)所述幾何著色器程序的指定,轉(zhuǎn)換從基元匯編器420接收的圖形基元。例如,幾何處理單元425可經(jīng)編程以細(xì)分圖形基元為一個或多個新的圖形基元,并計算被用于光柵化所述新的圖形基元的參數(shù),例如平面方程系數(shù)。幾何處理單元425還可以編程為,基于從基元匯編器420所接收的圖形基元來生成附加的圖形基元或者包括一個或多個圖形基元的幾何對象。
[0059]在一些實(shí)施例中,幾何處理單元425也可增加或刪除幾何流中的元素。幾何處理單元425輸出指定新的圖形基元的參數(shù)和頂點(diǎn)到視窗(viewport)縮放、剔除(cull)及裁剪(clip)單元450。幾何處理單元425可讀取存儲在并行處理存儲器204或系統(tǒng)存儲器104中的數(shù)據(jù),用于處理幾何數(shù)據(jù)。視窗縮放、剔除及裁剪單元450執(zhí)行裁剪、剔除以及視窗縮放,并輸出處理后的圖形基元到光柵器455。
[0060]光柵器455掃描轉(zhuǎn)換新的圖形基元,并輸出片段和覆蓋數(shù)據(jù)到片段處理單元460。此外,光柵器455可被配置為執(zhí)行z剔除和其他基于z的優(yōu)化。
[0061]片段處理單元460是被配置為執(zhí)行片段著色器程序的可編程執(zhí)行單元,根據(jù)片段著色器程序的指定,轉(zhuǎn)換從光柵器455接收的片段。例如,片段處理單元460可經(jīng)編程以執(zhí)行諸如透視校正、紋理映射、著色、混合等操作,以產(chǎn)生輸出到光柵操作單元465的著色片段。片段處理單元460可讀取存儲在并行處理存儲器204或系統(tǒng)存儲器104中的數(shù)據(jù),用于處理片段數(shù)據(jù)??梢愿鶕?jù)編程的采樣率,來按像素、采樣或其他粒度來對片段進(jìn)行著色。
[0062]光柵操作單元465是執(zhí)行諸如模板(stencil)、z測試、混合等光柵操作的處理單元,并輸出像素數(shù)據(jù)作為處理后的圖形數(shù)據(jù),用于存儲在圖形存儲器中。處理后的圖形數(shù)據(jù)可存儲在例如并行處理存儲器204和/或系統(tǒng)存儲器104的圖形存儲器中,用于在顯示設(shè)備110上顯示或用于由CPU102或并行處理子系統(tǒng)112進(jìn)一步處理。在本發(fā)明的一些實(shí)施例中,光柵操作單元465被配置為壓縮被寫入存儲器中的z數(shù)據(jù)或色彩數(shù)據(jù),以及解壓縮從存儲器中讀出的z數(shù)據(jù)或色彩數(shù)據(jù)。
[0063]處理在圖形基元之間共享的頂點(diǎn)
[0064]圖5是根據(jù)本發(fā)明一個實(shí)施例的、示出包括幾何處理單元550-0至550-N的子系統(tǒng)500的示意圖。如圖所示,幾何處理單元550-0至550-N中的每一個均耦連到流輸出同步(SSYNC)單元514、全局索引緩沖區(qū)516和全局頂點(diǎn)緩沖區(qū)518。每個幾何處理單元550包括幾何著色單元504、包括本地索引緩沖區(qū)508和本地頂點(diǎn)緩沖區(qū)510的緩沖區(qū)506、以及流輸出單元512。
[0065]如圖所示,幾何著色單元504-0包括幾何著色單元504-0、包括本地索引緩沖區(qū)508-0和本地頂點(diǎn)緩沖區(qū)510-0的緩沖區(qū)506-0,以及流輸出單元512-0。類似幾何著色單元504-1包括幾何著色單元504-1、包括本地索引緩沖區(qū)508-1和本地頂點(diǎn)緩沖區(qū)510-1的緩沖區(qū)506-1,以及流輸出單元512-1,并且?guī)缀沃珕卧?04-N包括幾何著色單元504-N、包括本地索引緩沖區(qū)508-N和本地頂點(diǎn)緩沖區(qū)510-0的緩沖區(qū)506-N,以及流輸出單元512-N。在以下描述中,類似對象的多個實(shí)例需要時以標(biāo)識對象的參考數(shù)字和標(biāo)識實(shí)例的帶有連字符的參考數(shù)字來表示。
[0066]幾何處理單元550配置為處理圖形基元或者幾何對象502并且生成一個或多個圖形基元或者包括一個或多個圖形基元的圖形對象。圖形處理單元550進(jìn)一步配置為隨后分別流出與所生成的圖形基元或者幾何對象相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)和索引信息到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516。SSYNC單元514配置為跨不同幾何處理單元550協(xié)調(diào)該數(shù)據(jù)的流出。
[0067]幾何處理單元550可以由圖3所示的SM310來實(shí)現(xiàn)并且可以表示圖4所示的圖形處理管線400中的處理段。在一個實(shí)施例中,幾何處理單元550和圖4所示的幾何處理單元425類似。幾何處理單元550中的幾何著色單元504配置為,從諸如圖4所示的基元匯編器420的上游處理單元接收圖形基元或者幾何對象502。圖形基元可以代表例如三角形、長方形、線段、點(diǎn)或者其他類型的圖形基元。幾何對象可以代表更高級別的圖形構(gòu)建,其可以包括單個圖形基元或者可以分解成圖形基元的集合,其中該集合可以代表?xiàng)l帶形、扇形或網(wǎng)狀類型的幾何對象。在各種實(shí)施例中,圖形基元或者幾何對象502可以代表圖形場景的一部分或者可以對應(yīng)于與幾何處理單元550相關(guān)聯(lián)的顯示屏幕的特定區(qū)域。
[0068]當(dāng)幾何處理單元550接收圖形基元或者幾何對象502時,幾何著色單元504配置為對與該圖形基元或者幾何對象502相關(guān)聯(lián)的頂點(diǎn)和其他信息實(shí)施一個或多個幾何著色操作。與給定圖形基元或者幾何對象502相關(guān)聯(lián)的頂點(diǎn)和其他信息可以代表例如三角形或者其他多邊形的角。那些頂點(diǎn)和其他信息還可以包括與圖形基元或者幾何對象502相關(guān)聯(lián)的頂點(diǎn)屬性以及其他類型的頂點(diǎn)數(shù)據(jù)。幾何著色單元504配置為,將與由幾何著色單元504所生成的一個或多個圖形基元或者一個或多個幾何對象相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)存儲在本地頂點(diǎn)緩沖區(qū)510中。
[0069]在幾何著色單元504生成共享給定頂點(diǎn)的不同圖形基元或者幾何對象的情況中,諸如當(dāng)細(xì)分幾何對象520為更小的圖形基元時,幾何著色單元504配置為,僅將共享的頂點(diǎn)和相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)在本地頂點(diǎn)緩沖區(qū)510中緩沖一次。用這種方法,幾何著色單元504有利地避免對頂點(diǎn)和相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)的冗余復(fù)制進(jìn)行緩沖。例如,幾何著色單元504可以接收單個圖形基元502并且隨后基于圖形基元502生成彼此共享頂點(diǎn)的圖形基元的集合。所生成的圖形基元的集合可能是“條帶形”、“扇形”或者“網(wǎng)狀”構(gòu)建。在這樣的情況中,幾何著色單元504僅將每個唯一的頂點(diǎn)在本地頂點(diǎn)緩沖區(qū)510中存儲一次。
[0070]幾何著色單元504還配置為,通過生成本地頂點(diǎn)緩沖區(qū)510的索引集來維護(hù)用于圖形基元502的連通性信息,索引集引用與幾何著色單元504所生成的圖形基元或者圖形對象相關(guān)聯(lián)的頂點(diǎn)。在一個實(shí)施例中,幾何著色單元504可以確定給定頂點(diǎn)已經(jīng)駐留在本地頂點(diǎn)緩沖區(qū)510中,并且隨后可以生成包括引用給定頂點(diǎn)的索引的索引集,即不在本地頂點(diǎn)緩沖區(qū)510中重新存儲該頂點(diǎn)。幾何著色單元504配置為將用于每個所生成的圖形基元或者幾何對象的索引集存儲在本地索引緩沖區(qū)508中的條目中。通常,本地索引緩沖區(qū)508中的條目中的每個索引可以與存儲在本地頂點(diǎn)緩沖區(qū)510中的不同的頂點(diǎn)相對應(yīng),并且存儲在本地索引緩沖區(qū)508中的條目中的索引集,可以與特定圖形基元、特定幾何對象或者代表圖形場景中的對象的任何頂點(diǎn)集合相對應(yīng)。例如,幾何著色單元504還可以存儲代表更高級別的幾何對象的索引集,更高級別的幾何對象諸如可以分解為包括條帶形、扇形和網(wǎng)狀類型對象的多個互相的圖形基元的“大的”多邊形。
[0071]本地索引緩沖區(qū)508中的索引集可以直接引用本地頂點(diǎn)緩沖區(qū)510中的不同的頂點(diǎn),即通過指定本地緩沖區(qū)510中的不同(various)地址??商娲兀饕€可以通過指定本地頂點(diǎn)緩沖區(qū)510中的本地偏移或者本地頂點(diǎn)緩沖區(qū)510中的本地索引來引用不同的頂點(diǎn)。
[0072]在不同時間,耦連到緩沖區(qū)506的流輸出單元512可以分別流出存儲在本地頂點(diǎn)緩沖區(qū)510中的頂點(diǎn)和存儲在本地索引緩沖區(qū)508中的索引到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516。然而在這之前,流輸出單元512配置為首先確定存儲在本地頂點(diǎn)緩沖區(qū)510中的頂點(diǎn)的數(shù)目以及存儲在本地索引緩沖區(qū)508中的索引的數(shù)目。流輸出單元512隨后將這些數(shù)目通信到SSYNC單元514。
[0073]SSYNC單元514用全局頂點(diǎn)緩沖區(qū)518中的基地址和全局索引緩沖區(qū)516中的基地址來響應(yīng)流輸出單元512。全局頂點(diǎn)緩沖區(qū)518中的基地址代表,處流輸出單元512可以在其中安全地寫入由流輸出單元512通信到SSYNC單元514的數(shù)目的頂點(diǎn)的該緩沖區(qū)中的位置。類似,全局索引緩沖區(qū)516中的基地址代表,處流輸出單元512可以在其中安全地寫入由流輸出單元512通信到SSYNC單元514的數(shù)目的索引的該緩沖區(qū)中的位置。
[0074]SSYNC單元514配置為使用以下更詳細(xì)地描述的技術(shù)來生成這些基地址。一旦收到全局頂點(diǎn)緩沖區(qū)中的基地址,流輸出單元512隨后就可以復(fù)制本地頂點(diǎn)緩沖區(qū)510中的頂點(diǎn)到開始于基地址處的全局頂點(diǎn)緩沖區(qū)518。另外,一旦接收到全局索引緩沖區(qū)中的基地址,流輸出單元512隨后就可以復(fù)制本地索引緩沖區(qū)508中的索引到開始于基地址處的全局索引緩沖區(qū)516。
[0075]當(dāng)從本地索引緩沖區(qū)508復(fù)制索引到全局索引緩沖區(qū)516時,流輸出單元512配置為更新那些索弓丨,以反映所引用的全局頂點(diǎn)緩沖區(qū)518中的頂點(diǎn)的新的位置。在一個實(shí)施例中,流輸出單元512通過等于全局頂點(diǎn)緩沖區(qū)518中的基地址的值來增量每個索引。
[0076]采用以上方法,幾何處理單元550-0至550-N的每一個配置為彼此并行處理圖形基元或者幾何對象,并且隨后將該處理的結(jié)果以及相關(guān)聯(lián)的索引在本地緩沖區(qū)中進(jìn)行緩沖。經(jīng)本地緩沖的頂點(diǎn)和索引數(shù)據(jù)隨后可以流出到全局緩沖區(qū)。
[0077]如上提到的,SSYNC單元514配置為,在不同的幾何處理單元550之間對將頂點(diǎn)和索引分別流出到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516進(jìn)行協(xié)調(diào)。實(shí)踐中,SSYNC單元514配置為根據(jù)順序來服務(wù)于流輸出單元512-0到512-N的每一個。這樣,SSYNC根據(jù)該順序通信全局頂點(diǎn)緩沖區(qū)518中的基地址和全局索引緩沖區(qū)516中的基地址到每個流輸出單元512-0至512-N。在一個實(shí)施例中,該順序(sequence)是應(yīng)用程序編程接口(API)次序(order)。在另一個實(shí)施例中,順序由在幾何處理單元550上執(zhí)行的軟件應(yīng)用程序來定義,并且軟件應(yīng)用程序的程序員確定順序。
[0078]SSYNC單元514配置為,當(dāng)順序服務(wù)于那些流輸出單元512時,提供全局索引緩沖區(qū)516中的不同的基地址和本地索引緩沖區(qū)518中的不同的基地址給每個流輸出單元512。因此,每個不同的流輸出單元512能夠分別寫頂點(diǎn)和索引到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516的不同部分。在一個實(shí)施例中,每個流輸出單元512能夠與寫頂點(diǎn)和索引到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516另一些流輸出單元512彼此并行地分別寫頂點(diǎn)和索引到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516。
[0079]SSYNC單元514基于由序列中的之前的流輸出單元512寫到全局頂點(diǎn)緩沖區(qū)518的頂點(diǎn)的數(shù)目,來確定用于序列中的給定流輸出單元512的全局頂點(diǎn)緩沖區(qū)518中的基地址。更具體的,SSYNC單元514維護(hù)全局頂點(diǎn)緩沖區(qū)518中的“當(dāng)前”基地址,其指示頂點(diǎn)可以安全寫入其中的全局頂點(diǎn)緩沖區(qū)518中的位置。一旦接收到指示將由特定流輸出單元512寫入全局頂點(diǎn)緩沖區(qū)518的頂點(diǎn)的數(shù)目的數(shù)據(jù),SSYNC單元514便傳送全局頂點(diǎn)緩沖區(qū)518中的“當(dāng)前”基地址到該流輸出單元512,以在寫入頂點(diǎn)時使用。SSYNC單元514隨后基于頂點(diǎn)的該數(shù)目以及基于那些頂點(diǎn)的大小來更新全局頂點(diǎn)緩沖區(qū)518中的“當(dāng)前”基地址。之后,經(jīng)更新的全局頂點(diǎn)緩沖區(qū)518中的基地址代表流輸出單元512的按順序的后續(xù)流輸出單元512可以在其中安全寫入頂點(diǎn)數(shù)據(jù)的該緩沖區(qū)中的位置。
[0080]SSYNC單元514還基于由按順序的之前的流輸出單元512寫入全局索引緩沖區(qū)516的索引的數(shù)目,來確定用于按順序的給定流輸出單元512的全局索引緩沖區(qū)516中的基地址。更具體的,SSYNC單元514維護(hù)全局索引緩沖區(qū)516中的“當(dāng)前”基地址,其指示索引可以安全寫入其中的全局索引緩沖區(qū)516中的位置。一旦接收到將由特定流輸出單元512寫入全局索引緩沖區(qū)516的索引的數(shù)目的數(shù)據(jù),SSYNC單元514傳送全局索引緩沖區(qū)516中的“當(dāng)前”基地址到流輸出單元512,以在寫入索引時使用。SSYNC單元514隨后基于索引的數(shù)目以及基于那些索引的大小來更新全局索引緩沖區(qū)516中的“當(dāng)前”基地址。之后,經(jīng)更新的全局索引緩沖區(qū)516中的基地址代表流輸出單元512的按順序的后續(xù)流輸出單元512可以在其中安全寫入索引數(shù)據(jù)的緩沖區(qū)中的位置。
[0081]通過實(shí)行上述方法,SSYNC單元514配置為維護(hù)可以提供給給定流輸出單元512的全局頂點(diǎn)緩沖區(qū)518中的“當(dāng)前”基地址和全局索引緩沖區(qū)516中的“當(dāng)前”基地址。SSYNC單元514還配置為隨后更新那些“當(dāng)前”基地址,以適應(yīng)嘗試將頂點(diǎn)和索引流出到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516的后續(xù)的流輸出單元512。
[0082]以下結(jié)合參考不同的流程圖的圖6-8更詳細(xì)地描述用于實(shí)現(xiàn)本文所述功能性的各自方法。本文所述的功能性下面還結(jié)合圖9-10通過示例的方式來描述。
[0083]圖6是根據(jù)本發(fā)明一個實(shí)施例的、用于分別將頂點(diǎn)數(shù)據(jù)和索引數(shù)據(jù)存儲在本地頂點(diǎn)緩沖區(qū)510和本地索引緩沖區(qū)508中的方法步驟的流程圖。雖然結(jié)合圖1-3的系統(tǒng)描述方法步驟,本領(lǐng)域普通技術(shù)人員可以理解配置為以任何順序?qū)嵤┓椒ú襟E的任何系統(tǒng)均在本發(fā)明的范圍內(nèi)。
[0084]如圖所示,方法600開始于步驟620,其中幾何處理單元550接收圖形基元或者幾何對象502。在步驟604,幾何處理單元550中的幾何著色單元504對圖形基元或者幾何對象502實(shí)施一個或多個幾何著色操作。這樣,幾何著色單元504可以編程為,基于所接收的圖形基元或者幾何對象502,來生成附加的圖形基元或者包括一個或多個圖形基元的一個或多個幾何對象。在一個實(shí)施例中,例如幾何處理單元550可以接收幾何對象,并且隨后通過將幾何對象細(xì)分為彼此共享一個或多個頂點(diǎn)的互連的圖形基元的集合來生成多個圖形基兀。
[0085]在步驟606,幾何著色單元504將與幾何著色單元504所生成的圖形基元或者幾何對象相關(guān)聯(lián)的頂點(diǎn)存儲在本地頂點(diǎn)緩沖區(qū)510中。在特定的所生成的圖形基元或者幾何對象與已經(jīng)存儲在本地頂點(diǎn)緩沖區(qū)510中的頂點(diǎn)相關(guān)聯(lián)的情況中(例如,頂點(diǎn)由另一個所生成的圖形基元或者幾何對象共享),幾何著色單元504可以針對該頂點(diǎn)跳過步驟606。采用該方法,幾何著色單元504有利地避免了對所生成的頂點(diǎn)和其相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)的冗余復(fù)制進(jìn)行緩沖。
[0086]在步驟608,幾何著色單元504將引用本地頂點(diǎn)緩沖區(qū)510中的頂點(diǎn)的索引存儲在本地索引緩沖區(qū)508中。本地索引緩沖區(qū)508中的索引可以直接引用本地頂點(diǎn)緩沖區(qū)510中的不同頂點(diǎn),即通過指定本地頂點(diǎn)緩沖區(qū)510中的不同地址??商娲?,索引還可以通過指定本地頂點(diǎn)緩沖區(qū)510中的本地偏移或者本地頂點(diǎn)緩沖區(qū)510中的本地索引來引用不同頂點(diǎn)。通常,在步驟608存儲在本地索引緩沖區(qū)508中的索引代表與在步驟604所生成的圖形基元或者幾何對象相對應(yīng)的頂點(diǎn)。隨后方法600結(jié)束。
[0087]通過實(shí)現(xiàn)上述方法,與所生成的基元或者幾何對象相關(guān)聯(lián)的由幾何處理單元550所生成的頂點(diǎn),可以本地緩沖并且本地索引,從而阻止頂點(diǎn)和相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)的多個復(fù)制被冗余存儲的情況。此外,當(dāng)系統(tǒng)包括多個幾何處理單元500時,那些幾何處理單元550的每一個可以與其他幾何處理單元500并行地生成圖形基元或者幾何對象并且隨后在本地對與那些圖形基元或者幾何對象相關(guān)聯(lián)的頂點(diǎn)和索引進(jìn)行緩沖。本領(lǐng)域技術(shù)人員將理解,方法600還可以應(yīng)用于處理幾何對象或者包括頂點(diǎn)的集合的任何其他的更高級別的圖形構(gòu)建。例如方法600可以應(yīng)用于為多邊形存儲頂點(diǎn)和相關(guān)聯(lián)的索引,其中該多邊形可以分解為共享一個或多個頂點(diǎn)的互連的圖形基元的集合。
[0088]每個幾何處理單元550還配置為與SSYNC單元514通信,以協(xié)調(diào)將頂點(diǎn)和索引分別流出到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516,如下面結(jié)合圖7更詳細(xì)的描述。
[0089]圖7是根據(jù)本發(fā)明一個實(shí)施例的,用于將頂點(diǎn)和索引流出到多個全局緩沖區(qū)的方法步驟的流程圖。雖然結(jié)合圖1-3的系統(tǒng)描述方法步驟,本領(lǐng)域普通技術(shù)人員可以理解配置為以任何順序?qū)嵤┓椒ú襟E的任何系統(tǒng)均在本發(fā)明的范圍內(nèi)。
[0090]如圖所示,方法700開始于步驟700,其中幾何處理單元550中的流輸出單元512確定本地頂點(diǎn)緩沖區(qū)510中的頂點(diǎn)的數(shù)目和本地索引緩沖區(qū)508中的索引的數(shù)目。本地頂點(diǎn)緩沖區(qū)510和本地索引緩沖區(qū)508中的頂點(diǎn)和索引可以分別引入到通過結(jié)合圖6所述的方法600實(shí)現(xiàn)的那些緩沖區(qū)。
[0091]在步驟704,流輸出單元將本地頂點(diǎn)緩沖區(qū)510中的頂點(diǎn)的數(shù)目和本地索引緩沖區(qū)508中的索引的數(shù)目通信到SSYNC單元514。在步驟706,流輸出單元512從SSYNC單元514接收全局頂點(diǎn)緩沖區(qū)518中的基地址和全局索引緩沖區(qū)516中的基地址。全局頂點(diǎn)緩沖區(qū)518中的基地址代表,處流輸出單元512可以在其中安全地寫入由流輸出單元512通信到SSYNC單元514的數(shù)目的頂點(diǎn)的緩沖區(qū)中的位置。類似,全局索引緩沖區(qū)516中的基地址代表,處流輸出單元512可以在其中安全地寫入由流輸出單元512通信到SSYNC單元514的數(shù)目的索引的該緩沖區(qū)中的位置。SSYNC單元514配置為通過實(shí)現(xiàn)以上結(jié)合圖5所述的以及以下結(jié)合圖8所述的技術(shù)來生成這些基地址
[0092]在步驟708,流輸出單元512從本地頂點(diǎn)緩沖區(qū)510流出頂點(diǎn)到全局頂點(diǎn)緩沖區(qū)518,其開始于由SSYNC單元514所提供的全局頂點(diǎn)緩沖區(qū)518中的基地址處。在步驟712,流輸出單元512從本地索引緩沖區(qū)508流出索引到全局索引緩沖區(qū)516,其開始于由SSYNC單元514所提供的全局索引緩沖區(qū)516中的基地址處。這樣,流輸出單元512配置為更新那些索引以反映所引用的頂點(diǎn)在全局頂點(diǎn)緩沖區(qū)518中的新位置。在一個實(shí)施例中,在步驟706,流輸出單元512通過與由SSYNC單元514所提供的全局頂點(diǎn)緩沖區(qū)518中的基地址相等的值來增量每個索引。隨后方法結(jié)束。
[0093]通過實(shí)現(xiàn)上述方法,幾何處理單元550-0至550-N中的每一個配置為分別流出經(jīng)本地緩沖的頂點(diǎn)和索引到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516。此外,每個這樣的幾何處理單元550可以與其他處理單元550彼此并行地分別流出頂點(diǎn)和索引到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516。結(jié)合圖8描述可以由SSYNC單元514實(shí)現(xiàn)來提供那些緩沖區(qū)中的基地址給幾何處理單元550的技術(shù)。
[0094]圖8是根據(jù)本發(fā)明一個實(shí)施例的、用于填充多個全局緩沖區(qū)的方法步驟的流程圖。雖然結(jié)合圖1-3的系統(tǒng)描述方法步驟,本領(lǐng)域普通技術(shù)人員可以理解配置為以任何順序?qū)嵤┓椒ú襟E的任何系統(tǒng)均在本發(fā)明的范圍內(nèi)。
[0095]如圖所示,方法800開始于步驟802,其中SSYNC單元514從幾何處理單元550中的流輸出單元512接收數(shù)據(jù),其指定存儲在本地頂點(diǎn)緩沖區(qū)510中的頂點(diǎn)的數(shù)目和存儲在本地索引緩沖區(qū)508中的索引的數(shù)目。在步驟804,SSYNC單元514傳送全局頂點(diǎn)緩沖區(qū)518中的當(dāng)前基地址和全局索引緩沖區(qū)516中的當(dāng)前基地址到流輸出單元514。全局頂點(diǎn)緩沖區(qū)518中的基地址代表,流輸出單元512可以在其中安全地寫入由流輸出單元512通信到SSYNC單元514的頂點(diǎn)數(shù)目的該緩沖區(qū)中的位置。類似,全局索引緩沖區(qū)516中的基地址代表,流輸出單元512可以在其中安全地寫入由流輸出單元512通信到SSYNC單元514的索引數(shù)目的該緩沖區(qū)中的位置。
[0096]在步驟806,SSYNC單元514基于由流輸出單元514指定的頂點(diǎn)數(shù)目來更新全局頂點(diǎn)緩沖區(qū)518中的當(dāng)前基地址。SSYNC單元514還可以基于那些頂點(diǎn)的大小來更新全局頂點(diǎn)緩沖區(qū)518中的當(dāng)前基地址。在步驟808,SSYNC單元514基于由流輸出單元514指定的索引數(shù)目來更新全局索引緩沖區(qū)516中的當(dāng)前基地址。SSYNC單元514還可以基于那些索引的大小來更新全局索引緩沖區(qū)516中的當(dāng)前基地址。隨后方法結(jié)束。
[0097]通過實(shí)現(xiàn)上述方法,SSYNC單元514能夠維護(hù)全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516中的基地址,其代表數(shù)據(jù)可以安全寫入的那些緩沖區(qū)中的地址。當(dāng)繼續(xù)服務(wù)于處理單元550時,SSYNC單元514因此能夠提供那些緩沖區(qū)中的不同基地址給按順序的每個幾何處理單元550。
[0098]結(jié)合圖9-10通過示例的方式示出以上結(jié)合圖5-8所述的各種技術(shù)。
[0099]圖9是根據(jù)本發(fā)明一個實(shí)施例的、示出配置為存儲索引和頂點(diǎn)的示例性幾何處理單元550-0和550-1的示意圖。如圖所示,幾何處理單元550-0包括幾何著色單元504-0、本地索引緩沖區(qū)508-0和本地頂點(diǎn)緩沖區(qū)510-0。類似,幾何處理單元502-1包括幾何著色單元504-1、本地索引緩沖區(qū)508-1和本地頂點(diǎn)緩沖區(qū)510-1。幾何處理單元550-0和550-1也在圖5中示出,雖然在該示例中為了清晰,那些幾何處理單元550的某些元件已被省略。
[0100]幾何處理單元550配置為接收與圖形基元或者幾何對象502相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)和相關(guān)幾何信息。幾何著色單元504-0隨后生成代表三角形條帶的幾何對象502-0,其中頂點(diǎn)A、B、C、D和E是與那些三角形相關(guān)聯(lián)的頂點(diǎn)。幾何著色單元504-0進(jìn)一步配置為將那些頂點(diǎn)和相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)存儲在本地頂點(diǎn)緩沖區(qū)510-0中。由于與幾何對象502-0相關(guān)聯(lián)的不同三角形共享頂點(diǎn),因此那些共享的頂點(diǎn)可以僅有一次被包括在本地頂點(diǎn)緩沖區(qū)510-0中。如圖所示,幾何著色單元504-0還配置為將引用那些頂點(diǎn)的索引存儲在本地索引緩沖區(qū)508-0中。在給定頂點(diǎn)已經(jīng)駐留在本地頂點(diǎn)緩沖區(qū)510-0的情況中,幾何著色單元504-0可以將該頂點(diǎn)的索引引入到本地索引緩沖區(qū)508-0中,而不重新存儲該頂點(diǎn)在本地頂點(diǎn)緩沖區(qū)510-0中,從而避免了頂點(diǎn)數(shù)據(jù)的冗余復(fù)制。在本文所述的示例性情景中,幾何著色單元504-0基于順時針或者逆時針旋轉(zhuǎn)方向從幾何對象502-0生成三角形。本領(lǐng)域技術(shù)人員可以理解,幾何著色單元504-0可以使用任何特定旋轉(zhuǎn)方向或者旋轉(zhuǎn)方向的組合來生成三角形和/或其他圖形基元。
[0101]此外,幾何著色單元504-0還可以引入代表不包括在幾何對象502-0中的三角形的索引集(例如與索引0、2和3相對應(yīng)的三角形ACD)。在一個實(shí)施例中,幾何著色單元
04-0配置為,通過細(xì)分復(fù)雜的幾何對象502為那些不同三角形來生成由頂點(diǎn)A、B、C、D和E形成的不同三角形。在另一個實(shí)施例中,幾何著色單元504-0可以配置為,通過重復(fù)(replicate)簡單幾何對象502諸如單個三角形來生成由頂點(diǎn)A、B、C、D和E形成的不同三角形。幾何著色單元504-0還可以將把幾何對象502-0作為整體代表的索引存儲在本地索引緩沖區(qū)508-0中,即代表所有頂點(diǎn)A、B、C、D和E的索引。
[0102]與幾何處理單元550-0類似,幾何處理單元550-1配置為接收與圖形基元或者幾何對象502相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)和相關(guān)幾何信息。幾何著色單元504-1隨后生成代表三角形條帶的幾何對象502-1,其中頂點(diǎn)J、K、L、M、N和O是與那些三角形相關(guān)聯(lián)的頂點(diǎn)。幾何著色單元504-0進(jìn)一步配置為將那些頂點(diǎn)和相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)存儲在本地頂點(diǎn)緩沖區(qū)510-1中。由于與幾何對象502-1相關(guān)聯(lián)的不同三角形共享頂點(diǎn),因此那些共享的頂點(diǎn)可以僅有一次被包括在本地頂點(diǎn)緩沖區(qū)510-1中。如圖所示,幾何著色單元504-1還配置為,將引用那些頂點(diǎn)的索引存儲在本地索引緩沖區(qū)508-1中。在給定頂點(diǎn)已經(jīng)駐留在本地頂點(diǎn)緩沖區(qū)510-1的情況中,幾何著色單元504-1可以將該頂點(diǎn)的索引引入到本地索引緩沖區(qū)508-1中,而不重新存儲該頂點(diǎn)在本地頂點(diǎn)緩沖區(qū)510-1中,從而避免了頂點(diǎn)數(shù)據(jù)的冗余復(fù)制。在本文所述的示例性情景中,幾何著色單元504-1基于順時針或者逆時針旋轉(zhuǎn)方向從幾何對象502-1生成三角形。本領(lǐng)域技術(shù)人員可以理解,幾何著色單元504-1可以使用任何特定旋轉(zhuǎn)方向或者旋轉(zhuǎn)方向的組合來生成三角形和/或其他圖形基元。
[0103]在一個實(shí)施例中,幾何著色單元504-1配置為,通過細(xì)分復(fù)雜的幾何對象502為那些不同三角形來生成由頂點(diǎn)J、K、L、M、N和O形成的不同三角形。在另一個實(shí)施例中,幾何著色單元504-1可以配置為,通過重復(fù)簡單幾何對象502諸如單個三角形,來生成由頂點(diǎn)J、K、L、M、N和O形成的不同三角形。幾何著色單元504-1還可以將把幾何對象502-1作為整體代表的索引存儲在本地索引緩沖區(qū)508-1中,即代表所有頂點(diǎn)J、K、L、M、N和O的索引。[0104]流輸出單元512-0和512-1 (如圖5所示)隨后可以基于由SSYNC單元514提供的基地址,來分別將存儲在各自本地頂點(diǎn)緩沖區(qū)510和本地索引緩沖區(qū)508中的頂點(diǎn)和索引流出到全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516。示例性全局頂點(diǎn)緩沖區(qū)518和示例性全局索引緩沖區(qū)516在圖10中示出。
[0105]圖10是根據(jù)本發(fā)明一個實(shí)施例的、示出配置為分別存儲頂點(diǎn)和索引的示例性全局頂點(diǎn)緩沖區(qū)518和全局索引緩沖區(qū)516的示意圖。
[0106]如圖所示,全局頂點(diǎn)緩沖區(qū)518包括與圖9所示的圖形基元502-0和502_1相關(guān)聯(lián)的每一個不同頂點(diǎn)。具體的,全局頂點(diǎn)緩沖區(qū)518包括與圖形基元502-0相對應(yīng)的頂點(diǎn)A、B、C、D和E,以及與圖形基元502-1相對應(yīng)的頂點(diǎn)J、K、L、M、N和O。幾何處理單元550-0配置為基于從SSYNC單元514接收的基地址,將頂點(diǎn)A-E寫入全局索引緩沖區(qū)518。類似,全局處理單元550-1配置為基于從SSYNC單元514接收的不同基地址,將頂點(diǎn)J-O寫入全局索引緩沖區(qū)518。又如圖所示,全局索引緩沖區(qū)516包括存儲在全局頂點(diǎn)緩沖區(qū)518中的頂點(diǎn)的索引。幾何處理單元550-0和550-1配置為,基于分別存儲在本地索引緩沖區(qū)508-0和508-1中的索引和基于從SSYNC單元514所接收的基地址,將這些索引寫入全局索引緩沖區(qū)516。
[0107]在該示例中,SSYNC單元514順序服務(wù)于幾何處理單元550_0和550_1,從幾何處理單元550-0開始。SSYNC單元514從幾何處理單元550-0接收數(shù)據(jù),其指示將寫入全局頂點(diǎn)緩沖區(qū)518中的頂點(diǎn)A-E的數(shù)目(在該示例中,該數(shù)目是5)。SSYNC單元514用全局頂點(diǎn)緩沖區(qū)518中的當(dāng)前基地址來響應(yīng)幾何處理單元550-0。最初,SSYNC單元514維護(hù)為“O”的全局頂點(diǎn)緩沖區(qū)518中的初始基地址。SSYNC單元514隨后基于幾何處理單元550-0將寫入全局頂點(diǎn)緩沖區(qū)518的頂點(diǎn)的數(shù)目來更新當(dāng)前基地址,以反映附加的頂點(diǎn)和相關(guān)聯(lián)的數(shù)據(jù)可以安全寫入其中的全局頂點(diǎn)緩沖區(qū)518中的新的基地址(在該示例中,為“5”的基地址)。
[0108]在從幾何處理單元550-0接收到指示頂點(diǎn)A-E的數(shù)目的數(shù)據(jù)之后,SSYNC單元514隨后可以從幾何處理單元550-0接收指示將寫入全局索引緩沖區(qū)516的不同索引集的數(shù)目的附加的數(shù)據(jù)(在該示例中,該數(shù)目是4)。另外,每個索引集可以對應(yīng)于圖形基元502-2中的不同三角形。SSYNC單元514用全局索引緩沖區(qū)516中的基地址來響應(yīng)幾何處理單元550-0。最初,SSYNC單元514維護(hù)為“O”的全局索引緩沖區(qū)516中的初始基地址。SSYNC單元514隨后基于幾何處理單元550-0將寫入全局索引緩沖區(qū)516的索引的數(shù)目來更新當(dāng)前基地址,以反映附加的索引可以安全寫入其中的全局索引緩沖區(qū)516中的新的基地址(在該示例中,為“4”的基地址)。
[0109]之后,SSYNC單元514可以服務(wù)于幾何處理單元550-1。SSYNC單元514從幾何處理單元550-1接收數(shù)據(jù),其指示將寫入全局頂點(diǎn)緩沖區(qū)518中的頂點(diǎn)J-O的數(shù)目(在該示例中,該數(shù)目是6)。SSYNC單元514用為“6”的全局頂點(diǎn)緩沖區(qū)518中的當(dāng)前基地址來響應(yīng)幾何處理單元550-1。SSYNC單元514隨后基于幾何處理單元550-1將寫入全局頂點(diǎn)緩沖區(qū)518的頂點(diǎn)的數(shù)目來更新當(dāng)前基地址,以反映頂點(diǎn)和相關(guān)聯(lián)的數(shù)據(jù)可以安全寫入其中的全局頂點(diǎn)緩沖區(qū)518中的新的基地址(在該示例中,為“11”的基地址)。
[0110]在從幾何處理單元550-1接收到指示頂點(diǎn)J-O的數(shù)目的數(shù)據(jù)之后,SSYNC單元514隨后可以從幾何處理單元550-1接收指示將寫入全局索引緩沖區(qū)516的不同索引集的數(shù)目的附加的數(shù)據(jù)(在該示例中,該數(shù)目是4)。另外,每個索引集可以對應(yīng)于圖形基元502-1中的不同三角形。SSYNC單元514用為“4”的全局索引緩沖區(qū)516中的當(dāng)前基地址來響應(yīng)幾何處理單元550-1。SSYNC單元514隨后基于幾何處理單元550-1將寫入全局索引緩沖區(qū)516的索引的數(shù)目來更新當(dāng)前基地址,以反映附加的索引可以安全寫入其中的全局索引緩沖區(qū)516中的新的基地址(在該示例中,為“8”的基地址)。
[0111]當(dāng)幾何處理單元550-0或者550-1根據(jù)上述技術(shù)寫入索引到全局索引緩沖區(qū)516時,那些幾何處理單元550的每一個配置為基于從SSYNC單元所接收的全局頂點(diǎn)緩沖區(qū)518中的基地址來更新索引。因此,幾何處理單元550-0可以將每個索引增量“0”,即當(dāng)SSYNC單元514服務(wù)于幾何處理單元550-0時所提供的全局頂點(diǎn)緩沖區(qū)518中的基地址。類似,幾何處理單元550-1可以將每個索引增量“5”,即當(dāng)SSYNC單元514服務(wù)于幾何處理單元550-1時所提供的全局頂點(diǎn)緩沖區(qū)518中的基地址。采用該方法,每個幾何處理單元550更新流出到全局索引緩沖區(qū)516的索引,以反映存儲在全局頂點(diǎn)緩沖區(qū)518中的正確頂點(diǎn)。
[0112]本領(lǐng)域技術(shù)人員可以理解,結(jié)合圖9和10所述的示例僅是本發(fā)明的功能性可以在其中實(shí)現(xiàn)的一個可能的情況,本發(fā)明還可以在各種其他情況中實(shí)現(xiàn)。
[0113]總而言之,圖形處理單元包括幾何處理單元集,其每個配置為彼此并行處理圖形基元或者幾何對象。給定幾何處理單元生成一個或多個圖形基元或者一個或多個幾何對象,并且本地緩沖與圖形基元或者幾何對象相關(guān)的頂點(diǎn)數(shù)據(jù)。幾何處理單元還對那些頂點(diǎn)的不同索引集進(jìn)行緩沖,其中每一個這樣的集代表不同圖形基元或者幾何對象。幾何處理單元可以隨后將經(jīng)緩沖的頂點(diǎn)和索引流出到全局緩沖區(qū)。流輸出同步單元通過提供頂點(diǎn)可以寫入其中的全局頂點(diǎn)緩沖區(qū)中的不同基地址給每個幾何處理單元,來跨不同幾何處理單元協(xié)調(diào)頂點(diǎn)和索引的流出。流輸出單元還提供可以在其中寫入索引的全局索引緩沖區(qū)中的不同基地址給每個幾何處理單元。
[0114]有利地,采用所公開的方法,由于可以本地索引頂點(diǎn)數(shù)據(jù),因此幾何處理單元不存儲頂點(diǎn)數(shù)據(jù)的冗余復(fù)制,從而節(jié)約了 GPU資源。此外,每個這樣的幾何處理單元,可以在的全局頂點(diǎn)緩沖區(qū)中本地存儲所生成的頂點(diǎn)數(shù)據(jù),其還被索引。跨所有幾何處理單元合理化用于全局索引緩沖區(qū)的索引,使得可以針對整個系統(tǒng)優(yōu)化頂點(diǎn)緩沖區(qū)的大小。因?yàn)樗饕猪旤c(diǎn)緩沖區(qū)被索引,所以緩沖區(qū)可以實(shí)質(zhì)上小于常規(guī)非索引全局頂點(diǎn)緩沖區(qū)。因此,相對于現(xiàn)有技術(shù)架構(gòu),采用較小的全局頂點(diǎn)緩沖區(qū),將頂點(diǎn)緩沖區(qū)反饋回幾何處理單元的圖形處理管線上游的段成為更有效率的執(zhí)行,從而提高整個系統(tǒng)的處理效率。
[0115]本發(fā)明的一個實(shí)施例可被實(shí)施為與計算機(jī)系統(tǒng)一起使用的程序產(chǎn)品。該程序產(chǎn)品的程序定義實(shí)施例的各功能(包括本文中描述的方法)并且可以被包含在各種計算機(jī)可讀存儲介質(zhì)上。示例性計算機(jī)可讀存儲介質(zhì)包括但不限于:(i)不可寫的存儲介質(zhì)(例如,計算機(jī)內(nèi)的只讀存儲器設(shè)備,諸如可由CD-ROM驅(qū)動器讀取的光盤只讀存儲器(CD-ROM)盤、閃存、只讀存儲器(ROM)芯片或任何類型的固態(tài)非易失性半導(dǎo)體存儲器),在其上存儲永久性信息jP(ii)可寫的存儲介質(zhì)(例如,磁盤驅(qū)動器或硬盤驅(qū)動器內(nèi)的軟盤或者任何類型的固態(tài)隨機(jī)存取半導(dǎo)體存儲器),在其上存儲可更改的信息。
[0116]以上已參照特定實(shí)施例對本發(fā)明進(jìn)行了描述。然而,本領(lǐng)域普通技術(shù)人員將理解的是,可對此做出各種修改和變化而不脫離如隨附權(quán)利要求書中所闡述的本發(fā)明的較寬精神和范圍。因此,前面的描述以及附圖應(yīng)被視為是例示性而非限制性的意義。 [0117] 因此,本發(fā)明的實(shí)施例的范圍在隨后的權(quán)利要求中闡述。
【權(quán)利要求】
1.一種用于緩沖與圖形基元或者幾何對象相關(guān)聯(lián)的數(shù)據(jù)的計算機(jī)實(shí)現(xiàn)方法,所述方法包括: 接收第一幾何對象或者圖形基元; 基于所述第一幾何對象或者圖形基元生成第一頂點(diǎn)集;以及 將第一索引集存儲在本地索引緩沖區(qū)中的第一條目內(nèi),其中所述第一索引集中的每個索引引用所述第一頂點(diǎn)集中的不同頂點(diǎn),以及其中所述第一條目對應(yīng)于與所述第一頂點(diǎn)集相關(guān)聯(lián)的圖形基兀或者幾何對象。
2.一種圖形子系統(tǒng),包括: 幾何處理單元,配置為: 接收第一幾何對象或者圖形基元; 基于所述第一幾何對象或者圖形基元生成第一頂點(diǎn)集;以及 將第一索引集存儲在本地索引緩沖區(qū)中的第一條目內(nèi),其中所述第一索引集中的每個索引引用所述第一頂點(diǎn)集中的不同頂點(diǎn),以及其中所述第一條目對應(yīng)于與所述第一頂點(diǎn)集相關(guān)聯(lián)的圖形基?;蛘邘缀螌ο蟆?br> 3.根據(jù)權(quán)利要求2所述的圖形子系統(tǒng),其中所述幾何處理單元進(jìn)一步配置為,將所述第一頂點(diǎn)集存儲在本地頂點(diǎn)緩沖區(qū)中,其中所述第一索引集中的每個索引引用與所述第一頂點(diǎn)集中的不同頂點(diǎn)相關(guān)聯(lián)的所述本地頂點(diǎn)緩沖區(qū)中的位置。
4.根據(jù)權(quán)利要求3所述的 圖形子系統(tǒng),其中所述幾何處理單元進(jìn)一步配置為: 基于所述第一幾何對象或者圖形基元生成第一圖形基元集,其中所述第一圖形基元集中的每個圖形基元包括所述第一頂點(diǎn)集中的至少一個頂點(diǎn); 為所述第一圖形基元集中的每個圖形基元生成不同的索引集; 將每個索引集存儲在所述本地索引緩沖區(qū)中的不同條目內(nèi);以及 將所述第一頂點(diǎn)集中的每個頂點(diǎn)的一個實(shí)例存儲在所述本地頂點(diǎn)緩沖區(qū)中。
5.根據(jù)權(quán)利要求3所述的圖形子系統(tǒng),其中所述幾何處理單元進(jìn)一步配置為: 接收第二幾何對象或者圖形基元; 基于所述第二幾何對象或者圖形基元生成第二頂點(diǎn)集; 確定所述第二頂點(diǎn)集中的頂點(diǎn)也包括在所述第一頂點(diǎn)集中; 將第二索引集存儲在所述本地索引緩沖區(qū)中的第二條目中,其中所述第二索引集包括引用也包括在所述第一頂點(diǎn)集中的、所述第二頂點(diǎn)集中的所述頂點(diǎn)的索引,并且其中所述第二條目對應(yīng)于與所述第二頂點(diǎn)集相關(guān)聯(lián)的圖形基元或者幾何對象;以及 將不包括在所述第一頂點(diǎn)集中的、所述第二頂點(diǎn)集中的每個頂點(diǎn)的一個實(shí)例存儲在本地頂點(diǎn)緩沖區(qū)中。
6.根據(jù)權(quán)利要求3所述的圖形子系統(tǒng),其中所述圖形處理單元進(jìn)一步配置為: 確定存儲在所述本地頂點(diǎn)緩沖區(qū)中的頂點(diǎn)的數(shù)目; 將所述存儲在所述本地頂點(diǎn)緩沖區(qū)中的頂點(diǎn)的數(shù)目傳送到流同步單元; 從所述流同步單元接收與全局頂點(diǎn)緩沖區(qū)相關(guān)聯(lián)的基地址;以及根據(jù)所述全局頂點(diǎn)緩沖區(qū)中的所述基地址將存儲在所述本地頂點(diǎn)緩沖區(qū)中的所述頂點(diǎn)寫入所述全局頂點(diǎn)緩沖區(qū)。
7.根據(jù)權(quán)利要求6所述的圖形子系統(tǒng),所述幾何處理單元進(jìn)一步配置為:確定存儲在所述本地索引緩沖區(qū)中的索引的數(shù)目; 將所述存儲在所述本地索引緩沖區(qū)中的索引的數(shù)目傳送到所述流同步單元; 從所述流同步單元接收與全局索引緩沖區(qū)相關(guān)聯(lián)的基地址; 根據(jù)所述全局頂點(diǎn)緩沖區(qū)中的所述基地址,更新存儲在所述本地索引緩沖區(qū)中的所述索引,來生成所述全局頂點(diǎn)緩沖區(qū)的全局索引;以及 基于所述全局索引緩沖區(qū)中的基地址將所述全局頂點(diǎn)的所述全局索引寫入所述全局索引緩沖區(qū)中。
8.根據(jù)權(quán)利要求6所述的圖形子系統(tǒng),其中所述幾何處理單元配置為,通過更新存儲在所述本地索引緩沖區(qū)中的所述索引來生成所述全局頂點(diǎn)緩沖區(qū)的全局索引,包括以所述全局頂點(diǎn)緩沖區(qū)中的基地址作為增量增大存儲在所述本地索引緩沖區(qū)中的每個索引。
9.根據(jù)權(quán)利要求2所述的圖形子系統(tǒng),其中所述第一索引集中的每個索引包括,與存儲在所述本地頂點(diǎn)緩沖區(qū)中不同頂點(diǎn)相對應(yīng)的、與所述本地頂點(diǎn)緩沖區(qū)相關(guān)聯(lián)的地址、偏移或者本地索引。
10.一種配置為緩沖與幾何對象相關(guān)聯(lián)的數(shù)據(jù)的計算設(shè)備,包括: 處理單元,配置為: 接收第一幾何對象或者圖形基元, 基于所述第一幾何對象或者圖形基元生成第一頂點(diǎn)集,以及 將第一索引集存儲在本地索引緩沖區(qū)中的第一條目內(nèi),其中所述第一索引集中的每個索引引用所述第一頂點(diǎn)集中的不同頂點(diǎn),以及其中所述第一條目對應(yīng)于與所述第一頂點(diǎn)集相關(guān)聯(lián)的圖形基兀或者幾何對象。
【文檔編號】G06T1/00GK103886538SQ201310714810
【公開日】2014年6月25日 申請日期:2013年12月20日 優(yōu)先權(quán)日:2012年12月20日
【發(fā)明者】杰爾姆·F·小杜魯克, 濟(jì)亞德·S·哈庫拉, 亨利·帕爾德·莫爾頓 申請人:輝達(dá)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
上林县| 宽城| 郑州市| 淄博市| 双流县| 绵阳市| 朝阳市| 泾阳县| 正镶白旗| 义乌市| 南涧| 楚雄市| 上栗县| 息烽县| 濮阳市| 大连市| 沙田区| 黄梅县| 磴口县| 噶尔县| 高尔夫| 金川县| 新平| 平原县| 白玉县| 宁乡县| 岳普湖县| 遵化市| 游戏| 花莲市| 湟中县| 许昌市| 寻乌县| 阿克苏市| 泗洪县| 稻城县| 于都县| 梁河县| 岚皋县| 芜湖市| 门头沟区|