TWI592902B - 來自片段著色器程式之樣本遮罩的控制 - Google Patents

來自片段著色器程式之樣本遮罩的控制 Download PDF

Info

Publication number
TWI592902B
TWI592902B TW104124570A TW104124570A TWI592902B TW I592902 B TWI592902 B TW I592902B TW 104124570 A TW104124570 A TW 104124570A TW 104124570 A TW104124570 A TW 104124570A TW I592902 B TWI592902 B TW I592902B
Authority
TW
Taiwan
Prior art keywords
sample
segment
mask
fragment shader
graphics
Prior art date
Application number
TW104124570A
Other languages
English (en)
Other versions
TW201618041A (zh
Inventor
傑佛瑞 艾倫 博爾茲
艾瑞克 布萊恩 林
瑞 曼紐爾 巴斯托斯
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 TW201618041A publication Critical patent/TW201618041A/zh
Application granted granted Critical
Publication of TWI592902B publication Critical patent/TWI592902B/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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General 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)
  • Software Systems (AREA)

Description

來自片段著色器程式之樣本遮罩的控制
本發明關於圖形處理,尤其是關於在圖元之光柵化期間產生之樣本遮罩的控制。
如遊戲及辦公室生產力軟體的許多應用係配置以產生用於顯示在電腦系統上的圖形。圖形可能包括二維圖形或三維圖形。圖形可能藉由執行在傳統中央處理單元(CPU)上的軟體產生。替代地,圖形可能藉由實作在專用協處理器單元(如圖形處理單元(GPU))中的硬體、或藉由硬體或被CPU及/或GPU執行之軟體之一些組合產生。為了使編程上述應用程式更容易,產生特殊圖形應用軟體編程介面(API)(尤其是DirectX及OpenGL)以創造產生圖形之功能性與用以實作上述功能性之硬體之間的抽象概念。
API可能具體指定抽像圖形算繪管線,其定義算繪圖形中的不同步驟。例如,OpenGL API所指定的圖形算繪管線可能包括頂點著色階段、幾何著色階段、光柵化階段、及片段著色階段。圖形算繪管線接收由應用程式指定的圖形圖元並處理這些圖元通過圖形處理管線的每個階段以產生用於顯示在顯示裝置上的像素資料。光柵化階段描述將如三角形的圖元轉換成一些片段用於被片段著色階段處理的操作。換言之,被複數個頂點指定的圖元係與對特定螢幕空間指定之像素(或像素的子樣本)相交,且關聯於圖元的屬性值係跨用於每個像素(或像素的子樣本)的圖元地內插。
當實作反鋸齒技術時,可能也在光柵化期間產生指示像素之哪些子樣本被圖元覆蓋的覆蓋資訊。典型中,此覆蓋資訊被指定為遮罩。遮罩可能對應於圖元的特定片段且遮罩中的每個元素可能對應於像素的特定子樣本。例如,若特定像素包括16個子樣本,則遮罩可能包括指示此像素中的每個子樣本是否被圖元覆蓋的16個位元。某些演算法可能希望改變 關聯於已知片段的覆蓋資訊。然而,傳統硬體可能不配置以任意地更新在光柵化階段期間產生的覆蓋資訊。因此,有需要處理這些問題及/或關聯於先前技術的其他問題。
說明一種用於控制來自片段著色器的樣本遮罩的方法、系統、及電腦程式產品。方法包括產生用於至少部分被圖元覆蓋之每個像素之一片段及判定用於對應於圖元之每個片段之覆蓋資訊的步驟。接著,針對每個片段,方法包括藉由一片段著色器產生一樣本遮罩、以樣本遮罩替換用於片段之覆蓋資訊、及基於樣本遮罩將由片段著色器產生的結果寫至記憶體中的步驟。方法可能實作在配置以至少部分實作一圖形處理管線的一平行處理單元上。
100‧‧‧方法
110-150‧‧‧步驟
200‧‧‧平行處理單元
202‧‧‧系統匯流排
204‧‧‧記憶體裝置
205‧‧‧輸入/輸出單元
210‧‧‧主介面單元
215‧‧‧前端單元
220‧‧‧排程單元
225‧‧‧工作分配單元
230‧‧‧集線器
250‧‧‧通用處理叢集
270‧‧‧交叉開關
280‧‧‧分割單元
310‧‧‧管線管理器
315‧‧‧預光柵操作單元
320‧‧‧材質處理叢集
325‧‧‧光柵引擎
330‧‧‧M管控制器
335‧‧‧圖元引擎
340‧‧‧可編程串流多處理器
345‧‧‧材質單元
350‧‧‧光柵操作單元
352‧‧‧色彩ROP單元
354‧‧‧Z ROP單元
355‧‧‧ROP管理器
360‧‧‧第二級快取
365‧‧‧L2交叉開關
370‧‧‧記憶體介面
380‧‧‧工作分配交叉開關
390‧‧‧記憶體管理單元
405‧‧‧指令快取
410‧‧‧排程單元
415‧‧‧分派單元
420‧‧‧暫存器檔案
450‧‧‧處理核心
452‧‧‧特定功能單元
454‧‧‧載入/儲存單元
470‧‧‧共享記憶體/L1快取
480‧‧‧互連網路
500‧‧‧系統晶片
550‧‧‧CPU
590‧‧‧MMU
595‧‧‧記憶體介面
600‧‧‧圖形處理管線
601‧‧‧輸入資料
602‧‧‧輸出資料
610‧‧‧資料組合階段
620‧‧‧頂點著色階段
630‧‧‧圖元組合階段
640‧‧‧幾何著色階段
650‧‧‧視窗SCC階段
660‧‧‧光柵化階段
670‧‧‧片段著色階段
680‧‧‧光柵操作階段
700‧‧‧覆蓋資訊
710‧‧‧像素
720‧‧‧圖元
900‧‧‧系統
901‧‧‧中央處理器
902‧‧‧匯流排
904‧‧‧主記憶體
906‧‧‧圖形處理器
908‧‧‧顯示器
910‧‧‧輔助儲存器
912‧‧‧輸入裝置
第一圖繪示根據一實施例之用於控制來自片段著色器程式的樣本遮罩之方法的流程圖;第二圖繪示根據一實施例之平行處理單元;第三A圖繪示根據一實施例之第二圖之平行處理單元的通用處理叢集;第三B圖繪示根據一實施例之第二圖之平行處理單元的分割單元;第四圖繪示根據一實施例之第三A圖之串流多處理器;第五圖繪示根據一實施例之包括第二圖之平行處理單元的系統晶片;第六圖係為根據一實施例之被第二圖之平行處理單元實作之圖形處理管線的概念圖;第七A圖繪示根據一實施例之圖元;第七B圖繪示根據一實施例之用於一片段的覆蓋資訊;第八圖繪示根據一實施例之用於算繪圖元的操作;及第九圖繪示可能實作各種先前實施例之各種架構及/或功能性的示範系統。
一種常用的圖形API係為Microsoft® DirectX,其包括用於算繪三維圖形的Direct3D API及用於算繪二維圖形的Direct2D API。在Direct3D中,可能為了儲存用於顯示電腦產生之圖形之色彩資料來創造算繪目標。D3D中的「算繪目標」是指儲存用於一場景之影像資料的緩衝器(即,記憶體的配置部分)。多樣本反鋸齒(MSAA)可能使用每像素儲存多個色彩樣本的算繪目標來實作。用於像素的多個色彩樣本接著被混合在一起以產生用於像素的最終像素色彩。然而,可能基於可用於圖形硬體之記憶體的大小而限制MSAA的解析度(即,每像素的樣本數量)。
Microsoft® Direct3D版本11.1(以下稱為D3D11)包括稱為目標獨立光柵化(TIR)的新功能。D3D11 TIR使多個光柵樣本能在算繪期間被利用,儘管在算繪目標中只儲存單一色彩樣本。像素著色器可能配置以處理關聯於多個光柵樣本的覆蓋資訊以產生儲存在算繪目標中的單一色彩樣本值。D3D11 TIR使使用Direct2D所繪的向量圖能以GPU加速來處理而非全部在CPU上算繪。然而,D3D11 TIR的一個缺點在於當以非多樣本色彩緩衝器利用MSAA時必須禁能深度與模版測試。
當像素著色器接收用於在光柵化期間產生之圖元的覆蓋資訊時,像素著色器只配置以處理覆蓋資訊以產生用於輸出至算繪目標的單一色彩值。單一色彩值可能至少部分基於在覆蓋資訊中的一些設定位元。當像素著色器接收覆蓋資訊作為輸入時,不修改在光柵化期間產生的覆蓋資訊。反而,僅使用覆蓋資訊以調整像素著色器所輸出且儲存在算繪目標中之單一樣本的色彩值。
另一種常用的圖形API係為OpenGL®,其也包括用於算繪三維及二維圖形的功能。OpenGL®也藉由產生在圖元之光柵化期間的覆蓋資訊來實作MSAA。覆蓋資訊被提供至片段著色器。在OpenGL®中,片段著色器可能將值寫至輸出陣列gl_SampleMask,其使片段著色器能修改在光柵化期間產生的覆蓋資訊。如OpenGL®規格書中所述,用於片段的覆蓋將變成覆蓋資訊與寫至gl_SampleMask之值的邏輯AND。將gl_SampleMask中的位元設成零(0)將使對應樣本為了MSAA之目的而被視為未覆蓋。然 而,將gl_SampleMask中的位元設成一(1)將從未使未被原始圖元覆蓋的樣本為了MSAA之目的而被視為覆蓋。因此,當使用寫至由OpenGL®指定之gl_SampleMask輸出陣列的值來修改覆蓋遮罩時,無法使用寫至gl_SampleMask輸出陣列的值來覆寫在光柵化期間產生的覆蓋資訊。
D3D11 TIR和由OpenGL® gl_SampleMask輸出陣列致能的功能皆不能使片段著色器完全控制覆寫用於在光柵化期間產生之像素之多個樣本的覆蓋資訊。至少,片段著色器無法改變特定樣本被指示為覆蓋而非非覆蓋。因此,需要此功能的某些演算法無法使用傳統圖形加速硬體來實作。
第一圖繪示根據一實施例之用於控制來自片段著色器程式的樣本遮罩之方法100的流程圖。在步驟110中,在圖形處理管線之光柵化階段期間,對至少部分被圖元覆蓋之每個像素產生片段。光柵化階段係指將向量格式(即,經由複數個頂點)中指定之圖形圖元轉成光柵格式(即,複數個像素或片段)。光柵化階段產生用於被圖元覆蓋之每個像素的一個片段。
如GPU的處理器可能實作至少部分的圖形處理管線。在一實施例中,圖形處理管線的光柵化階段係藉由配置以接收圖元及輸出用於被圖形處理管線之一或更多額外階段處理之一或更多片段的固定功能硬體單元來實作。在另一實施例中,圖形處理管線的光柵化階段係藉由包括在GPU中之可編程之串流多處理器來實作。
圖元可能定義成大量頂點,這裡每個頂點包括三維空間中的座標以及一或更多頂點屬性,如色彩、一或更多材質座標、法線向量、等等。圖形處理管線的光柵化階段可能接收定義來自圖形處理管線的先前階段(在GPU上或藉由被CPU執行的軟體實作)之圖元的資料。片段可能包括一或更多內插屬性以及關於關聯於特定像素之複數個樣本的覆蓋資訊。定義圖元與片段的資料可能儲存在資料結構中。
在步驟120中,在圖形處理管線的光柵化階段期間判定用於對應於圖元之每個片段的覆蓋資訊。覆蓋資訊可能是指示關聯於像素的每個樣本位置是否被圖元覆蓋的遮罩。當穿過樣本位置之來自照相機位置的 射線穿過圖元之邊所界定之封閉表面時判定樣本位置被覆蓋。換言之,當在觀視平面上的樣本位置落在觀視平面上之圖元的投影版本內時判定樣本位置被覆蓋。
在一實施例中,固定功能硬體單元可能包括一些邏輯單元,每個邏輯單元係配置以計算相對於像素之位置之二維座標中的樣本位置。每個邏輯單元可能接著比較用於樣本位置之座標與圖元的投影頂點以判定樣本位置是否被覆蓋或未覆蓋。用於每個樣本的覆蓋資訊可能被收集至遮罩中。
在步驟130中,針對對應於圖元的每個片段,在圖形處理管線的片段著色階段期間藉由片段著色器產生樣本遮罩。樣本遮罩可能對應於關聯於像素之樣本位置的數量。例如,若覆蓋資訊包含對應於16個樣本位置的16位元遮罩,則樣本遮罩可能也包含16位元遮罩,樣本遮罩中的每個位元對應於用於像素的不同樣本位置。
在一實施例中,片段著色階段係藉由包括在GPU中之可編程之串流多處理器來實作。串流多處理器可能配置以執行片段著色器(即,配置以處理片段的程式)。可能對在圖形處理管線之光柵化階段期間產生的每個片段執行片段著色器的不同實例(即,片段著色器執行緒)。
片段著色器可能包括被GPU執行的指令,其使樣本遮罩被產生且儲存在GPU的記憶體中(例如,暫存器、DRAM、等等)。不同演算法將指定如何產生樣本遮罩。例如,若演算法需要使用保守光柵化,則若當在圖形處理管線之光柵化階段期間判定覆蓋關聯於片段的任何樣本位置就可能設定樣本遮罩的所有位元。在另一實例中,在關聯於路徑算繪的演算法中,關聯於特定樣本位置的覆蓋資訊可能被複製至樣本遮罩的額外樣本位置。在一實施例中,至少部分藉由在圖形處理管線之光柵化階段期間產生的覆蓋資訊來判定樣本遮罩的值。在另一實施例中,可能完全獨立於覆蓋資訊地判定樣本遮罩的值。例如,樣本遮罩可能表示在應寫入片段著色器之輸出之多樣本色彩緩衝器中的任意位置。
在步驟140中,針對對應於圖元的每個片段,以樣本遮罩替換用於在圖形處理管線之光柵化階段期間產生的片段之覆蓋資訊。在一實 施例中,覆蓋資訊可能被樣本遮罩覆寫。在另一實施例中,覆蓋資訊可能被修改以指示片段被完全覆蓋(即,覆蓋資訊的所有位元被設成1),且使用位元AND運算以混合修改的覆蓋資訊與樣本遮罩。
在步驟150中,針對對應於圖元的每個片段,基於樣本遮罩將在圖形處理管線之片段著色階段期間產生的結果寫至記憶體中。在一實施例中,記憶體包含訊框緩衝器,其包括色彩緩衝器。色彩緩衝器可能指配置以儲存每個像素之一或更多色彩值的記憶體。訊框緩衝器可能也包括深度緩衝器及/或模版緩衝器,分別用於儲存關聯於正被算繪之表面之每個像素之每個樣本位置的深度值及/或模版值。色彩緩衝器的解析度可能與深度緩衝器及模版緩衝器的解析度相同或不同。
現在將提出關於可能或可能不實作(依照使用者需要)上述框架之各種非必要架構及特徵的更加說明資訊。應強烈地指明下列資訊係為了說明之目的而提出且不應以任何方式視為限制。任何下列特徵可能非必要地與或不與所述之其他特徵之互斥結合。
第二圖繪示根據一實施例之平行處理單元(PPU)200。在一實施例中,PPU 200係為多執行緒處理器,其被實作在一或更多積體電路裝置中。PPU 200係為設計以平行處理大量執行緒的潛伏隱藏架構。執行緒(即,一線執行)係為配置以被PPU 200執行之一組指令的舉例說明。在一實施例中,PPU 200係為圖形處理單元(GPU),配置以實作圖形算繪管線來處理三維(3D)圖形資料以產生用於顯示在顯示器裝置(如液晶顯示器(LCD)裝置)上的二維(2D)影像資料。在其他實施例中,PPU 200可能用於進行通用計算。儘管本文中為了說明目的而提出一個示範平行處理器,但應強烈指明只是為了說明目的而提出上述處理器,且可能採用任何處理器以對其增補及/或取代。
如第二圖所示,PPU 200包括輸入/輸出(I/O)單元205、主介面單元210、前端單元215、排程單元220、工作分配單元225、集線器230、交叉開關(Xbar)270、一或更多通用處理叢集(GPC)250、及一或更多分割單元280。PPU 200可能經由系統匯流排202連接至主處理器或其他周邊裝置。PPU 200可能也連接至包含一些記憶體裝置204的本地記憶體。在一實 施例中,本地記憶體可能包含一些動態隨機存取記憶體(DRAM)裝置。
I/O單元205係配置以透過系統匯流排202從主處理器(未顯示)傳送及接收通訊(即,命令、資料、等等)。I/O單元205可能直接經由系統匯流排202或透過一或更多中間裝置(如記憶體橋接器)與主處理器通訊。在一實施例中,I/O單元205實作周邊元件互連快捷(PCIe)介面用於在PCIe匯流排上通訊。在另一實施例中,I/O單元205可能實作其他類型的熟知介面用於與外部裝置通訊。
I/O單元205係耦接至主介面單元210,其解碼經由系統匯流排202收到的封包。在一實施例中,封包表示配置以使PPU 200進行各種操作的命令。當命令可能具體指明時,主介面單元210傳送解碼的命令至PPU 200的各種其他單元。例如,有些命令可能被傳送至前端單元215。其他命令可能被傳送至集線器230或PPU 200的其他單元,如一或更多複製引擎、視頻編碼器、視頻解碼器、電源管理單元、等等(未明確顯示)。換言之,主介面單元210係配置以路由在PPU 200的各種邏輯單元之間的通訊。
在一實施例中,主處理器所執行的程式編碼緩衝器中的命令串流,緩衝器提供工作量至PPU 200用於處理。工作量可能包含一些指令及待被這些指令處理的資料。緩衝器係為記憶體中可被主處理器及PPU 200兩者存取(即,讀取/寫入)的區域。例如,主介面單元210可能配置以經由在系統匯流排202上被I/O單元205傳送之記憶體請求來存取連接至系統匯流排202之系統記憶體中的緩衝器。在一實施例中,主處理器將命令串流寫至緩衝器且接著將指到命令串流之開始的指標傳送至PPU 200。主介面單元210對前端單元215提供指到一或更多命令串流的指標。前端單元215管理一或更多串流、從串流讀取命令及轉送命令至PPU 200的各種單元。
前端單元215係耦接至排程單元220,其配置各種GPC 250以處理由一或更多串流定義的工作。排程單元220係配置以追蹤關於被排程單元220管理之各種工作的狀態資訊。狀態可能指示哪個GPC 250被分派工作、工作是否主動或被動、關聯於工作的優先程度、等等。排程單元220管理在一或更多GPC 250上之複數個工作的執行。
排程單元220係耦接至工作分配單元225,其係配置以分派工作用於在GPC 250上執行。工作分配單元225可能追蹤從排程單元220接收的一些排程工作。在一實施例中,工作分配單元225為每個GPC 250管理待做工作池及主動工作池。待做工作池可能包含一些槽(例如,16個槽),其包含分派以被特定GPC 250處理的工作。主動工作池可能包含一些槽(例如,4個槽),用於主動被GPC 250處理的工作。當GPC 250完成工作之執行時,從用於GPC 250的主動工作池逐出此工作且來自待做工作池之其他工作之其一者被選擇且排程用於在GPC 250上執行。若主動工作池已在GPC 250上閒置,如當等待待解決的資料相依性時,則主動工作可能從GPC 250逐出且回到待做工作池,同時待做工作池中的另一工作被選擇且排程用於在GPC 250上執行。
工作分配單元225透過X開關270與一或更多GPC 250通訊。X開關270係為將PPU 200之許多單元耦接至PPU 200之其他單元的互連網路。例如,X開關270可能配置以將工作分配單元225耦接至特定GPC 250。雖然未明確顯示,但PPU 200之一或更多其他單元係耦接至主介面單元210。其他單元可能也經由集線器230來連接至X開關270。
工作被排程單元220管理且被工作分配單元225分派給GPC 250。GPC 250係配置以處理工作且產生結果。結果可能被GPC 250內的其他工作消耗、經由X開關270被路由至不同GPC 250、或儲存在記憶體204中。結果會經由分割單元280被寫至記憶體204,分割單元280實作用於從記憶體204讀取資料且將資料寫至記憶體204的記憶體介面。在一實施例中,PPU 200包括數量為U的分割單元280,其等於耦接至PPU 200之分開及不同記憶體裝置204的數量。以下將配合第三B圖更詳細地說明分割單元280。
在一實施例中,主處理器執行驅動程式核心,其實作使執行在主處理器上的一或更多應用程式能排程用於在PPU 200上執行之操作的應用程式編程介面(API)。應用程式可能產生指令(即,API呼叫),其使驅動程式核心產生用於被PPU 200執行的一或更多工作。驅動程式核心將工作輸出至正被PPU 200處理的一或更多串流。每個工作可能包含相關執行緒 的一或更多群組,於此稱為線程包。執行緒區塊可能指複數個包括用以進行工作之指令的執行緒群組。相同執行緒群組中的執行緒可能透過共享記憶體交換資料。在一實施例中,執行緒群組包含32個相關執行緒。
第三A圖繪示根據一實施例之第二圖之PPU 200的GPC 250。如第三A圖所示,每個GPC 250包括用於處理工作的一些硬體單元。在一實施例中,每個GPC 250包括管線管理器310、預光柵操作單元(PROP)315、光柵引擎325、工作分配交叉開關(WDX)380、記憶體管理單元(MMU)390、及一或更多材質處理叢集(TPC)320。將了解到第三A圖的GPC 250可能包括其他硬體單元代替第三A圖所示的單元,或除了第三A圖所示的單元可能包括其他硬體單元。
在一實施例中,GPC 250的操作係由管線管理器310控制。管線管理器310管理用於處理分配給GPC 250之工作之一或更多TPC 320的配置。在一實施例中,管線管理器310可能配置一或更多TPC 320之至少一者以實作至少一部分的圖形算繪管線。例如,TPC 320可能配置以在可編程串流多處理器(SM)340上執行頂點著色器程式。管線管理器310可能也配置以將從工作分配單元225收到的封包路由至GPC 250內的適當邏輯單元。例如,有些封包可能被路由至PROP 315及/或光柵引擎325中的固定功能硬體單元,而其他封包可能被路由至TPC 320以被圖元引擎335或SM 340處理。
PROP單元315係配置以將光柵引擎325及TPC 320所產生的資料路由至分割單元280中的光柵操作(ROP)單元,以下更詳細說明。PROP單元315可能也配置以進行色彩混合的最佳化、組織像素資料、進行位址轉譯、等等。
光柵引擎325包括配置以進行各種光柵操作的一些固定功能硬體單元。在一實施例中,光柵引擎325包括設定引擎、過程光柵引擎、剔除引擎、剪裁引擎、精細光柵引擎、及圖磚接合引擎。設定引擎接收轉換頂點且產生關聯於由頂點定義之幾何圖元的平面等式。平面等式被傳送至粗糙光柵引擎以產生用於圖元的覆蓋資訊(例如,用於圖磚的x,y覆蓋遮罩)。粗糙光柵引擎的輸出可能傳送至剔除關聯於缺乏Z測試之圖元之片段 的剔除引擎、及傳送至剪裁在觀視景體外之片段的剪裁引擎。經過剪裁及剔除的那些片段可能被傳送至精細光柵引擎以基於設定引擎所產生的平面等式來產生用於像素片段的屬性。光柵引擎380的輸出包含例如待被實作在TPC 320內之片段著色器處理的片段。
包括在GPC 250中的每個TPC 320包括M管控制器(MPC)330、圖元引擎335、SM 340、及一或更多材質單元345。MPC 330控制TPC 320的操作、路由從管線管理器310接收的封包至TPC 320中的適當單元。例如,關聯於頂點的封包可能被路由至圖元引擎335,其係配置以從記憶體204提取關聯於頂點的頂點屬性。對照下,關聯於著色器程式的封包可能被傳送至SM 340。
在一實施例中,材質單元345係配置以從記憶體204載入材質貼圖(例如,2D陣列的紋素)且取樣材質貼圖以產生用於在被SM 340執行之著色器程式中使用的取樣之材質值。材質單元345使用mip貼圖(即,細節之變化程度的材質貼圖)來實作材質操作(如過濾操作)。在一實施例中,每個TPC 320包括四個(4)材質單元345。
SM 340包含可編程串流處理器,其係配置以處理被一些執行緒表示的工作。每個SM 340係為多執行緒的且配置以同時地執行來自特定執行緒群組的複數個執行緒(例如,32個執行緒)。在一實施例中,SM 340實作SIMD(單一指令、多資料)架構,其中在執行緒群組(即,線程包)中的每個執行緒係配置以基於相同指令集來處理不同的資料組合。執行緒群組中的所有執行緒執行相同的指令。在另一實施例中,SM 340實作SIMT(單一指令、多執行緒)架構,其中在執行緒群組中的每個執行緒係配置以基於相同指令集來處理不同的資料組合,但允許在執行期間分路執行緒群組中的個別執行緒。換言之,當為了執行分派用於執行緒群組的指令時,執行緒群組中的一些執行緒可能是主動的,藉此執行指令,而執行緒群組中的其他執行緒可能是被動的,藉此進行無操作(NOP)而非執行指令。以下可能配合第四圖來更詳細說明SM 340。
MMU 390提供GPC 250與分割單元280之間的介面。MMU 390可能提供虛擬位址至實體位址的轉譯、記憶體保護、及記憶體請求的仲 裁。在一實施例中,MMU 390提供一或更多轉譯旁視緩衝器(TLB)用於增進記憶體204中之虛擬位址至實體位址的轉譯。
第三B圖繪示根據一實施例之第二圖之PPU 200的分割單元280。如第三B圖所示,分割單元280包括光柵操作(ROP)單元350、第二級(L2)快取360、記憶體介面370、及L2交叉開關(XBar)365。記憶體介面370係耦接至記憶體204。記憶體介面370可能實作16、32、64、128位元的資料匯流排、或之類用於高速資料傳輸。在一實施例中,PPU 200包含U個記憶體介面370,每分割單元280一個記憶體介面370,其中每個分割單元280係連接至對應記憶體裝置204。例如,PPU 200可能連接至高達U個記憶體裝置204,如圖形雙倍資料率,版本5,同步動態隨機存取記憶體(GDDR5 SDRAM)。在一實施例中,記憶體介面370實作DRAM介面且U等於6。
在一實施例中,PPU 200實作多級記憶體層級。記憶體204係位在耦接至PPU 200之SDRAM中的晶片外。來自記憶體204的資料可能被提取且儲存在L2快取360中,其位在晶片上且在各種GPC 250之間被共享。如所示,每個分割單元280包括關聯於對應記憶體裝置204之一部分的L2快取360。可能接著在GPC 250內之各種單元中實作較低級的快取。例如,每個SM 340可能實作第一級(L1)快取。L1快取係為專用於特定SM 340的私用記憶體。來自L2快取360的資料可能被提取且儲存在用於在SM 340之功能單元中處理的每個L1快取中。L2快取360係耦接至記憶體介面370及X開關270。
ROP單元350包括ROP管理器355、色彩ROP(CROP)單元352、及Z ROP(ZROP)單元354。CROP單元352進行關於像素色彩的光柵操作,如色彩壓縮、像素混合、等等。ZROP單元354配合光柵引擎325實作深度測試。ZROP單元354從光柵引擎325的剔除引擎接收關聯於像素片段之樣本位置的深度。ZROP單元354測試對照用於關聯於片段之樣本位置之深度緩衝器中之對應深度的深度。若片段通過用於樣本位置的深度測試,則ZROP單元354更新深度緩衝器及將深度測試的結果傳送至光柵引擎325。ROP管理器355控制ROP單元350的操作。將了解到分割單元280 的數量可能不同於GPC 250的數量,且因此,每個ROP單元350可能耦接至每個GPC 250。因此,ROP管理器355追蹤從不同GPC 250接收的封包且判定ROP單元350所產生之結果被路由至的GPC 250。CROP單元352及ZROP單元354係經由L2 X開關365來耦接至L2快取360。
第四圖繪示根據一實施例之第三A圖之串流多處理器340。如第四圖所示,SM 340包括指令快取405、一或更多排程單元410、暫存器檔案420、一或更多處理核心450、一或更多特定功能單元(SFU)452、一或更多載入/儲存單元(LSU)454、互連網路480、及共享記憶體/L1快取470。
如上所述,工作分配單元225分派用於在PPU 200的GPC 250上執行的工作。工作被分配給GPC 250內的特定TPC 320,且若工作關聯於著色器程式,則可能對SM 340分配工作。排程單元410從工作分配單元225接收工作且管理用於分派給SM 340之一或更多執行緒群組(即,線程包)的指令排程。排程單元410排程用於在平行執行緒群組中執行的執行緒,其中每個群組被稱為線程包。在一實施例中,每個線程包包括32個執行緒。排程單元410可能管理複數個不同線程包、排程線程包用於執行且接著在每個時脈週期期間將來自複數個不同線程包的指令分派給各種功能單元(即,核心350、SFU 352、及LSU 354)。
在一實施例中,每個排程單元410包括一或更多指令分派單元415。每個分派單元415係配置以將指令傳送至一或更多功能單元。在第四圖所示的實施例中,排程單元410包括兩個分派單元415,其使來自相同線程包的兩個不同指令能在每個時脈週期被分派。在替代實施例中,每個排程單元410可能包括單一分派單元415或額外分派單元415。
每個SM 340包括暫存器檔案420,其提供一組暫存器用於SM 340的功能單元。在一實施例中,在每個功能單元之間分割暫存器檔案420,使得為每個功能單元分配暫存器檔案420的一個專用部分。在另一實施例中,在被SM 340執行之不同線程包之間分割暫存器檔案420。暫存器檔案420提供用於連接至功能單元之資料路徑之運算元的暫時儲存。
每個SM 340包含L個處理核心450。在一實施例中,SM 340 包括大量(例如,192等等)的不同處理核心450。每個核心450可能包括完全管線化的單精度處理單元,其包括浮點數算術邏輯單元及整數算術邏輯單元。核心450可能也包括具有浮點數算術邏輯單元的雙精度處理單元。在一實施例中,浮點數算術邏輯單元實作用於浮點數算術的IEEE 754-2008標準。每個SM 340也包含M個SFU 452,其進行特定功能(例如,像素混合操作、等等)、及N個LSU 454,其實作在共享記憶體/L1快取470與暫存器檔案420之間的載入及儲存操作。在一實施例中,SM 340包括192個核心450、32個SFU 452、及32個LSU 454。
每個SM 340包括互連網路480,其將每個功能單元連接至暫存器檔案420及共享記憶體/L1快取470。在一實施例中,互連網路480係為交叉開關,其能配置以將任何功能單元連接至暫存器檔案420中的暫存器或共享記憶體/L1快取470中的記憶體位置之任一者。
共享記憶體/L1快取470係為晶片上記憶體之陣列,在一實施例中,其依照應用需求可能配置成共享記憶體或L1快取、或兩者之組合。例如,共享記憶體/L1快取470可能包含64kB的儲存容量。共享記憶體/L1快取470可能配置成64kB的共享記憶體或L1快取、或如16kB的L1快取及48kB的共享記憶體之兩者的組合。
上述之PPU 200可能配置以進行比傳統CPU快非常多的高度平行計算。平行計算具有圖形處理、資料壓縮、生物辨識、串流處理演算法、等等的優點。
在一實施例中,PPU 200包含圖形處理單元(GPU)。PPU 200係配置以接收指定用於處理圖形資料之著色器程式的命令。圖形資料可能定義成如點、線、三角形、四邊形、三角面、等等的一組圖元。典型上,圖元包括指定用於圖元的一些頂點(例如,在模型空間座標系統中)以及關聯於圖元之每個頂點之屬性的資料。PPU 200能配置以處理圖形圖元以產生訊框緩衝器(即,用於顯示之每個像素的像素資料)。
應用程式將用於場景的模型資料(即,大量頂點及屬性)寫至如系統記憶體或記憶體204的記憶體。模型資料定義每個可能在顯示器上看到的物件。應用程式接著使API呼叫驅動程式核心,其請求模型資料被 算繪及顯示。驅動程式核心讀取模型資料且將命令寫至一或更多串流以進行處理模型資料的操作。命令可能參考不同著色器程式以被實作在PPU 200的SM 340上,包括頂點著色器、輪廓著色器、域著色器、幾何著色器、及像素著色器之一或更多者。例如,一或更多SM 340可能配置以執行頂點著色器程式,其處理被模型資料定義的一些頂點。在一實施例中,不同SM 340可能配置以同時執行不同的著色器程式。例如,SM 340的第一子集可能配置以執行頂點著色器程式,而SM 340的第二子集可能配置以執行像素著色器程式。SM 340的第一子集處理頂點資料以產生經處理的頂點資料且將經處理的頂點資料寫至L2快取360及/或記憶體204。在光柵化(即,從三維資料轉成場景空間中的二維資料)經處理的頂點資料以產生片段資料之後,SM 340的第二子集執行像素著色器以產生經處理的片段資料,其接著與其他經處理的片段資料混合且被寫至記憶體204中的訊框緩衝器。頂點著色器程式及像素著色器程式可能同時執行,以管線化方式處理來自相同場景的不同資料,直到用於場景的所有模型資料皆被算繪至訊框緩衝器為止。接著,訊框緩衝器的內容被傳送至顯示控制器來顯示在顯示裝置上。
PPU 200可能包括在桌上型電腦、膝上型電腦、平板電腦、智慧型手機(例如,無線手持裝置)、個人數位助理(PDA)、數位相機、手持電子裝置、等等中。在一實施例中,PPU 200係實作在單一半導體基板上。在另一實施例中,PPU 200係包括在連同一或更多其他邏輯單元(如精簡指令集計算機(RISC)CPU、記憶體管理單元(MMU)、數位類比轉換器(DAC)等等)的系統晶片(SoC)中。
在一實施例中,PPU 200可能包括在包括一或更多記憶體裝置204(如GDDR5 SDRAM)的圖形卡上。圖形卡可能配置以連接桌上型電腦之主機板(包括例如北橋晶片組及南橋晶片組)上的PCIe槽。在又一實施例中,PPU 200可能是包括在主機板之晶片組(即,北橋)中的整合圖形處理單元(iGPU)。
第五圖繪示根據一實施例之包括第二圖之PPU 200的系統晶片(SoC)500。如第五圖所示,SoC 500包括CPU 550及PPU 200,如上所述。SoC 500可能也包括系統匯流排202以能在SoC 500的各種元件之間通 訊。可能透過由SoC 500之多個元件共享的系統MMU 590來路由CPU 550及PPU 200所產生的記憶體請求。SoC 500可能也包括記憶體介面595,其耦接至一或更多記憶體裝置204。記憶體介面595可能實作例如DRAM介面。
雖然未明確顯示,但除了第五圖所示的元件之外,SoC 500可能包括其他元件。例如,SoC 500可能包括多個PPU 200(例如,四個PPU 200)、視頻編碼器/解碼器、及無線寬頻收發器以及其他元件。在一實施例中,可能在層疊封裝(PoP)配置中與記憶體204一起包括SoC 500。
第六圖係為根據一實施例之被第二圖之PPU 200實作之圖形處理管線600的概念圖。圖形處理管線600係為實作以從3D幾何資料產生2D電腦產生影像之處理步驟的抽象流程圖。如所熟知,管線架構可能將操作分成複數個階段來更有效率地進行長潛時操作,這裡每個階段的輸出係耦接至下個後續階段的輸入。因此,圖形處理管線600接收從一個階段傳送至圖形處理管線600之下個階段的輸入資料601以產生輸出資料602。在一實施例中,圖形處理管線600可能表示由OpenGL® API定義的圖形處理管線。
如第六圖所示,圖形處理管線600包含包括一些階段的管線架構。階段包括但不限於資料組合階段610、頂點著色階段620、圖元組合階段630、幾何著色階段640、視窗縮放、剔除、及剪裁(VSCC)階段650、光柵化階段660、片段著色階段670、及光柵操作階段680。在一實施例中,輸入資料601包含配置處理單元以實作圖形處理管線600之階段的命令及待被階段處理的幾何圖元(例如,點、線、三角形、四邊形、三角面或扇形)。輸出資料602可能包含像素資料(即,色彩資料),其被複製至在記憶體中的訊框緩衝器或其他類型之表面資料結構中。
資料組合階段610接收指示用於高序表面、圖元、或之類之頂點資料的輸入資料601。資料組合階段610例如藉由從包括指到記憶體中之緩衝器之指標的主處理器接收命令及從緩衝器讀取頂點資料來收集暫時儲存器或佇列中的頂點資料。頂點資料接著被傳送至頂點著色階段620用於處理。
頂點著色階段620藉由對每個頂點進行一次的一組操作(即,頂點著色器或程式)來處理頂點資料。頂點可能例如被定為關聯於一或更多頂點屬性(例如,色彩、材質座標、表面法線等)的4座標向量(即,<x,y,z,w>)。頂點著色階段620可能操縱如位置、色彩、材質座標等的特性。換言之,頂點著色階段620對頂點座標或關聯於頂點的其他頂點屬性進行操作。上述操作一般包括打亮操作(即,為頂點修改色彩屬性)及轉換操作(即,為頂點修改座標空間)。例如,可能使用在物件座標空間中的座標指定頂點,其藉由將座標乘以將座標從物件座標空間轉成世界空間或正規化裝置座標(NCD)空間的矩陣來轉換。頂點著色階段620產生經轉換的頂點資料,其被傳送至圖元組合階段630。
圖元組合階段630收集由頂點著色階段620輸出的頂點及聚集頂點至幾何圖元中用於被幾何著色階段640處理。例如,圖元組合階段630可能配置以每三個連續頂點群組成一個幾何圖元(即,三角形)用於傳送至幾何著色階段640。在一些實施例中,可能對連續幾何圖元重複使用特定頂點(例如,三角面中的兩個連續三角形可能共享兩個頂點)。圖元組合階段630將幾何圖元(即,大量關聯頂點)傳送至幾何著色階段640。
幾何著色階段640藉由對幾何圖元進行一組操作(即,幾何著色器或程式)來處理幾何圖元。鑲嵌操作可能從每個幾何圖元產生一或更多幾何圖元。換言之,幾何著色階段640可能將每個幾何圖元再切割成更精細網格的兩個或更多幾何圖元用於被其餘的圖形處理管線600處理。幾何著色階段640將幾何圖元傳送至視窗SCC階段650。
視窗SCC階段650進行幾何圖元的視窗縮放、剔除、及剪裁。被算繪的每個表面係關聯於抽象相機位置。相機位置表示觀看場景之視者的位置且定義包圍場景之物件的觀視景體。觀視景體可能包括觀視平面、後平面、及四個剪裁平面。可能剔除(即,丟棄)完全在觀視景體外部的任何幾何圖元,因為幾何圖元將無法幫助最終算繪的場景。可能剪裁部分在觀視景體內部且部分在觀視景體外部的任何幾何圖元(即,轉成包在觀視景體內的新幾何圖元)。再者,幾何圖元可能各基於觀視景體的深度來縮放。所有可能看到的幾何圖元接著被傳送至光柵化階段660。
光柵化階段660將3D幾何圖元轉成2D片段。光柵化階段660可能配置以利用幾何圖元的頂點以建立能根據其來內插各種屬性的一組平面等式。光柵化階段660可能也計算用於複數個像素的覆蓋遮罩,其指示用於像素之一或更多樣本位置是否遮斷幾何圖元。在一實施例中,可能也進行z測試以判斷幾何圖元是否被已被光柵化的其他幾何圖元阻擋。光柵化階段660產生片段資料(即,關聯於用於每個覆蓋像素之特定樣本位置的內插頂點屬性),其被傳送至片段著色階段670。
片段著色階段670藉由對每個片段進行一組操作(即,片段著色器或程式)來處理片段資料。例如藉由對片段進行打光操作或使用內插材質座標來取樣材質貼圖,片段著色階段670可能產生用於片段的像素資料(即,色彩值)。片段著色階段670產生被傳送至光柵操作階段680的像素資料。
光柵操作階段680可能對像素資料進行各種操作,例如進行α測試、模版測試、混合像素資料與對應於關聯於像素之其他片段的其他像素資料。當光柵操作階段680已完成處理像素資料(即,輸出資料602)時,像素資料可能被寫至如訊框緩衝器、色彩緩衝器或之類的算繪目標。
將了解到除了上述一或更多階段之外在圖形處理管線600中可能包括一或更多額外階段,或者圖形處理管線600中可能包括一或更多額外階段來替代上述一或更多階段。抽像圖形處理管線的各種實作可能實作不同階段。再者,在一些實施例中,可能從圖形處理管線排除一或更多上述階段(例如幾何著色階段640)。如在本揭露之範疇內地考量到其他類型之圖形處理管線。再者,可能藉由在如PPU 200之圖形處理器內的一或更多專用硬體單元來實作圖形處理管線600的任何階段。可能藉由如PPU 200之SM 340的可編程硬體單元來實作圖形處理管線600的其他階段。
可能經由被主處理器(如CPU 550)執行的應用程式來實作圖形處理管線600。在一實施例中,裝置驅動程式可能實作應用程式編程介面(API),其定義能被應用程式利用以產生用於顯示之圖形資料的各種功能。裝置驅動程式係為軟體程式,其包括控制PPU 200之操作的複數個指令。API提供抽像給程式設計師,其使程式設計師利用如PPU 200的專用圖形 硬體來產生圖形資料而無須程式設計師利用用於PPU 200的特定指令集。應用程式可能包括被路由至用於PPU 200之裝置驅動程式的API呼叫。裝置驅動程式解譯API呼叫且進行各種操作以回應於API呼叫。在一些實例中,裝置驅動程式可能藉由在CPU 550上執行指令來進行操作。在其他實例中,裝置驅動程式可能至少部分藉由利用於CPU 550與PPU 200之間之輸入/輸出介面地發動在PPU 200上之操作來進行操作。在一實施例中,裝置驅動程式係配置以實作利用PPU 200之硬體的圖形處理管線600。
可能在PPU 200內執行各種程式以實作圖形處理管線600的各種階段。例如,裝置驅動程式可能發動PPU 200上的核心以在一個SM 340(或多個SM 340)上進行頂點著色階段620。裝置驅動程式(或由PPU 200執行的初始核心)可能也發動PPU 200上的其他核心以進行圖形處理管線600的其他階段,如幾何著色階段640及片段著色階段670。此外,可能在如實作在PPU 200內的光柵器或資料組合器的固定單元硬體上實作圖形處理管線600的一些階段。將了解到來自一個核心的結果在被SM 340上的後續核心處理之前可能被一或更多中間固定功能硬體單元處理。
樣本遮罩的控制
第七A圖繪示根據一實施例之圖元720。如第七A圖所示,圖元720重疊複數個像素710。每個像素710可能關聯於複數個樣本位置(由十字圖所指)。在一實施例中,每個像素710係關聯於16個樣本位置。在替代實施例中,可能對每個像素定義不同數量的樣本位置(例如,4個樣本位置、64個樣本位置、等等)。又,樣本位置可能相對於像素710的邊界而均勻地間隔。替代地,可能抖動樣本位置。如第七A圖所示,圖元720至少部分地覆蓋(即,相交)六個像素中的五個像素(像素710(5)、710(6)、710(7)、710(10)、及710(11))。
在一實施例中,光柵引擎325包括用於實作圖形處理管線600之光柵化階段660的固定功能硬體。在光柵化期間,光柵引擎325接收定義每個圖元的頂點資料。頂點資料可能包括三個頂點及相關頂點屬性。例如,圖元720的每個頂點可能由指示x座標、y座標、z座標、及w座標 的四個元件向量指定,其表示在齊次座標中之頂點的位置。每個頂點可能也關聯於色彩值、材質座標(例如,s座標及t座標)、法線向量、等等。
光柵引擎325可能接收用於圖元720之所有三個頂點的資料且可能使用頂點資料以建立用於圖元的邊界等式。光柵引擎325利用邊界等式以判定哪些像素710與圖元相交。針對每個相交的像素710,光柵引擎可能產生片段以在圖形處理管線600之片段著色階段670期間被片段著色器處理。片段可能包括用於片段之內插的z值(深度)、用於每個頂點屬性之內插值、及指示關聯於像素710的哪些樣本位置被圖元720覆蓋的覆蓋資訊。
第七B圖繪示根據一實施例之用於片段的覆蓋資訊700。雖然為了說明目地而顯示覆蓋資訊700為二維陣列以對應於用於像素710之樣本位置的相對位置,但一般來說,覆蓋資訊700係為N位元值,其中每個位元對應於像素710的特定樣本位置。覆蓋資訊700可能在圖形處理管線600之光柵化階段660期間產生且可能替代地稱為光柵化覆蓋資訊。
如第七B圖所示,對應於第七A圖之像素710(5)的片段會包括覆蓋資訊700。覆蓋資訊700包括16位元。在覆蓋資訊700中,「0」值指示樣本位置未被圖元720覆蓋且「1」值指示樣本位置被圖元720覆蓋。因為圖元720覆蓋像素710(5)中的四個樣本位置,因此覆蓋資訊700被給定為0b0000000001110001。當立即消耗光柵化階段660的輸出或光柵化階段660的輸出可能儲存在記憶體204中用於之後處理時,包括覆蓋資訊700的片段可能儲存在如關聯於配置以執行片段著色器之SM 340的暫存器檔案420之記憶體中。
第八圖繪示根據一實施例之用於控制來自片段著色器程式的樣本遮罩的操作。如第八圖所示,光柵器(例如,光柵引擎325)產生用於如圖元720之圖元的一或更多片段。由一或更多SM 340執行的片段著色器係配置以處理片段。用於每個片段的資料被路由至配置以處理此片段的特定SM 340。資料包括在圖形處理管線600之光柵化階段660期間產生的覆蓋資訊700。在一實施例中,覆蓋資訊700也被路由至ROP 350,其係配置以混合片段著色器之輸出與儲存在訊框緩衝器中的值以產生用於每個像素 的最終值。
在圖形處理管線600的光柵操作階段680期間,ROP 350可能以在圖形處理管線600之片段著色階段670期間產生的樣本遮罩來取代在圖形處理管線600之光柵化階段660期間產生的覆蓋資訊700。在一實施例中,ROP 350係配置以重新初始化用於片段的覆蓋資訊700以指示關聯於對應像素的樣本位置被完全覆蓋。換言之,以0xFF(即,全部「1」)來覆寫傳送至ROP 350的覆蓋資訊700。接著進行位元AND運算以結合修改的覆蓋資訊700與由片段著色器產生的樣本遮罩。實際上,由片段著色器產生的樣本遮罩被傳送至ROP 350且取代在光柵化階段660期間產生的覆蓋資訊700。在像素內的任何樣本位置可能被片段著色器控制以被指示為覆蓋或未覆蓋。重要地,任何樣本位置可能獨立於覆蓋資訊700地被片段著色器控制。就其本身而論,片段著色器可能在著色期間寫入樣本遮罩以在圖形處理管線600的光柵操作階段680期間控制ROP 350的操作。
將了解到本文所述的PPU 200只是用於實作由片段著色器之樣本遮罩之控制的一個示範架構。例如,在其他實施例中,圖形處理管線600之光柵化階段660可能實作在如SM 340的可編程單元內而非如光柵引擎325的專用硬體單元。如在本揭露之範疇內地考量到在圖元之光柵化期間產生覆蓋資訊且接著以在著色期間產生的樣本遮罩取代覆蓋資訊之其他類型的架構。
在一實施例中,PPU 200係通訊地耦接至如CPU的主處理器。主處理器可能耦接至儲存圖形應用程式、作業系統、用於PPU 200之裝置驅動程式、等等的記憶體。裝置驅動程式可能實作圖形API,如OpenGL API。為了實作用以使來自片段著色器之覆蓋資訊無效的功能,裝置驅動程式可能也實作圖形API的延伸。圖形應用程式可能包括利用圖形API的延伸以配置PPU 200經由片段著色器控制樣本遮罩的指令。
例如,可能藉由用於PPU 200之裝置驅動程式來定義及實作稱為NV_sample_mask_override_coverage之OpenGL®規格書的API延伸。延伸允許片段著色器控制gl_SampleMask輸出陣列是否會致能未被圖元覆蓋,或無效先前深度/模版測試的樣本,以指示樣本被圖元覆蓋的樣本。 可能藉由重新宣告gl_SampleMask輸出陣列為圖形應用程式中之指令中的「override_coverage」佈局修飾元,如下:layout(override_coverage)out int gl_SampleMask[ ];一旦重新宣告gl_SampleMask輸出陣列變數,則片段著色器會藉由對每個片段將值寫至gl_SampleMask變數來覆寫覆蓋資訊。若片段著色器未明確將值寫至gl_SampleMask變數,則未定義樣本遮罩且ROP 350未修改覆蓋資訊。然而,若片段著色器將gl_SampleMask輸出陣列中的特定位元寫成0,則對應樣本位置被視為未覆蓋,或若片段著色器將gl_SampleMask輸出陣列中的特定位元寫成1,則對應樣本位置被視為覆蓋。ROP 350將以gl_SampleMask輸出陣列中指定的樣本遮罩來取代覆蓋資訊。若圖形應用程式未使用override_coverage佈局修飾元來宣告gl_SampleMask輸出陣列,則ROP 350將配置以進行具有儲存在gl_SampleMask輸出陣列中之值之覆蓋資訊的位元AND運算,若在著色片段時將值寫至gl_SampleMask輸出陣列,如先前由OpenGL®規格書規定。
在其他實施例中,可能藉由其他裝置驅動程式來為不同於PPU 200的架構實作對OpenGL® API延伸的NV_sample_mask_override_coverage。在另外實施例中,可能為其他圖形API(如Direct3D API)定義具有類似功能的延伸。
將了解到任何片段著色演算法或應用程式可能具有取代覆蓋資訊700的能力,且不限於TIR應用程式。具體來說,使覆蓋資訊700能被由片段著色器產生之樣本遮罩取代允許應用程式「打開」原本未被圖元覆蓋的樣本。再者,將了解到片段著色器執行緒(其係為用於特定片段執行的片段著色器之實體)可能僅影響對應像素中的樣本。片段著色器執行緒無法打開其他像素中的樣本,也無法建立新的片段。此外,當使用具有多於一個片段著色器處理的混合反鋸齒時,片段著色器執行緒只會打開對應於此處理的樣本。
如本文中使用,片段著色器執行緒係指為關聯於被特定圖元覆蓋之單一像素之一組片段資料執行之片段著色器程式的特定實體。例如,SM 340的16個核心450可能配置以平行執行16個片段著色器執行緒, 每個核心450係關聯於目標算繪表面的16個像素之其一者。當光柵化圖元時,將去能關聯於不與圖元相交之像素的核心。例如,配置以執行片段著色器的SM 340之16個核心450可能對應於第七A圖中所示的16個像素710。在著色期間,當處理關聯於圖元720的五個片段時可能只啟動五個核心450(且去能11個核心)。五個主動核心之各者可能執行對應於用於被圖元720相交之五個像素710之各者之片段的單一片段著色器執行緒。
在一實施例中,圖形處理管線600可能包括深度測試(即,Z測試),如同剔除可能完全被其他圖元覆蓋的任何圖元之方式以降低被完全著色的片段數量。典型上,深度緩衝器寫入通常在著色之後發生,且因此可能使用反應被片段著色器產生之樣本遮罩的修改覆蓋資訊以將深度值寫至深度緩衝器。然而,仍然可能在著色之前(即,在片段著色器已產生用以修改覆蓋資訊的樣本遮罩之前)進行提早保守的深度測試(即,Zcull)。當啟動提早z測試時,當計算用於圖元之深度範圍(Z色域)時需要將每個像素視為完全覆蓋。換言之,因為片段著色器能「打開」在光柵化期間未被圖元覆蓋的樣本,應關心在提早z測試期間使用更保守之用於z色域的值以確保若由於片段著色器將此樣本從未覆蓋改變成覆蓋而在圖元中的任何未覆蓋樣本基於儲存在深度緩衝器中的值而可能看得見,則在著色之前不剔除片段。因此,當進行提早z測試時必須不使用每片的z(z-per-sliver)(即,在三角邊緣/像素邊緣相交處的z值)或圖元的原始z色域。
路徑算繪係為可能利用由片段著色器之樣本遮罩之控制的一個應用。路徑算繪係指用於算繪2D圖形的風格。在路徑算繪中,場景被指定為獨立於輪廓的螢幕解析度序列,稱為路徑,其可能被填滿或畫成短線(即,未填滿)。路徑能被畫成固定顏色、線性或徑向漸層、或影像。路徑算繪產生能獨立於螢幕解析度縮放的影像。在路徑算繪期間使用片段著色器以控制樣本遮罩的實例係為將一個樣本的覆蓋塗至像素中之樣本群組,使得樣本群組被視為好像它們在單一樣本位置。
多樣本色彩緩衝器係為可能利用由片段著色器之樣本遮罩之控制的另一個應用。反鋸齒係指用於降低由在限制解析度下取樣高頻資料所造成之影像產物的種種技術。一個技術,多樣本反鋸齒(MSAA)係指每 個像素執行一次片段著色器(例如,用於在像素之中心的單一樣本位置),但為像素中的每個樣本位置計算深度及模版值的實作。在MSAA中,單一色彩值基於用於片段的覆蓋資料來與色彩緩衝器中的值混合。在另一技術中,全場景反鋸齒(FSAA)或超取樣係指影像在較高解析度下產生且接著被降取樣以產生最終影像的實作。色彩值可能針對每個樣本位置被計算且與儲存在多樣本色彩緩衝器中的值混合。在著色全場景之後,可能過濾色彩緩衝器以產生用於每個像素的最終色彩值。
當在算繪演算法中利用多樣本色彩緩衝器時,多樣本色彩緩衝器中的每個槽對應於用於特定像素的特定樣本位置(或樣本位置之子集)。例如,多樣本色彩緩衝器可能每個像素包括四個槽,這裡四個槽各者對應於像素中的不同樣本位置。可能為被圖元覆蓋的每個樣本位置產生色彩值且儲存在多樣本色彩緩衝器中。因此,利用覆蓋資訊700以判定色彩緩衝器中的哪些槽應被覆寫或與被片段著色器輸出的色彩值混合。以傳統技術,多樣本色彩緩衝器中的資料只會被寫至被圖元覆蓋的多樣本色彩緩衝器之槽。對照下,當使用由片段著色器產生的樣本遮罩來取代在光柵化階段660期間產生的覆蓋資訊700時,則多樣本色彩緩衝器可能被視為更通用資料結構。更具體來說,可能使用片段著色器以寫入指示色彩緩衝器的哪個槽(或哪些槽)對應於片段著色器所輸出之色彩值的樣本遮罩。多樣本色彩緩衝器可能接著被利用為槽陣列,其能被寫入以具有由片段著色器選擇之索引的任意組。多樣本色彩緩衝器會接著被過濾以產生在算繪影像中之每個像素的單一值,或多樣本色彩緩衝器會在以程式定義的方式來處理多樣本色彩緩衝器中之資料的第二處理中被不同的片段著色器程式處理。
在一實施例中,片段著色器為每個片段產生單一色彩值。單一色彩值可能接著被覆寫、或與儲存在被覆蓋資訊所指之多樣本色彩緩衝器的每個槽中的值混合。換言之,即使對任何特定片段的所有像素產生單一色彩,基於關聯於覆蓋像素之樣本位置之多個圖元的多個片段可能為每個樣本位置儲存不同色彩。在另一實施例中,可能為每個特定樣本位置產生不同色彩值。例如,可能為在光柵化期間的每個樣本位置產生材質座標。接著執行複數個片段著色器執行緒,其中每個片段著色器執行緒關聯於特定 樣本位置。每個片段著色器執行緒接著基於用於此樣本位置的材質座標來從材質貼圖取樣色彩值。最後,將產生的色彩值寫至多樣本色彩緩衝器中的對應槽。
有多種使用例子,其中寫至多樣本色彩緩衝器中的任何任意槽之能力是有利的。例如,一個這樣的使用係為在反鋸齒架構中,其中多樣本色彩緩衝器中的槽數量小於關聯於可見度之樣本位置數量(即,深度及模版測試)。換言之,多樣本色彩緩衝器的解析度小於樣本位置的解析度。例如,像素可能關聯於用於可見度的16個樣本位置,但多樣本色彩緩衝器可能只包括兩個或四個槽用於儲存每個像素的色彩值。具有等於關聯於可見度之樣本位置數量的槽數量之多樣本色彩緩衝器可能需要太多記憶體。然而,可實作更可管理的多樣本色彩緩衝器,使得可能為每個像素儲存多個色彩值,同時仍然維持在較高解析度下的可見度資訊。可能接著基於較高解析度可見度資訊來混合儲存在色彩緩衝器中的多個色彩值。
藉由從可見度樣本位置去耦輸出色彩值,可能使用減少的槽數量來表示在例如深度緩衝器中的任何樣本位置。遺失演算法的一個可能實作可能是實作具有兩個槽的多樣本色彩緩衝器且基於儲存在兩個槽中之色彩值的權重平均來產生最終色彩值。可能基於由片段著色器產生的可見度資訊(即,樣本遮罩)來判定權重。
另一使用例子係為實作利用多樣本色彩緩衝器的順序無關透明化,其中演算法儲存每個像素之未排序的半透明色彩及深度列。演算法接著在後處理階段中排序及合成半透明色彩。片段著色器維持每個像素索引,其計數關聯於像素的半透明片段之數量。片段著色器會接著藉由設定樣本遮罩中的適當位元來儲存關聯於索引之樣本上的片段色彩及深度(即,基於覆蓋而不是以對應於此特定像素之半透明片段的順序而不在樣本位置中儲存色彩及深度樣本)。當索引計數超過樣本數量時,遮罩會被設為零且片段著色器會減少回到較慢之片段全域列以儲存關聯於像素的剩餘色彩/深度組合。
又一使用例子係為實作限制形式的保守光柵化。在保守光柵化中,可能產生覆蓋資訊,使得若任何樣本被圖元覆蓋,則所有樣本被視 為被圖元覆蓋。然而,當實作保守光柵化時,接著基於被「完全覆蓋」的像素進行典型深度及模版測試,這可能導致演算法中的一些不正確。反而,演算法可能藉由基於由光柵化產生之精確覆蓋資訊來進行提早z及/或模版測試且接著調整樣本遮罩以指示若用於片段之任何樣本位置被「覆蓋」則全部像素被「覆蓋」來實作保守光柵化。立體像素化及衝突偵測演算法可能得益於保守光柵化的「模版接著覆蓋」應用。
上述使用例子提供可能利用由片段著色器提供之樣本遮罩之控制的特定演算法之實例。然而,如在本揭露之範疇內地考量到上述概念的許多使用例子及應用。
第九圖繪示可能實作各種先前實施例之各種架構及/或功能性的示範系統900。如所示,提出系統900包括至少一中央處理器901,其連接至通訊匯流排902。通訊匯流排902可能使用任何適當協定(如PCI(周邊元件互連)、PCI-Express、AGP(加速圖形埠)、HyperTransport、或任何其他匯流排或點對點通訊協定)來實作。系統900也包括主記憶體904。控制邏輯(軟體)及資料係儲存在可能採取隨機存取記憶體(RAM)之形式的主記憶體904中。
系統900也包括輸入裝置912、圖形處理器906、及顯示器908(即,傳統CRT(陰極射線管)、LCD(液晶顯示器)、LED(發光二極體)、電漿顯示器或之類)。可能從輸入裝置912(例如,鍵盤、滑鼠、觸控板、麥克風、等等)接收使用者輸入。在一實施例中,圖形處理器906可能包括複數個著色器模組、光柵化模組等等。每個上述模組可能實際上位於單一半導體平台上以形成圖形處理單元(GPU)。
在本說明中,單一半導體平台可能係指單獨單一半導體為基積體電路或晶片。應注意到單一半導體平台之詞可能也稱為具有增加連接性的多晶片模組,其模擬晶片上操作、且透過利用傳統中央處理單元(CPU)及匯流排實作來產生大量改善。當然,也可能分開地或依照使用者的期望以各種半導體平台之組合來設置各種模組。
系統900可能也包括輔助儲存器910。輔助儲存器910包括例如硬碟機及/或可移除儲存裝置,表示軟碟機、磁帶機、光碟機、數位多 功能磁碟(DVD)機、錄影裝置、通用序列匯流排(USB)快閃記憶體。可移除儲存裝置以熟知方式從可移除儲存單元讀取及/或寫至可移除儲存單元。
可能在主記憶體904及/或輔助儲存器910中儲存電腦程式、或電腦控制邏輯演算法。上述電腦程式當被執行時使系統900能進行各種功能。記憶體904、儲存器910、及/或任何其他儲存器係為電腦可讀媒體的可能實例。
在一實施例中,可能在中央處理器901、圖形處理器906、有至少一部分之中央處理器901及圖形處理器906兩者之能力的積體電路(未顯示)、晶片組(即,設計以工作且販售為用於進行相關功能之單元的積體電路之群組、等等)、及/或用於此主題之任何其他積體電路的上下文中實作各種先前圖示的架構及/或功能。
又,可能在通用電腦系統、電路板系統、專用於娛樂目的之遊戲台系統、專用系統、及/或任何其他期望系統的上下文中實作各種先前圖示的架構及/或功能。例如,系統900可能採用桌上型電腦、膝上型電腦、伺服器、工作站、遊戲台、嵌入式系統、及/或任何其他邏輯類型的形式。又,系統900可能採用各種其他裝置的形式,包括但不限於個人數位助理(PDA)裝置、行動電話裝置、電視、等等。
此外,儘管未顯示,但系統900可能為了通訊目地而耦接至網路(例如,電信網路、區域網路(LAN)、無線網路、如網際網路的廣域網路(WAN)、點對點網路、有線電視網路、或之類)。
儘管以上已說明各種實施例,但應了解僅藉由舉例且非限制來呈現它們。因此,較佳實施例的寬度及範疇不應由任何上述示範實施例來限制,而應僅依照下方申請專利範圍及其等效來定義。

