CN105488842A - 图形处理系统中的深度转发 - Google Patents
图形处理系统中的深度转发 Download PDFInfo
- Publication number
- CN105488842A CN105488842A CN201510640133.XA CN201510640133A CN105488842A CN 105488842 A CN105488842 A CN 105488842A CN 201510640133 A CN201510640133 A CN 201510640133A CN 105488842 A CN105488842 A CN 105488842A
- Authority
- CN
- China
- Prior art keywords
- depth
- pel
- sheet
- district
- unit
- 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.)
- Granted
Links
Classifications
-
- 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
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- 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
- G06T15/40—Hidden part removal
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
一种图形处理系统包括用于执行分片计算的分片单元和用于对图元的片段执行HSR的隐藏面消除(HSR)单元。图元深度信息在分片单元中进行计算并且被转发以供HSR单元在对片段执行HSR中使用。这利用在HSR单元对图元执行HSR之前访问图元数据的分片单元,以确定可以简化由HSR单元所执行的HSR的一些深度信息。因此,在分片单元中所确定的深度缓冲器的最终值可以在HSR单元中用于确定特定片段将随后通过尚未在HSR单元中处理的图元的片段而被隐藏,以使可以剔除特定片段。
Description
背景技术
图形处理系统可以被配置成例如从诸如游戏的应用中接收图形数据,并且被配置成处理图形数据,以便生成表示三维(3D)场景的视图的图像。图形数据可以包括限定形成3D场景中的对象(object)的图元(primitive,例如,图元的位置和外观)的数据。由图形处理系统执行的典型操作包括:(i)根据限定图元的数据纹理化和/或着色(texturing/shading)图元;和(ii)确定图元的哪些部分从正在从其中渲染场景的视点是可见的,并且消除确定是不可见的表面(其在本领域已知为“隐藏面消除(hiddensurfaceremoval)”或HSR)。在隐藏面消除操作之前,一些图形处理系统(例如,立即模式渲染系统)执行纹理化和/或着色操作。然而,为了避免不必要地纹理化和着色在最终渲染的图像中不可见的表面的处理成本,在纹理化和/或着色操作之前,一些其它图形处理系统(例如,延迟渲染系统)执行隐藏面消除操作。
HSR和纹理化/着色操作由图形处理系统片上执行并且通常包括:从片外存储器中读取大量图元数据,并且将所渲染的像素数据写回到该存储器。渲染过程可以生成还可能需要被存储的诸如深度数据和片段数据的大量中间数据。在存储器和图形处理系统之间传递数据可以引起延迟并且使用相当大量的功率,因此它可以有益于片上存储一些数据,而图形处理系统对图元数据起作用。通常,没有足够的片上存储器来存储用于渲染整个图像的所有数据。因此,一些图形处理系统具有被细分(sub-divide)成多个区片(tile)的渲染空间,其中,每个区片可以分离地被处理,以使用于特定区片的数据可以被片上存储,同时图形处理系统对存在于该特定区片内的图元起作用。例如,用于区片的深度数据被存储在芯片上,同时对于区片,执行HSR处理。这帮助减少传递到片外存储器和从片外存储器中传递的数据量,并且当图形处理系统处理图元数据时,减少延迟。
具有被细分成多个区片的渲染空间的系统可以包括分片(tiling)单元(其可以被称为“分片加速器”,或简称“TA”)。分片单元处理输入图形数据(其包括限定待被渲染的3D场景中的图元的数据)并且执行分片计算,从而针对图元的每一个图元,确定图元存在于哪个区片中。如果图元当投影到渲染空间中时被确定与区片全部或部分重叠,则图元被确定存在于区片中。
分片单元生成用于区片的区片控制流(tilecontrolstream),由此用于区片的区片控制流包括存在于该区片中的图元的指示符。例如用于区片的区片控制流可以包括用于区片的状态信息、和指示被确定为存在于区片中的图元的对象指针的列表。对象指针可以是指存储在别处的图元数据,以使图元可以被多于一个的区片控制流引用。也就是说,图元数据可以与区片的控制流分离地存储(例如,在图元块中),以使控制流是每个区片,而每个区片不需要存储图元数据。控制流和图元数据可以统称为“显示列表”。在其它示例中,用于所指示的图元的图元数据可以被包括在控制流中。区片控制流被储存,随后被传递到HSR单元(其可以被称为“图像合成处理器”,或简称“ISP”),该HSR单元被配置成在逐区片基础上对存在于区片中的图元的片段执行隐藏面消除。图元的“片段(fragment)”是图元与待被渲染的最终图像的相应的样本位置重叠的部分。“样本位置”表示图形处理系统在其中操作以确定场景外观的最终图像的离散位置。例如,样本位置可以与最终图像的像素位置相对应,但是为了提供最终图像的更高的准确性,最终图像的每个像素位置可以由多于一个样本位置的块表示。
如现有技术中所已知的,HSR单元可以使用已知为“Z-缓冲”的技术针对存在于区片中的图元的片段执行HSR,在该技术中,在每一样本位置处,计算区片中的每个图元的深度值并且与先前所存储的深度比较。图元以顺序方式被处理并且在所有图元是不透明的简单示例中,深度缓冲器(buffer)针对每个样本位置存储已经被HSR单元处理的最接近的片段的深度,并且标签缓冲器针对每个样本位置存储在该样本位置处具有最接近深度的图元的标签(即,标识符)。当新图元在HSR单元中被处理时,依照深度比较模式,图元的片段的深度值与深度缓冲器中的深度值比较,并且在通常的深度比较模式中,如果新图元的片段比其深度值存储在深度缓冲器中的适当位置处的片段更接近,则新图元的片段的深度值存储在深度缓冲器中并且新图元的标签存储在标签缓冲器中,以代替适当位置处的任何现有的深度值和标签值。HSR单元向纹理化和着色单元发送可见的表面信息,其中片段在被发送到帧缓冲器用于显示之前,被纹理化和/或着色。
分片单元和HSR单元的功能不同。也就是说,分片单元执行分片计算,并且HSR单元针对隐藏面消除执行深度测试。通常,分片单元不执行深度测试。
上文所描述的系统利于用于处理不透明图元。然而,一些图元可以具有允许半透明和/或穿通(punchthrough)的对象类型。半透明或穿通可以由待被应用到图元的片段的纹理表示(例如,如果纹理包括RGBA值,即,红色值、绿色值、蓝色值和α值,则如由α值所表示的)。在并非图元边缘内的所有样本位置生成可见的片段的意义上讲,穿通图元包括一些“孔洞(holes)”。针对图元内的所有样本位置,最初创建穿通片段,并且测试(其可以被称为“α测试”)指示片段是否应当包括在后续处理中,或它是否应当被丢弃,即,它是在图元中的孔洞的一部分。针对穿通图元,更新深度缓冲器,并且仅针对通过深度测试和α测试两者的那些片段渲染片段。因为在延迟渲染系统中,图元的片段的纹理化在隐藏面消除之后发生,HSR单元在纹理化已经应用到片段之后,可能不能确定哪些片段是可见的。这可以产生从纹理化/着色单元到HSR单元的反馈回路以指示片段的α状态,以使HSR单元可以适当地更新深度缓冲器。因为HSR单元可以处理相同片段的一些方面两次,所以反馈回路(诸如这个)可以降低图形处理系统的效率。
如果来自那些图元的片段被不透明的片段覆盖,则当处理具有允许半透明和/或穿通的对象类型的图元时,也可能发生无效。如果例如当前在特定样本位置处是最接近的片段的片段(“片段A”)随后被半透明片段(“片段B”)覆盖,则片段A的标签可能需要从标签缓冲器中冲洗(flush)出去。片段A然后由纹理化/着色单元处理并且用于片段B的标签存储在标签缓冲器中。纹理化/着色单元可以随后执行片段A和B的混合操作。然而,如果片段B接着被不透明片段(“片段C”)覆盖,则片段A和B两者将隐藏在最终图像中,并且对那些片段两者执行的处理已经被浪费。
发明内容
提供本发明内容以便以简化的形式介绍概念的选择,该概念在具体实施方式中进一步描述如下。该发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
提供了一种图形处理系统,其具有被细分成多个区片的渲染空间,该系统被配置成处理存在于区片中的一个或多个区片中的图元,该系统包括:分片单元,其被配置成处理图元以:(i)针对图元的每一个图元,确定图元存在于区片中的哪个区片中,(ii)生成用于区片的区片控制流,其中,用于区片的区片控制流包括存在于该区片中的图元的指示符;和隐藏面消除单元,其被配置成:(i)取得与如由所生成的用于区片的区片控制流所指示的存在于区片中的图元有关的数据,和(ii)对区片的样本位置处的所指示的图元的片段执行隐藏面消除;其中,分片单元还被配置成:当图元的片段在分片单元中被处理时,通过对图元的片段执行深度测试来确定用于区片的深度信息;以及转发所确定的深度信息以供隐藏面消除单元使用,并且其中,隐藏面消除单元被配置成在执行所述隐藏面消除中使用所转发的深度信息。隐藏面消除单元被配置成使用所转发的深度信息用于在设定HSR深度缓冲器的值以供在针对区片执行所述隐藏面消除中使用的区片。
提供了一种在图形处理系统中处理图元的方法,该图形处理系统具有被细分成多个区片的渲染空间,该方法包括:在分片单元处处理图元以:(i)针对图元中的每一个图元,确定图元存在于区片中的哪个区片中,(ii)生成用于区片的区片控制流,其中,用于区片的区片控制流包括存在于该区片中的图元的指示符;和通过以下各项在隐藏面消除单元处处理图元:(i)取得(retrieve)与如所生成的用于区片的区片控制流所指示的存在于区片中的图元有关的数据,(ii)对区片的样本位置处的所指示的图元的片段执行隐藏面消除;其中,该方法还包括:当图元的片段在分片单元中被处理时,通过对图元的片段执行深度测试来在分片单元处确定用于区片的深度信息;从分片单元中转发所确定的深度信息以供隐藏面消除单元使用;以及在隐藏面消除单元处执行所述隐藏面消除中使用所转发的深度信息。
提供了一种图形处理系统,其被配置成处理存在于系统的渲染空间中的图元,该系统包括第一处理单元,其被配置成在隐藏面消除之前处理图元;和隐藏面消除单元,其被配置成对渲染空间的样本位置处的图元的片段执行隐藏面消除;其中,第一处理单元还被配置成:通过对图元的片段执行深度测试来确定用于图元的深度信息;以及转发所确定的深度信息以供隐藏面消除单元使用;并且其中,隐藏面消除单元被配置成在执行所述隐藏面消除中使用所转发的深度信息。
提供了一种在图形处理系统中处理图元的方法,该图形处理系统具有渲染空间,该方法包括:在隐藏面消除之前,在第一处理单元处处理图元;以及通过对渲染空间的样本位置处的图元的片段执行隐藏面消除来在隐藏面消除单元处处理图元;其中,该方法还包括:通过对图元的片段执行深度测试来在第一处理单元处确定用于图元的深度信息;从第一处理单元中转发所确定的深度信息以供隐藏面消除单元使用;以及在隐藏面消除单元处执行所述隐藏面消除中使用所转发的深度信息。
可以提供适于当代码在计算机上运行时,执行本文中所描述的方法的任一个方法的步骤的计算机可读代码。可以根据本文中所描述的示例的任一个示例提供用于生成图形处理系统的计算机可读代码。计算机可读代码可以在计算机可读存储介质上进行编码。
对于本领域技术人员来说,显而易见的是,在适当时,可以组合上述特征,并且可以与本文中所描述的示例的各方面的任一个方面组合。
附图说明
现在,将参照附图对示例进行详细描述,附图中:
图1示出了图形处理系统的示例;
图2表示了渲染空间的12个区片内的两个对象的图元;
图3示出了用于在图形处理系统中处理图元的方法的流程图;
图4示出了第一示例中的三个场景中的分片单元深度缓冲器的深度值;
图5示出了分片单元深度缓冲器的深度值可以如何用来以保守方式确定用于粗略(coarse)深度缓冲器的深度值;
图6是示例中的HSR单元的示意图;
图7示出了另一示例中的三个场景中的分片单元深度缓冲器的深度值;
图8示出了分片单元如何处置具有不能在分片单元中进行解析的深度值的图元;
图9示出了分片单元如何处置深度比较模式的变化;
图10示出了分片单元如何处置深度清除操作;
图11示出了当至少一个图元具有不能在分片单元中进行解析的深度值时,分片单元如何处置深度比较模式的变化;
图12示出了可以存储深度值的不同存储器位置;和
图13示出了分片单元中和HSR单元中图元的三个序列。
附图图示不同的示例。本领域技术人员将理解附图中的所图示的元件边界(例如,框、成组的框、或其它形状)表示边界的一个示例。很可能在一些示例中,一个元件可以被设计成多个元件,或者多个元件可以被设计成一个元件。在所有附图中,使用公共的附图标记来在适当情况下指示相似的特征。
具体实施方式
现在,仅通过示例的方式对实施例进行描述。
图1示出了图形处理系统102,其可以与存储器103通信。该图形处理系统102包括分片单元(TU)104(其可以被称为区片加速器,或者TA)、隐藏面消除(HSR)单元106(其可以被称为图像合成处理器,或ISP)、纹理化/着色单元108和存储器接口110。存储器103被配置成存储数据,并且包括用于存储所渲染的图象数据的帧缓冲器112。分片单元104包括TU深度缓冲器存储装置114。HSR单元106包括HSR深度缓冲器116。对于本领域技术人员来说,显而易见的是,图形处理系统102可以包括其它单元,但是为清楚起见,这些其它单元未在图1中示出。分片单元104被布置成接收输入图形数据(其包括限定待被渲染的3D场景中的图元的数据)。分片单元104的输出被耦合到存储器接口110,用于向存储器103提供区片控制流和深度信息(如在下文中更详细地描述的),其与在其上实现图形处理系统102的芯片相比,可以例如是片外。HSR单元106被耦合到存储器接口110用于从存储器中接收区片控制流和深度信息。HSR单元106的输出被耦合到纹理化/着色单元108的输入。纹理化/着色单元108还被耦合到存储器接口110用于从存储器中接收纹理数据。在图1中所示的示例中,帧缓冲器112存储在存储器103中并且纹理化/着色单元108的输出被耦合到存储器接口110以便访问帧缓冲器112。
图2表示了图形处理系统102的渲染空间的12个区片内的两个对象的图元。12个区片在图2中被编号为1-12,并且作为示例,每个区片可以表示图像内的样本位置的32×32块。在其它示例中,区片可以具有不同的形状和/或尺寸,并且可以在渲染空间中有比12个区片更多或更少的区片。在图2中所示的第一对象包括四个图元:2021,2022,2023和2024。可以看出,图元2021的部分存在于区片1,2,5和6中;图元2022的部分存在于区片1,2,3,6和7中;图元2023的部分存在于区片3,6,7和8中;以及图元2024的部分存在于区片3,4,7和8中。图2中所示的第二对象包括两个图元:2041和2042。可以看出,图元2041的部分存在于区片10中;以及图元2042的部分存在于区片6和10中。图2中所示的图元是不透明图元,并且在图2中可以看出,图元2042的部分中的一些部分重叠,并且从视图上隐藏区片6中的图元2021,2022和2023的一些部分。因此,区片6中的图元2021,2022和2023的部分(例如,片段)中的一些部分在纹理化/着色单元108中被纹理化和/或着色之前,可以在HSR单元106中被丢弃。
在本文中所描述的示例中,在分片单元104中计算图元深度信息,并且转发给HSR单元106以预先填充(pre-fill)被HSR单元106用来执行HSR的HSR深度缓冲器116。这利用的事实是,在HSR单元106对图元的片段执行HSR之前,分片单元104访问图元数据,以确定可以简化由HSR单元106所执行的HSR的一些深度信息。因为在区片的图元的任一个图元在HSR单元106中被处理之前,分片单元104经常处理用于该区片的所有图元数据,所以这是特别有用的。因此,在分片单元104中确定的深度缓冲器的最终值可以在HSR单元106中用于确定特定片段将随后被尚待在HSR单元106进行处理的图元的片段隐藏,以使可以剔除特定片段。参照图3中所示的流程图对图形处理系统102的操作进行描述。
分片单元104例如从诸如游戏的应用中接收限定待被渲染的3D场景中的图元的输入数据。接收图元作为数据序列并且在分片单元104中依次被处理。特别地,在步骤S302中,分片单元104针对图元的每一个图元确定图元存在于区片的哪个区片中。
在步骤S304中,当图元的片段在分片单元(即,同时分片单元104访问图元数据,目的是用于执行分片计算)中被处理时,分片单元104对图元的片段执行深度测试,从而确定用于区片的深度信息。由分片单元104所执行的深度测试是基于用于区片的分片单元深度缓冲器(在本文中被称为“TU深度缓冲器”)的深度值,该分片单元深度缓冲器被存储在分片单元深度缓冲器存储装置114中。用于区片的TU深度缓冲器指示区片的样本位置处的深度值,并且当图元由分片单元104处理时,由分片单元104维护。参照图4,下文对TU深度缓冲器的用途进行描述。
在步骤S306中,分片单元104生成用于区片的区片控制流,其中,用于区片的区片控制流包括存在于该区片的图元的指示符。例如,用于区片的区片控制流可以包括指示哪些图元包括存在于区片中的片段的对象指针的列表。区片控制流经由存储器接口110从分片单元104被传递到存储器。用于区片的区片控制流随后由HSR单元106从存储器中取得,以使HSR单元106可以读取由控制流所指示的图元并且对存在于区片中的图元的片段执行隐藏面消除。
图4(a)表示TU深度缓冲器的列,其表示区片的一列32个样本位置处的深度值。存在于区片中的片段的深度(或“Z”)值在该示例中由0.0-1.0范围内的值来表示,较小的深度值表示更接近的片段并且较大的深度值表示更遥远的片段。最大和最小的深度值(即,深度值1.0和0.0)在图4(a)中被示为虚线,而在图的左侧表示视点。线402表示用于在处理区片内的图元期间在特定时刻图4(a)中所示的区片的列的32个样本的存储在TU深度缓冲器中的深度值。
图元4041然后到达分片单元104,并且针对确定存在于其中的每个区片,采样图元以生成第一组片段,每个片段与区片中的位置(即,“样本位置”)相对应,并且具有深度值。如图4(a)所示,图元4041的片段在用于区片的先前处理过的片段后面,即,图元4041的片段的深度值大于区片的对应的样本位置处的存储在TU深度缓冲器中的深度值。在图4中所示的简单示例中,图元的所有片段完全不透明。下文所描述的其它示例示出了不是完全不透明的图元如何被处置。
分片单元104依据深度比较模式通过比较传入的图元的片段的深度值和区片的对应的样本位置处的TU深度缓冲器中的深度值来执行深度测试。在图形处理系统102中待被处理的每个对象具有相关联的深度比较模式(DCM),其指示如何决定对象的图元的片段是否通过深度测试。例如,深度比较模式可以是DCM_LESS_EQ,其中,如果片段的深度值小于或等于当前存储在TU深度缓冲器中的深度值,则该片段通过深度测试。因为当更接近的片段通过深度测试并且从视图上隐藏具有更高的深度值的先前处理过的片段时,发生逼真渲染(realisticrendering),所以当较小的深度值表示更接近的片段并且较大的深度值表示更遥远的片段时,经常使用该深度比较模式。
如果图元的片段通过深度测试,则片段的深度值用于更新区片的对应的样本位置处的TU深度缓冲器中的深度值,并且图元的指示符包括在用于区片的区片控制流中,以使不从进一步处理中剔除图元。然而,如果图元的片段未通过深度测试,则不用片段的深度值更新TU深度缓冲器。如果图元不包括区片中的通过深度测试的片段,则用于图元的指示符不包括在用于区片的区片控制流中,以使从进一步处理中剔除图元。换句话说,仅当图元包括通过深度测试并且存在于区片中的至少一个片段时,分片单元104包括用于区片的区片控制流中图元的指示符。这允许减少需要被包括在区片控制流中的数据量。
与图元有关的数据可以存储在存储器中以供HSR单元106根据区片控制流中的指示符取得。分片单元104可以确定特定图元是否没有区片的任一个区片中的通过深度测试的片段。如果是这种情况,则图元可能不被写入存储器以供HSR单元106取得,以使图元被丢弃。在一些示例中,图元存储在图元块中,并且分片单元104可以确定特定图元块的特定图元是否没有区片的任一个区片中的通过深度测试的片段,并且如果是这种情况,分片单元104可以从特定图元块中消除该特定图元。而且,分片单元104可以确定特定图元块是否不包括具有区片的任一个区片中的通过深度测试的任何片段的图元,并且如果是这种情况,分片单元104可以从存储器中消除整个特定图元块。这有助于减少存储在存储器中的图元数据量。
当分片单元以DCM_LESS_EQ模式操作时,图元的4041的片段中没有一个片段通过深度测试。图元4041可以因此被剔除(即,用于图元的指示符不被添加到用于区片的控制流),并且TU深度缓冲器中的深度值不被更新。
在分片单元104已经对图元4041的片段执行过深度测试之后,另一个图元4042到达分片单元104。如图4(a)所示,图元4042的片段在用于区片的先前处理过的片段前面,即,图元4042的片段的深度值小于区片的对应的样本位置处的存储在TU深度缓冲器中的深度值。因此,当分片单元以DCM_LESS_EQ模式操作时,图元4042的片段通过深度测试。TU深度缓冲器中的对应的深度值用图元4042片段的深度值进行更新,并且图元4042不被剔除。
图4(b)示出了在分片单元104已经对图元4041和4042的片段执行过深度测试后,与图4(a)所示的列相同的深度缓冲器的列。图4(b)中的线402示出了存储在TU深度缓冲器中的深度值已经被更新为包括图元4042的片段的深度值,但不包括图元4041的片段的深度值。然后,第三图元4043到达分片单元104。如图4(b)所示,图元4043的片段中的一些片段在用于区片的先前处理过的片段前面,即,图元4043的那些片段的深度值小于区片的对应的样本位置处的存储在TU深度缓冲器中的深度值。然而,在区片中的一些样本位置处,图元4043的对应的片段在用于区片的先前处理过的片段后面,即,图元4043的那些片段的深度值大于区片的对应的样本位置处的存储在TU深度缓冲器中的深度值。因此,当分片单元104以DCM_LESS_EQ模式操作时,图元4043的片段中的一些片段通过它们的深度测试,但是图元4043的其它片段未通过它们的深度测试。TU深度缓冲器中的适当的深度值用图元4043的片段的深度值更新,并且图元4043不被剔除。
然后,第四图元4044到达分片单元104。如图4(b)所示,图元4044的片段在用于区片的先前处理过的片段后面,即,图元4044的片段的深度值大于区片的对应的样本位置处的存储在TU深度缓冲器中的深度值。因此,当分片单元104以DCM_LESS_EQ模式操作时,图元4044的片段中没有一个片段通过深度测试。图元4044可以因此被剔除并且TU深度缓冲器中的深度值不被更新。
图4(c)示出了在分片单元104已经对图元4041,4042,4043和4044的片段执行过深度测试后,与图4(a)和图4(b)所示的列相同的深度缓冲器的列。图4(c)中的线402示出了存储在TU深度缓冲器中的深度值已经被更新成包括图元4043的片段中的一些片段的深度值,但不包括图元4044的片段的深度值。而且,在分片单元104已经对图元4041,4042,4043和4044的片段执行过深度测试后,图元4041和4044已经被剔除,并且不具有包括在用于区片的区片控制流中的标识符,而图元4042和4043没有被剔除,并且具有包括在用于区片的区片控制流中的标识符。注意,尽管图元4042在图元4043后面,但是因为传入的图元的片段仅针对如TU深度缓冲器所指示的所有先前处理过的片段的累计深度进行了深度测试,所以图元4042不被剔除,并且图元4042在图元4043之前被处理。在该简单示例中,没有更多的图元存在于区片中,该图元还没有被分片单元104处理,所以图4(c)所示的TU深度缓冲器的值表示TU深度缓冲器的最终值。
在步骤S308中,当分片单元104已经完成处理存在于区片中的图元的片段时,分片单元104转发用于区片的TU深度缓冲器的值以供HSR单元106使用。为了“转发”TU深度缓冲器的值,分片单元104可能不直接向HSR单元106发送TU深度缓冲器的值,而是分片单元104可能使TU深度缓冲器的值被存储(例如,在存储器103中),以使它们随后可供HSR单元106取得。用于区片的TU深度缓冲器的值表示可以被HSR单元106在对在区片控制流中所指示的图元的片段执行HSR中所使用的深度信息。在所有区片中的所有图元已经被分片单元104处理过之后,分片单元104可以转发用于所有区片的TU深度缓冲器的值,或者可选地,当该区片中的所有图元已经被分片单元104处理过之后,不论其它区片中的图元是否还没有被分片单元104处理过,分片单元104都可以转发用于该区片的TU深度缓冲器的值。在其它示例中,即使这是在分片单元104已经完成处理存在于区片中的图元的片段之前,例如,如果深度比较模式变化,则也可以从分片单元中104转发用于区片的一些深度信息以响应于一些触发。在图1所示的示例中,深度信息(即,TU深度缓冲器的值)形成使用区片控制流从分片单元104向存储器传递的深度记录,以使用于区片的深度记录可以被HSR单元106使用用于区片的对应的区片控制流来取得。用于区片的深度记录可以分离地存储到用于区片的区片控制流。可选地,可以包括用于区片的深度记录作为用于区片的区片控制流的一部分。
HSR单元106被配置成在逐区片的基础上对存在于区片中的图元的片段执行隐藏面消除。为了处理存在于区片中的图元的片段,HSR单元106从存储器中接收用于区片的区片控制流和深度信息(例如,“深度记录”)。在步骤S310中,HSR单元106取得与如用于区片的区片控制流所指示的存在于区片中的图元有关的数据。
HSR单元106被配置成使用HSR深度缓冲器116以对存在于区片中的图元的片段执行深度测试。在步骤S312中,HSR单元106使用用于区片的TU深度缓冲器的所转发的值来设定HSR深度缓冲器116的值。这样,在对区片的片段执行深度测试之前,可以针对区片适当地初始化HSR深度缓冲器116。如下文更详细地描述的,在一些示例中,HSR深度缓冲器116可以被设定成具有与TU深度缓冲器中的深度值相同的深度值,但是,在其它示例中,HSR深度缓冲器116可能被设定成具有与用于区片的TU深度缓冲器中的深度值稍微不同的深度值。
在步骤S314中,HSR单元106使用HSR深度缓冲器116中的深度值对由区片控制流指示为存在于区片中的图元的片段执行隐藏面消除。在HSR单元106中执行的隐藏面消除以与在分片单元104中执行的隐藏面消除类似的方式运转。也就是说,通过采样传入的图元以生成片段,然后比较所生成的片段的深度值和存储在HSR深度缓冲器116中的深度值,对存在于区片中的图元的片段执行深度测试,其中,如果片段通过深度测试,则更新HSR深度缓冲器116中的对应的值并且不剔除该片段,而如果片段未通过深度测试,则剔除片段并且不更新HSR深度缓冲器116中的对应的值。注意,在HSR单元106中,如果它未通过其深度测试(即使相同的区片中的相同图元的其它片段通过它们的深度测试),则可以剔除单个片段,这不是用于上文所描述的示例中的在分片单元104中所执行的深度测试的情况。也就是说,如上文所描述的,当区片内的图元的所有片段未通过它们的深度测试时,可以在用于区片的分片单元104中剔除图元。
在用于区片的图元的任一个图元在HSR单元106中被处理之前,从分片单元104中转发的深度信息用于例如基于用于区片的最终TU深度缓冲器值来预先填充HSR深度缓冲器116。因此,由HSR单元106所执行的深度测试用作对图元数据的第二次传递。这可以允许HSR单元106在深度测试(在将它们传递到纹理化/着色单元108之前)中比如果分片单元104没有执行深度测试(如上文在背景部分中所描述的现有技术中)拒绝图元的更多片段。例如,当半透明或穿通片段被不透明片段隐藏时,更多的片段可以被HSR单元106中的深度测试拒绝。HSR单元106向其中在被发送到帧缓冲器112用于显示之前片段被纹理化和/或着色的纹理化/着色单元108发送经得起HSR单元106中的深度测试(即,未被剔除)的可见片段。
紧随参照图4(a)至图4(c)上文所描述的示例之后,HSR深度缓冲器116将依据用于区片的TU深度缓冲器被初始化成具有如图4(c)中的线402所示的深度值,即,在区片中的所有图元已经被分片单元104处理过之后。HSR单元106对从在分片单元104中执行的深度测试之后没有被剔除的图元生成的片段执行深度测试(以与分片单元104所使用的深度比较模式相同的深度比较模式,例如,DCM_LESS_EQ模式)。因此,当HSR单元106对图元4042的片段执行隐藏面消除时,因为从TU深度缓冲器转发的深度值指示图元4042的片段将最终被更接近的对象的片段隐藏,所以片段针对所预先填充的HSR深度缓冲器116未通过深度测试。更接近的对象是图元4043,尽管图元4043并没有在图元4042的片段未通过深度测试的时刻被HSR单元106处理。与其中HSR深度缓冲器116没有基于来自用于区片的TU深度缓冲器的深度值被初始化的情形比较,这节省了HSR单元106中的一些处理(例如,HSR深度缓冲器116不需要被更新)。
然而,在其中图元4042不是不透明的情形中,例如,当其是半透明的时,可能发生更大的处理节省。在该情况下,如果HSR深度缓冲器116没有基于用于区片的TU深度缓冲器的深度值进行初始化,则HSR单元106可能将半透明图元所覆盖的片段冲洗到纹理化/着色单元108,以使混合操作可以在半透明的图元4042的片段和先前渲染过的其它对象的片段之间执行。因为不透明图元4043的片段将覆盖图元4042的片段,所以将片段冲洗到纹理化/着色单元108所涉及的处理、执行纹理化和着色操作、以及混合片段最终都被浪费了。然而,在本文中所描述的示例中,当对区片的片段执行深度测试时,分片单元104中的深度测试允许HSR单元106中的深度测试使用用于区片的最终TU深度缓冲器值。因此,因为HSR深度缓冲器116中的深度值已经被预先填充以考虑图元4043的深度,所以图元4042的片段可能未通过HSR单元106中的深度测试。因此,避免了冲洗和混合半透明片段所涉及的不必要的处理。利用半透明和其它复杂的纹理正在变得越来越普遍,并且这些纹理通常处理相对复杂,所以避免具有这些纹理的图元的不必要的处理是有用的。
在分片单元104中执行的深度测试使用与HSR单元106的相同的Z-缓冲技术的原理,但是使用不同的深度缓冲器。在分片单元104和HSR单元106中,用于表示深度值的比特数量可以相同或者不同。例如,在HSR深度缓冲器116中,深度值每一个可以由32个比特表示,而在TU深度缓冲器114中,对应的深度值每一个可以由较少的比特(例如,16或12个比特)表示,其中,例如在分片单元104中或在HSR单元106中,可以实现不同格式之间的转换。这样,与在分片单元106中利用完全32-比特深度值比较,可以减少在分片单元104中进行处理目的是执行深度测试的数据比特的数量。
在上文所描述的示例中,用于区片的TU深度缓冲器在全分辨率下进行维护,即,使用区片内的每个样本位置的一个深度值。在其它示例中,用于区片的TU深度缓冲器可以在降低的分辨率下进行维护,其中,TU深度缓冲器中的每个深度值表示区片内多于一个的样本位置的块的深度(例如,样本位置的2×2、4×4或8×8块)。即使在分片单元104中确定TU深度缓冲器处于全分辨率下,但是可能有益的是使用TU深度缓冲器的降低的分辨率版本作为被转发以供HSR单元106使用的深度信息,因为这减少了包括在深度信息中的数据量。
例如,从分片单元104中转发的深度信息可以包括粗略TU深度缓冲器的值,其中,粗略TU深度缓冲器的每个值表示全分辨率TU深度缓冲器内的值块。分片单元104基于用于区片的全分辨率TU深度缓冲器内的对应的值块以保守(conservative)方式确定用于区片的粗略TU深度缓冲器的值。确定以“保守方式”确定粗略深度缓冲器的粗略值意味着粗略值提供全分辨率深度缓冲器的对应的块中的全分辨率深度值的任一个的最不严格的深度测试。例如,如果深度比较模式是DCM_LESS_EQ,则深度缓冲器中的更高深度值比更低深度值提供更少严格的深度测试,因此粗略深度值采取全分辨率深度值的对应的块的最高深度值。与此相反,如果深度比较模式是DCM_GREATER_EQ,则深度缓冲器中的更低深度值比更高深度值提供更少严格的深度测试,因此粗略深度值采取全分辨率深度值的对应的块的最低深度值。分片单元104在可以与很多区片重叠的图元上操作,因此,分片单元104可以同时维护用于多个区片的相应的深度缓冲器。图12示出了其中图形处理系统102包括分片单元104和缓存(cache)存储器1202的示例。分片单元104包括TU深度缓冲器114并且缓存存储器1202包括缓存深度缓冲器1204。存储器103包括粗略深度缓冲器1206。作为示例,TU深度缓冲器114可以被配置成一次存储用于单个区片的全分辨率深度值。粗略深度缓冲器1206被配置成存储用于图像的所有区片(例如,近似1000个区片)的粗略深度值。缓存深度缓冲器1204可以被配置成一次存储用于图像的一些并非所有的区片(例如,用于4个区片)的深度值。在不同的示例中,存储在缓存深度缓冲器1204中的深度值的分辨率可以不同。为了给出三个示例:(i)全分辨率深度值可以储存在缓存深度缓冲器1204中,以使当分片单元104将用于区片的数据值写到缓存深度缓冲器1204,随后从缓存深度缓冲器1204中读回那些用于区片的深度值时,没有丢失准确性;(ii)中间分辨率深度值(即,比全分辨率更低的分辨率但是比存储在粗略深度缓冲器1206中的粗略深度值更高的分辨率)可以储存在缓存深度缓冲器1204中,从而降低缓存存储器1202的存储器要求和/或允许用于更多区片的深度值在任何给定的时间存储在缓存深度缓冲器1204中,从而增加缓存命中率;或(iii)粗略分辨率深度值(即,与存储在粗略深度缓冲器1206中的深度值相同的分辨率)可以储存在缓存深度缓冲器1204中,其将进一步降低缓存存储器1202的存储器要求和/或允许用于更多区片的深度值在任何给定的时间存储在缓存深度缓冲器1204中,但是如果分片单元104将用于区片的深度值写到缓存存储器1202,随后再次读出它们,则可能降低深度值的准确性。当分片单元104改变正在执行用于其深度测试的区片时,用于先前区片的深度值可以储存在缓存存储器1202的缓存深度缓冲器1204中。这样,缓存深度缓冲器1204存储用于若干(例如,四个)最近处理过的区片的深度值。当分片单元104返回到先前区片时,这允许从缓存存储器1202中取得深度值,而无需访问存储器103。如果当分片单元104需要访问用于该区片的深度值时,区片的深度值没有存储在缓存存储器1202中(即,如果有缓存缺失),则区片的深度值从存储器103中取得以供分片单元104使用。如上文所描述的,对于不同的深度缓冲器(114,1204和1206),深度值的分辨率可以不同,因此,当深度值在深度缓冲器之间传递时,可以执行一些处理,以便在适当的新分辨率下确定深度值,其如上文所描述的以保守方式进行。
图5示出了其中当存在于区片的所有图元已经在分片单元104中处理过时,实现DCM_LESS_EQ模式的示例,其中,图5(a)中的线502表示用于区片的TU深度缓冲器的列的全分辨率深度值。图5(b)中的线504示出了对应的粗略深度值,其中,每个粗略值表示在图5(a)所示的全分辨率深度值的4×4块。图5(b)中的粗略深度值的每一个取对应的4×4块中的16个全分辨率深度值中的最高值。注意,为清楚起见,假定图5(a)所示的样本的列包括4×4全分辨率块的每一个中的深度值中的最高值。图5(c)示出了具有甚至比图5(b)所示的分辨率更低的分辨率的另一个粗略深度缓冲器。特别地,图5(c)中的线506示出了表示图5(a)所示的全分辨率深度值的8×8块的粗略值。图5(c)中的粗略深度值的每一个取对应的8×8块中的64个全分辨率深度值中的最高值。再次,注意,为清楚起见,假定图5(a)所示的样本的列包括8×8全分辨率块的每一个中的深度值中的最高值。显然,单个粗略深度值可以利用比(例如,16或64)全分辨率深度值的对应的块更少的数据比特来表示。
此外,在一些示例中,由HSR单元106执行的隐藏面消除包括:(i)一个或多个初始HSR阶段(其可以被称为“分层深度测试”),其以相应的一个或多个粗略比例执行并且不包括每个样本深度测试;和(ii)随后的全分辨率HSR阶段,其以样本比例执行并且不包括每个样本深度测试。图6示出了其中HSR单元108包括分层深度测试模块602和每个样本深度测试模块604的示例,并且其中,HSR深度缓冲器116包括粗略深度缓冲器606和全分辨率深度缓冲器608。分层深度测试模块602被布置成接收用于存在于区片中的图元的图元数据并且被布置成采样图元以确定图元的片段和保守地组合片段以便在粗略深度值的粗略分辨率下生成粗略片段。分层深度测试模块602还被布置成使用存储在粗略深度缓冲器606中的用于区片的粗略深度值对粗略片段执行分层深度测试。每个样本深度测试模块604被布置成接收用于存在于区片中的并且还没有被分层深度测试模块602剔除的图元的片段的图元数据,并且使用存储在全分辨率深度缓冲器608中的用于区片的全分辨率深度值执行每个样本深度测试。因为一次考虑到样本的粗略块(例如,4×4或8×8块)并且如果深度测试失败,则能够比如果块内的每个样本被分开进行深度测试更高效地被剔除,所以分层深度测试要求比每个样本深度测试执行更少的深度比较操作。如果区片的大面积包括能够被剔除的片段,则这是非常有用,因为它减少了需要在每个样本深度测试模块604中在每个样本的基础上进行深度测试的片段的数量。减少需要执行的每个样本测试的数量可以提高HSR单元106所执行的HSR的效率。
在图6所示的示例中,粗略深度缓冲器606的值是以粗略TU深度缓冲器的相同的粗略比例,以使粗略TU深度缓冲器的值(即,从分片单元104中转发的深度信息)可以用于初始化HSR单元108中的粗略深度缓冲器606中的深度值。这允许HSR单元106以非常简单的方式处置所转发的深度信息。在其它示例中,所转发的深度信息的深度值的比例可以与粗略深度缓冲器606的比例不同,在这种情况下,HSR单元108可以操纵所转发的深度信息,以使它可以正确地初始化粗略深度缓冲器606中的深度值。
在一些示例中,可以存在串联布置的多于一个的分层深度测试模块602(具有对应的粗略深度缓冲器),其中,深度测试的比例不同,并且沿着该串联模块越来越精细。例如,第一分层深度测试模块可以以片段的8×8块的比例执行深度测试,然后第二分层深度测试模块可以以剩余的片段的4×4块的比例执行深度测试,然后每个样本深度测试模块604可以对剩余的片段执行每个样本深度测试。
一些对象可以具有与上文所描述的DCM_LESS_EQ模式不同的深度比较模式,例如用于产生特殊效果或以重叠图像顶部上的控制面板等。例如,一些其它深度比较模式是:(i)DCM_GREATER_EQ,其中,如果其深度值大于或等于适当的深度缓冲器中对应的深度值,则片段通过深度测试;(ii)DCM_LESS,其中,如果其深度值小于适当的深度缓冲器中对应的深度值,则片段通过深度测试;(iii)DCM_GREATER,其中,如果其深度值大于适当的深度缓冲器中对应的深度值,则片段通过深度测试;(iv)DCM_ALWAYS,其中,片段总是通过深度测试;(v)DCM_NEVER,其中,片段从未通过深度;(vi)DCM_EQUAL,其中,如果其深度值等于适当的深度缓冲器中对应的深度值,则片段通过深度测试;和(vii)DCM_NOT_EQUAL,其中,如果其深度值不等于适当的深度缓冲器中对应的深度值,则片段通过深度测试。
作为示例,图7示出了如图4所示的那些一样的,当分片单元104处接收到相同的图元时,如果在分片单元104中使用DCM_GREATER_EQ模式,则用于区片的TU深度缓冲器中的深度值如何被更新。线702示出了TU深度缓冲器的32个样本的列中的当前深度值。如图7(a)所图示的,因为它们的深度值大于由线702所表示的当前深度值,所以图元4041的片段通过深度测试,但是图元4042的片段未通过深度测试,所以TU深度缓冲器中的深度值使用图元4041的深度值进行更新,而非使用图元4042的深度值,如图7(b)中的线702所示。然后,在分片单元104处接收图元4043和4044。图元4043的大部分片段未通过深度测试,但是图元4044的片段通过深度测试,并且通过它们的深度测试的图元4043的片段通过图元4044进行隐藏,因此TU深度缓冲器中的深度值使用图元4044的深度值进行更新,如在图7(c)中的线702所示。如图7(c)所示,当利用DCM_GREATER_EQ模式时,最终TU深度缓冲器值因此与如图4(c)所示的当利用DCM_LESS_EQ模式时的结果有很大的不同。
如下文所描述的,有针对其特别考虑是有用的多个场景。
例如,存在于区片中的图元可以具有指示图元的片段的深度不能在分片单元104中进行解析的对象类型。例如,图元可以具有穿通对象类型,对于该穿通对象类型,稍后在图形处理系统102中(在纹理化/着色单元108中)执行α测试以确定片段是否包括在图元中。因为分片单元104不针对穿通图元执行α测试,所以如果它被先前处理过的图元完全隐藏,则分片单元104可以剔除穿通图元,但是因为分片单元104不能肯定穿通图元的片段是否包括在图元中,所以分片单元104不利用穿通图元的深度值更新TU深度缓冲器114的深度值。作为用于其深度值不能在分片单元104中进行解析的图元的另一示例,图元可以具有指示片段的深度能够在纹理化/着色单元108中通过着色操作进行修改的对象类型。对于该类型的图元,因为分片单元104不能在确定性的情况下确定图元的深度值并且因为分片单元104不应该剔除在图像中可能是可见的图元,所以分片单元104不剔除图元。因此,用于这些类型的图元的标识符在用于区片的区片控制流中进行维护。此外,在这些情况下,TU深度缓冲器的深度值不基于用于图元的深度值进行更新,以避免基于TU深度缓冲器中的不正确的深度值错误地剔除其它片段。分片单元104可能对这些类型的图元执行深度测试,然后不对深度测试的结果起作用。可选地,分片单元104可能不简单地对这些类型的图元执行深度测试,以使分片单元104确定用于区片的深度信息,而不考虑穿通图元的片段或者具有着色器-可修改的深度值的图元的片段。
图8(a)和图8(b)图示了分片单元104如何处置用于其深度值不能在分片单元104中进行解析的图元的片段(例如,具有着色器可修改的深度值的片段)。图元8041和8042具有这样的对象类型。线802示出了存储在用于区片的TU深度缓冲器中的深度值,并且可以在图8(b)中看出,即使图元8042的深度值小于存储在用于区片的TU深度缓冲器中的深度值,存储在用于区片的TU深度缓冲器中的深度值也不基于图元8041或8042的任一个的深度变化。此外,即使图元8041的片段的深度值大于存储在TU深度缓冲器中的深度值,用于图元8041和8042两者的标识符也都包括在用于区片的区片控制流中。应当理解,在这种情况中分片单元104的行为是保守的,在尽管当图元的深度最终被解析时其不会在深度测试中造成错误的意义上来说,它可能在先前处理过的图元后面结束,在这种情况中,剔除的潜在机会已经错过;或在先前处理过的图元前面结束,在这种情况下,更新深度缓冲器的潜在机会已经错过。
这意味着,因为它将错过来自穿通图元和分片单元104不能解析用于其的深度值的图元的深度信息,所以传递到HSR单元106的深度信息可能不是全部最佳的。然而,除非深度比较模式已经改变了方向,否则这不应该影响到在HSR单元106中所执行的深度测试的准确性。下文讨论深度比较模式的方向改变的情况。即使这意味着在HSR单元106中所执行的隐藏面消除的一些优化将会丢失,分片单元104也要采取保守途径,以便不错误地剔除图元(并且以便不导致HSR单元106错误地剔除片段)。
需要特别考虑的另一个场景是是否存在对图元所执行的深度测试的不连续性。如果例如在图形处理系统102处图元的情况下,接收到深度清除操作或深度比较模式的变化(例如,深度比较模式的方向变化),则深度测试的不连续性可能发生。除非针对这些情况,采取特别考虑,否则深度测试的不连续性可能意味着TU深度缓冲器的最终深度值在剔除HSR单元106中最大数量的片段方面不是最佳。
为了处置这个问题,分片单元104使用离散深度记录的概念来表示区片内的图元的深度值,其中,每个深度记录表示特定图元序列的末尾处的TU深度缓冲器的深度值,对于该特定图元序列,深度测试中不存在不连续性。这样,用于图元的序列的深度记录可以被认为是处理图元的序列的末尾处的TU深度缓冲器的状态的快照。当深度测试的不连续发生时,新深度记录开始并且标识符被包括在深度信息中,以指示深度记录的变化发生在图元序列中的何处。图13示出了其中分片单元104接收第一图元序列13021,然后在深度测试中存在不连续性(例如,深度比较模式的变化)的示例。分片单元104然后接收第二图元序列13022,然后在深度测试中存在另一不连续性(例如,深度清除操作)。分片单元104然后接收第三图元序列13023。分片单元104被配置成检测对用于区片的图元的片段执行的深度测试的不连续性,并且响应于检测到第一不连续性,分片单元104将存储(例如作为深度信息的一部分):(i)作为用于区片的深度记录13041的当前所确定的深度信息(例如,TU深度缓冲器114的当前状态);和(ii)其中检测到不连续性的图元或图元块的标识符(例如,对于其给定深度的记录是有效的最后的图元块的序列ID)。然后,检测到第一不连续性之后,分片单元104可以针对图元的深度信息创建用于区片的新深度记录。分片单元对第二序列13022中的图元执行深度测试,直至它检测到第二不连续性为止,在该点处,TU深度缓冲器114的当前状态作为用于区片的深度记录13042而被存储,并且其中检测到第二不连续性的图元或图元块的标识符被存储。分片单元104可以然后开始新深度记录并且针对第三图元序列13023执行深度测试。检测到第三序列13023的末尾(或者作为另一个不连续性或者作为用于区片的图元序列的末尾),在该点处,TU深度缓冲器114的当前状态被存储作为用于区片的深度记录13043,并且其中序列13023结束的位置处的图元或图元块的标识符可以被存储。序列1302末尾的位置的指示用于指示哪些图元属于哪些序列。在其它示例中,序列1302开始的位置的指示用于指示哪些图元属于哪些序列。深度记录1304和不连续性的位置的指示被存储并且可以由HSR单元106取得。这样,即使当在深度测试中存在不连续性时,分片单元104可以向HSR单元106提供用于区片的图元的适当的深度信息。
尽管因为分片单元104可以剔除如上文所描述的图元中的一些图元,所以图元1306的序列不包括包括在对应的序列1302中的所有图元是可能的,但是图元序列13061,13062和13063由HSR单元106处理,并且通常与由分片单元104处理的相应的图元序列13021,13022和13023相对应,例如,如果对于区片,它们完全被隐藏。HSR单元106利用其中检测到不连续性的图元或图元块的序列ID,以确定使用深度记录的哪个深度记录来对用于区片的图元的片段执行隐藏面消除。在每个图元序列1306的开始处,HSR深度缓冲器116(例如,粗略HSR深度缓冲器606)使用如适当的深度记录1304所指示的TU深度缓冲器的深度值进行初始化。例如,HSR单元106将确定深度记录13041与第一图元序列13061相关联,并且将加载深度记录13041的深度值来初始化HSR深度缓冲器116中的深度值并且然后利用HSR深度缓冲器116中的深度值对序列13061中的图元的片段执行深度测试。HSR单元106确定是否基于由于在HSR单元106处被处理而产生的图元(或图元块)的序列ID和序列13061和13062之间的不连续性的位置的所指示的序列ID的比较来更新(例如,重新初始化)HSR深度缓冲器116。这样,HSR单元106确定何时第二图元序列13062开始并且在该点处,HSR单元106利用深度记录13042重新初始化HSR深度缓冲器116,然后利用HSR深度缓冲器116中的深度值对序列13062中的图元的片段执行深度测试。同样,HSR单元106将利用正在被处理的图元的序列ID和由分片单元104所存储的序列ID检测第三图元序列13063的开始,以指示第二不连续性的位置。在该点处,HSR单元106利用深度记录13043重新初始化HSR深度缓冲器116,然后利用HSR深度缓冲器116中的深度值对序列13063中的图元的片段执行深度测试。
作为示例,其中,分片单元104存储特定图元序列1302的最后图元块的序列ID,针对由HSR单元106处理的每个新图元块,HSR单元106测试图元块的序列ID小于或等于与当前深度记录1304相关联的所存储的序列ID值。如果当前图元块的序列ID大于所存储的序列ID值,则用于下一个深度记录1304的深度值被加载到HSR深度缓冲器116中,然后,在处理来自图元块的图元之前,HSR单元106可以检查新深度记录的新加载的序列ID大于当前图元块的序列ID。在其它示例中,图元序列的不连续性的位置可以例如通过指示特定图元序列1302的第一图元或图元块的序列ID以不同方式指示。
在其它示例中,由用于深度记录的每一个的分片单元104所确定的深度信息可以包括在区片控制流内的相关位置处的区片控制流本身中。例如,如果深度记录1304x与之有关的特定图元序列1306x在图元块A处开始并且在图元块B处结束,则当分片单元104针对对应图元序列1302x的那些图元块完成深度测试时,它可以将该特定深度记录1304x的深度信息立即插入到图元块A之前的位置处的与图元序列1306x有关的区片控制流中。在这种情况下,当HSR单元106读取区片控制流时,它在需要它的时刻(即,紧接在对来自图元块A中的图元执行深度测试之前)从用于特定图元序列1306x的深度记录1304x中读取深度信息。因此,HSR单元106可以在HSR单元106得到区片控制流中的深度信息的时刻利用来自区片控制流的深度信息更新HSR深度缓冲器116,并且这适于对来自图元块A直至图元块B中的图元的片段在HSR单元104中执行深度测试。在其它示例中,当HSR单元106处理图元序列时,特定深度记录1304x的深度信息可以与以任何其它合适的方式在区片控制流中所识别的适当的图元序列1306x相关联。
如上文所描述的,所检测的深度测试的不连续性可能是由待被在由分片单元104所执行的深度测试中使用的深度比较模式的方向变化所导致的。在这种情况下,如果针对所有图元仅使用一个深度记录并且如果深度比较模式首先是DCM_LESS_EQ后来改为DCM_GREATER_EQ,几何同时在两种模式中发送,则在分片单元104中确定的最终深度值可能在剔除HSR单元106中的最大数量的片段方面不是最佳的。使用用于不同比较模式的不同深度记录来解决这个问题。例如,图9(a)示出了6个图元904,其在区片内全部具有重叠片段。从9041-9046依序接收图元并且以DCM_LESS_EQ模式接收前三个图元(9041-9043),而以DCM_GREATER_EQ模式接收后三个图元(9044-9046)。第一图元序列的末尾处的TU深度缓冲器中的深度值(图元9041-9043已经以DCM_LESS_EQ模式被处理过之后)表示如图9(b)中的线906所示的第一深度记录并且这具有图元9043的深度。所有三个图元9041-9043将通过它们在分片单元104中相应的深度测试并且它们相应的标识符被包括在区片控制流中。
以供分片单元104在处理第二序列的图元(图元9044-9046)中使用的TU深度缓冲器114的深度值使用由例如用于第一图元序列的第一深度记录所指示的第一图元序列(图元9041-9043)的末尾处的深度值进行初始化。第二图元序列的末尾处的TU深度缓冲器中的深度值(图元9044-9046已经以DCM_GREATER_EQ模式被处理过之后)表示如图9(c)中的线908所示的第二深度记录并且这具有图元9046的深度。所有三个图元9044-9046将通过它们在分片单元104中相应的深度测试并且它们相应的标识符被包括在区片控制流中。当HSR单元106对图元904的片段执行深度测试时,来自第一深度记录的深度值906被加载到HSR深度缓冲器116中用于对图元9041-9043的片段执行深度测试,以使图元9041和9042的片段被剔除,但是图元9043的片段通过HSR单元106中的深度测试。然后,来自第二深度记录的深度值908被加载到HSR深度缓冲器116中用于对图元9044-9046的片段执行深度测试,以使图元9044和9045的片段被剔除,但是图元9046的片段通过HSR单元106中的深度测试。可以看出,与利用其中深度值908可能被加载到HSR深度缓冲器116中用于在HSR单元106中对图元9041-9046的所有片段执行深度测试的单个深度记录比较,这更有效(特别地,用于剔除图元9041和9042的片段)。
如上文所描述的,所检测到的深度测试的不连续性也可以是由深度清除操作导致的。例如,图10(a)示出了5个图元1004,其全部具有区片内的重叠片段并且以DCM_LESS_EQ深度比较模式接收。从10041到10045依序接收图元,并且在清除操作之前接收形成第一图元序列的前三个图元(10041-10043),然后在清除操作之后,接收形成第二图元序列的后两个图元(10044-10045)。第一图元序列的末尾处的TU深度缓冲器114中的深度值(图元10041-10042已经被处理过之后)表示如图10(b)中的线1006所示的第一深度记录并且这具有图元10043的深度。所有三个图元10041-10043通过它们在分片单元104中相应的深度测试并且它们相应的标识符被包括在区片控制流中。
以供分片单元104在处理第二图元序列(图元9044-9046)中使用的TU深度缓冲器114的深度值使用当以DCM_LESS_EQ模式操作时的清除值(例如深度为1.0)进行初始化。这样,第二图元序列使用最初具有清除整体的TU深度缓冲器114而被处理。第二图元序列的末尾处的TU深度缓冲器中的深度值(图元10044和10045已经被处理过之后)表示如图10(c)中的线1008所示的第二深度记录并且这具有图元10045的深度。两个图元10044和10045通过它们在分片单元104中相应的深度测试并且它们相应的标识符被包括在区片控制流中。当HSR单元106对图元1004的片段执行深度测试时,深度值1006被加载到HSR深度缓冲器116中用于对图元10041-10043的片段执行深度测试,以使图元10041和10042的片段被剔除,但是图元10043的片段通过HSR单元106中的深度测试。然后,深度值1008被加载到HSR深度缓冲器116中用于对图元10044和10045的片段执行深度测试,以使图元10044的片段被剔除,但是图元10045的片段通过HSR单元106中的深度测试。可以看出,与利用其中深度值1008可能被加载到HSR深度缓冲器116中用于在HSR单元106中对所有图元10041-10045的片段执行深度测试的单个深度记录比较,这更有效(特别地,用于剔除图元10041的片段)。
如果区片中的一个或多个图元具有指示图元的片段的深度不能在分片单元104中进行解析的对象类型,则情况会变得更加复杂。在这种情况下,因为图元的先前序列的最终值由于分片单元104不能解析区片中的片段的至少一个的深度而导致可能无效,所以如果存在深度比较模式的变化,则用于新图元序列的TU深度缓冲器114不能利用先前的图元序列的最终深度值进行初始化。因此,在这种情况下,分片单元104初始化用于新图元序列的TU深度缓冲器,以使被具有未解析深度的图元所覆盖的样本位置处的TU深度缓冲器中的深度值被设定为新深度比较模式的最保守值。“最保守值”是在新深度比较模式中最没有可能通过深度测试的值。例如,在DCM_LESS_EQ模式中,最保守值是1.0;而在DCM_GREATER_EQ模式中,最保守值是0.0。对于一些深度比较模式(例如,DCM_EQUAL、DCM_NOT_EQUAL、DCM_NEVER和DCM_ALWAYS)可能没有是“最保守”的值。当深度比较模式变为这些深度比较模式的其中一个时,分片单元104可以利用TU深度缓冲器中的当前深度值简单地初始化用于新图元序列的TU深度缓冲器。
图11示出了在先前段落中所提及的情形的示例。也就是说,图11(a)示出了5个图元1104,其全部具有区片内重叠片段。从11041-11045依序接收图元并且前三个图元(11041-11043)形成第一图元序列并且以DCM_LESS_EQ模式接收,而后两个图元(11044和11045)形成第二图元序列并且以DCM_GREATER_EQ模式接收。分片单元104可以解析图元11041,11042,11044和11045的深度,而非解析图元11043的深度。也就是说,图元11043具有指示图元11043的片段的深度不能在分片单元104中进行解析的对象类型。第一图元序列的末尾处的TU深度缓冲器中的深度值(图元11041-11043已经以DCM_LESS_EQ模式被处理过之后)表示如图11(b)中的线1106所示的第一深度记录并且这具有图元11042的深度。图元11041和11042通过它们在分片单元104中相应的深度测试并且它们相应的标识符被包括在区片控制流中。由于图元11043的深度值不能在分片单元104中进行解析,所以保守来说,用于图元11043的标识符将包括在区片控制流中。此外,由于图元11043的深度值不能在分片单元104进行解析,所以针对新图元序列的新深度比较模式,为了保守起见,用于第二图元序列的TU深度缓冲器中的深度值利用待用于处理第二图元序列的最保守深度值以DCM_GREATER_EQ模式进行初始化,该第二序列是深度值为0.0。因此,图元11044和11045(其可能未通过针对图元11041-11043的任一个的深度测试)通过它们在分片单元104中对应的深度测试,并且它们相应的标识符包括在区片控制流中。第二图元序列的末尾处的TU深度缓冲器中的深度值(图元11044和11045已经以DCM_GREATER_EQ模式被处理过之后)表示第二深度记录并且如图9(c)中的线1108所示并且这具有图元11045的深度。当HSR单元106对图元1104执行其深度测试时,深度值1106被加载到HSR深度缓冲器116中用于对图元11041-11043执行深度测试。这允许HSR单元106剔除图元11041的片段,而图元11042的片段通过它们的深度测试。图元11043的片段将首先需要在纹理化/着色单元108中进行解析,然后在HSR单元106中进行深度测试。然后,深度值1108被加载到深度缓冲器116中用于对图元11044和11045执行深度测试。这允许HSR单元106剔除图元11044的片段,而图元11045的片段将通过它们的深度测试。
在上文所描述的示例中,当HSR单元106初始化用于新图元序列的HSR深度缓冲器116时,HSR深度缓冲器116中的当前深度值可以通过用于新图元序列的深度值被重写,如用于新图元序列的深度记录所指示的。然而,如果区片中的图元的至少一个具有指示图元的片段的深度不能在分片单元104中进行解析的对象类型,则情形会变得更加复杂。为了确保HSR单元106正确地执行隐藏面消除,确保HSR深度缓冲器116中的值在任何时刻都有效。因此,如果分片单元104一直没能解析一些图元的深度,则HSR单元106不基于用于新图元序列的适当的深度记录使用用于图元的新序列的TU深度值完全重写HSR深度缓冲器116中的深度值。如果正在被更新的TU深度缓冲器的分辨率与HSR深度缓冲器的分辨率不一样,则同样如此。在这些情况中,HSR深度缓冲器116可以通过合并与新图元序列有关的深度记录的深度值和已经在HSR深度缓冲器116中的值进行更新。该合并使用当前深度比较模式,以产生最佳结果。例如,根据深度比较模式,选择(i)HSR深度缓冲器116和(ii)所转发的用于每个片段位置的TU深度缓冲器中的最大或最小并且存储在HSR深度缓冲器116中。例如,如果新深度比较模式是DCM_LESS_EQ,则对于每个片段位置,选择存储在HSR深度缓冲器116中的值和在所转发的TU深度缓冲器的对应的值中的较低值并且存储在HSR深度缓冲器116中。相反,继续该示例,如果新深度比较模式是DCM_GREATER_EQ,则对于每个片段位置,选择存储在HSR深度缓冲器116中的值和在所转发的TU深度缓冲器的对应的值中的较高值并且存储在HSR深度缓冲器116中。
在大多数情况中,最后应该任何特定样本位置处的前面被渲染的图元是在该位置处建立所转发的深度值的相同的图元。因此,片段需要能够通过针对自身的深度测试。这在上文所描述的DCM_LESS_EQ和DCM_GREATER_EQ比较模式的情况下自然地运转。然而,可以理解,如果深度比较模式变化之后的新深度比较模式是DCM_LESS(而非如上文在示例中所描述的DCM_LESS_EQ),则当HSR深度缓冲器116使用所转发的深度值进行更新时,HSR深度缓冲器116中的深度值可以被更新为大于来自分片单元104的所转发的对应的深度值的更小的量(例如,最小精度单位(ulp))。这是因为所转发的深度值示出了用于特定深度流内的每个片段位置的最低深度值。在最低深度值处具有片段的图元应该通过HSR单元106中的深度测试,但它们的深度值等于所转发的深度信息中的那些。同样,如果深度比较模式变化之后的新深度比较模式是DCM_GREATER(而非如在上文示例中所描述的DCM_GREATER_EQ),则当HSR深度缓冲器116使用所转发的深度值进行更新时,HSR深度缓冲器116中的深度值可以被更新为小于来自分片单元104的所转发的对应的深度值的更小的量(例如,最小精度单位(ulp))。这是因为所转发的深度值示出了用于特定深度流内的每个片段位置的最高深度值。在最高深度值处具有片段的图元应该通过HSR单元106中的深度测试,但它们的深度值等于所转发的深度信息中的那些。
可以看出,在上文所描述的示例中,通过启用分片单元104执行深度测试并且向HSR单元106转发用于区片的深度信息,可以提高HSR单元106中的隐藏面消除的效率。特别地,在半透明或穿通片段随后通过不透明片段隐藏的情况中,从分片单元104所转发的深度信息允许HSR单元106剔除半透明或穿通片段,而不对半透明或穿通片段执行任何不必要的冲洗或混合操作。
注意,图1示出了作为分离的块的图形处理系统102的不同的功能单元,该不同的功能单元依序布置:分片单元104、HSR单元106、然后纹理化/着色单元108,因为图1中所示的图形处理系统102是基于区片的延迟渲染系统,以便执行分片计算,所以在片段被纹理化/着色之前,HSR应用于图元的片段。尽管单元在图1中示为分离的功能单元,但是不同单元的不同功能可以由相同的物理块来执行。例如,相同的硬件块可以被配置成同时实施分片单元104和纹理化/着色单元108,但是由于这表示对图元的片段执行不同的过程的顺序,所以在图1中依序示出单元在功能上是有意义的。
在上文所描述的示例中,在分片单元104中执行初始深度测试并且由分片单元104所确定的深度信息被转发到HSR单元106,以使当HSR单元106执行隐藏面消除时,它可以使用所转发的深度信息,例如,以设定HSR深度缓冲器116中的值。在其它示例中,初始深度测试可以在处理单元而非在分片单元104中执行。这样,上文所描述的示例的原理可以用于非基于区片的图形处理系统。例如,一般而言,图形处理系统可以被配置成处理存在于系统的渲染空间中的图元。一般而言,该系统包括可以被配置成在隐藏面消除之前处理图元的第一处理单元。在上文所描述的示例中,第一处理单元是分片单元104。该系统还包括如上文所描述的被配置成对渲染空间的样本位置处的图元的片段执行隐藏面消除的隐藏面消除单元。第一处理单元还可以被配置成通过对图元的片段执行深度测试来确定用于图元的深度信息,并且转发所确定的深度信息以供隐藏面消除单元使用。隐藏面消除单元可以然后在执行所述隐藏面消除中使用所转发的深度信息。作为替代实施例,第一处理单元可以是顶点着色器,其被配置成对传入的图元数据执行顶点着色。顶点着色器通常被布置成在HSR单元之前处理图元数据,并且顶点着色器使用图元坐标(例如,包括深度值)来执行顶点着色,所以在执行隐藏面消除之前,这是确定用于图元的深度信息的好地方。顶点着色器可以以与其中深度信息由分片单元转发以供HSR单元使用的上文所描述的示例类似的方式转发深度信息以供HSR单元使用。在分片系统(例如,在分片单元中)中实现深度测试的优点是,在给定时间,分片单元通常处理比对于其HSR单元正在处理数据的帧更靠后帧的数据,例如,对于其HSR单元正在处理数据的帧之后,分片单元可能立即正在处理用于帧的数据。如本文中所描述的,可以利用第一处理单元(例如,分片单元)和HSR单元之间的该帧延迟,以在HSR单元处理帧之前,而无需添加太多额外的延迟到系统中,确定用于帧的深度信息。如果第一处理单元在非基于区片的图形处理系统中实现,则对于第一处理单元,添加延迟,以确定深度信息。这种延迟在一些实现方式中可能是有害的。在没有用于帧的深度测试的不连续性的情况下(例如,如果没有DCM变化或深度清除操作),则对于第一处理单元,延迟足够用于在HSR单元开始处理用于帧的图元数据之前,处理用于该帧的所有图元数据。然而,如果存在用于帧的深度测试的不连续性(例如,如果有DCM变化或深度清除操作),则对于第一处理单元,延迟足够用于在HSR单元开始处理用于下一个图元序列的图元数据之前,处理用于该图元序列的所有图元数据(即,直至下一个不连续性)。因此,如果存在深度测试的许多不连续性,则减少了由于在非基于区片的图形处理系统中的第一处理单元中实现深度测试而导致的额外的延迟的不利影响。
通常,上文所描述的功能、方法、技术或部件中的任一个可以利用软件、固件、硬件(例如,固定逻辑电路)、或这些实现方式的任何组合在模块中实现。术语“模块”、“功能”、“部件”、“块”、“单元”和”逻辑”在本文中通常用于表示软件、固件、硬件、或其任何组合。
在软件实现方式的情况中,模块、功能性、块、单元、部件或逻辑表示当在处理器(例如,一个或多个CPU)上执行时执行指定任务的程序代码。在一个示例中,所描述的方法可以通过用存储在计算机可读介质上的机器可读形式的软件配置的计算机来执行。计算机可读介质的一个这样的配置是信号承载介质,因此被配置成诸如经由网络向计算设备传送指令(例如,作为载波)。计算机可读介质还可以被配置为非暂时性计算机可读存储介质,因而不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器、以及可以利用磁、光、和其它技术存储指令或其它数据并且可以被机器访问的其它存储器设备。
软件可以是以包括用于配置计算机以执行所描述的方法的组成部分的计算机程序代码的计算机程序的形式,或以包括当程序在计算机上运行时,适于执行本文中所描述的方法的任一个方法的所有步骤的计算机程序代码装置的计算机程序的形式,并且其中计算机程序在计算机可读介质上被具体化。程序代码可以存储在一个或多个计算机可读介质中。本文中所描述的技术的特征与平台无关,从而意味着技术可以在具有各种处理器的各种计算平台上实现。
本领域的技术人员还将认识到,功能性、技术或方法的全部或一部分可以通过专用电路、应用专用集成电路、可编程逻辑阵列、现场可编程门阵列等执行。例如,模块、功能性、单元、块、部件或逻辑可以包括电路形式的硬件。这样的电路可以包括晶体管和/或在制造过程中可用的其它硬件元件。这样的晶体管和/或其它元件可以用于形成实现和/或包含存储器的电路或结构,通过举例的方式,诸如寄存器、触发器、或锁存器、逻辑运算符(诸如布尔运算)、数学运算符(诸如加法器、乘法器或移相器)、和互连。这样的元件可以作为定制电路或标准单元库、宏或以其它抽象层次提供。这样的元件可以以特定的布置互连。模块、功能性、元件、单元、块或逻辑可以包括固定功能的电路和可以被编程成执行一个或多个函数的电路;可以从固件或软件更新或控制机构中提供这样的编程。在示例中,硬件逻辑具有实现固定功能操作的电路、状态机或过程。
它还旨在包含诸如HDL(硬件描述语言)软件的“描述”或者限定实现上文所描述的模块、功能性、块、单元、部件或逻辑的硬件配置的软件,该软件用于设计集成电路、或用于配置可编程芯片,以执行期望功能。也就是说,可以提供一种在其上编码计算机可读程序代码用于生成被配置成执行本文中所描述的方法的任一个方法的图形处理系统,或用于生成包括本文中所描述的任何装置的图形处理系统的计算机可读存储介质。也就是说,计算机系统可以被配置成从电路元件的定义和限定用于组合这些电路元件的规则的数据来生成表示,其中,非暂时性计算机可读存储介质可以在其上存储处理器可执行指令,当在这样的计算机系统处执行时,该处理器可执行指令使计算机系统生成如本文中所描述的图形处理系统。换一种方式,可以提供在其上存储计算机可读指令的非暂时性计算机可读存储介质,当在计算机系统处被处理以生成集成电路的表现时,该计算机可读指令使计算机系统生成根据本文中所描述的示例的任一个示例的图形处理系统的表现。
术语“处理器”和“计算机”在本文中用于是指具有处理能力以使其能够执行指令的任何设备或其部分、或能够执行功能性或方法、或其任何组合的全部或一部分的专用电路。
尽管主题已经以特定于结构特征和/或方法动作的语言进行了描述,但是应当理解,在所附权利要求书中限定的主题不必限于上文所描述的具体特征或动作。相反,上文所描述的具体特征和动作被公开作为实现权利要求的示例形式。应该理解的是,上文所描述的好处和优点可以涉及一个示例或者可以涉及若干个示例。
如对于本领域的技术人员而言,显然本文中所给出的任何范围或值可以被扩展或者改变而不失去所寻求的效果。本文中所描述的方法的步骤可以在适当时以任何合适的顺序或者同时执行。上述示例的任一个示例的各方面可以与所描述的其它示例的任一个示例的各方面组合以形成另外的示例而不失去所寻求的效果。
Claims (23)
1.一种图形处理系统,所述图形处理系统具有被细分成多个区片的渲染空间,所述系统被配置成处理存在于所述区片中的一个或多个区片中的图元,所述系统包括:
分片单元,所述分片单元被配置成处理所述图元以:(i)针对所述图元中的每一个图元,确定所述图元存在于所述区片中的哪个区片中,以及(ii)生成用于所述区片的区片控制流,其中用于区片的所述区片控制流包括存在于该区片中的图元的指示符;以及
隐藏面消除单元,所述隐藏面消除单元被配置成:(i)取得与如由所生成的用于所述区片的区片控制流所指示的存在于区片中的所述图元有关的数据,以及(ii)对所述区片的样本位置处的所指示的图元的片段执行隐藏面消除;
其中所述分片单元还被配置成:
当所述图元的片段在所述分片单元中被处理时,通过对所述图元的所述片段执行深度测试来确定用于所述区片的深度信息;以及
转发所确定的深度信息以供所述隐藏面消除单元使用;并且
其中所述隐藏面消除单元被配置成在执行所述隐藏面消除中使用所转发的深度信息。
2.根据权利要求1所述的图形处理系统,其中所述隐藏面消除单元被配置成使用所转发的深度信息用于在设定HSR深度缓冲器的值以供在针对区片执行所述隐藏面消除中使用的所述区片。
3.根据权利要求1或2所述的图形处理系统,其中所述分片单元被配置成基于分片单元深度缓冲器确定用于区片的所述深度信息,所述分片单元深度缓冲器指示在所述区片的样本位置处的深度值并且由所述分片单元来维护。
4.根据权利要求3所述的图形处理系统,其中为了确定用于区片的所述深度信息,所述分片单元被配置成:针对存在于所述区片中的图元的片段,
依据深度比较模式,通过将所述片段的深度值与在所述区片的对应的样本位置处的所述分片单元深度缓冲器中的深度值进行比较来确定所述分段是否通过所述深度测试;以及
如果所述片段通过所述深度测试并且如果它适于所述图元和所述深度比较模式,则更新在所述区片的所述对应的样本位置处的所述分片单元深度缓冲器中的所述深度值。
5.根据权利要求4所述的图形处理系统,其中所述分片单元被配置成:当所述分片单元已经完成处理存在于所述区片中的图元的所述片段时,转发用于所述区片的深度信息。
6.根据权利要求4或5所述的图形处理系统,其中所述分片单元被配置成:仅在所述图元包括通过所述深度测试并且存在于所述区片中的至少一个片段的情况下,包括在用于区片的所述区片控制流中的图元的指示符。
7.根据权利要求4-6中任一项所述的图形处理系统,其中与所述图元有关的数据存储在多个图元块中以供所述隐藏面消除单元取得,并且其中所述分片单元被配置成:
确定特定图元块的特定图元在所述区片中的任一个区片中没有通过所述深度测试的片段;以及
从所述特定图元块中消除所述特定图元。
8.根据权利要求4-7中任一项所述的图形处理系统,其中与所述图元有关的数据存储在多个图元块中以供所述隐藏面消除单元取得,并且其中所述分片单元被配置成:
确定特定图元块在所述区片中的任一个区片中不包括具有通过所述深度测试的任何片段的图元;以及
消除所述特定图元块。
9.根据权利要求3-8中任一项所述的图形处理系统,其中所确定的深度信息包括粗略深度缓冲器的值,其中所述粗略深度缓冲器的每个值代表所述分片单元深度缓冲器内的值的块,并且其中所述分片单元被配置成基于所述分片单元深度缓冲器内的所述对应的值的块以保守方式确定所述粗略深度缓冲器的所述值。
10.根据任何前述权利要求所述的图形处理系统,其中所述隐藏面消除单元包括:
分层深度测试模块,所述分层深度测试模块被配置成以不包括每个样本深度测试的粗略的比例来执行初始隐藏面消除阶段;以及
每样本深度测试模块,所述每样本深度测试模块被配置成以不包括每样本深度测试的所述样本比例来执行随后的隐藏面消除阶段。
11.根据权利要求10所述的图形处理系统,当从属于权利要求9时,其中所述粗略深度缓冲器的所述值是以所述初始隐藏面消除阶段的相同的粗略比例,并且其中所述粗略深度缓冲器的所述值用于设定由所述分层深度测试模块使用的粗略深度缓冲器的所述值以执行所述初始隐藏面消除。
12.根据任何前述权利要求所述的图形处理系统,其中所述分片单元被配置以使得如果存在于区片中的图元具有指示所述图元的所述片段的所述深度不能在所述分片单元中进行解析的对象类型,则该图元的所述片段在用于所述区片的所述区片控制流中被维护并且确定用于所述区片的所述深度信息而无需考虑所述图元的所述片段。
13.根据任何前述权利要求所述的图形处理系统,其中所述分片单元被配置成:
检测对用于区片的所述图元的所述片段执行的所述深度测试的不连续性;
响应于检测到所述不连续性,存储(i)作为用于所述区片的特定深度记录的当前所确定的深度信息以及(ii)其中检测到所述不连续性的图元或图元块的标识符;以及
在检测到所述不连续性之后,针对图元的深度信息创建用于所述区片的新深度记录。
14.根据权利要求13所述的图形处理系统,其中所述隐藏面消除单元被配置成:使用其中检测到所述不连续性的所述图元或所述图元块的所述标识符,以确定使用所述深度记录中的哪个深度记录对用于所述区片的所述图元的片段执行隐藏面消除。
15.根据权利要求14所述的图形处理系统,当从属于权利要求2时,其中所述深度记录中的每一个深度记录代表其中在所述深度测试中不存在不连续性的图元的序列的末端处的分片单元深度缓冲器的所述深度值,并且其中所述隐藏面消除单元被配置成:
基于其中检测到所述不连续性的所述图元或所述图元块的所述标识符与因在所述隐藏面消除单元处被处理而产生的图元或图元块的标识符的比较来确定是否更新所述HSR深度缓冲器;以及
根据所述比较的所述结果,使用所述新深度记录的所述深度值来更新所述HSR深度缓冲器。
16.根据权利要求1-12中任一项所述的图形处理系统,其中所述分片单元被配置成:
检测对用于区片的所述图元的所述片段执行的所述深度测试的不连续性;
响应于检测到所述不连续性,包括作为在与所述特定深度记录与其有关的图元的特定序列的起点对应的位置处的所述区片控制流中的用于所述区片的特定深度记录的当前所确定的深度信息;以及
在检测到所述不连续性之后,针对图元的深度信息创建用于所述区片的新深度记录。
17.根据权利要求15或16所述的图形处理系统,其中所述隐藏面消除单元被配置成:使用所述特定深度记录的所转发的深度信息以通过将所述特定深度记录的所述深度值与所述HSR深度缓冲器的所述深度值合并来设定所述HSR深度缓冲器的值。
18.根据权利要求13-17中任一项所述的图形处理系统,其中所检测到的所述深度测试中的不连续性起因于深度清除操作,并且其中所述分片单元深度缓冲器被设定成在所检测到的不连续性之后对图元执行深度测试之前具有清除状态。
19.根据权利要求13-18中任一项所述的图形处理系统,其中所检测到的所述深度测试的不连续性起因于在由所述分片单元执行的所述深度测试中要使用的所述深度比较模式的变化。
20.根据权利要求19所述的图形处理系统,其中所述分片单元被配置成:
在所检测到的不连续性之后对图元执行深度测试之前,如果所述图元中没有任何针对关于所述特定深度记录的所述区片已经被所述分片单元处理的图元具有指示所述图元的所述片段的所述深度不能在所述分片单元中进行解析的对象类型,则使用所述特定深度记录的所述深度值来初始化用于所述新深度记录的所述分片单元深度缓冲器;以及
在所检测到的不连续性之后对图元执行深度测试之前,如果所述图元中针对关于所述特定深度记录的所述区片已经被所述分片单元处理的一个或多个图元具有指示所述图元的所述片段的所述深度不能在所述分片单元中进行解析的对象类型,则使用所述新深度比较模式的最保守值来初始化用于所述新深度记录的所述分片单元深度缓冲器。
21.一种在图形处理系统中处理图元的方法,所述图形处理系统具有被细分成多个区片的渲染空间,所述方法包括:
在分片单元处处理所述图元,以:(i)针对所述图元中的每一个图元确定所述图元存在于所述区片中的哪个区片中,以及(ii)生成用于所述区片的区片控制流,其中用于区片的所述区片控制流包括存在于该区片中的图元的指示符;以及
通过以下操作在隐藏面消除单元处处理所述图元:(i)取得与如所生成的用于所述区片的区片控制流所指示的存在于区片中的所述图元有关的数据,以及(ii)对在所述区片的样本位置处的所指示的图元的片段执行隐藏面消除;
其中所述方法还包括:
当所述图元的片段在所述分片单元中被处理时,通过对所述图元的所述片段执行深度测试来在所述分片单元处确定用于所述区片的深度信息;
从所述分片单元中转发所确定的深度信息以供所述隐藏面消除单元使用;以及
在所述隐藏面消除单元处执行所述隐藏面消除中使用所转发的深度信息。
22.一种图形处理系统,所述图形处理系统被配置成处理存在于所述系统的渲染空间中的图元,所述系统包括:
第一处理单元,所述第一处理单元被配置成在隐藏面消除之前处理所述图元;以及
隐藏面消除单元,所述隐藏面消除单元被配置成对在所述渲染空间的样本位置处的所述图元的片段执行隐藏面消除;
其中所述第一处理单元还被配置成:
通过对所述图元的片段执行深度测试来确定用于所述图元的深度信息;以及
转发所确定的深度信息以供所述隐藏面消除单元使用;并且
其中所述隐藏面消除单元被配置成在执行所述隐藏面消除中使用所转发的深度信息。
23.一种在图形处理系统中处理图元的方法,所述图形处理系统具有渲染空间,所述方法包括:
在隐藏面消除之前,在第一处理单元处处理所述图元;以及
通过对在所述渲染空间的样本位置处的所述图元的片段执行隐藏面消除来在隐藏面消除单元处处理所述图元;
其中所述方法还包括:
通过对所述图元的片段执行深度测试来在所述第一处理单元处确定用于所述图元的深度信息;
从所述第一处理单元中转发所确定的深度信息以供所述隐藏面消除单元使用;以及
在所述隐藏面消除单元处执行所述隐藏面消除中使用所转发的深度信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1417610.1A GB2530996B (en) | 2014-10-06 | 2014-10-06 | Depth forwarding in a graphics processing system |
GB1417610.1 | 2014-10-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105488842A true CN105488842A (zh) | 2016-04-13 |
CN105488842B CN105488842B (zh) | 2021-02-02 |
Family
ID=51946888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510640133.XA Active CN105488842B (zh) | 2014-10-06 | 2015-09-30 | 图形处理系统中的深度转发 |
Country Status (4)
Country | Link |
---|---|
US (4) | US10510182B2 (zh) |
CN (1) | CN105488842B (zh) |
DE (1) | DE102015116953A1 (zh) |
GB (1) | GB2530996B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109196549A (zh) * | 2016-06-06 | 2019-01-11 | 高通股份有限公司 | 动态低分辨率z测试大小 |
CN112116519A (zh) * | 2019-06-19 | 2020-12-22 | 畅想科技有限公司 | 图形处理系统中的粗略深度测试 |
CN113870408A (zh) * | 2020-06-30 | 2021-12-31 | 想象技术有限公司 | 渲染一个或多个片段的方法和图形处理系统 |
WO2022067499A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 粗粒度深度测试方法以及图形处理器 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2526598B (en) | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
WO2017049592A1 (en) | 2015-09-25 | 2017-03-30 | Intel Corporation | Method and apparatus to improve shared memory efficiency |
KR102637736B1 (ko) * | 2017-01-04 | 2024-02-19 | 삼성전자주식회사 | 그래픽스 처리 방법 및 시스템 |
US10424107B2 (en) | 2017-04-01 | 2019-09-24 | Intel Corporation | Hierarchical depth buffer back annotaton |
US10459509B2 (en) | 2017-04-10 | 2019-10-29 | Intel Corporation | Dual path sequential element to reduce toggles in data path |
US11010953B2 (en) | 2017-04-21 | 2021-05-18 | Intel Corporation | Dedicated fixed point blending for energy efficiency |
US10074210B1 (en) * | 2017-07-25 | 2018-09-11 | Apple Inc. | Punch-through techniques for graphics processing |
US10178619B1 (en) | 2017-09-29 | 2019-01-08 | Intel Corporation | Advanced graphics power state management |
US11281463B2 (en) | 2018-03-25 | 2022-03-22 | Intel Corporation | Conversion of unorm integer values to floating-point values in low power |
US11010954B2 (en) | 2018-12-11 | 2021-05-18 | Samsung Electronics Co., Ltd. | Efficient redundant coverage discard mechanism to reduce pixel shader work in a tile-based graphics rendering pipeline |
EP3671652A1 (en) * | 2018-12-21 | 2020-06-24 | Imagination Technologies Limited | Transformed geometry data cache for graphics processing systems |
US11049216B1 (en) | 2020-01-21 | 2021-06-29 | Arm Limited | Graphics processing systems |
US11030783B1 (en) * | 2020-01-21 | 2021-06-08 | Arm Limited | Hidden surface removal in graphics processing systems |
EP3843045B1 (en) * | 2020-05-28 | 2022-06-22 | Imagination Technologies Limited | Task merging |
US11176734B1 (en) * | 2020-10-06 | 2021-11-16 | Qualcomm Incorporated | GPU hardware-based depth buffer direction tracking |
US20240005601A1 (en) * | 2022-06-29 | 2024-01-04 | Advanced Micro Devices, Inc. | Hierarchical depth data generation using primitive fusion |
WO2024105396A1 (en) * | 2022-11-17 | 2024-05-23 | Arm Limited | Graphics processors |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070146378A1 (en) * | 2005-11-05 | 2007-06-28 | Arm Norway As | Method of and apparatus for processing graphics |
CN101563712A (zh) * | 2006-12-22 | 2009-10-21 | 高通股份有限公司 | 快速像素渲染处理 |
US20100231588A1 (en) * | 2008-07-11 | 2010-09-16 | Advanced Micro Devices, Inc. | Method and apparatus for rendering instance geometry |
CN102609971A (zh) * | 2012-01-11 | 2012-07-25 | 南京大学 | 嵌入式gpu实现3d-gis的快速渲染系统 |
CN102637304A (zh) * | 2012-03-15 | 2012-08-15 | 中国科学院软件研究所 | 基于gpu的几何表面上各向同性/异性纹理合成方法 |
US20140168220A1 (en) * | 2012-12-17 | 2014-06-19 | Arm Limited | Hidden surface removal in graphics processing systems |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2458488C (en) * | 2008-03-19 | 2018-09-12 | Imagination Tech Ltd | Untransformed display lists in a tile based rendering system |
GB2518902B (en) * | 2013-10-07 | 2020-07-01 | Advanced Risc Mach Ltd | Early depth testing in graphics processing |
-
2014
- 2014-10-06 GB GB1417610.1A patent/GB2530996B/en active Active
-
2015
- 2015-09-30 CN CN201510640133.XA patent/CN105488842B/zh active Active
- 2015-10-06 DE DE102015116953.3A patent/DE102015116953A1/de active Pending
- 2015-10-06 US US14/875,873 patent/US10510182B2/en active Active
-
2019
- 2019-11-13 US US16/683,085 patent/US11080926B2/en active Active
-
2021
- 2021-06-30 US US17/364,096 patent/US11682163B2/en active Active
-
2023
- 2023-06-19 US US18/211,530 patent/US20230334769A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070146378A1 (en) * | 2005-11-05 | 2007-06-28 | Arm Norway As | Method of and apparatus for processing graphics |
CN101563712A (zh) * | 2006-12-22 | 2009-10-21 | 高通股份有限公司 | 快速像素渲染处理 |
US20100231588A1 (en) * | 2008-07-11 | 2010-09-16 | Advanced Micro Devices, Inc. | Method and apparatus for rendering instance geometry |
CN102609971A (zh) * | 2012-01-11 | 2012-07-25 | 南京大学 | 嵌入式gpu实现3d-gis的快速渲染系统 |
CN102637304A (zh) * | 2012-03-15 | 2012-08-15 | 中国科学院软件研究所 | 基于gpu的几何表面上各向同性/异性纹理合成方法 |
US20140168220A1 (en) * | 2012-12-17 | 2014-06-19 | Arm Limited | Hidden surface removal in graphics processing systems |
Non-Patent Citations (2)
Title |
---|
SON MINH TRAN 等: "3D image presentation: new technique for hidden-surface removal in SIRDS algorithm", 《INTERNATIONAL CONFERENCE ON TRENDS IN COMMUNICATIONS. TECHNICAL PROGRAM, PROCEEDINGS》 * |
彭仪普: "地形三维可视化及其实时绘制技术研究", 《中国博士学位论文全文数据库 基础科学辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109196549A (zh) * | 2016-06-06 | 2019-01-11 | 高通股份有限公司 | 动态低分辨率z测试大小 |
CN112116519A (zh) * | 2019-06-19 | 2020-12-22 | 畅想科技有限公司 | 图形处理系统中的粗略深度测试 |
CN112116519B (zh) * | 2019-06-19 | 2022-12-27 | 畅想科技有限公司 | 图形处理系统中的粗略深度测试 |
US11922566B2 (en) | 2019-06-19 | 2024-03-05 | Imagination Technologies Limited | Coarse depth test in graphics processing systems |
CN113870408A (zh) * | 2020-06-30 | 2021-12-31 | 想象技术有限公司 | 渲染一个或多个片段的方法和图形处理系统 |
CN113870408B (zh) * | 2020-06-30 | 2024-02-23 | 想象技术有限公司 | 图形处理系统、计算机可读存储介质和处理片段的方法 |
WO2022067499A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 粗粒度深度测试方法以及图形处理器 |
Also Published As
Publication number | Publication date |
---|---|
US20230334769A1 (en) | 2023-10-19 |
US11682163B2 (en) | 2023-06-20 |
US11080926B2 (en) | 2021-08-03 |
GB2530996A (en) | 2016-04-13 |
DE102015116953A1 (de) | 2016-04-07 |
US10510182B2 (en) | 2019-12-17 |
GB2530996B (en) | 2016-09-14 |
CN105488842B (zh) | 2021-02-02 |
US20210327124A1 (en) | 2021-10-21 |
GB201417610D0 (en) | 2014-11-19 |
US20200082606A1 (en) | 2020-03-12 |
US20160098856A1 (en) | 2016-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105488842A (zh) | 图形处理系统中的深度转发 | |
US11928776B2 (en) | Processing primitives which have unresolved fragments in a graphics processing system | |
CN101639929B (zh) | 图形处理系统 | |
EP3183713B1 (en) | Render target command reordering in graphics processing | |
CN1270278C (zh) | 用于图形渲染的z-缓冲技术 | |
CN105809728B (zh) | 在图形处理单元中渲染场景的视图 | |
EP3087553B1 (en) | Optimized multi-pass rendering on tiled base architectures | |
JP4579262B2 (ja) | 3次元画像のレンダリングにおける早期zテスト方法およびシステム | |
CN105184730A (zh) | 向图形处理系统中的区片分配图元 | |
CN105321140A (zh) | 向图形处理系统中的区片分配图元 | |
US20150221127A1 (en) | Opacity Testing For Processing Primitives In A 3D Graphics Processing System | |
US9165337B2 (en) | Command instruction management | |
US9727392B2 (en) | Techniques for render pass dependencies in an API | |
CN109978977A (zh) | 使用预取的图形数据执行基于图块的渲染的装置和方法 | |
KR20230097004A (ko) | 고속의 증분 공유된 상수 | |
CN113744121B (zh) | 任务合并 | |
CN115775198A (zh) | 多核gpu中的重叠几何形状处理 | |
CN103927207A (zh) | 软件加速方法和装置 | |
US20240233270A1 (en) | Rendering views of a scene in a graphics processing unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |