TW202101251A - 分類單元、深度測試系統以及用於在畫素幾何形狀的分類期間選擇與深度篩選相關聯的涵蓋範圍合併規則的方法 - Google Patents

分類單元、深度測試系統以及用於在畫素幾何形狀的分類期間選擇與深度篩選相關聯的涵蓋範圍合併規則的方法 Download PDF

Info

Publication number
TW202101251A
TW202101251A TW109118535A TW109118535A TW202101251A TW 202101251 A TW202101251 A TW 202101251A TW 109118535 A TW109118535 A TW 109118535A TW 109118535 A TW109118535 A TW 109118535A TW 202101251 A TW202101251 A TW 202101251A
Authority
TW
Taiwan
Prior art keywords
depth
coverage
information
primitives
classification unit
Prior art date
Application number
TW109118535A
Other languages
English (en)
Other versions
TWI810462B (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
Priority claimed from US16/719,976 external-priority patent/US11315225B2/en
Application filed by 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW202101251A publication Critical patent/TW202101251A/zh
Application granted granted Critical
Publication of TWI810462B publication Critical patent/TWI810462B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration using histogram techniques
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Image Generation (AREA)
  • Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
  • Radar Systems Or Details Thereof (AREA)

Abstract

發明態樣包括用於在畫素幾何形狀的分類期間進行粗略深度篩選的分類單元。分類單元包括光柵化器以接收基元,並產生畫素涵蓋範圍資訊及深度資訊。分類單元包括一或多個區域篩選級,以在基元視窗內實行區域篩選。區域篩選單元輸出殘存涵蓋範圍及殘存深度資訊的集合。分類單元包括一或多個全域篩選級,以使用殘存涵蓋範圍及殘存深度資訊的集合來基於先前接收的涵蓋範圍資訊及深度資訊的整體進一步進行篩選。

Description

分類期間粗略深度篩選
本實施例是有關於圖形處理單元(graphics processing unit,GPU),且更具體而言有關於用於在分類(binning)期間進行粗略深度篩選(coarse depth culling)的系統及方法。 [相關申請案資料]
本申請案主張於2019年6月20日提出申請的美國臨時專利申請案62/864,443的權益,所述美國臨時專利申請案的內容全文併入本案供參考。
GPU是加速對電腦產生的圖形的處理的專用裝置。GPU亦用於例如神經網路、人工智慧(artificial intelligence,AI)、高效能系統、自主載具、行動裝置、遊戲系統等各種現代計算環境。
隱藏面移去(Hidden surface removal,HSR)方法指代自照相機中移去被更靠近照相機的其他表面隱藏或堵塞的表面,使其不被處理。桌上型GPU維持深度緩衝器,深度緩衝器能夠篩選其深度指示其被其他已經處理的四元組堵塞的四元組(即,2x2畫素區塊)。此種方案的有效性取決於表面自前至後排序的程度。
現有的HSR方法主要針對移去隱藏的四元組,而不是針對要移去的隱藏面的構成頂點及基元(primitive)。行動GPU可產生前端遍次(通常是頂點著色)的所有輸出屬性,並回讀所述屬性。相當多的資源及精力花費在處理大部分被完全堵塞的基元及其頂點上,最終不會產生任何可見的四元組。GPU一般在篩選最終將被較後四元組所堵塞的四元組方面能力有限。一種傳統方式涉及在畫素著色之前緩衝四元組,以辨識緩衝器中堵塞較早四元組的較後四元組。然而,此種方式受限於實際成本效益高的緩衝器大小。
大部分基於瓦片的延緩渲染(tile-based deferred rendering,TBDR)GPU每一基元每一影像運行一次前端級,並將結果暫存至中間緩衝器中,從而每一瓦片自中間緩衝器進行一次讀取,以運行片段/畫素級。該些TBDR GPU中的一些可能會對HSR使用相似的方式。基於瓦片的GPU具有分類步驟,其中幾何形狀是根據其所影響的畫素瓦片而排序。瓦片是矩形畫素區塊。分類單元(有時被稱為鋪瓦器(tiler))創建入射於每一畫素瓦片上的繪圖(draw)及基元的列表。基元是座標系中的幾何形狀,通常是三角形。瓦片是畫素組。分類單元容許渲染每瓦片地進行操作,僅處理那些影響瓦片的基元。傳統的分類僅為一種空間上的分類,且不慮及可見性。換言之,不排除瓦片內被其他基元堵塞的基元。
不包含可見性會導致影像中某些畫素的過度繪製(overdraw)或重複著色。藉由可見性篩選,可減少畫素的重複著色量,且亦可保存對應的畫素著色器叫用(pixel shader invocation)。
一些實施例包括一種用於在畫素幾何形狀的分類期間進行粗略深度篩選的分類單元。分類單元包括光柵化器以接收基元,並產生畫素涵蓋範圍資訊及深度資訊。分類單元包括一或多個區域篩選級,以在基元視窗內實行區域篩選。區域篩選單元輸出殘存涵蓋範圍及殘存深度資訊的集合。分類單元包括一或多個全域篩選級,以使用殘存涵蓋範圍及殘存深度資訊的集合來基於先前接收的涵蓋範圍資訊及深度資訊的整體進一步進行篩選。
現在將詳細參照本文中揭露的實施例,所述實施例的實例示出於附圖中。在以下詳細說明中,闡述諸多具體細節以使得能夠透徹地理解本發明概念。然而,應理解,此項技術中具有通常知識者無需該些具體細節即可實踐本發明概念。在其他情形中,未對眾所習知的方法、程序、組件、電路及網路予以詳細闡述,以避免不必要地使實施例的態樣模糊不清。
應理解,儘管本文中可能使用「第一」、「第二」等用語來闡述各種元件,然而該些元件不應受該些用語限制。該些用語僅用於區分各個元件。舉例而言,在不背離本發明概念的範圍的條件下,可將第一基元稱為第二基元,且相似地,可將第二基元稱為第一基元。
本文中在對本發明概念的說明中所使用的術語僅用於闡述具體實施例,而並非旨在限制本發明概念。除非上下文中另外清楚地指明,否則在對本發明概念的說明及隨附申請專利範圍中所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包括複數形式。亦應理解,本文所用用語「及/或(and/or)」指代且囊括相關聯所列項中一或多個項的任意及所有可能組合。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。圖式中的組件及特徵未必按比例繪製。
一些實施例包括一種擴充式分類單元,所述擴充式分類單元包括基於可見性自每瓦片列表篩選繪圖及基元的能力。本文中揭露的分類單元可以畫素(或畫素組)級別的粒度創建對最終深度表示的粗略近似。分類單元亦可最小化在分類過程期間消耗的記憶體頻寬。分類單元可藉由篩選基元及繪圖調用(drawcall)以使其在瓦片遍次中不被處理來減少工作。分類單元可藉由預加載粗略深度表示來改善現有「Early-Z」硬體的篩選效能,藉此導致更少的畫素及/或片段被著色。「Early-Z」是每畫素著色實行的深度處理的一種形式。
對於每一基元,本文中揭露的分類單元可以必要的粒度(granularity)(例如,樣本或畫素)對基元進行光柵化(rasterize)。當每畫素存在僅一個樣本時,則一個樣本相當於一個畫素。儘管不要求每畫素存在僅一個樣本,然而在本文中用語「樣本」與「畫素」一般被可互換地使用。分類單元可針對每一畫素區塊、大小經預先定義的區塊計算每一基元的深度範圍。分類單元可使用此種每基元{涵蓋範圍,深度範圍}({coverage, depth range})資訊來維持影像的中間{涵蓋範圍,深度範圍}表示,最終得到最終{涵蓋範圍,深度範圍}表示。分類單元可以粗略、壓縮的方式維持{涵蓋範圍,深度範圍}表示。分類單元可使用中間{涵蓋範圍,深度範圍}表示自一或多個瓦片篩選基元。
在一些實施例中,分類單元可將{涵蓋範圍,深度範圍}表示維持為階層(hierarchy)。在一些實施例中,階層可維持於硬體電路中。階層中的後續步驟可使用相同的涵蓋範圍粒度,或者進行粗略化。每一步驟可維持一或多個基元的{涵蓋範圍,深度範圍}表示、基元視窗或者目前為止看到的所有基元的子集。某些步驟可僅在晶片上維持此種{涵蓋範圍,深度範圍}表示(例如,使用硬體電路),而其他步驟可藉由記憶體對晶片上快取進行備份。
示例性階層可包括第一步驟,第一步驟在晶片上維持基元視窗的{涵蓋範圍,深度範圍}表示,其中涵蓋範圍以樣本/畫素粒度來維持,以分別用於抗混淆渲染(anti-aliased rendering)/混淆渲染(aliased rendering)。第二步驟可在具有晶片上快取的記憶體中維持目前為止看到的所有基元(必要時有例外)的{涵蓋範圍,深度範圍}表示。涵蓋範圍可以畫素或畫素區塊進行維持,以分別用於抗混淆渲染或混淆渲染。在一些實施例中,畫素區塊是四元組,即2x2畫素區塊。
示例性階層的第一步驟可基於來自當前基元視窗的深度篩選新進基元(incoming primitive)。在一些實施例中,第一步驟可基於來自新進基元的深度篩選整個當前基元視窗。示例性階層的第二步驟可基於來自先前基元的深度篩選新進基元或基元視窗。在一些實施例中,第二步驟可基於來自新進基元或基元視窗的深度篩選所有先前基元。
本文中揭露一種在分類遍次中進行操作的基於粗略深度的隱藏面移去技術,分類遍次可產生壓縮計數串流表示(compressed count stream representation)來指示哪些基元及繪圖調用影響特定的瓦片,且不需要包括在最終渲染影像中不可見的大部分基元及繪圖調用。所揭露的技術亦可為影像產生近似的壓縮深度及涵蓋範圍表示,以用作預加載深度緩衝器,從而藉由由圖形應用專用介面(或應用程式化介面(application programming interface,API))委任的現有深度篩選硬體來增加畫素篩選。對於每一畫素區塊,可以畫素或畫素區塊為粒度、結合深度範圍的字典(dictionary)來創建粗略涵蓋範圍遮罩。在一些實施例中,可保證每一所涵蓋的實體(即,畫素或畫素區塊)具有處於所述字典內的特定深度範圍內的深度值。
所揭露的分類單元可在分類遍次中篩選基元,藉此減少在色彩遍次期間處理的基元的數目。此種技術可減少在色彩遍次中由GPU前端管線對基元進行的每瓦片處理(per-tile processing)。此種技術亦可減少當用僅產生頂點及基元位置資訊的減少的著色器運行分類遍次時的總體前端著色成本。若繪圖內的所有基元由於深度考量而被篩選,則分類單元可篩選繪圖,藉此減少狀態管理的費用及效能影響。分類單元可在色彩遍次中使用粗略的深度-涵蓋範圍表示來篩選畫素及畫素四元組,藉此在總體上減少畫素著色器叫用的數目及畫素處理成本。
在一些實施例中,分類單元使用{涵蓋範圍,深度}({coverage, depth})表示構成的階層,其可儲存於例如快取等硬體電路中。在一些實施例中,分類單元使用來自較早基元的深度篩選較後基元。在一些實施例中,分類單元使用來自較後基元的深度篩選較早基元的範圍。
本文中闡述的一些實施例包括用於基於瓦片的延緩渲染(TBDR)GPU的高效三維(three dimensional,3D)渲染的粗略可見性篩選架構。解決了傳統TBDR GPU中的至少兩種低效情況:1)不必要的過度繪製;以及2)在分類或鋪瓦(tiling)之後進行渲染期間處理不必要的基元。本文中闡述的方法及系統擴充使用粗略可見性篩選步驟來確定影響特定瓦片的基元及繪圖調用列表的分類器或鋪瓦器,以最小化過度繪製量。
本文中闡述的方法及系統包括擴充式分類單元或鋪瓦器單元(本文中一般稱為「分類單元」),除產生入射於每一瓦片上的繪圖及基元的列表以外,若由繪圖/基元產生的所有片段均被較早的繪圖/基元堵塞,則擴充式分類單元或鋪瓦器單元亦自此種列表篩選繪圖及基元。此外,本文中闡述的方法及系統藉由以下方式來最小化過度繪製:在分類期間在影像的每一畫素處創建粗略深度表示,並將該表示預加載至深度緩衝器中,以使Early-Z硬體消除將被較後片段堵塞的片段。
藉由使用本文中闡述的方法及系統,GPU可最小化浪費的工作量,即在包括頂點及較後著色器的前端管線中處理基元時浪費的工作量以及在包括畫素著色器的後端管線中處理畫素四元組時浪費的工作量。
藉由在分類遍次期間處理變換後的基元,本文中闡述的方法及系統在接收到每一基元的情況下創建對影像中可見深度範圍的中間表示,最終得到最終深度表示,所述最終深度表示可在色彩遍次中的影像渲染期間被預加載。另外,一些實施例以粗略、壓縮的表示維持中間深度表示,以減少其記憶體佔用面積(memory footprint)。此外,一些實施例將深度表示維持為多個集合,每畫素或每四元組選擇器選擇深度集合以即使在區塊中多個表面為現用時亦確保良好的深度解析度。此外,一些實施例使用中間深度表示來在分類遍次本身期間篩選全部的基元。此外,最終深度表示可在色彩遍歷期間被預加載為起始深度緩衝器(starting depth buffer),以篩選各別畫素及四元組。本文中闡述的方法及系統可使用替代但互補的方式,所述方法不限於在由成本效益高的緩衝器大小決定的有限視窗內辨識此種四元組。相反,本文中闡述的方法及系統可在所使用的分類期間產生粗略深度緩衝器。
本文中揭露的一些實施例包括在分類遍次中進行操作的基於粗略深度的隱藏面移去方法。分類遍次可產生壓縮計數串流表示來指示哪些基元及繪圖調用影響特定的瓦片,且不包括在最終渲染影像中不可見的大部分基元及繪圖調用。分類遍次可為影像產生近似的壓縮深度及涵蓋範圍表示,以用作預加載深度緩衝器,從而藉由由圖形API通知的現有深度篩選硬體來增加畫素篩選。對於每一畫素區塊,一些實施例可以畫素或畫素區塊為粒度、結合深度範圍的字典來創建粗略涵蓋範圍遮罩。在一些實施例中,保證每一所涵蓋的實體(畫素或畫素區塊)具有處於所述字典內的特定深度範圍內的深度值。一些實施例使用粗略深度-涵蓋範圍表示來在分類遍次中篩選基元,藉此減少在色彩遍次期間處理的基元的數目。此進而可減少在色彩遍次中由前端管線對基元進行的每瓦片處理,且減少當用僅產生頂點及基元位置資訊的減少的著色器運行分類遍次時的總體前端著色成本。
若繪圖內的所有基元由於深度考量而被篩選,則一些實施例會篩選繪圖,從而減少狀態管理的費用及效能影響。一些實施例在色彩遍次中使用粗略的深度-涵蓋範圍表示來篩選畫素及畫素四元組,藉此在總體上減少畫素著色器叫用的數目及畫素處理成本。
本文中揭露的分類單元的一些優點是,所述分類單元不依賴於應用自前至後對幾何形狀進行排序,且即使幾何形狀被自後至前提交,分類單元亦可成功地篩選大部分被堵塞的四元組。另一優點是,本文中闡述的分類單元不需要大的緩衝器來保持四元組,且不受保持四元組以達成篩選的潛時(latency)所影響。又一優點是,由於基於近似深度緩衝器篩選基元及四元組,因此減少了在渲染任何具有顯著深度複雜性的影像期間的畫素著色器叫用。又一優點是,由於篩選其四元組被完全堵塞的基元,因此減少了前端著色工作以及相關聯的頂點著色、設置及光柵化。另一優點是,由於篩選某些對任何可見四元組均沒有貢獻的繪圖,因此減少了狀態管理費用。輔加益處包括減少了著色器叫用,包括減少了紋理(texture)、頂點屬性及相關聯固定功能處理的記憶體頻寬。另外,在渲染期間達成了降低的過度繪製率,從而減少了浪費的畫素著色工作。
圖1是根據一些實施例的分類單元100的實例圖。分類單元100可在分類遍次(binning pass)期間實行一些近似但保守(conservative)的HSR,以便避免運行附加遍次來實行相同操作的成本及複雜性。因此,實行所述技術的附加複雜性局限於分類單元100本身。分類單元100可在GPU中實行分類工作,獲得影像內的基元及繪圖調用串流,並產生壓縮計數串流—每實體每瓦片一個,其中實體(entity)是基元或繪圖調用。分類可以單一瓦片為粒度實行,或者作為另一選擇以多個瓦片為粒度實行。分類的結果是為影像中的所有分類瓦片產生壓縮計數串流。分類單元100可實行兩種HSR:1){基元,瓦片}篩選及2)四元組篩選。
{基元,瓦片}篩選涉及自特定瓦片的壓縮計數串流移去基元,此節省了前端處理及後端處理的工作。本文中使用的縮短的用語「基元」指代一或多個基元。瓦片是由GPU作為單一交易進行渲染的矩形畫素區塊。壓縮計數串流記錄實體是否影響瓦片的渲染結果,其中實體可為基元、繪圖調用或別的形式。
四元組篩選(quad culling)可產生用於預加載的近似Z緩衝器。此在色彩遍次(color pass)期間節省了畫素著色器叫用四元組。四元組是被一起渲染以使得能夠存取紋理的2x2矩形畫素區塊。所揭露的技術處置四元組被較後四元組堵塞的情形,且因此,所揭露的技術不依賴於自前至後的堵塞分類。
在高層級處,分類單元100可跨越基元聯合涵蓋範圍與深度,在{基元,瓦片}產生時用此種結構篩選{基元,瓦片},並將粗略深度儲存於記憶體中。分類單元100可包括光柵化器105,光柵化器105能夠以樣本粒度產生涵蓋範圍資訊以及在粗略範圍(coarse range)內在所述樣本處內插深度(interpolating depth)。光柵化器105可包括第一級粗略光柵化器110,第一級粗略光柵化器110可接收基元及/或頂點資料102,且可以畫素區塊為粒度計算涵蓋範圍。此第一級可用深度內插邏輯120來擴充,深度內插邏輯120可計算畫素區塊的隅角(corner)處的深度範圍。粗略光柵化器110可輸出中間光柵化器資訊122,中間光柵化器資訊122可包括2x2瓦片隅角或區塊處的邊緣方程式及值以及該粒度下的深度資訊。可對2x2瓦片隅角或區塊進行重新定序,而不是運行瓦片。此會最大化下文論述的串流累加器(stream accumulator,SA)條目(SA條目)135的區域性(locality)。光柵化器105亦可包括第二級精細光柵化器115,第二級精細光柵化器115可接收中間光柵化器資訊122,並以畫素為粒度計算涵蓋範圍。粗略光柵化器110可以區塊為粒度計算光柵化及深度。精細光柵化器115可慮及來自粗略光柵化器110的粗略光柵化結果(或中間光柵化器資訊)122計算畫素/樣本涵蓋範圍。光柵化器105可輸出具有深度及畫素涵蓋範圍的{基元,瓦片,區塊}({prim, tile, block})資訊125。
分類單元100的一或多個區域篩選級130可實行基於涵蓋範圍及深度的篩選。區域篩選級130可使用粒度精細的涵蓋範圍粒度實行在基元及繪圖調用視窗內進行操作的區域篩選,而沒有任何備份狀態。此種級對瓦片內的基元及繪圖調用視窗進行操作,並使用僅來自該些基元的深度來篩選視窗內的基元。此種篩選可使用較後基元來篩選較早基元,反之亦然,即此種級可在序列中向前或向後篩選。區域篩選級130可包括多個串流累加器條目(SA條目)135、一或多個累加器140及清除控制邏輯145。SA條目135可創建經歷或(OR)運算的涵蓋範圍遮罩並維持每一區塊的深度範圍。
分類單元100可對較本文中提及的被稱為「區塊」的瓦片小的畫素區塊進行操作。{涵蓋範圍,深度範圍}表示在本文中可稱為「節點(node)」。節點可定義區塊中的畫素/四元組涵蓋範圍以及畫素/四元組所落入的深度範圍。區塊的尺寸及深度字典的大小可在設計時進行選擇,以便最小化硬體成本。其他實施例可選擇動態地改變區塊尺寸及深度字典大小。
區域篩選級130可對最近基元視窗本地的狀態進行操作,且能夠篩選過往基元及當前基元。因此,區域篩選級130可使用來自過往K個基元的涵蓋範圍及深度資訊來篩選區塊內的所述過往K個基元中的一些或所有者,或者篩選當前基元。區域篩選級130不需要知道此視窗之外的任何基元。視窗的大小可定義晶片上硬體成本,且可在設計時進行選擇。其他實施例可選擇其他大小或進行動態大小確定。
分類單元100可包括一或多個全域篩選級或邏輯150,所述一或多個全域篩選級或邏輯150可更新區域篩選級130的輸出155。舉例而言,全域篩選級150可自第一級區域篩選級130篩選基元視窗,並使用該些基元來使用來自第一級(即,130)的新進涵蓋範圍/深度資訊(即,輸出155)篩選整個先前看到的涵蓋範圍,反之亦然。全域篩選級150可包括可選的擴展以改善篩選行為。舉例而言,全域篩選級150可實施依賴於上下文的篩選行為,以處置特殊的篩選行為,從而對特定的幾何形狀(如3D空間中的圓錐體或球體)實行內外測試(inside-outside test),其中若三角形涵蓋的所有畫素均位於三角形的一側(例如,沿三角形法線的一側)上,則可篩選作為圓錐體一部分的三角形。若影像預加載作為來自另一影像的輸出而創建的深度緩衝器,則全域篩選級150可用作此後續影像的起始點,以改善篩選效能。因此,可使用一或多種用於工作量專用篩選的定製擴展,其不需要可見性篩選或隱藏面移去。全域篩選級或區域篩選級可使用所述一或多種定製擴展。
全域篩選邏輯150可包括下文詳細闡述的深度測試模組705。在一些實施例中,全域篩選級150包括源於現有分類/鋪瓦邏輯的可選組件。舉例而言,全域篩選級150可包括重新定序隊列160,重新定序隊列160可對備份資料駐留於晶片上記憶體中(例如,晶片上緩衝器165中)的交易進行優先化。在一些實施例中,全域篩選級150包括分類邏輯182,分類邏輯182可創建欲由後續GPU渲染級消耗的所涵蓋繪圖調用及基元串流。用於此種串流的記憶體可由分配器單元170提供,且資料可由合併邏輯區段175寫入串流中。合併邏輯區段175可在晶片上實施。合併邏輯區段175可自區域篩選級130接收計數寫入請求180,並使用由分配器單元170分配的記憶體來更新壓縮計數串流。在一些實施例中,全域篩選級150包括寬且窄的晶片上網路(network-on-chip,NOC)185,以與系統記憶體快取階層及/或記憶體子系統(未示出)進行通訊。
晶片上緩衝器165可包括預取隊列162、描述符資料164、壓縮計數串流資料或位元串流資料166以及例如粗略深度資訊等全域篩選資料168。預取隊列162可包括確保晶片上緩衝器165的最大利用率的潛時先入先出(first-in-first-out,FIFO)。換言之,那些具有晶片上資料的交易可被給予較需要自記憶體子系統提取資料的其他交易高的優先級。晶片上緩衝器165可與二級(level 2,L2)快取190耦合。全域篩選資料168可包括下文詳細闡述的深度更新邏輯區段905。
全域篩選級150可使用來自所有過往基元的粗略及/或精細深度資訊及涵蓋範圍資訊來篩選自區域篩選級130獲得的當前基元集合。全域篩選級150能夠篩選過往基元集合及當前基元集合。
圖2是示出隱藏面移去(HSR)技術的實例圖200。HSR減少了渲染基元的時間及資源,假設所有有問題的基元均是不透明的,則基元最終將是不可見的。大部分現代GPU包含一些隱藏面移去技術。如階段210中所示,渲染隊列202保持基元0、1、2及3,且螢幕205最初是空白的。在階段215處,基元0及1示出於螢幕205上,且基元2及3保留於渲染隊列202中。在階段220處,渲染隊列202是空的,且基元2及3被螢幕205上的基元0及1堵塞。換言之,基元2及3較之於基元0及1具有較遠的深度,基元0及1具有較近的深度。因此,可移去基元2及3的表面,以減少渲染該些基元的時間及資源。
圖3是根據一些實施例的{基元,瓦片}篩選及四元組篩選的實例圖300。在分類遍次期間,較後基元可能被來自先前基元的深度資訊完全隱藏。分類單元(例如,圖1所示100)可以粗略的方式收集此種資訊,並在分類遍次內使用此種資訊自瓦片整體地篩選基元。此種篩選可表達於壓縮計數串流本身中,此意味著在色彩遍次中,可保存前端(VS,頂點著色器(vertex shader))及後端處理(PS,畫素著色器(pixel shader))。
可由分類單元100實行的第二種篩選形式涉及提供影像的粗略深度表示,以提高Early-Z篩選的效力。因此,可創建深度緩衝器的最終或接近最終版本。最終或接近最終版本可在運行全色遍次之前預加載。此種篩選形式節省了後端工作(PS),但仍然會導致對該些基元運行前端(VS)的懲罰(penalty)。
如圖3中所示,瓦片305可包括16x16畫素區塊(例如,310)。瓦片305可具有其他大小,例如32x16、32x32、64x32、64x64等等。應理解,可使用其他合適的瓦片大小。如階段330處所示,可處理基元0及1。分類單元(例如,圖1所示100)可對基元0及1進行光柵化,並對粗略涵蓋範圍及深度資訊進行累加。深度資訊可為預先定義的最小值與最大值之間的深度範圍。在階段335處,分類單元100可對照粗略涵蓋範圍及深度資訊檢查每一後續基元(例如,基元2及3)。分類單元100可拒絕來自瓦片305的基元2及3。所述拒絕可記錄於壓縮計數串流中。換言之,可篩選全部的基元2及3。如在315處所示,{基元,瓦片}篩選發生於分類遍次期間,此為益處320中的一者。
在階段340處,分類單元100可將粗略涵蓋範圍及深度資訊寫入記憶體。分類單元100可在色彩遍次期間將粗略涵蓋範圍及深度資訊預加載至瓦片緩衝器350中。瓦片緩衝器350在本文中有時被稱為深度緩衝器。瓦片緩衝器350可在色彩遍次期間保持瓦片的所有色彩及深度(Z)資訊。在色彩遍次開始之前預加載深度緩衝器使得GPU能夠使用該深度緩衝器進行Early-Z篩選,Early-Z篩選測試不透明對象以看其在最終影像中是否可見。在階段345處,瓦片緩衝器350中現有的Early-Z邏輯可在色彩遍次期間拒絕附加的畫素或四元組。舉例而言,由於深度資訊,基元K的多個畫素或四元組可能被Early-Z篩選。此階段被稱為色彩遍次期間的四元組篩選325,此為益處320中的一者。所述兩個加粗的畫素/四元組355失敗,因此基元K會丟失一些畫素,藉此節省畫素著色工作。以虛線示出的所述三個畫素/四元組360通過,並將被渲染。
分類單元100可在不同的模式下操作。舉例而言,分類單元100可在區域篩選級130及全域篩選級150被賦能的模式下操作。在另一模式下,區域篩選級130及全域篩選級150可被去能,但仍然可實行完全光柵化(full rasterization)。在又一模式下,區域篩選級130及全域篩選級150可被賦能,且可實行完全光柵化。欲在將深度緩衝器預加載至瓦片緩衝器350中時使用的深度可基於預先定義的最小深度及預先定義的最大深度來確定。舉例而言,最小深度可設定為0,且最大深度可設定為1。另舉一例,最小深度可設定為0.3,且最大深度可設定為0.6,且該範圍之外的一切都是不可見的。再舉一例,自0.5至0.6的深度範圍將使得處理更加便宜。每一畫素的樣本數目亦可被預先定義或設定。
分類單元100可以畫素粒度在內部維持涵蓋範圍,但可以四元組粒度將涵蓋範圍儲存於記憶體中。這樣做可減少記憶體佔用面積。由於儲存時涵蓋範圍粗略化至四元組粒度,因此被部分涵蓋的四元組可被錯過。因此,分類單元100藉由對{基元,瓦片}進行重新定序來增加涵蓋範圍對於瓦片的區域性,從而降低了被部分涵蓋的四元組出現的機率。
已作出努力來減少深度比較的數目,此乃因每一比較將會導致不小的能量及通量成本。因此,可對基元叢集(cluster)實行深度測試,而不是對每一基元實行深度測試。深度更新亦可在叢集層級隱式實行,此乃因在測試之前已作出努力來組合完整的四元組。已作出顯著努力來減少自晶片上緩衝器(例如,圖1所示165)去往記憶體(例如,圖1所示190)的深度更新的數目。已作出相似的努力來減少分類單元100粗略深度資料的每瓦片佔用面積,以便使記憶體業務量(memory traffic)的增加最小化。
圖4是根據一些實施例的儲存於記憶體中的節點深度及涵蓋範圍結構的實例圖400。儘管在內部,分類單元100可以不同的格式維持深度及涵蓋範圍資訊,但當寫入記憶體時,所述資訊可以圖4中所示的格式進行佈局。所述節點可包括填充(pad)(例如,4位元組),以使每一節點總共為32位元組。深度資訊可以上部的16位元組(帶有所述4位元組的填充)來進行佈局,且涵蓋範圍資訊可以下部的16位元組來進行佈局。圖4中所示的節點未必按比例繪製。多個節點可在記憶體中相連地進行佈局,任何兩個節點之間沒有空的空間。
以下偽碼(pseudo-code)示出用於確定用於區域篩選級130及全域篩選級150的操作的不同控件的邏輯流程。
/// If State enabled, then enable depth test and update
bool DepthModeEnable = (State.Mode == ENABLE_FULLRAS_ENABLE);
/// Control variables
/// Whether the depth test is enabled
bool depthTestEnable   = DepthModeEnable;
/// If depth test is disabled (i.e. depthTestEnable == false), then what does the
/// depth test resolve to. True: always pass, False: always discard
bool alwaysPass        = true;
/// Whether the depth update is enabled,i.e. whether Depth can be updated
bool depthUpdateEnable = DepthModeEnable;
/// Step 1, control by State.DepthTestMode
/// Notation overload, means true if LHS is equal to *any* of the values in {}
depthTestEnable   &= (State.DepthTestMode == {EARLYZ, LATEZ_WITH_EARLYZ_COMPARE});
depthUpdateEnable &= (State.DepthTestMode == EARLYZ);
/// Auxiliary step, change whether we always pass or not
alwaysPass = (State.DepthFunc != NEVER);
/// Step 2, control by other State fields
/// If any State indicates that PS may modify coverage, we cannot update depth
/// We’re still ok to depth test though
/// Notation warning: ! means boolean not operation
depthUpdateEnable &= (!State.PSUsesDiscard && !State.PSWritesCoverage &&
!State.SampleAlphaToCoverage);
/// If any State says PS writes a Z value, then cannot rely on interpolated Z,
/// and if Z writes are disabled, we cannot update
depthTestEnable   &= (!State.PSWritesZ);
depthUpdateEnable &= (!State.PSWritesZ && State.DepthWriteEnable);
/// If any stencil test is enabled, we cannot guarantee coverage is same as
/// rasterized coverage at the end. But we can still cull using depth test
depthUpdateEnable &= (!State.StencilTestEnable);
/// If blending is enabled, then we can “see through” objects
/// DSA/local culling stage must enable depth testing iff (depthTestEnable && (State.BlendEnable == 0))
/// Merge enables depth testing iff (depthTestEnable)
// depthTestEnable   &= (State.BlendEnable == 0);
depthUpdateEnable &= (State.BlendEnable == 0);
/// Step 3, control by driver overrides
depthTestEnable   &= (!State.SkipDepthTest);
depthUpdateEnable &= (!State.SkipDepthUpdate);
/// Complete
圖5是根據一些實施例的使用(圖1所示)區域篩選級130來實施深度及涵蓋範圍合併的情形的實例圖500。圖6是包括圖5中所示各種區塊的圖例600的圖。現在參照圖1、圖5及圖6。
圖5中使用了幾種簡寫符記。舉例而言,一些來自SA條目(例如,135)中的一或多個基元的「Ex(isting)」涵蓋範圍及深度受到來自一個基元的「IN(coming)」涵蓋範圍及深度的影響。換言之,「EX」是現有涵蓋範圍及/或深度的簡寫,且「IN」是新進涵蓋範圍及/或深度的簡寫。大量等效的簡寫符號被用來闡述合併類別505。舉例而言,X == Y意味著X與Y涵蓋完全相同的畫素/四元組。X > Y意味著X的涵蓋範圍是Y的涵蓋範圍的嚴格超集合(strict superset),即X涵蓋Y的所有畫素/四元組以及一些附加的畫素/四元組。X < Y意味著Y的涵蓋範圍是X的涵蓋範圍的嚴格超集合,即Y涵蓋X的所有畫素/四元組以及一些附加的畫素/四元組。包括一個「ALL OTHERS(所有其他)」類別,其為針對不屬於==、>或<運算子者的籠統合併類別。
區域篩選級130的行為可由涵蓋範圍合併規則510來指導。所應用的特定涵蓋範圍合併規則可基於合併類別505及深度資訊515。舉例而言,區域篩選級130可在IN.Cov == EX.Cov且現有深度是新進深度的超集合時應用涵蓋範圍規則520。在此種情形中,區域篩選級130將實行「保持兩者 特殊深度(keep both special depth)」,下文參照圖6以及其他可能涵蓋範圍合併規則中的每一者的定義對「保持兩者 特殊深度」進行了進一步詳細闡釋。另舉一例,區域篩選級130可在IN.Cov < EX.CoV且現有深度佳於新進深度時應用涵蓋範圍合併規則525。下文參照圖6進一步對「保持兩者 聯合深度(keep both union depth)」的涵蓋範圍合併規則525進行了闡述。
深度資訊515涵蓋六行可能性,所述六行可能性中的每一者均在圖5中示出:1)新進深度嚴格更佳、2)新進深度更佳、3)現有深度超集合、4)新進深度超集合、5)現有深度更佳及6)現有深度嚴格更佳。圖5中的該些可能性中的每一者的例示是針對MIN(即最小)深度與MAX(即最大)深度之間的深度範圍而示出。
如圖6中所示,圖例600為圖5所示涵蓋範圍合併規則510中的每一者提供了附加闡釋。圖6亦示出該些規則相對於篩選效能的相關性。為維持正確性,區域篩選級130可作出最大化篩選效能的合併規則選擇。
規則類型605被概括為「捨棄X 維持Y.深度(discard X maintain Y.depth)」,其中X表示「EX」或「IN」中的一者,且Y表示「EX」或「IN」中的另一者,如圖5中所示。相似地,規則類型610被概括為「保持兩者 維持X.深度(keep both maintain X.depth)」,其中X表示「EX」或「IN」,如圖5中所示。規則類型615是「保持兩者 特殊深度(keep both special depth)」。並且,規則類型620是「保持兩者 聯合深度(keep both union depth)」。
規則類型605意味著「只保持新進基元涵蓋範圍Y及現有基元涵蓋範圍Y中的一者,並捨棄X;自Y複製深度(keep only one of incoming and existing primitive coverage Y, and discard X; copy depth from Y)」,其中X及Y如上定義。規則類型610意味著「保持新進基元涵蓋範圍及現有基元涵蓋範圍兩者;自{IN, EX}中的一者複製深度(keep both incoming and existing primitive coverage; copy depth from one of {IN, EX})」,其中X及Y如上定義。
規則類型615意味著「保持新進基元涵蓋範圍及現有基元涵蓋範圍兩者;特殊深度:minDepth = min(IN.minDepth, EX.minDepth);maxDepth = min(IN.maxDepth,EX.maxDepth)(keep both incoming and existing primitive coverage; special depth: minDepth = min(IN.minDepth, EX.minDepth); maxDepth = min(IN.maxDepth, EX.maxDepth))」,其中X及Y如上定義;minDepth是所確定的最小深度;min()是確定最小值的函數;min(IN.minDepth, EX.minDepth)是確定IN.minDepth與EX.minDepth之間的最小值的函數;IN.minDepth是新進涵蓋範圍的最小深度;EX.minDepth是現有涵蓋範圍的最小深度;maxDepth是所確定的最大深度;min(IN.maxDepth, EX.maxDepth)是確定IN.maxDepth與EX.maxDepth之間的最小值的函數;IN.maxDepth是新進涵蓋範圍的最大深度;且EX.maxDepth是現有涵蓋範圍的最大深度。
規則類型620意味著「保持新進基元涵蓋範圍及現有基元涵蓋範圍;聯合深度:minDepth = min(IN.minDepth, EX.minDepth);maxDepth = max(IN.maxDepth, EX.maxDepth)(keep both incoming and existing primitive coverage; union depth: minDepth = min(IN.minDepth, EX.minDepth); maxDepth = max(IN.maxDepth, EX.maxDepth))」,其中X及Y如上定義;minDepth如上定義;min()如上定義;min(IN.minDepth, EX.minDepth)如上定義;IN.minDepth如上定義;EX.minDepth如上定義;maxDepth是所確定的最大深度;max(IN.maxDepth, EX.maxDepth)是確定IN.maxDepth與EX.maxDepth之間的最大值的函數;IN.maxDepth如上定義;且EX.maxDepth如上定義。
圖7是根據一些實施例的深度測試模組705的實例圖700。圖8是根據一些實施例的圖7所示深度測試模組705的集合測試器720的實例圖。現在參照圖7及圖8。
深度測試模組705接收輸入710以及一或多個涵蓋範圍集合(例如,718)。每一涵蓋範圍集合(例如,718)可儲存於晶片上緩衝器715中。深度測試模組705可包括一或多個集合測試器(例如,720),所述一或多個集合測試器可為每一對應的涵蓋範圍集合(例如,718)完成兩次單獨的檢查。首先,集合測試器720可使用深度測試器(例如,740)來判斷輸入710的深度範圍是否超過涵蓋範圍集合(例如,718)的深度範圍。其次,集合測試器720可使用涵蓋範圍測試器(例如,745)來判斷輸入710是否與涵蓋範圍集合(例如,718)有任何重疊。每一集合測試器(例如,720)的輸出(例如,725)可被饋送至及(AND)運算(例如,730),且深度測試模組705可輸出深度測試通過訊號735。
現在參照圖8,更詳細地示出深度測試模組705的集合測試器720。集合測試器720可接收輸入710及涵蓋範圍集合718,且可為每一對應的涵蓋範圍集合(例如,718)完成兩次單獨的檢查。首先,集合測試器720可使用深度測試器740來判斷輸入710的深度範圍是否超過涵蓋範圍集合718的深度範圍。其次,集合測試器720可使用涵蓋範圍測試器745來判斷輸入710是否與涵蓋範圍集合718有任何重疊。
關於第一次判斷,深度測試器740為涵蓋範圍集合(例如,718)及輸入(例如,710)選擇正確的深度。在一些實施例中,深度測試器740使用查找表(look-up table,LUT)。下表示出深度測試器740的示例性操作。
表1:
深度函數( 805 輸入多工器輸出( 830 集合多工器輸出( 815 比較( 825
小於(Less) 最小深度(minDepth) 最大深度(maxDepth) 輸入 < 集合(Input < Set)
小於等於(LessEqual) 最小深度(minDepth) 最大深度(maxDepth) 輸入 <= 集合(Input <= Set)
大於(Greater) 最大深度(maxDepth) 最小深度(minDepth) 輸入 > 集合(Input > Set)
大於等於(GreaterEqual) 最大深度(maxDepth) 最小深度(minDepth) 輸入 >= 集合(Input >= Set)
因此,深度函數805控制集合多工器812,集合多工器812自集合718接收minDepth及maxDepth,並輸出輸出訊號815。集合深度820邏輯區段基於輸出訊號815設定深度,並將深度傳遞至比較邏輯區段825。深度函數805亦控制輸入多工器828,輸入多工器828自輸入710接收minDepth及maxDepth,並輸出輸出訊號830。基於輸出訊號815及輸出訊號830,比較邏輯區段825可根據上述表1實行比較操作。比較邏輯區段825輸出集合深度測試通過資訊860。
深度函數Never、Always、Equal及NotEqual不需要在表1中記錄,此乃因Never情形在上游,而其餘者(即Always、Equal及NotEqual)總是通過深度測試器740。
涵蓋範圍測試器745是重疊測試,其對兩個涵蓋範圍遮罩(例如,840及850)應用AND運算(例如,845),以判斷所述兩個涵蓋範圍遮罩是否涵蓋相同的位置。涵蓋範圍測試器745可對結果應用OR運算(未示出),以看是否存在任何重疊。AND運算845的輸出在855處被檢查為不等於0,且然後涵蓋範圍測試器745輸出涵蓋範圍重疊資訊865。對於正在被比較的不同粒度遮罩(例如,840及850),集合涵蓋範圍遮罩880處於四元組粒度,而輸入涵蓋範圍遮罩885處於畫素粒度。因此,對於涵蓋範圍測試器745,輸入涵蓋範圍遮罩885在875處被粗略化。舉例而言,若2x2四元組內的任何畫素具有涵蓋範圍,則屬該四元組的四元組遮罩位元被設定為1。因此,粗略化邏輯875是保守的,且將涵蓋範圍擴展至四元組粒度。這樣做是為了防止測試期間出現任何誤否定(false negative)。
自深度測試器740輸出的集合深度測試通過資訊860及自涵蓋範圍測試器745輸出的涵蓋範圍重疊資訊865可用於在870處確定測試通過結果。集合測試通過結果870可根據以下來確定:SetTestPass = (CoverageOverlap AND SetDepthTestPass) OR NOT (CoverageOverlap)。
圖9是根據一些實施例的深度更新邏輯區段905的實例圖。深度更新邏輯區段905接收瓦片內的基元範圍(例如,圖1所示135),所述基元範圍可包括深度範圍910及涵蓋範圍遮罩915。深度更新邏輯區段905可處理瓦片內的經受住深度測試(例如,圖8所示740)的基元範圍。當選擇具有四元組粒度的配置時,深度更新邏輯區段905考慮粗略化涵蓋範圍,否則考慮畫素粒度涵蓋範圍。與深度測試相對照,深度更新的粗略化是藉由畫素涵蓋範圍的逐位元AND(即,僅當涵蓋整個四元組時)來完成。因此,在深度更新期間,被部分涵蓋的四元組可能會丟失。此種資訊丟失會改善硬體簡單性(hardware simplicity)。深度更新邏輯區段905基於所選擇的配置以四元組或畫素粒度接收瓦片內包含深度範圍910及涵蓋範圍遮罩915的基元範圍。本文中一般假定涵蓋範圍是針對四元組的,但是應理解,相同的技術可應用於畫素涵蓋範圍。
深度更新邏輯區段905實行兩個更新階段。第一階段在瓦片內的基元範圍與現有集合之間的涵蓋範圍上重疊,並為每一四元組決定瓦片內的基元範圍或者集合是否應保持所述四元組以獲得最佳篩選行為。第二階段針對其餘的涵蓋範圍(若存在)而被觸發,以將所述其餘的涵蓋範圍添加為新的集合,且然後將集合的數目減少至所容許的最大值。若實行了深度測試(例如,圖8所示740),則深度更新邏輯區段905的第二階段保證具有一定的涵蓋範圍。
以下偽碼涵蓋深度更新邏輯區段905的第一階段的行為。以下偽碼與每一節點(即8x8、16x16等畫素區塊)相關。以下偽碼包括不更新粗略深度(例如在EQUAL及NOT EQUAL等情形中)的其他深度函數的極端情形定義。
/// Defines which depth is “better” for more culling
/// Uses two copies of node depth – one from the beginning of the process, and one
/// being the current version. Former used for comparison and updating sets, while
/// latter used as current representation of node’s depth
bool has_better_coverage (uint16 &nodeMinDepth, uint16 &nodeMaxDepth, pair<uint16, uint16> &setDepth, const uint16 initialNodeMinDepth, const uint16 initialNodeMaxDepth, DepthFunc f) {
bool entry_better = false;
switch (f) {
case LESS: // < LESS implies the < or “less than” operation
case LEQUAL:  //< LEQUAL implies the <= or “less than or equal to”
/// Prioritizing new prim’s depth for equal
entry_better = initialNodeMaxDepth <= setDepth.second;
/// If entry better, it must take set’s minDepth with coverage, else vice versa
if (entry_better) nodeMinDepth = min(nodeMinDepth, setDepth.first);
else setDepth.first = min(initialNodeMinDepth, setDepth.first);
break;
case GREATER: //< GREATER implies the > or “greater than” operation
case GEQUAL: //< GEQUAL implies the >= or “greater than or equal to” operation
/// Prioritizing new prim’s depth for equal
entry_better = initialNodeMinDepth >= setDepth.first;
/// If entry better, it must take set’s maxDepth with coverage, else vice versa
if (entry_better) nodeMaxDepth = max(nodeMaxDepth, setDepth.second);
else setDepth.second = max(initialNodeMaxDepth, setDepth.second);
break;
};
return false;
}
/// Function representing stage 1 depth update
void depth_update_stage1 (SAEntry &in, Node &curr, DepthFunc f) {
uint16 initialNodeMinDepth = in.minDepth;
uint16 initialNodeMaxDepth = in.maxDepth;
/// Iterate over the coverage in SAEntry – assumes it has already been
/// downsampled if necessary
for (i = 0; i < NumCoverageBits; ++i) {
/// Check necessary only if covered, else nothing to do
if (in.covMask[i] == 1) {
/// See if any set in the curr node has coverage,i.e. has set id != 0
if (curr.coverage[i] != 0) {
/// Check if set has “better” coverage or SAEntry
/// Using initial depths makes sure that the final result is not
/// dependent on the order of traversing along i, or sets
bool entry_better = has_better_coverage (in.minDepth, in.maxDepth, curr.depth[curr.coverage[i]], initialNodeMinDepth,
initialNodeMaxDepth, f);
if (entry_better) {
/// Steal coverage from set
/// No changes required, we’ll modify curr.coverage[i] in stage 2
} else {
/// Remove coverage from SAEntry
in.covMask[i] = 0;
}
}
}
}
}
深度更新邏輯區段905的第一階段確保在僅涵蓋四元組/畫素是更佳選擇的情況下,瓦片內的基元範圍僅涵蓋四元組/畫素。第二階段的一個功能是確保此種新的深度與涵蓋範圍對可被插入至涵蓋範圍集合中,同時藉由所述配置維持如上所述的恆定的最大集合數目。以下偽碼與深度更新邏輯區段905的階段二相關,階段二與將瓦片內的基元範圍插入至節點中相關。
void insert_saentry(SAEntry &in, Node &curr, uint index) {
curr.depth[index] = make_pair(in.minDepth, in.maxDepth);
for (i = 0; i < NumCoverageBits; ++i) {
/// Check necessary only if covered, else nothing to do
if (in.covMask[i] == 1) curr.coverage[i] = index;
}
}
/// Returns two candidates with the closest “better” depth
pair<uint, uint> find_candidates (Node &curr, SAEntry &in, DepthFunc f) {
int cand1 = 0, cand2 = 0;
uint16 mindiff = (1 << 16) – 1;
for (int i = 0; i < NumSets; ++i) for (int j = i+1; j <= NumSets; ++i) {
switch (f) {
case LESS:
case LEQUAL:
/// When DepthFunc is LESS or similar, closest maximum depth has best
/// candidates
uint16 depth2 = (j == NumSets) ? in.maxDepth : curr.depth[j].second;
uint16 pair_diff = abs(curr.depth[i].second – depth2);
if (pair_diff < mindiff) { cand1 = i; cand2 = j; }
case GREATER:
case GEQUAL:
/// When DepthFunc is GREATER or similar, closest minimum depth has best
/// candidates
uint16 depth2 = (j == NumSets) ? in.minDepth : curr.depth[j].first;
uint16 pair_diff = abs(curr.depth[i].first – depth2);
if (pair_diff < mindiff) { cand1 = i; cand2 = j; }
};
}
return make_pair (cand1, cand2)
}
/// Stage 2 depth update. Takes the resulting (in, curr) pair after stage 1 updates
void depth_update_stage2 (SAEntry &in, Node &curr, DepthFunc f) {
if (curr.numActiveSets < NumSets) {
/// This assumes that all sets are packed into 0…(numActiveSets-1)
/// RTL may choose to relax this constraint and have “holes”,i.e. empty sets
/// not at the end of the set index range, as long as there is a way to find
/// a next empty set
insert_saentry(in, curr, numActiveSets++);
} else {
/// Find two sets to collapse, or one set and SAEntry to merge
/// Function returns two indices noting the two sets, with val == NumSets
/// indicating SAEntry is a candidate
pair<uint, uint> candidates = find_candidates (curr, in, f);
if (candidates.second == NumSets) {
/// Merge candidate with SAEntry
/// Take min of minimum depths, and max of maximum depths
curr.depth[candidates.first].first = min(curr.depth[candidates.first].first, in.minDepth);
curr.depth[candidates.first].second = max(curr.depth[candidates.first].second, in.maxDepth);
/// Mark coverage for first candidate set
for (i = 0; i < NumCoverageBits; ++i) {
if (in.covMask[i] == 1) curr.coverage[i] = candidates.first;
}
} else {
/// Merge two candidate sets
/// Take min of minimum depths, and max of maximum depths
curr.depth[candidates.first].first = min(curr.depth[candidates.first].first, curr.depth[candidates.second].first);
curr.depth[candidates.first].second = max(curr.depth[candidates.first].second, curr.depth[candidates.second].second);
/// Move coverage from second candidate to first
for (i = 0; i < NumCoverageBits; ++i) {
if (curr.coverage[i] == candidates.second) curr.coverage[i] = candidates.first;
}
/// Merge complete, insert SAEntry into candidates.second
insert_saentry (in, curr, candidates.second);
}
}
}
深度更新邏輯區段905集合合併的第二階段背後的指導原則是,在對可用資訊進行粗略化時,例如藉由合併具有相似「更佳」深度的資訊,損失被最小化。慮及特定的深度函數,在維持涵蓋範圍的同時保持最佳深度值。儘管有些資訊丟失,然而硬體簡單性得到改善。
關於第二階段的偽碼,對於深度函數LESS或LEQUAL,所述邏輯試圖最小化所有所涵蓋畫素隨時間而變化的涵蓋範圍集合的最大深度。這樣做是為了最大化篩選,此乃因深度測試邏輯根據集合的最大深度測試新基元的最小深度。對應地,對於GREATER及GEQUAL,所述邏輯試圖最大化所有所涵蓋畫素隨時間而變化的涵蓋範圍集合的最小深度。若深度函數在影像內改變符號,即自影像內的{LESS, LEQUAL} {GREATER, GEQUAL}轉換將會侵害資料的品質,則此種技術可能效果不良。此是與用於合併SA條目涵蓋範圍的邏輯相同的邏輯,儘管表達方式不同。被完全涵蓋的區塊/節點可在所述邏輯中隱式處置。
可選的效能增強涉及第二階段中的集合合併碼(set merging code),集合合併碼挑選將合併的集合移動至的地方以及騰出哪一集合以供SA條目使用。舉例而言,若合併的集合總是使用較低的索引,則集合1很可能保持增長得更大(例如,就涵蓋範圍而言),且具有更稀鬆的深度範圍。因此,以下優先級次序是較佳的,但任何循環定序均是足夠的。若集合1與集合2正在合併,則將合併的集合寫入至集合1中。若集合1與集合3正在合併,則將合併的集合寫入至集合3中。若集合2與集合3正在合併,則將合併的集合寫入至集合2中。因此,新進SA條目將對應地進入另一被騰出的集合索引,或者任何其他自由集合槽。
圖10是根據本文中揭露的一些實施例的包括分類單元100的GPU 1005的示例性方塊圖。分類單元100可對應於圖1所示分類單元。分類單元100可電性連接至一或多個處理器核心1010。GPU 1005亦可包括記憶體裝置1015,記憶體裝置1015可為隨機存取記憶體(random access memory,RAM)、快閃記憶體1015、固態驅動機(solid state drive,SSD)等。
上述方法的各種操作可藉由能夠實行所述操作的任何合適的手段(例如各種硬體及/或軟體組件、電路及/或模組)來實行。
結合本文中揭露的實施例所闡述的方法或演算法及功能的方塊或步驟可直接以硬體、以由處理器執行的軟體模組或以此二者的組合來實施。若以軟體實施,則功能可作為一或多個指令或碼儲存於有形非暫時性電腦可讀取媒體上或者在有形非暫時性電腦可讀取媒體上傳送。軟體模組可駐存於隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(Read Only Memory,ROM)、電可程式化ROM(Electrically Programmable ROM,EPROM)、電可抹除可程式化ROM(Electrically Erasable Programmable ROM,EEPROM)、暫存器、硬碟、可抽換式磁碟、光碟唯讀記憶體(Compact Disc Read Only Memory,CD ROM)或此項技術中已知的任何其他形式的儲存媒體中。
以下論述旨在提供對可在其中實施本發明概念某些態樣的一或多個合適的機器的簡短總體說明。通常,所述一或多個機器包括系統匯流排,所述系統匯流排附接有處理器、記憶體(例如,RAM、ROM或其他狀態保持媒體)、儲存裝置、視訊介面及輸入/輸出介面埠。所述一或多個機器可至少部分地藉由以下來控制:來自例如鍵盤、滑鼠等傳統輸入裝置的輸入;以及自另一機器接收到的指令、與虛擬實境(virtual reality,VR)環境的交互作用、生物統計回饋(biometric feedback)或其他輸入訊號。本文中所用用語「機器」旨在廣泛地囊括單一機器、虛擬機器、或由以通訊方式耦合的一起運作的機器、虛擬機器或裝置構成的系統。示例性機器包括:計算裝置,例如個人電腦、工作站、伺服器、可攜式電腦、手持式裝置、電話、平板電腦等;以及運輸裝置,例如私人或公共運輸(例如汽車、火車、計程車等)。
所述一或多個機器可包括嵌入式控制器,例如可程式化或非可程式化邏輯裝置或陣列、應用專用積體電路(Application Specific Integrated Circuit,ASIC)、嵌入式電腦、智慧卡等。所述一或多個機器可利用例如藉由網路介面、數據機或其他通訊性耦合達成的與一或多個遠端機器的一或多個連接。機器可以例如內部網路(intranet)、網際網路、局域網路、廣域網路等實體及/或邏輯網路的方式進行互連。熟習此項技術者應理解,網路通訊可利用各種有線及/或無線短程或長程載波及協定,所述載波及協定包括射頻(radio frequency,RF)、衛星、微波、電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)545.11、藍芽® 、光學的、紅外線的、纜線、雷射等。
可藉由參照或結合相關聯資料來闡述本發明概念的實施例,所述相關聯資料包括當由機器存取時使得所述機器實行任務或定義抽象資料類型或低層級硬體上下文的功能、程序、資料結構、應用程式等。相關聯資料可儲存於例如揮發性及/或非揮發性記憶體(例如,RAM、ROM等)中,或儲存於包括硬驅動機、軟磁碟(floppy disk)、光學儲存器、磁帶(tape)、快閃記憶體、記憶條(memory stick)、數位視訊碟、生物儲存器等的其他儲存裝置及其相關聯儲存媒體中。相關聯資料可以封包、串列資料、並列資料、傳播訊號等形式經由包括實體及/或邏輯網路在內的傳輸環境而遞送,且可以壓縮或加密格式使用。相關聯資料可用於分佈式環境中,且可在本地及/或遠端儲存以供機器存取。
已參照所示實施例闡述並示出了本發明概念的原理,應認識到,在不背離此類原理的條件下,可在排列及細節上對所示實施例加以潤飾,且可以任何所需方式加以組合。並且,儘管以上論述著重於特定實施例,然而預期存在其他配置。具體而言,儘管本文中使用例如「根據本發明概念的實施例」或類似表達,然而該些片語意在籠統地提及實施例可能性,而並非旨在將本發明概念限制於特定實施例配置。本文所用的該些用語可提及可組合成其他實施例的相同或不同的實施例。
本發明概念的實施例可包括非暫時性機器可讀取媒體,所述非暫時性機器可讀取媒體包括可由一或多個處理器執行的指令,所述指令包括用於實行如在本文中闡述的本發明概念的要素的指令。
前述說明性實施例不應被視為限制本發明概念。儘管已闡述若干實施例,然而熟習此項技術者應易於理解,在不實質上背離本揭露的新穎教示內容及優點的情況下,可對該些實施例作出諸多潤飾。因此,所有此類潤飾皆旨在包含於如在申請專利範圍中所界定的本發明概念的範圍內。
0、1、2、3:基元/集合 100:分類單元 102:頂點資料 105:光柵化器 110:粗略光柵化器/第一級粗略光柵化器 115:精細光柵化器/第二級精細光柵化器 120:深度內插邏輯 122:中間光柵化器資訊/粗略光柵化結果 125:{基元,瓦片,區塊}資訊 130:區域篩選級/第一級區域篩選級 135:串流累加器(SA)條目 140:累加器 145:清除控制邏輯 150:全域篩選級/全域篩選邏輯 155、725:輸出 160:重新定序隊列 162:預取隊列 164:描述符資料 165、715:晶片上緩衝器 166:壓縮計數串流資料/壓縮位元串流資料 168:全域篩選資料 170:分配器單元 175:合併邏輯區段 180:計數寫入請求 182:分類邏輯 185:晶片上網路(NOC) 190:二級(L2)快取/記憶體 200、300、400、500、700:實例圖 202:渲染隊列 205:螢幕 210、215、220、330、335、340、345:階段 305:瓦片 310:16x16畫素區塊 315:{基元,瓦片}篩選發生於分類遍次期間 320:益處 325:色彩遍次期間的四元組篩選 350:瓦片緩衝器 355、360:畫素/四元組 505:合併類別 510、525:涵蓋範圍合併規則 515:深度資訊 520:涵蓋範圍規則 600:圖例 605、610、615、620:規則類型 705:深度測試模組 710:輸入 718:集合/涵蓋範圍集合 720:集合測試器 730、845:及(AND)運算 735:深度測試通過訊號 740:深度測試/深度測試器 745:涵蓋範圍測試器 805:深度函數 812:集合多工器 815:輸出訊號/集合多工器輸出 820:集合深度 825:比較/比較邏輯區段 828:輸入多工器 830:輸出訊號/輸入多工器輸出 840、850:涵蓋範圍遮罩/粒度遮罩 860:集合深度測試通過資訊 865:涵蓋範圍重疊資訊 870:集合測試通過結果 875:粗略化邏輯 880:集合涵蓋範圍遮罩 885:輸入涵蓋範圍遮罩 905:深度更新邏輯區段 910:深度範圍 915:涵蓋範圍遮罩 1005:GPU 1010:處理器核心 1015:記憶體裝置 K:基元
藉由參照附圖閱讀以下詳細說明,本發明原理的前述及附加特徵及優點將變得更加顯而易見,在附圖中:
圖1是根據一些實施例的分類單元的實例圖。
圖2是示出隱藏面移去(HSR)技術的實例圖。
圖3是根據一些實施例的{基元,瓦片}({prim, tile})篩選及四元組篩選的實例圖。
圖4是根據一些實施例的儲存於記憶體中的深度及涵蓋範圍結構的實例圖。
圖5是根據一些實施例的使用區域篩選級來實施深度及涵蓋範圍合併的情形的實例圖。
圖6是包括圖5中所示各種區塊的圖例600的圖。
圖7是根據一些實施例的深度測試模組的實例圖。
圖8是根據一些實施例的圖7所示深度測試模組的集合測試器的實例圖。
圖9是根據一些實施例的深度更新邏輯區段的實例圖。
圖10是根據本文中揭露的一些實施例的包括圖1所示分類單元的GPU的示例性方塊圖。
100:分類單元
102:頂點資料
105:光柵化器
110:粗略光柵化器/第一級粗略光柵化器
115:精細光柵化器/第二級精細光柵化器
120:深度內插邏輯
122:中間光柵化器資訊/粗略光柵化結果
125:{基元,瓦片,區塊}資訊
130:區域篩選級/第一級區域篩選級
135:串流累加器(SA)條目
140:累加器
145:清除控制邏輯
150:全域篩選級/全域篩選邏輯
155:輸出
160:重新定序隊列
162:預取隊列
164:描述符資料
165:晶片上緩衝器
166:壓縮計數串流資料/壓縮位元串流資料
168:全域篩選資料
170:分配器單元
175:合併邏輯區段
180:計數寫入請求
182:分類邏輯
185:晶片上網路(NOC)
190:二級(L2)快取/記憶體
705:深度測試模組
905:深度更新邏輯區段

Claims (27)

  1. 一種用於在畫素幾何形狀的分類期間進行粗略深度篩選的分類單元,所述分類單元包括: 光柵化器,被配置以接收一或多個基元,且產生畫素涵蓋範圍資訊及深度資訊; 一或多個區域篩選級,耦合至所述光柵化器,且被配置以在基元視窗內實行區域篩選,並輸出殘存涵蓋範圍及殘存深度資訊的集合;以及 一或多個全域篩選級,耦合至a)所述一或多個區域篩選級或b)所述光柵化器中的至少一者,且被配置以使用所述殘存涵蓋範圍及所述殘存深度資訊的所述集合來基於先前接收的涵蓋範圍資訊及深度資訊的整體進一步進行篩選。
  2. 如請求項1所述的分類單元,其中所述一或多個區域篩選級被配置以當在所述基元視窗內實行對所述一或多個基元的所述區域篩選時,使用僅與所述基元視窗相關聯的深度資訊。
  3. 如請求項1所述的分類單元,其中所述一或多個全域篩選級使用來自所有過往基元的a)粗略深度資訊或b)精細深度資訊以及涵蓋範圍資訊中的至少一者來進一步篩選自所述一或多個區域篩選級接收的殘存涵蓋範圍及殘存深度資訊的所述集合。
  4. 如請求項1所述的分類單元,其中所述光柵化器、所述一或多個區域篩選級以及所述一或多個全域篩選級被配置以藉由在分類期間在影像的每一畫素處創建深度的粗略表示來最小化過度繪製,且在全色遍次之前將所述粗略表示預加載至深度緩衝器中,以使Early-Z硬體消除所述影像的將被所述影像的較後片段堵塞的片段。
  5. 如請求項1所述的分類單元,其中: 所述一或多個區域篩選級被配置以在瓦片內的所述基元視窗內實行所述區域篩選;以及 所述光柵化器、所述一或多個區域篩選級以及所述一或多個全域篩選級被配置以產生用於指示哪些基元及繪圖調用影響所述瓦片的表示。
  6. 如請求項5所述的分類單元,其中所述表示不包括在最終渲染影像中不可見的大部分基元及繪圖調用。
  7. 如請求項1所述的分類單元,更包括晶片上緩衝器,其中所述一或多個全域篩選級包括重新定序隊列,所述重新定序隊列對備份資料駐留於所述晶片上緩衝器中的交易進行優先化。
  8. 如請求項7所述的分類單元,其中所述一或多個全域篩選級被配置以基於所述晶片上緩衝器中的所述備份資料的記憶體駐留來對所述交易進行重新定序。
  9. 如請求項1所述的分類單元,其中所述一或多個全域篩選級包括: 分類邏輯,被配置以創建欲由圖形處理單元(GPU)的後續渲染級消耗的所涵蓋繪圖調用及基元串流;以及 一或多種定製擴展,用於工作量專用篩選。
  10. 如請求項1所述的分類單元,其中: 所述一或多個區域篩選級被配置以基於新進基元的深度資訊在所述基元視窗內進行篩選;並且 所述一或多個全域篩選級被配置以基於先前基元的深度資訊在所述基元視窗內進行篩選。
  11. 如請求項1所述的分類單元,其中所述一或多個全域篩選級或者所述一或多個區域篩選級被配置以使用所述基元視窗篩選先前接收的涵蓋範圍資訊及深度資訊的所述整體。
  12. 如請求項1所述的分類單元,其中所述一或多個全域篩選級或者所述一或多個區域篩選級被配置以使用先前接收的涵蓋範圍資訊及深度資訊的所述整體來篩選所述基元視窗。
  13. 如請求項1所述的分類單元,更包括用於工作量專用篩選的一或多種定製擴展。
  14. 如請求項13所述的分類單元,其中用於工作量專用篩選的所述一或多種定製擴展不基於可見性篩選。
  15. 如請求項14所述的分類單元,其中所述一或多個區域篩選級使用所述一或多種定製擴展。
  16. 如請求項14所述的分類單元,其中所述一或多個全域篩選級使用所述一或多種定製擴展。
  17. 一種用於在畫素幾何形狀的分類期間選擇與深度篩選相關聯的涵蓋範圍合併規則的方法,所述方法包括: 分析深度資訊; 將所述深度資訊歸類成多個類別,包括1)新進深度嚴格更佳、2)新進深度更佳、3)現有深度超集合、4)新進深度超集合、5)現有深度更佳及6)現有深度嚴格更佳; 將新進涵蓋範圍資訊與現有涵蓋範圍資訊進行比較; 其中所述比較包括判斷以下中的至少一者:1)所述新進涵蓋範圍資訊是否與所述現有涵蓋範圍資訊相同、2)所述新進涵蓋範圍是否是所述現有涵蓋範圍的嚴格超集合或者3)所述現有涵蓋範圍是否是所述新進涵蓋範圍的嚴格超集合;以及 基於所述歸類及所述比較來選擇所述涵蓋範圍合併規則。
  18. 如請求項17所述的方法,其中: 比較更包括確定1)所述新進涵蓋範圍資訊與所述現有涵蓋範圍資訊不相同、2)所述新進涵蓋範圍不是所述現有涵蓋範圍的嚴格超集合以及3)所述現有涵蓋範圍不是所述新進涵蓋範圍的嚴格超集合;以及 基於所述進一步的確定來選擇所述涵蓋範圍合併規則。
  19. 如請求項17所述的方法,其中選擇所述涵蓋範圍合併規則更包括自多個涵蓋範圍合併規則中選擇第一涵蓋範圍合併規則。
  20. 如請求項19所述的方法,其中選擇所述涵蓋範圍合併規則更包括自所述多個涵蓋範圍合併規則中選擇第二涵蓋範圍合併規則。
  21. 如請求項20所述的方法,其中選擇所述涵蓋範圍合併規則更包括自所述多個涵蓋範圍合併規則中選擇第三涵蓋範圍合併規則。
  22. 如請求項21所述的方法,其中選擇所述涵蓋範圍合併規則更包括自所述多個涵蓋範圍合併規則中選擇第四涵蓋範圍合併規則。
  23. 一種用於在畫素幾何形狀的分類期間進行深度篩選的深度測試系統,所述深度測試系統包括: 晶片上緩衝器,包括一或多個涵蓋範圍集合;以及 深度測試模組,包括一或多個集合測試器,其中所述一或多個集合測試器中的每一者被配置以自所述晶片上緩衝器接收所述一或多個涵蓋範圍集合中的涵蓋範圍集合, 其中所述深度測試模組被配置以依據來自所述一或多個集合測試器的結果來產生深度測試通過訊號。
  24. 如請求項23所述的深度測試系統,其中所述深度測試模組的所述一或多個集合測試器中的每一者包括深度測試器及涵蓋範圍測試器。
  25. 如請求項24所述的深度測試系統,其中所述深度測試器被配置以接收深度函數、最小深度及最大深度,並依據所述深度函數、所述最小深度及所述最大深度來產生集合深度測試通過資訊。
  26. 如請求項25所述的深度測試系統,其中所述涵蓋範圍測試器被配置以接收第一涵蓋範圍遮罩及第二涵蓋範圍遮罩,並依據所述第一涵蓋範圍遮罩及所述第二涵蓋範圍遮罩來產生涵蓋範圍重疊資訊。
  27. 如請求項26所述的深度測試系統,其中所述一或多個集合測試器中的每一者被配置以依據所述集合深度測試通過資訊及所述涵蓋範圍重疊資訊來產生集合測試通過結果。
