CN107341283B - 用于图块的控制流的生成 - Google Patents
用于图块的控制流的生成 Download PDFInfo
- Publication number
- CN107341283B CN107341283B CN201710296232.XA CN201710296232A CN107341283B CN 107341283 B CN107341283 B CN 107341283B CN 201710296232 A CN201710296232 A CN 201710296232A CN 107341283 B CN107341283 B CN 107341283B
- Authority
- CN
- China
- Prior art keywords
- tile
- primitive
- sub
- polygon
- bounding box
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/206—Drawing of charts or graphs
-
- 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
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Abstract
公开了用于图块的控制流的生成。描述了在图形处理系统的平铺单元内处理图元的方法。该方法包括基于在每个像素内的样本位置来确定图元是否落在图块内。如果基于在图块中的像素内的样本位置确定图元确实落在图块内,则存储在图块和图元之间的关联以指示图元存在于图块中。例如,可以将对于图元的标识符添加到用于图块的控制流,以指示该图元存在于该图块中。描述了各种不同的方法以做出确定,并且这些方法可以单独地或以任何组合被使用。
Description
背景
图形处理系统用于处理图形数据。例如,在计算系统上运行的应用可能需要渲染三维(3D)场景的图像用于显示给用户。应用可以将图形数据发送到要渲染的图形处理系统,其中图形数据描述要渲染的图元(primitive)。如在本领域中已知的,图元通常是凸多边形,诸如三角形或凸四边形,其中图元通常具有其在由其顶点的位置定义的图形处理系统的渲染空间中的位置,并且可以具有其由其他属性(诸如颜色或纹理属性)定义的外观。场景中的对象可以由一个或多个图元表示。随着图形处理系统的进步,它们渲染复杂图像的能力得到提高,并且因此应用利用这一点,并为图形处理系统提供更复杂的图像来渲染。这意味着图像中的图元数量趋于增加,因此图形处理系统有效地处理图元的能力变得更为重要。
提高图形处理系统的效率的一种已知方式是以基于图块(tile)的方式渲染图像。以这种方式,将图元在其中渲染的渲染空间被分成多个图块,其然后可以彼此独立地渲染。为了渲染图元,渲染单元使用存储器来存储用于不同样本位置的中间结果(例如,深度值和图元标识符等)。如果渲染单元一次在一个图块上操作,则该存储器的大部分(或全部)可以位于“片上”,即在图形处理单元(GPU)上,如果整个渲染空间被立即渲染则这可能是不太可能的。因此,在基于图块的图形系统中,与非基于图块的图形系统相比,在GPU和片外存储器(即,其可以被称为“系统存储器”)之间的读取和写入操作的数量通常减少。由于在GPU和系统存储器之间的读取和写入操作通常非常慢并且(与在GPU内部执行的操作相比)使用大量的功率,因此基于图块的图形系统常常比非基于图块的图形系统更有效(从功率和速度方面来说)。基于图块的图形系统包括平铺单元(tiling unit)以平铺图元。也就是说,平铺单元为图元确定图元在渲染空间的图块中的哪个图块中。然后,当渲染单元渲染图块时,它可以被给出指示哪些图元应该用于渲染图块的信息。
例如,图1示出了可以用于渲染3D场景的图像的基于图块的图形处理系统100的一些元件。图形处理系统100包括图形处理单元(GPU)102和两个部分的存储器1041和1042。注意,两个部分的存储器1041和1042可以是或可以不是同一物理存储器的部件,并且存储器1041和1042都可以位于“片外”,即不在与GPU 102相同的芯片上。在存储器(1041和1042)与GPU 102之间的通信可以通过系统100中的通信总线发生。
GPU 102包括预处理模块106、平铺单元108和渲染单元110。平铺单元108包括处理逻辑112和数据储存器114,并且渲染单元110包括隐藏面消除(HSR)模块116和纹理化/阴影化模块118。图形处理系统100被布置为使得在预处理模块106处接收描述由应用提供的图元序列的图形数据。预处理模块106执行诸如几何处理的功能,包括剪切和剔除以去除未落入可见视图内的图元。预处理模块106还可以将图元投影到屏幕空间中。预处理模块106将图元输出到平铺单元108。
平铺单元108从预处理模块106接收图元,并确定在图形处理系统100的渲染空间的图块中的每个内存在哪些图元。图元可以在渲染空间的一个或多个图块中。平铺单元108通过创建用于图块的显示列表来将图元分配给渲染空间的图块,其中用于图块的显示列表包括在图块中存在的图元(即图元ID)的指示。显示列表和图元从平铺单元108输出并存储在存储器1041中。渲染单元从存储器1041获取用于图块的显示列表和与该图块相关的图元,并且HSR模块116执行隐藏面消除,从而去除隐藏在场景中的图元的片段。其余的片段被传递到纹理化/阴影化模块118,纹理化/阴影化模块118对片段执行纹理化和/或阴影化,以确定可以传递到存储器1042以存储在帧缓冲器中的所渲染的图像的像素颜色值。渲染单元110处理图块的每个中的图元,并且当整个图像被渲染并存储在存储器1042中时,图像可以从图形处理系统100输出并且例如显示在显示器上。在图1所示的示例中,基于图块的图形处理系统100是延迟渲染系统,意味着渲染单元110在对图元片段执行纹理化和/或阴影化之前在图元片段上执行隐藏面消除以便渲染该场景。然而,在其他示例中,图形处理系统可能不是延迟渲染系统,使得在对图元片段执行隐藏面消除之前对图元片段执行纹理化和/或阴影化。
图2示出了已被划分为图块204的8×12阵列的渲染空间202的示例,其中在第m行和第n列中的图块被称为204mn。示出了图元206。平铺单元108操作以确定图元206在哪个图块204中。如果图元206至少部分地与图块204重叠,则图元206在图块204“中”。平铺单元108通过找到图元206的三个顶点的最小和最大x和y坐标并根据那些坐标形成边界框208来确定边界框208。平铺单元108可以由此确定图元206不在未在边界框208中的图块204的任一个中。如果图块204至少部分地与边界框208重叠,则图块204在边界框208“中”。在一些示例中,可以按图块分辨率确定边界框,由此,边界框在尺寸上可以增加,使得边界框的边缘落在图块边界上。在图2中,布满点的图块(即,图块的顶部和底部行,渲染空间202的图块的第一列和最后两列)位于边界框208的外侧,因此在该基础上,平铺单元108可以确定图元206不在那些图块中。在非常简单的实现中,平铺单元108可以仅指示图元位于边界框208中的所有的图块中。然而,这意味着图元被指示为在它实际上并不在其中的一些图块中。这可能导致由于在存储器1041中的不必要的图元和/或图元ID的存储而引起的额外的存储器消耗以及渲染单元110中的低效率,因为图元从存储器1041读取并对于它们在其中不可见的图块进行处理。因此,平铺单元108确定图元在边界框208中的哪个图块中通常是优选的。
对于边界框208中的每个图块(例如,图2中的白色图块中的每一个),可以执行平铺计算以确定图元206是否在图块中。例如,用于确定图元206是否在图块204中的平铺计算可以包括对于图元的每个边缘的计算。例如,如图3所示,使用图元206的顶点(3041、3042和3043)的地点来确定表示界定图元206的边缘的边缘线(3021、3022和3023)的等式。然后,对于每个边缘线302,可以通过将图块中的测试点的位置与边缘线302的等式进行比较来执行测试以确定图块204是在相应边缘线302的内部还是外部。图块中的测试点可能对关于不同边缘的测试是不同的,即测试点可以是边缘特定的。例如,为了测试图块是否在边缘线3021内,测试点在图块的左下方;为了测试图块是否在边缘线3022内,测试点在图块的左上方;并且为了测试图块是否在边缘线3023内,测试点在图块的右下方。如果确定图块在所有的边缘线302内,则确定图元在该图块中。然而,如果确定图块在边缘线302中的任一个之外,那么确定图元不在图块中。
可以对边界框208中的图块的每一个执行平铺计算,以便确定图元是否在相应的图块中。对于图元的每个边缘,并且对于边界框中的每个图块,将图块中的边缘特定的测试点的位置与适当边缘线的等式进行比较通常涉及执行一个或多个浮点运算。浮点运算执行起来成本高(在时间和功耗方面)。这可能会引起问题,特别是由于图像中的图元的数量的增加趋势,这是因为在平铺过程中涉及的浮点运算的数量可能会变得足够大,以致明显不利地影响图形处理系统100的性能。因此,减少平铺过程中消耗的时间和功率通常是有益的。
下面所述的实施方式仅作为示例被提供且不是解决对于基于图块的渲染的已知方法的任何或所有缺点的实现的限制。
概述
本概述被提供以简化的形式介绍概念的选择,其在下面在详细描述中被进一步描述。本概述并非旨在识别所要求保护的主题的关键特征或必要特征,亦非旨在用于限制所要求保护的主题的范围。
描述了确定在图形处理系统的平铺单元内的图块和图元之间的关联的方法。该方法包括基于图块中的像素内的样本的位置确定图元是否落在图块内。如果基于图块中的像素内的样本的位置确定图元确实落在图块内,则可以存储数据以指示图元被确定为处于哪个图块中。例如,如果确定图元确实落在图块内,则可以将用于图元的标识符添加到用于图块的控制流,并且如果确定图元确实不落在图块内,则用于图元的标识符不被添加到用于图块的控制流。在可选示例中,图元和图块之间的关联可以以不同的方式存储。例如,在一些可选示例中,可以为每个图元存储图块列表,其中对于图元的图块列表包括其中存在图元的图块的图块ID。描述各种不同的方法以进行确定,并且这些方法可以单独地或以任何组合来使用。
第一方面提供了一种在图形处理系统的平铺单元内处理图元的方法,该方法包括:基于图块中的像素内的样本的位置来确定图元是否落在图块内,所述确定包括:生成在图元的边缘和图块的边界之间的交叉点;通过用交叉点替换在图块外部的图元的顶点来在图块内形成子多边形;以及确定子多边形是否与图块内的样本位置的任一个重叠,从而确定图元是否落在图块内;以及响应于基于图块中的像素内的样本的位置确定图元确实落在图块内,存储在图块和图元之间的关联以指示图元存在于图块中。
第二方面提供了一种图形处理系统,其包括用于处理对于多个图块中的每一个的图元的平铺单元,平铺单元被配置为:通过下列操作基于图块中的像素内的样本的位置来确定图元是否落在图块内:生成在图元的边缘和图块的边界之间的交叉点;通过用交叉点替换在图块外部的图元的顶点来在图块内形成子多边形;以及确定子多边形是否与在图块内的样本位置中的任一个重叠,从而确定图元是否落在图块内;以及响应于基于在图块中的像素内的样本的位置确定图元确实落在图块内,使在图块和图元之间的关联被存储以指示图元存在于图块中。
第三方面提供了一种集成电路制造系统,其包括:非暂时性计算机可读存储介质,其上存储有描述图形处理系统的集成电路的计算机可读描述;布局处理系统,其被配置为处理集成电路描述,以便生成体现图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造图形处理系统,其中图形处理系统包括用于处理对于多个图块中的每一个的图元的平铺单元,平铺单元被配置为:通过下列操作基于样本在图块中的像素内的位置来确定图元是否落在图块内:生成在图元的边缘和图块的边界之间的交叉点;通过用交叉点替换在图块外部的图元的顶点来在图块内形成子多边形;以及确定子多边形是否与在图块内的样本位置中的任一个重叠,从而确定图元是否落在图块内;以及响应于基于在图块中的像素内的样本的位置确定图元确实落在图块内,使在图块和图元之间的关联被存储以指示图元存在于图块中。
实现本文描述的一种或多种方法的图形处理系统可以体现在集成电路上的硬件中。可以提供在集成电路制造系统处制造图形处理系统的方法,该图形处理系统实现本文所述的一种或多种方法。可以提供集成电路定义数据集,其在集成电路制造系统中被处理时配置系统以制造实现本文描述的一种或多种方法的图形处理系统。可以提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,该计算机可读描述在被处理时使布局处理系统生成在集成电路制造系统中使用的电路布局描述以制造实现本文所述的一种或多种方法的图形处理系统。
可以提供一种集成电路制造系统,其包括:非暂时性计算机可读存储介质,其上存储有描述实现本文所述的一种或多种方法的图形处理系统的计算机可读集成电路描述;布局处理系统,其被配置为处理集成电路描述,以便生成体现实现本文所述的一种或多种方法的图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,其被配置为制造根据电路布局描述来实现本文描述的一种或多种方法的图形处理系统。
可以提供用于执行如本文所述的方法的计算机程序代码。可以提供非暂时性计算机可读存储介质,其上存储有计算机可读指令,该计算机可读指令在计算机系统处被执行时使计算机系统执行如本文所述的方法。
以上特征可在适当时被组合,如对技术人员将明显的,并可与本文所述的示例的任何方面组合。
附图简述
现在将参考附图详细描述示例,在附图中:
图1是图形处理系统的示意图;
图2示出了在渲染空间的图块中的图元;
图3显示了界定图元的边缘的边缘线;
图4是在GPU的平铺单元中生成用于图块的控制流的第一示例方法的流程图;
图5是示出了示例图元及其关于一个或多个图块的位置的示意图;
图6是示出了在像素内的样本位置的示意图;
图7是在GPU的平铺单元中生成用于图块的控制流的第二示例方法的流程图;
图8是示出了示例图元及其关于一个或多个图块的位置的示意图;
图9是评估图元的方法的流程图,并且该方法的部分可以在图7和图10的方法中使用。
图10是在GPU的平铺单元中生成用于图块的控制流的第三示例方法的流程图。
图11是示出示例图元及其关于一个或多个图块的位置的示意图;
图12是示出示例图元以及它们关于一个或多个图块的位置的示意图;
图13是示出示例图元以及它们关于一个或多个图块的位置的示意图;
图14是在GPU的平铺单元中生成用于图块的控制流的第四示例方法的一部分的流程图;
图15是在GPU的平铺单元中生成用于图块的控制流的第四示例方法的一部分的流程图;
图16是示出示例图元以及它们关于一个或多个图块的位置的示意图;
图17是在GPU的平铺单元中生成用于图块的控制流的第五示例方法的流程图;
图18示出了图形处理系统在其中被实现的计算机系统;以及
图19示出了用于生成体现图形处理系统的集成电路的集成电路制造系统。
附图显示了各种示例。本领域技术人员将认识到,附图中所示的元素边界(例如,框、框组或其他形状)表示边界的一个示例。在一些示例中可能的是,一个元素可以被设计为多个元素,或者多个元素可以被设计为一个元素。共同的参考数字在全部附图中在适当的场合用于指示相似的特征。
详细描述
通过举例的方式提供以下描述,以使本领域技术人员能够制造和使用本发明。本发明不限于本文描述的实施方式,并且对所公开的实施方式的各种修改对于本领域技术人员将是明显的。实施方式将仅作为例子被描述。
如上所述,GPU内的平铺单元接收图元,并确定在图形处理系统的渲染空间的图块的每一个内存在哪些图元。平铺单元输出可用于指示图元在哪个图块内的数据。如果确定图元存在于图块中,则存储在图元和图块之间的关联,从而指示图元存在于图块中。在本文描述的大多数示例中,平铺单元输出用于每个图块的控制流(其也可以被称为控制列表或显示列表),其中控制流包括对于存在于图块中的图元的一个或多个图元标识符(ID)。然而,应当理解,在一些其他示例中,指示在图元和图块之间的关联的数据(即,哪些图元中存在哪些图块中)可以采用不同的形式,例如,对于每个图元,可以存储指示其中存在图元的图块的图块ID的列表。存储在图元和图块之间的关联的这个可选方式可在立即模式渲染器中特别有用。
本文描述了用于确定是否在用于图块的控制流中包括图元ID的多种方法,并且这些方法可以彼此独立地实现,或者这些方法中的任意两个或更多个可以一起实现。方法(其也可以被称为用于形成控制流的方法)可以在平铺单元内实现,并且本文也描述了改进的平铺单元(其实现了方法中的任意一个或多个)。
本文描述的方法基于在图块中的像素内的多个样本点的位置确定图元是否落在该图块内。如本文所描述的基于每个图块(其中每像素可能有一个或多个样本点)的样本点的位置的分析减少了被包括在用于图块的控制流中但其在从存储器中取出后随后在渲染单元(例如,在光栅化期间)中被丢弃的图元ID的数量。渲染单元被配置为确定在图块内的样本位置处的渲染值,并且如果图元与样本位置重叠,则图元可能与样本位置处的渲染相关。
在组合了本文描述的两种或更多种方法的情况下,只有那些在第一种方法中被识别为需要被添加到用于图块的控制流的图元(即,使用第一种方法未从控制流中被排除的那些图元)被馈送到下一个方法(例如,作为候选图元的集合的成员)。一旦方法已经识别出图元不需要被添加到用于图块的控制流,则不执行对图元的进一步分析。对此的例外是图元被划分成多个子多边形,且在这种示例中,每个子多边形被单独测试。一旦方法基于多个子多边形中的一个识别出子多边形不需要被添加到用于图块的控制流,则不执行对该子多边形的进一步分析;然而,作为对由图元形成的子多边形中的另一个的分析的结果,图元的ID仍然可以被添加到用于图块的控制流。如果在图块中需要子多边形中的任何一个或多个,则将划分为多个子多边形的图元添加到用于图块的控制流。
最初被包括在图块的控制流中但然后在渲染单元中(例如,在光栅化期间)被取出和丢弃的那些图元可以被称为“非贡献图元”或“不可见图元”,因为它们对图块的渲染输出没有影响。本文描述的方法和装置减少了被包括在用于图块的控制流中的非贡献图元的数量。
通过使用本文描述的方法减少包括在用于图块的控制流中的非贡献图元的数量,减少了渲染单元中的不必要的工作量(即,渲染单元取出较少的非贡献图元,所以在GPU和系统存储器之间传输的数据量减少),并且随着三角形尺寸的减小,处理负载时成比例的节省增加。实验结果表明,通过一起使用本文描述的三种方法(例如,如图17所示),可以减少包括在控制流中的图元的数量,并且由渲染单元取出并随后丢弃的非贡献图元的百分比在一些示例中可以减少10的数量级的倍数(在有许多小图元的示例中看到最显著的改进)。
图1所示的图形处理系统100可以用于实现本文所述的示例的方法。如上所述,图形处理系统100是基于图块的延迟渲染图形处理系统,其包括GPU 102和两个部分的存储器1041和1042。如上所述,两个部分的存储器1041和1042可以是或可以不是同一物理存储器的部件,并且存储器1041和1042都可以位于“片外”,即不在与GPU 102相同的芯片上。存储器(1041和1042)与GPU 102之间的通信可以通过系统100中的通信总线发生。GPU 102包括预处理模块106、平铺单元108和渲染单元110。平铺单元108包括处理逻辑112和数据储存器114,并且渲染单元110包括隐藏面消除(HSR)模块116和纹理化/阴影化模块118。
在操作中,图形处理系统100接收描述图元序列的图形数据(例如,来自应用)。预处理模块106执行诸如几何处理的功能,包括剪切和剔除以去除不落入可见视图内的图元。预处理模块106还可以将图元投影到屏幕空间中。预处理模块106将图元输出到平铺单元108。
平铺单元108确定在图形处理系统100的渲染空间的图块的每个图块内存在哪些图元。平铺单元108的处理逻辑112执行平铺单元108的操作(包括使用本文所述的方法中的一种或多种方法来确定是否在用于图块的控制流中包括图元ID),并且数据储存器114存储平铺过程的中间结果数据,如平铺计算和部分填充控制流的结果。处理逻辑112可以用特别设计用于执行平铺单元108的操作的专用硬件来实现。可选地,可以通过在处理器上执行软件来实现处理逻辑112,其中软件被写入使得当它被执行时,它使处理器执行平铺单元108的操作。
在各种示例中,一旦用于渲染器的所有图元都被平铺,控制流就是完整的,并且它们被传递到片外存储器1041以便存储在其中。在其他示例中,平铺单元108可能不使用内部储存器(诸如,储存器114)来存储控制流,并且替代地,当平铺被执行时,图元标识符可以被直接写入到存储器1041中的控制流。此外,在一些另外的示例中,内部储存器114可以被实现在平铺单元108中,但是内部储存器114可能没有大到足以一次就存储下用于所有图块的所有控制流。因此,可以使用内部储存器114来收集平铺结果,其然后可以在平铺被执行时分块(chunks)地(或“成批地(batches)”)被写入存储器1041。这当图元被写入存储器1041中的不同控制流时可以避免低效的存储器访问模式。
渲染单元110然后可以根据控制流来渲染图块的每个中的图元。为了渲染用于图块的图元,渲染单元110从用于图块的存储器1041取回控制流。然后,渲染单元110可以取回由控制流指示为当前正被渲染的图块中的图元。可以从存储器1041取回这些图元。渲染单元110然后渲染在图块中的图元。在图1所示的例子中,渲染单元110实现延迟渲染,从而在纹理化和/或阴影化之前执行隐藏面消除,但是在其他示例中,可以实现非延迟渲染。渲染的结果然后被输出并接着传递到存储器1042以用于例如存储在帧缓冲器中。渲染单元110处理图块的每一个中的图元,并且当整个图像已被渲染并存储在存储器1042中时,图像可以从图形处理系统100输出并且例如显示在显示器上。
可以参考图4-6来描述确定图元是否应该与图块相关联(例如,图元ID是否应该被添加到用于图块的控制流)的第一种方法。如上所述,这种方法可以在平铺单元108中实现。
如图4的流程图所示,以样本精度生成图块508的边界框506(块402),并且这在图5中的第一图示51中以图形示出。如图5所示,图块508中的所有样本502形成小于图块边界的边界框506,并且该边界框506可以被称为图块中的“受限样本边界框”。样本点可以例如在以16.4定点格式(即,有16个整数位,后跟4个小数位)的1/16像素精度下,而屏幕上的X和Y坐标的表示可以是16.8定点格式(即,有16个整数位,后跟8个小数位)。
该方法然后考虑候选图元的集合(其包括所有图元,或可选地,该集合可以是包括所有图元的集合的真子集)中的每个图元,并且对于集合中的每个图元510,在正被使用的样本精度下例如以16.8定点格式生成图元的边界框512(块404)。然后确定两个边界块506、512是否重叠(块406),并且如果它们重叠(块406中的“是”),则将对于图元510的ID添加到用于图块的控制流(块408)。
如图4所示,该方法可以遍历(iterate through)候选图元的集合中的每个图元,以生成用于图块的控制流,然后一旦对特定图块考虑了集合中的所有图元(在块410中的“是”),则该方法就可以重复直到为每个图块生成控制流为止(在块412中的“是”)。然而,应当认识到,可以并行地执行该方法的方面(例如,可以并行地考虑一些或所有的图块),并且候选图元的集合对所有图块可以是相同的(例如,其中候选集合包括所有图元),或者对于不同的图块或图块组可以是不同的。该方法可以可选地遍历每个图块,以在需要时向每个图块控制流添加图元,然后一旦为特定图元考虑了所有图块,就可以重复该方法,直到所有图元都被考虑到为止。
使用图4所示的方法,图元510不被添加到用于图块A和B中的任一个的控制流。这与将图元的ID添加到用于图块A和图块B的控制流的已知方法相反(因为边界框512与用于图块A(被表示为508的)和图块B的图块区域重叠,即使图元的边界框不覆盖图块中的任何样本点。
可以基于在像素内的样本和像素的边界之间的距离来确定以样本精度的图块的边界框的生成(在块402中),并且这在图5中的第二图示52中更具体地示出。如图5所示,Delta Xl(其也可以被写为ΔXl)是在像素的左边界与像素内的所有样本的最小X值之间的距离,Delta Xr(其也可以被写为ΔXr)是在像素的右边界和像素内的所有样本的最大X值之间的距离。类似地,Delta Yt(其也可以被写为ΔYt)是顶部像素边界上的距离,并且Delta Yb(其也可以被写为ΔYb))是在底部像素边界上的距离。尽管图5示出了每像素多个样本位置,但是在其他示例中,每像素可能只有单个样本位置。
给定由四个参数定义的图块边界,这四个参数定义了图块沿着两个垂直轴(X和Y)的最大和最小外延,TileXmin、TileXmax、TileYmin、TileYmax(即,使得图块的四个角具有都在像素精度(整数格式)下的坐标(TileXmin,TileYmax),(TileXmax,TileYmax),(TileXmax,TileYmin)和(TileXmin,TileYmin)),在样本精度(例如,16.8格式)下的图块的边界框由四个参数定义:TileXmin+ΔXl、TileXmax-ΔXr、TileYmin+ΔYt、TileYmax-ΔYb,它们定义了以样本精度的图块的边界框沿着两个垂直轴的最大和最小外延。
如果在样本精度(如在块404中所确定的)下的图元的边界框由四个参数PrimXmin、PrimXmax、PrimYmin、PrimYmax(其再次定义边界框沿着两个垂直轴的最大和最小外延)定义,如果以下条件满足,则边界框不重叠(在块406中的“否”),即,图元不被认为在图块中:
PrimXmax<(TileXmin+ΔXl)或
PrimXmin>(TileXmax-ΔXr)或
PrimYmax<(TileYmin+ΔYt)或
PrimYmin>(TileYmax-ΔYb)。
使用图4所示的方法从控制流中消除图元被执行而不必计算图元中任一个的边缘方程。在这种方法与其他方法(例如,已知方法和/或本文所述的其他方法)结合使用的情况下,可以首先使用该方法来消除一个或多个图元,并且因此避免其原本将被执行以计算最终被丢弃的图元的边缘方程的计算工作量,这是因为它对所渲染的输出没有影响(例如,如图17所示)。
在图5所示的示例中,样本502的数量和每个像素504内的样本位置相同。如果样本数量和/或样本位置在像素之间不同,则仍然可以使用图4的方法,如可以参考图6所描述的。在图6所示的示例中,使用了“最差情况”样本位置,即定义在样本精度602下的边界框,其被保证包含图块中的所有像素中的所有样本位置,且如果以下条件满足,则边界框不重叠(在块406中的“否”),即图元不被认为是在图块中:
PrimXmax<(TileXmin+ΔXl最小)或
PrimXmin>(TileXmax-ΔXr最小)或
PrimYmax<(TileYmin+ΔYt最小)或
PrimYmin>(TileYmax-ΔYb最小)
其中:
ΔXl最小=min(L1,L2,...)
ΔXr最小=min(R1,R2,...)
ΔYt最小=min(T1,T2,...)
ΔYb最小=min(B1,B2,...)
其中,Lx、Rx、Tx、Bx是从样本位置x到像素的边缘中的每一个的距离(如图6所示)。
在图6所示的方法的可选方案中,如果存在具有不同数量的样本和/或不同样本位置的像素的不同的真子集,则可以生成以样本精度的用于图块的多个边界框(在块402中),即,对于每个真子集有一个边界框,且如果以下条件满足,则边界框不重叠(在块406中的“否”),即图元不被认为是在图块中:
PrimXmax<(TileXmin+ΔXlx)或
PrimXmin>(TileXmax-ΔXrx)或
PrimYmax<(TileYmin+ΔYtx)或
PrimYmin>(TileYmax-ΔYbx)
其中,ΔXlx、ΔXrx、ΔYtx、ΔYbx是对于子集X的值。
可以参考图7-9来描述确定图元是否应该与图块相关联(例如,图元ID是否应该被添加到用于图块的控制流)的第二种方法。该方法与上面参考图4-6所述的方法相比需要额外的处理,但是导致额外的非贡献图元没有被添加到控制流。如下所述,两种方法可以一起使用(例如,第二种方法所考虑的图元的候选集合可以仅包括在第一种方法中被识别为需要添加到用于图块的控制流的那些图元)。该方法可以在平铺单元108中实现。
如图7的流程图所示,生成在图元(例如,三角形)的边缘之间的交叉点(块702)。参考图8所示的图元802(具有顶点V0、V1、V2),这些交叉点为Va和Vb。可以使用图元(例如,三角形)的边缘的线方程来生成在三角形边缘和图块边界之间的交叉点(在块702中)。尽管参考作为三角形的图元描述了该方法,但该方法也可用于其它图元类型(例如,四边形和线)。
参考图8所示的示例,在V0和V1之间的边缘的方程可以具有Ax+By+C=0的形式。当边缘与左图块边界Xtileleft交叉时,则交叉点的坐标为:
Xintersec=Xtileleft
Yintersec=-(C+A*Xtileleft)/B
当边缘与右图块边界Xtileright交叉时,则交叉点的坐标为:
Xintersec=Xtileright
Yintersec=-(C+A*Xtileright)/B
当边缘与上图块边界Ytiletop交叉时,则交叉点的坐标为:
Xintersec=-(C+B*Ytiletop)/A
Yintersec=Ytiletop
当边缘与下图块边界Ytilebottom交叉时,则交叉点的坐标为:
Xintersec=-(C+B*Ytilebottom)/A
Yintersec=Ytilebottom
一旦已经生成交叉点(在块702中),则使用交叉点来代替在图块外的顶点,以在图块内形成子多边形(块704)。再次参考图8所示的示例,交叉点Va替换顶点V1,并且交叉点Vb替换顶点V2,因为V1和V2都在图块A之外。
以样本精度生成对于子多边形(具有顶点V0、Va、Vb)的边界框804(块706),并且对照图块中的样本位置测试子多边形的该样本精度边界框(块708)。只有当子多边形804的边界框与至少一个样本位置重叠(在块708中的“是”)时,对于图元802的ID才被添加到用于图块的控制流(块408),从而使图元802与图块相关联。
可以使用在GB专利No 2401522中描述且在图9(其对应于GB2401522中的图10)中所示的方法的一部分来执行子多边形的边界框是否与样本中的任一个重叠的确定(块708)。首先使用子多边形804的边界框来识别图块中的四个像素采样地点{S00,S01,S10,S11}(块80),如下所示:
S00=(sx最小,sy最小)
S01=(sx最大,sy最小)
S10=(sx最小,sy最大)
S11=(sx最大,sy最大)
其中,x和x是标准“向下取整”和“向上取整”算子。
然后可以确定子多边形804的边界框是否错过了图块中的所有样本地点,例如在图块A中的所有样本地点(块81),且如果其为是(在块81中的“是”,其对应于图7的块708中的“否”),那么对于图元802的ID不被包括在用于图块的控制流中(即,图元被剔除,使用图9所示的术语),且图9的方法不会相对于该特定图元和该特定图块进一步进行(尽管该方法可以在图7的方法的后续迭代中针对相同的图元但不同的图块例如图块B重复)。可以使用测试来确定子多边形的边界框是否错过了图块中的所有四个采样地点(在块81中):
如果(Sx最小>Sx最大或Sy最小>Sy最大),则为错过。
如果子多边形804的边界框没有错过图块中(例如图块A中)的所有样本地点(块81中的“否”,其对应于图7的块708中的“是”),则对于图元802的ID被包括在用于图块的控制流中(块408,其中图9中的其余的方法块未被使用),或者进一步使用如下参考图9-11所述的第三种方法进行测试。
如图7所示,该方法可以遍历候选图元的集合(其可以包括所有图元,或者可选地,该集合可以是包括所有图元的集合的真子集,并且可以例如使用如上文参考图4-6所描述的第一种方法生成)中的每个图元来生成用于图块的控制流,且然后一旦对该特定图块考虑了在集合中的所有图元(在块410中的“是”),该方法就可以重复直到已经为每个图块生成了控制流为止(在块412中的“是”)。然而,应当认识到,可以并行地执行该方法的方面(例如,可以并行地考虑一些或所有的图块),并且候选图元的集合对于所有图块可以是相同的(例如,其中候选集合包括所有图元)或者可以对于不同的图块(例如,其中使用上面参考图4-6描述的第一种方法生成候选集合)或图块组可以是不同的。该方法可以可选地遍历每个图块,以在需要时向每个图块控制流添加图元,且然后一旦为特定图元考虑了所有图块,则可以重复该方法,直到所有图元都被考虑到为止。
使用图7所示的方法,图元802不被添加到用于图块A的控制流。这与已知方法相反,该已知方法将图元的ID添加到用于图块A的控制流,即使图元的边界框不覆盖图块中的任何样本点(例如,因为对于整个图元802的边界框覆盖图块A中的四个样本位置)。
在图7所示的方法中且如上所述,在图元边缘和图块边界之间生成交叉点(在块702中)。在该方法的变型中,交叉点可以替代地以样本精度在图块的边界框和图元边缘之间生成(例如,如在图4的块402中生成的)。这导致较小的子多边形(如在块704中生成的)和子多边形的较小边界框(如在块706中生成的);然而,否则,该方法如上所述继续进行。该方法可以在GPU的平铺单元中实现。
可以参考图9-11来描述确定图元是否应该与图块相关联(例如,图元ID是否应该被添加到用于图块的控制流)的第三种方法。该方法与上面参考图4-6和图7-9描述的方法相比需要额外的处理,但是导致额外的非贡献图元未被添加到控制流。如下所述,该方法可以结合上述方法中的任一种或两种来实现。
如图10的流程图所示,生成在图元(例如,三角形)的边缘和图块边界之间的交叉点(块702)。参考图11所示的图元1102(具有顶点V0、V1、V2),这些交叉点为Va和Vb。可以使用图元(例如,三角形)的边缘的线方程来生成在三角形边缘和图块边界之间的交叉点(在块702中)。可以使用上面参考图8描述的方法来生成这些交叉点(在块702中)。如上所述,虽然参考作为三角形的图元描述了该方法,但是该方法也可以用于其它图元类型(例如,四边形和线)。
一旦已经生成交叉点(在块702中),就使用交叉点代替图块外的顶点以在图块内形成子多边形(块704)。再次参考图11所示的示例,交叉点Va替换顶点V1,并且交叉点Vb替换顶点V2,因为V1和V2都在图块A之外。对于子多边形(具有顶点V0、Va、Vb)的边界框1104以样本精度生成(块706)。
然后对照子多边形的原始边缘(其中原始边缘是子多边形的边缘,其也是子多边形从中被形成的图元的边缘的至少一部分)来测试在子多边形的边界框1104内的样本点的每一个,以查看子多边形内是否有任何样本点(块1007)。新的边缘(在图11所示的示例中的顶点Va和Vb之间)不需要被测试,因为该边缘位于图块A的边界上,所以图块A内的所有样本位置将在子图元的这个新边缘内。只有当在子多边形内有样本点(块1008中的“是”)时,对于图元1102的ID才被包括在用于图块的控制流中(块408)。如果在子多边形内没有样本点(块1008中的“否”),则ID不被包括在用于图块的控制流中。
可以使用在GB专利No.2401522中描述的并在图9中示出的方法的另一部分来执行对照边界块1104中的样本位置的原始边缘的测试(在块1007中);然而,与GB 2401522的描述中的不同,在图10的方法中,所检查的边缘是子多边形的原始边缘,而不是如在GB专利No.2401522中的来自三角形的所有边缘。
计算对于子多边形的原始边缘的每一个的边缘参数(块85),且然后对照每个边缘测试在子多边形1104的边界框内的每个采样点(块86),并且如果样本中的任一个通过(在块87中的“是”,其对应于在块1008中的“是”),即,使得样本中的任一个都在子多边形内,则将图元1102的ID添加到用于图块的控制流(在块408中)。
对于边缘i的边缘参数被表示为Ai、Bi、Ci,并且取决于边缘的端点(即,边缘方程式是Aix+Biy+Ci=0)。如果这些端点被表示为(xi,yi)和(xi+1,yi+1),则:
Ai=yi-yi+1
Bi=xi+1-xi
Ci=xiyi+1-xi+1yi
并且对于边缘和对于四个不同采样地点Sx最小,Sx最大,Sy最小,Sy最大(如上定义的)的四个测试不等式为:
AiSx最小+BiSy最小+Ci≥0
计算出的(在块85中)边缘参数仅与子多边形的原始边缘有关,而与对应于图块的边缘的新添加的边缘(例如,在Va和Vb之间)无关。当计算边缘参数(在块85中)时,可以使用图元的整个边缘(即,在图元的原始顶点之间,例如对于在图11所示的示例中在V0和V1之间的一个边缘和在V2和V0之间的第二边缘)或者可以使用子多边形的边缘(例如,对于在图11所示的示例中在V0和Va之间的一个边缘以及在Vb和V0之间的第二边缘)。
通过重复使用在如上所述的GB2401522中描述的方法的部分,可以重复使用在平铺单元内的现有硬件。这减少了实现本文描述的方法所需的额外硬件的数量,并从而减少了实现本文所述方法的硬件的尺寸和功耗。
对照边缘方程测试样本位置(在图9的块86中,其连同块85一起对应于图10的块1007)在对应于X和Y坐标的16.8定点格式的降低的精度下而不是在如光栅化过程中的全精度浮点下完成,以简化并加快在硬件中的计算。由于在该方法中使用降低的精度,所以可能在计算中引入误差。当三角形相对小时,降低的精度是安全的,因此在来自三角形顶点的迭代中的累积误差受到限制,如在GB2401522中的方法被设计成用于测试在跨越几个像素内的小三角形。由于在三角形的顶点之间的插值的计算中累积效应,所引入的误差对于较大的图元比对于较小的图元成比例地更大。因此,对于较小的图元,可以使用原始顶点来计算边缘参数(在块85中),并且对于较大的图元,可以替代地使用交叉点(如在块702中生成的)。可以针对整个图元(例如,基于图元是否覆盖小于预定数量的图块,诸如小于4×4图块)或者可以在逐边缘的基础上(例如,基于边缘的长度是否超过预定义的阈值)来做出关于要使用哪些顶点(即,原始顶点或交叉点)的决定。
如图10所示,该方法可以遍历候选图元的集合中的每个图元以生成用于图块的控制流,且然后一旦为特定图块考虑了在集合中的所有图元(在块410中的“是”),该方法就可以重复直到为每个图块生成控制流(在块412中的“是”)为止。然而,应当认识到,该方法的方面可以并行执行(例如,可以并行地考虑一些或全部图块)。该方法可以可选地遍历每个图块,以在需要时向每个图块控制流添加图元,且然后一旦为特定图元考虑了所有的图块,就可以重复该方法,直到所有图元都被考虑到为止。
候选的图元集合可以包括所有图元,或者可选地,该集合可以是包括所有图元的集合的真子集,并且可以例如使用如上参考图4-6所述的第一种方法和/或如上参考图7-9所述的第二种方法来生成。候选图元的集合对于所有图块(例如,其中候选集合包括所有图元)可以是相同的,或者对于不同的图块(例如,其中使用上面参考图4-6描述的第一种方法和/或如上参考图7-9所述的第二种方法来生成候选集合)或图块组可以是不同的。
使用图10所示的方法,图元1102不被添加到用于图块A的控制流。这与将图元的ID添加到用于图块A的控制流的已知方法相反。
在图10所示和上面所述的方法中,在图元边缘和图块边界之间生成交叉点(在块702中)。在该方法的变型中,交叉点可以替代地在样本精度(例如,如在图4的块402中生成的)下在图元边缘和图块的边界框之间生成。这导致较小的子多边形(如在块704中生成的)和子多边形的较小边界框(如在块706中生成的),这可能导致对照图元边缘测试较少的样本点(在块1007中);然而,否则该方法如上所述继续进行。
在上面的图7和图10的方法的描述中,假设在每个像素中的样本点的布置相同(如上所述,在每个像素中可以有一个或多个样本点)。如果样本点的布置在每个像素中不相同,则图7和10的方法不受影响,并且可以如上所述实现,除非用于图块的样本精度边界框用于生成交叉点而不是实际的图块边界(在块702中)。在这种情况下,最差情况的样本位置可用于生成样本精度边界框(例如,如上参考图6所述)。
在图8和图11所示的示例中,有在图块A中的单个顶点V0和在同一图块边界上的两个交叉点(Va和Vb)。下面参考图16描述其中存在在图块A中的单个顶点以及在不同图块边界上的两个交叉点或多于两个交叉点的示例。
然而,在其他示例中,在图块内可以没有顶点,如在图12中的两个示例1201、1202和在图13中的第一示例1300中所示的。在第一示例1201中,存在两个交叉点Va和Vb,并且它们在相交于图块Vn的角处的图块边界上。这导致产生了具有顶点Va、Vn和Vb的三角形子多边形(在块704中),且然后该方法可以如在图7和图10中的任一个或两个中所示的和上面所述的继续进行。
在图12的第二示例1202中,存在四个交叉点Va、Vb、Vc和Vd,并且它们在相交于图块Vn的角处的图块边界上,并且子多边形是四边形而不是三角形。在子多边形是四边形(或者通常具有多于3个边缘)的各种示例中,图元的ID可以被添加到用于图块的控制流而无需进一步的考虑(例如,如图14和15所示和下面所述的)。可选地,具有多于三个边缘的子多边形可以被划分为两个或更多个三角形(例如,Va、Vc、Vb和Vc、Vd、Vb),并且这些三角形中的每一个可以作为子多边形馈送到图7和图10中的任一个或两个的方法中。作为同一图元的部分的子多边形可以被标记为使得清楚的是它们是同一图元的部分,并且,如果任何样本在由图元形成的两个或更多个子多边形中的任一个之内,则图元ID被包括在控制流中(或者图元以其他方式与图块相关联)。
如图13中的第一示例1300所示,可能没有在图块内的顶点且可能有位于图块的相对边界上的两个交叉点Va和Vb。在这样的示例中,图元的ID可以被添加到用于图块的控制流,或者可选地,图块内的子多边形(例如,Va、Vb、Vc、Vd)可以被划分为两个或更多个三角形(例如,Va、Vc、Vb和Va、Vd、Vb),并且这些三角形中的每一个可以作为子多边形馈送到图7和图10中的任一个或两个的方法中。作为同一图元的部分的子多边形可以被标记为使得清楚的是它们是同一图元的部分,如果任何样本在由图元形成的多边形的两个或更多个子多边形中的任一个内,则图元ID被包括在控制流中。
在图13所示的第二示例1301中,在图块A中存在两个顶点V0和V1。当图元被截断时(在块702和704中),这也导致作为具有顶点V0、V1、Va和Vb的四边形的子多边形。在各种示例中,在子多边形是四边形的情况下,图元的ID可以被添加到用于图块的控制流而无需进一步的考虑。可选地,四边形的子多边形然后可以被划分成两个三角形(例如,V0、V1、Va和V0、Va、Vb),并且这两个三角形都可以作为子多边形馈送到图7和图10中的任一个或两个的方法中。如上所述,作为同一图元的部分的两个子多边形可以被标记为使得清楚的是它们是同一图元的部分,如果任何样本在两个子多边形的任一个内,则图元ID被包括在控制流中。对于由子多边形(Va、Vb、V0、V1)形成的两个三角形(Va、Vb、V0)和(Va、V0、V1)中的每一个使用图10所示的方法,图元1302未被添加到用于图块A的控制流,即使子多边形三角形中的每一个的边界框覆盖了图块A中的两个样本点。相反,可以使用图10所示的方法来决定子多边形三角形的边界框中的两个样本点都位于子多边形之外(即,在由四边形的子多边形形成的三角形之外)。这与将图元1302的ID添加到用于图块A的控制流的已知方法相反。
图14和图15示出了组合图7和图10的方法连同与如上参考图12和图13所述的在图块中的顶点的数量有关的测试的示例方法的流程图。在该方法中,如果任何图元在图块中具有两个或更多个顶点(在块1402中的否),例如,如图13的示例1301所示,则图元的ID被添加到用于图块的控制流(块408),而没有进一步的考虑。然而,如上所述,可以可选地通过将子多边形(其可以是四边形)划分成多个三角形并然后将多个三角形(作为单独的但相关的子多边形)馈送到图15的方法中(例如,通过对于三角形中的每一个在块706处开始)来处理这样的图元。
如果图元具有在图块中的少于两个顶点(在块1402中的“是”,即在图块中有一个顶点或在图块中没有顶点),则生成在图元边缘和图块边界之间的交叉点(块702),如上所述。在该方法中,如果存在多于两个交叉点(在块1404中的“否”),则图元的ID被添加到用于图块的控制流(块408),而没有进一步的考虑,例如,对于图12中的示例1202,其没有在图块中的顶点且具有多于两个交叉点,该图元的ID被添加到用于图块的控制流(块408)而没有进一步的考虑。然而,如上所述,可以可选地通过将子多边形(其可以是四边形)划分成多个三角形并然后将多个三角形(作为单独的但相关的子多边形)馈送到图15的方法中(例如,通过对于三角形中的每一个在块706处开始)来处理这样的图元。
如果图元仅具有两个交叉点(在块1404中的“是”),则该方法根据在图块中只有一个顶点(在块1406中的“是”,然后是1408)还是在图块中没有顶点(在块1406中的“否”,然后是1410)来划分。
如图14所示,如果在图块中只有一个顶点(在块1406中的“是”)但是两个交叉点不在同一边界上(在块1408中的“否”)或者如果在图块中没有顶点(在块1406中的“否”)但是两个交叉点不在不同的图块边界上(在块1410中的“否”),则图元的ID被添加到控制流(在块408中)。另外,如果在图块中没有顶点(在块1406中的“否”),两个交叉点位于不同的图块边界上(在块1410中的“是”),但是这两个不同的边界没有在图元内的角处相遇(在块1412中的“否”),则图元的ID被添加到控制流(在块408中)。然而,如上所述,可以可选地通过将子多边形(其可以是四边形)划分成多个三角形并然后将多个三角形(作为单独的但相关的子多边形)馈送到图15的方法中(例如,通过对于三角形中的每一个在块706处开始)来处理这样的图元。
如果图元的ID尚未被添加到控制流,则该方法继续进行到示出来自图7和图10的一连串测试的图15。如上面参考图7所示的,使用交叉点来替换在图块外的顶点(块704),以在图块内部形成子多边形,且然后以样本精度生成子多边形的边界框(块706)。如果边界框与任何样本重叠(在块708中的“是”),则该方法继续进行到上面参考图10描述的测试,并且对照子多边形的边界框内的每个样本点测试子多边形的原始边缘(块1007)。如果在原始边缘内有任何样本点(在块1008中的“是”),则图元的ID被添加到用于图块的控制流(块408)。然而,如果边界框不与任何样本重叠(在块708中的“否”)或在原始边缘内没有样本点(在块1008中的“否”),则图元ID不被添加到控制流。
如图14所示,该方法可以遍历每个图元以生成用于图块的控制流,且然后一旦为特定图块考虑了所有图元(在块410中的“是”),就可以重复该方法直到为每个图块生成控制流(在块412中的“是”)为止。然而,将认识到,该方法的方面可以并行地执行(例如,可以并行地考虑一些或全部图块)。该方法可以可选地遍历每个图块以向每个被覆盖的图块的图块控制流添加图元,并且一旦为特定图元考虑了所有图块,就可以重复该方法直到所有图元都被考虑到为止。
图16示出了使用图14和图15的方法不能从图块A的控制流中消除的图元的另外两个示例1601、1602。在第一示例1601中,图元具有在图块A中的单个顶点V0(在块1402中的“是”)和仅仅两个交叉点Va和Vb(在块1404中的“是”)。然而,交叉点不在同一图块边界上(在块1406中的“是”,随后是在块1408中的“否”),且因此图元被包括在控制流中(在块408中)。在第二示例1602中,图元具有在图块A中的单个顶点V0(在块1402中的“是”)和四个交叉点Va、Vb、Vc和Vd(在块1404中的“否”),且因此图元被包括在控制流中(在块408中)。
如上所述,在示例1601、1602中的子多边形可以可选地每个被分成多个三角形,并且这些可以作为单独的(但链接的)图元全部被馈送到本文描述的方法中。
图17示出了组合上述所有方法的示例方法的流程图。上面参考图4描述的方法首先被应用(块1702与块1704对应于图4的块406中的测试)。如果该评估没有消除图元(在块1702中),即如果不能确定边界框不重叠(在块406中的“否”,其对应于在块1704中的“否”),则该方法继续进行图元的进一步评估。在图17所示的方法中,可以可选地使用被称为“完美平铺”的技术来消除图块中的一些另外的图元(块1708)。该技术也在GB2401522中(例如,该专利的图4中)被描述。完美平铺包括将图元的边缘方程与整数图块边界进行比较,以检查图块的角是否在图元内。在完美平铺中,没有样本点的比较,且评估是在图块边界的角处进行的。在图17所示的示例中,如果图元的边界框在X和/或Y方向上与仅仅一个图块重叠,则不执行完美平铺(在块1706中的“否”)。
作为完美平铺方法的一部分(在块1708中),计算图元的边缘方程,且然后在图元的后续评估中重复使用边缘方程(在块1712中)。图元样本精度边界框技术(块1702和图4)不需要边缘方程的计算,且因此在执行完美平铺(在块1708中)和/或本文描述的需要边缘方程的计算的其它方法之前消除一些图元(在块1704中)是有效的。
如果通过完美平铺评估消除了图元(在块1708中),则在被实现的情况下,该方法使用图14和图15所示的方法继续进行对图元的进一步评估(块1712与块1714对应于在块1402、1404、1408、1410、1412、708和1008中的决定点)。如上所述,该评估涉及边缘方程的使用(在块1007中),并且这些边缘方程可能已经被计算(在块1708中)。
如图17所示,该方法可以遍历每个图元以生成用于图块的控制流(块1718),且然后一旦对特定图块考虑了所有图元(在块1718中的“否”),该方法就可以被重复直到已经为每个图块生成控制流(在图17中未示出)为止。然而,将认识到,该方法的方面可以并行地执行(例如,可以并行地考虑一些或全部图块)。
在上述方法中,关于在像素内的采样点执行的任何测试仅识别任何样本位置是否在图元/子图元/边界框内。在许多实现中,没有确定哪个采样点落在图元/子图元/边界框内。也如上所述,每个像素可以包括单个采样点或者可以包括多个采样点,并且在降低的样本精度(例如,16.8格式)下执行分析。
在附图中示出的示例中,每个图元覆盖渲染空间内的至少一个样本位置,尽管在对于图块的非贡献图元的情况下,图元可能不覆盖在所考虑的特定图块内的样本位置(例如,在图8中,图元802不覆盖在图块A中的任何样本位置,但覆盖在图块B中的两个样本位置)。然而,在各种示例中,本文描述的方法可以用于不一定覆盖在渲染空间内的任何图块中的任何样本位置的图元。
如上所述,本文描述的方法可以在GPU中的改进的平铺单元中实现(例如,如图1所示)。这些方法可以在软件和/或硬件中实现,并且如上所述,在各种示例中,可以重复使用现有的硬件来执行本文描述的方法的元件。
通过使用本文描述的方法,减少了被添加到用于图块的控制流的图元的数量(并且特别是非贡献图元的数量)。这降低了在渲染单元内的后续操作中使用的效果,并且因此提高了总图形处理系统的效率。由于图元尺寸变小,可以使用本文描述的方法实现的效率节省被预期变得更大。
本文描述的方法在光栅化(其在图1中的渲染单元110内执行)之前执行。通过减少用于图块的控制流中的图元的数量,光栅化被简化。与光栅化不同,本文中描述的方法仅确定任何样本点是否在图元内,并且方法不知道哪个样本点在图元内(即,本文所述的方法在执行每样本分析之前消除图元)。光栅化在样本位置处渲染图像值。在基于图块的图形系统中,渲染单元可以使用用于图块的控制流来以逐个图块方式执行渲染,以识别与图块的渲染相关的图元。
在上述大多数示例中,图元通过将图元ID存储在用于图块的控制流中而与图块相关联。在其他示例中,可以不同地存储在图元和图块之间的关联,例如对于每个图元,可以存储图块列表,其包括图元存在于其中的图块的ID。
第一另外的示例提供了在图形处理系统的平铺单元内处理图元的方法,该方法包括:基于在图块中的像素内的样本的位置来确定图元是否落在图块内,所述确定包括:以样本精度生成图块的边界框;以及基于图块的所生成的边界框来确定图元是否落在图块内;以及响应于基于在图块中的像素内的样本的位置确定图元确定落在图块内,存储在图块和图元之间的关联以指示图元存在于图块中。
第一另外的示例可以另外包括以下特征中的一个或多个的任何组合:
·基于图块的所生成的边界框来确定图元是否落在图块内可以包括:以样本精度生成图元的边界框;确定边界框是否重叠;以及响应于确定边界框不重叠,确定图元不落在图块内。
·所述存储在图块和图元之间的关联可以包括将对于图元的标识符添加到用于图块的控制流。
·所述存储在图块和图元之间的关联可以包括将对于图块的标识符添加到用于图元的图块列表。
·该方法可以还包括使用所存储的关联渲染图块中的图元,其中在图块内的每个样本位置处执行渲染。
·可以在降低的样本精度下执行确定。
·基于在图块中的像素内的样本的位置来确定图元是否落在图块内还可以包括:生成在图元的边缘和图块的边界之间的任何交叉点;通过用交叉点替换在图块外部的图元的顶点来形成在图块内的子多边形;以样本精度生成子多边形的边界框;确定子多边形的边界框是否与在图块中的任何样本重叠;以及响应于确定子多边形的边界框与在图块中的任何样本重叠,确定图元落在图块内。
·生成在图元的边缘和图块的边界之间的任何交叉点可以包括:以样本精度生成在图元的边缘和图块的边界框的边缘之间的任何交叉点。
·通过用交叉点替换在图块外部的图元的顶点来形成在图块内的子多边形可以包括:通过用交叉点替换在图块外部的图元的顶点来形成在图块内的初始子多边形;以及如果初始子多边形具有多于三个顶点,则将初始子多边形划分成多个较小的子多边形,每个较小的子多边形具有仅三个顶点,并且其中为每个较小的子多边形以样本精度生成边界框,并且对于每个生成的边界框确定它是否与图块中的任何样本重叠。
·确定子多边形的边界框是否与图块中的任何样本重叠可以包括:使用子多边形的边界框识别图块中的四个采样地点;以及确定子多边形的边界框是否错过了在图块中的所有四个采样地点。
·基于在图块中的像素内的样本的位置来确定图元是否落在图块内还可以包括:生成在图元的边缘和图块的边界之间的任何交叉点;通过用交叉点替换在图块外部的图元的顶点来形成在图块内的子多边形;以样本精度生成子多边形的边界框;对照在子多边形的边界框中的每个样本点测试也是图元的边缘的部分的、子多边形的每个边缘,以确定任何样本点是否在子多边形内;以及响应于确定有任何样本点在子多边形内,确定图元落在图块内。
·生成在图元的边缘和图块的边界之间的任何交叉点可以包括:以样本精度生成在图元的边缘和图块的边界框的边缘之间的任何交叉点。
·通过用交叉点替换在图块外部的图元的顶点来形成在图块内的子多边形可以包括:通过用交叉点替换在图块外部的图元的顶点来形成在图块内的初始子多边形;以及如果初始子多边形具有多于三个顶点,则将初始子多边形划分成多个较小的子多边形,每个较小的子多边形具有仅三个顶点,并且其中为每个较小的子多边形以样本精度生成边界框,并且其中对照在子多边形的边界框中的每个样本点测试也是图元的边缘的部分的、子多边形的每个边缘以确定任何样本点是否在子多边形内包括:对于每个较小的子多边形,对照在较小的子多边形的边界框中的每个样本点测试也是图元的边缘的部分的、较小的子多边形的每个边缘,以确定任何样本点是否在较小的子多边形内。
·对照在子多边形的边界框中的每个样本点测试也是图元的边缘的部分的、子多边形的每个边缘以确定任何样本点是否在子多边形内可以包括:计算对于也是图元的边缘的部分的、子多边形的每个边缘的边缘参数;以及对照每个边缘测试在子多边形的边界框中的每个样本点。
·基于像素内的样本的位置来确定图元是否落在图块内还可以包括:确定图元的多少顶点落在图块内;响应于确定两个或更多个顶点落在图块内,确定图元落在图块内;响应于确定少于两个顶点落在图块内,生成在图元的边缘和图块的边界之间的任何交叉点;响应于生成多于两个交叉点,确定图元落在图块内;响应于对于在图块中仅仅具有一个顶点的图元生成恰好两个交叉点,并且其中交叉点位于图块的不同边界上,确定图元落在图块内;响应于对于在图块中没有顶点的图元生成恰好两个交叉点,并且其中交叉点位于图块的相同边界上或者图块的在图元内不交叉的不同边界上,确定图元落在图块内;以及响应于对于在图块中仅仅具有一个顶点的图元生成恰好两个交叉点,并且其中交叉点位于图块的相同边界上,并且响应于对于在图块中没有顶点的图元生成恰好生成两个交叉点,以及其中交叉点位于图块的在图元内交叉的不同边界上:通过用交叉点替换在图块外的图元的顶点来形成在图块内的子多边形;以样本精度生成子多边形的边界框;确定子多边形的边界框是否与在图块中的任何样本重叠;响应于确定子多边形的边界框与在图块中的任何样本重叠,确定图元落在图块内;响应于确定子多边形的边界框不与在图块中的任何样本重叠,对照在子多边形的边界框中的每个样本点测试也是图元的边缘的部分的、子多边形的每个边缘,以确定任何样本点是否在子多边形内;以及响应于确定有任何样本点在子多边形内,确定图元落在图块内。
第二另外的示例提供了一种图形处理系统,其包括用于处理对于多个图块中的每一个图块的图元的平铺单元,该平铺单元被配置为:通过下列操作基于在图块中的像素内的样本的位置来确定图元是否落在图块内:以样本精度生成图块的边界框;以及基于图块的所生成的边界框来确定图元是否落在图块内;并且响应于基于在图块中的像素内的样本的位置确定图元确实落在图块内,使在图块和图元之间的关联被存储以指示图元存在于图块中。
第二另外的示例可以另外包括以下特征中的一个或多个的任何组合:
·平铺单元可以被配置为通过下列操作基于图块的所生成的边界框来确定图元是否落在图块内:以样本精度生成图元的边界框;确定边界框是否重叠;以及响应于确定边界框不重叠,确定图元不落在图块内。
·平铺单元可以被配置为通过向用于图块的控制流添加对于图元的标识符来存储图块和图元之间的关联。
·平铺单元可以被配置为通过向对于图元的图块列表添加用于图块的标识符来存储图块和图元之间的关联。
·图形处理系统还可以包括渲染单元,其被配置为使用所存储的关联来渲染图块中的图元,其中在图块内的每个样本位置处执行渲染。
·平铺单元可以被配置为在降低的样本精度下确定图元是否落在图块内。
·平铺单元还可以被配置为基于在图块中的像素内的样本的位置通过以下操作来确定图元是否落在图块内:生成在图元的边缘和图块的边界之间的任何交叉点;通过用交叉点替换在图块外部的图元的顶点来形成在图块内的子多边形;以样本精度生成子多边形的边界框;确定子多边形的边界框是否与在图块中的任何样本重叠;以及响应于确定子多边形的边界框与在图块中的任何样本重叠,确定图元落在图块内。
·平铺单元还可以被配置成通过以下操作生成在图元的边缘和图块的边界之间的任何交叉点:以样本精度生成在图元的边缘和图块的边界框的边缘之间的任何交叉点。
·平铺单元还可以被配置为通过以下操作通过用交叉点替换在图块外部的图元的顶点来形成图块内部的子多边形:通过用交叉点替换在图块外部的图元的顶点来形成在图块内部的初始子多边形;并且如果初始子多边形具有多于三个顶点,则将初始子多边形划分成多个较小的子多边形,每个较小的子多边形具有仅仅三个顶点,并且其中对于每个较小的子多边形以样本精度生成边界框,并且对于每个生成的边界框确定它是否与图块中的任何样本重叠。
·平铺单元还可以被配置为通过以下操作来确定子多边形的边界框是否与图块中的任何样本重叠:使用子多边形的边界框来识别在图块中的四个采样地点;以及确定子多边形的边界框是否错过了在该图块中的所有四个采样地点。
·平铺单元还可以被配置为通过下列操作基于在图块中的像素内的样本的位置来确定图元是否落在图块内:生成在图元的边缘和图块的边界之间的任何交叉点;通过用交叉点替换在图块外部的图元的顶点来形成在图块内的子多边形;以样本精度生成子多边形的边界框;对照在子多边形的边界框中的每个样本点测试也是图元的边缘的部分的、子多边形的每个边缘,以确定任何样本点是否在子多边形内;以及响应于确定任何样本点在子多边形内,确定图元落在图块内。
·平铺单元还可以被配置成通过以下操作生成在图元的边缘和图块的边界之间的任何交叉点:以样本精度生成在图元的边缘和图块的边界框的边缘之间的任何交叉点。
·平铺单元还可以被配置成通过用交叉点替换在图块外部的图元的顶点来形成在图块内的子多边形,包括:通过用交叉点替换在图块外部的图元的顶点来形成在图块内部的初始子多边形;并且如果初始子多边形具有多于三个顶点,则将初始子多边形划分成多个较小的子多边形,每个较小的子多边形具有仅仅三个顶点,并且其中对于每个较小的子多边形以样本精度生成边界框,并且其中对照在子多边形的边界框中的每个样本点测试也是图元的边缘的部分的、子多边形的每个边缘以确定任何样本点是否在子多边形内包括:对于每个较小的子多边形,对照在较小的子多边形的边界框中的每个样本点测试也是图元的边缘的部分的、较小的子多边形的每个边缘,以确定任何样本点是否在较小的子多边形内。
·平铺单元还可以被配置成通过下列操作对照在子多边形的边界框中的每个样本点测试也是图元的边缘的部分的子多边形的每个边缘,以确定任何样本点是否在子多边形内:计算对于也是图元的边缘的部分的子多边形的每个边缘的边缘参数;并对照每个边缘测试在子多边形的边界框中的每个样本点。
·平铺单元还可以被配置为还通过下列操作基于在像素内的样本的位置来确定图元是否落在图块内:确定图元的多少个顶点落在图块内;响应于确定两个或更多个顶点落在图块内,确定图元落在图块内;响应于确定少于两个顶点落在图块内,生成在图元的边缘和图块的边界之间的任何交叉点;响应于生成多于两个交叉点,确定图元落在图块内;响应于对于在图块中具有仅仅一个顶点的图元生成恰好两个交叉点,并且其中交叉点位于图块的不同边界上,确定图元落在图块内;响应于对于在图块中没有顶点的图元生成恰好两个交叉点,并且其中交叉点位于图块的相同边界上或者图块的在图元内不交叉的不同边界上,确定图元落在图块内;并且响应于对于在图块中具有仅仅一个顶点的图元生成恰好两个交叉点,并且其中交叉点位于图块的相同边界上,以及响应于对于在图块中没有顶点的图元生成恰好两个交叉点,且其中交叉点位于图块的在图元内交叉的不同边界上:通过用交叉点替换在图块外的图元的顶点来形成在图块内的子多边形;以样本精度生成子多边形的边界框;确定子多边形的边界框是否与图块中的任何样本重叠;响应于确定子多边形的边界框与图块中的任何样本重叠,确定图元落在图块内;响应于确定子多边形的边界框不与该图块中的任何样本重叠,对照子多边形的边界框中的每个样本点测试也是图元的边缘的部分的子多边形的每个边缘,以确定任何样本点是否在子多边形内;并且响应于确定任何样本点在子多边形内,确定图元落在图块内。
图18示出了其中可以实现本文描述的图形处理系统和方法的计算机系统。计算机系统包括CPU 1802、GPU 102、存储器1806和诸如显示器1816、扬声器1818和摄像机1819的其他设备1814。在GPU 102上实现了实现本文描述的方法的一种或多种的平铺单元108。在其他示例中,平铺单元108可以在CPU 1802上实现。计算机系统的组件可以经由通信总线1820彼此通信。储存器1041被实现为存储器1806的部分。
图1的图形处理系统100被示为包括多个功能块。这仅仅是示意图,且并不意欲定义在这样的实体的不同逻辑元件之间的严格划分。可以以任何合适的方式提供每个功能块。应当理解,在这里描述为由功能块形成的中间值不需要在任何点处由功能块物理地生成,并且可以仅仅表示逻辑值,其方便地描述由图形处理系统在其输入端和输出端之间执行的处理。
本文描述的方法可以在集成电路上的硬件中实现。本文描述的图形处理系统可以被配置为执行本文所述的方法中的任一个。通常,上述功能、方法、技术或组件中的任何一个可以在软件、固件、硬件(例如,固定逻辑电路)中或其任意组合中实现。本文中可以使用术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”来通常表示软件、固件、硬件或其任何组合。在软件实现的情况下,模块、功能、组件、元件、单元、块或逻辑表示在处理器上被执行时执行指定任务的程序代码。本文描述的算法和方法可以由执行代码的一个或多个处理器执行,该代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或其他数据并可由机器访问的其它存储设备。
如本文所用的术语计算机程序代码和计算机可读指令指的是用于处理器的任何类型的可执行代码,包括用机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节码、定义集成电路的代码(诸如硬件描述语言或网表)以及以诸如C、Java或OpenCL等编程语言代码表示的代码。可执行代码可以是例如任何类型的软件、固件、脚本、模块或库,其在虚拟机或其他软件环境处被适当地执行、处理、解释、编译、执行时使可执行代码在其处被支持的计算机系统的处理器执行由代码指定的任务。
处理器、计算机或计算机系统可以是具有处理能力的任何种类的设备、机器或专用电路或其集合或部分,使得它可以执行指令。处理器可以是任何类型的通用或专用处理器,诸如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)、物理处理单元(PPU)、无线电处理单元(RPU)、数字信号处理器(DSP)、通用处理器(例如,通用GPU))、微处理器、被设计成加速在CPU外部的任务的任何处理单元等。计算机或计算机系统可以包括一个或多个处理器。本领域中的技术人员将认识到,这样的处理能力合并到很多不同的设备内,且因此术语“计算机”包括机顶盒、媒体播放器、数字无线电装置、PC、服务器、移动电话、个人数字助理和很多其它设备。
它还意欲包含定义如在本文描述的硬件的配置的软件,诸如HDL(硬件描述语言)软件,如用于设计集成电路或用于配置可编程芯片的,以实现期望功能。也就是说,可提供计算机可读存储介质,其具有在其上编码的以集成电路定义数据集的形式的计算机可读程序代码,计算机可读程序代码当在集成电路制造系统中被处理时配置系统以制造被配置成执行本文所述的任何方法的GPU,或制造包括本文所述的任何装置的GPU。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供在集成电路制造系统处制造如本文所述的图形处理系统的方法。此外,可以提供一种集成电路定义数据集,其在集成电路制造系统中被处理时使制造图形处理系统的方法被执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表、用于配置可编程芯片的代码、作为定义在任何级别处的集成电路的硬件描述语言,包括作为寄存器传送级(RTL)代码,作为诸如Verilog或VHDL的高级电路表示,以及作为诸如OASIS(RTM)和GDSII的低级电路表示。在逻辑上定义集成电路(诸如RTL)的较高级别表示可以在被配置用于在软件环境的上下文中生成集成电路的制造定义的计算机系统处被处理,其包括电路元件的定义和用于组合那些元件的规则以便生成由表示如此定义的集成电路的制造定义。如一般对在计算机系统处执行以便定义机器的软件的情况,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便使配置用于生成集成电路的制造定义的计算机系统执行定义集成电路的代码以便生成该集成电路的制造定义。
现在将参考图19描述在集成电路制造系统处处理集成电路定义数据集以便配置该系统来制造GPU的示例。
图19示出包括布局处理系统1904和集成电路生成系统1906的集成电路(IC)制造系统1902的示例。IC制造系统1902配置成接收IC定义数据集(例如,定义如在本文的任何示例中所述的GPU),处理IC定义数据集,并根据IC定义数据集(例如,其体现如在本文的任何示例中所述的GPU)生成IC。IC定义数据集的处理配置IC制造系统1902以制造体现如在本文的任何示例中所述的GPU的集成电路。
布局处理系统1904配置成接收并处理IC定义数据集以确定电路布局。从IC定义数据集确定电路布局的方法在本领域中是已知的,且例如可涉及合成RTL代码以例如从逻辑组件(例如,与非、或非、与、或、多路复用和触发器组件)方面确定待生成的电路的门级表示。可通过确定用于逻辑组件的位置信息从电路的门级表示确定电路布局。这可自动地或使用用户干预来完成,以便优化电路布局。当布局处理系统1904已经确定了电路布局时,它可将电路布局定义输出到IC生成系统1906。电路布局定义可以是例如电路布局描述。
IC生成系统1906根据电路布局定义生成IC,如在本领域中已知的。例如,IC生成系统1906可实现半导体器件制造过程以生成IC,这可涉及光刻和化学处理步骤的多步骤序列,在其其间,电子电路在由半导体材料制成的晶圆上被逐步创建。电路布局定义可以是掩模的形式,该掩模可在光刻过程中使用以用于根据电路定义生成IC。可选地,被提供到IC生成系统1906的电路布局定义可以以计算机可读代码的形式,IC生成系统1906可使用该计算机可读代码来形成适当的掩模以用于在生成IC时使用。
由IC制造系统1902执行的不同过程可以都在一个地点上例如由一方实现。可选地,IC制造系统1902可以是分布式系统,使得过程中的一些可在不同的地点处被执行,并可由不同方执行。例如,可在不同的地点和/或由不同方执行以下阶段中的一些:(i)合成表示IC定义数据集的RTL代码以形成待生成的电路的门级表示,(ii)基于门级表示来生成电路布局,(iii)根据电路布局形成掩模,以及(iv)使用掩模制造集成电路。
在其它示例中,在集成电路制造系统处对集成电路定义数据集的处理可配置系统以制造图形处理系统而无需处理IC定义数据集,以便确定电路布局。例如,集成电路定义数据集可定义可重配处理器(诸如FPGA)的配置,且该数据集的处理可配置IC制造系统以生成具有那个所定义的配置的可重配处理器(例如,通过将配置数据加载到FPGA)。
在一些实施方式中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文所述的设备。例如,以上面参考图19所述的方式通过集成电路制造定义数据集对集成电路制造系统的配置可以使如本文所述的设备被制造。
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上或与在数据集处定义的硬件组合来运行的软件。在图19所示的示例中,IC生成系统还可由集成电路定义数据集配置成在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上或以其他方式使用集成电路提供程序代码以与集成电路一起使用。
本文所述的方法可由配置有软件的计算机执行,该软件是以存储在有形存储介质上的机器可读形式,例如以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式,或以包括适合于当程序在计算机上运行时执行本文所述的任何方法的所有步骤的计算机程序代码工具的计算机程序的形式,且其中计算机程序可体现在计算机可读存储介质上。有形(或非暂时性)存储介质(其可能是易失性或非易失性的)的示例包括磁盘、拇指驱动器、存储卡、基于半导体的存储器,光学/磁性/相变存储器等,并且不包括传播信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或同时被执行。
对“逻辑”的特定引用指执行一种或多种功能的结构。逻辑的示例包括布置成执行那些功能的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。作为例子,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器(诸如寄存器)、触发器或锁存器、逻辑运算符(诸如布尔运算)、数学运算符(诸如加法器、乘法器或移位器)和互连的电路或结构。这样的元件可作为定制电路或标准单元库、宏或在其它抽象级处被提供。可在特定的布置中使这样的元件互连。逻辑可包括固定功能的电路,且电路可被编程以执行一种或多种功能;这样的编程可根据固件或软件更新或控制机制提供。被识别为执行一种功能的逻辑也可包括实现组成功能或子过程的逻辑。在示例中,硬件逻辑具有实现固定功能操作或多个操作、状态机或过程的电路。
本文给出的任何范围或设备值可扩展或改变而不失去所寻求的效应,如对技术人员将明显的。
将理解,上面描述的益处和优点可涉及一个实施方式或可涉及几个实施方式。实施方式不限于解决任何或所有所陈述的问题的那些实施方式或具有任何或全部所陈述的益处和优点的那些实施方式。
对“一个”项目的任何引用指那些项目中的一个或多个。术语“包括”在本文用于意指包括所识别的方法块或元件,但这样的块或元件并不包括排他列表,且装置可包含额外的块或元件,以及方法可包含额外的操作或元件。此外,块、元件和操作本身并不是隐含地封闭的。
本文描述的方法的步骤可在适当时以任何适当的顺序或同时被执行。在附图中的方框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或并行的多个步骤的执行。此外,单独的块可从任何方法中删除而不偏离本文描述的主题的精神和范围。上面描述的任何示例的方面可与所描述的其它示例中的任一个的方面组合以形成另外的示例,而不失去所寻求的效应。在附图的元件被示为由箭头连接的情况下,将认识到,这些箭头示出在元件之间的通信(包括数据和控制消息)的仅仅一个示例流。在元件之间的流可以在任一方向上或在两个方向上。
申请人特此独立公开了本文所述的每个单独特征以及两个或更多个这样的特征的任何组合,在以下的这种程度上,这些特征或组合能够根据本领域技术人员的一般普遍常识,基于作为整体的本说明书来执行,无论这些特征或特征的组合是否解决了本文公开的任何问题。鉴于以上描述,对于本领域技术人员将明显的是,可以在本发明的范围内进行各种修改。
在下文的一个或多个实施方案中可实现本公开的各方面。
1)一种在图形处理系统的平铺单元内处理图元的方法,所述方法包括:
基于在图块中的像素内的样本位置来确定图元是否落在所述图块内,所述确定包括:
生成在所述图元的边缘和所述图块的边界之间的交叉点;
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形;以及
确定所述子多边形是否与所述图块内的所述样本位置中的任一个重叠,从而确定所述图元是否落在所述图块内;以及
响应于基于在所述图块中的像素内的样本位置确定图元确实落在所述图块内,存储在所述图块和所述图元之间的关联,以指示所述图元存在于所述图块中。
2)根据1)所述的方法,其中,所述存储在所述图块和所述图元之间的关联包括将对于所述图元的标识符添加到用于所述图块的控制流。
3)根据1)所述的方法,其中,所述存储在所述图块和所述图元之间的关联包括将对于所述图块的标识符添加到用于所述图元的图块列表。
4)根据1)所述的方法,还包括使用所存储的关联来渲染在所述图块中的图元,其中所述渲染在所述图块内的每个样本位置处执行。
5)根据1)所述的方法,其中,所述确定所述图元是否落在所述图块内以降低的样本精度执行。
6)根据1)-5)中的任一项所述的方法,其中,所述确定所述子多边形是否与所述图块内的所述样本位置中的任一个重叠包括:
生成所述子多边形的边界框;以及
基于所述子多边形的所述边界框来确定所述图元是否落在所述图块内。
7)根据6)所述的方法,其中,基于所述子多边形的所述边界框来确定图元是否落在图块内包括:
确定所述子多边形的所述边界框是否与所述图块中的任何样本重叠;以及
响应于确定所述子多边形的所述边界框与所述图块中的任何样本重叠,确定所述图元落在所述图块内。
8)根据7)所述的方法,其中,生成在所述图元的边缘和所述图块的边界之间的交叉点包括:
以样本精度生成所述图块的边界框;以及
以样本精度生成在所述图元的边缘和所述图块的所述边界框的边缘之间的交叉点。
9)根据7)所述的方法,其中,通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形包括:
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的初始子多边形;以及
如果所述初始子多边形具有多于三个顶点,则将所述初始子多边形划分成多个较小子多边形,每个较小子多边形具有仅仅三个顶点,
以及其中,对于每个较小的子多边形以样本精度生成边界框,并且对于每个生成的边界框确定它是否与所述图块中的任何样本重叠。
10)根据7)所述的方法,其中,确定所述子多边形的所述边界框是否与所述图块中的任何样本重叠包括:
使用所述子多边形的所述边界框识别在所述图块中的四个采样地点;以及
确定所述子多边形的所述边界框是否错过了在所述图块中的所有四个采样地点。
11)根据6)所述的方法,其中,基于所述子多边形的所述边界框来确定图元是否落在图块内包括:
对照在所述子多边形的所述边界框中的每个样本点测试也是所述图元的边缘的部分的、所述子多边形的每个边缘以确定任何样本点是否在所述子多边形内;以及
响应于确定有任何样本点在所述子多边形内,确定所述图元落在所述图块内。
12)根据11)所述的方法,其中,生成在所述图元的边缘和所述图块的边界之间的交叉点包括:
以样本精度生成所述图块的边界框;以及
以样本精度生成在所述图元的边缘和所述图块的所述边界框的边缘之间的任何交叉点。
13)根据11)所述的方法,其中,通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形包括:
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的初始子多边形;以及
如果所述初始子多边形具有多于三个顶点,则将所述初始子多边形划分成多个较小的子多边形,每个较小的子多边形具有仅仅三个顶点,
以及其中,对于每个较小的子多边形以样本精度生成边界框,并且其中对照在所述子多边形的所述边界框中的每个样本点测试也是所述图元的边缘的部分的、所述子多边形的每个边缘以确定任何样本点是否在所述子多边形内包括:
对于每个较小的子多边形,对照在所述较小的子多边形的所述边界框中的每个样本点测试也是所述图元的边缘的部分的、所述较小的子多边形的每个边缘以确定任何样本点是否在所述较小的子多边形内。
14)根据11)所述的方法,其中,对照在所述子多边形的所述边界框中的每个样本点测试也是所述图元的边缘的部分的、所述子多边形的每个边缘以确定任何样本点是否在所述子多边形内包括:
计算对于也是所述图元的边缘的部分的、所述子多边形的每个边缘的边缘参数;以及
对照每个边缘测试在所述子多边形的所述边界框中的每个样本点。
15)根据1)所述的方法,其中,基于在图块中的像素内的样本位置来确定图元是否落在图块内还包括:
以样本精度生成所述图块的边界框;
以样本精度生成所述图元的边界框;
确定所述图块的边界框和所述图元的边界框是否重叠;以及
响应于确定所述图块的边界框和所述图元的边界框不重叠,确定所述图元不落在所述图块内。
16)根据1)-5)中的任一项所述的方法,其中,基于在像素内的样本位置来确定图元是否落在图块内包括:
确定所述图元的多少个顶点落在所述图块内;
响应于确定两个或更多个顶点落在所述图块内,确定所述图元落在所述图块内;
响应于确定少于两个顶点落在所述图块内,生成在所述图元的边缘和所述图块的边界之间的任何交叉点;
响应于生成多于两个交叉点,确定所述图元落在所述图块内;
响应于对于在所述图块中具有仅仅一个顶点的图元生成恰好两个交叉点,并且其中所述交叉点在所述图块的不同边界上,确定所述图元落在所述图块内;
响应于对于在所述图块中没有顶点的图元生成恰好两个交叉点,并且其中所述交叉点在所述图块的相同边界上或者在所述图块的在所述图元内不交叉的不同边界上,确定所述图元落在所述图块内;以及
响应于对于在所述图块中具有仅仅一个顶点的图元生成恰好两个交叉点,并且其中所述交叉点在所述图块的相同边界上,以及响应于对于在所述图块中没有顶点的图元生成恰好两个交叉点,并且其中所述交叉点在所述图块的在所述图元内交叉的不同边界上:
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形;
以样本精度生成所述子多边形的边界框;
确定所述子多边形的所述边界框是否与所述图块中的任何样本重叠;
响应于确定所述子多边形的所述边界框与所述图块中的任何样本重叠,确定所述图元落在所述图块内;
响应于确定所述子多边形的所述边界框不与所述图块中的任何样本重叠,对照在所述子多边形的所述边界框内的每个样本点测试也是所述图元的边缘的部分的、所述子多边形的每个边缘,以确定任何样本点是否在所述子多边形内;以及
响应于确定有任何样本点在所述子多边形内,确定所述图元落在所述图块内。
17)根据16)所述的方法,还包括:在确定所述图元的多少个顶点落在所述图块内之前:
以样本精度生成所述图块的边界框;
以样本精度生成所述图元的边界框;以及
确定所述图块的边界框和所述图元的边界框是否重叠;以及
仅响应于确定所述图块的边界框和所述图元的边界框重叠,确定所述图元的多少个顶点落在所述图块内。
18)一种图形处理系统,其包括用于处理对于多个图块中的每一个图块的图元的平铺单元,所述平铺单元被配置为:
通过以下操作基于在所述图块中的像素内的样本位置来确定图元是否落在所述图块内:
生成在所述图元的边缘和所述图块的边界之间的交叉点;
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形;以及
确定所述子多边形是否与所述图块内的所述样本位置中的任一个重叠,从而确定所述图元是否落在所述图块内;以及
响应于基于在所述图块中的像素内的样本位置确定所述图元确实落在所述图块内,使在所述图块和所述图元之间的关联被存储以指示所述图元存在于所述图块中。
19)根据18)所述的图形处理系统,其中,所述平铺单元被配置为通过以下操作来确定所述子多边形是否与所述图块内的所述样本位置中的任一个重叠:
生成所述子多边形的边界框;以及
基于所述子多边形的所述边界框来确定所述图元是否落在所述图块内。
20)一种在集成电路制造系统处制造根据18)或19)所述的图形处理系统的方法。
21)一种集成电路制造系统,包括:
非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质具有在其上存储的描述图形处理系统的集成电路的计算机可读描述;
布局处理系统,所述布局处理系统被配置为处理所述集成电路的计算机可读描述,以便生成体现所述图形处理系统的集成电路的电路布局描述;以及
集成电路生成系统,所述集成电路生成系统被配置为根据所述电路布局描述来制造所述图形处理系统,
其中,所述图形处理系统包括用于处理对于多个图块中的每一个图块的图元的平铺单元,所述平铺单元被配置为:
通过以下操作基于在图块中的像素内的样本位置来确定图元是否落在图块内:
生成在所述图元的边缘和所述图块的边界之间的交叉点;
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形;以及
确定所述子多边形是否与所述图块内的所述样本位置中的任一个重叠,从而确定所述图元是否落在所述图块内;以及
响应于基于在图块中的像素内的样本位置确定图元确实落入所述图块内,使在所述图块和所述图元之间的关联被存储以指示所述图元在所述图块中存在。
Claims (21)
1.一种在图形处理系统的平铺单元内处理图元的方法,所述方法包括:
基于在图块中的像素内的样本位置来确定图元是否落在所述图块内,所述确定包括:
生成在所述图元的边缘和所述图块的边界之间的交叉点;
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形;以及
确定所述子多边形是否与所述图块内的所述样本位置中的任一个重叠,从而确定所述图元是否落在所述图块内;以及
响应于基于在所述图块中的像素内的样本位置确定图元确实落在所述图块内,存储在所述图块和所述图元之间的关联,以指示所述图元存在于所述图块中。
2.根据权利要求1所述的方法,其中,所述存储在所述图块和所述图元之间的关联包括将对于所述图元的标识符添加到用于所述图块的控制流。
3.根据权利要求1所述的方法,其中,所述存储在所述图块和所述图元之间的关联包括将对于所述图块的标识符添加到用于所述图元的图块列表。
4.根据权利要求1所述的方法,还包括使用所存储的关联来渲染在所述图块中的图元,其中所述渲染在所述图块内的每个样本位置处执行。
5.根据权利要求1所述的方法,其中,所述确定所述图元是否落在所述图块内以降低的样本精度执行。
6.根据权利要求1-5中的任一项所述的方法,其中,所述确定所述子多边形是否与所述图块内的所述样本位置中的任一个重叠包括:
生成所述子多边形的边界框;以及
基于所述子多边形的所述边界框来确定所述图元是否落在所述图块内。
7.根据权利要求6所述的方法,其中,基于所述子多边形的所述边界框来确定图元是否落在图块内包括:
确定所述子多边形的所述边界框是否与所述图块中的任何样本重叠;以及
响应于确定所述子多边形的所述边界框与所述图块中的任何样本重叠,确定所述图元落在所述图块内。
8.根据权利要求7所述的方法,其中,生成在所述图元的边缘和所述图块的边界之间的交叉点包括:
以样本精度生成所述图块的边界框;以及
以样本精度生成在所述图元的边缘和所述图块的所述边界框的边缘之间的交叉点。
9.根据权利要求7所述的方法,其中,通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形包括:
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的初始子多边形;以及
如果所述初始子多边形具有多于三个顶点,则将所述初始子多边形划分成多个较小子多边形,每个较小子多边形具有仅仅三个顶点,
以及其中,对于每个较小的子多边形以样本精度生成边界框,并且对于每个生成的边界框确定它是否与所述图块中的任何样本重叠。
10.根据权利要求7所述的方法,其中,确定所述子多边形的所述边界框是否与所述图块中的任何样本重叠包括:
使用所述子多边形的所述边界框识别在所述图块中的四个采样地点;以及
确定所述子多边形的所述边界框是否错过了在所述图块中的所有四个采样地点。
11.根据权利要求6所述的方法,其中,基于所述子多边形的所述边界框来确定图元是否落在图块内包括:
对照在所述子多边形的所述边界框中的每个样本点测试也是所述图元的边缘的部分的、所述子多边形的每个边缘以确定任何样本点是否在所述子多边形内;以及
响应于确定有任何样本点在所述子多边形内,确定所述图元落在所述图块内。
12.根据权利要求11所述的方法,其中,生成在所述图元的边缘和所述图块的边界之间的交叉点包括:
以样本精度生成所述图块的边界框;以及
以样本精度生成在所述图元的边缘和所述图块的所述边界框的边缘之间的任何交叉点。
13.根据权利要求11所述的方法,其中,通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形包括:
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的初始子多边形;以及
如果所述初始子多边形具有多于三个顶点,则将所述初始子多边形划分成多个较小的子多边形,每个较小的子多边形具有仅仅三个顶点,
以及其中,对于每个较小的子多边形以样本精度生成边界框,并且其中对照在所述子多边形的所述边界框中的每个样本点测试也是所述图元的边缘的部分的、所述子多边形的每个边缘以确定任何样本点是否在所述子多边形内包括:
对于每个较小的子多边形,对照在所述较小的子多边形的所述边界框中的每个样本点测试也是所述图元的边缘的部分的、所述较小的子多边形的每个边缘以确定任何样本点是否在所述较小的子多边形内。
14.根据权利要求11所述的方法,其中,对照在所述子多边形的所述边界框中的每个样本点测试也是所述图元的边缘的部分的、所述子多边形的每个边缘以确定任何样本点是否在所述子多边形内包括:
计算对于也是所述图元的边缘的部分的、所述子多边形的每个边缘的边缘参数;以及
对照每个边缘测试在所述子多边形的所述边界框中的每个样本点。
15.根据权利要求1所述的方法,其中,基于在图块中的像素内的样本位置来确定图元是否落在图块内还包括:
以样本精度生成所述图块的边界框;
以样本精度生成所述图元的边界框;
确定所述图块的边界框和所述图元的边界框是否重叠;以及
响应于确定所述图块的边界框和所述图元的边界框不重叠,确定所述图元不落在所述图块内。
16.根据权利要求1-5中的任一项所述的方法,其中,基于在像素内的样本位置来确定图元是否落在图块内包括:
确定所述图元的多少个顶点落在所述图块内;
响应于确定两个或更多个顶点落在所述图块内,确定所述图元落在所述图块内;
响应于确定少于两个顶点落在所述图块内,生成在所述图元的边缘和所述图块的边界之间的任何交叉点;
响应于生成多于两个交叉点,确定所述图元落在所述图块内;
响应于对于在所述图块中具有仅仅一个顶点的图元生成恰好两个交叉点,并且其中所述交叉点在所述图块的不同边界上,确定所述图元落在所述图块内;
响应于对于在所述图块中没有顶点的图元生成恰好两个交叉点,并且其中所述交叉点在所述图块的相同边界上或者在所述图块的在所述图元内不交叉的不同边界上,确定所述图元落在所述图块内;以及
响应于对于在所述图块中具有仅仅一个顶点的图元生成恰好两个交叉点,并且其中所述交叉点在所述图块的相同边界上,以及响应于对于在所述图块中没有顶点的图元生成恰好两个交叉点,并且其中所述交叉点在所述图块的在所述图元内交叉的不同边界上:
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形;
以样本精度生成所述子多边形的边界框;
确定所述子多边形的所述边界框是否与所述图块中的任何样本重叠;
响应于确定所述子多边形的所述边界框与所述图块中的任何样本重叠,确定所述图元落在所述图块内;
响应于确定所述子多边形的所述边界框不与所述图块中的任何样本重叠,对照在所述子多边形的所述边界框内的每个样本点测试也是所述图元的边缘的部分的、所述子多边形的每个边缘,以确定任何样本点是否在所述子多边形内;以及
响应于确定有任何样本点在所述子多边形内,确定所述图元落在所述图块内。
17.根据权利要求16所述的方法,还包括:在确定所述图元的多少个顶点落在所述图块内之前:
以样本精度生成所述图块的边界框;
以样本精度生成所述图元的边界框;以及
确定所述图块的边界框和所述图元的边界框是否重叠;以及
仅响应于确定所述图块的边界框和所述图元的边界框重叠,确定所述图元的多少个顶点落在所述图块内。
18.一种图形处理系统,其包括用于处理对于多个图块中的每一个图块的图元的平铺单元,所述平铺单元被配置为:
通过以下操作基于在所述图块中的像素内的样本位置来确定图元是否落在所述图块内:
生成在所述图元的边缘和所述图块的边界之间的交叉点;
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形;以及
确定所述子多边形是否与所述图块内的所述样本位置中的任一个重叠,从而确定所述图元是否落在所述图块内;以及
响应于基于在所述图块中的像素内的样本位置确定所述图元确实落在所述图块内,使在所述图块和所述图元之间的关联被存储以指示所述图元存在于所述图块中。
19.根据权利要求18所述的图形处理系统,其中,所述平铺单元被配置为通过以下操作来确定所述子多边形是否与所述图块内的所述样本位置中的任一个重叠:
生成所述子多边形的边界框;以及
基于所述子多边形的所述边界框来确定所述图元是否落在所述图块内。
20.一种在集成电路制造系统处制造根据权利要求18或19所述的图形处理系统的方法。
21.一种集成电路制造系统,包括:
非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质具有在其上存储的描述图形处理系统的集成电路的计算机可读描述;
布局处理系统,所述布局处理系统被配置为处理所述集成电路的计算机可读描述,以便生成体现所述图形处理系统的集成电路的电路布局描述;以及
集成电路生成系统,所述集成电路生成系统被配置为根据所述电路布局描述来制造所述图形处理系统,
其中,所述图形处理系统包括用于处理对于多个图块中的每一个图块的图元的平铺单元,所述平铺单元被配置为:
通过以下操作基于在图块中的像素内的样本位置来确定图元是否落在图块内:
生成在所述图元的边缘和所述图块的边界之间的交叉点;
通过用所述交叉点替换在所述图块外部的所述图元的顶点来形成在所述图块内的子多边形;以及
确定所述子多边形是否与所述图块内的所述样本位置中的任一个重叠,从而确定所述图元是否落在所述图块内;以及
响应于基于在图块中的像素内的样本位置确定图元确实落入所述图块内,使在所述图块和所述图元之间的关联被存储以指示所述图元在所述图块中存在。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211455606.5A CN115828828A (zh) | 2016-04-29 | 2017-04-28 | 用于图块的控制流的生成 |
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1607528.5 | 2016-04-29 | ||
GB1607524.4A GB2549787B (en) | 2016-04-29 | 2016-04-29 | Generation of a control stream for a tile |
GB1607526.9 | 2016-04-29 | ||
GB1607526.9A GB2549788B (en) | 2016-04-29 | 2016-04-29 | Generation of a control stream for a tile |
GB1607524.4 | 2016-04-29 | ||
GB1607528.5A GB2549789B (en) | 2016-04-29 | 2016-04-29 | Generation of a control stream for a tile |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211455606.5A Division CN115828828A (zh) | 2016-04-29 | 2017-04-28 | 用于图块的控制流的生成 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107341283A CN107341283A (zh) | 2017-11-10 |
CN107341283B true CN107341283B (zh) | 2022-11-29 |
Family
ID=58632853
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710296232.XA Active CN107341283B (zh) | 2016-04-29 | 2017-04-28 | 用于图块的控制流的生成 |
CN202211455606.5A Pending CN115828828A (zh) | 2016-04-29 | 2017-04-28 | 用于图块的控制流的生成 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211455606.5A Pending CN115828828A (zh) | 2016-04-29 | 2017-04-28 | 用于图块的控制流的生成 |
Country Status (3)
Country | Link |
---|---|
US (4) | US10140761B2 (zh) |
EP (1) | EP3249612B1 (zh) |
CN (2) | CN107341283B (zh) |
Families Citing this family (14)
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 |
EP3249612B1 (en) * | 2016-04-29 | 2023-02-08 | Imagination Technologies Limited | Generation of a control stream for a tile |
US10033482B2 (en) * | 2016-08-03 | 2018-07-24 | Samsung Electronics Co., Ltd | System and method for providing interference parameter estimation for multi-input multi-output (MIMO) communication system |
US10930086B2 (en) | 2016-11-01 | 2021-02-23 | Dg Holdings, Inc. | Comparative virtual asset adjustment systems and methods |
US10275941B2 (en) * | 2016-11-01 | 2019-04-30 | Dg Holdings, Inc. | Multi-layered depth and volume preservation of stacked meshes |
GB2570172B (en) | 2018-06-29 | 2020-02-12 | Imagination Tech Ltd | Conservative Rasterization Using Gradients |
GB2580179B (en) * | 2018-12-21 | 2021-08-18 | Imagination Tech Ltd | Tile-based scheduling |
CN110599962B (zh) * | 2019-09-23 | 2020-10-23 | 深圳清华大学研究院 | 不同颜色序列Delta型子像素显示面板的渲染方法 |
CN110866965A (zh) * | 2019-11-14 | 2020-03-06 | 珠海金山网络游戏科技有限公司 | 一种三维模型的贴图绘制方法及装置 |
GB2591803B (en) | 2020-02-07 | 2022-02-23 | Imagination Tech Ltd | Graphics processing method and system for rendering items of geometry based on their size |
GB2591802B (en) | 2020-02-07 | 2022-03-23 | Imagination Tech Ltd | Graphics processing method and system for rendering items of geometry based on their size |
GB2586297B (en) * | 2020-02-10 | 2022-03-02 | Imagination Tech Ltd | Data structures, methods and tiling engines for storing tiling information in a graphics processing system |
CN113256479A (zh) | 2020-02-13 | 2021-08-13 | 畅想科技有限公司 | 用于在图形处理系统中平铺图元的方法和平铺引擎 |
CN111127299A (zh) * | 2020-03-26 | 2020-05-08 | 南京芯瞳半导体技术有限公司 | 一种加速光栅化遍历的方法、装置及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103886633A (zh) * | 2012-12-20 | 2014-06-25 | 想象技术有限公司 | 基于图块的计算机图形渲染中细分面数据的面片 |
CN104103084A (zh) * | 2013-04-02 | 2014-10-15 | 想象技术有限公司 | 基于图块的图形 |
CN105139330A (zh) * | 2014-05-29 | 2015-12-09 | 想象技术有限公司 | 向图元块分配图元 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6597636B1 (en) | 1995-12-12 | 2003-07-22 | Frank T. Marchello | Alcohol-tobacco electronic perpetual calendar |
US6771264B1 (en) * | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
US20050212806A1 (en) * | 2002-05-10 | 2005-09-29 | Metod Koselj | Graphics engine converting individual commands to spatial image information, and electrical device and memory incorporating the graphics engine |
GB0307095D0 (en) * | 2003-03-27 | 2003-04-30 | Imagination Tech Ltd | Improvements to a tiling system for 3d rendered graphics |
US7400325B1 (en) | 2004-08-06 | 2008-07-15 | Nvidia Corporation | Culling before setup in viewport and culling unit |
US8212840B2 (en) * | 2006-10-23 | 2012-07-03 | Qualcomm Incorporated | 3-D clipping in a graphics processing unit |
GB2469525A (en) * | 2009-04-17 | 2010-10-20 | Advanced Risc Mach Ltd | Graphics Filled Shape Drawing |
US8692829B2 (en) * | 2009-10-05 | 2014-04-08 | Nvidia Corporation | Calculation of plane equations after determination of Z-buffer visibility |
US8704836B1 (en) * | 2009-10-19 | 2014-04-22 | Nvidia Corporation | Distributing primitives to multiple rasterizers |
US9495781B2 (en) * | 2012-06-21 | 2016-11-15 | Nvidia Corporation | Early sample evaluation during coarse rasterization |
GB2511817A (en) | 2013-03-14 | 2014-09-17 | Imagination Tech Ltd | Rendering in computer graphics systems |
US9754344B2 (en) * | 2014-06-27 | 2017-09-05 | Samsung Electronics Co., Ltd. | Forward late predictive rendering in a graphics system |
EP3249612B1 (en) * | 2016-04-29 | 2023-02-08 | Imagination Technologies Limited | Generation of a control stream for a tile |
US10949319B2 (en) | 2018-07-25 | 2021-03-16 | EMC IP Holding Company LLC | Performance monitoring and enhancement |
US10832371B2 (en) * | 2018-12-28 | 2020-11-10 | Intel Corporation | Unified architecture for BVH construction based on hardware pre-sorting and a parallel, reconfigurable clustering array |
US11321910B2 (en) * | 2019-04-04 | 2022-05-03 | Intel Corporation | Apparatus and method for reduced precision bounding volume hierarchy construction |
GB2591802B (en) * | 2020-02-07 | 2022-03-23 | Imagination Tech Ltd | Graphics processing method and system for rendering items of geometry based on their size |
-
2017
- 2017-04-25 EP EP17168096.0A patent/EP3249612B1/en active Active
- 2017-04-27 US US15/499,038 patent/US10140761B2/en active Active
- 2017-04-28 CN CN201710296232.XA patent/CN107341283B/zh active Active
- 2017-04-28 CN CN202211455606.5A patent/CN115828828A/zh active Pending
-
2018
- 2018-10-16 US US16/162,182 patent/US10733796B2/en active Active
-
2020
- 2020-07-15 US US16/929,226 patent/US11410385B2/en active Active
-
2022
- 2022-07-29 US US17/877,648 patent/US11954803B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103886633A (zh) * | 2012-12-20 | 2014-06-25 | 想象技术有限公司 | 基于图块的计算机图形渲染中细分面数据的面片 |
CN104103084A (zh) * | 2013-04-02 | 2014-10-15 | 想象技术有限公司 | 基于图块的图形 |
CN105139330A (zh) * | 2014-05-29 | 2015-12-09 | 想象技术有限公司 | 向图元块分配图元 |
Non-Patent Citations (1)
Title |
---|
消除用VBA编程连续插入图块造成图形重叠的方法;王钰;《青岛大学学报(自然科学版)》;19990930(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115828828A (zh) | 2023-03-21 |
EP3249612A3 (en) | 2017-12-13 |
US20220366650A1 (en) | 2022-11-17 |
US20170316604A1 (en) | 2017-11-02 |
CN107341283A (zh) | 2017-11-10 |
US20190051047A1 (en) | 2019-02-14 |
US20200342666A1 (en) | 2020-10-29 |
US10140761B2 (en) | 2018-11-27 |
US11410385B2 (en) | 2022-08-09 |
EP3249612A2 (en) | 2017-11-29 |
US10733796B2 (en) | 2020-08-04 |
EP3249612B1 (en) | 2023-02-08 |
US11954803B2 (en) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341283B (zh) | 用于图块的控制流的生成 | |
US11481951B2 (en) | Graphics processing method and system for rendering items of geometry based on their size | |
US20210279936A1 (en) | Graphics processing method and system for rendering items of geometry based on their size | |
US11562533B2 (en) | Assembling primitive data into multi-view primitive blocks in a graphics processing system | |
EP3333806B1 (en) | Tiling a primitive in a graphics processing system | |
GB2549789A (en) | Generation of a control stream for a tile | |
US20230351669A1 (en) | Rendering optimisation by recompiling shader instructions | |
US11710263B2 (en) | Rasterising aliased lines | |
GB2549787A (en) | Generation of a control stream for a tile | |
US11676323B2 (en) | Controlling rendering operations by shader buffer identification | |
GB2549788A (en) | Generation of a control stream for a tile |
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 |