Gpu加速的路徑再現(xiàn)的制作方法
【專利說(shuō)明】
[0001] 本申請(qǐng)案主張2012年8月9日申請(qǐng)的第61/681,498號(hào)美國(guó)臨時(shí)申請(qǐng)案、2013年1 月22日申請(qǐng)的第61/755, 359號(hào)美國(guó)臨時(shí)申請(qǐng)案、2012年10月12日申請(qǐng)的第61/713, 377 號(hào)美國(guó)臨時(shí)申請(qǐng)案、2013年1月22日申請(qǐng)的第61/755, 312號(hào)美國(guó)臨時(shí)申請(qǐng)案、2012年11 月6日申請(qǐng)的第61/723, 274號(hào)美國(guó)臨時(shí)申請(qǐng)案化及2013年1月22日申請(qǐng)的第61/755, 391 號(hào)美國(guó)臨時(shí)申請(qǐng)案的權(quán)益,W上申請(qǐng)案中的每一者的整個(gè)內(nèi)容W引用的方式并入本文中。
技術(shù)領(lǐng)域
[0002] 本發(fā)明設(shè)及圖形處理,且更具體地說(shuō)設(shè)及用于路徑再現(xiàn)的技術(shù)。
【背景技術(shù)】
[0003] 路徑再現(xiàn)可指代二維(2D)向量圖形路徑(可替代地在本文中被稱作"路徑")的 再現(xiàn),所述路徑中的每一者可包含一或多個(gè)路徑片段。當(dāng)路徑包含兩個(gè)或兩個(gè)W上路徑片 段時(shí),個(gè)別路徑片段可具有相同類型或不同類型。路徑片段的類型可包含(例如)線、楠圓 形弧、二次貝塞爾曲線和S次貝塞爾曲線。在一些實(shí)例中,路徑片段類型可根據(jù)例如開(kāi)放向 量圖形的penVG)API等標(biāo)準(zhǔn)向量圖形應(yīng)用程序編程接口(API)來(lái)界定。
[0004] 圖形處理單元(GPU)通常實(shí)施經(jīng)設(shè)計(jì)W與一或多個(gè)3D圖形API順應(yīng)的S維(3D) 圖形管線。因?yàn)楫?dāng)今在使用的流行的3D圖形API并不需要順應(yīng)裝置支持路徑再現(xiàn)命令, 所W現(xiàn)代的GPU常常提供極少到不提供用于路徑再現(xiàn)命令的硬件加速。舉例來(lái)說(shuō),現(xiàn)代的 GPU中實(shí)施的典型3D圖形管線可包含光柵化器,其經(jīng)設(shè)計(jì)W光柵化低階非彎曲3D圖形基元 (例如點(diǎn)、線和S角形),但不能夠直接再現(xiàn)彎曲基元(例如,楠圓形弧和貝塞爾曲線)。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明中的技術(shù)提供圖形處理單元(GPU),其包含用于3D圖形管線中的硬件加速 路徑再現(xiàn)的棋盤形布置硬件。通過(guò)使用GPU將路徑片段棋盤形布置為線段,預(yù)處理路徑片 段的負(fù)擔(dān)從中央處理單元(CPU)起離,進(jìn)而釋放處理資源用于其它CPU任務(wù)。此外,在一些 實(shí)例中,GPU可利用高度平行的現(xiàn)代GPU棋盤形布置架構(gòu)來(lái)執(zhí)行棋盤形布置操作,其在一些 實(shí)例中可允許GPU W比CPU更高效的方式棋盤形布置路徑片段。另外,因?yàn)槠灞P形布置在 GPU中發(fā)生而不是在CPU中發(fā)生,所W眾多的經(jīng)棋盤形布置基元不需要存儲(chǔ)于系統(tǒng)存儲(chǔ)器 中且不需要從CPU傳遞到GPU,進(jìn)而減少用于路徑再現(xiàn)需要的存儲(chǔ)器占據(jù)面積W及用于路 徑再現(xiàn)需要的存儲(chǔ)器帶寬。
[0006] 在一些實(shí)例中,GPU可能夠使用由特定3D圖形應(yīng)用程序編程接口(API)指定的圖 形架構(gòu)棋盤形布置且再現(xiàn)路徑片段,例如更詳細(xì)描述的DirectX 11 API,本發(fā)明中描述的 技術(shù)描述對(duì)圖形硬件的可能修改W允許劃虛線、末端蓋、再棋盤形布置W及使用再棋盤形 布置的尖點(diǎn)處置。W此方式,本發(fā)明中描述的技術(shù)允許具有一些修改的DirectXll架構(gòu)的 圖形硬件W劃虛線、蓋來(lái)執(zhí)行路徑再現(xiàn)且支持尖點(diǎn)。然而,所述技術(shù)不限于此且可W用于其 它類型的路徑再現(xiàn),W及除路徑再現(xiàn)之外或替代路徑再現(xiàn)的技術(shù)。
[0007]本發(fā)明的技術(shù)包含經(jīng)修改棋盤形布置單元,其在一些情況下經(jīng)配置w輸出指示圖 形特征的信息。傳統(tǒng)地,所述棋盤形布置單元在等值線、=角形和方形域上操作。所述域表 示二維線、=角形和四邊形,棋盤形布置器針對(duì)其基于一或多個(gè)棋盤形布置因數(shù)確定許多 域坐標(biāo),所述域坐標(biāo)表示所述線、=角形或方形的較詳細(xì)版本。本發(fā)明的技術(shù)增加新的域類 型,其致使棋盤形布置器執(zhí)行額外操作,包含輸出指示圖形特征的信息。圖形特征的信息可 與所述棋盤形布置單元輸出的一或多個(gè)域坐標(biāo)相關(guān)聯(lián),且可指示域坐標(biāo)是否與圖形特征相 關(guān)聯(lián),例如起始蓋、末端蓋、接合點(diǎn)和線段。另外,本發(fā)明的經(jīng)修改棋盤形布置單元可經(jīng)配置 W輸出其它信息作為輸出指示圖形特征的信息的一部分。通過(guò)輸出指示圖形特征的信息, 本發(fā)明的經(jīng)修改棋盤形布置單元可將信息提供到圖形管線的其它級(jí),例如域著色器、幾何 形狀著色器等,其可使得其它級(jí)能夠基于指示圖形特征的信息執(zhí)行操作。
[000引作為一個(gè)非限制性實(shí)例,域著色器可解譯指示圖形特征的信息W便基于由經(jīng)修改 棋盤形布置單元輸出的域坐標(biāo)確定頂點(diǎn)坐標(biāo)。域著色器可基于例如信息是否指示域坐標(biāo)與 起始蓋、末端蓋、接合點(diǎn)、線段或另一特征相關(guān)聯(lián)而W不同方式基于域坐標(biāo)確定頂點(diǎn)坐標(biāo)。 根據(jù)本發(fā)明的技術(shù),此為上下文提供域坐標(biāo)的能力可允許圖形處理單元的棋盤形布置級(jí)增 加圖形特征,例如接合點(diǎn)和蓋,且執(zhí)行再棋盤形布置和尖點(diǎn)處置。
[0009] 在一個(gè)實(shí)例中,本發(fā)明描述一種方法,其包括;W圖形處理單元(GPU)的棋盤形布 置單元確定所接收基元的頂點(diǎn)的域坐標(biāo);W所述棋盤形布置單元輸出所述頂點(diǎn)的所述所確 定域坐標(biāo);W所述棋盤形布置單元確定所述所接收基元的域類型不是=角形、等值線或方 形域中的一者;W及當(dāng)所述域類型不是所述=角形、等值線或方形域中的一者時(shí)W所述棋 盤形布置單元輸出指示與所述所確定域坐標(biāo)中的一或多者相關(guān)聯(lián)的圖形特征的信息。
[0010] 在另一實(shí)例中,本發(fā)明描述一種包含GPU的裝置,所述GPU包括棋盤形布置單元, 所述棋盤形布置單元經(jīng)配置W ;確定所接收基元的頂點(diǎn)的域坐標(biāo);輸出所述頂點(diǎn)的所述所 確定域坐標(biāo);確定所述所接收基元的域類型不是=角形、等值線或方形域中的一者;W及 當(dāng)所述域類型不是所述=角形、等值線或方形域中的一者時(shí)輸出指示與所述所確定域坐標(biāo) 中的一或多者相關(guān)聯(lián)的圖形特征的信息。
[0011] 在另一實(shí)例中,本發(fā)明描述一種設(shè)備,其包含;用于確定所接收基元的頂點(diǎn)的域坐 標(biāo)的裝置;用于輸出所述頂點(diǎn)的所述所確定域坐標(biāo)的裝置;用于確定所述所接收基元的域 類型不是=角形、等值線或方形域中的一者的裝置;W及用于當(dāng)所述域類型不是所述=角 形、等值線或方形域中的一者時(shí)輸出指示與所述所確定域坐標(biāo)中的一或多者相關(guān)聯(lián)的圖形 特征的信息的裝置。
[0012] 在另一實(shí)例中,本發(fā)明描述一種存儲(chǔ)指令的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)媒體,所述 指令在被執(zhí)行時(shí)致使一或多個(gè)處理器;確定所接收基元的頂點(diǎn)的域坐標(biāo);輸出所述頂點(diǎn)的 所述所確定域坐標(biāo);確定所述所接收基元的域類型不是=角形、等值線或方形域中的一者; W及當(dāng)所述域類型不是所述=角形、等值線或方形域中的一者時(shí)輸出指示與所述所確定域 坐標(biāo)中的一或多者相關(guān)聯(lián)的圖形特征的信息。
[0013] 在附圖及W下描述中闡述本發(fā)明的一或多個(gè)實(shí)例的細(xì)節(jié)。本發(fā)明的其它特征、目 標(biāo)及優(yōu)勢(shì)將從描述及圖式及權(quán)利要求書(shū)顯而易見(jiàn)。
【附圖說(shuō)明】
[0014] 圖1是說(shuō)明可用W實(shí)施本發(fā)明的GPU加速的路徑再現(xiàn)技術(shù)的實(shí)例計(jì)算裝置的框 圖。
[0015] 圖2是更詳細(xì)說(shuō)明圖1中的計(jì)算裝置的中央處理單元(CPU)、圖形處理單元(GPU) 和存儲(chǔ)器的框圖。
[0016] 圖3是說(shuō)明可執(zhí)行本發(fā)明的路徑再現(xiàn)技術(shù)的實(shí)例圖形管線的概念圖。
[0017] 圖4A到4B是說(shuō)明根據(jù)本發(fā)明的技術(shù)棋盤形布置所接收基元的概念圖。
[0018] 圖5A到5B是說(shuō)明根據(jù)本發(fā)明的技術(shù)的線段的再棋盤形布置的概念圖。
[0019] 圖6A到6C是說(shuō)明根據(jù)本發(fā)明的技術(shù)再棋盤形布置線段且將劃虛線應(yīng)用于線段的 概念圖。
[0020] 圖7A到7C是說(shuō)明應(yīng)用根據(jù)本發(fā)明的一或多種技術(shù)的劃虛線的概念圖。
[0021] 圖8是說(shuō)明實(shí)例斜邊接合點(diǎn)的概念圖。
[0022] 圖9是說(shuō)明實(shí)例斜接接合點(diǎn)的概念圖。
[0023] 圖10是說(shuō)明實(shí)例圓形接合點(diǎn)的概念圖。
[0024] 圖11是說(shuō)明實(shí)例正方形蓋的概念圖。
[0025] 圖12是說(shuō)明實(shí)例圓形蓋的概念圖。
[0026] 圖13A到13D是說(shuō)明根據(jù)本發(fā)明的一或多種技術(shù)應(yīng)用末端蓋和接合點(diǎn)的概念圖。
[0027] 圖14A到14B是說(shuō)明根據(jù)本發(fā)明的技術(shù)的線段的尖點(diǎn)的再棋盤形布置的概念圖。 [002引圖15是說(shuō)明根據(jù)本發(fā)明的用于執(zhí)行GPU加速的路徑再現(xiàn)的實(shí)例技術(shù)的流程圖。
[0029] 圖16是說(shuō)明根據(jù)本發(fā)明的用于執(zhí)行GPU加速的路徑再現(xiàn)的實(shí)例技術(shù)的流程圖。
【具體實(shí)施方式】
[0030] 本發(fā)明是針對(duì)用于執(zhí)行GPU加速的路徑再現(xiàn)的技術(shù)。路徑再現(xiàn)可指代二維(2D) 向量圖形路徑(可替代地在本文中被稱作"路徑")的再現(xiàn),所述路徑中的每一者可包含一 或多個(gè)路徑片段。當(dāng)路徑包含兩個(gè)或兩個(gè)W上路徑片段時(shí),個(gè)別路徑片段可具有相同類型 或不同類型。路徑片段的類型可包含(例如)線、楠圓形弧、二次貝塞爾曲線和S次貝塞爾 曲線。在一些實(shí)例中,路徑片段類型可根據(jù)例如開(kāi)放向量圖形的penVG)API等標(biāo)準(zhǔn)向量圖 形應(yīng)用程序編程接口(API)來(lái)界定。
[003U 圖形處理單元佑PU)通常實(shí)施經(jīng)設(shè)計(jì)W與一或多個(gè)3D圖形API順應(yīng)的S維(3D) 圖形管線。因?yàn)楫?dāng)今在使用的流行的3D圖形API并不需要順應(yīng)裝置(例如,GPU)支持路 徑再現(xiàn)命令,所W現(xiàn)代的GPU常常提供極少到不提供用于路徑再現(xiàn)命令的硬件加速。舉例 來(lái)說(shuō),現(xiàn)代的GPU中實(shí)施的典型3D圖形管線可包含光柵化器,其經(jīng)設(shè)計(jì)W光柵化低階非彎 曲3D圖形基元(例如點(diǎn)、線和=角形),但可能不能夠直接再現(xiàn)彎曲路徑再現(xiàn)基元(例如, 楠圓形弧和貝塞爾曲線)。
[0032] 用于路徑再現(xiàn)的一個(gè)方法可設(shè)及使用3D GPU管線來(lái)提供部分GPU硬件加速W用 于路徑再現(xiàn)命令的執(zhí)行。此方法設(shè)及W中央處理單元(CPU)預(yù)處理路徑片段W便將所述路 徑片段轉(zhuǎn)換為可由GPU光柵化的一或多個(gè)低階非彎曲圖形基元。在除根據(jù)本發(fā)明中描述的 技術(shù)外的實(shí)例中,CPU可將彎曲路徑片段(例如,楠圓弧或貝塞爾曲線)劃分為近似所述路 徑片段的曲率的相對(duì)較小S角形的集合,且可致使使用GPU再現(xiàn)所述S角形集合。然而,此 方法可為CPU密集的,且因此可限制可用于其它CPU任務(wù)的CPU處理循環(huán)的量。此外,在某 些情況下,可需要相對(duì)較大量的=角形來(lái)w所要細(xì)節(jié)水平再現(xiàn)路徑片段。相對(duì)較大量的= 角形在存儲(chǔ)數(shù)據(jù)時(shí)可消耗大量存儲(chǔ)器存儲(chǔ)空間,且在將數(shù)據(jù)傳送到GPU時(shí)可消耗大量的存 儲(chǔ)器帶寬。
[0033] 本發(fā)明中的路徑再現(xiàn)技術(shù)可提供GPU硬件加速的路徑再現(xiàn)解決方案,其利用GPU 的經(jīng)修改棋盤形布置器級(jí)和兩個(gè)再現(xiàn)遍次來(lái)確定由經(jīng)修改棋盤形布置器級(jí)接收的基元的 頂點(diǎn)的域坐標(biāo)。圖形管線中的后續(xù)級(jí)解譯所述域坐標(biāo)W對(duì)線段執(zhí)行路徑再現(xiàn)操作,例如將 劃虛線和末端蓋應(yīng)用于路徑,W及使用3D圖形管線應(yīng)用內(nèi)部路徑片段的端點(diǎn)之間的接合 點(diǎn)。通過(guò)使用GPU來(lái)執(zhí)行路徑再現(xiàn)操作,執(zhí)行該些操作的負(fù)擔(dān)從CPU起離,進(jìn)而釋放處理資 源W用于其它CPU任務(wù)。此外,在一些實(shí)例中,GPU可利用高度并行的現(xiàn)代GPU棋盤形布置 架構(gòu)來(lái)輔助執(zhí)行路徑再現(xiàn)操作,其可允許GPU W比CPU更高效的方式再現(xiàn)路徑片段。
[0034] 在一些實(shí)例中,GPU可能夠使用由例如DirectX 11 API等特定3D圖形API指定的 圖形架構(gòu)來(lái)棋盤形布置且再現(xiàn)路徑片段。如更詳細(xì)描述,本發(fā)明中描述的技術(shù)描述對(duì)圖形 硬件、且明確地說(shuō)棋盤形布置級(jí)的可能修改W產(chǎn)生頂點(diǎn)的域坐標(biāo),GPU圖形管線中的后續(xù)級(jí) 可解譯所述域坐標(biāo)W執(zhí)行用于末端蓋、劃虛線、接合點(diǎn)和尖點(diǎn)處置的再現(xiàn)操作。W此方式, 本發(fā)明中描述的技術(shù)允許具有一些修改的DirectX 11架構(gòu)的圖形硬件W劃虛線、接合點(diǎn)、 末端蓋和再棋盤形布置來(lái)執(zhí)行路徑再現(xiàn)。
[0035] 路徑再現(xiàn)可劃分成兩個(gè)主操作;(1)填充路徑片段,和(2)來(lái)回劃動(dòng)路徑片段。在 一些實(shí)例中,可執(zhí)行填充和來(lái)回劃動(dòng)操作中的一或兩者W完全再現(xiàn)路徑。概念地,填充操作 可對(duì)應(yīng)于W指定填充顏色填充路徑片段的內(nèi)部區(qū)。出于說(shuō)明的目的,相對(duì)于來(lái)回劃動(dòng)操作 描述所述技術(shù)。填充操作可W任何方式執(zhí)行。
[0036] 來(lái)回劃動(dòng)操作可概念地對(duì)應(yīng)于使用保持垂直于路徑的直線筆"加寬"路徑片段的 邊緣。除主操作之外,路徑再現(xiàn)還可設(shè)及將各種類型的劃虛線、末端蓋應(yīng)用于路徑的末端, 應(yīng)用路徑的內(nèi)部路徑片段的端點(diǎn)之間的各種類型的接合點(diǎn),W及使用再棋盤形布置處置尖 點(diǎn)。
[0037] GPU可使用也被稱作"棋盤形布置單元"或棋盤形布置器的棋盤形布置級(jí)來(lái)棋盤形 布置(例如,劃分)基元或路徑片段。在GPU棋盤形布置路徑片段之后,實(shí)施本發(fā)明的路徑 再現(xiàn)技術(shù)的GPU可經(jīng)配置W基于棋盤形布置器級(jí)確定且輸出到GPU圖形再現(xiàn)管線中的后續(xù) 級(jí)的域坐標(biāo)而產(chǎn)生3D幾何形狀。通過(guò)基于由GPU產(chǎn)生的3D幾何形狀再現(xiàn)用于路徑片段的 來(lái)回劃線區(qū)域,3D GPU管線可用W提供100%或幾乎100% GPU解決方案用于來(lái)回劃動(dòng)操作 的執(zhí)行。
[003引圖1是說(shuō)明可用W實(shí)施本發(fā)明的GPU加速的路徑再現(xiàn)技術(shù)的實(shí)例計(jì)算裝置2的框 圖。計(jì)算裝置2可包括個(gè)人計(jì)算機(jī)、桌上型計(jì)算機(jī)、膝上型計(jì)算機(jī)、計(jì)算機(jī)工作站、平板計(jì)算 裝置、視頻游戲平臺(tái)或控制臺(tái)、無(wú)線通信裝置(例如,移動(dòng)電話、蜂窩式電話、衛(wèi)星電話和/ 或移動(dòng)電話手持機(jī))、陸線電話、因特網(wǎng)電話、手持式裝置(例如,便攜式視頻游戲裝置或個(gè) 人數(shù)字助理(PDA))、個(gè)人音樂(lè)播放器、視頻播放器、顯示裝置、電視、電視機(jī)頂盒、服務(wù)器、中 間網(wǎng)絡(luò)裝置、主機(jī)計(jì)算機(jī)、或處理及/或顯示圖形數(shù)據(jù)的任何其它類型的裝置。
[0039] 如圖1的實(shí)例中所示,計(jì)算裝置2包含用戶接口 4、CPU 6、存儲(chǔ)器控制器8、存儲(chǔ)器 10、圖形處理單元佑PU) 12、GPU高速緩沖存儲(chǔ)器14、顯示接口 16、顯示器18和總線20。用 戶接口 4、CPU 6、存儲(chǔ)器控制器8、GPU 12及顯示接口 16可使用總線20彼此通信。應(yīng)注意, 圖1中展示的不同組件之間的總線及通信接口的特定配置僅是示范性的,且具有相同或不 同組件的計(jì)算裝置及/或其它圖形處理系統(tǒng)的其它配置可用于實(shí)施本發(fā)明的技術(shù)。
[0040] CPU 6可包括控制計(jì)算裝置2的操作的通用或?qū)S锰幚砥?。用戶可將輸入提供?計(jì)算裝置2 W致使CPU 6執(zhí)行一或多個(gè)軟件應(yīng)用程序。在CPU 6上執(zhí)行的軟件應(yīng)用程序可 包含(例如)操作系統(tǒng)、字處理器應(yīng)用程序、電子郵件應(yīng)用程序、電子數(shù)據(jù)表應(yīng)用程序、媒體 播放器應(yīng)用程序、視頻游戲應(yīng)