Claims (20)

  1. 一種方法,包括:產生對於至少部分被一圖元覆蓋之每個像素的一片段;判定對於對應於該圖元之每個片段的覆蓋資訊;針對每個片段:藉由一片段著色器產生一樣本遮罩;以該樣本遮罩替換對於該片段之該覆蓋資訊;及基於該樣本遮罩將由該片段著色器產生的一結果寫至一記憶體。
  2. 如申請專利範圍第1項所述之方法,其中一片段包括一資料結構,其包括一或更多內插屬性以及關於關聯於一特定像素之複數個樣本的覆蓋資訊。
  3. 如申請專利範圍第1項所述之方法,其中該圖元包括一資料結構,其包括大量頂點,其中該大量頂點中的每個頂點包括三維空間中的一座標以及一或更多頂點屬性。
  4. 如申請專利範圍第1項所述之方法,其中產生該片段及判定覆蓋資訊係在一圖形處理管線的一光柵化階段期間進行。
  5. 如申請專利範圍第4項所述之方法,其中該圖形處理管線係至少部分藉由包括複數個可編程串流多處理器(SM)的一平行處理單元實作,每個SM係配置以平行執行複數個片段著色器執行緒。
  6. 如申請專利範圍第5項所述之方法,其中每個片段著色器執行緒對應於在該圖形處理管線的該光柵化階段期間產生的一不同片段。
  7. 如申請專利範圍第5項所述之方法,其中產生該樣本遮罩係在該圖形處理管線的一片段著色階段期間進行,且其中以該樣本遮罩替換該覆蓋資訊係在該圖形處理管線的一光柵操作階段期間進行。
  8. 如申請專利範圍第7項所述之方法,其中該平行處理單元包括一光柵引擎,配置以至少部分實作該圖形處理管線的該光柵化階段、及一光柵操作單元,配置以至少部分實作該圖形處理管線的該光柵操作階段。
  9. 如申請專利範圍第1項所述之方法,其中該結果被寫至一多樣本色彩 緩衝器。
  10. 如申請專利範圍第1項所述之方法,其中該覆蓋資訊包括一N位元遮罩,該N位元遮罩中的每個位元對應於關聯於對應於該片段之像素的一不同樣本位置。
  11. 如申請專利範圍第10項所述之方法,其中該樣本遮罩包括N位元,該樣本遮罩之每個位元對應於該不同樣本位置。
  12. 如申請專利範圍第1項所述之方法,其中該片段著色器接收該覆蓋資訊。
  13. 一種儲存指令的非暫態電腦可讀儲存媒體,當該指令被一處理器執行時使該處理器進行步驟,包括:產生對於至少部分被一圖元覆蓋之每個像素的一片段;判定對於對應於該圖元之每個片段的覆蓋資訊;及針對每個片段:藉由一片段著色器產生一樣本遮罩;以該樣本遮罩替換對於該片段之該覆蓋資訊;及基於該樣本遮罩將由該片段著色器產生的一結果寫至一記憶體。
  14. 如申請專利範圍第13項所述之非暫態電腦可讀儲存媒體,其中一片段包括一資料結構,其包括一或更多內插屬性以及關於關聯於一特定像素之複數個樣本的覆蓋資訊,且其中該圖元包含一資料結構,其包括大量頂點,其中該大量頂點中的每個頂點包括三維空間中的一座標以及一或更多頂點屬性。
  15. 如申請專利範圍第13項所述之非暫態電腦可讀儲存媒體,其中該處理器包括一平行處理單元,其包括複數個可編程串流多處理器(SM),每個SM係配置以平行執行複數個片段著色器執行緒,且其中產生該片段及判定覆蓋資訊係在一圖形處理管線的一光柵化階段期間進行,該圖形處理管線係至少部分藉由該平行處理單元實作。
  16. 如申請專利範圍第13項所述之非暫態電腦可讀儲存媒體,其中該覆蓋資訊包括一N位元遮罩,該N位元遮罩中的每個位元對應於關聯於對 應於該片段之像素的一不同樣本位置,且其中該樣本遮罩包含N位元,該樣本遮罩之每個位元對應於該不同樣本位置。
  17. 一種系統,包括:一平行處理單元,配置以實作至少部分的一圖形處理管線,該平行處理單元係配置以藉由下列步驟來算繪圖元:產生對於至少部分被一圖元覆蓋之每個像素的一片段;判定對於對應於該圖元之每個片段的覆蓋資訊;及針對每個片段:藉由一片段著色器產生一樣本遮罩;以該樣本遮罩替換對於該片段之該覆蓋資訊;及基於該樣本遮罩將由該片段著色器產生的一結果寫至一第一記憶體。
  18. 如申請專利範圍第17項所述之系統,其中產生該片段及判定覆蓋資訊係在該圖形處理管線的一光柵化階段期間進行,其中產生該樣本遮罩係在該圖形處理管線的一片段著色階段期間進行,且其中以該樣本遮罩替換該覆蓋資訊係在該圖形處理管線的一光柵操作階段期間進行。
  19. 如申請專利範圍第17項所述之系統,更包含:一第二記憶體,儲存一圖形應用程式及一裝置驅動程式;及一主處理器,耦接至該記憶體及該平行處理單元,該主處理器係配置以執行該圖形應用程式及該裝置驅動程式;其中該裝置驅動程式實作對被圖形應用程式利用之一圖形API的延伸以使該平行處理單元以該樣本遮罩替換用於該片段之該覆蓋資訊。
  20. 如申請專利範圍第17項所述之系統,其中該平行處理單元包括複數個可編程串流多處理器(SM),每個SM係配置以平行執行複數個片段著色器執行緒。
