TWI645371B - 在上游著色器內設定下游著色狀態 - Google Patents

在上游著色器內設定下游著色狀態 Download PDF

Info

Publication number
TWI645371B
TWI645371B TW102140105A TW102140105A TWI645371B TW I645371 B TWI645371 B TW I645371B TW 102140105 A TW102140105 A TW 102140105A TW 102140105 A TW102140105 A TW 102140105A TW I645371 B TWI645371 B TW I645371B
Authority
TW
Taiwan
Prior art keywords
graphics
vertex
processing unit
memory
processing pipeline
Prior art date
Application number
TW102140105A
Other languages
English (en)
Other versions
TW201428676A (zh
Inventor
埃米特M 基加瑞夫
摩根 馬戈爾
尤里Y 烏拉爾斯基
齊亞德S 哈古拉
Original Assignee
輝達公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 輝達公司 filed Critical 輝達公司
Publication of TW201428676A publication Critical patent/TW201428676A/zh
Application granted granted Critical
Publication of TWI645371B publication Critical patent/TWI645371B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

本發明揭示一種用於在一圖形處理管線(Pipeline)的一階段內處理圖形物件之技術。該等技術包括:接收有關該圖形物件的一圖形基元;及決定複數個屬性,其對應有關該圖形基元的一或多個頂點。該等技術更包括根據有關該圖形基元的一視覺效果,決定有關該圖形處理管線下游階段的一或多個狀態參數之值。該等技術更包括傳輸該等狀態參數值至該圖形處理管線的該下游階段。該等揭示技術之一優點在於可彈性及有效執行視覺效果。

Description

在上游著色器內設定下游著色狀態
本發明一般係關於三維(3D)圖形處理,尤其係關於在一上游著色器內設定下游著色狀態。
一般使用具有一或多個多階段圖行管線的圖形處理單元(GPU,graphics processing unit),著色電腦所產生包括3D圖形物件的影像。這種圖形管線包括許多可編程與固定功能階段。可編程階段包括許多處理單元,執行著色器程式來著色圖形物件,並且產生有關圖形物件的許多視覺效果。這些著色器程式包括:(i)頂點著色器,將有關一圖形物件之每一頂點的3D位置轉換成一顯示裝置的螢幕表面上的2D位置;(ii)曲面細分著色器,將圖形物件分成較小圖形物件或圖形基元,例如線條與三角形;(iii)幾何著色器,接收幾何基元並產生片段,其每一者都包括一或多個影像元素(像素);及(iv)像素著色器,接收該等片段並計算每一個別像素的顏色及其他屬性。在該可編程著色之間的管線內存在許多固定功能階段,這些固定功能階段在該管線內執行特別定義的功能。這種固定功能階段包括視圖消隱單元、裁切單元、設定計算單元、光柵化單元及構成執行preROP(預先光柵運算)、顏色運算或深度緩衝運算的單元。
一般來說,在圖形實施中,一中央處理單元(CPU,central processing unit)傳輸圖形物件至該GPU用於著色與顯示。該中央處理單元亦傳輸該圖形管線內有關許多可編程與固定階段的特定狀態情況。不過,這些狀態情況會在傳送圖形物件之前或之後傳送。如此,著色一特定圖形物件時,固定該等狀態參數。
因為著色一特定圖形物件時,固定該圖形管線階段的狀態參數,所以難以產生特定視覺效果。例如:頭髮或毛皮可用消鋸齒多段線來 著色,其中多段線包括串連一起的多重線段。利用改變多段線的厚度,使得較靠近顯示裝置螢幕表面的線段厚度比遠離該螢幕表面的線段較厚,以達成真實外觀。不過,該中央處理單元一般無法改變已知多段線內線段的厚度。因此,已知多段線的消鋸齒線段厚度都一樣。這樣會讓髮絲看起來,前面太薄而後面太厚。
上述問題的一可能解決方案在於,該中央處理單元可將一圖形物件分成較小的圖形物件或圖形基元,這種處理稱為曲面細分。然後該中央處理單元更新較小圖形物件或圖形基元的傳輸間之狀態參數,以提供產生許多效果的更大彈性。如一範例,多段線之每一線段都可個別從該中央處理單元傳輸至該圖形處理單元,其中該中央處理單元指定每一個別傳輸線段之厚度。此方式有一缺點,就是該中央處理單元在執行曲面細分運算方面比該圖形處理單元較無效率。藉由將某些或全部完整曲面細分任務從該圖形處理單元移至該中央處理單元,整體系統效能會下降。另外,該圖形處理單元可持續執行曲面細分,但是因為上述限制,而無法達成特定效果。
如先前例示,業界需要一種用於處理在一圖形管線內的圖形物件之改良式技術。
本發明之一具體實施例揭示一種用於處理在一圖形處理管線的第一階段內的圖形物件之方法。該方法包括:接收有關該圖形物件的一圖形基元;及決定複數個屬性,其對應有關該第一圖形基元的一或多個頂點。該方法更包括:根據有關該圖形基元的一視覺效果,決定有關該圖形處理管線的第二階段的一狀態參數之值;及傳輸該值至該圖形處理管線的該第二階段。
本發明之其他具體實施例包括(但不受限於)一子系統,其包括一幾何處理單元,其構成實施該等揭示方法的一或多個態樣,及包括一系統,其構成實施該等揭示方法的一或多個態樣。
該揭示技術之一優點在於可彈性及有效執行圖形效果。
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‧‧‧分割單元
230‧‧‧處理叢集陣列
220‧‧‧動態隨機存取記憶體
300‧‧‧任務管理單元
302‧‧‧執行單元
303‧‧‧載入儲存單元
304‧‧‧局部暫存檔
306‧‧‧共享記憶體
340‧‧‧工作分配單元
352‧‧‧統一位址映射單元
321‧‧‧排程器表
320‧‧‧L1快取
322‧‧‧TMD
345‧‧‧任務表
305‧‧‧管線管理器
328‧‧‧記憶體管理單元
312‧‧‧線程排程器與指令單元
310‧‧‧串流多重處理器
330‧‧‧工作分配交叉開關
335‧‧‧第一點五層快取
315‧‧‧紋理單元
325‧‧‧preROP
370‧‧‧指令L1快取
380‧‧‧記憶體與快取互連
525‧‧‧佇列
400‧‧‧圖形處理管線
415‧‧‧頂點處理單元
425‧‧‧幾何處理單元
460‧‧‧片段處理單元
410‧‧‧資料組合器
420‧‧‧基元組合器
455‧‧‧光柵器
465‧‧‧光柵操作單元
500‧‧‧頂點鍊
510‧‧‧頂點
600‧‧‧頂點資料
610‧‧‧頂點屬性
620‧‧‧一般屬性
630‧‧‧狀態屬性
710‧‧‧三角形
720‧‧‧三角形
730‧‧‧矩形區域
760‧‧‧多邊形
770‧‧‧三角形
800‧‧‧多段線
810‧‧‧線段
850‧‧‧多段線
860‧‧‧消鋸齒線段
910‧‧‧光源
920‧‧‧限界球
930‧‧‧深度
940‧‧‧深度
1010‧‧‧三角形
1020‧‧‧像素
1100‧‧‧方法
本發明之上面詳述特徵之方式、本發明之更特定說明、上面簡短概述藉由參考具體實施例,某些具體實施例是在附圖內說明。不過吾人應該注意,附圖只說明本發明之典型具體實施例,因此並未限制本發明與之範疇,本發明承認其他等效具體實施例。
第一圖為例示構成實施本發明之一或多個態樣之電腦系統的方塊圖;第二圖為根據本發明之一具體實施例之用於第一圖中該電腦系統之一平行處理子系統的方塊圖;第三A圖為根據本發明之一具體實施例之第二圖中前端的方塊圖;第三B圖為根據本發明之一具體實施例之第二圖中平行處理單元之一者內之通用處理叢集的方塊圖;第三C圖為根據本發明之一具體實施例之第三B圖中該串流多重處理器之一部分的方塊圖;第四圖為根據本發明的一具體實施例之第二圖中平行處理單元之一或多個單元可構成實施之圖形處理管線的概念圖;第五圖例示根據本發明之一具體實施例之第四圖的圖形處理管線所處理之一頂點鍊;第六圖例示根據本發明之一具體實施例之指定有關第五圖中該等頂點之一者的該頂點資料之資料結構;第七A圖和第七B圖例示根據本發明之一具體實施例之使用一保留光柵方式著色的三角形;第八A圖和第八B圖例示根據本發明之一具體實施例之使用可邊寬度消鋸齒線著色的多段線;第九圖例示根據本發明之一具體實施例之具有依照圖形基元深度限界的光源;第十圖例示根據本發明之一具體實施例之使用動態模糊著色的三角形;及第十一圖揭示根據本發明之一具體實施例之用於處理在一 圖形處理管線之一階段內的圖形物件之方法步驟的流程圖。
在以下描述中,揭示許多特定細節以對本發明更徹底理解。但是,精通技術人士應該了解,在沒有一或多個該等特定細節之下還是可實施本發明。
系統概觀
第一圖為例示構成實施本發明之一或多個態樣之一電腦系統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提供輸入/輸出橋接器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都直接連接輸入/輸出橋接器107。
第二圖例示根據本發明之一具體實施例的平行處理子系統112。如所示,平行處理子系統112包括一或多個平行處理單元(PPU,parallel processing unit)202,每一者都連結局部平行處理(PP,parallel processing)記憶體204。一般來說,平行處理子系統包括數量為U的平行處理單元,其中U1。(本說明書中多個類似物體的實例都用參考號碼標示出該物體,並且括號標示所需的實例。)平行處理單元202及平行處理記憶體204可使用 一或多個積體電路裝置來實施,例如可編程處理器、特殊應用積體電路(ASIC,application specific integrated circuit)、或記憶體裝置、或以任何其他技術可行方式。
請即重新參考第一圖,如第二圖內所示,在一具體實施例中,平行處理子系統112內的某些或全部平行處理單元202為具有著色管線的圖形處理器,其可構成執行許多操作,這些操作有關透過記憶體橋接器105和第二通訊路徑113,從中央處理單元102及/或系統記憶體104供應的圖形資料產生像素資料、與本機平行處理記憶體204(可用來當成圖形記憶體,包括例如傳統畫框緩衝區)互動來儲存與更新像素資料、傳遞像素資料給顯示裝置110等等。在某些具體實施例中,平行處理子系統112可包括操作當成圖形處理器的一或多個平行處理單元202,及用於一般用途計算的一或多個其他平行處理單元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可編程執行有關廣泛應用的處理任務,包括(但不受限於)線性與非線性資料傳輸、視訊及/或音訊資料篩選、模型化運算(例如套用實體規則來決定位置、速度及其他物體屬性)、影像著 色運算(例如曲線細分著色、影點著色、幾何著色及/或像素著色器程式)等等。平行處理單元202可從系統記憶體104及/或局部平行處理記憶體204將資料傳輸進入內部(晶片上)記憶體、處理該資料並將結果資料寫回系統記憶體104及/或局部平行處理記憶體204,其中這種資料可由其他系統組件存取,包括中央處理單元102或另一平行處理子系統112。
一平行處理單元202可提供任何數量的局部平行處理記憶體204,包括非局部記憶體,並且可任何情況下使用局部記憶體和系統記憶體。例如:平行處理單元202可為統一記憶體架構(UMA,unified memory architecture)具體實施例內的圖形處理器。在這種具體實施例中,提供一些或無專屬圖形(平行處理)記憶體,且平行處理單元202完全或幾乎完全使用系統記憶體。在統一記憶體架構具體實施例中,平行處理單元202可整合至橋接器晶片或處理器晶片,或如同單顆晶片提供,其具有高速連結(例如PCI Express),透過橋接器晶片或其他通訊方式連接平行處理單元202至系統記憶體。
如上述,任何數量的平行處理單元202都可包括在一平行處理子系統112內。例如:單一外接卡上可提供多個平行處理單元202,或多張外接卡可連接至通訊路徑113,或一或多個平行處理單元202可整合到一橋接器晶片上。多平行處理單元系統內的平行處理單元202可彼此一致或不同。例如:不同的平行處理單元202可具有不同數量的處理核心、不同大小的局部平行處理記憶體等等。當存在多個平行處理單元202時,這些平行處理單元可平行操作,以比單一平行處理單元202還要高產量的方式來處理資料。合併一或多個平行處理單元202的系統可在許多設置與外型因素之下實施,包括桌上型、膝上型或手持式個人電腦、伺服器、工作站、遊戲機、嵌入式系統等等。
多重平行任務排程
多重處理任務可在通用處理叢集208上同時執行,並且一處理任務可在執行期間產生一或多個「子」處理任務。任務/工作單元207接收該等任務,且動態排定要由通用處理叢集208執行的處理任務及子處理任務。
第三A圖為根據本發明之一具體實施例之第二圖中任務/工作單元207的方塊圖。任務/工作單元207包括一任務管理單元300及工作分配單元340。任務管理單元300根據執行優先順序等級來組織要排程的任務。針對每一優先順序等級,任務管理單元300將指標的連結清單儲存到對應排程器表321內任務的QMD 322。QMD 322可儲存在PP記憶體204或系統記憶體104。任務管理單元300接受任務且將該等任務儲存在排程器表321內的速率係與任務管理單元300排定執行任務的速率無關,讓任務管理單元300根據優先權資訊或使用其他技術來排定任務。
工作分配單元340包括一具有時槽的任務表345,每一時槽被QMD 322佔用以供執行任務。當任務表345內有未指定時槽時,任務管理單元300可排定任務執行。當沒有未指定時槽時,未佔用時槽的較高優先順序任務會驅逐佔用時槽的較低優先順序任務。當任務遭到驅逐時,該任務停止,並且若該任務尚未執行完成,則將該任務加入排程器表321內的一連結清單中。當已產生一子處理任務時,則將該子任務加入排程器表321內的一連結清單中。當已驅逐該任務時,則從一時槽中移除任務。
任務處理概觀
第三B圖為根據本發明的一具體實施例,第二圖中平行處理單元202之一者內通用處理叢集208的方塊圖。每一通用處理叢集208都可構成同時執行大量執行緒,其中「執行緒」一詞代表在特定輸入資料集上執行的特定程式之實例。在某些具體實施例中,單一指令、多重資料(SIMD,single-instruction,multiple-data)指令發行技術用於支援大量執行緒的平行執行,而不用提供多個獨立指令單元。在其他具體實施例中,單一指令、多重執行緒(SIMT,single-instruction,multiple-thread)技術用於支援大量一般同步執行緒的平行執行,使用共用指令單元,其構成發出指令至每一通用處理叢集208內的處理引擎集。不同於一單一指令、多重資料執行模式,其中所有處理引擎一般都執行相同的指令,單一指令、多重執行緒執行允許不同執行緒透過一已知執行緒程式更迅速遵循不同的執行路徑。業界內精通技術人士將了解,單一指令、多重資料處理模式代表一單一指令、多重執行緒處理模式的功能子集。
透過將處理任務分配至串流多重處理器(SM,streaming multiprocessor)310的管線管理器305可有利地控制通用處理叢集208的操作。管線管理器305亦可構成利用指定串流多重處理器310所輸出已處理資料的目的地,以控制一工作分配交叉開關330。
在一具體實施例中,每一通用處理叢集208都包括數量為M的串流多重處理器310,其中M1,每一串流多重處理器310都構成處理一或多個執行緒群組。另外,每一串流多重處理器310有利地包括可管路化的一致功能執行單元集(例如執行單元與載入儲存單元,在第三C圖內顯示為執行單元302及載入儲存單元303),允許完成先前指令之前發出新指令,如先前技術所知。在一具體實施例中,該等功能單元支援許多種運算,包括整數與浮點算術運算(例如加法與乘法)、比較運算、布林運算(AND、OR、XOR)、位元位移和許多代數函數的計算(例如平面插值、三角函數及對數函數等等);並且該相同功能單元硬體可用來執行不同運算。
一系列指令傳輸至特定通用處理叢集208構成一執行緒,如本說明書先前所定義,且在串流多重處理器310內平行處理引擎(未顯示)的整個特定數量同時執行的執行緒在此稱為「線程」或「執行緒群組」。如本說明書所使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一執行緒指派給串流多重處理器310內的不同處理引擎。一執行緒群組可包括數量比串流多重處理器310內處理引擎數量還要少的執行緒,在此案例中,某些處理引擎會在循環期間處理該執行緒群組時閒置。執行緒群組亦可包括數量比串流多重處理器310內處理引擎數量還要多的執行緒,在此案例中,將在連續時脈循環上進行處理。因為每一串流多重處理器310都可同時支援最多G個執行緒群組,所以在任何已知時間上通用處理叢集208內都可執行最多G*M個執行緒群組。
此外,在串流多重處理器310內可同時啟用複數個相關執行緒群組(在不同執行階段)。此整個執行緒群組稱為「協作執行緒陣列」(CAT,cooperative thread array)或「執行緒陣列」。特定協作執行緒陣列的大小等於m*k,其中k為執行緒群組內同時執行的執行緒數量,通常為串流多重處理器310內平行處理引擎數量的整數倍數,並且m為串流多重處理器310內 同時啟用的執行緒群組數量。協作執行緒陣列的大小通常是由程式設計師及該協作執行緒陣列可用的硬體資源數量來決定,例如記憶體或暫存器。
每一串流多重處理器310都包括第一層(L1)快取(如第三C圖所示),或使用串流多重處理器310外部的對應L1快取內的空間,其用於執行負載與儲存操作。每一串流多重處理器310亦要存取所有通用處理叢集208之間共享的第二層(L2)快取,並且可用於在執行緒之間傳輸資料。最後,串流多重處理器310亦要存取至晶片外「全域」記憶體,其可包括例如平行處理記憶體204及/或系統記憶體104。吾人了解,平行處理單元202之外的任何記憶體都可用來當成全域記憶體。此外,一點五層(L1.5)快取335可包括在通用處理叢集208內,構成接收並固定由串流多重處理器310要求透過記憶體介面214從記憶體擷取的資料,包括指令、統一資料及常數資料,並且將該要求的資料提供給串流多重處理器310。通用處理叢集208內具有多個串流多重處理器310的具體實施例可有利地共享共用指令和在L1.5快取335內快取的資料。
每一通用處理叢集208都可包括一記憶體管理單元(MMU,memory management unit)328,其構成將虛擬位址映射至實體位址。在其他具體實施例中,記憶體管理單元328可位於記憶體介面214之內。記憶體管理單元328包括一組頁面表記錄(PTE,page table entry),用於將一拼貼及選擇性一快取線索引的虛擬位址映射至實體位址。記憶體管理單元328可包括能夠位於多重處理器串流多重處理器310或L1快取或通用處理叢集208內的位址轉譯後備緩衝器(TLB,translation lookaside buffer)或快取。該實體位址經過處理來分配表面資料存取地點,以便讓有效要求交錯於分割單元之間。該快取線索引可用於決定是否符合或不符合一快取線的要求。
在圖形與計算應用當中,通用處理叢集208可經過設置,如此每一串流多重處理器310都連結至一紋理單元315,用於執行紋理映射操作,例如決定紋理樣本位置、讀取文例資料及篩選該紋理資料。紋理資料從內部紋理L1快取(未顯示)讀取,或在某些具體實施例內從SM 310內的該L1讀取,並且依照需求從L2快取、平行處理記憶體204或系統記憶體 104擷取。每一串流多重處理器310都輸出處理過的任務至工作分配交叉開關330,以便將該處理過的任務提供至另一通用處理叢集208供進一步處理,或透過交叉開關單元210將該處理過的任務儲存在L2快取、平行處理記憶體204或系統記憶體104內。preROP(預先光柵運算)325構成從串流多重處理器310接收資料、將資料引導至分割單元215內的ROP單元,並且執行顏色混合的最佳化、組織像素顏色資料、及執行位址轉譯。
吾人將了解,本說明書中顯示的該核心架構為例示,所以可進行改變與修改。任何數量的處顛元,例如串流多重處理器310或紋理單元315、preROP 325都可包括在通用處理叢集208內。此外,雖然只顯示通用處理叢集208,但一平行處理單元202可包括任意數量功能彼此類似的通用處理叢集208,如此執行行為並不取決於接收特定處理任務的通用處理叢集208。此外,每一GPC 208可運用分離與個別的處理單元、L1快取等等而有利地獨立於其他GPC 208的操作。
精通此技術人士將了解,第一圖、第二圖、第三A圖和第三B圖內描述的架構並未侷限本發明的範疇,本說明書內的技術可在任何正確設置的處理單元上實施,在不悖離本發明範疇之下包括(但不受限於)一或多個中央處理單元、一或多個多核心中央處理單元、一或多個平行處理單元202、一或多個通用處理叢集208、一或多個圖形或特殊用途處理單元等等。
在本發明之具體實施例中,吾人想要使用一計算系統的平行處理單元202或其他處理器,運用執行緒陣列來執行一般用途計算。該執行緒陣列內的每一執行緒都可指派唯一的執行緒識別碼(「執行緒ID」),該執行緒識別碼可在該執行緒執行期間用來存取該執行緒。該執行緒ID可定義為一維度或多維度數值,用以控制該執行緒處理行為的許多態樣。例如:一執行緒ID可用於決定設定一執行緒要處理輸入資料的哪部分及/或決定設定一執行緒要產生或寫入輸入資料的哪個部分。
一序列每個執行緒指令可包括至少一指令,其定義該代表執行緒與該執行緒陣列的一或多個其他執行緒之間的協同行為。例如:每一執行緒指令的序列可包括:一暫停指令,用以在該序列內特定點上暫停該 代表執行緒運算執行,直到其他執行緒之一或多個執行緒到達該特定點為止;一儲存指令,用於該代表執行緒將資料儲存至一共享記憶體內,該共享記憶體可由其他執行緒之一或多個執行緒存取;一讀取與更新指令,用以使該代表執行緒根據其執行緒ID自動讀取與更新一共享記憶體內的該等其他執行緒之一或多個執行緒已存取的資料、等等。該協作執行緒陣列程式亦可包括一計算指令,用以計算該共享記憶體內所要讀取資料的位址,其中該位址為執行緒ID的函數。利用定義合適的功能及提供同步技術,資料可利用CAT的一執行緒寫入共享記憶體內的一已知位置,並且以可預測方式利用相同協作執行緒陣列的不同執行緒從該位置當中讀取。因此,支援在執行緒之間共享的任何資料圖案,並且一協作執行緒陣列內的任何執行緒都可與相同協作執行緒陣列內任何其他執行緒共享資料。在協作執行緒陣列執行緒之間共享的資料內容(若有的話)由該協作執行緒陣列程式決定;如此,吾人了解,在使用協作執行緒陣列的特定應用當中,根據該協作執行緒陣列程式,協作執行緒陣列的執行緒彼此之間不會確實共享資料,並且在本說明書中可同時使用「協作執行緒陣列」與「執行緒陣列」等詞。
第三C圖為根據本發明的一具體實施例之第三B圖中串流多重處理器310的方塊圖。串流多重處理器310包括一指令L1快取370,其構成透過L1.5快取335從記憶體接收指令與常數。一線程排程器與指令單元312接收來自指令L1快取370的指令與常數,且根據該等指令與常數以控制局部暫存檔304及串流多重處理器310功能單元。串流多重處理器310功能單元包括N個執行(執行或處理)單元302及P個載入儲存單元(LSU,load-store unit)303。
串流多重處理器310提供具備不同存取階層的晶片(內部)資料儲存。特殊暫存器(未顯示)可由載入儲存單元303讀取但無法寫入,且可用於儲存定義每一直執行緒「位置」的參數。在一具體實施例中,特殊暫存器包括每一執行緒(或串流多重處理器310內每一執行單元302)的一暫存器,其儲存一執行緒ID;每一執行緒ID暫存器都只能由該執行單元302之個別一者存取。特殊暫存器亦可包括額外暫存器,可由該相同網格或佇 列(或由所有載入儲存單元303)內所有執行緒讀取,其儲存一協作執行緒陣列識別碼、該協作執行緒陣列維度、該協作執行緒陣列所屬網格的維度(或若一佇列的佇列位置)、及該協作執行緒陣列所屬的該網格或佇列的識別碼。屬於一網格的協作執行緒陣列具有隱含的x、y、z參數,指出該網格內個別協作執行緒陣列的位置。在初始化期間會寫入特殊暫存器,以回應透過前端212從裝置驅動程式103接收的命令,且在一處理任務期間不會改變。前端212排程每一處理任務,用於當成一網格或佇列來執行。每一協作執行緒陣列都關聯於一特定網格或佇列,用以同時執行一或多個任務。此外,單一通用處理叢集208可同時執行多個任務。
一參數記憶體(未顯示)儲存執行時間參數(常數),其可由相同協作執行緒陣列(或任何載入儲存單元303)內的任何執行緒讀取,但無法寫入。在一具體實施例中,裝置驅動程式103提供參數該參數記憶體,然後使串流多重處理器310開始執行使用這些參數的任務。任何協作執行緒陣列內的任何執行緒(或串流多重處理器310內的任何執行單元)都可透過一記憶體介面214存取全域記憶體。全域記憶體的一部分可儲存在L1快取320內。
每一執行緒都將局部暫存檔304當作暫存空間使用;每一暫存器都分配給一執行緒專用,且局部暫存檔304之任一者內的資料只能由配置該暫存器的該執行緒存取。局部暫存檔304可實施為實體上或邏輯上分成P個通路的暫存檔,每一通路都具有某些數量的記錄(在此,每一記錄都可儲存例如32位元字)。一通路指派給該N個執行單元302及P個載入儲存單元載入儲存單元303之每一者,且不同通路內的對應記錄可填入執行相同程式的不同執行緒之資料,以幫助單一指令、多重資料執行。通路的不同部分可配置給該G個同時執行緒群組中的不同執行緒,如此,局部暫存檔304內的一已知記錄只能由特定執行緒存取。在一具體實施例中,局部暫存檔304內的特定記錄保留用於儲存執行緒識別碼,以實施該等特殊暫存器之一者。此外,一統一L1快取320儲存N個執行單元302及P個載入儲存單元(LSU)303之每一通路的統一或常數值。
共享記憶體306可由單一協作執行緒陣列內的執行緒存 取;換言之,共享記憶體306內的任何位置都可由相同協作執行緒陣列內的任何執行緒(或串流多重處理器310內的任何處理引擎)來存取。共享記憶體306可實施為具有互連的一共享暫存檔或共享晶片上記憶體,允許任何處理引擎從該共享記憶體內的任何位置讀取或寫入其位置。在其他具體實施例中,共享狀態空間可映射至晶片外記憶體的每一協作執行緒陣列區域,並且快取在L1快取320內。該參數記憶體可實施為該相同共享暫存檔或實施共享記憶體306的共享快取記憶體內的一指定區段,或實施為載入儲存單元303具有唯讀存取的一個別共享暫存檔或晶片快取記憶體。在一具體實施例中,實施該參數記憶體的區域亦用於儲存該協作執行緒陣列ID和任務ID、及協作執行緒陣列和網格尺寸或佇列位置,用以實施該特殊暫存器的位置。串流多重處理器310內的每一載入儲存單元303都耦合至統一位址映射單元352,以將提供用於載入與儲存於統一記憶體空間內所指定指令之一位址轉換成每一個別記憶體空間內的一位址。因此,利用指定該統一記憶體空間內一位址,一指令可用來存取任何該局部、共享或全域記憶體空間。
每一串流多重處理器310內的L1快取320都可用於快取私用每一執行緒局部資料,並且亦快取每一應用程式全域資料。在某些具體實施例中,該每一協作執行緒陣列共享資料可快取在L1快取320內。載入儲存單元303可透過一記憶體與快取互連380耦合至共享記憶體306及L1快取320。
圖形管線架構
第四圖為根據本發明之一具體實施例之可構成第二圖的平行處理單元202之一或多個來實施之一圖形處理管線400的概念圖。例如:串流多重處理器310之一者可構成執行一頂點處理單元415、一幾何處理單元425、及一片段處理單元460之一或多者的功能。資料組合器410、基元組合器420、光柵器455、及光柵操作單元465的功能亦可由通用處理叢集208與一對應分割單元215內的其他處理引擎執行。或者,可使用一或多個功能的專屬處理單元實施圖形處理管線400。
資料組合器410處理單元匯集高階表面、基元等等的頂點資 料,並且將該頂點資料(包括該等頂點屬性)輸出至頂點處理單元415。頂點處理單元415為一可編程執行單元,其構成執行頂點著色器程式,依照該頂點著色器程式所規定,照明及轉換頂點資料。例如:頂點處理單元415可編程將該頂點資料從一物件型座標表示(物件空間)轉換成一替代型座標系統,例如世界空間或標準化裝置座標(NDC,Normalized Device Coordinate)空間。頂點處理單元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或由中央處理單元102或平行處理子系統112進一步處理。在本發明之某些具體實施例中,光柵操作單元465構成壓縮寫入記憶體的z或顏色資料;及解壓縮從記憶體讀取的z或顏色資料。
為了使用圖形處理管線400達成特定視覺效果,某些管線階段(例如,幾何處理單元425)構成利用產生及傳輸一或多個狀態參數至這些下游管線階段,以設定下游管線階段的著色狀態。這種技術進一步描述如下。
在上游著色內設定下游著色狀態
如上面結合第四圖的描述,幾何處理單元425構成執行幾何著色器程式。例如:這種幾何著色器程式可利用將該等圖形基元分成一或多個新圖形基元,並且計算用於將該新圖形元件光柵化的參數或屬性(例如平面等式係數),以轉換圖形基元。此外,該幾何著色亦可決定有關圖形處理管線400的下游階段著色狀態的一或多個狀態屬性。如以下結合第五圖至第十圖的進一步描述,這些狀態屬性可附加至有關該等圖形基元的該等頂點之屬性。該等狀態參數可透過圖形處理管線400的下游階段處理,達成有關該等圖形基元的一或多種視覺效果。該幾何處理單元425傳輸的每一圖形基元的該等狀態參數可加以決定。
第五圖例示根據本發明之一具體實施例,第四圖的圖形處理管線400所處理之一頂點鍊500。如圖所示,頂點鍊500包括複數個頂點510。
每一頂點510可識別3D空間內的一位置,其中定義幾何基元之一部分。頂點510包括許多屬性,如以下進一步描述,其包括(但不受限於):該空間內的3D位置、有關該頂點的一圖形基元之顏色、及該幾何基元的該材料屬性(例如該圖形基元是使用光澤塗面或暗光塗面來著色)。
一般而言,幾何基元是以稱為頂點鍊500的一系列頂點來傳輸,其中每一頂點510都包括許多屬性,如以下進一步描述。當處理一頂點鍊500時,幾何處理單元425利用將二或多個頂點510組成群組在一起,形成許多幾何基元。
在一範例中,頂點鍊500可定義一多段線,其中一多段線包括連接一起的多個線段。在這種情況下,每一線段都由一對頂點510定義。頂點510(0)與頂點510(1)定義該第一線段;頂點510(1)與頂點510(2)定義該第二線段,且頂點510(2)與頂點510(3)定義該第三線段,以此類推。因為每一線段都連接下一線段,所以一線段的結尾頂點510都與下一線段的第一頂點510共用。如此,第二線段連接第一線段的頂點510(1);第三線段連接至第二線段的頂點510(2),以此類推。共用的頂點通常轉折一次。
在一具體實施例中,整個線段內共用的一線段之特定屬性可使用定義該線段的兩頂點510之一者轉折。這種屬性可包括線段的顏色,用於顏色在端點之間不改變的線段。這些屬性可使用在線段的第一頂點上轉折,此點稱為轉折頂點。如此,頂點510(0)可為第一線段的轉折頂點;頂點510(1)可為第二線段的轉折頂點,以此類推。
在另一具體實施例中,一頂點鍊500可包括二或多個脫離的多段線,其中一特定線段不連接至下一線段。在這種情況下,頂點鍊500包括一用於定義一斷點之參數。例如:該頂點鍊可包括一介於頂點510(3)與頂點510(4)之間的斷點。在這種情況下,頂點510(3)與510(4)之間並無線段連接。而是,頂點510(3)定義一多段線的末端,且頂點510(4)定義另一多段線的開頭。
在另一範例中,頂點鍊500定義已連接三角形鍊,其中每個三角形都沿著三邊之一者連接下一個三角形。在這種情況下,每個三角形都經由三個頂點510定義。頂點510(0)、510(1)和510(2)定義該第一個三角形;頂點510(1)、510(2)和510(3)定義該第二個三角形,及頂點510(2)、510(3)和510(4)定義該第三個三角形,以此類推。因為每個三角形都連接下一個三角形,所以三角形的最後兩頂點510都與下一個三角形的最初兩個頂點510共用。如此,第二個三角形連接第一個三角形的頂點510(1)和510(2), 第三個三角形連接第二個三角形的頂點510(2)和510(3),以此類推。共用的頂點通常轉折一次。
在一具體實施例中,整個三角形內共用的三角形之特定屬性只可使用定義該三角形的三個頂點510之一者來轉折。這種屬性可包括一平面著色三角形的顏色。這些屬性可在三角形的第一頂點上轉折,該頂點稱為轉折頂點。如此,頂點510(0)可為第一個三角形的轉折頂點、頂點510(1)可為第二個三角形的轉折頂點,以此類推。
在仍舊另一具體實施例中,一頂點鍊500可包括二或多個脫離的三角形鍊,其中一特定三角形不連接至下一個三角形。在這種情況下,頂點鍊500包括定義一斷點的參數。例如:該頂點鍊可包括介於頂點510(3)與頂點510(4)之間的一斷點。在這種情況下,頂點510(3)定義一個三角形鍊的末端,且頂點510(4)定義另一個三角形鍊的開頭。
第六圖例示根據本發明之一具體實施例,指定有關第五圖中該等頂點之一者的該頂點資料600之資料結構。該資料結構包括頂點屬性610、一般屬性620、及狀態屬性630。
頂點屬性610是在一已知圖形基元逐一頂點通改變的屬性,這種屬性包括(但不受限於):3D空間內頂點的位置、及該頂點的顏色,用於顏色改變的圖形基元。頂點屬性係根據幾何處理單元425所接收的圖形基元來決定。
一般屬性620是在一已知圖形基元中不會逐一頂點改變的屬性,這種屬性包括(但不受限於):平面著色圖形基元的顏色、圖形基元的材料屬性、及在頂點鍊內的斷點是否發生在的目前頂點。一般屬性只包括針對已知圖形基元中的一頂點,典型為轉折頂點,如上面所述。一般屬性係根據幾何處理單元425所接收的圖形基元來決定。
狀態屬性630是改變在圖形處理管線400中位於幾何處理單元425下游之一或多個功能單元的狀態的屬性。如以下進一步描述,這屬性包括(但不受限於):運用動態模糊著色一已知圖形基元之多樣本遮罩、消鋸齒多段線內之一線段的厚度、及使用保留光柵化著色之三角形的矩形區域。狀態屬性630可針對一已知圖形基元而變化,且只包括於該已知圖形 基元之一頂點,典型為轉折頂點,如上面所述。幾何處理單元425可根據目前執行的該圖形著色器程式來決定狀態屬性。如此,幾何處理單元425將狀態屬性***頂點資料600內,當成頂點鍊500之一部分。
在一具體實施例中,該狀態屬性可映射至狀態束。一應用程式可指定在該應用程式執行期間受影響的一或多個狀態屬性。裝置驅動程式103可將這些受影響狀態屬性之每一者映射至一對應狀態屬性編號,其中,該狀態屬性編號識別狀態屬性630內該受影響狀態屬性之位置。裝置驅動程式103亦可通訊一映射表,其中該映射表使狀態屬性編號與對應的狀態束識別碼(狀態束ID)產生關聯性。每一狀態束ID都對應一狀態束內該受影響狀態屬性的位置。這種狀態束可位於幾何處理單元425下游的該圖形處理管線400中的一或多個單元之內。該狀態束可定義狀態屬性集,其可由圖形處理管線400內的一或多個下游單元存取。
在此具體實施例中,該應用程式可指定一或多個受影響的狀態屬性。在幾何著色器程式執行期間,幾何處理單元425可在每一基元基礎上改變該等受影響的狀態屬性。幾何處理單元425可將該等受影響狀態屬性之值***狀態屬性630內的位置,其中,狀態屬性630內的位置則由對應的狀態屬性編號來決定。幾何處理單元425在傳輸頂點資料600時,傳輸狀態屬性630,包括該等受影響的狀態變數。幾何處理單元425的下游單元可讀取狀態屬性630之內受影響狀態屬性之值。該下游單元然後使每一受影響狀態變數的該狀態屬性編號交互參照一對應的狀態束ID。該下游單元然後將該受影響狀態屬性的新值(如已接收狀態屬性630內的指定)寫入由該狀態束ID所指定位置上的該狀態束內。一旦該下游單元已寫入該等受影響狀態屬性的新值,該下游單元則根據該狀態束內的該等已更新狀態屬性來處理該幾何基元。
第七A圖和第七B圖例示根據本發明之一具體實施例,使用一保留光柵方式著色的三角形。如第七A圖內所示,使用保留光柵方式著色的三角形710首先全方位擴展,以涵蓋三角形720所示的表面區域。隨著保留光柵化,若三角形710之任何部分與螢幕空間內的每一像素交叉,則每一像素視為被覆蓋。在三角形710擴展至三角形720之後,則套用矩 形區域730來裁切三角形720。矩形區域730為螢幕空間內矩形的邊界框,指定光柵化前已擴展三角形720的裁切區域。矩形區域730由幾何處理單元425決定,並且***著色三角形720的狀態屬性630內。
如第七B圖內所示,多邊形760呈現套用矩形區域730之後的三角形720。多邊形760呈現矩形區域730內的三角形720之部份,其藉由圖形處理管線400內的隨後狀態所著色。位於矩形區域730之外的三角形720之部分並未由圖形處理管線400內的隨後狀態所著色。例如:若幾何處理單元425無法將矩形區域730套用至三角形720,則該中央處理單元應利用著色每一來源三角形(如三角形770(0)-770(3)所示)的多個三角形以實施保留光柵化。
第八A圖和第八B圖例示根據本發明之一具體實施例,使用可變寬度消鋸齒線著色的一多段線800。如第八A圖所示,多段線800包括多個線段810(0)-810(4)。為了達到真實的結果,使用可變寬度著色特定消鋸齒線,通常依照深度而變。也就是,越靠近顯示裝置螢幕表面的多段線800部分就會著色較大厚度,而越遠離顯示裝置螢幕表面的多段線800部分就會著色較薄厚度。著色特定物件,例如頭髮或皮毛時,這種方式產生更真實的外觀。
如第八B圖所示,可變厚度套用至多段線800,產生多段線850。在一範例中,幾何處理單元425可判斷線段810(0)是否為最靠近螢幕表面的線段。因此,幾何處理單元425可以針對對應消鋸齒線段860(0)指定一相當大厚度。幾何處理單元425可判斷每一連續線段810(1)-810(4)是否逐漸遠離螢幕表面。因此,幾何處理單元425可以針對對應消鋸齒線段860(1)-860(4),指定連續較小的厚度。幾何處理單元425可以針對對應每一線段810的該轉折頂點,***厚度值當成是狀態參數630。
第九圖例示根據本發明之一具體實施例之具有每個圖形基元深度限界的光源。如所示,光源910通過具有最大深度930(0)及最小深度930(1)的限界球920之評估。一3D場景內許多圖形基元的頂點都針對最大深度930(0)及最小深度930(1)進行測試,以判斷是否已經著色該等圖形基元。在某些具體實施例中,該等圖形基元是與光限界體積有關,其定義光 源910所照明的部分3D場景。在這種情況下,利用設定要比最大深度930(0)和最小深度930(1)所賦予細密深度限界以改善效能。每一圖形基元都可針對最小或最大深度之間較小範圍所呈現的較細解析深度進行測試。例如:比較靠近該螢幕表面的一圖形基元可為透過930(1)所表示的最小深度及透過940(0)表示的最大深度之深度限界檢測。稍微遠離該螢幕表面的一圖形基元可為透過使用940(0)所表示的最小深度及使用940(1)所表示的最大深度之深度限界檢測。甚至更稍遠離該螢幕表面的一圖形基元應通過用940(1)所表示的最小深度及用940(2)表示的最大深度之深度限界檢測,以此類推。該幾何處理單元應利用***這些深度限界當成用於對應每一圖形基元的該轉折頂點之狀態參數630,指定每一圖形基元的該最小深度與最大深度。
第十圖例示根據本發明之一具體實施例,使用動態模糊著色的三角形。如所示,使用動態模糊時,幾何處理單元425沿著一動作路徑,經過時間(t)之後將三角形1010(0)擴展成多個三角形1010(0)-1010(3)。每個三角形1010都包括一多樣本遮罩(未顯示),指定哪些三角形1010的像素要由一下游像素著色器程式所寫入。利用改變每個三角形1010的該多樣本遮罩,該幾何處理引擎可有效實施一混色操作以將三角形1010(0)-1010(3)混色。這種混色操作建立的動態模糊的效果。為了實施動作混色,該幾何處理單元產生每個接收三角形1010(0)的多個三角形1010(0)-1010(3)。該等多個三角形1010(0)-1010(3)之每一者都具有不同的頂點位置,如頂點屬性610內所指定;及不同的多樣本遮罩,如該轉折頂點的狀態屬性630內之指定。
該混色操作說明在動態模糊期間,某些像素遭到覆蓋的時間要比其他像素短。如所示,像素1020(0)只被三角形1010(0)覆蓋,但是不被三角形1010(1)-1010(3)覆蓋。像素1010(1)被三角形1020(0)和1020(1)覆蓋、像素1010(2)被三角形1020(0)-1020(2)覆蓋,且像素1010(3)被所有四個三角形1020(0)-1020(3)覆蓋。利用改變每個三角形1010的該多樣本遮罩,將依照三角形1010隨時間的涵蓋率,用更多或更少透明度以著色許多像素1020。
吾人將了解,本說明書中顯示的該架構僅為例示,所以可進 行改變與修改。在一範例中,本說明書內描述的該技術可用來關聯於執行一幾何著色器程式的幾何處理單元425以外之裝置,包括(但不受限於)有關頂點著色器程式、曲面細分著色器程式、及像素著色器程式的裝置。在另一範例中,狀態屬性可指定用於某些圖形物件內的某些圖形基元,但不是全部。根據應用,狀態屬性630可指定用於一圖形物件的許多部分,包括(但不受限於)一圖形物件內的每一第五個圖形基元、一圖形物件的該第一部分、或一圖形物件的最後部分。
在仍舊另一具體實施例中,幾何處理單元425可停止***每一圖形基元的狀態屬性630,並且復原該中央處理單元指定給該圖形物件的該等預設狀態參數。在仍舊另一範例中,自從最後傳輸之後,當有一或多個狀態參數630已經變更時,幾何處理單元425應傳輸狀態參數630。若自從最後傳輸之後沒有狀態參數630變更,則幾何處理單元425不傳送任何狀態參數630。在仍舊另一範例中,幾何處理單元425並不會傳送狀態參數630當成轉折頂點屬性之一部分。在這種情況下,幾何處理單元425應使用任何技術可行方式,傳輸狀態參數630至圖形處理管線400的下游階段。
第十一圖揭示根據本發明之一具體實施例,用於處理在一圖形處理管線的一階段內的圖形物件之方法步驟的流程圖。雖然已經結合第一圖至第六圖的系統來描述該等方法步驟,不過精通技術人士將了解,構成以任何順序來執行該等方法步驟的任何系統都在本發明範疇內。
如圖所示,該方法1100是從步驟1102開始,在此,幾何處理單元425接收一圖形基元以進行處理。在步驟1104,該幾何處理單元425根據許多因素決定是否變更一或多個狀態參數,這些因素包括(但不受限於)該幾何著色器程式、所要產生的該特定效果、及該幾何基元。在步驟1106,幾何處理單元425傳輸該頂點位置至該圖形管線內的隨後階段。在某些具體實施例中,幾何處理單元425亦可傳輸其他每一頂點屬性。
在步驟1108,幾何處理單元425判斷目前的頂點是否為一相關幾何基元的轉折頂點,例如一線段或三角形。若該頂點為一轉折頂點,則該方法前往步驟1110,在此,幾何處理單元425傳輸該相關圖形基元的一般屬性。例如:幾何處理單元425可傳輸不會隨該圖形基元改變的許多 屬性,包括(但不受限於)一平面著色多邊形的顏色、一多邊形的材料屬性、及該目前頂點上是否有在頂點鍊內的斷點。在步驟1112,幾何處理單元425傳輸狀態屬性。該等狀態屬性為許多屬性,例如結合第七圖至第十圖內所描述的屬性,其可針對一圖形物件內的每一基元而變化。這些狀態屬性包括(但不受限於):一多段線內之一線段的寬度、使用保留光柵化著色的三角形之該矩形區域,及運用動態模糊著色的三角形之多樣本遮罩。
在步驟1116,幾何處理單元425判斷是否有額外頂點要傳輸給該目前的幾何基元。若無額外頂點要傳輸,則該方法前往步驟1118,在此,幾何處理單元425判斷是否有額外幾何基元要傳輸。若無額外幾何基元要傳輸,則終止該方法1100。
不過,在步驟1118,若有額外幾何基元要傳輸,該方法1100則前往步驟1102,如上述。在步驟1116,若有額外頂點要傳輸給該目前的幾何基元,該方法1100則前往步驟1104,如上述。
請即重新參考步驟1108,若該目前的頂點並非一轉折頂點,該方法1100前往步驟1114,在此,幾何處理單元425傳輸虛擬屬性,而不是傳輸該等一般屬性和該等狀態屬性。該方法1100則前往步驟1116,如上述。
總結來說,幾何處理單元425從一圖形管線接收圖形基元,且幾何處理單元425執行的該幾何著色器程式構成以每一圖形基元為基礎,修改下游固定功能單元的一或多個狀態參數。該幾何著色器程式可傳輸該已修改狀態參數,當成有關由幾何處理單元425所傳輸許多片段之頂點屬性。有關一特定圖形基元的該等狀態參數可當成有關該圖形基元的該轉折頂點之一部分來傳輸。幾何處理單元425的固定功能下游單元接收該等狀態參數,當成每一已接收頂點之一部分。該等固定功能單元讀取該等已接收的狀態屬性,並且將該等狀態屬性轉換成狀態束,用於控制該等固定功能單元的一或多個態樣。
本發明之一優點為允許在包括可編程與固定式功能元件兩者的一圖形管線內,彈性並有效執行圖形效果。因此,程式設計師可撰寫幾何著色器程式,建立從本說明書所述每一基元狀態參數變更當中獲致好 處的效果,且該中央處理單元不用背負將圖形物件分成較小物件或圖形基元,以達成這些相同效果的負擔,如先前技術方式所需。
在此已經參考特定具體實施例說明本發明。不過精通此技術的人士將了解,在不悖離申請專利範圍內公佈之本發明廣泛精神及領域下,可進行許多修改與變更。因此前述說明與圖式僅供參考而不做限制。
因此,本發明之具體實施例的範疇公布於以下的申請專利範圍之內。

Claims (10)

  1. 一種用於處理在一圖形處理管線的一第一階段內的圖形物件之方法,該方法包括:接收有關一圖形物件的一第一圖形基元;藉由該圖形處理管線的一第一階段,在當該第一圖形基元被該圖形處理管線的第二階段處理時,產生設定該圖形處理管線的第二階段的一著色狀態之一狀態參數的一新值;及傳輸用於包含在該第一圖形基元內的一頂點的位置資訊;決定該頂點是否為一轉折頂點;以及如果該頂點為一轉折頂點,則傳輸用於該狀態參數的該新值至該圖形處理管線的該第二階段;或如果該頂點非一轉折頂點,則傳輸一或多個一般屬性以代替用於該狀態參數的該新值至該圖形處理管線的該第二階段。
  2. 如申請專利範圍第1項之方法,其中該圖形處理管線的第一階段包括一幾何處理單元,其構成執行一幾何著色器程式。
  3. 如申請專利範圍第1項之方法,更包括:接收有關該圖形物件的一第二圖形基元;決定複數個屬性,其對應有關該第二圖形基元的一第二頂點;根據該視覺效果決定該狀態屬性的一第二值;及經由包含於對應關聯於該第二圖形基元及一或多狀態參數的該第二頂點的該複數個屬性的一第二資料結構傳輸用於該狀態參數的該第二值至該圖形處理管線的該第二階段。
  4. 如申請專利範圍第1項之方法,更包括將該狀態參數復原成一處理器所指定的一預設值。
  5. 如申請專利範圍第1項之方法,其中該視覺效果包括一保留光柵化效果,且該狀態參數包括有關該第一圖形基元的一邊界框之大小與位置。
  6. 如申請專利範圍第1項之方法,其中該視覺效果包括一可變寬度消鋸齒多段線,且該狀態參數包括有關該第一圖形基元的一厚度。
  7. 如申請專利範圍第1項之方法,其中該視覺效果包括一細密深度限界 檢測,且該狀態參數包括有關該第一圖形基元的一最小深度值及一最大深度值。
  8. 如申請專利範圍第1項之方法,其中該視覺效果包括一動態模糊效果,且該狀態參數包括有關該第一圖形基元的一多樣本遮罩。
  9. 如申請專利範圍第1項之方法,其中傳輸該第一值至該圖形處理管線的該第二階段包括:附加該第一值至一資料結構,該資料結構包括該等複數個參數;及傳輸該資料結構至該圖形處理管線的該第二階段。
  10. 一種用於處理圖形物件之系統,包括:一幾何處理器;一記憶體,其耦合至該幾何處理器,其中該記憶體包括一應用程式,該應用程式包括指令,該等指令由該幾何處理器執行該等指令時,導致該幾何處理器執行以下步驟:接收有關一圖形物件的一第一圖形基元;藉由該圖形處理管線的一第一階段,在當該第一圖形基元被該圖形處理管線的第二階段處理時,產生設定該圖形處理管線的第二階段的一著色狀態之一或多個狀態參數的新值;及傳輸用於包含在該第一圖形基元內的一頂點的位置資訊;決定該頂點是否為一轉折頂點;以及如果該頂點為一轉折頂點,則傳輸用於該狀態參數的該新值至該圖形處理管線的該第二階段;或如果該頂點非一轉折頂點,則傳輸一或多個一般屬性以代替用於該狀態參數的該新值至該圖形處理管線的該第二階段。
TW102140105A 2012-11-07 2013-11-05 在上游著色器內設定下游著色狀態 TWI645371B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/671,456 2012-11-07
US13/671,456 US9830741B2 (en) 2012-11-07 2012-11-07 Setting downstream render state in an upstream shader

Publications (2)

Publication Number Publication Date
TW201428676A TW201428676A (zh) 2014-07-16
TWI645371B true TWI645371B (zh) 2018-12-21

Family

ID=50489878

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102140105A TWI645371B (zh) 2012-11-07 2013-11-05 在上游著色器內設定下游著色狀態

Country Status (4)

Country Link
US (1) US9830741B2 (zh)
CN (1) CN103810743A (zh)
DE (1) DE102013018445A1 (zh)
TW (1) TWI645371B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9978171B2 (en) 2014-07-29 2018-05-22 Nvidia Corporation Control of a sample mask from a fragment shader program
US10346942B2 (en) * 2015-02-02 2019-07-09 Electronic Arts Inc. Method for event detection in real-time graphic applications
GB2540382B (en) * 2015-07-15 2020-03-04 Advanced Risc Mach Ltd Data processing systems
US10482577B2 (en) * 2016-07-27 2019-11-19 Adobe Inc. Dynamic spread anti-aliasing
US10926176B1 (en) * 2017-03-28 2021-02-23 Kabam, Inc. Physics engine using depth information
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
US10755383B2 (en) * 2017-09-29 2020-08-25 Apple Inc. Multi-space rendering with configurable transformation parameters
GB2570304B (en) 2018-01-18 2022-06-01 Imagination Tech Ltd Topology preservation in a graphics pipeline
US10740966B2 (en) 2018-05-14 2020-08-11 Microsoft Technology Licensing, Llc Fake thickness on a two-dimensional object
US11170555B2 (en) 2019-11-27 2021-11-09 Arm Limited Graphics processing systems
US11210847B2 (en) 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
US11216993B2 (en) 2019-11-27 2022-01-04 Arm Limited Graphics processing systems
US11210821B2 (en) * 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
CN115994967A (zh) * 2021-10-18 2023-04-21 脸萌有限公司 特效处理方法及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090231349A1 (en) * 2008-03-12 2009-09-17 Eric Oliver Mejdrich Rolling Context Data Structure for Maintaining State Data in a Multithreaded Image Processing Pipeline
US20110242119A1 (en) * 2010-04-05 2011-10-06 Bolz Jeffrey A GPU Work Creation and Stateless Graphics in OPENGL

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6956576B1 (en) * 2000-05-16 2005-10-18 Sun Microsystems, Inc. Graphics system using sample masks for motion blur, depth of field, and transparency
US7184040B1 (en) * 2003-11-21 2007-02-27 Nvidia Corporation Early stencil test rejection
US7499051B1 (en) 2005-04-29 2009-03-03 Adobe Systems Incorporated GPU assisted 3D compositing
US8111260B2 (en) * 2006-06-28 2012-02-07 Microsoft Corporation Fast reconfiguration of graphics pipeline state
US20080266286A1 (en) 2007-04-25 2008-10-30 Nvidia Corporation Generation of a particle system using a geometry shader
US8368705B2 (en) 2008-07-16 2013-02-05 Google Inc. Web-based graphics rendering system
US8773448B2 (en) * 2010-04-09 2014-07-08 Intel Corporation List texture
CN102157012B (zh) * 2011-03-23 2012-11-28 深圳超多维光电子有限公司 对场景进行立体渲染的方法、图形图像处理装置及设备、***
CN102147722B (zh) * 2011-04-08 2016-01-20 深圳中微电科技有限公司 实现中央处理器和图形处理器功能的多线程处理器及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090231349A1 (en) * 2008-03-12 2009-09-17 Eric Oliver Mejdrich Rolling Context Data Structure for Maintaining State Data in a Multithreaded Image Processing Pipeline
US20110242119A1 (en) * 2010-04-05 2011-10-06 Bolz Jeffrey A GPU Work Creation and Stateless Graphics in OPENGL

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
"COU Programming Guide, GeFprce 8 and 9 Series", NVIDIA^&rn^Corporation, December 19, 2008.^&rn^^&rn^
John Hasselgren, Tomas Akenine-Moller, Lennart Ohlsson;^&rn^"CPU Gems 2 Chapter42. Conservative Rasterization";^&rn^Addison Wesley, April 2005, Pearson Education, Inc.
Richard S. Wright, Jr., Benjamin Lipchak, Nicholas^&rn^Haemel; "Open GL Super Bible, 4th Edition,^&rn^Comprehensive Tutorial and Reference"; Addison Wesley,^&rn^2007, Pearson Education, Inc.
Richard S. Wright, Jr., Benjamin Lipchak, Nicholas^&rn^Haemel; "Open GL Super Bible, 4th Edition,^&rn^Comprehensive Tutorial and Reference"; Addison Wesley,^&rn^2007, Pearson Education, Inc. John Hasselgren, Tomas Akenine-Moller, Lennart Ohlsson;^&rn^"CPU Gems 2 Chapter42. Conservative Rasterization";^&rn^Addison Wesley, April 2005, Pearson Education, Inc. Robert Eckstein, "Learning Java 2D, Part I"; June 21,2005, Oracle Technology Network. "COU Programming Guide, GeFprce 8 and 9 Series", NVIDIA^&rn^Corporation, December 19, 2008.^&rn^^&rn^ *
Robert Eckstein, "Learning Java 2D, Part I"; June 21,2005, Oracle Technology Network.

Also Published As

Publication number Publication date
US20140125669A1 (en) 2014-05-08
TW201428676A (zh) 2014-07-16
US9830741B2 (en) 2017-11-28
DE102013018445A1 (de) 2014-05-08
CN103810743A (zh) 2014-05-21

Similar Documents

Publication Publication Date Title
TWI645371B (zh) 在上游著色器內設定下游著色狀態
US8730253B2 (en) Decomposing cubic Bezier segments for tessellation-free stencil filling
US9495781B2 (en) Early sample evaluation during coarse rasterization
US9024946B2 (en) Tessellation shader inter-thread coordination
TWI525584B (zh) 多執行緒處理單元內之可程式繫結
JP5303787B2 (ja) 単一パステセレーション
TWI559729B (zh) 用於低功率圖形著色的像素著色器省略
US9953455B2 (en) Handling post-Z coverage data in raster operations
US9922457B2 (en) Computing tessellation coordinates using dedicated hardware
TW201432609A (zh) 已分配的拼貼快取
CN107392836B (zh) 使用图形处理管线实现的立体多投影
US9269179B2 (en) System, method, and computer program product for generating primitive specific attributes
TW201439971A (zh) 路徑著色的最佳化三角形拓撲
CN113450445A (zh) 临时密实渲染的自适应像素采样顺序
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
US8947444B1 (en) Distributed vertex attribute fetch
US9311733B2 (en) Efficient round point rasterization