TWI417806B - 單一通過鑲嵌 - Google Patents
單一通過鑲嵌 Download PDFInfo
- Publication number
- TWI417806B TWI417806B TW098131568A TW98131568A TWI417806B TW I417806 B TWI417806 B TW I417806B TW 098131568 A TW098131568 A TW 098131568A TW 98131568 A TW98131568 A TW 98131568A TW I417806 B TWI417806 B TW I417806B
- Authority
- TW
- Taiwan
- Prior art keywords
- processing
- processing units
- memory
- shader
- unit
- Prior art date
Links
- 238000012545 processing Methods 0.000 claims description 181
- 238000000034 method Methods 0.000 claims description 29
- 238000011156 evaluation Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 13
- 230000015654 memory Effects 0.000 description 98
- 238000005227 gel permeation chromatography Methods 0.000 description 52
- 238000010586 diagram Methods 0.000 description 20
- 238000009826 distribution Methods 0.000 description 16
- 239000000872 buffer Substances 0.000 description 15
- 238000004891 communication Methods 0.000 description 13
- 239000012634 fragment Substances 0.000 description 11
- 239000000463 material Substances 0.000 description 11
- 235000012431 wafers Nutrition 0.000 description 10
- 238000003860 storage Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000001801 Z-test Methods 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000010408 film Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005293 physical law Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Multi Processors (AREA)
Description
本發明概略關於三維表面補片的鑲嵌,尤指一種經由一繪圖處理管線在一單一通過中執行鑲嵌。
用於鑲嵌之硬體的程式化模型已經發展出露新的遮影器程式,其可用於執行三維表面補片的鑲嵌。習用的硬體架構使用二次通過方法來執行鑲嵌。在第一次通過一繪圖處理管線期間,頂點遮影器及鑲嵌控制遮影器(或控制殼體遮影器,tessellation control shader(TCS))程式被執行,且頂點資料及鑲嵌參數被儲存在記憶體中。在完成第一次通過之後,該繪圖處理管線被重新配置。於第二次通過該繪圖處理管線期間,該等頂點資料及鑲嵌參數自記憶體讀取,且執行鑲嵌評估遮影器(或領域遮影器,tessellation evaluation shader(TES))及幾何遮影器程式來完成該鑲嵌作業。基本上一軟體應用程式或裝置驅動器同時啟始第一次通過及第二次通過。
因此,本技藝中需要一種改良的用於執行鑲嵌遮影器程式之系統與方法。
一種用於在單一通過一繪圖處理器中執行鑲嵌的系統與方法,其將該繪圖處理器內的處理資源區分成執行不同鑲嵌作業之組合。頂點資料及鑲嵌參數直接由一處理資源導引到另一個,而非儲存在記憶體中。因此,一表面補片描述被提供給該繪圖處理器,且在單一無中斷通過該繪圖處理器中完成鑲嵌,而不需要儲存中間資料在記憶體中。
本發明之用於在一單一通過一繪圖處理器中執行鑲嵌的方法之多種具體實施例包括配置該繪圖處理器之第一組處理單元,並配置該繪圖處理器內第二組處理單元。該第一組處理單元係配製成執行一鑲嵌控制遮影器來處理表面補片,運算細節的鑲嵌層級,並產生包括多個頂點之一繪圖基元。該第二組處理單元係組態成執行一鑲嵌評估遮影器到該等多個頂點之每一者進行處理。然後該鑲嵌控制遮影器及該鑲嵌評估遮影器被執行來在經由該第一組處理單元及第二組處理單元的一單一通過中鑲嵌該等表面補片以產生處理過的頂點。
本發明之多種具體實施例包括一種在經由一繪圖處理器的一單一通過中執行鑲嵌的系統。該繪圖處理器包括第一組處理單元、第二組處理單元及一交叉互連。該第一組處理單元係組態成執行一鑲嵌控制遮影器來處理表面補片,並產生包括多個頂點之一繪圖基元。該第二組處理單元係組態成執行一鑲嵌評估遮影器到該等多個頂點之每一者進行處理。該交叉互連係耦合至該第一組處理單元及該第二組處理單元,並組態成導引由該第一組處理單元輸出的多個頂點到該第二組處理單元之輸入。
在以下的說明中,許多特定細節被提出來提供對於本發明之更為完整的瞭解。但是本技藝專業人士將可瞭解到本發明可不利用一或多個這些特定細節來實施。在其它實例中,並未說明熟知的特徵,藉以避免混淆本發明。
第一圖為例示組態成實施本發明一或多種態樣之電腦系統100的方塊圖。電腦系統100包括一中央處理單元(CPU,“Central processing unit”)102與一系統記憶體104,其經由通過一記憶體橋接器105的一匯流排路徑進行通訊。記憶體橋接器105可被整合到CPU 102中,如第一圖所示。另外,記憶體橋接器105可為一習用裝置,例如一北橋晶片,其經由一匯流排連接至CPU 102。記憶體橋接器105經由通訊路徑106(例如一超輸送鏈結)連接至一I/O(輸入/輸出)橋接器107。I/O橋接器107可為例如一南橋晶片,其接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的輸入,並經由路徑106及記憶體橋接器105轉送該輸入到CPU 102。一平行處理子系統112經由一匯流排或其它通訊路徑113(例如PCI Express,加速繪圖埠、或HyperTransport鏈結)耦合至記憶體橋接器105;在一具體實施例中,平行處理子系統112為一繪圖子系統,其傳遞像素到一顯示裝置110(例如一習用CRT或LCD式的監視器)。一系統碟114亦連接至I/O橋接器107。一開關116提供I/O橋接器107與其它像是網路轉接器118與多種嵌入卡120及121之其它組件之間的連接。其它組件(未明確顯示),包括有USB或其它埠連接、CD驅動器、DVD驅動器、薄膜記錄裝置及類似者,其亦可連接至I/O橋接器107。互連接於第一圖中多種組件的通訊路徑可使用任何適當的協定來實施,例如PCI(周邊組件互連,Peripheral Component Interconnect)、PCI Express(PCI快速,PCI-E)、AGP(加速繪圖埠,Accelerated Graphics Port)、HyperTransport(超輸送),或任何其他匯流排或點對點通訊協定,及不同裝置之間的連接,皆可使用如本技藝中所知的不同協定。
在一具體實施例中,平行處理器子系統112加入有對於繪圖及視訊處理最佳化的電路,其包括例如視訊輸出電路,並構成一繪圖處理單元(GPU,“Graphics processing unit”)。在另一具體實施例中,平行處理子系統112加入有對於一般性處理最佳化的電路,而可保留底層的運算架構,如此處之更為詳細的說明。在又另一具體實施例中,平行處理子系統112可整合一或多個其它系統元件,例如記憶體橋接器105、CPU 102、及I/O橋接器107而形成一系統上晶片(SoC,“System on chip”)。
將可瞭解到此處所示的系統僅為例示性,其有可能有多種變化及修正。該連接拓樸,包括橋接器的數目及配置等,皆可視需要修改。例如,在一些具體實施例中,系統記憶體104直接連接至CPU 102而非透過一橋接器連接,而其它裝置透過記憶體橋接器105及CPU 102與系統記憶體104進行通訊。在其它另外的拓樸中,平行處理子系統112連接至I/O橋接器107或直接連接至CPU 102,而非連接至記憶體橋接器105。在又其它的具體實施例中,一或多個CPU 102、I/O橋接器107、平行處理子系統112及記憶體橋接器105可被整合到一或多個晶片當中。此處所示的該等特定組件為選擇性;例如,其可支援任何數目的嵌入卡或周邊裝置。在一些具體實施例中,開關116被省略,且網路轉接器118及嵌入卡120、121直接連接至I/O橋接器107。
第二圖所示為根據本發明一具體實施例之平行處理子系統112。如所示,平行處理子系統112包括一或多個平行處理單元(PPU,“Parallel processing unit”)202,其每一者耦合於一本地平行處理(PP,“Parallel processing”)記憶體204。概言之,一平行處理子系統包括數目(U)的PPU,其中。(在此處類似物件的多個實例標示為辨識該物件之參考編號,而括號中的數目辨識所需要的實例)。PPU 202及平行處理記憶體204可以使用一或多個積體電路裝置來實作,例如可程式化處理器,特殊應用積體電路(ASIC,“Application specific integrated circuits”),或記憶體裝置,或以任何其它技術上可行的方式。
請再次參照第一圖,在一些具體實施例中,平行處理子系統112中部份或所有的PPU 202為繪圖處理器,其具有顯像管線,其能夠組態成執行自CPU 102及/或系統記憶體104供應的繪圖資料來產生像素資料,與本地平行處理記憶體204進行互動(其能夠做為繪圖記憶體,其包括例如一習用圖框緩衝器)以儲存及更新像素資料,傳遞像素資料到顯示裝置110,及類似者。-在一些具體實施例中,平行處理子系統112可以包括一或多個PPU 202,其可操作為繪圖處理器,及一或多個其它PPU 202,其可用於通用型運算。PPU 202可為相同或不同,且每個PPU可以具有其本身專屬的平行處理記憶體裝置或並無專屬的平行處理記憶體裝置。一或多個PPU 202可以輸出資料到顯示裝置110,或每個PPU 202可以輸出資料到一或多個顯示裝置110。
在作業中,CPU 102為電腦系統100的主控處理器,其控制及協調其它系統組件的作業。特別是,CPU 102發出命令來控制PPU 202的作業。在一些具體實施例中,CPU 102寫入每個PPU之一命令串流到一命令緩衝器(第一圖或第二圖中未明確示出),其可位在系統記憶體104、平行處理記憶體204或另一個可同時由CPU 102及PPU 202存取的儲存位置。PPU 202自該命令緩衝器讀取該命令串流,然後相對於CPU 102的作業為非同步地執行命令。CPU 102亦可產生資料緩衝器,其中PPU 202可回應於在該命令緩衝器中的命令而讀取。每個命令及資料緩衝器可由多個PPU 202讀取。
現在請回頭參照第二圖,每個PPU 202包括一I/O(輸入/輸出)單元205,其經由通訊路徑113與電腦系統100的其它部份進行通訊,其連接至記憶體橋接器105(或在另一具體實施例中直接連接至CPU 102)。PPU 202與電腦系統100的其它部份之連接亦可改變。在一些具體實施例中,平行處理子系統112係實作成一嵌入卡,其可被插入到電腦系統100的一擴充槽中。在其它具體實施例中,PPU 202可利用一匯流排橋接器整合在一單一晶片上,例如記憶體橋接器105或I/O橋接器107。在又其它的具體實施例中,PPU 202之部份或所有元件可與CPU 102整合在一單一晶片上。
在一具體實施例中,通訊路徑113為一PCI-E鏈結,其中如本技藝中所熟知者有專屬的線路會分配給每個PPU 202。其亦可使用其它通訊路徑。一I/O單元205產生封包(或其它信號)在通訊路徑113上傳輸,且亦自通訊路徑113接收所有進入的封包(或其它信號),導引該等進入封包到PPU 202的適當組件。例如,關於處理工作的命令可被導引到一主控介面206,而關於記憶體作業的命令(例如自平行處理記憶體204讀取或寫入其中)可被導引到一記憶體交叉單元210。主控介面206讀取每個命令緩衝器,並輸出由該命令緩衝器指定的工作到一前端212。
每個PPU 202較佳地是實作一高度平行架構。如詳細所示,PPU 202(0)包括一處理叢集陣列230,其包括數目為C
的通用處理叢集(GPC,“General processing clusters”)208,其中。每個GPC 208能夠同步地執行大量(例如數百或數千)個執行緒,其中每個執行緒為一程式的事件。在多種應用中,不同的GPC 208可分配來處理不同種類的程式,或執行不同種類的運算。例如,在一繪圖應用中,第一組GPC 208可分配來執行鑲嵌作業,並產生補片的基元拓樸,而第二組GPC 208可分配來執行鑲嵌遮影,而評估該等基元拓樸的補片參數,並決定頂點位置及其它每個頂點的屬性。GPC 208的分配可根據每種程式或運算所提升的工作負荷而改變。另外,所有GPC 208可被分配來使用時間分段方式執行處理工作以在不同處理工作之間切換。
GPC 208經由一工作分佈單元200接收要被執行的處理工作,其自前端單元212接收定義處理工作的命令。處理工作包括到要被處理之資料的指標,例如表面(補片)資料、基元資料、頂點資料、及/或像素資料,以及定義該資料要被如何處理之狀態參數及命令(例如那一個程式要被執行)。工作分佈單元200可組態成取出對應於該等工作的指標,工作分佈單元200可自前端212接收該等指標,或工作分佈單元200可以直接接收該資料。在本發明一些具體實施例中,索引指定該資料在一陣列中的位置。前端212確保GPC 208在由該命令緩衝器指定的該處理被啟始之前係組態成一有效狀態。
當PPU 202用於繪圖處理時,例如每個補片之處理工作負荷被大致區分成同等大小的工作以進行分佈該鑲嵌處理到多個GPC 208。一工作分佈單元200可組態成以能夠提供工作到多個GPC 208進行處理的頻率來輸出工作。在本發明一些具體實施例中,GPC 208的一些部份被組態成執行不同種類的處理。例如,一第一部份可組態成執行頂點遮影及拓樸產生,一第二部份可組態成執行鑲嵌及幾何遮影,而第三部份可組態成執行螢幕空間中像素遮影來產生一顯像的影像。分配GPC 208之不同部份來執行不同種類的處理之能力可有效率地容納由不同種類的處理所產生之資料的任何擴充及縮減。由GPC 208產生的中間資料可被緩衝化,以在當資料由一下游GPC 208接受的資料之速率落後於由一上游GPC 208產生的資料時允許要在GPC 208間傳送的中間資料具有最小遲滯。
記憶體介面214可被區隔成數目為D
的記憶體隔間單元,其每一者直接地耦合至平行處理記憶體204的一部份,其中。記憶體的每一部份概略由一或多個記憶體裝置(例如DRAM 220)所構成。本技藝專業人士將可瞭解到DRAM 220可由其它適當儲存裝置取代,並可為一般的習用設計。因此可省略詳細說明。顯像目標,例如圖框緩衝器或圖紋地圖,其可在DRAM 220之間儲存,其允許隔間單元215平行地寫入每個顯像目標之多個部份而有效率地使用平行處理記憶體204之可使用頻寬。
GPC 208之任何一者可處理要被寫入到平行處理記憶體204內隔間單元215之任一者的資料。交叉單元210組態成導引每個GPC 208之輸出到任何隔間單元214的輸入或到另一個GPC 208做進一步處理。GPC 208經由交叉單元210與記憶體介面214進行通訊以自多個外部記憶體裝置讀取或寫入其中。在一具體實施例中,交叉單元210具有到記憶體介面214的連接來與I/O單元205進行通訊,以及到本地平行處理記憶體204的連接,藉此使得不同GPC 208內該等處理核心能夠與系統記憶體104或並非PPU 202本地之其它記憶體進行通訊。交叉單元210可使用虛擬通道到GPC 208與隔間單元215間個別的流量串流。
再次地,GPC 208可被程式化來執行關於許多種應用之處理工作,其中包括但不限於線性及非線性資料轉換,影片及/或聲音資料的過濾,模型化作業(例如應用物理定律來決定物體的位置、速度及其它屬性),影像顯像作業(例如鑲嵌遮影器、頂點遮影器、幾何遮影器及/或像素遮影器程式)等等。PPU 202可將來自系統記憶體104及/或本地平行處理記憶體204轉移資料到內部(晶片上)記憶體、處理該資料及將結果資料寫回到系統記憶體104及/或本地平行處理記憶體204,其中這些資料可由其它系統組件存取,包括CPU 102或另一個平行處理子系統112。
一PPU 202可具有任何數量的本地平行處理記憶體204,並不包括本地記憶體,並可用任何的組合來使用本地記憶體及系統記憶體。例如,一PPU 202可為在一統一記憶體架構(UMA,“Unified memory architecture”)具體實施例中的一繪圖處理器。在這些具體實施例中,將可提供少數或沒有專屬的繪圖(平行處理)記憶體,且PPU 202將專有地或大致專有地使用系統記憶體。在UMA具體實施例中,一PPU 202可被整合到一橋接器晶片中或處理器晶片中,或提供成具有一高速鏈結(例如PCI-E)之離散晶片,其透過例如一橋接器晶片或其它通訊手段連接PPU 202到系統記憶體。
如上所述,任何數目的PPU 202可以包括在一平行處理子系統112中。例如,多個PPU 202可提供在一單一嵌入卡上,或多個嵌入卡可被連接至通訊路徑113,或一或多個PPU 202可被整合到一橋接器晶片中。在一多PPU系統中PPU 202可彼此相同或彼此不相同。例如,不同的PPU 202可具有不同數目的處理核心、不同數量的本地平行處理記憶體等等。當存在有多個PPU 202時,那些PPU可平行地作業而以高於一單一PPU 202所可能的流量來處理資料。加入有一或多個PPU 202之系統可實作成多種組態及型式因子,其中包括桌上型、膝上型、或掌上型個人電腦、伺服器、工作站、遊戲主機、嵌入式系統及類似者。
第三A圖為根據本發明一具體實施例中第二圖之PPU 202中之一者內一GPC 208的方塊圖。每個GPC 208可組態成平行地執行大量的執行緒,其中術語「執行緒」(thread)代表在一特定組合的輸入資料上執行的一特定程式之事件。在一些具體實施例中,使用單一指令、多重資料(SIMD,“Single-instruction,multiple-data”)指令發行技術來支援大量執行緒之平行執行,而不需要提供多個獨立指令單元。在其它具體實施例中,單一指令多重執行緒(SIMT,“Single-instruction,multiple-thread”)技術係用來支援大量概略同步化執行緒的平行執行,其使用一共用指令單元,組態成發出指令到GPC 208之每一者內一組處理引擎。不像是一SIMD執行方式,其中所有處理引擎基本上執行相同的指令,SIMT執行允許不同的執行緒經由一給定執行緒程式更可立即地遵循相異的執行路徑。本技藝專業人士將可瞭解到一SIMD處理規範代表一SIMT處理規範的一功能子集合。
在繪圖應用中,一GPC 208可組態成包括一用於執行螢幕空間繪圖處理功能的基元引擎,其可包括但不限於基元設定、掃描場化及z精選(z culling)。如第三A圖所示,一設定單元302接收用於處理繪圖基元的指令,並自緩衝器讀取繪圖基元參數。該等緩衝器可儲存在L1快取315、隔間單元215或PP記憶體204中。一掃描場解析器/z精選單元303接收該等繪圖基元參數,並掃描場化交叉於被指定給掃描場解析器/z精選單元303之像素的基元。每個像素僅被指定給掃描場解析器/z精選單元303之一,所以交會於未被指定給掃描場解析器/z精選單元303之像素的部份繪圖基元即被忽略。掃描場解析器/z精選單元303亦執行z精選來移除部份看不到的繪圖基元。一Z preROP單元304執行位址位移來存取z資料,並基於多種z處理模式維護z資料的順序。
GPC 208的作業較佳地是經由一管線管理員305控制,其分散自工作分佈單元200接收的處理工作(經由設定單元302、掃描場解析器/z精選單元303、及z preROP單元304)到串流化多處理器單元(SMU,“Streaming multiprocessor unit”)310。管線管理員305亦可組態成藉由指定被處理資料由SMU 310輸出的目的地來控制一工作分佈交叉330。
在一具體實施例中,每個GPC 208包括M個數目的SMU 310,其中,每個SMU 310組態成處理一或多個執行緒群組。同時,每個SMU 310較佳地是包括可被管線化的相同組合的功能單元(例如算術邏輯單元等),允許在一先前指令已經完成之前發出一新指令,其為本技藝中已知。其可提供任何組合的功能單元。在一具體實施例中,該等功能單元支援多種運算,其中包括整數及浮點數算術(例如加法及乘法),比較運算,布林運算(AND,OR,XOR)、位元偏位,及多種代數函數的運算(例如平面內插、三角函數、指數及對數函數等);及相同的功能單元硬體可被利用來執行不同的運算。
傳送到一特定GPC 208之該等系列的指令構成一執行緒,如先前此處所定義,橫跨一SMU 310內該等平行處理引擎(未示出)同步執行某個數目之執行緒的集合在此稱之為「執行緒群組」(thread group)。如此處所使用者,一「執行緒群組」代表同步地對於不同輸入資料執行相同程式的一執行緒群組,該群組的每一執行緒被指定給一SMU 310內的不同處理引擎。一執行緒群組可包括比SMU 310內處理引擎的數目要少的執行緒,其中當該執行緒群組正在被處理的循環期間一些處理引擎將為閒置。一執行緒群組亦可包括比SMU 310內處理引擎之數目要更多的執行緒,其中處理將發生在多個時脈循環之上。因為每個SMU 310同步可支援最多的G個執行緒群組,因此在任何給定時間在GPC 208中最高可執行G x M個執行緒群組。
此外,在相同時間在一SMU 310內可以啟動複數相關的執行緒群組(在不同的執行階段)。此執行緒群組的集合在此處稱之為「協同執行緒陣列」(CTA,“Cooperative thread array”)。一特定CTA之大小等於m*k,其中k為在一執行緒群組中同步執行的執行緒,其基本上為SMU 310內平行處理引擎數目之整數倍數,而m為在SMU 310內同時啟動的執行緒群組之數目。一CTA的大小概略由程式師及CTA可使用之硬體資源的量所決定,例如記憶體或暫存器。
一專屬本地位址空間可用於每個執行緒,且使用一共享的每個CTA位址空間來在一CTA內執行緒之間傳送資料。儲存在每個執行緒之本地位址空間與每個CTA之位址空間的資料係儲存在L1快取320中,並可使用收回政策來有利於保持該資料在L1快取320中。每個SMU 310使用用於執行載入及儲存作業之相對應L1快取320中的空間。每個SMU 310亦可存取到隔間單元215內的L2快取,其由所有GPC 208所共享,並可用於在執行緒間傳送資料。最後,SMU 310亦可存取到晶片外的「通用」記憶體,其可包括例如平行處理記憶體204及/或系統記憶體104。L2快取可用於儲存要寫入到通用記憶體或自其讀取的資料。其要瞭解到在PPU 202之外的任何記憶體可做為通用記憶體。
在繪圖應用中,一GPC 208可組態成使得每個SMU 310耦合於一圖紋單元315,用於執行圖紋映射作業,例如決定圖紋樣本位置,讀取圖紋資料及過濾圖紋資料。圖紋資料係經由記憶體介面214讀取,並視需要可自一L2快取、平行處理記憶體204或系統記憶體104取出。圖紋單元315可組態成儲存該圖紋資料在一內部快取中。在一些具體實施例中,圖紋單元315耦合於L1快取320,而圖紋資料儲存在L1快取320中。每個SMU 310輸出處理的工作到工作分佈交叉330,藉以提供該處理的工作到另一個GPC 208做進一步處理,或經由交叉單元210儲存該處理的工作在一L2快取、平行處理記憶體204或系統記憶體中。一preROP(預先掃描場作業)325組態成自SMU 310接收資料,導引資料到隔間單元215內的ROP單元,並進行色彩混合作業,組織像素色彩資料,並執行位址轉譯。
將可瞭解到此處所示的核心架構僅為例示性,其有可能有多種變化及修正。在一GPC 208內可包括任何數目的處理引擎,例如SMU 310、圖紋單元315或preROP 325。再者,雖僅顯示一個GPC 208,一PPU 202可以包括任何數目的GPC 208,其較佳地是在功能上類似於另一個,所以執行行為並不會根據那一個GPC 208接收一特定處理工作而決定。再者,每個GPC 208較佳地是與其它GPC 208獨立地運作,其使用獨立及不同的處理引擎、L1快取320等等。
第三B圖為根據本發明一具體實施例中第二圖之PPU 220中之一者內一隔間單元215的方塊圖。如所示,隔間單元215包括一L2快取350,一圖框緩衝器(FB,“Frame buffer”)355、及一掃描場作業單元(ROP,“Raster operations unit”)360。L2快取350為一讀取/寫入快取,其組態成執行自交叉單元210及ROP 360接收的載入及儲存作業。讀取錯失及緊急寫回請求由L2快取350輸出到FB 355做處理。不良更新亦被送至FB 355做機會性處理。FB 355直接連接於平行處理記憶體204,輸出讀取及寫入請求,並接收自平行處理記憶體204讀取的資料。
在繪圖應用中,ROP 360為一處理單元,其執行掃描場解析器作業,例如模板、Z型測試、混合及類似者,並輸出像素資料做為被處理的繪圖資料來儲存在繪圖記憶體中。在本發明一些具體實施例中,ROP 360包括在每個GPC 208內,而非在每個隔間單元215內,且像素讀取及寫入係在交叉單元210之上傳送,而非在像素片段。
該處理的繪圖資料可以顯示在顯示裝置110上,或被導引而由CPU 102或平行處理子系統112內處理實體之一做進一步處理。每個隔間單元215包括一ROP 360,藉以分散該掃描場解析器作業之處理。在一些具體實施例中,ROP 360可組態成壓縮被寫入到記憶體之z或色彩資料,並解壓縮自記憶體讀取的z或色彩資料。
本技藝專業人士將可瞭解到在第一、二、三A及三B圖中所述之架構並非限制本發明之範圍,而此處所教示的技術可以實作在任何適當組態的處理單元上,其包括但不限於一或多個CPU、一或多個多核心CPU、一或多個PPU 202、一或多個GPC 208、一或多個繪圖或特殊目的處理單元或類似者,其皆不悖離本發明之範圍。
第四圖為根據本發明一具體實施例第二圖之一或多個PPU 202可被組態來實作之一繪圖處理管線400的概念圖。例如,SMU 310之一可組態成執行一頂點處理單元415、一幾何處理單元425及一片段處理單元460中之一或多項之功能。資料組成器410、基元組成器420、掃描場解析器455及掃描場解析器作業單元465之功能亦可由一GPC 208及一相對應隔間單元215內期間處理引擎來執行。另外,繪圖處理管線400可使用一或多種功能之專屬處理單元來實作。
資料組成器410處理單元收集高階表面、基元及類似者之頂點資料,並輸出該頂點資料(包括頂點屬性)到頂點處理單元415。頂點處理單元415為一可程式化執行單元,其組態成執行頂點遮影器程式,依照該頂點遮影器程式所指定的來照亮及轉換頂點資料。例如,頂點處理單元415可被程式化來由一物件式座標表示(物件空間)轉換該頂點資料到另外一種座標系統,例如世界空間或正規化的裝置座標(NDC,“Normalized device coordinates”)空間。頂點處理單元415可讀取由資料組成器410儲存在L1快取320、平行處理記憶體204或系統記憶體104中的資料來用於處理該頂點資料。
基元組成器420自頂點處理單元415接收頂點屬性,視需要讀取儲存的頂點屬性,並構成繪圖基元來由幾何處理單元425做處理。繪圖基元包括三角形、線段、點及類似者。幾何處理單元425為一可程式化執行單元,其組態成執行幾何遮影器程式,依該等幾何遮影器程式所指定轉換自基元組程器420接收的繪圖基元。例如,幾何處理單元425可被程式化來次區分該等繪圖基元成為一或多個新的繪圖基元,並計算參數,例如平面等式係數,其係用於掃描場化該等新的繪圖基元。
在一些具體實施例中,幾何處理單元425亦可加入或刪除該幾何串流中的元件。幾何處理單元425輸出該等參數及頂點來指定新的繪圖基元到一觀察孔比例、精選、及裁切單元450。幾何處理單元425可以讀取儲存在平行處理記憶體204或系統記憶體104中的資料來用於處理該幾何資料。觀察孔比例、精選及裁切單元450執行裁切、精選及觀察孔比例調整,並輸出處理過的繪圖基元到一掃描場解析器455。
掃描場解析器455掃描轉換該等新的繪圖基元,並輸出片段及覆蓋資料到片段處理單元460。此外,掃描場解析器455可組態成執行z精選及其它z方面的最佳化。片段處理單元460為一可程式化執行單元,其組態成執行片段遮影器程式,依該等片段遮影器程式所指定者轉換自掃描場解析器455接收的片段。例如,片段處理單元460可被程式化來執行作業,例如透視修正、圖紋映射、遮影、混合及類似者,以產生要輸出到掃描場解析器作業單元465之遮影的片段。片段處理單元460可讀取儲存在平行處理記憶體204或系統記憶體104中的資料來用於處理該片段資料。片段可根據程式化的取樣速率來在像素、樣本或其它粒度下做遮影。
掃描場解析器作業單元465為一處理單元,其執行掃描場解析器作業,例如模板、Z型測試、混合及類似者,並輸出像素資料做為被處理的繪圖資料來儲存在繪圖記憶體中。該等處理過的繪圖資料可以儲存在繪圖記憶體中,例如平行處理記憶體204,及/或系統記憶體104,用於顯示在顯示裝置110來由CPU 102或平行處理子系統112做進一步處理。在本發明一些具體實施例中,掃描場解析器作業單元465組態成壓縮要被寫入到記憶體的z或色彩資料,並解壓縮自記憶體讀取的z或色彩資料。
為了在一單一通過中執行鑲嵌,SMU 310的第一部份組態成執行鑲嵌控制遮影器程式,而SMU 310的第二部份組態成執行鑲嵌評估遮影器程式。SMU 310的第一部份接收表面補片描述,並輸出繪圖基元,例如由十個控制點定義的立方體三角形基元,及鑲嵌參數,例如細部數值的層級。繪圖基元及鑲嵌參數自一SMU 310經由L1快取320及工作分佈交叉330導引到另一個,而非儲存在PP記憶體204中。因此,一表面補片描述的鑲嵌在一單一無中斷通過GPC 208中完成,而不須要儲存中間資料在L2快取350或PP記憶體204中。此外,一應用程式或裝置驅動器103提供該表面補片描述,而在鑲嵌處理期間不會重新設置GPC 208的部份。
在第一部份中SMU 310的數目可以相等、大於或等於第二部份中SMU 310的數目。重要地是,在第一與第二部份中SMU 310的數目可被修改來符合該處理工作負荷。由一單一表面補片產生的頂點數目隨著運算出的細部鑲嵌層級而改變。因此,在SMU 310之第一部份中一單一SMP 310可以產生在SMU 310之第二部份中多個SMP 310的「工作」,因為一鑲嵌控制遮影器程式之執行會造成資料擴充。
第五A圖為根據本發明一具體實施例用於在一單一通過中執行鑲嵌的方法步驟之流程圖。在步驟510中,裝置驅動器103設置鑲嵌控制遮影器程式執行之第一組SMU 310。一鑲嵌控制遮影器程式可以做一控制點,運算細部參數之鑲嵌層級或類似者為基礎的改變,並對於每個表面補片執行一次。以補片為基礎的改變係發生在當一鑲嵌控制遮影器程式輸入一補片(控制點的組合),並輸出一不同補片(一不同的控制點組合),其中該控制點的數目於該輸入補片與該輸出補片之間變化。在步驟520中,裝置驅動器103設置鑲嵌控制遮影器程式執行之第二組SMU 310。一鑲嵌評估控制遮影器程式可以基於該補片基元控制點、每個頂點的一參數(u,v)位置,位移地圖及類似者來運算一最終位置及每個頂點的屬性,並對於每個輸出頂點執行一次。
在步驟520中,裝置驅動器103設置SMU 310成一第一組及一第二組,並下載該鑲嵌控制遮影器及鑲嵌評估遮影器程式,其由GPC 208執行來處理該表面資料,並產生輸出頂點。在步驟530中,第一組SMU 310中的SMU 310執行該鑲嵌控制遮影器程式來產生繪圖基元,例如繪圖基元的控制點,例如立方體三角形。
在步驟540中,由第一組SMU 310輸出的繪圖基元之頂點被分佈到第二組SMU 310之該等輸入。在步驟545中,在第二組SMU 310中的SMU 310執行該鑲嵌評估遮影器程式來產生輸出頂點。對於不同頂點,步驟530,540及545發生在不同時間。因此,因為該等繪圖基元由第一組中SMU 310輸出,在第二組中SMU 310開始執行該鑲嵌評估程式來產生輸出頂點。因為SMU 310組態成處理一單一通過中該等表面補片,裝置驅動器103不需要重新設置SMU 310在該等鑲嵌作業期間執行不同作業。
第五B圖為根據本發明一具體實施例組態成在一單一通過中執行鑲嵌的GPC 208之方塊圖。第一組550為第一組SMU 310,其組態成執行鑲嵌控制遮影器程式。第二組560為第二組SMU 310,其組態成執行鑲嵌評估遮影器程式。第一組550、工作分佈交叉330及第二組560可組態成執行第五A圖之步驟530,540及545。工作分佈交叉330組態成連接第一組550中每一SMU 310到第二組560中每一SMU 310。
代表可儲存在L1快取320中的表面補片之表面資料555,如第五B圖所示,其由第一組550讀取。管線管理員305可組態成提供表面資料555之位置到第一組550中每一SMU 310以分佈該等表面補片進行處理。代表由第一組550輸出的該等繪圖基元之鑲嵌資料570可儲存在L1快取320中。管線管理員305提供工作分佈交叉330路由資訊,其為分佈繪圖基元頂點到第二組560中SMU 310之該等輸入所需要。在本發明一些具體實施例中,例如第五B圖所示之具體實施例,鑲嵌資料570被導引通過工作分佈交叉330。在本發明其它具體實施例中,對應於每個繪圖基元頂點的位置之索引被導引通過工作分佈交叉330,以分散由第一組550輸出之鑲嵌資料570到第二組560的該等輸入。重要地是,鑲嵌資料570儲存在L1快取320或L2外取350中,而非儲存在PP記憶體204中,其可降低讀取及寫入鑲嵌資料570所需要的時脈循環數目。
因為第一組550中的SMU 310寫入鑲嵌資料570,在第二組560中的SMU 310讀取鑲嵌資料570,所以由鑲嵌資料570消耗的儲存器數量被減少而容納在L1快取320或L2快取350內。相反地,在一習用系統中,當使用兩個不同通過來執行該等程式時,對於一群組的補片由鑲嵌控制遮影器程式產生的所有資料在該管線組態成執行鑲嵌評估遮影器程式並讀取該資料之前係儲存在晶片外記憶體中,例如PP記憶體204。此外,當使用一習用的兩次通過技術時,在一群組中補片的數目基本上較大,以降低在執行該鑲嵌控制遮影器程式與該鑲嵌評估遮影器程式間切換所造成管線重新設置之頻率。由處理該第一通過中較多數目之補片所產生的鑲嵌資料會比鑲嵌資料570需要更多的儲存器,因此係儲存在晶片外記憶體中。
配合第五A圖及第五B圖所述,一表面補片描述之鑲嵌在單一無中斷通過GPC 208中完成,而不需要儲存中間資料在PP記憶體204中。此外,一應用程式或裝置驅動器103提供該表面補片描述,且在該鑲嵌處理期間不需要重新設置GPC 208的許多部份。一應用程式師較佳地是可以將PPU 202視為一單一鑲嵌管線,其在一單一通過中被自動組態成處理表面。
本發明一具體實施例可以實施成由一電腦系統使用的一程式產品。該程式產品的程式定義該等具體實施例的功能(包括此處所述的方法),並可包含在多種電腦可讀取儲存媒體上。例示性的電腦可讀取儲存媒體包括但不限於:(i)不可寫入儲存媒體(例如在一電腦內唯讀記憶體裝置,例如可由CD-ROM讀取的CD-ROM碟片,快閃記憶體,ROM晶片,或任何其它種類的固態非揮發性半導體記憶體),其上可永久儲存資訊;及(ii)可寫入儲存媒體(例如在一磁碟機內的軟碟片或硬碟機或任何種類的固態隨機存取半導體記憶體),其上可儲存可改變的資訊。
本發明已經參照特定具體實施例在以上進行說明。但是本技藝專業人士將可瞭解到在不悖離附屬申請專利範圍所提出之本發明的廣義精神與範圍之下可對其進行多種修正與改變。因此前述的說明及圖面係在以例示性而非限制性的角度來看待。
100...電腦系統
102...中央處理單元
103...裝置驅動器
104...系統記憶體
105...記憶體橋接器
106...通訊路徑
107...輸入/輸出橋接器
108...輸入裝置
110...顯示裝置
112...平行處理子系統
113...通訊路徑
114...系統碟
116...開關
118...網路轉接器
120...嵌入卡
121...嵌入卡
200...工作分佈單元
202...平行處理單元
204...平行處理記憶體
205...輸入/輸出單元
206...主控介面
208...通用處理叢集
210...交叉單元
212...前端
214...記憶體介面
215...隔間單元
220...動態隨機存取記憶體
230...處理叢集陣列
302...設定單元
303...掃描場解析器/Z精選單元
304...Z預先掃描場作業單元
305...管線管理員
310...串流化多處理器單元
315...圖紋單元
320...L1快取
325...預先掃描場作業
330...工作分佈交叉
350...L2快取
355...圖框緩衝器
360...掃描場作業
400...繪圖處理管線
410...資料組成器
415...頂點處理單元
420...基元組成器
425...幾何處理單元
450...觀察孔比例、精選及裁切單元
455...掃描場解析器
460...片段處理單元
465...掃描場作業單元
550...第一組
555...表面資料
560...第二組
570...鑲嵌資料
所以,可以詳細瞭解本發明上述特徵之方式中,本發明的一更為特定的說明簡述如上,其可藉由參照到具體實施例來進行,其中一些例示於所附圖面中。但是其可注意到,所附圖面僅例示本發明的典型具體實施例,因此其並非要做為本發明之範圍的限制,其可允許其它同等有效的具體實施例。
第一圖為例示組態成實施本發明一或多種態樣之電腦系統的方塊圖;
第二圖為根據本發明一具體實施例中第一圖之電腦系統的一平行處理子系統之方塊圖;
第三A圖為根據本發明一具體實施例中第二圖之PPU中之一者內一GPC的方塊圖;
第三B圖為根據本發明一具體實施例中第二圖之PPU中之一者內一隔間單元的方塊圖;
第四圖為根據本發明一具體實施例第二圖之一或多個PPU可被組態來實作之一繪圖處理管線的概念圖;
第五A圖為根據本發明一具體實施例用於在一單一通過中執行鑲嵌的方法步驟之流程圖;及
第五B圖為根據本發明一具體實施例組態成在一單一通過中執行鑲嵌的一GPC之方塊圖。
Claims (10)
- 一種藉一繪圖處理器,在一單一通過中執行鑲嵌的方法,該方法包含:配置該繪圖處理器的一第一組處理單元,來執行一鑲嵌控制遮影器以處理表面補片,並產生包括多個頂點之一繪圖基元;配置該繪圖處理器內一第二組處理單元,來執行一鑲嵌評估遮影器到該等多個頂點之每一者進行處理;及執行該鑲嵌控制遮影器及該鑲嵌評估遮影器,來在一單一通過中,透過該第一組處理單元與該第二組處理單元鑲嵌該等表面補片,以產生處理過的頂點。
- 如申請專利範圍第1項之方法,另包含分散由該第一組處理單元輸出之該等多個頂點到該第二組處理單元之輸入步驟。
- 如申請專利範圍第2項之方法,其中該分散步驟包含導引對應於儲存該等多個頂點之每一者的位置之索引,由該第一組處理單元到該第二組處理單元之輸入。
- 如申請專利範圍第1項之方法,其中該鑲嵌控制遮影器對於該等表面補片之每一者執行一次,以運算該個表面補片之細部參數的層級。
- 如申請專利範圍第1項之方法,其中該鑲嵌評估遮影器對於該等多個頂點之每一者執行一次,以運算該個頂點之最後位置與屬性。
- 如申請專利範圍第1項之方法,其中該等處理單元之每一者獨立於其它處理單元來執行該鑲嵌控制遮影器或該鑲嵌評估遮影器。
- 一種在一單一通過中執行鑲嵌的系統,該系統包含:一繪圖處理器,其中包括:一第一組處理單元,其組態成執行一鑲嵌控制遮影器來處理表面補片,並產生包括多個頂點之一繪圖基元;一第二組處理單元,其組態成執行一鑲嵌評估遮影器到該等多個頂點之每一者進行處理;及一交叉互連,其耦合至該第一組處理單元及該第二組處理單元,並組態成提供由該第一組處理單元輸出的該等多個頂點到該第二組處理單元之輸入。
- 如申請專利範圍第7項之系統,其中該鑲嵌控制遮影器對於該等表面補片之每一者執行一次,以運算該個表面補片之細部參數的層級。
- 如申請專利範圍第7項之系統,其中該鑲嵌評估遮影器對於該等多個頂點之每一者執行一次,以運算該個頂點之最後位置與屬性。
- 如申請專利範圍第7項之系統,其中該等處理單元被組態成執行該鑲嵌控制遮影器及該鑲嵌評估遮影器來在一單一通過中鑲嵌該等表面補片。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/240,382 US20100079454A1 (en) | 2008-09-29 | 2008-09-29 | Single Pass Tessellation |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201019262A TW201019262A (en) | 2010-05-16 |
TWI417806B true TWI417806B (zh) | 2013-12-01 |
Family
ID=41171988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098131568A TWI417806B (zh) | 2008-09-29 | 2009-09-18 | 單一通過鑲嵌 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20100079454A1 (zh) |
JP (1) | JP5303787B2 (zh) |
KR (1) | KR101091374B1 (zh) |
CN (1) | CN101714247B (zh) |
DE (1) | DE102009039231B4 (zh) |
GB (1) | GB2463763B (zh) |
TW (1) | TWI417806B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0818277D0 (en) * | 2008-10-06 | 2008-11-12 | Advanced Risc Mach Ltd | Graphics processing system |
US8131931B1 (en) * | 2008-10-22 | 2012-03-06 | Nvidia Corporation | Configurable cache occupancy policy |
US8868838B1 (en) | 2008-11-21 | 2014-10-21 | Nvidia Corporation | Multi-class data cache policies |
US20100164954A1 (en) * | 2008-12-31 | 2010-07-01 | Sathe Rahul P | Tessellator Whose Tessellation Time Grows Linearly with the Amount of Tessellation |
US9436969B2 (en) * | 2009-10-05 | 2016-09-06 | Nvidia Corporation | Time slice processing of tessellation and geometry shaders |
KR20130141446A (ko) * | 2010-07-19 | 2013-12-26 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 복수의 프로세싱 유닛들에서 온-칩 메모리를 사용하는 데이터 프로세싱 |
US9804995B2 (en) * | 2011-01-14 | 2017-10-31 | Qualcomm Incorporated | Computational resource pipelining in general purpose graphics processing unit |
US9047686B2 (en) | 2011-02-10 | 2015-06-02 | Qualcomm Incorporated | Data storage address assignment for graphics processing |
US9626191B2 (en) | 2011-12-22 | 2017-04-18 | Nvidia Corporation | Shaped register file reads |
US10559123B2 (en) * | 2012-04-04 | 2020-02-11 | Qualcomm Incorporated | Patched shading in graphics processing |
US9710275B2 (en) | 2012-11-05 | 2017-07-18 | Nvidia Corporation | System and method for allocating memory of differing properties to shared data objects |
US9947084B2 (en) | 2013-03-08 | 2018-04-17 | Nvidia Corporation | Multiresolution consistent rasterization |
KR102104057B1 (ko) | 2013-07-09 | 2020-04-23 | 삼성전자 주식회사 | 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들 |
KR102066533B1 (ko) * | 2013-11-19 | 2020-01-16 | 삼성전자 주식회사 | 도메인 쉐이딩 방법과 이를 수행하는 장치들 |
GB2518019B (en) * | 2013-12-13 | 2015-07-22 | Aveva Solutions Ltd | Image rendering of laser scan data |
KR102366808B1 (ko) * | 2014-10-22 | 2022-02-23 | 삼성전자주식회사 | 캐시 메모리 시스템 및 그 동작방법 |
CN104933675B (zh) * | 2015-07-02 | 2017-11-07 | 浙江大学 | 一种周期性可控的复杂镶嵌图案生成方法 |
US10430229B2 (en) * | 2015-12-21 | 2019-10-01 | Intel Corporation | Multiple-patch SIMD dispatch mode for domain shaders |
US20170178384A1 (en) * | 2015-12-21 | 2017-06-22 | Jayashree Venkatesh | Increasing Thread Payload for 3D Pipeline with Wider SIMD Execution Width |
US10068372B2 (en) | 2015-12-30 | 2018-09-04 | Advanced Micro Devices, Inc. | Method and apparatus for performing high throughput tessellation |
US10643381B2 (en) | 2016-01-12 | 2020-05-05 | Qualcomm Incorporated | Systems and methods for rendering multiple levels of detail |
US10643296B2 (en) | 2016-01-12 | 2020-05-05 | Qualcomm Incorporated | Systems and methods for rendering multiple levels of detail |
GB2543866B (en) | 2016-03-07 | 2017-11-01 | Imagination Tech Ltd | Task assembly for SIMD processing |
CN105957150A (zh) * | 2016-05-16 | 2016-09-21 | 浙江大学 | 一种具有连续性和周期性表面图案的三维形体生成方法 |
US20170358132A1 (en) * | 2016-06-12 | 2017-12-14 | Apple Inc. | System And Method For Tessellation In An Improved Graphics Pipeline |
US10310856B2 (en) | 2016-11-09 | 2019-06-04 | Arm Limited | Disabling thread execution when executing instructions in a data processing system |
US10497084B2 (en) * | 2017-04-24 | 2019-12-03 | Intel Corporation | Efficient sharing and compression expansion of data across processing systems |
US10127626B1 (en) * | 2017-07-21 | 2018-11-13 | Arm Limited | Method and apparatus improving the execution of instructions by execution threads in data processing systems |
US11055896B1 (en) * | 2020-02-25 | 2021-07-06 | Parallels International Gmbh | Hardware-assisted emulation of graphics pipeline |
CN113947515A (zh) * | 2020-07-17 | 2022-01-18 | 芯原微电子(上海)股份有限公司 | 细分曲线数据处理实现方法、系统、介质及矢量图形处理装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040213345A1 (en) * | 2002-09-04 | 2004-10-28 | Microsoft Corporation | Multi-resolution video coding and decoding |
US20060197760A1 (en) * | 2005-03-01 | 2006-09-07 | Hideshi Yamada | Drawing processing apparatus, texture processing apparatus, and tessellation method |
US20060245500A1 (en) * | 2004-12-15 | 2006-11-02 | David Yonovitz | Tunable wavelet target extraction preprocessor system |
TW200719277A (en) * | 2005-11-10 | 2007-05-16 | Via Tech Inc | Interruptible graphics processing unit and control method thereof |
TW200820032A (en) * | 2006-10-27 | 2008-05-01 | Hon Hai Prec Ind Co Ltd | System and method for automatically replacing graphs |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5982375A (en) * | 1997-06-20 | 1999-11-09 | Sun Microsystems, Inc. | Floating point processor for a three-dimensional graphics accelerator which includes single-pass stereo capability |
JP2000011190A (ja) * | 1998-06-25 | 2000-01-14 | Sony Corp | 画像処理装置 |
US6707457B1 (en) * | 1999-09-30 | 2004-03-16 | Conexant Systems, Inc. | Microprocessor extensions for two-dimensional graphics processing |
US6954204B2 (en) * | 2002-07-18 | 2005-10-11 | Nvidia Corporation | Programmable graphics system and method using flexible, high-precision data formats |
US7034826B1 (en) * | 2003-02-28 | 2006-04-25 | Microsoft Corporation | Spiral construction of a geodesic dome |
US7109987B2 (en) * | 2004-03-02 | 2006-09-19 | Ati Technologies Inc. | Method and apparatus for dual pass adaptive tessellation |
US6972769B1 (en) * | 2004-09-02 | 2005-12-06 | Nvidia Corporation | Vertex texture cache returning hits out of order |
US7425952B2 (en) * | 2004-11-23 | 2008-09-16 | Metavr, Inc. | Three-dimensional visualization architecture |
CN1952979B (zh) * | 2005-10-14 | 2012-06-27 | 威盛电子股份有限公司 | 多重图形处理器系统及方法 |
US7634637B1 (en) * | 2005-12-16 | 2009-12-15 | Nvidia Corporation | Execution of parallel groups of threads with per-instruction serialization |
US7568063B2 (en) * | 2006-02-02 | 2009-07-28 | Hewlett-Packard Development Company, L.P. | System and method for a distributed crossbar network using a plurality of crossbars |
US8643644B2 (en) * | 2008-03-20 | 2014-02-04 | Qualcomm Incorporated | Multi-stage tessellation for graphics rendering |
US8120608B2 (en) * | 2008-04-04 | 2012-02-21 | Via Technologies, Inc. | Constant buffering for a computational core of a programmable graphics processing unit |
-
2008
- 2008-09-29 US US12/240,382 patent/US20100079454A1/en not_active Abandoned
-
2009
- 2009-08-27 GB GB0914951A patent/GB2463763B/en active Active
- 2009-08-28 DE DE102009039231.9A patent/DE102009039231B4/de active Active
- 2009-09-01 JP JP2009201950A patent/JP5303787B2/ja active Active
- 2009-09-18 TW TW098131568A patent/TWI417806B/zh active
- 2009-09-21 KR KR1020090089198A patent/KR101091374B1/ko active IP Right Grant
- 2009-09-29 CN CN2009101774583A patent/CN101714247B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040213345A1 (en) * | 2002-09-04 | 2004-10-28 | Microsoft Corporation | Multi-resolution video coding and decoding |
US20060245500A1 (en) * | 2004-12-15 | 2006-11-02 | David Yonovitz | Tunable wavelet target extraction preprocessor system |
US20060197760A1 (en) * | 2005-03-01 | 2006-09-07 | Hideshi Yamada | Drawing processing apparatus, texture processing apparatus, and tessellation method |
TW200719277A (en) * | 2005-11-10 | 2007-05-16 | Via Tech Inc | Interruptible graphics processing unit and control method thereof |
TW200820032A (en) * | 2006-10-27 | 2008-05-01 | Hon Hai Prec Ind Co Ltd | System and method for automatically replacing graphs |
Also Published As
Publication number | Publication date |
---|---|
GB2463763A (en) | 2010-03-31 |
CN101714247A (zh) | 2010-05-26 |
KR101091374B1 (ko) | 2011-12-07 |
CN101714247B (zh) | 2012-06-20 |
US20100079454A1 (en) | 2010-04-01 |
JP5303787B2 (ja) | 2013-10-02 |
TW201019262A (en) | 2010-05-16 |
JP2010086528A (ja) | 2010-04-15 |
GB2463763B (en) | 2011-03-02 |
GB0914951D0 (en) | 2009-09-30 |
DE102009039231B4 (de) | 2020-06-25 |
DE102009039231A1 (de) | 2010-04-29 |
KR20100036183A (ko) | 2010-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI417806B (zh) | 單一通過鑲嵌 | |
US8917271B2 (en) | Redistribution of generated geometric primitives | |
US9024946B2 (en) | Tessellation shader inter-thread coordination | |
JP5127815B2 (ja) | Cpuトラフィックを特殊とマークすることによるデッドロックの回避 | |
TWI645371B (zh) | 在上游著色器內設定下游著色狀態 | |
US9922457B2 (en) | Computing tessellation coordinates using dedicated hardware | |
US8120607B1 (en) | Boundary transition region stitching for tessellation | |
US8542247B1 (en) | Cull before vertex attribute fetch and vertex lighting | |
US9953455B2 (en) | Handling post-Z coverage data in raster operations | |
US8698802B2 (en) | Hermite gregory patch for watertight tessellation | |
US20110087864A1 (en) | Providing pipeline state through constant buffers | |
US20110072245A1 (en) | Hardware for parallel command list generation | |
TWI425440B (zh) | 複合多重樣本/超樣本抗頻疊 | |
TW201432609A (zh) | 已分配的拼貼快取 | |
US9436969B2 (en) | Time slice processing of tessellation and geometry shaders | |
US8605085B1 (en) | System and method for perspective corrected tessellation using parameter space warping | |
US8558833B1 (en) | System and method for symmetric parameterization of independently tessellated patches | |
US9633458B2 (en) | Method and system for reducing a polygon bounding box | |
US8564616B1 (en) | Cull before vertex attribute fetch and vertex lighting | |
US8310482B1 (en) | Distributed calculation of plane equations | |
US9013498B1 (en) | Determining a working set of texture maps | |
US11232622B2 (en) | Data flow in a distributed graphics processing unit architecture | |
US9401004B2 (en) | State shadowing to support a multi-threaded driver environment | |
US8947444B1 (en) | Distributed vertex attribute fetch | |
US8489839B1 (en) | Increasing memory capacity of a frame buffer via a memory splitter chip |