TWI810389B - 由電腦實施的冗餘覆蓋捨棄方法 - Google Patents

由電腦實施的冗餘覆蓋捨棄方法 Download PDF

Info

Publication number
TWI810389B
TWI810389B TW108138201A TW108138201A TWI810389B TW I810389 B TWI810389 B TW I810389B TW 108138201 A TW108138201 A TW 108138201A TW 108138201 A TW108138201 A TW 108138201A TW I810389 B TWI810389 B TW I810389B
Authority
TW
Taiwan
Prior art keywords
coverage
overlay
blocks
block
primitive
Prior art date
Application number
TW108138201A
Other languages
English (en)
Other versions
TW202022792A (zh
Inventor
尼蘭珍 戈斯瓦密
德里克 倫茲
阿迪斯亞 魯德哈雅 克里希納莫爾迪
大衛 C 坦南鮑姆
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 TW202022792A publication Critical patent/TW202022792A/zh
Application granted granted Critical
Publication of TWI810389B publication Critical patent/TWI810389B/zh

Links

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • 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
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Hardware Redundancy (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一種用於在基於分塊的圖形渲染流水線中減少像素著色 器工作的由電腦實施的冗餘覆蓋捨棄方法及裝置。在早期覆蓋捨棄邏輯區段內設置覆蓋區塊資訊先進先出緩衝器。先進先出緩衝器接收覆蓋區塊並按照先進先出次序緩衝所述覆蓋區塊。更新與分塊覆蓋-基元圖內的區塊位置匹配的至少一個覆蓋區塊。分塊覆蓋-基元圖儲存每一像素基元覆蓋資訊。先進先出緩衝器緩衝覆蓋區塊的移動視窗。將與覆蓋區塊相關聯的傳入基元資訊僅與儲存在分塊覆蓋-基元圖表中活的覆蓋的對應的位置處的每一像素基元覆蓋資訊進行比較。剔除覆蓋區塊的移動視窗內的任何前面的交疊覆蓋。替代實施例使用雙鏈表而不是先進先出緩衝器。

Description

由電腦實施的冗餘覆蓋捨棄方法 [相關申請資料]
本申請主張在2018年12月11日提出申請的序號為62/778,286的美國臨時申請的權利,所述美國臨時申請的內容併入本申請供參考。
本揭露涉及圖形處理單元(GPU),且更具體來說涉及一種在圖形處理單元的基於分塊的圖形渲染流水線中減少像素著色器工作的器件及方法。
圖形處理單元(graphics processing unit,GPU)是對電腦所產生圖形的處理進行加速的專用器件。GPU也用於各種現代計算環境(例如神經網路、人工智慧(artificial intelligence,AI)、高性能系統、自主車輛、移動器件、遊戲系統等)中。隱藏面消除(hidden surface removal,HSR)是GPU硬體的常規部分。像素著色(pixel shading)是GPU中圖形幀渲染的最耗電及最耗時的任務之一。HSR通過減低透支而有所幫助,透支是指對將被後 面的像素完全覆寫且因此不會對最終圖像有所貢獻的像素進行的不必要的渲染。因此,整體幀處理性能得到改善。另外,減少像素著色會節省能量消耗。然而,用於HSR及像素著色減少的傳統方法在複雜技術環境中不斷增長的計算需求所需的必要性能及能量節省方面仍存在不足。
本發明的目的是提供以下方法及裝置:所述方法及裝置包括用於在基於分塊的圖形渲染流水線中減少像素著色器工作的由電腦實施的冗餘覆蓋捨棄(redundant-coverage discard)方法以及裝置。
【發明內容】
本發明的實施例可包括用於在基於分塊的圖形渲染流水線中減少像素著色器工作的由電腦實施的冗餘覆蓋捨棄方法以及裝置。儘管本文中有時使用用語“冗餘四元組(redundant-quad)”或“四元組”,然而應理解,在不背離本文中所揭露的發明概念的條件下,本文中所揭露的實施例可包括冗餘像素和/或冗餘樣本方法及裝置。柵格化(rasterization)會從基元生成“活的覆蓋(live coverage)”,所述“活的覆蓋”被分割成覆蓋區塊,所述覆蓋區塊容納像素、樣本、四元組或所述像素、樣本、四元組的更大區塊(例如4×4像素區塊)。應理解,在不背離本文中所揭露的發明概念的條件下,可使用任何大小的覆蓋區塊。寬度及高度為2的冪(例如,8×4)是優選的,但不是強制性的。覆蓋區塊可為柵格化的輸出,所述柵格化將圖形基元轉換成 位元遮罩(bitmask),位元遮罩界定所渲染的圖像中哪些像素或樣本被基元覆蓋。“活的覆蓋”是由柵格化過程生成的像素(或樣本)的集合且在進行柵格化時被與當前深度緩衝器進行比較。因此,“活的覆蓋”是可用作輸入的初始覆蓋。可包括先進先出(first-in-first-out,FIFO)緩衝器或雙鏈表(doubly linked-list)的覆蓋區塊資訊(coverage block information,CBI)邏輯區段設置在早期覆蓋捨棄(early coverage discard,ECD)邏輯區段內。深度測試可在覆蓋區塊進入ECD邏輯區段之前實行。CBI邏輯區段可接收並按照FIFO次序緩衝覆蓋區塊。
分塊覆蓋-基元圖(tile coverage-to-primitive map,TCPM)在分塊內容納每一像素或樣本位置的表項。這個表項是最後被寫入到TCPM的輸入覆蓋區塊的基元識別符(identifier),且控制哪些活的像素或樣本被允許離開ECD邏輯區段並繼續進行渲染過程。活的輸入覆蓋區塊使用最新的覆蓋-基元映射來更新TCPM,當較老的覆蓋區塊離開CBI邏輯區段時,所述最新的覆蓋-基元映射最終被轉變到所述較老的覆蓋區塊的被擦除的覆蓋。當覆蓋表項離開CBI邏輯區段時,覆蓋表項將TCPM中對應的位置處的最近寫入的基元識別符與其自身的基元識別符進行比較;若不匹配,則覆蓋表項會擦除其覆蓋。CBI邏輯區段在FIFO緩衝器中緩衝覆蓋區塊的移動視窗。覆蓋區塊的移動視窗內的任何前面的交疊覆蓋均可被剔除。可包括在ECD邏輯區段的輸出處禁用CBI覆蓋擦除的特徵。ECD邏輯區段中還可包括基元資訊表(primitive information table,PIT),以容納與基元相關的資訊以及在ECD邏輯區段之後實行的處理所需的其他控制資訊。
根據本發明,會防止對被遮擋覆蓋區塊的不必要的著色。因此,會節省用於著色的電力及時間。
100:早期覆蓋捨棄(ECD)區塊
105a、110a:像素遮罩/4×4像素/4×4覆蓋區塊/深度測試後4×4覆蓋區塊
105b、110b:4×4覆蓋區塊
105c、110c:4×4覆蓋區塊/4×4覆蓋區塊表項
125:時間線
130:4×4覆蓋區塊資訊(CBI)邏輯區段/CBI邏輯區段
132:先進先出(FIFO)緩衝器
135:入口點
140:離開處
160:屬性儲存器
165、700:基元訊息表(PIT)
170:4×4活的覆蓋計數/計數值/PIT 4×4覆蓋計數
175:區塊更新邏輯區段
205:32×32分塊覆蓋-基元圖(TCPM)/TCPM
210:最終TCPM狀態
215:覆蓋區塊
140、210、405、410、415、420、430、435、440、445、640、645、1510、1520、1530、1535、1545、1550、1555、1565、1580:步驟
500:柵格化控制流邏輯區段
505:柵格化器控制單元
510:柵格化邏輯區段
520:深度內插及測試單元
525:像素著色器後儲存器
535:像素著色器後邏輯區段
540:像素著色器輸出儲存單元
545:像素著色器邏輯區段
550:混合階段單元
600、1500:方塊圖及流程圖/圖
605、1505:鍵
610:輸入處理階段
615:ECD輸出處理階段/輸出處理階段
630:分塊覆蓋有效邏輯區段
635:傳入覆蓋區塊/步驟
800:TCPM有效表(TVT)
900:TCPM表
1000、1700:內容
1100、1200:表
1502:雙鏈表/鏈表/列表
1525:覆蓋區塊讀取/步驟
1540:覆蓋更新操作/步驟
1570:位置-列表映射表(PLMT)
1575:首節點指標/步驟
1590:首指針/首節點/節點/鏈表首部
1595:尾指針/尾節點
1605:細節
1800:圖形處理單元(GPU)
1805:柵格化區段
1810:微處理器
1815:記憶體器件
1845:記憶體控制器
Az、Bz、Cz:PIT欄位
pq、P-1~P7:基元
根據參照附圖進行的以下詳細說明,本發明原理的上述及附加特徵及優點將變得更顯而易見,在附圖中:圖1是根據一些實施例的早期覆蓋捨棄(ECD)邏輯區段的示例性方塊圖,ECD邏輯區段包括具有先進先出(FIFO)緩衝器的覆蓋區塊資訊(CBI)邏輯區段。
圖2是示出根據一些實施例的32×32分塊覆蓋-基元圖(TCPM)的示例圖。
圖3是根據一些實施例的區塊覆蓋技術的示例圖。
圖4是根據一些實施例的ECD邏輯區段的另一示例性方塊圖。
圖5是根據一些實施例的GPU中的柵格化控制流邏輯內的ECD邏輯區段的示例性方塊圖及流程圖。
圖6是根據一些實施例的GPU中的TCPM ECD實施邏輯的示例性方塊圖及流程圖。
圖7是根據一些實施例的示例性基元資訊表(PIT)。
圖8是根據一些實施例的示例性TCPM有效表(TCPM valid table,TVT)。
圖9是根據一些實施例的示例性TCPM表。
圖10包括根據一些實施例的示例性CBI邏輯區段表的詳細 內容。
圖11是根據一些實施例的展示在更新之前的CBI邏輯區段更新過程的示例表。
圖12是根據一些實施例的展示在更新之後的CBI邏輯區段更新過程的示例表。
圖13是包括雙鏈表的CBI邏輯區段的示例性方塊圖。
圖14是根據一些實施例的ECD邏輯區段的示例性方塊圖及流程圖。
圖15示出根據一些實施例的圖13所示鏈表的示例性細節。
圖16示出根據一些實施例的圖14所示位置-列表映射表(position-to-list map table,PLMT)的示例性細節。
圖17包括根據一些實施例的示例性區塊4×4 CBI邏輯區段表的詳細內容。
圖18是根據一些實施例的包括圖1所示ECD邏輯區段的GPU的示例性方塊圖。
現將詳細參照本發明概念的實施例,本發明概念的實例在附圖中示出。在以下詳細說明中,闡述諸多具體細節以實現對本發明概念的透徹理解。然而應理解,所屬領域中的普通技術人員無需這些具體細節也可實踐本發明概念。在其他情形中,未詳細闡述眾所周知的方法、程式、元件、電路及網路,以免使實施例的各個方面模糊不清。
應理解,儘管本文中可能使用“第一(first)”、“第 二(second)”等用語來闡述各種元件,然而這些元件不應受這些用語限制。這些用語僅用於區分各個元件。舉例來說,在不背離本發明概念的範圍的條件下,“第一表”可被稱為“第二表”,且相似地,“第二表”可被稱為“第一表”。
在本文對本發明概念的說明中所用的用語僅用於闡述特定實施例,而並非旨在對本發明進行限制。除非上下文清楚地另外指明,否則在對本發明概念的說明及隨附的權利要求書中使用的單數形式“一(a、an)”及“所述(the)”旨在也包括複數形式。還應理解,本文中使用的用語“和/或”指代且囊括相關列出項中的任意項及相關列出項中的一項或多項的所有可能的組合。還應理解,當在本說明書中使用用語“包括(comprises)”和/或“包括(comprising)”時,其指明所述特徵、整數、步驟、操作、元件、和/或元件的存在,但不排除一個或多個其他特徵、整數、步驟、操作、元件、元件和/或其群組的存在或添加。像素的元件及特徵未必按比例繪製。
本文中所揭露的實施例包括早期覆蓋捨棄(ECD)技術,所述ECD技術是在柵格化之後在圖形流水線中執行。四元組是在GPU顏色遍次(GPU color pass)期間移除,而不利用單獨的遍次。四元組是由相鄰的像素形成的2×2群組。2×2群組在本領域中是常見的(歸因於在紋理映射(texture mapping)中使用的細節層次計算(level-of-detail calculation))。因此,為便於例示及高效起見,在本文中稱為2×2群組及2×2群組的群組(例如4×4群組)。所揭露的技術在深度測試之後應用於覆蓋視窗內的一組基元。所揭露的技術在深度測試之後提供附加的隱藏面消除,從而 實現像素著色器四元組的減少且因此減少計算。本文中所揭露的實施例對深度複雜性進行處置,且對於大多數情況(例如,不是半透明的等),最終只能看到最接近的基元的像素。在最終看不見的像素上則無需花費多餘的時間及能量。本文中所揭露的實施例會在不降低輸送量的條件下移除冗餘覆蓋。也就是說,將覆蓋區塊插入到ECD裝置中的插入速率是以恒定時間O(1)進行,且僅增加潛伏時間(latency)。換句話說,插入時間是常數O(1),且因此僅增加潛伏時間,但生成覆蓋資訊的輸送量沒有降低。
本文中所揭露的實施例提供基於覆蓋圖的柵格化片段級遮擋去除(occlusion culling),以減低基於分塊的圖形流水線架構中的冗餘片段著色開銷。遮擋去除是通過移除覆蓋的時間移動視窗內的交疊覆蓋以在像素著色之前剔除四元組(2×2)來實現的。
圖1是根據一些實施例的早期覆蓋捨棄(ECD)區塊100的示例性方塊圖,ECD區塊100包括具有先進先出(FIFO)緩衝器132的4×4覆蓋區塊資訊(CBI)邏輯區段130。應理解,雖然在此實例中使用4×4覆蓋區塊,但如上所述,在不背離本文中所揭露的發明概念的條件下,可使用任何合適大小的覆蓋區塊。柵格化4×4覆蓋區塊(例如,像素遮罩105a及110a)的移動視窗可被添加到CBI邏輯區段130且被容納在CBI邏輯區段130內,以延遲像素著色。這是推遲渲染的一種形式。交疊覆蓋可被擦除以移除完整的四元組。儘管可對像素進行多次著色,然而在優選實施例中,在CBI邏輯區段130中的移動視窗內僅對像素進行一次著色。
在一些實施例中,CBI邏輯區段130在FIFO緩衝器132 中緩衝4×4像素(例如,105a及110a)的深度測試後區塊(post depth-tested block),以對相同位置處的一個或多個像素覆蓋進行比較並擦除一個或多個覆蓋。本文中所揭露的ECD技術按照在CBI邏輯區段130中保存的時間次序查看基元(例如,基元qp)的移動視窗。CBI邏輯區段130可在FIFO緩衝器132中緩衝基元並在CBI邏輯區段130中確定對像素著色有貢獻的獲勝基元(winning primitive)。
圖2是示出根據一些實施例的32×32分塊覆蓋-基元圖(TCPM)205的示例圖。現在參照圖1及圖2。
TCPM 205可儲存每一像素基元資訊(per pixel primitive infromation)。每一4×4覆蓋區塊(例如,105a及110a)在135處進入到CBI邏輯區段130中之後,區塊更新邏輯區段175便可更新TCPM 205。在一些實施例中,TCPM 205包括多個4×4覆蓋區塊(例如覆蓋區塊215)。應理解,雖然在此實例中使用4×4覆蓋區塊,但如上所解釋,在不背離本文中所揭露的發明概念的條件下,可使用任何合適大小的覆蓋區塊。經過深度比較的覆蓋可對較早的覆蓋進行覆寫,而無需進行進一步測試。4×4覆蓋區塊(例如,105a及110a)可按照通過柵格化產生所述4×4覆蓋區塊的次序插入到CBI邏輯區段130中,且在CBI邏輯區段130內作為經過緩衝的4×4覆蓋區塊(例如,105b及110b)被跟蹤。渲染次序可保持在輸入處,但未必對所述次序進行強制。4×4覆蓋區塊(例如,105b及110b)可最終在140處按照FIFO次序作為所提取的4×4覆蓋區塊(例如,105c及110c)離開CBI邏輯區段130。在140處離開後,CBI邏輯區段130可將所提取的4×4覆蓋區塊(例 如,105c及110c)中的每一者與TCPM 205進行存活比較。
CBI邏輯區段130可接收深度測試後4×4覆蓋區塊(例如,105a及110a),深度測試後4×4覆蓋區塊(例如,105a及110a)可在入口點135處插入到CBI邏輯區段130中。如時間線125所示,較老的4×4覆蓋區塊表項被示出為朝右,而較新的表項被示出為朝左。每一4×4覆蓋區塊可具有如圖1中的三角形所示的相關聯的基元(例如,qp)。在140處從CBI邏輯區段130離開後,區塊更新邏輯區段175便可檢查基元p在TCPM 205中的最終區塊狀態,以更新覆蓋。如果一些區塊中不存在基元p,則區塊更新邏輯區段175可將與基元p相關聯的像素標記為0(例如,在圖1中被示出為粗體零)。離開的4×4覆蓋區塊110c中的粗體0表示被擦除的覆蓋。這些是與4×4覆蓋區塊110c中的基元p相關聯的像素,所述像素被與來自4×4覆蓋區塊105c的較新基元q相關聯的像素遮擋。基元qp各自在TCPM 205中的區塊(2,2)中具有覆蓋。在此實例中,直到離開CBI邏輯區段130為止,沒有其他基元接觸TCPM 205的區塊(2,2)。4×4覆蓋區塊105c的最終TCPM狀態在圖2中的210處示出。如在210處的最終狀態中可看到,與基元p相關聯的像素中的一些像素被與基元q相關聯的像素中的一些像素遮擋。
與不同時間視窗化方法不同,可將柵格化後4×4覆蓋區塊(例如,105a及110a)與柵格化後4×4覆蓋區塊的相關聯的基元資訊一起饋送到CBI邏輯區段130中。基元資訊及覆蓋資訊可保存在單獨的專用表(如在以下進行詳細論述)中。對於EarlyZ及Read-Only-EarlyZ深度測試模式,提供到ECD邏輯區段100的 覆蓋資訊可針對最近的深度緩衝器進行深度測試。EarlyZ是在ECD及每一像素著色之前實行的深度處理。換句話說,深度及範本測試(depth and stencil test)是在執行像素/片段著色器之前執行的。相反,LateZ是在ECD及像素著色之後實行的深度測試,或者換句話說,LateZ是在執行像素/片段著色器之後執行的。當在執行像素著色器之前實行深度測試時,像素著色器不會修改覆蓋。雖然活的覆蓋資料(4×4)不需要存在於不具有設定位元(即,覆蓋遮罩=16'b0)的ECD輸入處,但此種覆蓋可在ECD後EarlyZ輸出區塊中被捨棄。在140處從CBI邏輯區段130離開後,4×4覆蓋區塊(例如,105c及110c)可針對深度緩衝器的最新副本再次進行深度測試。覆蓋是指示區塊中哪些像素或樣本被基元覆蓋的遮罩,且存活覆蓋是在任何覆蓋被擦除之後剩餘的覆蓋。覆蓋遮罩對於每一被覆蓋的像素或樣本均具有位元。覆蓋遮罩對於每一被覆蓋且未被擦除的像素或樣本均具有“1”位元。當所有活的覆蓋被擦除時,覆蓋遮罩為零(0)。當每一像素僅具有一個樣本時,則樣本相當於像素。儘管不要求每一像素僅具有一個樣本,然而在本文中用語“樣本”與“像素”一般可互換使用。
作為另外一種選擇或另外地,在135處進入到CBI邏輯區段130中之後,交疊4×4覆蓋區塊(例如,105b及110b)便可由區塊更新邏輯區段175進行更新。在此示例性實施例中,CBI邏輯區段130中的每一表項是指分塊(例如,TCPM 205)中的一個4×4覆蓋區塊且可具有僅屬於一個基元的活的覆蓋。在140處從CBI邏輯區段130離開後,如果4×4覆蓋區塊(例如,105c及110c)不具有活的覆蓋(例如,由於更新機制),則此4×4覆蓋區 塊可被捨棄且不被轉發。ECD邏輯區段100也可記錄駐留基元(resident primitive)。在140處從CBI邏輯區段130離開後,基元的覆蓋計數便可被記在被稱為基元資訊表(PIT)165的表中。基於CBI邏輯區段130的FIFO緩衝器132的深度,多個基元(例如,qp)可駐留在PIT 165中和/或駐留基元的屬性儲存器160中。可選地,PIT 165的內容可包括4×4活的覆蓋計數170。舉例來說,當基元(例如,基元p)的第一4×4覆蓋區塊(例如,110a)進入CBI邏輯區段130時,PIT 165中的基元4×4活的覆蓋計數170可遞增。對於基元的最末4×4覆蓋區塊而言,可測試此計數值170。EarlyZ輸出可基於計數值170做出決策。
TCPM 205可記住PIT 165中的哪個基元最後被寫入到像素。在140處從CBI邏輯區段130離開後,如果4×4覆蓋區塊表項(例如,105c及110c)的PIT基元索引不與儲存在TCPM 205中的至少一個基元索引匹配,則4×4覆蓋區塊表項(例如,105c及110c)確保沒有像素具有活的覆蓋。儘管圖2中的TCPM 205示出32×32分塊大小,然而應理解,也可使用其他大小(例如,介於4×4分塊到512×512分塊範圍內的分塊)。每一分塊可包括4×4覆蓋區塊。每一TCPM可利用適合的儲存量(例如,2千位元組(KB)到16KB),且適合性可取決於對PIT 165中的表項進行識別所需的位元的數目。為防止分塊遍次之間出現長的停頓,或者當不允許繪製調用(draw call)之間的交疊時,TCPM 205可被雙重緩衝,或者甚至是具有多於兩個緩衝器的多重緩衝。每次檢測到新的基元時,可在PIT 165中為所述新的基元指配新的表項。此表項的索引可用於與TCPM 205進行交互作用。當ECD邏輯區段 100為CBI邏輯區段130接收到新的4×4覆蓋區塊時,ECD邏輯區段100可與TCPM 205進行交互作用。一旦將4×4覆蓋區塊儲存在CBI邏輯區段130中,區塊更新邏輯區段175便可使用基元的柵格化所產生的對應的PIT索引來更新TCPM 205內的與特定4×4覆蓋區塊的活的像素對應的位置。由於在135處進入到CBI邏輯區段130中之前傳入4×4覆蓋區塊已進行了深度測試,因此僅在深度測試中存活的覆蓋出現在ECD邏輯區段100的輸入處。對此覆蓋進行渲染會覆寫先前寫入到這些位置的任何覆蓋,無論在ECD邏輯區段100中或稍後在渲染流水線中均如此。較老的資料可被覆寫,如果可能,ECD邏輯區段100會加速覆寫。例外情況是當半透明或真正LateZ繪製調用被渲染時,或者當其他與覆蓋相關的控制發生改變時(例如當特定的渲染目標寫入啟用(render target write enables)發生改變時)。
傳入的活的覆蓋可立即使用產生此特定4×4覆蓋區塊的基元的PIT表項索引來更新TCPM 205,且可設定被覆蓋的任何像素或樣本的有效狀態。這些像素的任何中間覆蓋均可被擦除,這是由於當未通過深度緩衝器測試且只要中間覆蓋不在半透明繪製調用中時或者當某種覆蓋改變不允許擦除時,中間覆蓋將在深度緩衝器及渲染目標中被覆寫。
在140處從CBI邏輯區段130離開後,CBI邏輯區段130便可將PIT 165內的4×4覆蓋區塊表項(例如,105c及110c)索引與TCPM 205中其4×4位置中對應的像素進行比較。所有匹配的覆蓋均創建其存活4×4覆蓋。這個過程被稱為ECD覆蓋存活機制。來自PIT 165的基元資訊也可被讀出並被發送到像素著色器後 儲存,如以下進行進一步解釋。
傳入的基元資料可與基元的第一覆蓋區塊一起到達。此傳入的基元資料可保存在PIT 165中。空的基元可視需要到達(如果便於實施的話)且可被放置到PIT 165中。PIT 165也可將和任何特殊事件相關的狀態資訊與CBI邏輯區段130中對應的表項一起儲存。舉例來說,可在PIT 165中對控制表項進行指派(assert)。控制資訊可保存在PIT 165中,且CBI邏輯區段130中的表項可具有指向PIT 165中的表項的指標。對於控制資訊,這種映射過程使控制資訊在渲染時保持有序。CBI邏輯區段130中的各別表項也可包括所述各別表項在PIT 165中的對應的表項的索引。舉例來說,儲存在CBI邏輯區段130中的基元資訊可包括將CBI邏輯區段130中的表項與PIT 165中的表項聯繫起來的索引。可根據正在被存取的要素選擇索引。舉例來說,CBI邏輯區段130中的更多表項可實現更理想的深度複雜性檢測及移除,但以緩衝器面積及系統潛伏時間為代價。基元柵格化的次序可確定覆蓋擦除。另外,CBI邏輯區段130的長度及CBI邏輯區段130中的駐留時間也可確定覆蓋擦除。輸入及輸出的次序可與駐留時序(residency timing)一起維持。舉例來說,基元及同步化事件保持處於與它們到達時的次序相同的次序且以所述相同的次序離開。
在一些實施例中,只要CBI邏輯區段130的FIFO緩衝器132是空的,所有與LateZ相關的通訊量(traffic)均可繞過ECD邏輯區段100。否則,將觸發清除條件(flush condition)。清除是指在清除時將ECD邏輯區段100的全部內容推出ECD邏輯區段100,而不從其進一步移除任何覆蓋。對於EarlyZ到LateZ轉變的 情形,CBI邏輯區段130的FIFO緩衝器132可被排空。自然排空(natural drain)是輸入覆蓋將FIFO緩衝器表項推出。強制排空(forced drain)是硬體可實行的防止ECD邏輯區段100上方的邏輯將流水線鎖定的自然排空或清除的形式。存在其中從檢驗深度ECD後轉變到ECD前的場景。在這些場景中,ECD邏輯區段100的一些ECD結構被清除,以防止在未來操作期間使用不完整的狀態。這種清除的範圍可能會受到限制,以在維持正確功能的同時使ECD邏輯區段100的功效最大化。一般來說,狀態可僅在繪製調用之間改變。從渲染流水線的角度來看,繪製調用具有恒定的狀態。繪製調用為一個或另一個。應用將通過改變狀態來拆分繪製調用。因此,LateZ到EarlyZ切換可位於繪製調用邊界上。
為降低成本、能量消耗及複雜性,對在135處進入到CBI邏輯區段130的覆蓋進行比較及更新優於對在CBI邏輯區段130的140處離開的覆蓋進行深度測試。在一些實施例中,TCPM 205中的覆蓋可在ECD邏輯區段100的輸入處被更新,但在ECD邏輯區段100的輸出處被比較及提取。由於4×4覆蓋資料已進行了深度測試,因此在分塊中具有相同位置的連續的(即,按照時間次序及來自不同基元,但只要滿足API渲染要求,便可使用更複雜的排序)4×4覆蓋區塊應擦除先前的覆蓋。通過使CBI邏輯區段130的內容一旦被寫入之後便保持恒定且在離開時使用TCPM 205擦除CBI邏輯區段130的內容,使得ECD邏輯區段100的CBI邏輯區段130的FIFO緩衝器132更新實施方案更容易且更便宜。可選的方法是修改CBI邏輯區段130內容。使CBI邏輯區段130內容保持不變能夠簡單地直接傳遞由於功能原因而無法被 擦除的繪製調用資料。在不進行深度緩衝器存取或深度測試的情況下,ECD 4×4區塊更新邏輯區段175可使用新的覆蓋覆寫先前的覆蓋。在140處離開後,不需要測試4×4覆蓋區塊表項的深度。PIT 4×4覆蓋計數170可被更新。應理解,使用PIT覆蓋計數170是可選的。可使用一個或多個狀態欄位來實現柵格化控制流邏輯中的ECD邏輯區段100的正確操作。這些狀態可由標準狀態傳播及更新機制提供。舉例來說,在半透明繪製調用、LateZ繪製調用及唯讀EarlyZ繪製調用期間,ECD邏輯區段100可被禁用。可提供基元的映射,以使更新(即,新的覆蓋區塊的插入)是以恒定時間進行,而不是以O(<CBI緩衝器大小>)或O(<PIT大小>)進行。狀態資訊可指示ECD邏輯區段100中的操作是否可行。舉例來說,當基元是半透明的時,當另一基元在所述基元前面時,所述基元不會被移除,否則將無法對所述兩種基元進行混合。基元及控制記號(token)保持處於時間次序。
以下揭露鏈表方法,鏈表方法是基於TCPM的方法的替代方法。使用TCPM 205的方法具有若干優點。其更容易實施及驗證。另外,就輸送量而言,TCPM 205具有顯著更高的性能。相反,鏈表方法使用較少的記憶體,但使用的搜索時間卻比恒定時間長。
圖3是根據一些實施例的區塊覆蓋技術的示例圖。在時間視窗1中,基元P5完全被基元P4遮擋,且不對像素著色有所貢獻。
基元的窗口可為不同的或交疊的。為提高硬體效率及降低GPU流水線內的實施複雜性及局部實施,本文中所揭露的ECD 技術處理基元的滑動視窗及相關聯的覆蓋。
圖4是根據一些實施例的ECD邏輯區段100的另一示例性方塊圖。圖4也適用於以下所揭露的鏈表實施例。在405處,ECD邏輯區段100可接收覆蓋區塊。應理解,雖然可使用4×4覆蓋區塊,但如上所解釋,在不背離本文中所揭露的發明概念的條件下,也可使用任何合適大小的覆蓋區塊。在410處,ECD邏輯區段100可接收LateZ繞過決策,以用於其中在不具有錯誤渲染風險的情況下不能啟用LateZ繪製調用(例如對於大多數LateZ繪製調用而言)的情形。在420處,ECD邏輯區段100可接收強制排空訊號。在435處、440處及445處,ECD邏輯區段100可分別接收圖像級狀態、繪製調用級狀態及總體配置級狀態資訊。如415處所示,ECD邏輯區段100可將覆蓋區塊發送到像素著色器後儲存器(例如,圖5所示525)。在430處,ECD邏輯區段100可發送附加中繼資料(meta-data)。附加中繼資料可與基元相關聯,對於那些在ECD後具有存活覆蓋的基元,位於ECD邏輯區段100下游的系統可存取此基元。舉例來說,附加中繼資料可用于生成每一像素顏色或紋理座標。
ECD邏輯區段100提供基於移動覆蓋視窗的片段透支減低。ECD邏輯區段100還提供HSR的局部實施。ECD邏輯區段100還提供視窗化HSR的確定性實施。ECD邏輯區段100的優點可包括:如果在幀的中間(在時間上來說)引入半透明性,則能夠重啟。ECD邏輯區段100在半透明繪製調用期間不擦除覆蓋。在某些情形中,ECD邏輯區段100僅不允許移除具有某些狀態轉變的繪製調用之間的覆蓋。舉例來說,當繪製調用寫入到渲染目 標的某個子集且下一次寫入到不同的子集時,ECD邏輯區段100僅移除其自身的渲染目標子集內的覆蓋,而不移除跨越這兩者的覆蓋。在一些實施例中,這可通過在繪製調用之間切換TCPM來實施。可使用多個TCPM來允許ECD邏輯區段100在ECD邏輯區段100還沒有清除資料時仿佛正在清除資料一樣工作。這允許ECD邏輯區段100繼續處理輸入資料,而無需等待下游邏輯(例如,流水線階段、處理階段及佇列)消耗當前包含在ECD邏輯區段100中的所有資料。
雖然中間幀半透明目前並不常見,但在API中是准許的且一些圖形應用可具有特殊的原因而需要中間幀半透明。基於應用要求,ECD邏輯區段100可由驅動器進行程式化以開始排空及重啟。如果圖像中僅出現幾個大螢幕/分塊覆蓋基元,則驅動器可視需要關斷ECD邏輯區段100。為隱藏當深度和/或覆蓋由著色器確定(例如,著色器修改深度/捨棄)時的情況的潛伏時間,如果以微小的架構修改支持多個並行分塊渲染,則ECD邏輯區段100也可工作。ECD邏輯區段100可仿佛兩個不同的分塊在柵格化器中以及整個渲染流水線中的兩個不同的GPU流水線或流水線狀態上工作一樣發揮功能。在一個GPU流水線正在等待著色器後資訊可供使用的同時,另一GPU流水線可對由在TCPM 205上工作的ECD邏輯區段100產生的四元組進行像素著色。可使用ECD邏輯區段100有效地實施LateZ到EarlyZ(例如,深度/覆蓋是在像素著色器執行前確定的)轉變潛伏時間容差。在一些實施例中,可使用相同的儲存及一些共用邏輯在ECD邏輯區段100中實施四元組合併。
圖5是根據一些實施例的GPU中的柵格化控制流邏輯區段500內的ECD邏輯區段100的示例性方塊圖及流程圖。柵格化控制流邏輯區段500可包括柵格化邏輯、深度/範本測試邏輯以及後端圖形流水線資料及控制流邏輯。如圖5中所示,ECD邏輯區段100設置在GPU流水線中的柵格化控制流邏輯區段500內部。深度內插及測試單元520可實行深度測試且可從由柵格化產生的像素區塊移除覆蓋,所述像素區塊是ECD邏輯區段100的覆蓋輸入。覆蓋區塊可以FIFO方式被饋送到ECD覆蓋(例如,CBI邏輯區段130)中。CBI邏輯區段130的FIFO緩衝器132的深度可支援推遲將覆蓋區塊傳輸到像素著色器及像素著色器後儲存器525(即,ECD覆蓋區塊的消費者)的操作。
柵格化器控制單元505可耦合到柵格化控制流邏輯區段500。柵格化器控制單元505可實行設置計算(setup computation)以用於柵格化及屬性平面方程產生、儲存及管理。柵格化控制流邏輯區段500可包括柵格化邏輯區段510、深度內插及測試單元520、ECD邏輯區段100、像素著色器後儲存器525(其可包括在執行像素著色器之後所需資訊的儲存及相關邏輯)以及像素著色器後邏輯區段535。像素著色器後邏輯區段535可耦合到像素著色器輸出儲存單元540。ECD邏輯區段100可耦合到像素著色器邏輯區段545。像素著色器輸出儲存單元540及像素著色器後邏輯區段535可耦合到混合階段單元550。
深度內插及測試單元520可將Z測試後4×4發送到ECD邏輯區段100。CBI邏輯區段130可在FIFO緩衝器132中以FIFO方式緩衝四元組。一旦FIFO緩衝器132被填滿,便可開始四元組 的排空程式。ECD邏輯區段100可與四元組合併(quad merge,QM)共用硬體或以其他方式包括四元組合併(QM)。驅動器級開/關控制可用於繪製調用邊界上的區塊。柵格化控制流邏輯區段500中的現有像素著色器前邏輯可對介面進行微小改變,以與所揭露的實施例一起操作,然而,不需要新的介面。
圖6是根據一些實施例的GPU中的TCPM ECD實施邏輯的示例性方塊圖及流程圖600。圖600包括鍵605,鍵605示出表示ECD輸出、ECD覆蓋輸入、片段資料、基元資料及ECD基元輸入的各種虛線。在輸入處理階段610處接收來自像素著色器前邏輯(即,柵格化之後但在像素著色器之前的圖形流水線邏輯)的傳入覆蓋區塊635,並將傳入覆蓋區塊635儲存在CBI邏輯區段130中。應理解,雖然在此實例中使用4×4覆蓋區塊,但如上所解釋,在不背離本文中所揭露的發明概念的條件下,可使用任何合適大小的覆蓋區塊。此資訊可被進一步提供到ECD輸出處理階段615。TCPM 205可容納各種大小的分塊。舉例來說,TCPM 205可依據GPU的特性而以陣列容納n×n個要素,其中n是正整數(例如,4≦n≦512)。可使用分塊內的像素位置(X,Y)來對陣列進行索引。陣列中的每一表項可為7位元(例如,對於128個表項的FIFO)的PIT 165表項索引,如果包括四元組合併,則再加上用於基元面(primitive face)的1位元。除此之外,每一TCPM還可具有用於記住ECD邏輯區段100中的像素的有效性的表。
輸入處理階段610可在635處接收4×4覆蓋區塊及在640處接收ECD基元輸入。CBI邏輯區段130可在FIFO緩衝器 132中按照FIFO次序緩衝4×4覆蓋區塊並將4×4覆蓋區塊提供到輸出處理階段615。PIT 165可從輸入處理階段610接收基元資料且可將基元資料發送到輸出處理階段615。輸入處理階段610可將片段覆蓋資料寫入到TCPM 205。輸出處理階段615可從TCPM 205讀取片段覆蓋資料。分塊覆蓋有效邏輯區段630可從輸入流水線接收片段資料且可將片段資料發送到輸出處理階段615以及從輸出處理階段615接收片段資料。輸出處理階段615可向柵格化控制流邏輯(例如,圖5所示500)的像素著色器前邏輯發送4×4覆蓋區塊及相關聯的基元,如645處所示。
圖7是根據一些實施例的示例性基元資訊表(PIT)700。圖8是根據一些實施例的示例性TCPM有效表(TVT)800。圖9是根據一些實施例的示例性TCPM表900。圖10包括根據一些實施例的示例性覆蓋區塊資訊(CBI)邏輯區段表的內容1000的示例性細節。應理解,在每一表中可包括每一表中所示內容中的一些或全部內容。
現參照圖7到圖10。
在一些實施例中,流水線的不同階段可對不同的繪製調用和/或分塊同時工作。所述各種表中的一些表的資料可按四元組打包。四元組可被打包成4×4像素區塊。應理解,雖然在此實例中使用4×4覆蓋區塊,但如上所解釋,在不背離本文中所揭露的發明概念的條件下,可使用任何合適大小的覆蓋區塊。一般來說,覆蓋區塊的所有資料可一同存取。可使用區塊的分塊位置(X,Y)來對像素的傳入覆蓋區塊進行索引。基元資訊可保存在圖7所示基元資訊表(PIT)700中,基元資訊表(PIT)700可由索引值進 行索引。PIT 700的每一索引可具有與其相關聯的PIT欄位(例如,Az、Bz、Cz)及中繼資料。像素著色器前邏輯的輸出可具有基元資訊,所述基元資訊可保存在PIT中,以避免跨越所有接觸的覆蓋區塊進行複製。PIT可使用存活覆蓋計數來擴充,以簡化基元及基元屬性管理。
不對CBI邏輯區段130的FIFO緩衝器132的深度進行限制。FIFO緩衝器132越深,系統可觀察及減少像素著色的歷史時間便越長。對於更深的FIFO緩衝器132,駐留基元計數也會增加且使用附加的屬性儲存器160。
圖11是根據一些實施例的展示在更新之前的CBI邏輯區段130更新過程的示例表。圖12是根據一些實施例的展示在更新之後的CBI邏輯區段130更新過程的示例表。現在參照圖11及圖12。
圖11及圖12示出在不進行任何深度比較的區塊更新程式。表1100示出用於對位置進行匹配的更新前FIFO表項。表1200示出用於對位置進行匹配的更新後FIFO表項。在一些實施例中,CBI FIFO緩衝器132的深度可為n。表項4×4P、4×4I、4×4J、4×4Q及4×4K可接觸分塊內的同一位置(X,Y)。應理解,雖然在此實例中使用4×4覆蓋區塊,但如上所解釋,在不背離本文中所揭露的發明概念的條件下,可使用任何合適大小的覆蓋區塊。PLMT中用於CBIHEAD及CBITAIL的對應的表項可分別為p及k。在ECD更新時期期間(例如,可能耗用多個循環),使覆蓋區塊表項從FIFO緩衝器132離開可能會修改列表。新的表項可更新首部且離開的表項可更新尾部。然而,對更新進行搜索會在所述時期內的每一 循環中向前推進。在所述時期期間,尾部可得到更新或可不得到更新。以上實例中的4×4新表項可對位元0將4×4P解除指派。對於位元2,表項4×4I可保持不變。對於位元15,表項4×4J可得到修改。
當CBI邏輯區段130已滿或被強制排空時,可釋放來自FIFO緩衝器132的出口的一個表項。基於區塊4×4 PIT內的四元組(2×2)的佔用,針對匹配的基元來更新表項4×4覆蓋計數(例如,圖1所示170)。接著可對PIT表項進行解除指派。作為優化,在檢測到第一個非零4×4覆蓋離開之後,可設定旗標。EarlyZ輸出模組可捨棄不具有活的覆蓋的覆蓋區塊。
圖13是包括雙鏈表1502的CBI邏輯區段130的示例性方塊圖。圖14是根據一些實施例的ECD邏輯區段100的示例性方塊圖及流程圖1500。圖15示出根據一些實施例的圖13所示鏈表1502的示例性細節1605。圖16示出根據一些實施例的圖14所示位置-列表映射表(PLMT)1570的示例性細節。圖17包括根據一些實施例的示例性CBI邏輯區段130的內容1700的示例性細節。現在參照圖13、圖14、圖15、圖16及圖17。
不使用基於內容可定址記憶體(content addressable memory,CAM)的搜索技術,而是可使用鏈表或表來允許存取隨機存取記憶體(random access memory,RAM)中的表項,從而提供CAM的行為。應理解,在不背離本文中所揭露的發明概念的條件下,除了圖或鏈表之外,還可使用其他資料結構實施方案。位置-列表映射表(PLMT)1570(圖14所示)可包括包含位於分塊的特定覆蓋區塊內的覆蓋的基元的雙鏈表1502(圖13所示)的首 部。鏈表1502的結束可由尾指針1595確定,且鏈表1502的開始可由首指針1590確定。如果圖17中所示的CBI邏輯區段內容細節的下一節點等於當前節點的表項ID,則當前節點是列表中的最末節點,且因此表示尾部。對於分塊內的給定位置(X,Y),與覆蓋區塊接觸的基元的列表可被佈置成雙鏈表1502。雙鏈表1502可為覆蓋區塊的時間次序集合,但只要滿足API渲染要求,便可實施更複雜的排序,例如在維持每一位置的次序的同時進行重新排序。
在一些實施例中,CBI邏輯區段130可包括雙鏈表1502。另一方面,PIT 165充當FIFO緩衝器。特定分塊中同一位置的覆蓋區塊通過鏈表進行連結。鏈表是雙鏈結的,且提供下一節點指針及前一節點指針,如圖13中所示。鏈表指標資訊儲存在每一覆蓋區塊的CBI邏輯區段130中。因此,鏈表1502中的每一個覆蓋區塊表項能夠識別鏈中目前最年輕的成員及目前最老的成員。1590是鏈中最年輕的成員。1595是鏈中最老的成員。從特定節點(或表項)的角度來看,目前最年輕的是前一節點,且目前最老的是下一節點--因此,前一節點未必是鏈中最年輕的成員1590,且下一節點未必是鏈中最老的成員1595。PLMT 1570維護特定分塊上的覆蓋區塊的位置與鏈表1502中的首節點1590之間的映射。索引是分塊上的覆蓋區塊的X及Y位置的函數。每一表項指示在ECD邏輯區段100中是否存在X及Y位置的覆蓋區塊,且當存在所述覆蓋區塊時,提供鏈表首節點指針。這可用於檢索鏈表1502中最年輕的節點1590。
覆蓋區塊進入ECD邏輯區段100並更新PLMT 1570、 CBI邏輯區段130及PIT 165。覆蓋區塊被分配有CBI邏輯區段130的鏈表1502中的表項。此覆蓋區塊是最年輕的,且鏈表1502中的位置是首節點指標(即,圖14中的CBI ALLOCHEAD 1575)。在進入到ECD邏輯區段100中之後,當ECD邏輯區段100中不存在覆蓋區塊時-這意味著對PLMT 1570中的位置的查找操作未命中(即,PLMT 1570中具有無效表項),則PLMT表項被標記為有效,且CBI ALLOCHEAD(圖14所示)被儲存為鏈表首部1590(圖13所示)。
在其他情況下,在進入到ECD邏輯區段100中之後,當ECD邏輯區段100中存在覆蓋區塊時-這意味著對PLMT 1570中的位置的查找操作命中(即,PLMT 1570中具有有效表項),則CBI ALLOCHEAD(圖14所示)被更新為PLMT 1570中的鏈表首部。另外,PLMT HITHEAD(圖14所示)被提供到覆蓋區塊更新邏輯區段175以遍歷鏈表1502。
在進入到ECD邏輯區段100中之後,覆蓋區塊更新邏輯區段175可實行重複的覆蓋區塊讀取(例如,圖14所示1525),以提取鏈表1502中的所有節點。覆蓋區塊更新邏輯區段175也可實行覆蓋更新操作(例如,圖14所示1540)。在覆蓋更新操作期間,進入ECD的覆蓋區塊可擦除屬於鏈錶鏈中較老的覆蓋區塊的覆蓋。這種機制會移除隱藏或被遮擋的覆蓋。
在從ECD邏輯區段100離開後,覆蓋區塊資訊離開ECD邏輯區段100,如圖14的1550處所示,且基元資訊離開ECD邏輯區段100,如圖14的1545處所示。覆蓋區塊更新邏輯區段175提取鏈表1502中的前一節點,並將前一節點標記為尾節點1595 (圖13所示)。當前一節點不存在時,則離開的覆蓋區塊的PLMT表項被無效化,以指示特定位置的鏈表不存在。
圖14的像素1500包括鍵1505,鍵1505示出表示回應/輸出、請求/輸入、區塊輸入、區塊輸出及基元資訊的各種虛線。CBI邏輯區段130及PLMT 1570可分別接收覆蓋區塊資訊輸入,如1510處及1565處所示。覆蓋區塊輸入可為覆蓋區塊及相關聯的資訊。PIT 165可從區塊輸入接收基元資訊,如1535處所示。PIT 165可發送基元資訊,如1545處所示。覆蓋區塊更新邏輯區段175可向CBI邏輯區段130發送覆蓋區塊讀取請求,如1525處所示。CBI邏輯區段130可向覆蓋區塊更新邏輯區段175發送覆蓋區塊返回,如1520處所示。覆蓋區塊更新邏輯區段175可向CBI邏輯區段130發送覆蓋區塊更新,如1540處所示。CBI邏輯區段130可向覆蓋區塊更新邏輯區段175發送CBI UPDATETAIL,如1555處所示。
PLMT 1570可接收並在特定位置(例如,X,Y)處儲存一個或多個覆蓋區塊,如1565處所示。PLMT 1570可向覆蓋區塊更新邏輯區段175提供PLMT HITHEAD值,如1530處所示。覆蓋區塊更新邏輯區段175可向PLMT 1570發送PLMT無效化訊號,如1580處所示。CBI邏輯區段130可輸出覆蓋區塊,如1550處所示。
當新的覆蓋區塊進入ECD時,可更新鏈表首部且也可更新對應的區塊的CBI ALLOCHEAD的PLMT表項,如1575處所示。傳入覆蓋區塊位置可用於對PLMT 1570進行索引,且可檢查對應的有效位元以確認早已存在有效列表。當不存在有效列表 時,可設定有效位元且可使用CBI邏輯區段130的鏈表1502中的覆蓋區塊的索引來更新首指標。當有效位元已經被設定時,新的覆蓋區塊可被附加到列表的開頭,且可僅更新首指針。可提取由先前首部進行索引的區塊,且可使用新的覆蓋區塊的CBI鏈表索引來更新先前指標。先前的鏈表首部及尾部可被轉發到覆蓋區塊更新邏輯區段175(例如,圖14所示)。
一旦從PLMT 1570接收到PLMT HITHEAD,覆蓋區塊更新邏輯區段175便可搜索鏈表1502,直到到達列表1502的由尾指針1595劃界的末尾。遮罩中的每一位元可表示樣本/像素覆蓋(例如,1:被覆蓋,0:未被覆蓋)。對於遮罩中的任何位元的位置,覆蓋區塊表項的鏈表中的所有表項僅具有一個設定位元或不具有設定位元。來自與同一樣本/像素接觸的不同基元的較新的設定位元可將先前的設定位元解除指派。
圖18是根據本文中所揭露的發明概念的實施例的包括具有ECD邏輯區段100的柵格化區段1805的GPU 1800的示例性方塊圖。GPU 1800可包括一個或多個微處理器1810、記憶體器件1815(例如RAM和/或快閃記憶體)以及記憶體控制器1845。記憶體控制器1845及記憶體器件1815可構成使用非揮發性記憶體來儲存資料的固態驅動器/磁片(solid state drive/disk,SSD)。
上述方法的各種操作可通過能夠實行所述操作的任何合適的手段(例如各種硬體和/或軟體元件、電路和/或模組)來實行。
本文中所揭露的實施例同樣適用於多樣本渲染(通常稱為MSAA)以及超樣本渲染(super-sample rendering)。這些僅僅 對覆蓋進行重新定義來表示像素內的樣本而不是整個像素。當使用這些技術時,除了將覆蓋資訊映射到像素及樣本之外,ECD操作不發生改變。
結合本文中所揭露的實施例闡述的方法或者演算法及功能的區塊或步驟可直接以硬體實施、以由處理器執行的軟體模組實施、或以二者的組合來實施。如果以軟體實施,則所述功能可作為一個或多個指令或代碼儲存在有形的非暫時性電腦可讀媒體上或通過有形的非暫時性電腦可讀媒體傳送。軟體模組可駐留在隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(Read Only Memory,ROM)、電可程式化ROM(Electrically Programmable ROM,EPROM)、電可擦可程式化ROM(Electrically Erasable Programmable ROM,EEPROM)、暫存器、硬碟、抽取式磁碟(removable disk)、壓縮磁碟唯讀記憶體(compact disk ROM,CD ROM)或所屬領域中已知的任何其他形式的儲存媒體中。
以下論述旨在提供對可在其中實施本發明概念某些方面的一個或多個合適的機器的簡短總體說明。通常,所述一個或多個機器包括附裝有處理器、記憶體(例如,RAM、ROM或其他狀態保存媒體)、記憶體件、視頻界面及輸入/輸出介面埠的系統匯流排。所述一個或多個機器可至少部分地通過以下來控制:來自例如鍵盤、滑鼠等傳統輸入器件的輸入;以及從另一機器接收到的指令、與虛擬實境(virtual reality,VR)環境的互動、生物回饋(biometric feedback)或其他輸入訊號。本文中所用用語“機器”旨在廣泛地囊括單一機器、虛擬機器器或由以通訊方式耦合的一起運行的機器、虛擬機器器或器件形成的系統。示例性機器 包括計算器件(例如個人電腦、工作站、伺服器、可攜式電腦、掌上型器件、電話、平板電腦(tablet)等)以及運輸器件(例如私人或公共運輸(例如汽車、火車、計程車等))。
所述一個或多個機器可包括嵌入式控制器,例如可程式化或非可程式化邏輯器件或陣列、專用積體電路(Application Specific Integrated Circuit,ASIC)、嵌入式電腦、智慧卡等。所述一個或多個機器可利用連接到一個或多個遠端機器(例如通過網路介面、資料機或其他通訊性耦合)的一個或多個連接。機器可通過例如內部網(intranet)、網際網路、區域網路、廣域網路等物理網路和/或邏輯網路進行互連。所屬領域中的技術人員應理解,網路通訊可利用各種有線和/或無線短程或長程載體及協議,所述載體及協議包括射頻(radio frequency,RF)、衛星、微波、電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)545.11、藍牙®、光學的、紅外線的、纜線、鐳射等。
本發明概念的實施例可通過參照或結合相關聯的資料來闡述,相關聯的資料包括當由機器存取時會使機器實行任務或定義抽象資料類型或低級硬體上下文的函數、程式(procedure)、資料結構、應用程式等。相關聯的資料可儲存在例如揮發性和/或非揮發性記憶體(例如,RAM、ROM等)中或其他記憶體件及其相關聯的儲存媒體(包括硬碟驅動器、軟碟、光學記憶體件、磁帶、快閃記憶體、記憶棒(memory stick)、數位視訊盤、生物儲存器等)中。相關聯的資料可以資料包(packet)、串列資料、並行資料、傳播訊號等形式通過傳輸環境(包括物理網路和/或邏輯 網路)進行遞送,且可以壓縮或加密的格式使用。相關聯的資料可在分散式環境中使用且可儲存在本地和/或遠端以供機器存取。
已參照所示實施例闡述並示出了本發明概念的原理,將認識到,在不背離這些原理的條件下可對所示實施例進行排列及細節上的修改且可以任何期望的方式對所示實施例進行組合。且儘管以上論述著重於特定實施例,但也可預期存在其他配置。具體來說,即使本文中使用了例如“根據本發明概念的實施例”等表達,這些短語也旨在一般性地提及實施例的可能性,而不旨在將本發明概念限制到特定的實施例配置。本文中所用的這些用語可提及可組合到其他實施例中的相同或不同的實施例。
本發明概念的實施例可包括非暫時性機器可讀媒體,所述非暫時性機器可讀媒體包括可由一個或多個處理器執行的指令,所述指令包括實行如本文所述的本發明概念的要素的指令。
上述示例性實施例不應被視為對示例性實施例的發明概念進行限制。儘管已闡述了幾個示例性實施例,但所屬領域中的技術人員將容易理解,在不實質上背離本揭露的新穎教示及優點的條件下,可對這些實施例進行許多修改。因此,所有這些修改均旨在包含於由權利要求所界定的本發明概念的範圍內。
100:早期覆蓋捨棄(ECD)區塊
105a、110a:像素遮罩/4×4像素/4×4覆蓋區塊/深度測試後4×4覆蓋區塊
105b、110b:4×4覆蓋區塊
105c、110c:4×4覆蓋區塊/4×4覆蓋區塊表項
125:時間線
130:4×4覆蓋區塊資訊(CBI)邏輯區段/CBI邏輯區段
132:先進先出(FIFO)緩衝器
135:入口點
140:離開處
160:屬性儲存器
165:基元訊息表(PIT)
170:4×4活的覆蓋計數/計數值/PIT 4×4覆蓋計數
175:區塊更新邏輯區段
pq:基元

Claims (20)

  1. 一種用於在基於分塊的圖形渲染流水線中減少樣本著色器工作的由電腦實施的冗餘覆蓋捨棄方法,所述方法包括:在早期覆蓋捨棄邏輯區段內設置具有先進先出緩衝器的覆蓋區塊資訊邏輯區段;由所述先進先出緩衝器接收多個覆蓋區塊;由所述先進先出緩衝器按照先進先出次序緩衝所述多個覆蓋區塊;由所述覆蓋區塊資訊邏輯區段針對所述多個覆蓋區塊之中的所有覆蓋區塊將所述先進先出緩衝器與分塊覆蓋-基元圖內的對應的區塊位置進行匹配;由區塊更新邏輯區段更新所述多個覆蓋區塊之中與所述分塊覆蓋-基元圖內的所述區塊位置匹配的至少一個覆蓋區塊;由所述分塊覆蓋-基元圖儲存每一樣本基元覆蓋資訊;以及根據所述每一樣本基元覆蓋資訊對至少一個樣本進行著色。
  2. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:由所述先進先出緩衝器緩衝所述多個覆蓋區塊的移動視窗;將與所述多個覆蓋區塊相關聯的傳入覆蓋資訊與儲存在所述分塊覆蓋-基元圖中的所述每一樣本基元覆蓋資訊進行比較;以及剔除所述多個覆蓋區塊的所述移動視窗內的前面的交疊覆蓋。
  3. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,其中接收所述多個覆蓋區塊包括從圖形處理單元的柵格化控制流邏輯區段的深度內插及測試單元接收所述多個覆蓋區塊。
  4. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,其中:由所述先進先出緩衝器接收所述多個覆蓋區塊是在深度測試已完成之後進行;且在所述先進先出緩衝器中緩衝所述多個覆蓋區塊是在所述深度測試已完成之後進行。
  5. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:不對至少一個樣本進行著色。
  6. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:對所述多個覆蓋區塊之中的存活覆蓋中的至少一個樣本進行著色。
  7. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:由所述早期覆蓋捨棄邏輯區段在所述多個覆蓋區塊中提供基於移動覆蓋視窗的片段透支減低。
  8. 如請求項7所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:由所述早期覆蓋捨棄邏輯區段在所述多個覆蓋區塊中的三個或更多個覆蓋區塊中提供所述基於移動覆蓋視窗的片段透支減低。
  9. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,其中將所述先進先出緩衝器與對應的區塊位置進行匹配更包括:由所述覆蓋區塊資訊邏輯區段針對所述多個覆蓋區塊之中的所有覆蓋區塊將所述先進先出緩衝器與所述分塊覆蓋-基元圖內的區塊位置(X,Y)進行匹配。
  10. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:當所述多個覆蓋區塊中的每一覆蓋區塊離開所述先進先出緩衝器時更新基元資訊表。
  11. 如請求項10所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:當儲存在與所述多個覆蓋區塊之中的特定覆蓋區塊相關聯的所述基元資訊表中的基元索引不與儲存在所述分塊覆蓋-基元圖中的至少一個對應的基元索引匹配時,確保所述特定覆蓋區塊的樣本均不具有活的覆蓋。
  12. 如請求項10所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:更新所述分塊覆蓋-基元圖內的與所述多個覆蓋區塊之中在所述基元資訊表中具有對應的索引的特定覆蓋區塊的活樣本對應的一個或多個位置。
  13. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:當所述先進先出緩衝器接收到所述多個覆蓋區塊之中的新的覆蓋區塊時,由所述早期覆蓋捨棄邏輯區段與所述分塊覆蓋-基元圖進行交互作用。
  14. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:由所述覆蓋區塊資訊邏輯區段將所述先進先出緩衝器排空;以及由所述早期覆蓋捨棄邏輯區段共用由四元組合併使用的硬體。
  15. 如請求項14所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:在所述多個覆蓋區塊離開所述先進先出緩衝器之後,由所述早期覆蓋捨棄邏輯區段將所述多個覆蓋區塊發送到圖形處理單元的柵格化控制流邏輯區段的樣本著色器後儲存。
  16. 如請求項1所述的由電腦實施的冗餘覆蓋捨棄方法,其中將所述多個覆蓋區塊插入到所述早期覆蓋捨棄邏輯區段中的速率是以恒定時間進行。
  17. 一種用於在基於分塊的圖形渲染流水線中減少樣本著色器工作的由電腦實施的冗餘覆蓋捨棄方法,所述方法包括:在早期覆蓋捨棄邏輯區段內設置具有雙鏈表的覆蓋區塊資訊邏輯區段;由所述覆蓋區塊資訊邏輯區段接收多個覆蓋區塊;由所述覆蓋區塊資訊邏輯區段將所述多個覆蓋區塊插入到所述雙鏈表中;由所述雙鏈表緩衝所述多個覆蓋區塊的移動視窗;由位置-列表映射表維護所述多個覆蓋區塊中的每一覆蓋區塊的位置與所述雙鏈表中的首節點之間的映射; 在所述位置-列表映射表中實行所述位置的查找操作;回應於所述查找操作,判斷所述位置-列表映射表中的表項是有效更是無效;更新所述雙鏈表的首指標及尾指標中的至少一者;以及剔除所述多個覆蓋區塊的所述移動視窗內的前面的交疊覆蓋。
  18. 如請求項17所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:更新所述位置-列表映射表內的首指標及尾指標中的至少一者。
  19. 如請求項18所述的由電腦實施的冗餘覆蓋捨棄方法,更包括:當新的覆蓋區塊進入所述早期覆蓋捨棄邏輯區段時,更新所述位置-列表映射表內的所述首指針。
  20. 如請求項17所述的由電腦實施的冗餘覆蓋捨棄方法,其中接收所述多個覆蓋區塊包括從圖形處理單元的柵格化控制流邏輯區段的深度內插及測試單元接收所述多個覆蓋區塊。
TW108138201A 2018-12-11 2019-10-23 由電腦實施的冗餘覆蓋捨棄方法 TWI810389B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862778286P 2018-12-11 2018-12-11
US62/778,286 2018-12-11
US16/438,446 2019-06-11
US16/438,446 US11010954B2 (en) 2018-12-11 2019-06-11 Efficient redundant coverage discard mechanism to reduce pixel shader work in a tile-based graphics rendering pipeline

Publications (2)

Publication Number Publication Date
TW202022792A TW202022792A (zh) 2020-06-16
TWI810389B true TWI810389B (zh) 2023-08-01

Family

ID=70971069

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108138201A TWI810389B (zh) 2018-12-11 2019-10-23 由電腦實施的冗餘覆蓋捨棄方法

Country Status (4)

Country Link
US (1) US11010954B2 (zh)
KR (1) KR20200071657A (zh)
CN (1) CN111311717B (zh)
TW (1) TWI810389B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019000300A1 (zh) * 2017-06-29 2019-01-03 北京清影机器视觉技术有限公司 二维数据匹配方法、装置和逻辑电路
US11321806B2 (en) 2020-07-22 2022-05-03 Samsung Electronics Co., Ltd. Enhanced early coverage discard using opportunistic bypassing and dynamic queue resizing
US11798218B2 (en) 2020-08-03 2023-10-24 Samsung Electronics Co., Ltd. Methods and apparatus for pixel packing
US11748933B2 (en) 2020-08-03 2023-09-05 Samsung Electronics Co., Ltd. Method for performing shader occupancy for small primitives
US11954757B2 (en) * 2021-12-28 2024-04-09 Advanced Micro Devices, Inc. Method and apparatus for implementing a rasterizer in GPU operations
US20240005601A1 (en) * 2022-06-29 2024-01-04 Advanced Micro Devices, Inc. Hierarchical depth data generation using primitive fusion
CN116385253A (zh) * 2023-01-06 2023-07-04 格兰菲智能科技有限公司 图元绘制方法、装置、计算机设备和存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7626588B1 (en) * 2006-06-16 2009-12-01 Nvidia Corporation Prescient cache management
US20110164038A1 (en) * 2010-01-06 2011-07-07 Samsung Electronics Co., Ltd. Apparatus and method for tile-based rendering
CN103824276A (zh) * 2012-11-16 2014-05-28 Arm有限公司 用于处理图形的方法和设备
US8860742B2 (en) * 2011-05-02 2014-10-14 Nvidia Corporation Coverage caching
TW201445502A (zh) * 2013-05-24 2014-12-01 Samsung Electronics Co Ltd 圖形處理單元以及分塊渲染方法
US20150363969A1 (en) * 2014-06-17 2015-12-17 Imagination Technologies Limited Setting A Display List Pointer for Primitives in a Tile-Based Graphics Processing System
KR101719485B1 (ko) * 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US9760968B2 (en) * 2014-05-09 2017-09-12 Samsung Electronics Co., Ltd. Reduction of graphical processing through coverage testing
US20180165872A1 (en) * 2016-12-09 2018-06-14 Advanced Micro Devices, Inc. Removing or identifying overlapping fragments after z-culling

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717440A (en) * 1986-10-06 1998-02-10 Hitachi, Ltd. Graphic processing having apparatus for outputting FIFO vacant information
JPH0797413B2 (ja) 1991-05-16 1995-10-18 インターナショナル・ビジネス・マシーンズ・コーポレイション グラフィックス・システムにおけるピック方法および装置
US9214006B2 (en) 2013-06-04 2015-12-15 Arm Limited Hidden surface removal in graphics processing systems
US9865074B2 (en) * 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
GB2530996B (en) 2014-10-06 2016-09-14 Imagination Tech Ltd Depth forwarding in a graphics processing system

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7626588B1 (en) * 2006-06-16 2009-12-01 Nvidia Corporation Prescient cache management
US20110164038A1 (en) * 2010-01-06 2011-07-07 Samsung Electronics Co., Ltd. Apparatus and method for tile-based rendering
KR101719485B1 (ko) * 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US8860742B2 (en) * 2011-05-02 2014-10-14 Nvidia Corporation Coverage caching
CN103824276A (zh) * 2012-11-16 2014-05-28 Arm有限公司 用于处理图形的方法和设备
TW201445502A (zh) * 2013-05-24 2014-12-01 Samsung Electronics Co Ltd 圖形處理單元以及分塊渲染方法
US9760968B2 (en) * 2014-05-09 2017-09-12 Samsung Electronics Co., Ltd. Reduction of graphical processing through coverage testing
US20150363969A1 (en) * 2014-06-17 2015-12-17 Imagination Technologies Limited Setting A Display List Pointer for Primitives in a Tile-Based Graphics Processing System
US20180165872A1 (en) * 2016-12-09 2018-06-14 Advanced Micro Devices, Inc. Removing or identifying overlapping fragments after z-culling

Also Published As

Publication number Publication date
US20200184715A1 (en) 2020-06-11
CN111311717A (zh) 2020-06-19
TW202022792A (zh) 2020-06-16
CN111311717B (zh) 2024-05-07
KR20200071657A (ko) 2020-06-19
US11010954B2 (en) 2021-05-18

Similar Documents

Publication Publication Date Title
TWI810389B (zh) 由電腦實施的冗餘覆蓋捨棄方法
US7170513B1 (en) System and method for display list occlusion branching
US9779536B2 (en) Graphics processing
US8446409B2 (en) Method and apparatus for rendering computer graphic images of translucent and opaque objects
KR101800987B1 (ko) 계층적 z-컬링을 수행하기 위한 부분적으로-커버된 타일들의 선택적 병합
KR101036434B1 (ko) 타일링되고 프리패치되고 캐싱된 깊이 버퍼
JP5538750B2 (ja) グラフィックス処理システム
EP3333805B1 (en) Removing or identifying overlapping fragments after z-culling
US9214006B2 (en) Hidden surface removal in graphics processing systems
US10255718B2 (en) Graphics processing
US9153070B2 (en) Hidden surface removal in graphics processing systems
JP2004326678A (ja) 描画処理装置、及び、描画処理方法
TW200933524A (en) Memory systems, memory accessing methods and graphic processing systems
US20140267256A1 (en) Hidden surface removal in graphics processing systems
US10430989B2 (en) Multi-pass rendering in a screen space pipeline
US20200402217A1 (en) Coarse depth culling during binning
KR20140078568A (ko) 그래픽 처리 시스템에서 히든 표면의 제거
US10163238B2 (en) Processing graphics primitives in a tile-based graphics processing system
US20220027281A1 (en) Data processing systems
US11790479B2 (en) Primitive assembly and vertex shading of vertex attributes in graphics processing systems
US20240169464A1 (en) Graphics processing systems
US20240169465A1 (en) Graphics processing systems