TW104124570A 2014-07-29 2015-07-29 來自片段著色器程式之樣本遮罩的控制 TWI592902B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462030497P 2014-07-29 2014-07-29
US14/810,178 US9978171B2 (en) 2014-07-29 2015-07-27 Control of a sample mask from a fragment shader program

Publications (2)

Publication Number Publication Date
TW201618041A TW201618041A (zh) 2016-05-16
TWI592902B true TWI592902B (zh) 2017-07-21

Family

ID=55180567

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104124570A TWI592902B (zh) 2014-07-29 2015-07-29 來自片段著色器程式之樣本遮罩的控制

Country Status (3)

Country Link
US (1) US9978171B2 (zh)
CN (1) CN105321143A (zh)
TW (1) TWI592902B (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2537137B (en) * 2015-04-08 2021-02-17 Advanced Risc Mach Ltd Graphics processing systems
US9922449B2 (en) * 2015-06-01 2018-03-20 Intel Corporation Apparatus and method for dynamic polygon or primitive sorting for improved culling
US9881176B2 (en) * 2015-06-02 2018-01-30 ALTR Solutions, Inc. Fragmenting data for the purposes of persistent storage across multiple immutable data structures
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US10354365B2 (en) * 2016-01-18 2019-07-16 Adavanced Micro Devices, Inc. Hybrid anti-aliasing
US10068366B2 (en) * 2016-05-05 2018-09-04 Nvidia Corporation Stereo multi-projection implemented using a graphics processing pipeline
US10223809B2 (en) * 2016-05-27 2019-03-05 Intel Corporation Bandwidth-efficient lossy fragment color compression of multi-sample pixels
US11379941B2 (en) * 2016-09-22 2022-07-05 Advanced Micro Devices, Inc. Primitive shader
GB2556634B (en) * 2016-11-18 2020-05-27 Advanced Risc Mach Ltd Graphics processing systems
US10943389B2 (en) * 2016-12-09 2021-03-09 Advanced Micro Devices, Inc. Removing or identifying overlapping fragments after z-culling
US10445852B2 (en) * 2016-12-22 2019-10-15 Apple Inc. Local image blocks for graphics processing
US10497150B2 (en) * 2017-01-11 2019-12-03 Arm Limited Graphics processing fragment shading by plural processing passes
US10417815B2 (en) * 2017-01-27 2019-09-17 Advanced Micro Devices, Inc. Out of order pixel shader exports
US10650566B2 (en) * 2017-02-15 2020-05-12 Microsoft Technology Licensing, Llc Multiple shader processes in graphics processing
US10424107B2 (en) 2017-04-01 2019-09-24 Intel Corporation Hierarchical depth buffer back annotaton
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
US10134115B2 (en) * 2017-04-17 2018-11-20 Intel Corporation Progressive multisample anti-aliasing
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
US11010953B2 (en) 2017-04-21 2021-05-18 Intel Corporation Dedicated fixed point blending for energy efficiency
US10297047B2 (en) * 2017-04-21 2019-05-21 Intel Corporation Interleaved multisample render targets for lossless compression
US10178619B1 (en) 2017-09-29 2019-01-08 Intel Corporation Advanced graphics power state management
US10755383B2 (en) * 2017-09-29 2020-08-25 Apple Inc. Multi-space rendering with configurable transformation parameters
US10580151B2 (en) * 2017-12-05 2020-03-03 Qualcomm Incorporated Tile-based low-resolution depth storage
US11966348B2 (en) 2019-01-28 2024-04-23 Nvidia Corp. Reducing coupling and power noise on PAM-4 I/O interface
US10424074B1 (en) * 2018-07-03 2019-09-24 Nvidia Corporation Method and apparatus for obtaining sampled positions of texturing operations
US10861230B2 (en) * 2018-08-01 2020-12-08 Nvidia Corporation System-generated stable barycentric coordinates and direct plane equation access
CN111192351B (zh) * 2018-11-14 2023-06-02 芯原微电子(上海)股份有限公司 边缘抗锯齿的图形处理方法、系统、存储介质及装置
CN110288507B (zh) * 2019-05-06 2021-03-09 中国科学院信息工程研究所 一种基于gpu的多分区强连通图检测方法
US11151683B2 (en) * 2019-09-26 2021-10-19 Intel Corporation Use of inner coverage information by a conservative rasterization pipeline to enable EarlyZ for conservative rasterization
US11076151B2 (en) 2019-09-30 2021-07-27 Ati Technologies Ulc Hierarchical histogram calculation with application to palette table derivation
US11049216B1 (en) * 2020-01-21 2021-06-29 Arm Limited Graphics processing systems
US11030783B1 (en) 2020-01-21 2021-06-08 Arm Limited Hidden surface removal in graphics processing systems
US11915337B2 (en) 2020-03-13 2024-02-27 Advanced Micro Devices, Inc. Single pass downsampler
US11069095B1 (en) * 2020-06-02 2021-07-20 Nvidia Corporation Techniques for efficiently sampling an image
US11875448B2 (en) 2020-07-30 2024-01-16 Apple Inc. SIMD group formation techniques during ray intersection traversal
US11367242B2 (en) * 2020-07-30 2022-06-21 Apple Inc. Ray intersect circuitry with parallel ray testing

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7876332B1 (en) 2006-12-20 2011-01-25 Nvidia Corporation Shader that conditionally updates a framebuffer in a computer graphics system
US8203564B2 (en) 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US8098251B2 (en) 2008-02-22 2012-01-17 Qualcomm Incorporated System and method for instruction latency reduction in graphics processing
US8605086B2 (en) 2008-07-03 2013-12-10 Nvidia Corporation Hybrid multisample/supersample antialiasing
GB0819570D0 (en) 2008-10-24 2008-12-03 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
KR101799978B1 (ko) * 2011-06-17 2017-11-22 삼성전자주식회사 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치
GB2497302B (en) 2011-12-05 2017-04-12 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
US9652815B2 (en) 2012-09-11 2017-05-16 Nvidia Corporation Texel data structure for graphics processing unit programmable shader and method of operation thereof
US9830741B2 (en) 2012-11-07 2017-11-28 Nvidia Corporation Setting downstream render state in an upstream shader
US9292414B2 (en) 2012-11-26 2016-03-22 Nvidia Corporation System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU
US9183609B2 (en) 2012-12-20 2015-11-10 Nvidia Corporation Programmable blending in multi-threaded processing units

Also Published As

Publication number Publication date
US9978171B2 (en) 2018-05-22
TW201618041A (zh) 2016-05-16
CN105321143A (zh) 2016-02-10
US20160035129A1 (en) 2016-02-04

Similar Documents

Publication Publication Date Title
TWI592902B (zh) 來自片段著色器程式之樣本遮罩的控制
US10362289B2 (en) Method for data reuse and applications to spatio-temporal supersampling and de-noising
US10229529B2 (en) System, method and computer program product for implementing anti-aliasing operations using a programmable sample pattern table
US9747718B2 (en) System, method, and computer program product for performing object-space shading
US9754407B2 (en) System, method, and computer program product for shading using a dynamic object-space grid
US9547931B2 (en) System, method, and computer program product for pre-filtered anti-aliasing with deferred shading
TWI584223B (zh) 藉由追蹤物件及/或基元識別符的圖形處理增強之方法及系統,圖形處理單元及非暫時性電腦可讀媒體
CN109564700B (zh) 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化
CN107392988B (zh) 利用投影几何失真用于以可变采样率渲染的系统、方法和计算机程序产品
US9355483B2 (en) Variable fragment shading with surface recasting
US9177413B2 (en) Unique primitive identifier generation
US9317960B2 (en) Top-to bottom path rendering with opacity testing
US10417817B2 (en) Supersampling for spatially distributed and disjoined large-scale data
US9230363B2 (en) System, method, and computer program product for using compression with programmable sample locations
US10055883B2 (en) Frustum tests for sub-pixel shadows
US9230362B2 (en) System, method, and computer program product for using compression with programmable sample locations
US9269179B2 (en) System, method, and computer program product for generating primitive specific attributes
US10460504B2 (en) Performing a texture level-of-detail approximation
CN107392836B (zh) 使用图形处理管线实现的立体多投影
US9905037B2 (en) System, method, and computer program product for rejecting small primitives
US9721381B2 (en) System, method, and computer program product for discarding pixel samples
US10417813B2 (en) System and method for generating temporally stable hashed values
US9305388B2 (en) Bit-count texture format
US20150084952A1 (en) System, method, and computer program product for rendering a screen-aligned rectangle primitive
US20190236166A1 (en) Performing a texture level-of-detail approximation