CN111311717B - 由计算机实施的冗余覆盖舍弃方法 - Google Patents
由计算机实施的冗余覆盖舍弃方法 Download PDFInfo
- Publication number
- CN111311717B CN111311717B CN201911269621.9A CN201911269621A CN111311717B CN 111311717 B CN111311717 B CN 111311717B CN 201911269621 A CN201911269621 A CN 201911269621A CN 111311717 B CN111311717 B CN 111311717B
- Authority
- CN
- China
- Prior art keywords
- coverage
- block
- blocks
- primitive
- logic section
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 239000000872 buffer Substances 0.000 claims abstract description 58
- 238000009877 rendering Methods 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims description 28
- 238000012360 testing method Methods 0.000 claims description 28
- 238000013507 mapping Methods 0.000 claims description 14
- 239000012634 fragment Substances 0.000 claims description 11
- 230000009467 reduction Effects 0.000 claims description 6
- 230000008030 elimination Effects 0.000 claims description 4
- 238000003379 elimination reaction Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 2
- 230000003139 buffering effect Effects 0.000 claims 4
- 238000010586 diagram Methods 0.000 description 23
- 238000003860 storage Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004040 coloring Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004083 survival effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing 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也用于各种现代计算环境(例如神经网络、人工智能(artificialintelligence,AI)、高性能***、自主车辆、移动器件、游戏***等)中。隐藏面消除(hiddensurface 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)逻辑区段设置在早期覆盖舍弃(earlycoverage 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逻辑区段之后执行的处理所需的其他控制信息。
[发明的有益效果]
根据本发明,会防止对被遮挡覆盖区块的不必要的着色。因此,会节省用于着色的电力及时间。
附图说明
根据参照附图进行的以下详细说明,本发明原理的上述及附加特征及优点将变得更显而易见,在附图中:
图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 maptable,PLMT)的示例性细节。
图17包括根据一些实施例的示例性区块4×4CBI逻辑区段表的详细内容。
图18是根据一些实施例的包括图1所示ECD逻辑区段的GPU的示例性方块图。
[符号的说明]
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逻辑区段;
135:入口点;
140:离开处;
132:先进先出(FIFO)缓冲器;
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字段;
p、q、P-1~P7:基元。
具体实施方式
现将详细参照本发明概念的实施例,本发明概念的实例在附图中示出。在以下详细说明中,阐述诸多具体细节以实现对本发明概念的透彻理解。然而应理解,所属领域中的普通技术人员无需这些具体细节也可实践本发明概念。在其他情形中,未详细阐述众所周知的方法、程序、组件、电路及网络,以免使实施例的各个方面模糊不清。
应理解,尽管本文中可能使用“第一(first)”、“第二(second)”等用语来阐述各种元件,然而这些元件不应受这些用语限制。这些用语仅用于区分各个元件。举例来说,在不背离本发明概念的范围的条件下,“第一表”可被称为“第二表”,且相似地,“第二表”可被称为“第一表”。
在本文对本发明概念的说明中所用的用语仅用于阐述特定实施例,而并非旨在对本发明进行限制。除非上下文清楚地另外指明,否则在对本发明概念的说明及随附的权利要求书中使用的单数形式“一(a、an)”及“所述(the)”旨在也包括复数形式。还应理解,本文中使用的用语“和/或”指代且囊括相关列出项中的任意项及相关列出项中的一项或多项的所有可能的组合。还应理解,当在本说明书中使用用语“包括(comprises)”和/或“包括(comprising)”时,其指明所述特征、整数、步骤、操作、元件、和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。附图的组件及特征未必按比例绘制。
本文中所公开的实施例包括早期覆盖舍弃(ECD)技术,所述ECD技术是在栅格化之后在图形流水线中执行。四元组是在GPU颜色遍次(GPU color pass)期间移除,而不利用单独的遍次。四元组是由相邻的像素形成的2×2群组。2×2群组在本领域中是常见的(归因于在纹理映射(texture mapping)中使用的细节层次计算(level-of-detailcalculation))。因此,为便于例示及高效起见,在本文中称为2×2群组及2×2群组的群组(例如4×4群组)。所公开的技术在深度测试之后应用于覆盖窗口内的一组基元。所公开的技术在深度测试之后提供附加的隐藏面消除,从而实现像素着色器四元组的减少且因此减少计算。本文中所公开的实施例对深度复杂性进行处置,且对于大多数情况(例如,不是半透明的等),最终只能看到最接近的基元的像素。在最终看不见的像素上则无需花费多余的时间及能量。本文中所公开的实施例会在不降低吞吐量的条件下移除冗余覆盖。也就是说,将覆盖区块***到ECD装置中的***速率是以恒定时间O(1)进行,且仅增加潜伏时间(latency)。换句话说,***时间是常数O(1),且因此仅增加潜伏时间,但生成覆盖信息的吞吐量没有降低。
本文中所公开的实施例提供基于覆盖图的栅格化片段级遮挡去除(occlusionculling),以减低基于分块的图形流水线架构中的冗余片段着色开销。遮挡去除是通过移除覆盖的时间移动窗口内的交叠覆盖以在像素着色之前剔除四元组(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中保存的时间次序查看基元(例如,基元q及p)的移动窗口。CBI逻辑区段130可在FIFO缓冲器132中缓冲基元并在CBI逻辑区段130中确定对像素着色有贡献的获胜基元(winningprimitive)。
图2是示出根据一些实施例的32×32分块覆盖-基元图(TCPM)205的示例图。现在参照图1及图2。
TCPM 205可存储每一像素基元信息(per pixel primitive information)。每一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中的三角形所示的相关联的基元(例如,q及p)。在140处从CBI逻辑区段130离开后,区块更新逻辑区段175便可检查基元p在TCPM 205中的最终区块状态,以更新覆盖。如果一些区块中不存在基元p,则区块更新逻辑区段175可将与基元p相关联的像素标记为0(例如,在图1中被示出为粗体零)。离开的4×4覆盖区块110c中的粗体0表示被擦除的覆盖。这些是与4×4覆盖区块110c中的基元p相关联的像素,所述像素被与来自4×4覆盖区块105c的较新基元q相关联的像素遮挡。基元q及p各自在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的深度,多个基元(例如,q及p)可驻留在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基元索引不与存储在TCPM205中的至少一个基元索引匹配,则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 targetwrite 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中的各个条目也可包括所述各个条目在PIT165中的对应的条目的索引。举例来说,存储在CBI逻辑区段130中的基元信息可包括将CBI逻辑区段130中的条目与PIT 165中的条目联系起来的索引。可根据正在被访问的要素选择索引。举例来说,CBI逻辑区段130中的更多条目可实现更理想的深度复杂性检测及移除,但以缓冲器面积及***潜伏时间为代价。基元栅格化的次序可确定覆盖擦除。另外,CBI逻辑区段130的长度及CBI逻辑区段130中的驻留时间也可确定覆盖擦除。输入及输出的次序可与驻留时序(residency timing)一起维持。举例来说,基元及同步化事件保持处于与它们到达时的次序相同的次序且以所述相同的次序离开。
在一些实施例中,只要CBI逻辑区段130的FIFO缓冲器132是空的,所有与LateZ相关的通信量(traffic)均可绕过ECD逻辑区段100。否则,将触发清除条件(flushcondition)。清除是指在清除时将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的覆盖进行比较及更新优于对在140处离开CBI逻辑区段130的覆盖进行深度测试。在一些实施例中,TCPM205中的覆盖可在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×4PIT内的四元组(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及PLMT1570可分别接收覆盖区块信息输入,如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时,可更新链表首部且也可更新对应的区块的CBIALLOCHEAD的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 Electricaland Electronics Engineers,IEEE)545.11、光学的、红外的、电缆、激光等。
本发明概念的实施例可通过参照或结合相关联的数据来阐述,相关联的数据包括当由机器访问时会使机器执行任务或定义抽象数据类型或低级硬件上下文的函数、程序(procedure)、数据结构、应用程序等。相关联的数据可存储在例如易失性和/或非易失性存储器(例如,RAM、ROM等)中或其他存储器件及其相关联的存储介质(包括硬盘驱动器、软盘、光学存储器件、磁带、闪存、记忆棒(memory stick)、数字视频盘、生物存储等)中。相关联的数据可以数据包(packet)、串行数据、并行数据、传播信号等形式通过传输环境(包括物理网络和/或逻辑网络)进行递送,且可以压缩或加密的格式使用。相关联的数据可在分布式环境中使用且可本地和/或远程地存储以供机器访问。
已参照所示实施例阐述并示出了本发明概念的原理,将认识到,在不背离这些原理的条件下可对所示实施例进行排列及细节上的修改且可以任何期望的方式对所示实施例进行组合。且尽管以上论述着重于特定实施例,但也可预期存在其他配置。具体来说,即使本文中使用了例如“根据本发明概念的实施例”等表达,这些短语也旨在一般性地提及实施例的可能性,而不旨在将本发明概念限制到特定的实施例配置。本文中所用的这些用语可提及可组合到其他实施例中的相同或不同的实施例。
本发明概念的实施例可包括非暂时性机器可读介质,所述非暂时性机器可读介质包括可由一个或多个处理器执行的指令,所述指令包括执行如本文所述的本发明概念的要素的指令。
上述示例性实施例不应被视为对示例性实施例的发明概念进行限制。尽管已阐述了几个示例性实施例,但所属领域中的技术人员将容易理解,在不实质上背离本公开的新颖教示及优点的条件下,可对这些实施例进行许多修改。因此,所有这些修改均旨在包含于由权利要求所界定的本发明概念的范围内。
Claims (20)
1.一种用于在基于分块的图形渲染流水线中减少样本着色器工作的由计算机实施的冗余覆盖舍弃方法,所述方法包括:
在早期覆盖舍弃逻辑区段内设置具有先进先出缓冲器的覆盖区块信息逻辑区段;
由所述先进先出缓冲器接收多个覆盖区块;
由所述先进先出缓冲器按照先进先出次序缓冲所述多个覆盖区块;
由所述覆盖区块信息逻辑区段针对所述多个覆盖区块之中的所有覆盖区块将所述先进先出缓冲器与分块覆盖-基元图内的对应的区块位置进行匹配;
由区块更新逻辑区段更新所述多个覆盖区块之中与所述分块覆盖-基元图内的所述区块位置匹配的至少一个覆盖区块;
由所述分块覆盖-基元图存储每一样本基元覆盖信息;以及
根据所述每一样本基元覆盖信息对至少一个样本进行着色。
2.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,还包括:
由所述先进先出缓冲器缓冲所述多个覆盖区块的移动窗口;
将与所述多个覆盖区块相关联的传入覆盖信息与存储在所述分块覆盖-基元图中的所述每一样本基元覆盖信息进行比较;以及
剔除所述多个覆盖区块的所述移动窗口内的先前的交叠覆盖。
3.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,其中接收所述多个覆盖区块包括从图形处理单元的栅格化控制流逻辑区段的深度内插及测试单元接收所述多个覆盖区块。
4.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,其中:
由所述先进先出缓冲器接收所述多个覆盖区块是在深度测试已完成之后进行;且
在所述先进先出缓冲器中缓冲所述多个覆盖区块是在所述深度测试已完成之后进行。
5.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,还包括:不对至少一个样本进行着色。
6.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,还包括:对所述多个覆盖区块之中的存活覆盖中的至少一个样本进行着色。
7.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,还包括:由所述早期覆盖舍弃逻辑区段在所述多个覆盖区块中提供基于移动覆盖窗口的片段透支减低。
8.根据权利要求7所述的由计算机实施的冗余覆盖舍弃方法,还包括:由所述早期覆盖舍弃逻辑区段在所述多个覆盖区块中的三个或更多个覆盖区块中提供所述基于移动覆盖窗口的片段透支减低。
9.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,其中将所述先进先出缓冲器与对应的区块位置进行匹配还包括:由所述覆盖区块信息逻辑区段针对所述多个覆盖区块之中的所有覆盖区块将所述先进先出缓冲器与所述分块覆盖-基元图内的区块位置进行匹配。
10.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,还包括:当所述多个覆盖区块中的每一覆盖区块离开所述先进先出缓冲器时更新基元信息表。
11.根据权利要求10所述的由计算机实施的冗余覆盖舍弃方法,还包括:当存储在与所述多个覆盖区块之中的特定覆盖区块相关联的所述基元信息表中的基元索引不与存储在所述分块覆盖-基元图中的至少一个对应的基元索引匹配时,确保所述特定覆盖区块的样本均不具有活的覆盖。
12.根据权利要求10所述的由计算机实施的冗余覆盖舍弃方法,还包括:更新所述分块覆盖-基元图内的与所述多个覆盖区块之中在所述基元信息表中具有对应的索引的特定覆盖区块的活样本对应的一个或多个位置。
13.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,还包括:当所述先进先出缓冲器接收到所述多个覆盖区块之中的新的覆盖区块时,由所述早期覆盖舍弃逻辑区段与所述分块覆盖-基元图进行交互。
14.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,还包括:
由所述覆盖区块信息逻辑区段将所述先进先出缓冲器排空;以及
由所述早期覆盖舍弃逻辑区段共享由四元组合并使用的硬件。
15.根据权利要求14所述的由计算机实施的冗余覆盖舍弃方法,还包括:在所述多个覆盖区块离开所述先进先出缓冲器之后,由所述早期覆盖舍弃逻辑区段将所述多个覆盖区块发送到图形处理单元的栅格化控制流逻辑区段的样本着色器后存储。
16.根据权利要求1所述的由计算机实施的冗余覆盖舍弃方法,其中将所述多个覆盖区块***到所述早期覆盖舍弃逻辑区段中的速率是以恒定时间进行。
17.一种用于在基于分块的图形渲染流水线中减少样本着色器工作的由计算机实施的冗余覆盖舍弃方法,所述方法包括:
在早期覆盖舍弃逻辑区段内设置具有双链表的覆盖区块信息逻辑区段;
由所述覆盖区块信息逻辑区段接收多个覆盖区块;
由所述覆盖区块信息逻辑区段将所述多个覆盖区块***到所述双链表中;
由所述双链表缓冲所述多个覆盖区块的移动窗口;
由位置-列表映射表维护所述多个覆盖区块中的每一覆盖区块的位置与所述双链表中的首节点之间的映射;
在所述位置-列表映射表中执行所述位置的查找操作;
响应于所述查找操作,判断所述位置-列表映射表中的条目是有效还是无效;
更新所述双链表的首指针及尾指针中的至少一者;以及
剔除所述多个覆盖区块的所述移动窗口内的先前的交叠覆盖。
18.根据权利要求17所述的由计算机实施的冗余覆盖舍弃方法,还包括:更新所述位置-列表映射表内的首指针及尾指针中的至少一者。
19.根据权利要求18所述的由计算机实施的冗余覆盖舍弃方法,还包括:当新的覆盖区块进入所述早期覆盖舍弃逻辑区段时,更新所述位置-列表映射表内的所述首指针。
20.根据权利要求17所述的由计算机实施的冗余覆盖舍弃方法,其中接收所述多个覆盖区块包括从图形处理单元的栅格化控制流逻辑区段的深度内插及测试单元接收所述多个覆盖区块。
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 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 |
US16/438,446 | 2019-06-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111311717A CN111311717A (zh) | 2020-06-19 |
CN111311717B true CN111311717B (zh) | 2024-05-07 |
Family
ID=70971069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911269621.9A Active CN111311717B (zh) | 2018-12-11 | 2019-12-11 | 由计算机实施的冗余覆盖舍弃方法 |
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11360744B2 (en) * | 2017-06-29 | 2022-06-14 | Beijing Qingying Machine Visual Technology Co., Ltd. | Two-dimensional data matching method, device and logic circuit |
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 (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105321140A (zh) * | 2014-06-17 | 2016-02-10 | 想象技术有限公司 | 向图形处理***中的区片分配图元 |
Family Cites Families (13)
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 | インターナショナル・ビジネス・マシーンズ・コーポレイション | グラフィックス・システムにおけるピック方法および装置 |
US7626588B1 (en) * | 2006-06-16 | 2009-12-01 | Nvidia Corporation | Prescient cache management |
KR101683556B1 (ko) * | 2010-01-06 | 2016-12-08 | 삼성전자주식회사 | 타일 기반의 렌더링 장치 및 렌더링 방법 |
KR101719485B1 (ko) * | 2010-09-20 | 2017-03-27 | 삼성전자주식회사 | 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법 |
US8860742B2 (en) * | 2011-05-02 | 2014-10-14 | Nvidia Corporation | Coverage caching |
US9317948B2 (en) * | 2012-11-16 | 2016-04-19 | Arm Limited | Method of and apparatus for processing graphics |
US9214006B2 (en) | 2013-06-04 | 2015-12-15 | Arm Limited | Hidden surface removal in graphics processing systems |
KR102116708B1 (ko) * | 2013-05-24 | 2020-05-29 | 삼성전자 주식회사 | 그래픽스 프로세싱 유닛 |
US9865074B2 (en) * | 2014-04-05 | 2018-01-09 | Sony Interactive Entertainment America Llc | Method for efficient construction of high resolution display buffers |
US9760968B2 (en) * | 2014-05-09 | 2017-09-12 | Samsung Electronics Co., Ltd. | Reduction of graphical processing through coverage testing |
GB2530996B (en) | 2014-10-06 | 2016-09-14 | Imagination Tech Ltd | Depth forwarding in a graphics processing system |
US10943389B2 (en) * | 2016-12-09 | 2021-03-09 | Advanced Micro Devices, Inc. | Removing or identifying overlapping fragments after z-culling |
-
2019
- 2019-06-11 US US16/438,446 patent/US11010954B2/en active Active
- 2019-10-23 TW TW108138201A patent/TWI810389B/zh active
- 2019-11-14 KR KR1020190145567A patent/KR20200071657A/ko unknown
- 2019-12-11 CN CN201911269621.9A patent/CN111311717B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105321140A (zh) * | 2014-06-17 | 2016-02-10 | 想象技术有限公司 | 向图形处理***中的区片分配图元 |
Also Published As
Publication number | Publication date |
---|---|
US20200184715A1 (en) | 2020-06-11 |
TWI810389B (zh) | 2023-08-01 |
KR20200071657A (ko) | 2020-06-19 |
CN111311717A (zh) | 2020-06-19 |
TW202022792A (zh) | 2020-06-16 |
US11010954B2 (en) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111311717B (zh) | 由计算机实施的冗余覆盖舍弃方法 | |
US8446409B2 (en) | Method and apparatus for rendering computer graphic images of translucent and opaque objects | |
JP5538750B2 (ja) | グラフィックス処理システム | |
US11682163B2 (en) | Using tiling depth information in hidden surface removal in a graphics processing system | |
CN105321199B (zh) | 图形处理流水线及其操作方法与介质 | |
US9214006B2 (en) | Hidden surface removal in graphics processing systems | |
US7170513B1 (en) | System and method for display list occlusion branching | |
US9153070B2 (en) | Hidden surface removal in graphics processing systems | |
KR101800987B1 (ko) | 계층적 z-컬링을 수행하기 위한 부분적으로-커버된 타일들의 선택적 병합 | |
JP4076502B2 (ja) | ゾーン・レンダリングのための効率的なグラフィックス状態管理 | |
EP3333805B1 (en) | Removing or identifying overlapping fragments after z-culling | |
CN112116519B (zh) | 图形处理***中的粗略深度测试 | |
US20140267256A1 (en) | Hidden surface removal in graphics processing systems | |
US11170555B2 (en) | Graphics processing systems | |
US20170193691A1 (en) | Graphics processing | |
US11861760B2 (en) | Tile-based graphics processing | |
KR102057166B1 (ko) | 그래픽 처리 시스템에서 히든 표면의 제거 | |
GB2616628A (en) | Graphics processing | |
US20240169464A1 (en) | Graphics processing systems | |
US20240169465A1 (en) | Graphics processing systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |