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

優(yōu)化三角形拓?fù)溆糜诼窂戒秩镜闹谱鞣椒?

文檔序號(hào):6523757閱讀:357來(lái)源:國(guó)知局
優(yōu)化三角形拓?fù)溆糜诼窂戒秩镜闹谱鞣椒?br> 【專利摘要】本發(fā)明公開(kāi)了優(yōu)化三角形拓?fù)溆糜诼窂戒秩尽S糜诟咝У劁秩韭窂綀D像的技術(shù)將路徑輪廓曲面細(xì)分成包括特征描述三角形的集合的三角形扇。隨后為了更大的光柵化效率,通過(guò)將翻轉(zhuǎn)操作器應(yīng)用到特征描述三角形的集合內(nèi)的所選擇的三角形對(duì)來(lái)優(yōu)化特征描述三角形的集合的拓?fù)?。隨后使用諸如模板和覆蓋的路徑渲染技術(shù)渲染經(jīng)優(yōu)化的三角形對(duì)。
【專利說(shuō)明】?jī)?yōu)化三角形拓?fù)溆糜诼窂戒秩?br> 【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明總地涉及路徑渲染,并且更具體地,涉及優(yōu)化三角形拓?fù)溆糜诼窂戒秩尽?br> 【背景技術(shù)】
[0002]路徑渲染表示一種分辨率無(wú)關(guān)的二維(2D)渲染,其形成用于本領(lǐng)域中已知的若干重要的圖形渲染標(biāo)準(zhǔn)的基礎(chǔ),圖形渲染標(biāo)準(zhǔn)如PostScript、Java2D、蘋果的Quartz2D、PDF、TrueType字體、OpenType字體、PostScript字體、可縮放矢量圖形(SVG)、OpenVG、微軟的Silverlight、Adobe Flash、微軟的 XML 頁(yè)面規(guī)范(XPS)等等。
[0003]用于實(shí)施路徑渲染的一類技術(shù)至少包括曲面細(xì)分(tessellation)步驟和路徑覆蓋步驟。在曲面細(xì)分步驟中路徑元素被曲面細(xì)分成特征描述(representative)三角形。路徑覆蓋步驟畫出許多被曲面細(xì)分的三角形,并且由這些三角形所覆蓋的樣本在模板(stencil)或顏色緩沖區(qū)中被計(jì)數(shù),其用來(lái)確定每個(gè)樣本在相關(guān)聯(lián)的路徑之內(nèi)還是之外。正面(front-facing)三角形增大所覆蓋的樣本計(jì)數(shù)并且反面(back-facing)三角形減小所覆蓋的樣本計(jì)數(shù)。被計(jì)數(shù)為在路徑之內(nèi)的樣本根據(jù)相關(guān)聯(lián)的路徑填充顏色被渲染,而被計(jì)數(shù)為在路徑之外的樣本不被渲染為路徑填充顏色。
[0004]許多常見(jiàn)曲面細(xì)分技術(shù)生成具有非常窄的、似片(silver)的三角形的網(wǎng)眼和三角形扇,其典型地以相對(duì)差的效率來(lái)渲染。因此,整體路徑渲染效率和性能可能相對(duì)差,這會(huì)降低用戶體驗(yàn)的質(zhì)量。
[0005]如前文所示出的,本領(lǐng)域所需要的是用于改進(jìn)路徑渲染效率的技術(shù)。

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

[0006]本發(fā)明的一個(gè)實(shí)施例闡述用于處理路徑圖像用于高效的光柵化的方法,方法包括將定義路徑圖像的一個(gè)或多個(gè)輪廓(contour)曲面細(xì)分成三角形的第一集合,其中三角形的第一集合的每個(gè)三角形包括繞序(winding order);基于三角形的第一集合內(nèi)的三角形的拓?fù)浜屠@序生成經(jīng)優(yōu)化以減少光柵化成本的三角形的第二集合;以及保存三角形的第二
口 O
[0007]本發(fā)明的其他實(shí)施例包括但不限于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其包括指令,當(dāng)由處理單元執(zhí)行該指令時(shí),使處理單元實(shí)施本文所描述的技術(shù),以及計(jì)算設(shè)備,該計(jì)算設(shè)備包括配置為實(shí)施本文所描述的技術(shù)的處理單元。
[0008]所公開(kāi)的技術(shù)的一個(gè)優(yōu)點(diǎn)是它改進(jìn)由圖形處理單元所渲染的路徑圖像的渲染效率。
【專利附圖】