TW109118535A 2019-06-20 2020-06-03 分類單元、深度測試系統以及用於在畫素幾何形狀的分類期間選擇與深度篩選相關聯的涵蓋範圍合併規則的方法 TWI810462B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962864443P 2019-06-20 2019-06-20
US62/864,443 2019-06-20
US16/719,976 US11315225B2 (en) 2019-06-20 2019-12-18 Coarse depth culling during binning
US16/719,976 2019-12-18

Publications (2)

Publication Number Publication Date
TW202101251A true TW202101251A (zh) 2021-01-01
TWI810462B TWI810462B (zh) 2023-08-01

Family

ID=74039351

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109118535A TWI810462B (zh) 2019-06-20 2020-06-03 分類單元、深度測試系統以及用於在畫素幾何形狀的分類期間選擇與深度篩選相關聯的涵蓋範圍合併規則的方法

Country Status (2)

Country Link
KR (1) KR20200145673A (zh)
TW (1) TWI810462B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240005602A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Pipeline delay reduction for coarse visibility compression

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8775997B2 (en) * 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US10008029B2 (en) * 2013-05-31 2018-06-26 Nvidia Corporation Updating depth related graphics data
US10380789B2 (en) * 2016-09-16 2019-08-13 Intel Corporation Method and apparatus for efficient depth prepass

