TWI537870B - 多重解析度一致性光柵化 - Google Patents
多重解析度一致性光柵化 Download PDFInfo
- Publication number
- TWI537870B TWI537870B TW102147971A TW102147971A TWI537870B TW I537870 B TWI537870 B TW I537870B TW 102147971 A TW102147971 A TW 102147971A TW 102147971 A TW102147971 A TW 102147971A TW I537870 B TWI537870 B TW I537870B
- Authority
- TW
- Taiwan
- Prior art keywords
- pixel
- pixels
- resolution
- memory
- data
- Prior art date
Links
- 238000012545 processing Methods 0.000 claims description 279
- 238000000034 method Methods 0.000 claims description 31
- 238000003860 storage Methods 0.000 claims description 24
- 238000013500 data storage Methods 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 description 30
- 239000000872 buffer Substances 0.000 description 25
- 238000004891 communication Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 11
- 239000000463 material Substances 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 239000012634 fragment Substances 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000000638 solvent extraction Methods 0.000 description 6
- 238000011144 upstream manufacturing Methods 0.000 description 6
- 238000004040 coloring Methods 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 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
- 230000003287 optical effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000001727 in vivo Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011273 social behavior Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/80—Geometric correction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Geometry (AREA)
Description
本發明通常關於三維(3D)圖形處理,更具體地,關於多重解析度一致性光柵化。
一圖形處理管線將通常有關三維物件的輸入圖形資料,轉換成有關二維表面的像素資料,在傳統實施當中,圖形處理管線的世界空間部分負責在該輸入的圖形資料轉換成像素資料之前,處理該資料,這些資料通常由三角形與相關頂點的集合所構成。該圖形處理管線的螢幕空間部分負責處理該已轉換的像素資料,並且產生最終像素值用於顯示。
該圖形處理管線內該等階段之一者為該光柵化階段,其通常牽涉到將由該管線的世界空間部分處理之該圖形資料轉換成像素資料。光柵化可牽涉產生邊緣方程,描述三角形的邊緣在該管線的世界空間部分內處理、決定這些三角形的覆蓋率資訊,並且計算該等三角形所覆蓋的該等像素與片段之屬性值。牽涉光柵化的該等計算一般為固定點計算,一般以固定分數像素精度來執行。如此,固定點光柵化計算結果可認為網格「貼齊」,其中該網格的方塊對應分數像素大小的方塊。
在許多實施當中,一圖形處理管線會以不同解析度將相同的三維物件光柵化,例如,三角形可先用低解析度光柵化,做出有關該三角形的特定決定,例如該三角形覆蓋表面的哪些一般部分。接著該三角形可用較高解析度光柵化,以產生用於顯示的影像資料。不過,以較低解析度進行光柵化通常提供「貼齊」比以較高解析度進行光柵化還要粗網格的結果。因此,較低解析度光柵化產生的覆蓋結果未正確對齊較高解析度光柵化的覆蓋結果。例如,若根據低解析度光柵化的結果來分配記憶體,則由於低解析度光柵化的結果貼齊成一較粗網格,造成記憶體分配過多或分配
不足。尤其是,記憶體可能分配給不需要分配的區塊,或記憶體無法分配給實際需要分配的區塊。
針對前面所例示,業界內需要一種更有效的方式以不同解析度將圖形資料光柵化。
本發明之一具體實施例揭示一種用於將一物件光柵化之方法,該方法包括決定符合一通用網格的通用解析度。該方法更包括根據該通用解析度及代表與該物件相關聯的幾何資料之資料,以計算通用邊緣方程。該方法更包括根據該通用邊緣方程及一第一解析度,以決定包括複數個已覆蓋大像素的大像素覆蓋率資料。
其他具體實施例包括但不受限於:一電腦可讀取媒體,其包括可讓一處理單元實施所揭示方法之一或多個態樣的指令。本發明的其他具體實施例包括但不受限於一子系統,其包括:一處理單元,構成實施該等揭示方法的一或多個態樣;及一計算裝置,構成實施該等揭示方法的一或多個態樣。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動程式
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧使用者輸入裝置
110‧‧‧顯示裝置
112‧‧‧平行處理子系統
113‧‧‧第二通訊路徑
114‧‧‧系統磁碟
116‧‧‧開關
118‧‧‧網路配接器
120-121‧‧‧外接卡
202‧‧‧平行處理單元
204‧‧‧平行處理記憶體
205‧‧‧輸入/輸出橋接器
206‧‧‧主介面
207‧‧‧任務/工作單元
208‧‧‧一般處理叢集
210‧‧‧記憶體交換開關單元
212‧‧‧前端
214‧‧‧記憶體介面
215‧‧‧劃分單元
220‧‧‧動態隨機存取記憶體
230‧‧‧處理叢集陣列
302‧‧‧執行單元
303‧‧‧載入儲存單元
304‧‧‧區域暫存檔
305‧‧‧管線管理員
306‧‧‧共用記憶體
310‧‧‧串流多重處理器
312‧‧‧線程束排程器與指令單元
320‧‧‧L1快取單元
328‧‧‧記憶體管理單元
335‧‧‧第1.5層快取單元
350‧‧‧L2快取單元
352‧‧‧統一位址映射單元
355‧‧‧訊框緩衝區動態隨機存取記憶體介面
360‧‧‧光柵操作單元
370‧‧‧指令L1快取單元
375‧‧‧同型L1快取單元
380‧‧‧記憶體與快取互連
400‧‧‧圖形處理管線
410‧‧‧圖元分配器與頂點屬性擷取
415‧‧‧頂點處理單元
420‧‧‧曲面細分初始化處理單元
425‧‧‧任務產生單元
430‧‧‧任務分配器
435‧‧‧拓撲產生單元
440‧‧‧曲面細分處理單元
445‧‧‧幾何處理單元
450‧‧‧視埠縮放、消隱與裁切單元
455‧‧‧光柵器
460‧‧‧片段處理單元
465‧‧‧光柵操作單元
500‧‧‧低解析度區域
502‧‧‧像素
503‧‧‧子像素
504‧‧‧未貼齊圖元
506‧‧‧已貼齊圖元
508‧‧‧未貼齊頂點
510‧‧‧已貼齊頂點
525‧‧‧佇列
600‧‧‧高解析度區域
602‧‧‧像素
603‧‧‧子像素
604‧‧‧未貼齊圖元
606‧‧‧已貼齊圖元
608‧‧‧未貼齊頂點
610‧‧‧已貼齊頂點
700‧‧‧方法
如此上面簡單彙總可詳細了解本發明上述特色的方式,本發明的更特定說明則參照具體實施例,某些具體實施例說明於附圖。不過吾人應該注意,附圖只說明本發明的典型具體實施例,因此並不對本發明範疇產生限制,本發明承認其他等效具體實施例。
第一圖為例示構成實施本發明之一或多個態樣之電腦系統的方塊圖;第二圖為根據本發明之一具體實施例之用於第一圖中該電腦系統之一平行處理子系統的方塊圖;第三A圖為根據本發明之一具體實施例之第二圖中平行處理單元之一者內的一劃分單元的方塊圖;第三B圖為根據本發明之一具體實施例之第二圖中一般處理叢集(GPC,General Processing Cluster)內的一串流多重處理器(SM,Streaming Multiprocessor)之一部分的方塊圖;
第四圖為根據本發明之一具體實施例之可構成實施第二圖中一或多個一般處理叢集(GPC,General Processing Cluster)之一圖形處理管線的概念圖;第五圖例示根據本發明之一具體實施例之在低解析度區域內一未貼齊圖元及一貼齊圖元的範例;第六A圖例示根據本發明之一具體實施例之在高解析度區域內的一未貼齊圖元及一貼齊圖元的範例;第六B圖例示根據本發明之一具體實施例之透過多重解析度一致性光柵化進行光柵化的一圖元之大像素覆蓋範例;第六C圖例示根據本發明的一具體實施例之透過多重解析度一致性光柵化進行光柵化的一圖元之小型像素覆蓋範例;及第七圖為根據本發明之一具體實施例之用於執行多重解析度一致性光柵化之方法步驟的流程圖。
在以下描述中,揭示許多特定細節以對本發明有更徹底之理解。但是,精通技術人士應瞭解,在沒有一或多個該等特定細節之下還是可實施本發明。
第一圖為例示構成實施本發明之一或多個態樣之電腦系統100的方塊圖。電腦系統100包括一中央處理單元(CPU,Central Processing Unit)102,及通過一互連路徑通訊的一系統記憶體104,其中該路徑可包括一記憶體橋接器105。例如可為北橋晶片的記憶體橋接器105透過匯流排或其他通訊路徑106(例如超傳輸連結),連接一I/O(輸入/輸出)橋接器107。例如可為南僑晶片的輸入/輸出橋接器107接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並透過通訊路徑106和記憶體橋接器105將該輸入轉送至中央處理單元102。一平行處理子系統112透過匯流排或第二通訊路徑113(例如週邊組件互連(PCI)Express、加速圖形連接埠(Accelerated Graphics Port)或HyperTransport連結)連接記憶體橋接器105;在一具體實施例中,平行處理子系統112為傳遞像素給顯示裝置110(任何
傳統陰極射線管、液晶監視器、發光二極體顯示器等等)的圖形子系統。系統磁碟114也連接I/O橋接器107,並且可構成儲存內容與應用程式以及資料,供中央處理單元102及平行處理子系統112使用。系統磁碟114提供非揮發性儲存裝置給應用程式與資料,並且可包括固定式或可移除式硬碟機、快閃記憶體裝置及CD-ROM(小型光碟唯讀記憶體)、DVD-ROM(數位多用途光碟-ROM)、藍光、HD-DVD(高傳真DVD)或其他磁性、光學或固態儲存裝置。
一開關116提供I/O橋接器107與其他組件,像是網路配接器118及許多外接卡120和121之間的連接。其他組件(未明確顯示),包括萬用序列匯流排(USB,Universal Serial Bus)或其他連接埠連接、小型光碟(CD)光碟機、數位多用途光碟(DVD)光碟機、檔案記錄裝置等等,也可連接輸入/輸出橋接器107。第一圖顯示的許多通訊路徑,包括特別指名的通訊路徑106和113,可使用任何合適的協定來實施,例如PCI Express、AGP(加速圖形連接埠)、HyperTransport或任何其他匯流排或點對點通訊協定,及不同組件之間的連接可使用業界內已知的不同協定。
在一具體實施例中,平行處理子系統112併入將圖形與視訊處理最佳化的電路,包括例如視訊輸出電路,並且構成一圖形處理單元(GPU,Graphics Processing Unit)。在另一具體實施例中,平行處理子系統112併入將一般用途處理最佳化的電路,同時保留底層計算架構,本說明書內有更詳細描述。尚且在另一具體實施例中,平行處理子系統112可在單一子系統內合併一或多個其他系統元件,例如結合記憶體橋接器105、中央處理單元102和輸入/輸出橋接器107以形成一晶片上系統(SoC,system on chip)。
應瞭解,本說明書中顯示的該系統為例示,所以可進行改變與修改。包括橋接器的數量與配置、中央處理單元102的數量及平行處理子系統112的數量這類連接拓撲可依照需求修改。例如在某些具體實施例中,系統記憶體104直接連接中央處理單元102,而不是透過橋接器,並且其他裝置透過記憶體橋接器105及中央處理單元102與系統記憶體104通訊。在其他替代拓撲中,平行處理子系統112連接輸入/輸出橋接器107或
直接連接中央處理單元102,而不是連接記憶體橋接器105。在仍舊其他具體實施例中,輸入/輸出橋接器107和記憶體橋接器105可整合成為單一晶片,替代現有的一或多個分散裝置。大組件可包括兩或多個中央處理單元102及兩或多個平行處理子系統112。本說明書中顯示的該等特定組件為選擇性;例如可支援任何數量的外接卡或週邊裝置。在某些具體實施例中,省略開關116,並且網路配接器118和外接卡120、121直接連接I/O橋接器107。
第二圖例示根據本發明之一具體實施例的平行處理子系統112。如所示,平行處理子系統112包括一或多個平行處理單元(PPU,Parallel Processing Unit)202,每一者耦接至區域平行處理(PP,Parallel Processing)記憶體204。一般來說,平行處理子系統包括數量為U的PPU,其中U1。(本說明書中多個類似物件的實例用參考號碼標示出該物件,並且括號標示所需的實例。)平行處理單元202及平行處理記憶體204可使用一或多個積體電路裝置來實施,例如可程式處理器、特殊應用積體電路(ASIC,Application Specific Integrated Circuit)或記憶體裝置,或以任何其他技術可行方式。
請即重新參考第一圖以及第二圖所示,在一具體實施例中,平行處理子系統112內的某些或全部平行處理單元202為具有著色管線的圖形處理器,其可構成執行許多操作,這些操作有關透過記憶體橋接器105和第二通訊路徑113,從中央處理單元102及/或系統記憶體104供應的圖形資料產生像素資料、與區域平行處理記憶體204(可用來當成圖形記憶體,包括例如傳統訊框緩衝區)互動來儲存與更新像素資料、傳遞像素資料給顯示裝置110等等。在某些具體實施例中,平行處理子系統112可包括操作當成圖形處理器的一或多個PPU 202,及用於一般用途計算的一或多個其他PPU 202。該等平行處理單元可相同或不同,並且每一平行處理單元可擁有一專屬的平行處理記憶體裝置或無專屬的平行處理記憶體裝置。平行處理子系統112內的一或多個平行處理單元202可輸出資料至顯示裝置110,或平行處理子系統112內的每一平行處理單元202可輸出資料至一或多個顯示裝置110。
在操作上,中央處理單元102為電腦系統100的主要處理器,控制與協調其他系統組件的操作。尤其是,中央處理單元102發出指令控制平行處理單元202的操作。在某些具體實施例中,中央處理單元102將每一平行處理單元202的指令串流寫入一資料結構(第一圖或第二圖未明確顯示),其可位於系統記憶體104內、平行處理記憶體204或可存取中央處理單元102和平行處理單元202的其他儲存位置內。每一資料結構的指標已經寫入一推送緩衝區,以開始在該資料結構內處理該指令串流。平行處理單元202讀取來自一或多個推送緩衝區的指令串流,然後非同步執行關於中央處理單元102的操作的指令。利用應用程式透過裝置驅動程式103來控制不同推送緩衝區的排程,指定每一推送緩衝區的執行優先順序。
請即重新參考第二圖以及第一圖,每一平行處理單元202包括一I/O(輸入/輸出)單元205,其透過連接記憶體橋接器105(或在替代具體實施例中,直接至中央處理單元102)的通訊路徑113,與電腦系統100的其餘組件通訊。平行處理單元202與電腦系統100其餘組件的連接也可改變。在某些具體實施例中,平行處理子系統112實施成為可插入電腦系統100內擴充槽的外接卡。在其他具體實施例中,平行處理單元202可與例如記憶體橋接器105或輸入/輸出橋接器107這類匯流排橋接器整合在單一晶片上。在仍舊其他具體實施例中,平行處理單元202的某些或全部元件可與中央處理單元102整合在單一晶片上。
在一具體實施例中,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。在一具體實施例中,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。一輸入/輸出單元205產生在通訊路徑113上傳輸的封包(或其他信號),也從通訊路徑113上接收所有傳入封包(或其他信號),將該等傳入封包導引至平行處理單元202的適當組件。例如,有關處理任務的指令可導引至主介面206,而有關記憶體操作的指令(例如讀取或寫入平行處理記憶體204)可導引至記憶體交換開關單元210。主介面206讀取每一推送緩衝區,並將該推送緩衝區內儲存的該指令串流輸出至一前端212。
每一平行處理單元202有利地實施一高度平行處理架構。如細節內所示,平行處理單元202(0)包括一處理叢集陣列230,其包括數量為C的一般處理叢集(GPC,General Processing Cluster)208,其中C1。每個一般處理叢集208可同時執行大量的(例如數百或數千)執行緒,其中每一執行緒是一程式的實例。在許多應用當中,不同的一般處理叢集208可分配用於處理不同種類的程式,或用於執行不同種類的計算。一般處理叢集208的分配絕大部分取決加諸於每一種程式或計算的工作負荷。
一般處理叢集208從任務/工作單元207內的工作分配單元當中接收要執行的處理任務,該工作分配單元接收指標來處理任務,其編碼為任務中繼資料(TMD,Task Metadata)並儲存在記憶體內。該指標至任務中繼資料包括在指令串流內,其儲存當成一推送緩衝區並由前端單元212從主介面206接收。可編碼為任務中繼資料的處理任務包括要處理的資料索引,及定義如何處理該資料的狀態參數與指令(例如要執行哪個程式)。任務/工作單元207從前端212接收任務,並且確保在每一任務中繼資料指定的處理開始之前已經將一般處理叢集208構成有效狀態。一優先順序可指定給每一任務中繼資料,用來排定該處理任務的執行時間。處理任務也可從處理叢集陣列230接收。或者,該任務中繼資料可包括一參數,其控制該任務中繼資料加入處理任務清單(或處理任務指標清單)的頭部或尾部,藉此提供優先順序的另一控制等級。
記憶體介面214包括數量為D的劃分單元215,這些單元每一直接連接一部分平行處理記憶體204,其中D1。如所示,劃分單元215的數量一般等於動態隨機存取記憶體(DRAM,Dynamic Random Access Memory)220的數量。在其他具體實施例中,劃分單元215的數量可不等於記憶體裝置的數量。精通技術人士應瞭解,動態隨機存取記憶體220可用其他合適的裝置取代,並且可為一般傳統設計,因此省略其詳細說明。像是訊框緩衝區或貼圖地圖這類著色目標可通過動態隨機存取記憶體220儲存,允許劃分單元215平行寫入每一著色目標的部分,以有效使用平行處理記憶體204的可用頻寬。
一般處理叢集208之任一者可處理寫入平行處理記憶體204
內任一動態隨機存取記憶體220的資料。交換開關單元210構成將每一一般處理叢集208的輸出繞送至任意劃分單元215的輸入或至用於進一步處理的其他一般處理叢集208。一般處理叢集208透過交換開關單元210與記憶體介面214通訊,以讀取或寫入許多外部記憶體裝置。在一具體實施例中,交換開關單元210具有一連接記憶體介面214來與輸入/輸出單元205通訊,及一連接區域平行處理記憶體204,藉此讓不同一般處理叢集208內的處理核心與系統記憶體104或不在平行處理單元202區域上的其他記憶體通訊。在第二圖所示的具體實施例中,交換開關單元210直接連接輸入/輸出單元205。交換開關單元210可使用虛擬通道,以分隔一般處理叢集208與劃分單元215之間的流量串流。
再者,一般處理叢集208可編程執行有關廣泛應用的處理任務,包括但不受限於線性與非線性資料傳輸、視訊及/或音訊資料篩選、模型化運算(例如套用實體規則來決定位置、速度及其他物件屬性)、影像著色運算(例如曲線細分著色、影點著色、幾何著色及/或像素著色程式)等等。PPU 202可從系統記憶體104及/或區域平行處理記憶體204將資料傳輸進入內部(晶片上)記憶體、處理該資料並將結果資料寫回系統記憶體104及/或區域平行處理記憶體204,其中這種資料可由其他系統組件存取,包括CPU 102或另一平行處理子系統112。
一平行處理單元202可提供任何數量的區域平行處理記憶體204,包括非區域記憶體,並且可任何情況下使用區域記憶體和系統記憶體。例如,平行處理單元202可為統一記憶體架構(UMA,Unified Memory Architecture)具體實施例內的圖形處理器。在這種具體實施例中,提供一些或無專屬圖形(平行處理)記憶體,並且平行處理單元202完全或幾乎完全使用系統記憶體。在UMA具體實施例中,PPU 202可整合至橋接器晶片或處理器晶片,或提供當成分散式晶片,具有高速連結(例如PCI Express)透過橋接器晶片或其他通訊方式將PPU 202連接系統記憶體。
如上述,任何數量的平行處理單元202可包括在一平行處理子系統112。例如,單一外接卡上可提供多個平行處理單元202,或多個外接卡可連接通訊路徑113,或一或多個平行處理單元202可整合到一橋接器
晶片上。多PPU系統內的PPU 202可彼此相同或不同。例如,不同的平行處理單元202可具有不同數量的處理核心、不同大小的區域平行處理記憶體等等。當存在多個平行處理單元202時,這些平行處理單元可平行操作,以比單一平行處理單元202還要高產量的方式來處理資料。合併一或多個平行處理單元202的系統可在許多設置與外型因素之下實施,包括桌上型、膝上型或手持式個人電腦、伺服器、工作站、遊戲機、嵌人式系統等等。
第三A圖為根據本發明之一具體實施例之第二圖中平行處理單元202之一者內的劃分單元215的方塊圖。如所示,劃分單元215包括一L2快取單元350、一訊框緩衝區(FB,Frame Buffer)隨機存取記憶體介面355、及一光柵操作單元(ROP,Raster Operations Unit)360。L2快取單元350為一讀取/寫入快取單元,構成執行接收自交換開關單元210和光柵操作單元360的載入與儲存操作。讀取遺失與緊急寫回要求由L2快取單元350輸出至訊框緩衝區隨機存取記憶體介面355進行處理。髒更新也傳送至訊框緩衝區355進行隨機處理。訊框緩衝區355直接與隨機存取記憶體220介接、輸出讀取與寫入要求並且接收讀取自隨機存取記憶體220的資料。
在圖形應用當中,光柵操作單元360為一種處理單元,執行光柵操作,例如模板、z測試、混色等等,並且將像素資料當成處理過的圖形資料輸出,以儲存在圖形記憶體內。在本發明的某些具體實施例中,光柵操作單元360包括在每個一般處理叢集208而非劃分單元215內,並且像素讀取與寫入要求透過交換開關單元210傳輸,而非像素片段資料。
該處理圖形資料可顯示在顯示裝置110上,或繞送供中央處理單元102或平行處理子系統112內的該等處理實體之一者進一步處理。每一劃分單元215包括一光柵操作單元360,以分配該等光柵操作的處理。在本發明的某些具體實施例中,光柵操作單元360構成將寫入記憶體的z或顏色資料壓縮,並且將從記憶體讀取的z或顏色資料解壓縮。
第三B圖為根據本發明的一具體實施例之第二圖中一般處理叢集(GPC,General Processing Cluster)208內的一串流多重處理器(SM,Streaming Multiprocessor)310之一部分的方塊圖。每個一般處理叢集208可構成同時執行大量執行緒,其中術語「執行緒」代表在特定輸入資料集上
執行的特定程式之實例。在某些具體實施例中,單一指令、多重資料(Single-Instruction,Multiple-Data,SIMD)指令發行技術用於支援大量執行緒的平行執行,而不用提供多個獨立指令單元。在其他具體實施例中,單一指令、多重執行緒(SIMT,Single-Instruction,Multiple-Thread)技術用於支援使用共用指令單元以平行執行大量通常同步執行緒,該使用共用指令單元構成發出指令至每一GPC 208內的一組處理引擎。不同於一單一指令、多重資料執行引擎,其中所有處理引擎通常執行相同的指令,單一指令、多重執行緒執行允許不同執行緒更迅速遵循分散的執行路徑通過一已知執行緒程式。業界內精通技術人士應瞭解,單一指令、多重資料處理區域代表一單一指令、多重執行緒處理區域的函數子集。
透過將處理任務分配至一或多個串流多重處理器(SM,Streaming Multiprocessor)310的管線管理員(未顯示)可有利地控制一般處理叢集208的操作,其中每一串流多重處理器310構成處理一或多個執行緒群組。每一串流多重處理器310包括一指令L1快取單元370,其構成透過一般處理叢集208內的一L1.5快取單元(未顯示)接收指令與常數。線程束排程器與指令單元312接收來自指令L1快取單元370的指令與常數,並且根據該等指令與常數控制區域暫存檔304及串流多重處理器310功能單元。串流多重處理器310功能單元包括N個執行(執行或處理)單元302以及P個載入儲存單元(LSU,Load-Store Unit)303。該串流多重處理器功能單元可管線化,允許在先前指令完成之前發出新指令,如業界所熟知。本發明可提供任何功能執行單元組合。在一具體實施例中,該等功能單元支援許多種運算,包括整數與浮點演算(例如加法與乘算)、比較運算、布林運算(AND、OR、XOR)、位元位移和許多代數函數的計算(例如平面插值、三角函數以及對數函數等等);並且該相同功能單元可用來執行不同運算。
傳輸至特定一般處理叢集208的此系列指令構成一執行緒,如本說明書先前所定義,並且通過串流多重處理器310內平行處理引擎(未顯示)的特定數量同時執行的執行緒之集合在此稱為「線程束」或「執行緒群組」。如本說明書所使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一執行緒指派給串流多重處
理器310內不同的處理引擎。一執行緒群組可包括數量比串流多重處理器310內處理引擎數量還要少的執行緒,在此案例中,某些處理引擎會在循環期間處理該執行緒群組時閒置。執行緒群組也可包括數量比串流多重處理器310內處理引擎數量還要多的執行緒,在此案例中,將在連續時脈循環上進行處理。因為每一串流多重處理器310可同時支援最多G個執行緒群組,接著在任何已知時間上一般處理叢集208內可執行最多G*M個執行緒群組之系統,其位於包括 M 個串流多重處理器310的一般處理叢集208內。
此外,在串流多重處理器310內可同時啟用複數個相關執行緒群組(在不同執行相位內)。此執行緒群組的集合稱為「協作執行緒陣列」(CAT,Cooperative Thread Array)或「執行緒陣列」。特定協作執行緒陣列的大小等於m*k,其中k為執行緒群組內同時執行的執行緒數量,通常為串流多重處理器310內的平行處理引擎數量的整數倍數,並且m為串流多重處理器310內同時啟用的執行緒群組數量。協作執行緒陣列的大小一般由程式設計師及該協作執行緒陣列可用的硬體資源數量(例如記憶體或暫存器)來決定。
在本發明的具體實施例中,吾人想要使用一計算系統的平行處理單元202或其他處理器,運用執行緒陣列來執行一般用途計算。該執行緒陣列內的每一執行緒可指派一唯獨的執行緒識別碼(「執行緒ID」),其可在該執行緒執行期間存取該執行緒。該執行緒ID可定義為一維度或多維度數值,控制該執行緒處理行為的許多態樣。例如,一執行緒ID可用於決定一執行緒要處理的輸入資料集的部分及/或決定一執行緒要產生或寫入的輸入資料部分。
每個執行緒指令的序列可包括至少一指令,其定義該代表性執行緒與該執行緒陣列的一或多個其他執行緒之間的協作行為。例如,該序列的每個執行緒指令可包括:一中斷指令,將在該順序內特定點上該代表執行緒運算執行,直到一或多個其他執行緒到達該特定點上為止;一儲存指令,用以該代表執行緒將一或多個其他執行緒可存的資料儲存至一共用記憶體內;及一讀取與更新指令,用以該代表執行緒根據其執行緒ID自動讀取與更新一共用記憶體內的一或多個該等其他執行緒已經存取過的資
料等等。該協作執行緒陣列程式也可包括一計算指令,用以計算該共用記憶體內所要讀取資料的位址,其中該位址為執行緒ID的函數。利用定義合適的功能並且提供同步技術,資料可利用CAT的一執行緒寫入共用記憶體內一已知位置,並且以可預測方式用相同協作執行緒陣列的不同執行緒從該位置當中讀取。因此,支援在執行緒之間共用的任何資料圖案,並且一協作執行緒陣列內的任何執行緒可與相同協作執行緒陣列內任何其他執行緒共用資料。在協作執行緒陣列執行緒之間共用的資料內容(若有的話)由該協作執行緒陣列程式決定;如此,應瞭解,在使用協作執行緒陣列的特定應用當中,根據該協作執行緒陣列程式,協作執行緒陣列的執行緒彼此之間不會確實共用資料,並且在本說明書中可同時使用「協作執行緒陣列」與「執行緒陣列」等詞。
串流多重處理器310提供具備不同存取階層的晶片(內部)資料儲存。特殊暫存器(未顯示)可由載入儲存單元303讀取但是無法寫入,並且可用於定義每一直執行緒「位置」的參數。在一具體實施例中,特殊暫存器包括每一執行緒(或串流多重處理器310內的每一執行單元302)的一暫存器,該暫存器儲存一執行緒ID;每一執行緒ID暫存器只能由執行單元302之個別一者存取。特殊暫存器也可包括額外暫存器,可由執行任務中繼資料(TMD)(未顯示)(或由所有載入儲存單元303)所代表相同處理任務的所有執行緒讀取,該等特殊暫存器儲存一協作執行緒陣列識別碼、該協作執行緒陣列維度、該協作執行緒陣列所屬網格的維度(或若任務中繼資料編碼一佇列任務而非一網格任務時的佇列位置)、及指派協作執行緒陣列的任務中繼資料之識別碼。
若任務中繼資料為一網格任務中繼資料,則執行任務中繼資料會導致啟動並執行固定數量的協作執行緒陣列,以處理佇列525內所儲存的固定數量資料。協作執行緒陣列的數量依照網格寬度、高度與深度的乘積來指定。該固定數量的資料可儲存在任務中繼資料內,或任務中繼資料可儲存將由協作執行緒陣列處理的資料之指標。任務中繼資料也儲存該協作執行緒陣列所執行程式的開始位址。
若任務中繼資料為佇列任務中繼資料,然後使用任務中繼資
料的佇列功能,表示要處理的資料量並不需要固定。佇列記錄儲存資料,供指派給任務中繼資料的該等協作執行緒陣列處理。該等佇列記錄也代表執行緒執行期間由另一任務中繼資料產生的子任務,藉此提供巢狀平行。一般來說,執行緒的執行或包括該執行緒的協作執行緒陣列會中止,直到子任務執行完成為止。該佇列可儲存在任務中繼資料內,或與任務中繼資料分開,在此案例中任務中繼資料儲存至該佇列的佇列指標。有利的是,由該子任務產生的資料可寫入該佇列,同時任務中繼資料代表已經執行的該子任務。該佇列可實施為一圓形佇列,如此資料總量並不受限於該佇列的大小。
屬於一網格的協作執行緒陣列具有隱函的網格寬度、高度和深度參數,指示該網格內個別協作執行緒陣列的位置。在初始化期間會寫入特殊暫存器,以回應透過前端212從裝置驅動程式103接收命令,並且在一處理任務期間不會改變。前端212排程執行每一處理任務。每一協作執行緒陣列關聯於一特定任務中繼資料,以同時執行一或多個任務。此外,單一一般處理叢集208可同時執行多個任務。
一參數記憶體(未顯示)儲存可由相同協作執行緒陣列(或任何載入儲存單元303)內任何執行緒讀取但無法寫入的執行時間參數(常數)。在一具體實施例中,裝置驅動程式103在導引串流多重處理器310開始執行使用這些參數的任務之前,提供參數該參數記憶體。任何協作執行緒陣列內的任何執行緒(或串流多重處理器310內的任何執行單元)可透過記憶體介面214存取全域記憶體。全域記憶體的一部分可儲存在L1快取單元320內。
每一執行緒使用區域暫存檔304當成暫存空間;每一暫存器分配給一執行緒專用,並且任何區域暫存檔304內的資料只能由分配給該暫存器的該執行緒存取。區域暫存檔304可實施為實體上或邏輯上區分成P個通路的暫存檔,每一通路具有某些數量的記錄(在此每一記錄可儲存例如32位元字)。一通路指派給該N個執行單元302以及P個載入儲存單元載入儲存單元303之每一者,並且不同通路內的對應記錄可填入執行相同程式的不同執行緒之資料,以幫助單一指令、多重資料執行。通路的不同部分
可分配給該G個同時執行緒群組中不同的執行緒,如此區域暫存檔304內的一已知記錄只能由特定執行緒存取。在一具體實施例中,區域暫存檔304內的特定記錄保留用於儲存執行緒識別碼,實施該等特殊暫存器之一者。此外,一同型L1快取單元375儲存N個執行單元302及P個載入儲存單元載入儲存單元303的每一通路之同型或常數值。
共用記憶體306可由單一協作執行緒陣列內的執行緒存取;換言之,共用記憶體306內任何位置可由相同協作執行緒陣列內任何執行緒(或串流多重處理器310內任何處理引擎)來存取。共用記憶體306可實施為具有互連的一共用暫存檔或共用晶片上記憶體,允許任何處理引擎從該共用記憶體內任何位置讀取或寫入。在其他具體實施例中,共用的狀態空間可映射至晶片外記憶體的每一協作執行緒陣列區域,並且快取在L1快取單元320內。該參數記憶體可實施為該相同共用暫存檔或實施共用記憶體306的共用快取記憶體內的一指定區段,或實施為載入儲存單元303具有唯讀存取的一個別共用暫存檔或晶片上快取記憶體。在一具體實施例中,實施該參數記憶體的區域也用於儲存該協作執行緒陣列ID和任務ID,以及協作執行緒陣列和網格大小或佇列位置,實施該特殊暫存器的位置。串流多重處理器310內的每一載入儲存單元303耦接至統一位址映射單元352,將提供用於載入與儲存統一記憶體空間內所指定指令的一位址轉換成每一分散記憶體空間內的一位址。因此,利用指定該統一記憶體空間內的一位址,可使用一指令來存取任何該區域、共用或全域記憶體空間。
每一串流多重處理器310內的L1快取單元320可用於快取私用每一執行緒區域資料,並且也快取每一應用程式全域資料。在某些具體實施例中,該每一協作執行緒陣列共用資料可快取在L1快取單元320內。LSU 303可透過一記憶體與快取互連380耦接至共用記憶體306以及L1快取單元320。
應瞭解,本說明書中顯示的該核心架構為例示,所以可進行改變與修改。任何數量的處理單元,例如串流多重處理器310可包括在一般處理叢集208內。此外,如第二圖所示,平行處理單元202可包括任意數量功能彼此類似的一般處理叢集208,如此執行行為並不取決於接收特定
處理任務的一般處理叢集208。此外,每個一般處理叢集208得利於與其他一般處理叢集208無關的操作,運用分離並分散的處理單元、L1快取單元,以執行一或多個應用程式的任務。
精通此技術人士應瞭解,第一圖至第三B圖描述的架構並非用於限制本發明範疇,本說明書內的技術可在任何正確設置的處理單元上實施,在不悖離本發明範疇之下包括但不受限於一或多個中央處理單元、一或多個多核心中央處理單元、一或多個平行處理單元202、一或多個一般處理叢集208、一或多個圖形或特殊用途處理單元等等。
第四圖為根據本發明之一具體實施例之可構成第二圖中平行處理單元202之一或多者來實施之一圖形處理管線400的概念圖。例如,一串流多重處理器310可構成執行頂點處理單元415、曲面細分初始化處理單元420、曲面細分處理單元440、幾何處理單元445及片段處理單元460之一者或多者的功能。圖元分配器410、任務產生單元425、任務分配器430、拓撲產生單元435、視埠縮放、消隱與裁切單元450、光柵器455以及光柵操作單元465的功能也可由一般處理叢集208與對應劃分單元215內其他處理引擎所執行。另外,可使用一或多個功能的專屬處理單元,實施圖形處理管線400。
圖形處理管線400也包括在圖形處理管線400之間共用的一區域記憶體。例如,該圖形處理管線應該串流多重處理器310內的使用共用記憶體360,例如一區域記憶體。如以下進一步描述,依照需要,共用記憶體306內的中間階段緩衝區(未顯示)已經由圖形處理管線400內許多處理單元分配與取消分配。一處理單元從一或多個中間階段緩衝區讀取輸入資料、處理該輸入資料以產生輸出資料,並且將該結果輸出資料儲存在一或多個中間緩衝區內。一後續處理單元可讀取此結果輸出資料,當成該後續處理單元的輸入資料。該後續處理單元處理該資料,並且將輸出資料儲存在一或多個中間階段緩衝區內,以此類推。共用記憶體306和該圖形處理管線的許多其他階段透過記憶體介面214,與外部記憶體相連。
圖元分配器410匯集高階表面、圖元等等的頂點資料,並且
將包括該等頂點屬性的該頂點資料輸出至頂點處理單元415。在某些具體實施例中,圖元分配器410包括一頂點屬性擷取單元(未顯示),其取得共用記憶體306內的該等頂點屬性並且將該等頂點屬性儲存至此。頂點處理單元415為一可程式執行單元,其構成執行頂點著色程式,依照該頂點著色程式所規定照明與轉換頂點資料。例如,頂點處理單元415可編程將該頂點資料從一物件型座標代表(物件空間)轉換成一替代型座標系統,例如世界空間或標準化裝置座標(NDC,Normalized Device Coordinates)空間。頂點處理單元415可用圖元分配器410讀取共用記憶體306、L1快取單元320、平行處理記憶體204或系統記憶體104內儲存的資料,用來處理該頂點資料。頂點處理單元415將處理過的頂點儲存在共用記憶體306內的中間階段緩衝區內。
曲面細分初始化處理單元420為一可程式執行單元,其構成執行曲面細分初始化著色程式。曲面細分初始化處理單元420處理頂點處理單元415所產生的頂點,並產生圖形圖元,就是塊面。曲面細分初始化處理單元420也產生許多塊面屬性,然後曲面細分初始化處理單元420將該塊面資料及塊面屬性儲存在共用記憶體360內的該等中間階段緩衝區內。在某些具體實施例中,該曲面細分著色程式可稱為外表著色或曲面細分控制著色。
任務產生單元425從共用記憶體306的該等中間階段緩衝區當中取得頂點的資料與屬性及塊面。任務產生單元產生425用於處理該等頂點與塊面的任務,供圖形處理管線400內稍後階段進行處理。
任務分配器430重新分配任務產生單元425所產生的任務。該頂點著色程式及該曲面細分初始化程式的許多實例所產生之任務可在一圖形處理管線400與另一者之間顯著改變。任務分配器430重新分配這些任務,如此每一圖形處理管線400在稍後管線階段期間具有大約相同的工作負荷。
拓撲產生單元435獲得任務分配器430分配的任務。拓撲產生單元435將該等頂點索引,包括有關塊面的頂點,並且計算對應該等頂點的貼圖座標。然後拓撲產生單元435將索引頂點儲存在共用記憶體306
內的中間階段緩衝區內。
曲面細分處理單元440為一可程式執行單元,其構成執行曲面細分著色程式。曲面細分處理單元440讀取來自共用記憶體的輸入資料,並且將輸出資料寫入共用記憶體306的該等中間階段緩衝區。在該中間階段緩衝區內的此輸出資料會傳遞至下一著色階段,當成幾何處理單元455的輸入資料。在某些具體實施例中,該曲面細分著色程式可稱為領域著色或曲面細分評估著色。
曲面細分處理單元445為一可程式執行單元,其構成執行幾何著色程式,藉此轉換圖形圖元。頂點經過分組,建構用於處理的圖形圖元,其中圖形圖元包括三角形、線段、點等等。例如,幾何處理單元445可編程將該等圖形圖元分成一或多個新圖形圖元,並且計算參數,例如平面等式係數,用來將該等新圖形圖元光柵化。
在某些具體實施例中,幾何處理單元445也可新增或刪除該幾何串流內的元件。幾何處理單元445輸出將新圖形圖元指定至一視埠縮放、消隱及裁切單元450的該等參數與頂點。幾何處理單元445可讀取儲存在共用記憶體306、平行處理記憶體204或系統記憶體104內的資料,用來處理該幾何資料。視埠縮放、消隱與裁切單元450執行裁切、消隱與視埠縮放,並且將處理過的圖形圖元輸出至一光柵器455。
光柵器455掃描轉換新圖形圖元,並且將片段與覆蓋率資料輸出至片段處理單元460,此外,光柵器455可構成執行z消隱及其他z型最佳化。
片段處理單元460為一可程式執行單元,其構成執行片段著色程式,依照該片段著色程式所規定轉換接收自光柵器455的片段。例如,片段處理單元460可編程執行操作,例如透視修正、貼圖映射、著色、混色等等,以產生輸出至光柵操作單元465的已著色片段。片段處理單元460可讀取儲存在共用記憶體306、平行處理記憶體204或系統記憶體104內的資料,用來處理該片段資料。根據該程式編輯的取樣率,片段可依照像素、取樣或其他細密度來著色。
光柵操作單元465為一種處理單元,其執行光柵操作,例如
模板、z測試、混色等等,並且將像素資料當成處理過的圖形資料,以儲存在圖形記憶體內。該處理過的圖形資料可儲存在圖形記憶體內,例如平行處理記憶體204,及/或系統記憶體104,用於顯示在顯示裝置110上或用於由中央處理單元102或平行處理子系統112進一步處理。在本發明的某些具體實施例中,光柵操作單元465構成將寫入記憶體的z或顏色資料壓縮,並且將從記憶體讀取的z或顏色資料解壓縮。在許多具體實施例中,光柵運算單元465可位於記憶體介面214、一般處理叢集208、該一般處理叢集之外的處理叢集陣列230或平行處理單元202內的一別單元(未顯示)內。
請即重新參考第四圖,通常以兩種不同解析度將圖形物件光柵化,例如,要決定「正常」解析度下標準光柵化的記憶體分配,光柵器455可先以「較低」解析度將物件光柵化,以決定記憶體分配,接著以該正常解析度將該物件光柵化。為了以兩種不同解析度將一物件光柵化,在圖形處理管線400的許多單元內,設定有關該兩種不同解析度的兩不同組特定參數,並且將該相同物件光柵化兩次,每組參數一次,如此用於每一解析度。圖形處理管線400內設定有參數的某些單元包括光柵器455,及來自光柵器455上游的單元,包括視埠縮放、消隱與裁切單元450。以下將更詳細描述光柵器455及該等上游單元以兩種不同解析度將一物件光柵化的操作。
視埠縮放、消隱與裁切單元450從視埠縮放、消隱與裁切單元450上游的單元,接收有關一物件的幾何資料。視埠縮放、消隱與裁切單元450在該幾何資料上執行視埠轉換,以在二維螢幕空間內產生該物件頂點的座標。該視埠轉換指定特定解析度,通常符合二維網格或空間。該物件的頂點在該二維空間內之座標具有對應此解析度之值,如此對於解析度320x240來說,物件頂點的水平座標範圍從0至320,並且垂直座標的範圍從0至240。而對於其他解析度而言,座標可具有不同範圍。
因此,利用放大或縮小第一解析度內的座標在第二解析度內產生對應座標,就可將第一解析度內的座標映射至第二解析度內的座標。例如,針對320x240的第一解析度,一組座標10,5可利用乘上係數2放大,
映射至640x480的解析度,如此新座標為20,10。以此方式映射的座標在此稱為在兩不同解析度之間具有相同「邏輯位置」。
該視埠轉換的計算通常包括某些四捨五入,也就是由該視埠轉換得出的座標會應用特定四捨五入量,意思就是產生螢幕空間頂點的計算結果會四捨五入至特定精確度。該視埠轉換也對特定子像素網格「貼齊」該等物件頂點的座標,換言之,已經套用視埠轉換的該物件頂點之該等螢幕空間位置對齊一網格,其中該網格的格子(或「子像素」)的大小等於一像素的特定分數(例如該網格內的所有格子的大小等於像素的1/4或1/64)。該「貼齊」可使一物件的座標對齊這些分數像素大小的子像素,該視埠轉換的結果包括該貼齊和四捨五入的效果,並且通常包括每一物件中每一頂點的螢幕空間座標,與該子像素網格對齊。
光柵器455從視埠縮放、消隱及裁切單元450接收一物件中該等頂點的螢幕空間座標,光柵器455包括一設定單元,以計算用於該物件的邊緣方程。光柵器455從該設定單元取得圖元與邊緣方程,並且評估由該設定單元提供的該邊緣方程,以決定用於該物件的樣本或像素覆蓋。該邊緣方程通常為E(x,y)=Ax+By+C的形式,其中A、B和C為設定單元計算時的係數,x和y為該邊緣方程要評估的像素或樣本之座標,並且E(x,y)代表該邊緣方程針對一組x-y座標的評估結果。因為該等x和y座標取決於該視埠轉換期間指定的解析度,所以該邊緣方程的係數對於不同解析度會是不同光柵化。
在傳統方式中,利用以兩種不同解析度對一物件套用視埠轉換、計算用於該兩種不同解析度的對應邊緣方程,及以兩種不同解析度將該物件光柵化,以在兩種不同解析度下將物件光柵化。該第一視埠轉換產生二維螢幕空間座標給第一解析度上的該物件頂點,並且該第二視埠轉換產生二維螢幕空間座標給第二解析度上的該物件頂點。以兩種不同解析度光柵化的物件之頂點位置,在該兩種不同解析度之間大約在相同「邏輯位置」上,不過如以下所述,在兩不同解析度下光柵化的物件之頂點並不需要佔據確切相同的邏輯位置。
不過,此傳統方式的一缺點在於,對兩不同解析度施加視埠轉換意味著,兩種不同解析度上的頂點位置會由於四捨五入的效果,而不在相同邏輯位置上。該傳統方式的額外缺點在於,因為該固定分數像素大小對兩種不同解析度不同,所以對兩種不同解析度施加視埠轉換導致該物件頂點的座標「貼齊」兩不同網格。此「貼齊」兩種不同解析度意味著,在該第一解析度上的一物件頂點不必然在與該第二解析度的一物件頂點的相同「邏輯」位置上。此不一致會導致對於該第一解析度的光柵化產生在座標位置上不一致的光柵化結果,並且可能造成該等結果應用上的不精準。例如,若根據低解析度光柵化結果分配記憶體,則由於光柵化不一致,造成將記憶體分配給著色目標的不正確部分。
由於上述傳統方式的問題,圖形處理管線400可構成在「多重解析度一致性光柵化模式」內操作。在這種模式下,一指令傳送至圖形處理管線400,使用該多重解析度一致性光柵化模式,使用兩種不同解析度(「低」解析度與「高」解析度)將一物件光柵化。該物件通常由視埠縮放、消隱及裁切單元450上游的單元所處理,但是只有一視埠轉換套用至該物件,並且此視埠轉換產生「通用」解析度上,而非兩種不同解析度上,該物件頂點之螢幕空間座標。在一具體實施例中,該通用解析度為該物件所光柵化的該低與高解析度之最低共用多重解析度。該視埠轉換成該通用解析度的結果為該物件的一組座標,指出該物件的頂點位置在對應該通用解析度的一通用網格上。該通用網格具有通用像素及「子像素網格」,其中該子像素網格內的子像素大小為該通用像素的分數大小部分。
在該多重解析度一致性光柵化模式內,設定計算該通用解析度內該物件的邊緣方程。因為只有一種解析度,所以針對該物件只有計算一組邊緣方程。接著,光柵器455評估該物件的該邊緣方程兩次(「第一次評估」與「第二次評估」),即是兩解析度之每一者有一次。該等兩解析度的評估包括根據不同「有效像素大小」的評估(例如「大像素」與「小像素」),其中每一有效像素大小包括該通用網格內一或多個該等通用像素。在某些具體實施例中,在該等兩解析度上的評估也包括根據不同評估條件來評
估,例如標準光柵化或保守光柵化。
在該第一評估中,對應該低解析度,光柵器455根據第一組評估條件,並且在該第一解析度上,評估該等邊緣方程。在該第一解析度上評估該等邊緣方程,包括評估一組大像素內每一「大像素」的該等邊緣方程。「大像素」就只是通用像素的大集合,換言之,每一大像素包括大量通用像素。在一具體實施例中,該第一組評估條件為保守光柵化。在保守光柵化內,像素或樣本評估涵蓋若物件接觸該像素或樣本的任何部分。如此,針對大像素,保守光柵化評估涵蓋若物件接觸該大像素的任何部分。
在某些具體實施例中,該第一評估的結果儲存在記憶體位置內。該第一評估特定結果的記憶體位址係根據該等大像素的座標,尤其是,每一大像素的記憶體位址對應該通用網格內每一「大像素」的「大像素位置」。每一大像素具有大像素位置,其對應該大像素通用網格內x和y座標內數值最低的位置,例如若大像素垂直橫跨通用像素編號32-63,則該大像素的該大像素位置為32,32。為了決定儲存該第一評估結果的記憶體位址,每一大像素的該大像素位置除以一比例係數,該比例係數為大像素的大小對通用網格的單位大小之比率,「單位大小」為子像素網格內分數子像素的大小(例如若通用網格的子像素為該等通用像素大小的四分之一,則該單位大小等於該等通用像素大小的四分之一)。針對範例,大像素可具有32乘32單位大小的大像素大小,因此該比例係數為32。在此範例中,為了決定儲存該第一評估結果的記憶體位址,每一大像素的該像素位置除以一比例係數,因此,針對水平橫跨子像素編號32-63並且垂直32-63的大像素,賦予該大像素32,32的該大像素位置,該記憶體位址應為32/32,32/32=1,1。
在該第二評估中,對應該高解析度,光柵器455根據第二組評估條件,並且在該第二解析度上,評估該等邊緣方程。在該第二解析度上評估該等邊緣方程,包括針對小型像素集合內每一「小像素」評估該等邊緣方程。「小像素」為一或多個通用像素的簡單集合,其中該小像素具有的通用像素少於該大像素。換言之,每一小像素包括比每一大像素還要少的通用像素數量,例如,大像素可包括32乘32通用像素時,小像素可只
包括4乘4通用像素。在一具體實施例中,該第二組評估條件為標準光柵化。在標準光柵化內,光柵器455評估該等邊緣方程,以決定每一該等小像素的樣本覆蓋,其中每一小像素具有一或多個樣本。
在一具體實施例中,光柵器455只評估落在根據保守光柵化評估覆蓋的該等大像素內,小像素的覆蓋。為了決定該通用網格內落在根據保守光柵化評估覆蓋的該等大像素內小像素之位置,光柵器455將用來儲存每一已覆蓋大像素的覆蓋率資料之該記憶體位址乘上該比例係數,並且加上偏移,其中落在該大像素內的每一小像素之該偏移不同。例如,若大像素的記憶體位址為4,3,則光柵器455將該記憶體位置乘上比例係數,例如8,到達一縮放的記憶體位址等於該通用網格內的一位址,用於小像素32,24的評估。然後光柵器455評估該大像素內的每一小像素。利用將一偏移加上該已縮放記憶體位址可評估一大像素內的每一小像素。
在某些具體實施例中,該比例係數為二的乘方。在某些具體實施例中,小像素大小與通用像素大小之間的比率為2的乘方。二的乘方比率允許使用位元位移運算完成乘算與除法,這通常比用任意大數相乘或相除消耗更少處理功率。
光柵器455將第一評估與第二評估的結果提供給下游單元,供進一步處理。
在某些具體實施例中,光柵器455可只針對一像素大小,「大像素大小」,評估一組評估條件。在這種情況下,沒有必要區分大與小像素,因為只有一種像素大小。不過為了清晰起見,當光柵器455只針對一像素大小評估一組評估條件時,使用「大像素大小」用詞。在這種具體實施例中,光柵器455決定一大像素大小,該大像素大小可為單元大小的任意倍數,並且光柵器455評估一組評估條件,如上述。不對第二像素大小進行額外評估。
在某些具體實施例中,該大像素大小或小像素大小可在水平與垂直方向內包括不同數量的單元大小(即是該大及/或小像素可為「矩形」)。
第五圖例示根據本發明之一具體實施例之在低解析度區域500內的一未貼齊圖元504及一貼齊圖元506的範例。如所示,區域500包括像素502、子像素503、一未貼齊頂點508及一已貼齊圖元506,具有貼齊的頂點510。
區域500為其中一物件在第一解析度下光柵化之區域(相較於第六A圖至第六C圖所示解析度,該第一解析度為「低」解析度,如以下所討論)。區域500內顯示的像素502由實線定義,而子像素503則由虛線定義。從區域500左邊與上方的網格標籤瞭解到,區域500內的像素502具有0,0、0,2、0,4、0,6、2,0、2,2、2,4以此類推的像素位置(最左邊與最上方的座標),而子像素具有0,0、0,1、0,2、0,3、0,4、0,5、0,6、1,0、1,1以此類推的子像素位置。
未貼齊圖元504由頂點508-1、508-2和508-3定義,由光柵器455上游的單元計算。頂點508-1的位置在1.3,1.2,頂點508-2的位置在3.7,5.9並且頂點508-3的位置在6.3,3.7。當施加視埠轉換時,未貼齊圖元504貼齊,以形成已貼齊圖元506。尤其是,未貼齊圖元504的頂點508對齊到該網格的子像素503。
已貼齊圖元506由頂點510-1、510-2和510-3定義,頂點510-1的位置在1,1,頂點510-2的位置在4,6,且頂點508-3的位置在6,4。如所見,「貼齊」導致頂點508被貼齊,如此已貼齊頂點510的位置最靠近未貼齊頂點508位置的該子像素網格位置(例如,位置1.3,1.2貼齊1,1,3.7,5.9貼齊4,6,以此類推)。
第六A圖例示根據本發明之一具體實施例之在高解析度區域600內一未貼齊圖元604及一貼齊圖元606的範例。如所示,區域600包括像素602、子像素603、一未貼齊圖元604及一已貼齊圖元608,具有貼齊的頂點610。
區域600為一物件在第二解析度下光柵化之區域(相較於第五圖所示的第一解析度,該第二解析度為「高」解析度)。區域602內顯示的像素600由實線定義,而子像素603則由虛線定義。從區域600左邊與上方的網格標籤可了解,區域600內的像素602具有0,0、0,2、0,4、0,6、
2,0、2,2、2,4以此類推的像素位置(最左邊與最上方的座標),而子像素具有0,0、0,1、0,2、0,3、0,4、0,5、0,6、1,0、1,1以此類推的像素位置。
未貼齊圖元604由頂點608-1、608-2和608-3定義,由光柵器455上游的單元計算。頂點608-1的位置在2.6,2.4,頂點608-2的位置在7.4,11.8並且頂點608-3的位置在12.6,7.4。當施加視埠轉換時,未貼齊圖元604會被貼齊,以形成已貼齊圖元606。尤其是,未貼齊圖元608的頂點604貼齊該網格的子像素603。
已貼齊圖元606由頂點610-1、610-2和610-3定義,頂點610-1的位置在3,2,頂點610-2的位置在7,12並且頂點610-3的位置在13,7。如所見,「貼齊」導致頂點608貼齊,如此已貼齊頂點610的位置為最靠近未貼齊頂點608位置的該子像素網格位置(例如,位置2.6,2.4貼齊3,2,7.4,11.8貼齊7,12,以此類推)。
請即同時參考第五圖和第六A圖,區域500的解析度為區域600解析度的一半。區域500為8 x 8區域,而區域600為16 x 16區域,如此區域600的解析度在水平與垂直方向內為區域500解析度的兩倍。針對區域500內的任何位置,因此由將該位置的座標乘以二,決定區域600內的等量「邏輯位置」。如此針對區域500內的位置1,1,在區域600內相同的邏輯位置應為1x2,1x2=2,2。
未貼齊圖元504和604分別在區域500與區域600的相同邏輯位置,如此,未捕捉圖元504的所有未貼齊頂點508是在與未咬著圖元604的未貼齊頂點608相同的邏輯位置上。尤其是,具有位置1.3,1.2的未貼齊頂點508-1是在與具有位置2.6,2.4的未貼齊頂點508-2相同的邏輯位置上。如所見,未貼齊頂點608-1的座標為未貼齊頂點508-1座標的兩倍。
不過,因為兩種解析度不同,如此子像素大小就不同,如所見,已貼齊圖元506和606的頂點不在相同邏輯位置上。尤其是,貼齊圖元508具有位置1,1的貼齊頂點510-1、位置4,6的510-2及位置6,4的510-3,而貼齊圖元608具有位置3,2的貼齊頂點610-1、位置7,12的610-2及位置13,7的610-3。頂點610-1未與頂點510-1在相同邏輯位置上,因為頂點610-1的頂點座標3,2不等於1,1 x 2。類似地,頂點510-2未與頂點610-2在相同
邏輯位置上,因為頂點610-2的頂點座標7,12不等於1,1 x 2。最後,頂點510-3不是在與頂點610-3的相同邏輯位置上,因為頂點610-3的頂點座標13,7不等於6,4 x 2。已貼齊頂點610與已貼齊頂點510不在相同邏輯位置上的原因在於,在區域500內,未貼齊頂點508所貼齊的子像素是未貼齊頂點608所貼齊子像素的四倍大。
如此,可看出,如第五圖和第六A圖所示,以不同解析度光柵化的圖元之邏輯位置不同。如此,若根據該低解析度貼齊圖元504的光柵化結果,將記憶體分配用於高解析度貼齊圖元604的光柵化,則記憶體會分配錯誤,因為低解析度貼齊圖元504的光柵化結果不需要對齊高解析度貼齊圖元604的結果。
第六B圖例示根據本發明之一具體實施例之透過包括貼齊圖元606及已覆蓋大像素612的區域600內多重解析度一致性光柵化,進行光柵化的一圖元之大像素覆蓋範例。如所示,區域600包括通用像素602、子像素603及已貼齊圖元606。在區域600內,通用像素602使用實體(未加粗)黑線描繪,通用像素602的子像素603用虛線描繪。大像素612使用實縣與虛線一起描繪。每一大像素612包括四個通用像素602。已貼齊圖元606為與第六A圖所示已貼齊圖元606相同的圖元,如此具有與第六A圖所示相同的已貼齊頂點610。在第六B圖,已貼齊圖元606於低解析度上以保守光柵化來光柵化,尤其是,已貼齊圖元606所接觸的每一大像素612認為「已覆蓋」(以粗體顯示),已貼齊圖元606未接觸的每一大像素612不認為已覆蓋。如此,因為已貼齊圖元606接觸這些大像素的一部分,所以已覆蓋位置0,0、4,0、0,4、4,4、8,4、12,4、4,8和8,8上的大像素612,而因為圖元606並未接觸該大像素的任何部分,所以並未覆蓋位置8,0、12,0、0,8、12,8、0,12、4,12、8,12和12,12上的大像素。
在一具體實施例中,用於儲存區域600內已貼齊圖元606的保守光柵化覆蓋率資料之記憶體分配為4 x 4元件陣列,在水平與垂直方向內可定址從0至3。區域600內每一大像素612的覆蓋率資料佔用該4x4元件陣列的一元件。此外,該陣列可利用將該大像素的像素位置依比例係數而縮小來定址,這等於該大像素的大小除以該通用網格的「單位大小」。
「單位大小」用詞代表該通用解析度元件對應單位長度與寬度之大小。在此情況下,該單位大小在水平與垂直方向內為通用像素的一半。如此,該比例係數在兩方向內為4,並且利用在兩方向內,將該大像素位置除以4便可決定用於儲存覆蓋率資料在該陣列內的位址。因此,大像素的覆蓋率資料可利用將該對應大像素位置除以4,以儲存於陣列內。
例如,對於使用位置8,4的大像素612而言,利用將8除以4及4除以4,獲得儲存該覆蓋率資料的該陣列位置,結果為陣列位置2,1。儲存區域600內所有大像素612覆蓋率資料的陣列包括以下資料,其中0表示並未覆蓋大像素612,並且1表示已經覆蓋大像素612:
[1,1,0,0]
[1,1,1,1]
[0,1,1,0]
[0,0,0,0]
第六C圖例示根據本發明之一具體實施例透過包括貼齊圖元606及已覆蓋小像素614的區域600內多重解析度一致性光柵化,進行光柵化的一圖元之小像素覆蓋範例。如所示,區域600包括通用像素602、子像素603及已貼齊圖元606。
在區域600,通用像素602使用實體(未加粗)黑線描繪,通用像素602的子像素603用虛線描繪。每一小像素614包括一通用像素602。進一步,每一小像素614包括4個子像素603。已貼齊圖元606為與第六A圖和第六B圖所示已貼齊圖元606相同的圖元,如此具有與第六A圖和第六B圖所示相同的已貼齊頂點610。在第六C圖,已貼齊圖元606於高解析度上以標準光柵化來光柵化,具有4個子像素樣本。尤其是,每一小像素614內,由已貼齊圖元606覆蓋之子像素603中心的每一子像素603認為「已覆蓋」(以粗體顯示),而每一小像素614內,未由已貼齊圖元606覆蓋之子像素603中心的每一子像素603認為「未覆蓋」。如此,因為已貼齊圖元606接觸這些子像素603的中心,所以已覆蓋位置3,2、4,3、5,3、4,4、5,4、6,4、7,4及許多其他所示位置上的子像素603,而因為已貼齊圖元606並未覆蓋該子像素603的中心,所以並未覆蓋位置0,0、1,0、2,0、3,0等等上的子像
素。
在一具體實施例中,若子像素603位在低解析度光柵化之已覆蓋的大像素內,則只評估子像素603是否覆蓋。為了決定哪個子像素603位於已覆蓋的大像素內,已覆蓋大像素的記憶體位址乘上該比例係數,並且將偏移加上該結果。例如,針對第六B圖在位址1,1上的大像素612,該位址乘上比例係數4成為位置4,4。然後,加上要評估的每一子像素603的一偏移。因為在每一大像素612內有16個子像素603,所以不同的偏移加上16次,每一子像素603有一次。如此,偏移0,0加上位在4,4的子像素,偏移1,0加上位在5,4的子像素,以此類推。儲存區域600內所有子像素603覆蓋率資料的陣列包括以下資料,其中0表示並未覆蓋子像素603,並且1表示已經覆蓋子像素603:
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0]
[0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0]
[0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0]
[0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0]
[0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0]
[0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0]
[0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0]
第七圖為根據本發明的一具體實施例,用於執行多重解析度一致性光柵化之方法步驟流程圖。雖然已經結合第一圖至第四圖的系統來描述該等方法步驟,不過精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統在本發明範疇內。
如所示,方法700從步驟702開始,光柵器455內的一設定單元決定符合一通用網格的一通用解析度。在步驟704,光柵器455內的該設定單元根據該通用解析度,以計算通用邊緣方程。在步驟706,光柵器455
計算第一光柵化結果,當成大像素的覆蓋率資料。在步驟708,光柵器455利用縮小該已覆蓋大像素的位置,決定儲存第一光柵化結果的位址。在步驟710,光柵器455利用放大用於儲存該第一光柵化結果的位址並且加上小像素偏移,決定用於第二光柵化結果的小像素之位置。最後在步驟712,光柵器455計算第二光柵化結果,當成小像素的覆蓋率資料。
總結來說,圖形處理管線構成計算通用邊緣方程,如此不同解析度的光柵化圖形資料產生一致的結果。尤其是,一設定單元根據該圖形處理管線的該世界空間階段所產生之資料,以計算通訊邊緣方程。然後光柵器根據該通用邊緣方程,產生對準通用網格座標的固定點光柵化結果,例如正常光柵化的覆蓋率資料或低解析度保守光柵化的覆蓋率資料。對於低解析度光柵化而言,該光柵器根據較大像素來評估該通用邊緣方程;而對高解析度光柵化來說,該光柵器根據較小型像素來評估該通用邊緣方程。低解析度像素的位址則依比例係數,將該低解析度光柵化的結果縮小而計算出。小像素的像素位置則藉由該低解析度像素的位址乘上比例係數,並且加上一小像素偏移而計算出。
本發明所揭示技術的一優點為物件可在多種解析度之下一致光炸化,此一致性允許低解析度光柵化產生比先前技術更精確與精準的光柵化結果,供後續以較高解析度進行光柵化。如此,跨多重解析度光柵化的技術更能善加運用光柵化結果,供低解析度光柵化做出特定決策,例如有多少記憶體要分配,藉此改善記憶體使用率並且提高效能。
本發明的一具體實施例可實施成搭配電腦系統使用的程式產品。該程式產品的程式定義該等具體實施例(包括本說明書所述的方法)的功能,並且可包括在電腦可讀取儲存媒體上。例示的電腦可讀取儲存媒體包括但不受限於:(i)其上資訊永久儲存的不可抹寫儲存媒體(例如電腦內的唯讀記憶體裝置,例如小型碟片唯讀記憶體(CD-ROM)光碟機可讀取的CD-ROM光碟、快閃記憶體、ROM晶片或任何一種固態非揮發性半導體記憶體);及(ii)上其儲存可變資訊的可抹寫儲存媒體(例如磁碟機或硬碟內的磁碟或任何一種固態隨機存取半導體記憶體)。
在此已經參考特定具體實施例說明本發明。不過精通此技術的
人士將會了解,在不悖離申請專利範圍內公佈之本發明廣泛精神及範疇下,可進行許多修改與變更。因此前述說明與圖式僅供參考而不做限制。
因此,本發明具體實施例的範疇公布於以下的申請專利範圍內。
Claims (10)
- 一種用於光柵化一物件之方法,包括:決定符合一通用網格的通用解析度;根據該通用解析度及代表有關該物件的幾何資料之資料,藉由一處理器來計算通用邊緣方程;及根據該通用邊緣方程及一第一解析度,決定包含複數個已覆蓋大像素的大像素覆蓋率資料。
- 一種用於光柵化一物件之圖形處理管線,包括:一設定單元,其構成根據一通用解析度及代表有關該物件的幾何資料之資料,以計算通用邊緣方程;及一光柵器單元,其構成根據該通用邊緣方程及一第一解析度,決定包括複數個已覆蓋大像素的大像素覆蓋率資料。
- 如申請專利範圍第2項之圖形處理管線,其中該光柵器單元更構成根據該通用邊緣方程,決定包括複數個已覆蓋小像素的小像素覆蓋率資料、該等複數個已覆蓋大像素、及一第二解析度,其中該第二解析度高於該第一解析度。
- 如申請專利範圍第3項之圖形處理管線,其中決定該等複數個已覆蓋大像素包括評估該通用網格內複數個大像素的覆蓋率,並且其中決定該等複數個已覆蓋小像素包括評估該通用網格內複數個小像素的覆蓋率。
- 如申請專利範圍第4項之圖形處理管線,其中針對該等複數個大像素內的每一大像素,評估該通用網格內該等複數個大像素的覆蓋率包括決定該物件是否覆蓋該大像素的任何部分。
- 如申請專利範圍第5項之圖形處理管線,其中針對該等複數個小像素內的每一小像素,評估該通用網格內該等複數個小像素的覆蓋率包括決定該物件是否覆蓋該小像素內的一樣本。
- 如申請專利範圍第6項之圖形處理管線,其中該通用網格內的該等複數個大像素的每一大像素具有一大像素位置,並且針對該等複數個大像素內的每一大像素,更包括利用將該大像素位置除以該比例係數, 決定儲存大像素覆蓋率資料的位址。
- 如申請專利範圍第7項之圖形處理管線,其中該通用網格內的該等複數個小像素的每一小像素具有一小像素位置,並且其中針對每一小像素,評估該等複數個小像素的覆蓋率資料更包括,利用將該大像素覆蓋率資料儲存位置乘上該比例係數並加上一小像素偏移,以決定一小像素位置。
- 如申請專利範圍第8項之圖形處理管線,其中該比例係數係根據2的乘方,並且其中對用於儲存該大像素覆蓋率資料的位址進行除算更包括,利用該比例係數以2為底的對數,對儲存該大像素覆蓋率資料的位址進行位元位移。
- 如申請專利範圍第8項之圖形處理管線,其中對用於儲存該大像素覆蓋率資料的位址進乘算更包括,利用該比例係數以2為底的對數,對該大像素覆蓋率資料的儲存位址進行位元位移。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/790,037 US9947084B2 (en) | 2013-03-08 | 2013-03-08 | Multiresolution consistent rasterization |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201435801A TW201435801A (zh) | 2014-09-16 |
TWI537870B true TWI537870B (zh) | 2016-06-11 |
Family
ID=51385343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102147971A TWI537870B (zh) | 2013-03-08 | 2013-12-24 | 多重解析度一致性光柵化 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9947084B2 (zh) |
CN (1) | CN104036537A (zh) |
DE (1) | DE102013020614A1 (zh) |
TW (1) | TWI537870B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI733808B (zh) * | 2016-06-28 | 2021-07-21 | 美商英特爾股份有限公司 | 用於虛擬實境和多視角系統之交錯光柵化和像素著色的架構 |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9478066B2 (en) | 2013-03-14 | 2016-10-25 | Nvidia Corporation | Consistent vertex snapping for variable resolution rendering |
US9633469B2 (en) | 2013-03-15 | 2017-04-25 | Nvidia Corporation | Conservative rasterization of primitives using an error term |
KR102366808B1 (ko) * | 2014-10-22 | 2022-02-23 | 삼성전자주식회사 | 캐시 메모리 시스템 및 그 동작방법 |
US9704217B2 (en) * | 2015-04-20 | 2017-07-11 | Intel Corporation | Apparatus and method for non-uniform frame buffer rasterization |
US10037620B2 (en) * | 2015-05-29 | 2018-07-31 | Nvidia Corporation | Piecewise linear irregular rasterization |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
US10269154B2 (en) * | 2015-12-21 | 2019-04-23 | Intel Corporation | Rasterization based on partial spans |
US10535121B2 (en) * | 2016-10-31 | 2020-01-14 | Adobe Inc. | Creation and rasterization of shapes using geometry, style settings, or location |
US10242494B2 (en) | 2017-04-01 | 2019-03-26 | Intel Corporation | Conditional shader for graphics |
US10628907B2 (en) | 2017-04-01 | 2020-04-21 | Intel Corporation | Multi-resolution smoothing |
US10591971B2 (en) | 2017-04-01 | 2020-03-17 | Intel Corporation | Adaptive multi-resolution for graphics |
US10152822B2 (en) | 2017-04-01 | 2018-12-11 | Intel Corporation | Motion biased foveated renderer |
US10089230B1 (en) | 2017-04-01 | 2018-10-02 | Intel Corporation | Resource-specific flushes and invalidations of cache and memory fabric structures |
US10572966B2 (en) | 2017-04-01 | 2020-02-25 | Intel Corporation | Write out stage generated bounding volumes |
US10223773B2 (en) | 2017-04-01 | 2019-03-05 | Intel Corporation | On demand MSAA resolve during lens correction and/or other post-processing phases |
US10395623B2 (en) | 2017-04-01 | 2019-08-27 | Intel Corporation | Handling surface level coherency without reliance on fencing |
US10453241B2 (en) | 2017-04-01 | 2019-10-22 | Intel Corporation | Multi-resolution image plane rendering within an improved graphics processor microarchitecture |
US10424097B2 (en) | 2017-04-01 | 2019-09-24 | Intel Corporation | Predictive viewport renderer and foveated color compressor |
US10157493B2 (en) | 2017-04-01 | 2018-12-18 | Intel Corporation | Adaptive multisampling based on vertex attributes |
US10706612B2 (en) | 2017-04-01 | 2020-07-07 | Intel Corporation | Tile-based immediate mode rendering with early hierarchical-z |
US10489915B2 (en) | 2017-04-01 | 2019-11-26 | Intel Corporation | Decouple multi-layer render fequency |
US10572258B2 (en) | 2017-04-01 | 2020-02-25 | Intel Corporation | Transitionary pre-emption for virtual reality related contexts |
US10204394B2 (en) | 2017-04-10 | 2019-02-12 | Intel Corporation | Multi-frame renderer |
US10497340B2 (en) | 2017-04-10 | 2019-12-03 | Intel Corporation | Beam scanning image processing within an improved graphics processor microarchitecture |
US11106274B2 (en) | 2017-04-10 | 2021-08-31 | Intel Corporation | Adjusting graphics rendering based on facial expression |
US10109078B1 (en) | 2017-04-10 | 2018-10-23 | Intel Corporation | Controlling coarse pixel size from a stencil buffer |
US10373365B2 (en) | 2017-04-10 | 2019-08-06 | Intel Corporation | Topology shader technology |
US11030713B2 (en) | 2017-04-10 | 2021-06-08 | Intel Corporation | Extended local memory including compressed on-chip vertex data |
US10460415B2 (en) | 2017-04-10 | 2019-10-29 | Intel Corporation | Contextual configuration adjuster for graphics |
US10319064B2 (en) | 2017-04-10 | 2019-06-11 | Intel Corporation | Graphics anti-aliasing resolve with stencil mask |
US10204393B2 (en) | 2017-04-10 | 2019-02-12 | Intel Corporation | Pre-pass surface analysis to achieve adaptive anti-aliasing modes |
US10235735B2 (en) | 2017-04-10 | 2019-03-19 | Intel Corporation | Graphics processor with tiled compute kernels |
US10725929B2 (en) | 2017-04-10 | 2020-07-28 | Intel Corporation | Graphics memory extended with nonvolatile memory |
US10235794B2 (en) | 2017-04-10 | 2019-03-19 | Intel Corporation | Multi-sample stereo renderer |
US10152632B2 (en) | 2017-04-10 | 2018-12-11 | Intel Corporation | Dynamic brightness and resolution control in virtual environments |
GB2561557B (en) * | 2017-04-13 | 2020-08-12 | Advanced Risc Mach Ltd | Graphics processing method and apparatus in which modified edge positions are used in rasterisation |
US10242486B2 (en) | 2017-04-17 | 2019-03-26 | Intel Corporation | Augmented reality and virtual reality feedback enhancement system, apparatus and method |
US10430147B2 (en) | 2017-04-17 | 2019-10-01 | Intel Corporation | Collaborative multi-user virtual reality |
US10467796B2 (en) | 2017-04-17 | 2019-11-05 | Intel Corporation | Graphics system with additional context |
US10192351B2 (en) | 2017-04-17 | 2019-01-29 | Intel Corporation | Anti-aliasing adaptive shader with pixel tile coverage raster rule system, apparatus and method |
US10290141B2 (en) | 2017-04-17 | 2019-05-14 | Intel Corporation | Cloud based distributed single game calculation of shared computational work for multiple cloud gaming client devices |
US10401954B2 (en) | 2017-04-17 | 2019-09-03 | Intel Corporation | Sensory enhanced augmented reality and virtual reality device |
US10347039B2 (en) | 2017-04-17 | 2019-07-09 | Intel Corporation | Physically based shading via fixed-functionality shader libraries |
US10452552B2 (en) | 2017-04-17 | 2019-10-22 | Intel Corporation | Memory-based dependency tracking and cache pre-fetch hardware for multi-resolution shading |
US10896657B2 (en) | 2017-04-17 | 2021-01-19 | Intel Corporation | Graphics with adaptive temporal adjustments |
US10846918B2 (en) | 2017-04-17 | 2020-11-24 | Intel Corporation | Stereoscopic rendering with compression |
US10719902B2 (en) | 2017-04-17 | 2020-07-21 | Intel Corporation | Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform |
US10521876B2 (en) | 2017-04-17 | 2019-12-31 | Intel Corporation | Deferred geometry rasterization technology |
US10672175B2 (en) | 2017-04-17 | 2020-06-02 | Intel Corporation | Order independent asynchronous compute and streaming for graphics |
US10242496B2 (en) | 2017-04-24 | 2019-03-26 | Intel Corporation | Adaptive sub-patches system, apparatus and method |
US10251011B2 (en) | 2017-04-24 | 2019-04-02 | Intel Corporation | Augmented reality virtual reality ray tracing sensory enhancement system, apparatus and method |
US10347357B2 (en) | 2017-04-24 | 2019-07-09 | Intel Corporation | Post-packaging environment recovery of graphics on-die memory |
US10643374B2 (en) | 2017-04-24 | 2020-05-05 | Intel Corporation | Positional only shading pipeline (POSH) geometry data processing with coarse Z buffer |
US10109039B1 (en) | 2017-04-24 | 2018-10-23 | Intel Corporation | Display engine surface blending and adaptive texel to pixel ratio sample rate system, apparatus and method |
US10402933B2 (en) | 2017-04-24 | 2019-09-03 | Intel Corporation | Adaptive smart grid-client device computation distribution with grid guide optimization |
US10728492B2 (en) | 2017-04-24 | 2020-07-28 | Intel Corporation | Synergistic temporal anti-aliasing and coarse pixel shading technology |
CN107436500B (zh) * | 2017-08-25 | 2020-04-24 | 京东方科技集团股份有限公司 | 光栅及制备方法、驱动方法、裸眼三维显示系统 |
CN116263982B (zh) * | 2022-04-20 | 2023-10-20 | 象帝先计算技术(重庆)有限公司 | 图形处理器、系统、方法、电子装置及设备 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5815168A (en) | 1995-06-23 | 1998-09-29 | Cirrus Logic, Inc. | Tiled memory addressing with programmable tile dimensions |
US6597356B1 (en) * | 2000-08-31 | 2003-07-22 | Nvidia Corporation | Integrated tessellator in a graphics processing unit |
US9218689B1 (en) * | 2003-12-31 | 2015-12-22 | Zilabs Inc., Ltd. | Multi-sample antialiasing optimization via edge tracking |
US7436405B2 (en) | 2004-05-14 | 2008-10-14 | Microsoft Corporation | Terrain rendering using nested regular grids |
US8068117B2 (en) * | 2005-06-30 | 2011-11-29 | Microsoft Corporation | Parallel texture synthesis by upsampling pixel coordinates |
TWI344795B (en) | 2006-06-08 | 2011-07-01 | Via Tech Inc | Decoding of context adaptive variable length codes in computational core of programmable graphics processing unit |
US8928676B2 (en) * | 2006-06-23 | 2015-01-06 | Nvidia Corporation | Method for parallel fine rasterization in a raster stage of a graphics pipeline |
US9070213B2 (en) | 2006-07-26 | 2015-06-30 | Nvidia Corporation | Tile based precision rasterization in a graphics pipeline |
US20100079454A1 (en) | 2008-09-29 | 2010-04-01 | Legakis Justin S | Single Pass Tessellation |
US9058672B2 (en) | 2009-10-06 | 2015-06-16 | Nvidia Corporation | Using a pixel offset for evaluating a plane equation |
GB2495301B (en) * | 2011-09-30 | 2018-01-17 | Advanced Risc Mach Ltd | Method of and apparatus for encoding data |
-
2013
- 2013-03-08 US US13/790,037 patent/US9947084B2/en active Active
- 2013-12-15 DE DE102013020614.6A patent/DE102013020614A1/de active Pending
- 2013-12-24 TW TW102147971A patent/TWI537870B/zh active
- 2013-12-31 CN CN201310752855.5A patent/CN104036537A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI733808B (zh) * | 2016-06-28 | 2021-07-21 | 美商英特爾股份有限公司 | 用於虛擬實境和多視角系統之交錯光柵化和像素著色的架構 |
Also Published As
Publication number | Publication date |
---|---|
CN104036537A (zh) | 2014-09-10 |
US20140253555A1 (en) | 2014-09-11 |
DE102013020614A1 (de) | 2014-09-11 |
TW201435801A (zh) | 2014-09-16 |
US9947084B2 (en) | 2018-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI537870B (zh) | 多重解析度一致性光柵化 | |
TWI559729B (zh) | 用於低功率圖形著色的像素著色器省略 | |
TWI616846B (zh) | 利用以空間及/或時間方式改變取樣圖案之增強型消鋸齒的一種圖形子系統、電腦實施方法及電腦裝置 | |
US9495781B2 (en) | Early sample evaluation during coarse rasterization | |
TWI645371B (zh) | 在上游著色器內設定下游著色狀態 | |
US9633469B2 (en) | Conservative rasterization of primitives using an error term | |
US9293109B2 (en) | Technique for storing shared vertices | |
US8730253B2 (en) | Decomposing cubic Bezier segments for tessellation-free stencil filling | |
TW201439975A (zh) | 在光柵操作中處理後置z覆蓋率資料 | |
CN103810669B (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
TWI633516B (zh) | 曲面細分及幾何著色器的功率效率屬性處理 | |
US8698802B2 (en) | Hermite gregory patch for watertight tessellation | |
US9418616B2 (en) | Technique for storing shared vertices | |
TWI611373B (zh) | 路徑著色的最佳化三角形拓撲 | |
TW201432609A (zh) | 已分配的拼貼快取 | |
TW201423720A (zh) | 具備緩衝區限制處理的世界空間與螢幕空間管線間之圖元重新排序 | |
TW201430764A (zh) | 使用每像素著色器執行緒的高效超取樣 | |
US20140267266A1 (en) | Generating anti-aliased voxel data | |
TWI425440B (zh) | 複合多重樣本/超樣本抗頻疊 | |
TW201447812A (zh) | 有共用邊緣的先印後蓋路徑描繪 | |
TW201435581A (zh) | 透過管線狀態繫結觸發的效能事件擷取 | |
TW201447813A (zh) | 產生防鋸齒體素資料 | |
US7724254B1 (en) | ISO-surface tesselation of a volumetric description | |
US20140267265A1 (en) | Generating anti-aliased voxel data |