【附圖說(shuō)明】
[0009]因此,可以詳細(xì)地理解本發(fā)明的上述特征,并且可以參考實(shí)施例得到對(duì)如上面所簡(jiǎn)要概括的本發(fā)明更具體的描述,其中一些實(shí)施例在附圖中示出。然而,應(yīng)當(dāng)注意的是,附圖僅示出了本發(fā)明的典型實(shí)施例,因此不應(yīng)被認(rèn)為是對(duì)其范圍的限制,本發(fā)明可以具有其他等效的實(shí)施例。
[0010]圖1是示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的框圖;
[0011]圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于圖1的計(jì)算機(jī)系統(tǒng)的并行處理子系統(tǒng)的框圖;
[0012]圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的通用處理集群內(nèi)的流多處理器的一部分的框圖;
[0013]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的PPU中的一個(gè)或多個(gè)能夠經(jīng)配置以實(shí)現(xiàn)的圖形處理管線的概念圖;
[0014]圖5A示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、對(duì)從路徑元素所曲面細(xì)分的三角形對(duì)進(jìn)行的翻轉(zhuǎn)操作;
[0015]圖5B示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、與三角形對(duì)相關(guān)聯(lián)的處理成本;
[0016]圖5C示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、與經(jīng)翻轉(zhuǎn)的三角形對(duì)相關(guān)聯(lián)的處理成本;
[0017]圖6示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、對(duì)具有不同的面向(facing)屬性的三角形對(duì)進(jìn)行的翻轉(zhuǎn)操作;
[0018]圖7示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于改進(jìn)的整體拓?fù)鋬?yōu)化的順序翻轉(zhuǎn)操作;
[0019]圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于采用經(jīng)優(yōu)化的三角形拓?fù)鋵?shí)施路徑渲染的方法步驟的流程圖;以及
[0020]圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于實(shí)施拓?fù)鋬?yōu)化的方法步驟的流程圖?!揪唧w實(shí)施方式】
[0021]在下面的描述中,將闡述大量的具體細(xì)節(jié)以提供對(duì)本發(fā)明更透徹的理解。然而,本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒(méi)有一個(gè)或多個(gè)這些具體細(xì)節(jié)的情況下得以實(shí)施。
[0022]系統(tǒng)概述
[0023]圖1為示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算機(jī)系統(tǒng)100包括經(jīng)由可以包括存儲(chǔ)器橋105的互連路徑通信的中央處理單元(CPU) 102和系統(tǒng)存儲(chǔ)器104。存儲(chǔ)器橋105可以是例如北橋芯片,經(jīng)由總線或其他通信路徑106 (例如超傳輸(HyperTransport)鏈路)連接到I/O (輸入/輸出)橋107。I/O橋107,其可以是例如南橋芯片,從一個(gè)或多個(gè)用戶輸入設(shè)備108 (例如鍵盤、鼠標(biāo))接收用戶輸入并且經(jīng)由通信路徑106和存儲(chǔ)器橋105將該輸入轉(zhuǎn)發(fā)到CPU102。并行處理子系統(tǒng)112經(jīng)由總線或第二通信路徑113 (例如外圍部件互連(PCI)Express、加速圖形端口或超傳輸鏈路)耦連到存儲(chǔ)器橋105。在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112是將像素傳遞到顯示設(shè)備110的圖形子系統(tǒng),所述顯示設(shè)備110可以是任何常規(guī)的陰極射線管、液晶顯示器、發(fā)光二極管顯示器等。系統(tǒng)盤114也連接到I/O橋107并可配置為存儲(chǔ)內(nèi)容和應(yīng)用和數(shù)據(jù)用于由CPU102和并行處理子系統(tǒng)112使用。系統(tǒng)盤114提供用于應(yīng)用和數(shù)據(jù)的非易失性存儲(chǔ)并可包括固定或可移動(dòng)硬盤驅(qū)動(dòng)器、閃速存儲(chǔ)器設(shè)備以及壓縮光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字通用光盤ROM (DVD-ROM)、藍(lán)光、高清晰度DVD (HD-DVD)或其他磁、光、或固態(tài)存儲(chǔ)設(shè)備。
[0024]交換器116提供I/O橋107與諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的連接。其他部件(未明確示出),包括通用串行總線(USB)或其他端口連接、壓縮光盤(CD)驅(qū)動(dòng)器、數(shù)字通用光盤(DVD)驅(qū)動(dòng)器、膠片錄制設(shè)備及類似部件,也可以連接到I/O橋107。圖1所示的各種通信路徑包括具體命名的通信路徑106和113可以使用任何適合的協(xié)議實(shí)現(xiàn),諸如PC1-EXpreSS、AGP (加速圖形端口)、超傳輸或者任何其他總線或點(diǎn)到點(diǎn)通信協(xié)議,并且如本領(lǐng)域已知的,不同設(shè)備間的連接可使用不同協(xié)議。
[0025]在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構(gòu)成圖形處理單元(GPU)。在另一個(gè)實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于通用處理的電路,同時(shí)保留底層(underlying)的計(jì)算架構(gòu),本文將更詳細(xì)地進(jìn)行描述。在又一個(gè)實(shí)施例中,可以將并行處理子系統(tǒng)112與一個(gè)或多個(gè)其他系統(tǒng)元件集成在單個(gè)子系統(tǒng)中,諸如結(jié)合存儲(chǔ)器橋105、CPU102以及I/O橋107,以形成片上系統(tǒng)(SoC)。[0026]應(yīng)該理解,本文所示系統(tǒng)是示例性的,并且變化和修改都是可能的。連接拓?fù)?,包括橋的?shù)目和布置、CPU102的數(shù)目以及并行處理子系統(tǒng)112的數(shù)目,可根據(jù)需要修改。例如,在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104直接連接到CPU102而不是通過(guò)橋,并且其他設(shè)備經(jīng)由存儲(chǔ)器橋105和CPU102與系統(tǒng)存儲(chǔ)器104通信。在其他替代性拓?fù)渲?,并行處理子系統(tǒng)112連接到I/O橋107或直接連接到CPU102,而不是連接到存儲(chǔ)器橋105。而在其他實(shí)施例中,I/O橋107和存儲(chǔ)器橋105可能被集成到單個(gè)芯片上而不是作為一個(gè)或多個(gè)分立設(shè)備存在。大型實(shí)施例可以包括兩個(gè)或更多個(gè)CPU102以及兩個(gè)或更多個(gè)并行處理子系統(tǒng)112。本文所示的特定部件是可選的;例如,任何數(shù)目的插卡或外圍設(shè)備都可能得到支持。在一些實(shí)施例中,交換器116被去掉,網(wǎng)絡(luò)適配器118和插卡120、121直接連接到I/O橋107。
[0027]圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的并行處理子系統(tǒng)112。如所示的,并行處理子系統(tǒng)112包括一個(gè)或多個(gè)并行處理單元(PI3U) 202,每個(gè)并行處理單元202都耦連到本地并行處理(PP)存儲(chǔ)器204。通常,并行處理子系統(tǒng)包括U個(gè)PPU,其中U≥1。(本文中,類似對(duì)象的多個(gè)實(shí)例需要時(shí)以標(biāo)識(shí)對(duì)象的參考數(shù)字和標(biāo)識(shí)實(shí)例的括號(hào)中的數(shù)字來(lái)表示。)PPU202和并行處理存儲(chǔ)器204可使用一個(gè)或多個(gè)集成電路設(shè)備來(lái)實(shí)現(xiàn),諸如可編程處理器、專用集成電路(ASIC)或存儲(chǔ)器設(shè)備,或者以任何其他技術(shù)可行的方式來(lái)實(shí)現(xiàn)。
[0028]再參考圖1以及圖2,在一些實(shí)施例中,并行處理子系統(tǒng)112中的一些或所有PPU202是具有渲染管線的圖形處理器,其可以配置為實(shí)施與下述相關(guān)的各種操作:經(jīng)由存儲(chǔ)器橋105和第二通信路徑113從CPU102和/或系統(tǒng)存儲(chǔ)器104所供應(yīng)的圖形數(shù)據(jù)生成像素?cái)?shù)據(jù),與本地并行處理存儲(chǔ)器204 (可被用作圖形存儲(chǔ)器,包括例如常規(guī)幀緩沖區(qū)(buffer))交互以存儲(chǔ)和更新像素?cái)?shù)據(jù),傳遞像素?cái)?shù)據(jù)到顯示設(shè)備110等等。在一些實(shí)施例中,并行處理子系統(tǒng)112可包括一個(gè)或多個(gè)作為圖形處理器而操作的PPU202以及一個(gè)或多個(gè)用于通用計(jì)算的其他PPU202。這些PPU202可以是同樣的或不同的,并且每個(gè)PPU202可具有一個(gè)或多個(gè)專用并行處理存儲(chǔ)器設(shè)備或不具有專用并行處理存儲(chǔ)器設(shè)備。并行處理子系統(tǒng)112中的一個(gè)或多個(gè)PPU202可輸出數(shù)據(jù)到顯示設(shè)備110,或者并行處理子系統(tǒng)112中的每個(gè)PPU202可輸出數(shù)據(jù)到一個(gè)或多個(gè)顯示設(shè)備110。
[0029]在操作中,CPU102是計(jì)算機(jī)系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)部件的操作。具體地,CPU102發(fā)出控制PPU202的操作的命令。在一些實(shí)施例中,CPU102寫入用于每個(gè)PPU202的命令流到數(shù)據(jù)結(jié)構(gòu)中(在圖1或圖2中未明確示出),該數(shù)據(jù)結(jié)構(gòu)可位于系統(tǒng)存儲(chǔ)器104、并行處理存儲(chǔ)器204、或CPU102和PPU202都可訪問(wèn)的另一存儲(chǔ)位置中。將指向每個(gè)數(shù)據(jù)結(jié)構(gòu)的指針寫到入棧緩沖區(qū)(pushbuffer)以發(fā)起對(duì)數(shù)據(jù)結(jié)構(gòu)中的命令流的處理。PPU202從一個(gè)或多個(gè)入棧緩沖區(qū)讀取命令流,然后相對(duì)于CPU102的操作異步地執(zhí)行命令。可以經(jīng)由設(shè)備驅(qū)動(dòng)程序103由應(yīng)用程序?yàn)槊總€(gè)入棧緩沖區(qū)指定執(zhí)行優(yōu)先級(jí)以控制對(duì)不同入棧緩沖區(qū)的調(diào)度。
[0030]現(xiàn)在返回參考圖2和圖1,每個(gè)PPU202包括經(jīng)由連接到存儲(chǔ)器橋105 (或者,在一個(gè)替代性實(shí)施例中,直接連接到CPU102)的通信路徑113與計(jì)算機(jī)系統(tǒng)100的其余部分通信的I/O (輸入/輸出)單元205。PPU202到計(jì)算機(jī)系統(tǒng)100的其余部分的連接也可以變化。在一些實(shí)施例中,并行處理子系統(tǒng)112可實(shí)現(xiàn)為可插入到計(jì)算機(jī)系統(tǒng)100的擴(kuò)展槽中的插卡。在其他實(shí)施例中,PPU202可以和諸如存儲(chǔ)器橋105或I/O橋107的總線橋集成在單個(gè)芯片上。而在其他實(shí)施例中,PPU202的一些或所有元件可以和CPU102集成在單個(gè)芯片上。
[0031]在一個(gè)實(shí)施例中,通信路徑113是PCI Express鏈路,如本領(lǐng)域所知的,其中專用通道被分配到每個(gè)PPU202。也可以使用其他通信路徑。I/O單元205生成用于在通信路徑113上傳送的包(或其他信號(hào)),并且還從通信路徑113接收所有傳入的包(或其他信號(hào)),將傳入的包引導(dǎo)到PPU202的適當(dāng)部件。例如,可將與處理任務(wù)相關(guān)的命令引導(dǎo)到主機(jī)接口206,而將與存儲(chǔ)器操作相關(guān)的命令(例如,對(duì)并行處理存儲(chǔ)器204的讀取或?qū)懭?引導(dǎo)到存儲(chǔ)器交叉開(kāi)關(guān)單元210。主機(jī)接口 206讀取每個(gè)入棧緩沖區(qū),并且將存儲(chǔ)在入棧緩沖區(qū)中的命令流輸出到前端212。
[0032]有利地,每個(gè)PPU202都實(shí)現(xiàn)高度并行處理架構(gòu)。如詳細(xì)示出的,PPU202 (O)包括處理集群陣列230,該陣列230包括C個(gè)通用處理集群(GPC)208,其中C≥1。每個(gè)GPC208能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個(gè)線程是程序的實(shí)例(instance)。在各種應(yīng)用中,可分配不同的GPC208用于處理不同類型的程序或用于實(shí)施不同類型的計(jì)算。GPC208的分配可以取決于因每種類型的程序或計(jì)算所產(chǎn)生的工作量而變化。
[0033]GPC208從任務(wù)/工作單元207內(nèi)的工作分布單元接收所要執(zhí)行的處理任務(wù)。工作分布單元接收指向編碼為任務(wù)元數(shù)據(jù)(TMD)并存儲(chǔ)在存儲(chǔ)器中的處理任務(wù)的指針。指向TMD的指針包括在存儲(chǔ)為入棧緩沖區(qū)并由前端單元212從主機(jī)接口 206接收的命令流中??梢跃幋a為TMD的處理任務(wù)包括所要處理的數(shù)據(jù)的索引,以及定義數(shù)據(jù)將被如何處理(例如,什么程序?qū)⒈粓?zhí)行)的狀態(tài)參數(shù)和命令。任務(wù)/工作單元207從前端212接收任務(wù)并確保在每一個(gè)TMD所指定的處理發(fā)起前,將GPC208配置為有效狀態(tài)??梢詾槊總€(gè)TMD指定用來(lái)調(diào)度處理任務(wù)的執(zhí)行的優(yōu)先級(jí)。還可從處理集群陣列230接收處理任務(wù)??蛇x地,TMD可包括控制將TMD添加到處理任務(wù)列表(或指向處理任務(wù)的指針的列表)的頭部還是尾部的參數(shù),從而提供除優(yōu)先級(jí)以外的另一級(jí)別的控制。
[0034]存儲(chǔ)器接口 214包括D個(gè)分區(qū)單元215,每個(gè)分區(qū)單元215直接耦連到并行處理存儲(chǔ)器204的一部分,其中D≥1。如所示的,分區(qū)單元215的數(shù)目一般等于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM) 220的數(shù)目。在其他實(shí)施例中,分區(qū)單元215的數(shù)目也可以不等于存儲(chǔ)器設(shè)備的數(shù)目。本領(lǐng)域的普通技術(shù)人員應(yīng)該理解DRAM220可以用其他合適的存儲(chǔ)設(shè)備來(lái)替代并且可以是一般常規(guī)的設(shè)計(jì)。因此省略了詳細(xì)描述。諸如幀緩沖區(qū)或紋理映射圖的渲染目標(biāo)可以跨DRAM220加以存儲(chǔ),這允許分區(qū)單元215并行寫入每個(gè)渲染目標(biāo)的各部分以有效地使用并行處理存儲(chǔ)器204的可用帶寬。[0035]任何一個(gè)GPC208都可以處理要被寫到并行處理存儲(chǔ)器204內(nèi)的任何DRAM220的數(shù)據(jù)。交叉開(kāi)關(guān)單元210配置為路由每個(gè)GPC208的輸出到任何分區(qū)單元215的輸入或到另一個(gè)GPC208用于進(jìn)一步處理。GPC208通過(guò)交叉開(kāi)關(guān)單元210與存儲(chǔ)器接口 214通信,以對(duì)各種外部存儲(chǔ)器設(shè)備進(jìn)行讀取或?qū)懭?。在一個(gè)實(shí)施例中,交叉開(kāi)關(guān)單元210具有到存儲(chǔ)器接口 214的連接以和I/O單元205通信,以及到本地并行處理存儲(chǔ)器204的連接,從而使得在不同GPC208內(nèi)的處理核心能夠與系統(tǒng)存儲(chǔ)器104或?qū)τ赑PU202而言非本地的其他存儲(chǔ)器通信。在圖2所示的實(shí)施例中,交叉開(kāi)關(guān)單元210直接與I/O單元205連接。交叉開(kāi)關(guān)單元210可使用虛擬信道來(lái)分開(kāi)GPC208與分區(qū)單元215之間的業(yè)務(wù)流。
[0036]另外,GPC208可被編程以執(zhí)行與種類繁多的應(yīng)用相關(guān)的處理任務(wù),包括但不限于,線性和非線性數(shù)據(jù)變換、視頻和/或音頻數(shù)據(jù)過(guò)濾、建模操作(例如,應(yīng)用物理定律以確定對(duì)象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細(xì)分(tessellation)著色器、頂點(diǎn)著色器、幾何著色器、和/或像素著色器程序)等等。PPU202可將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204轉(zhuǎn)移到內(nèi)部(片上)存儲(chǔ)器中,處理該數(shù)據(jù),并且將結(jié)果數(shù)據(jù)寫回到系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204,其中這樣的數(shù)據(jù)可以由其他系統(tǒng)部件訪問(wèn),所述其他系統(tǒng)部件包括CPU102或另一個(gè)并行處理子系統(tǒng)112。
[0037]PPU202可配備有任何容量(amount)的本地并行處理存儲(chǔ)器204,包括沒(méi)有本地存儲(chǔ)器,并且可以以任何組合方式使用本地存儲(chǔ)器和系統(tǒng)存儲(chǔ)器。例如,在統(tǒng)一存儲(chǔ)器架構(gòu)(UMA)實(shí)施例中,PPU202可以是圖形處理器。在這樣的實(shí)施例中,將不提供或幾乎不提供專用的圖形(并行處理)存儲(chǔ)器,并且PPU202會(huì)以排他或幾乎排他的方式使用系統(tǒng)存儲(chǔ)器。在UMA實(shí)施例中,PPU202可集成到橋式芯片中或處理器芯片中,或作為具有高速鏈路(例如,PCI Express)的分立芯片提供,所述高速鏈路經(jīng)由橋式芯片或其他通信手段將PPU202連接到系統(tǒng)存儲(chǔ)器。
[0038]如上所示,在并行處理子系統(tǒng)112中可以包括任何數(shù)目的PPU202。例如,可在單個(gè)插卡上提供多個(gè)PPU202、或可將多個(gè)插卡連接到通信路徑113、或可將一個(gè)或多個(gè)PPU202集成到橋式芯片中。在多PPU系統(tǒng)中的PPU202可以彼此同樣或不同。例如,不同的PPU202可能具有不同數(shù)目的處理核心、不同容量的本地并行處理存儲(chǔ)器等等。在存在多個(gè)PPU202的情況下,可并行操作那些PI3U從而以高于單個(gè)PPU202所可能達(dá)到的吞吐量來(lái)處理數(shù)據(jù)。包含一個(gè)或多個(gè)PPU202的系統(tǒng)可以以各種配置和形式因素來(lái)實(shí)現(xiàn),包括臺(tái)式電腦、筆記本電腦或手持式個(gè)人計(jì)算機(jī)、服務(wù)器、工作站、游戲控制臺(tái)、嵌入式系統(tǒng)等等。
[0039]可以在GPC208上并發(fā)執(zhí)行多個(gè)處理任務(wù)并且處理任務(wù)在執(zhí)行期間可以生成一個(gè)或多個(gè)“子”處理任務(wù)。任務(wù)/工作單元207接收任務(wù)并動(dòng)態(tài)調(diào)度處理任務(wù)和子處理任務(wù)用于由GPC208執(zhí)行。
[0040]圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的GPC208內(nèi)的流多處理器(SM)310的框圖。每個(gè)GPC208可配置為并行執(zhí)行大量線程,其中術(shù)語(yǔ)“線程”是指在特定輸入數(shù)據(jù)集上執(zhí)行的特定程序的實(shí)例。在一些實(shí)施例中,單指令、多數(shù)據(jù)(SIMD)指令發(fā)出技術(shù)用于在不提供多個(gè)獨(dú)立指令單元的情況下支持大量線程的并行執(zhí)行。在其他實(shí)施例中,單指令、多線程(SMT)技術(shù)用于使用配置為向GPC208中的每一個(gè)內(nèi)的處理引擎集發(fā)出指令的公共指令單元來(lái)支持大量一般來(lái)說(shuō)同步的線程的并行執(zhí)行。不同于所有處理引擎通常都執(zhí)行同樣指令的SMD執(zhí)行機(jī)制,SIMT執(zhí)行通過(guò)給定線程程序允許不同線程更容易跟隨分散執(zhí)行路徑。本領(lǐng)域普通技術(shù)人員應(yīng)該理解SMD處理機(jī)制代表SMT處理機(jī)制的功能子集。
[0041]經(jīng)由將處理任務(wù)分布到一個(gè)或多個(gè)流多處理器(SM)310的管線管理器(未示出)來(lái)有利地控制GPC208的操作,其中每個(gè)SM310配置為處理一個(gè)或多個(gè)線程組。每個(gè)SM310包括指令LI高速緩存370,其配置為經(jīng)由GPC208內(nèi)的L1.5高速緩存(未示出)從存儲(chǔ)器接收指令和常數(shù)。線程束(warp)調(diào)度器和指令單元312從指令LI高速緩存370接收指令和常數(shù)并根據(jù)指令和常數(shù)控制本地寄存器堆304和SM310功能單元。SM310功能單元包括N個(gè)exec (執(zhí)行或處理)單元302和P個(gè)加載-存儲(chǔ)單元(LSU) 303。如本領(lǐng)域已知的,SM功能單元可被管線化,允許在前一個(gè)指令完成之前發(fā)出新指令??商峁┕δ軋?zhí)行單元的任何組合。在一個(gè)實(shí)施例中,功能單元支持各種各樣的操作,包括整數(shù)和浮點(diǎn)運(yùn)算(例如加法和乘法)、比較操作、布爾操作(AND、OR、X0R)、移位和各種代數(shù)函數(shù)的計(jì)算(例如平面插值、三角函數(shù)、指數(shù)函數(shù)和對(duì)數(shù)函數(shù)等等);以及相同功能單元硬件可均衡地用來(lái)實(shí)施不同的操作。
[0042]如本文之前所定義的,傳送到特定GPC208的一系列指令構(gòu)成線程,并且跨SM310內(nèi)的并行處理引擎(未示出)的某一數(shù)目的并發(fā)執(zhí)行線程的集合在本文中稱為“線程束”或“線程組”。如本文所使用的,“線程組”是指對(duì)不同輸入數(shù)據(jù)并發(fā)執(zhí)行相同程序的一組線程,所述組的一個(gè)線程被指派到SM310內(nèi)的不同處理引擎。線程組可以包括比SM310內(nèi)的處理引擎數(shù)目少的線程,在這種情況下一些處理引擎將在該線程組正在被處理的周期期間處于閑置狀態(tài)。線程組還可以包括比SM310內(nèi)的處理引擎數(shù)目多的線程,在這種情況下處理將在連續(xù)的時(shí)鐘周期內(nèi)發(fā)生。因?yàn)槊總€(gè)SM310可以并發(fā)支持多達(dá)G個(gè)線程組,所以結(jié)果是在包括M個(gè)流多處理器310的GPC208中,在任何給定時(shí)間在GPC208中可以執(zhí)行多達(dá)G*M個(gè)線程組的系統(tǒng)。
[0043]此外,多個(gè)相關(guān)線程組可以在SM310內(nèi)同時(shí)活動(dòng)(在執(zhí)行的不同階段)。該線程組集合在本文中稱為“協(xié)作線程陣列”(“CTA”)或“線程陣列”。特定CTA的大小等于m*k,其中k是線程組中并發(fā)執(zhí)行線程的數(shù)目并且通常是SM310內(nèi)的并行處理引擎數(shù)目的整數(shù)倍,以及m是SM310內(nèi)同時(shí)活動(dòng)的線程組的數(shù)目。CTA的大小一般由編程者以及可用于CTA的硬件資源諸如存儲(chǔ)器或寄存器的容量來(lái)確定。
[0044]在本發(fā)明的實(shí)施例中,使用計(jì)算系統(tǒng)的PPU202或其他處理器來(lái)使用線程陣列執(zhí)行通用計(jì)算是可取的。為線程陣列中的每個(gè)線程指派在線程的執(zhí)行期間對(duì)于線程可訪問(wèn)的唯一的線程標(biāo)識(shí)符(“線程ID”)。可被定義為一維或多維數(shù)值的線程ID控制線程處理行為的各方面。例如,線程ID可用于確定線程將要處理輸入數(shù)據(jù)集的哪部分和/或確定線程將要產(chǎn)生或?qū)戄敵鰯?shù)據(jù)集的哪部分。
[0045]每線程指令序列可包括定義線程陣列的代表性線程和一個(gè)或多個(gè)其他線程之間的協(xié)作行為的至少一個(gè)指令。例如,每線程指令序列可能包括在序列中的特定點(diǎn)處掛起用于代表性線程的操作執(zhí)行直到諸如其他線程的一個(gè)或多個(gè)到達(dá)該特定點(diǎn)的時(shí)間為止的指令、用于代表性線程將數(shù)據(jù)存儲(chǔ)在其他線程的一個(gè)或多個(gè)有權(quán)訪問(wèn)的共享存儲(chǔ)器中的指令、用于代表性線程原子地讀取和更新存儲(chǔ)在其他線程的一個(gè)或多個(gè)基于它們的線程ID有權(quán)訪問(wèn)的共享存儲(chǔ)器中的數(shù)據(jù)的指令等等。CTA程序還可以包括計(jì)算數(shù)據(jù)將從其讀取的共享存儲(chǔ)器中的地址的指令,該地址是線程ID的函數(shù)。通過(guò)定義合適的函數(shù)并提供同步技術(shù),可以以可預(yù)測(cè)的方式由CTA的一個(gè)線程將數(shù)據(jù)寫入共享存儲(chǔ)器中的給定位置并由同一個(gè)CTA的不同線程從該位置讀取數(shù)據(jù)。因此,數(shù)據(jù)在線程之間共享的任何期望模式可以得到支持,以及CTA中的任何線程可以與同一個(gè)CTA中的任何其他線程共享數(shù)據(jù)。如果存在數(shù)據(jù)在CTA的線程之間的共享,則其范圍由CTA程序確定;因此,應(yīng)該理解的是,在使用CTA的特定應(yīng)用中,CTA的線程可能會(huì)或可能不會(huì)真正互相共享數(shù)據(jù),這取決于CTA程序,術(shù)語(yǔ)“CTA”和“線程陣列”在本文作為同義詞使用。
[0046]SM310提供具有不同級(jí)別的可訪問(wèn)性的片上(內(nèi)部)數(shù)據(jù)存儲(chǔ)。特殊寄存器(未示出)對(duì)于LSU303可讀但不可寫并且用于存儲(chǔ)定義每個(gè)線程的“位置”的參數(shù)。在一個(gè)實(shí)施例中,特殊寄存器包括每線程(或SM310內(nèi)的每exec單元302) —個(gè)的存儲(chǔ)線程ID的寄存器;每個(gè)線程ID寄存器僅由各自的exec單元302可訪問(wèn)。特殊寄存器還可以包括附加寄存器,其對(duì)于執(zhí)行由TMD322所代表的同一個(gè)處理任務(wù)的所有線程(或由所有LSU303)可讀,其存儲(chǔ)CTA標(biāo)識(shí)符、CTA維數(shù)、CTA所屬網(wǎng)格(grid)的維數(shù)(或隊(duì)列位置,如果TMD322編碼隊(duì)列任務(wù)而不是網(wǎng)格任務(wù)的話)、以及CTA被指派到的TMD322的標(biāo)識(shí)符。
[0047]如果TMD322是網(wǎng)格TMD,則TMD322的執(zhí)行會(huì)啟動(dòng)和執(zhí)行固定數(shù)目的CTA以處理存儲(chǔ)在隊(duì)列525中的固定量的數(shù)據(jù)。將CTA的數(shù)目指定為網(wǎng)格寬度、高度和深度的乘積??梢詫⒐潭康臄?shù)據(jù)存儲(chǔ)在TMD322中或TMD322可以存儲(chǔ)指向?qū)⒂蒀TA所處理的數(shù)據(jù)的指針。TMD322還存儲(chǔ)由CTA所執(zhí)行的程序的開(kāi)始地址。
[0048]如果TMD322是隊(duì)列TMD,那么使用TMD322的隊(duì)列特點(diǎn),這意味著將要被處理的數(shù)據(jù)量不一定是固定的。隊(duì)列條目存儲(chǔ)用于由指派到TMD322的CTA所處理的數(shù)據(jù)。隊(duì)列條目還可以代表在線程執(zhí)行期間由另一個(gè)TMD322所生成的子任務(wù),從而提供嵌套并行性。通常線程或包括線程的CTA的執(zhí)行被掛起直到子任務(wù)的執(zhí)行完成。可以將隊(duì)列存儲(chǔ)在TMD322中或與TMD322分開(kāi)存儲(chǔ),在該情況下TMD322存儲(chǔ)指向該隊(duì)列的隊(duì)列指針。有利地,當(dāng)代表子任務(wù)的TMD322正在執(zhí)行時(shí)可以將由子任務(wù)所生成的數(shù)據(jù)寫到隊(duì)列。隊(duì)列可以實(shí)現(xiàn)為循環(huán)隊(duì)列以使得數(shù)據(jù)的總量不限于隊(duì)列的大小。
[0049]屬于網(wǎng)格的CTA具有指示網(wǎng)格內(nèi)各自CTA的位置的隱含網(wǎng)格寬度、高度和深度參數(shù)。在初始化期間響應(yīng)于經(jīng)由前端212從設(shè)備驅(qū)動(dòng)程序103所接收的命令來(lái)寫特殊寄存器并且在處理任務(wù)的執(zhí)行期間特殊寄存器不改變。前端212調(diào)度每個(gè)處理任務(wù)用于執(zhí)行。每個(gè)CTA與具體TMD322相關(guān)聯(lián)用于一個(gè)或多個(gè)任務(wù)的并發(fā)執(zhí)行。此外,單個(gè)GPC208可以并發(fā)執(zhí)行多個(gè)任務(wù)。
[0050]參數(shù)存儲(chǔ)器(未示出)存儲(chǔ)可由同一個(gè)CTA內(nèi)的任何線程(或任何LSU303)讀取但不可由其寫入的運(yùn)行時(shí)間參數(shù)(常數(shù))。在一個(gè)實(shí)施例中,設(shè)備驅(qū)動(dòng)程序103在引導(dǎo)SM310開(kāi)始執(zhí)行使用參數(shù)的任務(wù)之前將這些參數(shù)提供給參數(shù)存儲(chǔ)器。任何CTA內(nèi)的任何線程(或SM310內(nèi)的任何exec單元302)可以通過(guò)存儲(chǔ)器接口 214訪問(wèn)全局存儲(chǔ)器??梢詫⑷执鎯?chǔ)器的各部分存儲(chǔ)在LI高速緩存320中。
[0051]每個(gè)線程將本地寄存器堆304用作暫存空間;每個(gè)寄存器被分配以專用于一個(gè)線程,并且在本地寄存器堆304的任何部分中的數(shù)據(jù)僅對(duì)于寄存器被分配到的線程可訪問(wèn)。本地寄存器堆304可以實(shí)現(xiàn)為物理上或邏輯上分為P個(gè)通道的寄存器堆,每個(gè)通道具有一定數(shù)目的條目(其中每個(gè)條目可以存儲(chǔ)例如32位字)。將一個(gè)通道指派到N個(gè)exec單元302和P個(gè)下載-存儲(chǔ)單元LSU303的每一個(gè),并且利用用于執(zhí)行同一個(gè)程序的不同線程的數(shù)據(jù)來(lái)填充不同通道中的相應(yīng)條目以幫助SIMD執(zhí)行??梢詫⑼ǖ赖牟煌糠址峙涞紾個(gè)并發(fā)線程組中的不同線程組,以使得本地寄存器堆304中的給定條目?jī)H對(duì)于特定線程可訪問(wèn)。在一個(gè)實(shí)施例中,保留本地寄存器堆304內(nèi)的某些條目用于存儲(chǔ)線程標(biāo)識(shí)符,實(shí)現(xiàn)特殊寄存器之一。此外,一致LI高速緩存375存儲(chǔ)用于N個(gè)exec單元302和P個(gè)下載-存儲(chǔ)單元LSU303的每個(gè)通道的一致值或常數(shù)值。
[0052]共享存儲(chǔ)器306對(duì)于單個(gè)CTA內(nèi)的線程可訪問(wèn);換言之,共享存儲(chǔ)器306中的任何位置對(duì)于同一個(gè)CTA內(nèi)的任何線程(或?qū)τ赟M310內(nèi)的任何處理引擎)可訪問(wèn)。共享存儲(chǔ)器306可以實(shí)現(xiàn)為具有允許任何處理引擎對(duì)共享存儲(chǔ)器中的任何位置讀取或?qū)懭氲幕ミB的共享寄存器堆或共享片上高速緩存存儲(chǔ)器。在其他實(shí)施例中,共享狀態(tài)空間可能映射到片外存儲(chǔ)器的每CTA區(qū)上并被高速緩存在LI高速緩存320中。參數(shù)存儲(chǔ)器可以實(shí)現(xiàn)為在實(shí)現(xiàn)共享存儲(chǔ)器306的同一個(gè)共享寄存器堆或共享高速緩存存儲(chǔ)器內(nèi)的指定部分,或者實(shí)現(xiàn)為L(zhǎng)SU303對(duì)其具有只讀訪問(wèn)權(quán)限的分開(kāi)的共享寄存器堆或片上高速緩存存儲(chǔ)器。在一個(gè)實(shí)施例中,實(shí)現(xiàn)參數(shù)存儲(chǔ)器的區(qū)域還用于存儲(chǔ)CTA ID和任務(wù)ID,以及CTA和網(wǎng)格維數(shù)或隊(duì)列位置,實(shí)現(xiàn)特殊寄存器的各部分。SM310中的每個(gè)LSU303耦連到統(tǒng)一地址映射單元352,統(tǒng)一地址映射單元352將為在統(tǒng)一存儲(chǔ)器空間中所指定的加載和存儲(chǔ)指令所提供的地址轉(zhuǎn)換為每個(gè)各異存儲(chǔ)器空間中的地址。因此,指令可以用于通過(guò)指定統(tǒng)一存儲(chǔ)器空間中的地址來(lái)訪問(wèn)本地、共享或全局存儲(chǔ)器空間中的任何一個(gè)。
[0053]每個(gè)SM310中的LI高速緩存320可以用于高速緩存私有的每線程本地?cái)?shù)據(jù)還有每應(yīng)用全局?jǐn)?shù)據(jù)。在一些實(shí)施例中,可以將每CTA共享數(shù)據(jù)高速緩存在LI高速緩存320中。LSU303經(jīng)由存儲(chǔ)器和高速緩存互連380耦連到共享存儲(chǔ)器306和LI高速緩存320。
[0054]應(yīng)該理解本文所述的核心架構(gòu)是示例性的并且變化和修改都是可能的。GPC208內(nèi)可包括任何數(shù)目的處理單元例如SM310。進(jìn)一步地,如圖2所示,PPU202可包括任何數(shù)目的GPC208,該任何數(shù)目的GPC208有利地在功能上相互類似使得執(zhí)行行為不取決于哪個(gè)GPC208接收特定的處理任務(wù)。進(jìn)一步地,每個(gè)GPC208有利地使用單獨(dú)且各異的處理單元、LI高速緩存獨(dú)立于其他GPC208進(jìn)行操作以執(zhí)行用于一個(gè)或多個(gè)應(yīng)用程序的任務(wù)。
[0055]本領(lǐng)域普通技術(shù)人員將理解的是,圖1-3中所描述的架構(gòu)絕不限制本發(fā)明的范圍,并且本文所教導(dǎo)的技術(shù)可實(shí)現(xiàn)在任何經(jīng)適當(dāng)配置的處理單元上,包括但不限于一個(gè)或多個(gè)CPU、一個(gè)或多個(gè)多核CPU、一個(gè)或多個(gè)PPU202、一個(gè)或多個(gè)GPC208、一個(gè)或多個(gè)圖形或?qū)S锰幚韱卧?,而不脫離本發(fā)明的范圍。
[0056]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的PPU202中的一個(gè)或多個(gè)能夠配置為實(shí)現(xiàn)的圖形處理管線400的概念圖。例如,SM310中的一個(gè)可配置為實(shí)施頂點(diǎn)處理單元415、幾何處理單元425、片段處理單元460中的一個(gè)或多個(gè)的功能。還可由GPC208內(nèi)的其他處理引擎和相應(yīng)的分區(qū)單元215實(shí)施數(shù)據(jù)匯編器410、基元匯編器420、光柵化器455和顏色光柵操作(CROP)單元465的功能??商娲兀墒褂糜糜谝粋€(gè)或多個(gè)功能的專用處理單元來(lái)實(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í)行單元,其配置為執(zhí)行頂點(diǎn)著色器程序,按頂點(diǎn)著色器程序所指定的來(lái)亮化和變換頂點(diǎn)數(shù)據(jù)。例如,頂點(diǎn)處理單元415可被編程以將頂點(diǎn)數(shù)據(jù)從基于對(duì)象的坐標(biāo)表示(對(duì)象空間)變換到可替代地基于諸如世界空間或規(guī)格化設(shè)備坐標(biāo)(NDC)空間的坐標(biāo)系。頂點(diǎn)處理單元415可讀取由數(shù)據(jù)匯編器410所存儲(chǔ)在LI高速緩存320、并行處理存儲(chǔ)器204、或系統(tǒng)存儲(chǔ)器104中的數(shù)據(jù)用于在處理頂點(diǎn)數(shù)據(jù)中使用。
[0058]基元匯編器420從頂點(diǎn)處理單元415接收頂點(diǎn)屬性、按需要讀取所存儲(chǔ)的頂點(diǎn)屬性、并構(gòu)建圖形基元用于由幾何處理單元425處理。圖形基元包括三角形、線段、點(diǎn)等等。幾何處理單元425是可編程執(zhí)行單元,其配置為執(zhí)行幾何著色器程序,按幾何著色器程序所指定的來(lái)變換從基元匯編器420所接收的圖形基元。例如,幾何處理單元425可被編程以將圖形基元細(xì)分成一個(gè)或多個(gè)新圖形基元并計(jì)算用來(lái)將新圖形基元光柵化的參數(shù),諸如平面方程系數(shù)。
[0059]在一些實(shí)施例中,幾何處理單元425還可在幾何流中添加或刪除元素。幾何處理單元425將指定新圖形基元的參數(shù)和頂點(diǎn)輸出到視口縮放、剔除(cull)和裁剪(clip)單元450。幾何處理單元425可讀取存儲(chǔ)在并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中的數(shù)據(jù)用于在處理幾何數(shù)據(jù)中使用。視口縮放、剔除和裁剪單元450實(shí)施裁剪、剔除和視口縮放,并將所處理的圖形基元輸出到光柵化器455。
[0060]光柵化器455掃描轉(zhuǎn)換新圖形基元并將片段和覆蓋數(shù)據(jù)輸出到片段處理單元460。此外,光柵化器455可配置為實(shí)施z剔除(z-culling)和其他基于z的優(yōu)化。
[0061]片段處理單元460是可編程的執(zhí)行單元,其配置為執(zhí)行片段著色器程序,按片段著色器程序所指定的來(lái)變換從光柵化器455所接收的片段。例如,片段處理單元460可被編程以實(shí)施諸如透視校正、紋理映射、著色、混合等操作,以產(chǎn)生輸出到CROP單元465的經(jīng)著色的片段。片段處理單元460可讀取存儲(chǔ)在并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中的數(shù)據(jù)用于在處理片段數(shù)據(jù)中使用??梢韵袼?、樣本、或其他粒度對(duì)片段著色,這取決于所編程的米樣率。
[0062]CROP單元465是處理單元,其實(shí)施諸如模板、z測(cè)試、混合等的光柵操作,并輸出像素?cái)?shù)據(jù)作為經(jīng)處理的圖形數(shù)據(jù)用于存儲(chǔ)在圖形存儲(chǔ)器中。經(jīng)處理的圖形數(shù)據(jù)可存儲(chǔ)在圖形存儲(chǔ)器例如并行處理存儲(chǔ)器204和/或系統(tǒng)存儲(chǔ)器104中,用于在顯示設(shè)備110上顯示或用于由CPU102或并行處理子系統(tǒng)112進(jìn)一步處理。在某些實(shí)施例中,每個(gè)像素包括多個(gè)顏色樣本。在這類實(shí)施例中,CROP單元465配置為壓縮寫入到存儲(chǔ)器的z樣本數(shù)據(jù)、顏色樣本數(shù)據(jù)或其任何組合以及解壓縮從存儲(chǔ)器中讀取的z樣本數(shù)據(jù)和顏色樣本數(shù)據(jù)。該壓縮技術(shù)的目的不是為了減小存儲(chǔ)器中的圖像的大小,而是通過(guò)由要求處理的樣本值的一個(gè)集合表示用于給定像素的所有樣本來(lái)減少與圖像相關(guān)聯(lián)的處理。在典型的場(chǎng)景中,大多數(shù)像素包括等值的顏色樣本并且該壓縮技術(shù)使能改進(jìn)的處理性能。多個(gè)顏色樣本被組合以生成結(jié)果圖像中的抗鋸齒的像素用于顯示或進(jìn)一步處理。當(dāng)與特定像素相關(guān)聯(lián)的所有顏色樣本在值上相等時(shí),為像素存儲(chǔ)一個(gè)顏色樣本并設(shè)置用于像素的狀態(tài)信息以指示樣本經(jīng)壓縮。在一個(gè)實(shí)施例中,當(dāng)相應(yīng)片段完全覆蓋像素時(shí),與像素相關(guān)聯(lián)的樣本將具有相等的顏色??山M合用于圖像內(nèi)的每個(gè)像素的顏色樣本以生成抗鋸齒的像素用于顯示。
[0063]拓?fù)鋬?yōu)化
[0064]在某些實(shí)施例中,圖形處理管線400配置為渲染由從包括路徑圖像的復(fù)雜路徑元素所曲面細(xì)分的三角形扇所定義的圖像。常規(guī)地關(guān)于錨點(diǎn)將三角形扇曲面細(xì)分,以保留被覆蓋的樣本的卷繞數(shù)(winding number)。三角形扇掃過(guò)(sweep)路徑圖像內(nèi)的每個(gè)路徑元素以覆蓋與路徑圖像內(nèi)的路徑元素相對(duì)應(yīng)的面積。該類型的曲面細(xì)分過(guò)程是明確的并產(chǎn)生正確的路徑覆蓋和正確的樣本卷繞數(shù)。然而,結(jié)果三角形趨向于相對(duì)窄,導(dǎo)致后續(xù)光柵化步驟的低效。本發(fā)明的實(shí)施例經(jīng)由拓?fù)鋬?yōu)化來(lái)使能改進(jìn)的路徑渲染性能以增加平均三角形寬度或減小平均三角形面積,從而改進(jìn)平均光柵化效率。
[0065]在某些實(shí)施例中,在路徑圖像的路徑渲染之前實(shí)施拓?fù)鋬?yōu)化。在其他實(shí)施例中,結(jié)合路徑圖像的編著(authoring)實(shí)施拓?fù)鋬?yōu)化。在這類實(shí)施例中,隨后采用優(yōu)化的拓?fù)浔4媛窂綀D像。通過(guò)對(duì)定義路徑圖像的經(jīng)曲面細(xì)分的三角形的集合進(jìn)行一系列拓?fù)浞D(zhuǎn)操作的應(yīng)用來(lái)完成拓?fù)鋬?yōu)化。
[0066]圖5A示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、對(duì)從路徑元素所曲面細(xì)分的三角形對(duì)進(jìn)行的翻轉(zhuǎn)操作500。給定的三角形由三個(gè)頂點(diǎn)來(lái)定義并可唯一地由三個(gè)頂點(diǎn)來(lái)指代。例如,具有頂點(diǎn)ABC的三角形可稱為三角形ABC或簡(jiǎn)單地“ Λ ABC”。如所示,三角形510 ( Λ ABC)由頂點(diǎn)ABC來(lái)定義,三角形512 (AAOT)由頂點(diǎn)A⑶來(lái)定義,三角形514 (AABD)由頂點(diǎn)ABD來(lái)定義,并且三角形516 ( ΛΒ⑶)由頂點(diǎn)B⑶來(lái)定義。每個(gè)三角形具有相關(guān)聯(lián)的繞序,典型地指定為順時(shí)針或逆時(shí)針。每個(gè)三角形還具有相關(guān)聯(lián)的面積,其當(dāng)三角形具有逆時(shí)針繞序時(shí)可以是正的或者當(dāng)三角形具有順時(shí)針繞序時(shí)可以是負(fù)的。如果三角形具有負(fù)的面積那么其可被視為是正面的,并且如果具有正的面積那么可被視為是反面的。
[0067]用于圖像內(nèi)的每個(gè)樣本的覆蓋累積為卷繞數(shù)。典型地在渲染之前指派缺省卷繞數(shù)為零(未覆蓋)。當(dāng)反面三角形覆蓋樣本時(shí),用于樣本的卷繞數(shù)減小。當(dāng)正面三角形覆蓋樣本時(shí),用于樣本的卷繞數(shù)增大。多個(gè)三角形可覆蓋相同樣本,并且用于樣本的最終卷繞數(shù)計(jì)算為用于覆蓋樣本的每個(gè)三角形的卷繞數(shù)的和??稍谀0寰彌_區(qū)、顏色緩沖區(qū)、或包括二維陣列值的其他技術(shù)上可行的緩沖區(qū)內(nèi)累積用于被渲染的圖像內(nèi)的樣本的卷繞數(shù)。給定的卷繞數(shù)確定相應(yīng)的樣本是否在相關(guān)聯(lián)的路徑之內(nèi)。在典型的實(shí)現(xiàn)方案中,等于零的卷繞數(shù)指示樣本不在相關(guān)聯(lián)的路徑之內(nèi),而非零的卷繞數(shù)指示樣本在路徑之內(nèi)。此處,卷繞數(shù)提供用于樣本的路徑包含指示符。在某些可替代實(shí)現(xiàn)方案中,維持單個(gè)狀態(tài)位作為用于每個(gè)樣本的路徑包含指示符。在這類實(shí)現(xiàn)方案中,當(dāng)被新三角形所覆蓋時(shí)每個(gè)狀態(tài)位改變狀態(tài)。
[0068]翻轉(zhuǎn)操作500接收作為輸入的AABC和ΛΑ⑶,并生成作為輸出的AABD和ΛΒ⑶。頂點(diǎn)A到D在幾何上保持原位,并且用于每個(gè)三角形區(qū)的面向?qū)傩员槐A?。此外,?ABC+Λ A⑶的面積等于Λ ABD+Λ B⑶的面積。本領(lǐng)域已知的一個(gè)適當(dāng)?shù)姆D(zhuǎn)操作是bistellar翻轉(zhuǎn)操作。
[0069]圖5B示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、與三角形對(duì)相關(guān)聯(lián)的處理成本。在某些渲染架構(gòu)中,渲染窄三角形比渲染寬三角形的效率低。具體來(lái)講,可由圖4的光柵化器455所實(shí)施的三角形的光柵化引發(fā)每個(gè)與精細(xì)光柵化區(qū)520相交的三角形邊一個(gè)時(shí)鐘周期的周期成本。如所示 ,圖5A的三角形對(duì)510、512投影在十二個(gè)精細(xì)光柵化區(qū)520上。區(qū)520
(O)包括五個(gè)三角形邊,區(qū)520 (I)包括兩個(gè)三角形邊,以及區(qū)520 (2)包括四個(gè)三角形邊。在十二個(gè)精細(xì)光柵化區(qū)內(nèi)將與三角形對(duì)相關(guān)聯(lián)的所有三角形邊加起來(lái)得到共三十個(gè)三角形邊,指示要求三十個(gè)周期來(lái)將三角形對(duì)光柵化。
[0070]圖5C示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、與經(jīng)翻轉(zhuǎn)的三角形對(duì)相關(guān)聯(lián)的處理成本。如所示,圖5A的三角形對(duì)514、516在精細(xì)光柵化區(qū)520內(nèi)包括共二十一個(gè)三角形邊。共二十一個(gè)三角形邊指示要求二十一個(gè)周期以將經(jīng)翻轉(zhuǎn)的三角形對(duì)光柵化。在該示例中,作為采用較寬三角形514和516來(lái)表示區(qū)的結(jié)果,與由三角形510和512所覆蓋的區(qū)相關(guān)聯(lián)的光柵化成本從三十個(gè)周期減少到二十一個(gè)周期。[0071]圖6示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、對(duì)具有不同的面向?qū)傩缘娜切螌?duì)進(jìn)行的翻轉(zhuǎn)操作600。此處,Λ EGH是正面三角形,而AEHF是反面三角形。因?yàn)槿切螌?duì)中的每個(gè)三角形具有不同的面向?qū)傩?,所以用于三角形?duì)的重疊區(qū)中的樣本的卷繞數(shù)相互抵消到零,指示路徑不覆蓋那些樣本。用于非重疊區(qū)中的樣本的卷繞數(shù)是非零的,指示路徑覆蓋那些樣本。
[0072]翻轉(zhuǎn)操作600生成反面的Λ EGF和正面的Λ GHF。區(qū)EJH不被三角形Λ EGF或AGHF的二者之一所覆蓋,并且駐留在其中的樣本不被AEGF或ΛGHF的二者之一所更改。區(qū)FGJ被Λ EGF和Λ GHF 二者所覆蓋,并且駐留在其中的樣本基于來(lái)自Λ EGF和Λ GHF的貢獻(xiàn)具有相互抵消到零的卷繞數(shù)。
[0073]如此處示出的,通過(guò)翻轉(zhuǎn)操作500和翻轉(zhuǎn)操作600, bistellar翻轉(zhuǎn)操作生成適合于確定用于與三角形對(duì)相關(guān)聯(lián)的路徑的覆蓋的三角形對(duì)。在圖6的示例中,作為翻轉(zhuǎn)操作600的結(jié)果獲得較大的光柵化效率,因?yàn)榕cΛ EGH和AEHF的組合相比,Λ EGF和Λ GHF的組合在光柵化期間要求生成較少樣本。
[0074]圖7示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于改進(jìn)的整體拓?fù)鋬?yōu)化的順序翻轉(zhuǎn)操作710,720ο如所示,翻轉(zhuǎn)操作710將Λ KLM和Λ KMN變換成包括Λ KLN和Λ LMN的拓?fù)?。翻轉(zhuǎn)操作710還將Λ KNP和Λ KPQ變換成包括Λ KNQ和Λ NPQ的拓?fù)?。在翻轉(zhuǎn)操作710之后,每個(gè)三角形更寬以用于更高效的光柵化。翻轉(zhuǎn)操作720生成AKLQ、ALNQ、ALMN和ANPQ,其一般更寬以用于更加高效的光柵化。針對(duì)示出的四個(gè)三角形的每個(gè)不同集合,使用卷繞數(shù)來(lái)確定哪些區(qū)被覆蓋得到同樣的覆蓋。
[0075]圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于采用經(jīng)優(yōu)化的三角形拓?fù)鋵?shí)施路徑渲染的方法步驟的流程圖。雖然結(jié)合圖1-4的系統(tǒng)描述了方法步驟,但本領(lǐng)域普通技術(shù)人員將理解的是,配置為以任何次序?qū)嵤┓椒ú襟E的任何系統(tǒng)在本發(fā)明的范圍內(nèi)。在一個(gè)實(shí)施例中,由諸如圖1的CPU102的CPU單元實(shí)施方法步驟。在另一個(gè)實(shí)施例中,由諸如并行處理子系統(tǒng)112的GPU單元實(shí)施方法步驟。
[0076]如所示,方法800開(kāi)始于步驟810,此處接收包括路徑元素的路徑圖像。在步驟820中,將路徑圖像曲面細(xì)分成特征描述三角形的集合。用于將路徑圖像曲面細(xì)分的一個(gè)技術(shù)涉及選擇錨點(diǎn),以及形成圍繞錨點(diǎn)的三角形扇。包括三角形扇的給定的三角形可以是正面或反面的,并可對(duì)與由三角形所覆蓋的樣本相關(guān)聯(lián)的卷繞數(shù)貢獻(xiàn)正值或負(fù)值。特征描述三角形的整體集合提供路徑圖像的分辨率無(wú)關(guān)的表示,其可包括分辨率無(wú)關(guān)的輪廓。
[0077]在步驟830中,使用選擇性地作用于共享公共邊的三角形對(duì)的翻轉(zhuǎn)操作器來(lái)優(yōu)化用于特征描述三角形的集合的拓?fù)?。如果結(jié)果拓?fù)涫歉鶕?jù)至少一個(gè)翻轉(zhuǎn)度量(metric)改進(jìn)的,那么將翻轉(zhuǎn)操作器應(yīng)用到給定三角形對(duì),否則不將翻轉(zhuǎn)操作器應(yīng)用到該三角形對(duì)。一個(gè)翻轉(zhuǎn)度量是包括三角形對(duì)的三角形的面積和。重疊的正面三角形和反面三角形可能相互抵消其各自面積的至少一部分并要求較少的光柵化工作,如圖6所示。因此當(dāng)面積和減小時(shí)該度量是改進(jìn)的。另一翻轉(zhuǎn)度量是用于三角形對(duì)的三角形薄度(sliveriness)(或窄度度量),其可被定義為與三角形對(duì)相關(guān)聯(lián)的任何兩個(gè)邊之間的最小角。因此當(dāng)最小角增加、使三角形對(duì)的最窄三角形變寬時(shí),該度量增大。下文在圖9中更詳細(xì)地示出步驟830的一個(gè)實(shí)現(xiàn)方案。
[0078]在步驟840中,保存三角形的經(jīng)優(yōu)化的集合。三角形的經(jīng)優(yōu)化的集合可包括特征描述三角形的集合和應(yīng)用到其的拓?fù)鋬?yōu)化??蓪⑷切蔚慕?jīng)優(yōu)化的集合保存到存儲(chǔ)器子系統(tǒng)內(nèi)的臨時(shí)緩沖區(qū)用于渲染。還可將三角形的經(jīng)優(yōu)化的集合保存到非易失性介質(zhì)以在將來(lái)某時(shí)間渲染。在步驟850中,渲染三角形的經(jīng)優(yōu)化的集合以生成具有指定分辨率的相應(yīng)圖像。在一個(gè)實(shí)施例中,根據(jù)路徑渲染模板和覆蓋技術(shù)渲染三角形的經(jīng)優(yōu)化的集合??蓪?shí)現(xiàn)模板和覆蓋的任何技術(shù)上可行的實(shí)現(xiàn)方案而不脫離本發(fā)明的范圍和精神。模板和覆蓋的典型實(shí)現(xiàn)方案首先通過(guò)基于覆蓋定義路徑圖像的三角形累積用于不同樣本的卷繞數(shù)來(lái)渲染用于二維緩沖區(qū)的每個(gè)樣本的卷繞數(shù)。隨后在相應(yīng)圖像中覆蓋具有非零卷繞數(shù)的樣本以生成路徑圖像的渲染。方法終止于步驟890。
[0079]圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于實(shí)施拓?fù)鋬?yōu)化的方法步驟的流程圖。雖然結(jié)合圖1-4的系統(tǒng)描述了方法步驟,但本領(lǐng)域普通技術(shù)人員將理解的是,配置為以任何次序?qū)嵤┓椒ú襟E的任何系統(tǒng)在本發(fā)明的范圍內(nèi)。在一個(gè)實(shí)施例中,由諸如圖1的CPU102的CPU單元實(shí)施方法步驟。在另一個(gè)實(shí)施例中,由諸如并行處理子系統(tǒng)112的GPU單元實(shí)施方法步驟。
[0080]如所示,方法900開(kāi)始于步驟910,此處接收用于路徑圖像的特征描述三角形的集合。特征描述三角形的集合包括從路徑圖像曲面細(xì)分所生成的三角形。在步驟920中,如果不滿足終止度量,那么方法前進(jìn)到步驟922。終止度量可包括超時(shí)機(jī)制、迭代計(jì)數(shù)閾值、成本函數(shù)、或用于確定終止的任何其他技術(shù)上可行的度量。迭代計(jì)數(shù)可反映經(jīng)過(guò)三角形的工作集的遍歷次數(shù),該工作集可包括來(lái)自特征描述三角形的集合的三角形、來(lái)自特征描述三角形的集合的經(jīng)翻轉(zhuǎn)的三角形對(duì)、或其任何組合。三角形的工作集包括在任意優(yōu)化狀態(tài)中的定義路徑圖像的三角形。
[0081]在步驟922中,計(jì)算三角形的工作集內(nèi)的至少一對(duì)三角形的翻轉(zhuǎn)度量。翻轉(zhuǎn)度量可包括先前在圖8中所描述的面積和或窄度度量、或用作測(cè)量給定三角形拓?fù)涞南鄬?duì)最優(yōu)性的任何其他技術(shù)上可行的度量。在步驟924中,選擇來(lái)自該至少一對(duì)三角形的、滿足翻轉(zhuǎn)度量標(biāo)準(zhǔn)的三角形對(duì)。在一個(gè)實(shí)施例中,貪婪選擇算法順序地遍歷三角形的工作集內(nèi)的所有三角形并選擇滿足翻轉(zhuǎn)度量要求的三角形對(duì)。在步驟926中,對(duì)所選擇的三角形對(duì)實(shí)施翻轉(zhuǎn)操作。
[0082]返回到步驟920,如果滿足終止度量,那么方法終止于步驟990。
[0083]總而言之,公開(kāi)了用于高效地渲染路徑圖像的技術(shù)。諸如輪廓的包括路徑圖像的路徑元素被曲面細(xì)分成結(jié)構(gòu)化為三角形扇的特征描述三角形的集合。為了光柵化效率,對(duì)滿足翻轉(zhuǎn)度量要求的三角形對(duì)使用翻轉(zhuǎn)操作器來(lái)優(yōu)化從特征描述三角形的集合中所選擇的三角形對(duì)。可對(duì)特征描述三角形的集合實(shí)施一個(gè)或多個(gè)優(yōu)化遍數(shù)(optimization pass)以減少整體光柵化成本。隨后使用任何技術(shù)上可行的技術(shù)諸如模板和覆蓋渲染來(lái)渲染結(jié)果三角形的集合。所公開(kāi)的技術(shù)的一個(gè)優(yōu)點(diǎn)是其提高了由圖形處理單元所渲染的路徑圖像的渲染效率。
[0084]雖然上述內(nèi)容針對(duì)本發(fā)明的實(shí)施例,但可對(duì)本發(fā)明的其他和進(jìn)一步的實(shí)施例進(jìn)行設(shè)計(jì)而不脫離其基本范圍。例如,可以以硬件或軟件或硬件和軟件的組合來(lái)實(shí)現(xiàn)本發(fā)明的各方面。本發(fā)明的一個(gè)實(shí)施例可被實(shí)現(xiàn)為與計(jì)算機(jī)系統(tǒng)一起使用的程序產(chǎn)品。該程序產(chǎn)品的程序定義實(shí)施例的各功能(包括本文中描述的方法)并且可以被包含在各種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。示例性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括但不限于:(i)不可寫的存儲(chǔ)介質(zhì)(例如,計(jì)算機(jī)內(nèi)的只讀存儲(chǔ)器設(shè)備,諸如可由CD-ROM驅(qū)動(dòng)器讀取的CD-ROM盤、閃存存儲(chǔ)器、ROM芯片或任何類型的固態(tài)非易失性半導(dǎo)體存儲(chǔ)器),在其上存儲(chǔ)永久性信息;和(ii)可寫的存儲(chǔ)介質(zhì)(例如,磁盤驅(qū)動(dòng)器或硬盤驅(qū)動(dòng)器內(nèi)的軟盤或者任何類型的固態(tài)隨機(jī)存取半導(dǎo)體存儲(chǔ)器),在其上存儲(chǔ)可更改的信息。
[0085]以上已參照具體實(shí)施例對(duì)本發(fā)明進(jìn)行了描述。然而,本領(lǐng)域普通技術(shù)人員將理解的是,可對(duì)此做出各種修改和改變而不脫離如隨附權(quán)利要求書中所闡述的本發(fā)明的較寬精神和范圍。因此,前面的描述以及附圖應(yīng)被視為是例示性而非限制性的意義。
[0086]因此,本發(fā)明的范圍由下面的權(quán)利要求來(lái)確定。
【權(quán)利要求】
1.一種用于處理路徑圖像以促進(jìn)光柵化的方法,所述方法包括: 將定義所述路徑圖像的一個(gè)或多個(gè)輪廓曲面細(xì)分成三角形的第一集合,其中包括在所述三角形的第一集合中的至少一個(gè)三角形覆蓋至少一個(gè)樣本,并且其中所述至少一個(gè)樣本包括路徑包含指示符; 基于包括在所述三角形的第一集合中的一個(gè)或多個(gè)三角形生成配置為減少光柵化成本的三角形的第二集合;以及 將所述三角形的第二集合存儲(chǔ)在存儲(chǔ)器中。
2.根據(jù)權(quán)利要求1所述的方法,其中包括在所述三角形的第一集合中的每個(gè)三角形包括繞序,并且其中所述路徑包含指示符包括基于與覆蓋三角形相關(guān)聯(lián)的繞序的卷繞數(shù)。
3.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括通過(guò)實(shí)施以下步驟來(lái)渲染圖像緩沖區(qū)中具有指定分辨率的圖像: 基于所述三角形的第二集合,在模板緩沖區(qū)中渲染每個(gè)樣本的路徑包含指示符;以及 基于駐留在所述模板緩沖區(qū)中的相應(yīng)路徑包含指示符渲染圖像顏色。
4.根據(jù)權(quán)利要求1所述的方法,其中曲面細(xì)分包括: 選擇用于所述路徑圖像的錨點(diǎn);以及 針對(duì)所述一個(gè)或多個(gè)輪廓中的每一個(gè),生成不同三角形扇, 其中與一個(gè)或多個(gè)三角形扇相關(guān)聯(lián)的三角形包括在所述三角形的第一集合中。
5.根據(jù)權(quán)利要求1所述的方法,其`中生成所述三角形的第二集合包括: 針對(duì)包括在所述三角形的第一集合中的一個(gè)或多個(gè)三角形對(duì)或針對(duì)包括在所述三角形的第二集合中的一個(gè)或多個(gè)三角形對(duì)計(jì)算翻轉(zhuǎn)度量; 從所述一個(gè)或多個(gè)三角形對(duì)中選擇滿足翻轉(zhuǎn)度量標(biāo)準(zhǔn)的至少一個(gè)三角形對(duì); 對(duì)所述至少一個(gè)三角形對(duì)實(shí)施翻轉(zhuǎn)操作以生成至少一個(gè)結(jié)果三角形對(duì);以及 將所述結(jié)果三角形對(duì)添加到所述三角形的第二集合。
6.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包括確定終止度量尚未滿足。
7.根據(jù)權(quán)利要求5所述的方法,其中針對(duì)給定的三角形對(duì),所述翻轉(zhuǎn)度量包括包括所述給定的三角形對(duì)的兩個(gè)三角形的三角形面積的和。
8.根據(jù)權(quán)利要求5所述的方法,其中針對(duì)給定的三角形對(duì),所述翻轉(zhuǎn)度量包括與包括所述給定的三角形對(duì)的兩個(gè)三角形相關(guān)聯(lián)的最小角。
9.根據(jù)權(quán)利要求5所述的方法,其中選擇至少一個(gè)三角形對(duì)包括: 遍歷所述三角形的第一集合以生成三角形對(duì)的序列; 計(jì)算所述三角形對(duì)的序列內(nèi)的每個(gè)三角形對(duì)的不同翻轉(zhuǎn)度量;以及 標(biāo)識(shí)滿足翻轉(zhuǎn)度量標(biāo)準(zhǔn)的至少一個(gè)三角形對(duì)。
10.一種計(jì)算設(shè)備,包括: 存儲(chǔ)器;以及 處理單元,其耦連到所述存儲(chǔ)器并配置為通過(guò)進(jìn)行以下內(nèi)容來(lái)渲染路徑圖像: 將定義所述路徑圖像的一個(gè)或多個(gè)輪廓曲面細(xì)分成三角形的第一集合,其中包括在所述三角形的第一集合中的至少一個(gè)三角形覆蓋至少一個(gè)樣本,并且其中所述至少一個(gè)樣本包括路徑包含指示符; 基于包括在所述三角形的第一集合中的一個(gè)或多個(gè)三角形生成配置為減少光柵化成本的三角形的第二集合; 將所述三角形的第二集合存儲(chǔ)在存儲(chǔ)器中;以及 使用所述三角形的`第二集合的模板和覆蓋渲染來(lái)渲染指定分辨率的圖像。
【文檔編號(hào)】G06T1/20GK103871019SQ201310686968
【公開(kāi)日】2014年6月18日 申請(qǐng)日期:2013年12月13日 優(yōu)先權(quán)日:2012年12月17日
【發(fā)明者】杰弗里·A·博爾茲, 馬克·J·基爾加德 申請(qǐng)人:輝達(dá)公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
安平县| 区。| 资阳市| 永嘉县| 增城市| 柘荣县| 台州市| 安达市| 紫阳县| 青神县| 侯马市| 合作市| 巴东县| 内乡县| 抚顺市| 通辽市| 淮安市| 岗巴县| 乐清市| 江西省| 湾仔区| 古田县| 寿宁县| 原平市| 永济市| 商城县| 左贡县| 绥芬河市| 莒南县| 崇礼县| 淮阳县| 如皋市| 广昌县| 黄冈市| 皮山县| 略阳县| 来宾市| 双鸭山市| 绥宁县| 大洼县| 惠东县|