Also Published As

Publication number Publication date
TWI810462B (zh) 2023-08-01
KR20200145673A (ko) 2020-12-30

Similar Documents

Publication Publication Date Title
US10475228B2 (en) Allocation of tiles to processing engines in a graphics processing system
US11315225B2 (en) Coarse depth culling during binning
EP3471059B1 (en) Geometry to tiling arbiter for tile-based rendering system
CN111062858B (zh) 高效的提前渲染方法、装置及计算机存储介质
WO2024040815A1 (zh) 图形处理方法及系统
CN112116520B (zh) 用于处理基元片段的系统和方法
EP3547248B1 (en) Method and system for controlling write processing to an external memory
CN111508056B (zh) 利用扩展变换级掩码的图形处理系统
TW201447812A (zh) 有共用邊緣的先印後蓋路徑描繪
CN111080761B (zh) 一种渲染任务的调度方法、装置及计算机存储介质
CN113256478A (zh) 用于在图形处理系统中存储图元的方法和图元块生成器
JPWO2006013849A1 (ja) 描画装置
TW202101251A (zh) 分類單元、深度測試系統以及用於在畫素幾何形狀的分類期間選擇與深度篩選相關聯的涵蓋範圍合併規則的方法
KR102638038B1 (ko) 비지역적 평균 기반의 노이즈 제거 장치 및 방법
US20230377086A1 (en) Pipeline delay elimination with parallel two level primitive batch binning
US11468633B1 (en) Methods and systems for tile-based graphics processing
US20240070962A1 (en) Graphics processing method and system
CN116820580B (zh) 指令的执行方法、系统及装置、图形处理器及电子设备
US20240104845A1 (en) Mesh topology generation using parallel processing
CN116710965A (zh) 粗粒度深度测试方法以及图形处理器
CN116957899A (zh) 图形处理器、系统、装置、设备及方法