CN110660069A - 保守光栅化 - Google Patents
保守光栅化 Download PDFInfo
- Publication number
- CN110660069A CN110660069A CN201910562437.7A CN201910562437A CN110660069A CN 110660069 A CN110660069 A CN 110660069A CN 201910562437 A CN201910562437 A CN 201910562437A CN 110660069 A CN110660069 A CN 110660069A
- Authority
- CN
- China
- Prior art keywords
- pixel
- hardware
- output
- edge
- micro
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- 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/20—Perspective computation
- G06T15/205—Image-based rendering
-
- 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
- G06T17/205—Re-meshing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computing Systems (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
描述了一种保守光栅化硬件,其包括硬件逻辑,所述硬件逻辑被布置成对图元的每个边缘和微瓦片中的每个像素的每个角执行边缘测试计算。对于特定像素和边缘,通过在OR门中组合所述像素的所述四个角和所述特定边缘的所述边缘测试结果来确定外部覆盖结果。对于特定像素和边缘,通过在AND门中组合所述像素的所述四个角和所述特定边缘的所述边缘测试结果来确定内部覆盖结果。通过在AND门中组合所述像素和所述图元的每个所述边缘的所述外部覆盖结果来计算所述像素和所述图元的整体外部覆盖结果。以类似的方式计算所述像素的所述整体内部覆盖结果。
Description
背景技术
在计算机图形学中,表示场景中的物体的一组表面被划分为多个更小和更简单的片段(称为图元),通常是三角形,其更易于渲染。得到的分割表面通常是原始表面的近似,但是这种近似的精确度可以通过增大生成的图元的数量来改善,这通常又会反过来导致图元更小。细分量通常由细节水平(LOD)来决定。因此,通常使用更大数量的图元,其中需要更高的细节水平,例如,因为物体更靠近观察者和/或物体具有更复杂的形状。然而,使用更多数量的三角形增加了渲染场景所需的处理工作量,因此增大了执行处理的硬件的尺寸。此外,随着平均三角形尺寸减小,混叠(例如,当成角度的线看起来呈锯齿状时)更频繁地发生,因此图形处理系统采用抗混叠技术,其通常涉及每个像素取几个样本并随后对数据进行过滤。
随着生成的图元数量的增大,图形处理系统处理图元的能力变得更加重要。一种提高图形处理系统效率的已知方法是以基于瓦片的方式来渲染图像。以这种方式,将要渲染图元的渲染空间划分为多个瓦片,然后瓦片可以彼此独立地渲染。基于瓦片的图形系统包括用于将图元分块的分块单元,即,为图元确定图元处于渲染空间中的哪些瓦片。然后,当渲染单元渲染瓦片时,可以给其提供指示应该使用哪些图元来渲染瓦片的信息(例如,每瓦片列表)。
基于瓦片的渲染的替代方案是立即模式渲染。在这样的系统中,没有分块单元生成每个瓦片列表,并且每个图元显得立即渲染;然而,即使在这样的系统中,渲染空间仍然可以被划分为像素瓦片,并且每个图元的渲染仍然可以逐个瓦片地进行,在一个瓦片中的每个像素被处理完之后才前进到下一个瓦片。这样做是为了改善存储器引用的局部性。
以下描述的实施方案仅作为示例提供,并不限制解决已知图形处理流水线的任何或所有缺点的实现方式。
发明内容
提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
描述了一种图形处理流水线,其包括保守光栅化硬件。保守光栅化硬件包括硬件逻辑,其被布置成对图元的每个边缘以及微瓦片中的每个像素的每个角并行地执行边缘测试计算。然后,计算每个像素的内部和外部覆盖结果。对于特定像素和特定边缘,通过在OR门中组合像素的四个角和特定边缘的边缘测试结果来确定外部覆盖结果。对于特定像素和特定边缘,通过在AND门中组合像素的四个角和特定边缘的边缘测试结果来确定内部覆盖结果。通过在AND门中组合像素和图元的每个边缘的外部覆盖结果来计算像素和图元的整体外部覆盖结果。以类似的方式计算像素的整体内部覆盖结果。该硬件精确地执行覆盖测试。
第一方面提供了被布置成在渲染空间中进行渲染的图形处理流水线,其中渲染空间被细分成多个瓦片,每个瓦片被细分成多个微瓦片,每个微瓦片包括相同的像素布置,图形处理流水线包括保守光栅化硬件,并且其中保守光栅化硬件包括:多个第一硬件子单元,每个第一硬件子单元被布置成,针对图元的不同边缘,计算边缘的外部覆盖结果,针对微瓦片中每个像素的边缘,计算内部覆盖结果;以及多个第二硬件子单元,每个第二硬件子单元被布置成,针对微瓦片中的不同像素,计算图元的外部覆盖结果和图元的内部覆盖结果,其中每个第一硬件子单元包括:边缘测试计算硬件,其被布置成,针对微瓦片中的像素的每个角,计算指示像素角是否在边缘的左侧的值;多个OR逻辑块,每个OR逻辑块被布置成执行OR运算,对于微瓦片中的每个像素各一个OR逻辑块,并且每个OR逻辑块被布置成从边缘测试计算硬件接收四个值作为输入,像素的每个角各一个值,并且其中OR逻辑块的输出是像素和边缘的外部覆盖结果;以及第一多个AND逻辑块,每个AND逻辑块被布置成执行AND运算,对于微瓦片中的每个像素各一个AND逻辑块,并且每个AND逻辑块被布置成从边缘测试计算硬件接收四个值作为输入,像素的每个角各一个值,并且其中AND逻辑块的输出是像素和边缘的内部覆盖结果;并且其中每个第二硬件子单元包括:第二多个AND逻辑块,对于微瓦片中的每个像素各一个AND逻辑块,并且每个AND逻辑块被布置成接收像素和每个边缘的外部覆盖结果作为输入作为输入,每个第一硬件子单元提供一个输入,并且其中AND逻辑块的输出是像素和图元的外部覆盖结果;以及第三多个AND逻辑块,对于微瓦片中的每个像素各一个,并且每个AND逻辑块被布置成接收像素和每个边缘的内部覆盖结果作为输入,每一个第一硬件子单元提供一个输入,并且其中AND逻辑块的输出是像素和图元的内部覆盖结果。
第二方面提供了一种在图形流水线中执行保守光栅化的方法,该图形流水线被布置成在渲染空间中进行渲染,其中渲染空间被细分成多个瓦片,每个瓦片被细分成多个微瓦片,每个微瓦片包括相同的像素布置,该方法包括:针对图元的每个边缘和微瓦片中的像素的每个角,计算指示像素角是否在边缘的左侧的值;并且对于每个像素,像素具有四个角:对于每个边缘,在OR逻辑块中,将四个计算出的值组合,以生成并输出像素和边缘的外部覆盖结果;对于每个边缘,在AND逻辑块中,将四个计算出的值组合,以生成并输出像素和边缘的内部覆盖结果;在AND逻辑块中,将图元的每个边缘的像素的外部覆盖结果组合,以生成并输出像素和图元的外部覆盖结果;并且在AND逻辑块中,将图元的每个边缘的像素的内部覆盖结果组合,以生成并输出像素和图元的内部覆盖结果。
包括保守光栅化硬件的图形处理流水线可以在集成电路上的硬件中实现。可以提供一种在集成电路制造系统中制造包括保守光栅化硬件的图形处理流水线的方法。可以提供集成电路定义数据集,当在集成电路制造系统中被处理时,该集成电路定义数据集将系统配置为制造包括保守光栅化硬件的图形处理流水线。可以提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,当被处理时,该计算机可读描述使布局处理系统生成在集成电路制造系统中使用的电路布局描述以制造包括保守光栅化硬件的图形处理流水线。
可以提供一种集成电路制造系统,包括:非暂时性计算机可读存储介质,其上存储有计算机可读集成电路描述,该描述描述了包括保守光栅化硬件的图形处理流水线;布局处理系统,其被配置为处理集成电路描述,以便生成电路布局描述,该电路布局描述实现包括保守光栅化硬件的图形处理流水线的集成电路;集成电路生成系统,其被配置为根据电路布局描述,来制造包括保守光栅化硬件的图形处理流水线。
可以提供用于执行如本文所述的任何方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂时性计算机可读存储介质,当在计算机系统处执行时,所述计算机可读指令使计算机系统执行如本文所述的任何方法。
如对技术人员显而易见的,可以适当地组合上述特征,并且可以与如本文所述的示例的任何方面组合。
附图说明
现在将参考附图来详细描述示例,其中:
图1A是划分为瓦片和微瓦片的渲染空间的示意图;
图1B是更详细地示出图1A的一部分的示意图;
图2A是示例图形处理单元(GPU)流水线的示意图;
图2B是示出各种图元的边缘矢量的示意图;
图3A是更详细地示出来自图2A流水线的保守光栅化硬件的第一部分的示意图;
图3B是更详细地示出来自图2A流水线的保守光栅化硬件的第二部分的示意图;
图4是执行保守光栅化的示例方法的流程图;
图5A更详细地示出来自图3A的边缘测试硬件的第一示例实现方式的示意图;
图5B更详细地示出来自图3A的边缘测试硬件的第二示例实现方式的示意图;
图5C更详细地示出来自图3A的边缘测试硬件的第三示例实现方式的示意图;
图6是执行边缘检测的示例方法的流程图;
图7示出了一种计算机系统,其中实现了包括保守光栅化硬件的图形处理流水线;以及
图8示出了用于生成体现图形处理流水线的集成电路的集成电路制造系统,图形处理流水线包括本文所述的保守光栅化硬件。
附图示出了各种示例。本领域技术人员将理解,附图中示出的元件边界(例如,框、框组或其他形状)代表边界的一个示例。在一些示例中,可以将一个元件设计为多个元件,或者可以将多个元件设计为一个元件。在适当的情况下,在所有附图中使用共同的附图标记来表示类似的特征。
具体实施方式
通过示例的方式呈现以下描述以使得本领域技术人员能够实施和使用本发明。本发明不限于如本文所述的实施方案,并且对所公开的实施方案的各种修改对于本领域技术人员而言是显而易见的。
现在仅通过示例的方式来描述实施方案。
本文描述的是执行保守光栅化的硬件。该硬件可以在图形处理流水线的光栅化阶段(例如,在图形处理单元GPU内)实现。保守光栅化涉及确定正方形像素区域是否与图元完全重叠(这被称为“内部覆盖”),部分地与图元重叠(这被称为“外部覆盖”)或者根本不与图元重叠。本文描述的保守光栅化硬件提供了获得外部和内部覆盖结果的有效方式(例如,在物理尺寸和功耗方面)。
本文描述的硬件依赖于渲染空间的规律性细分,如可以参考图1A和1B所描述的那样。渲染空间100被划分为多个瓦片102(其可以例如是正方形或矩形),并且每个瓦片被进一步划分为较小区域104的规律布置,称为“微瓦片”。在每个瓦片102内,存在预定义的微瓦片104布置,并且在各种示例中,所有微瓦片104具有相同的尺寸。尽管图1A示出了在一个瓦片102内有5x4微瓦片104的布置,但是,在其他示例中,在每个瓦片102中可以存在不同数量的微瓦片104。每个微瓦片104包括相同数量(和布置)的像素106。在如图1A和1B所示的示例中,每个微瓦片104包括16个像素106的4x4布置。
如下面详细描述的,本文描述的保守光栅化硬件计算微瓦片中每个像素的左上角(如图1B中的黑色圆圈120所示)的边缘测试结果,并且另外计算微瓦片中像素的剩余角(如图1B中的白色圆圈122所示)的边缘测试结果。对于任何像素,图元的单个边缘的外部覆盖结果通过在硬件逻辑(例如,使用OR门)中组合来自像素的所有四个角的结果来获得,而图元的单个边缘的内部覆盖结果通过在不同的硬件逻辑(例如,使用AND门)中组合来自像素的所有四个角的结果来获得。以这种方式,在确定了一个覆盖结果(例如,外部覆盖结果)之后,可以以最小的附加成本(例如,在尺寸和功耗方面)获得另一个覆盖结果(例如,内部覆盖结果)。通过在硬件逻辑(例如,使用AND门)中组合针对每个单独边缘的像素的对应结果,获得特定像素的整个图元(而不仅仅是图元的单个边缘)的外部和内部覆盖结果。通过使用本文描述的硬件,可精确地执行覆盖测试(即,没有任何不确定性余量),尽管如下所述,它可能会产生假阳性。
图2A示出了示例图形处理单元(GPU)流水线200的示意图,其可以在GPU内的硬件中实现并且使用基于瓦片的渲染方法。本文描述的硬件还可以用替代地使用替代渲染方法,渲染过程对像素组进行处理(例如,在使用立即模式渲染的情况下)的GPU中。如图2所示,流水线200包括几何处理阶段202和光栅化阶段204。由几何处理阶段202生成的数据可以直接传递到光栅化阶段204和/或一些数据可以由几何处理阶段202写入存储器(例如参数存储器205),然后由光栅化阶段204从存储器读取。
几何处理阶段202包括顶点着色器206、曲面细分单元208和分块单元210。在顶点着色器206和曲面细分单元(或曲面细分器)208之间可以存在一个或多个可选的外壳着色器,图2中未示出。几何处理阶段202还可以包括图2中未示出的其他元件,例如存储器和/或其他元件。
顶点着色器206负责执行每顶点计算。与顶点着色器不同,硬件曲面细分单元208(以及任何可选的外壳着色器)每小片地操作而不是每顶点地操作。曲面细分单元208输出图元,并且在使用顶点索引的系统中,输出图元采用三个顶点索引和顶点数据的缓冲区的形式(例如,对于每个顶点,UV坐标以及在各种示例中,诸如位移因子之类的其他参数和可选地,父UV坐标)。在不使用索引的情况下,输出图元采用三个域顶点的形式,其中域顶点可以仅包括UV坐标或者可以包括UV坐标加上其他参数(例如,位移因子和可选地,父UV坐标)。
拼接单元210生成每瓦片显示列表,并将它们输出到例如参数存储器205。对于特定瓦片,每个每瓦片显示列表都标识至少部分位于该瓦片内的那些图元。这些显示列表可以由分块单元210使用分块算法来生成。然后,GPU流水线200内的后续元件(例如光栅化阶段204)可以从参数存储器205读取数据。
光栅化阶段204渲染由几何处理阶段202生成的一些或所有图元。光栅化阶段204包括保守光栅化硬件212,系数生成硬件块214,并且可以包括图2中未示出的其他元件。粗略微瓦片掩码和系数生成硬件块214生成在保守光栅化硬件212中使用的系数(例如,如下定义的A、B和C)。
光栅化阶段204的保守光栅化硬件212针对每个像素和多个图元中的每一个(例如,每瓦片显示列表上的每个图元),确定像素(即,正方形像素区域,而不是像素内的单个样本位置)是否与图元部分地或完全地重叠。这分别称为外部和内部覆盖。光栅化硬件212在图3A和3B中更详细地示出,并且其操作可以参考图4中的流程图来描述。
如上所述并如图2B所示,每个图元21、22、23都具有多个边缘(例如三角形图元21的三个边缘)。每个边缘都由边缘方程定义,边缘是如下形式的矢量:
f(x,y)=Ax+By+C
其中A、B和C是特定于多边形边的常数系数(因此可以是预先计算出的),并且C已经被预先调整,使得场景原点被转换为瓦片原点。保守光栅化硬件212针对图元的每个边缘以及针对微瓦片104中的每个像素角120、122,通过计算边缘的f(x,y)的值或符号,来确定像素角(具有坐标x,y)是位于边缘左侧,还是右侧还是位于边缘上。计算是乘积之和(SOP)。
图3A示出了保守光栅化硬件212的一部分,其涉及单个边缘的单个像素。每个边缘测试硬件元件302都针对像素角120、122中的不同的像素角,通过计算边缘的f(x,y)的值或符号,来计算像素角是否位于边缘上,或边缘的左侧或右侧(框402)。这是因为:
·如果f(x,y)被计算为正(即大于零),则像素角位于边缘的右侧
·如果f(x,y)被计算为负(即小于零),则像素角位于边缘的左侧
·如果f(x,y)被计算为恰好为零,则像素角恰好位于边缘上
虽然图3A仅示出了5个离散边缘测试硬件元件302,但是应当理解,可以存在更多这些元件,并且数量将取决于微瓦片内的像素数量(即,对于微瓦片中的每个像素角,可以有一个边缘测试硬件元件302)。例如,如果微瓦片包括4x4像素布置(如图1B所示),则可以存在25个边缘测试硬件元件302,微瓦片104中的每个像素角120,122各一个边缘测试硬件元件。或者,边缘测试硬件元件302可以被组合成边缘测试硬件逻辑,其被布置成并行地计算多个边缘测试结果,例如,并行地计算微瓦片104中的每个像素角120、122的边缘测试结果。通过组合边缘测试硬件逻辑,可以提高效率,因为可以重用硬件和/或中间结果,即,用于计算多于一个边缘测试结果。这种组合硬件的一个示例在共同未决的编号为1805608.5的英国申请中进行了描述了,这也在图5A、5B、5C和6示出并在下面进行了描述。
在已经计算了微瓦片中的每个像素角的f(x,y)的符号(或值)(在硬件元件302中,且在框402中)之后,存在与每个正方形像素区域106相关的四个结果(即,四个计算出的符号或值)(正方形像素区域的每个角各一个结果),其中大部分结果都与两个或更多个正方形像素区域相关(即,一个像素角是两个或更多个相邻正方形像素区域的角的情况下),因此,在评估不同像素(即不同的正方形像素区域)的外部和内部覆盖时重复使用结果。
为了生成像素i和边缘n的外部覆盖结果On,i(其中和n两者都是整数并且在图1B的示例中,i=[0,24]),使用OR门306,组合来自框402的四个角的结果的否定符号(即所有四个计算出的符号或者所有四个计算出的值的符号的否定版本(框404)。在图3A所示的示例中,使用NOT门305来执行否定;然而,在其他示例中,这可以使用替代硬件布置来实现。
像素i和边缘n的外部覆盖结果On,i是单个比特,如果它是零,则表示边缘不与正方形像素区域的任何部分相交,并且整个正方形像素区域在边缘矢量的左侧。
为了生成像素i和边缘n的内部覆盖结果In,i,使用AND门306来组合四个角的结果的否定符号(即,来自框402的所有四个计算出的符号或所有四个计算出的值的符号的否定版本)(框406)。像素i和边缘n的内部覆盖结果In,i是单个比特,如果是1,则表示正方形像素区域的任何角都不在边缘矢量的左侧。
虽然图3A示出了单个OR门304和单个AND门306,但是,这仅仅是为了降低该图的复杂性。对于每个边缘,保守光栅化硬件212包括用于微瓦片中的每个像素的OR门304(即i个OR门)和用于微瓦片中的每个像素的AND门306(即i个AND门)。还可以针对每个边缘,复制图3A中所示的硬件布置,使得保守光栅化硬件212总共包括i×n个多路复用器304和i×n个AND门306。保守光栅化硬件212还包括n个硬件元件,每个边缘一个硬件元件,它们被布置成确定边缘的梯度,并生成与该边缘有关的i个多路复用器的选择信号。此外,OR门304(以及本文所述的任何其他OR门)可替代地由被配置为执行OR运算的任何逻辑块(例如,not-AND-not,或者加法和比较等)替换。被配置为执行OR运算的这种逻辑块可以被称为OR逻辑块。类似地,AND门306(以及本文描述的任何其他AND门)可替代地由被配置为执行AND运算的任何逻辑块替换。被配置为执行AND运算的这种逻辑块可以被称为AND逻辑块。
在已经计算了像素i和每个边缘n的外部覆盖结果On,i之后,使用AND门308来组合不同边缘的结果(框408),如图3B所示。这生成像素i的单个外部覆盖结果Oi,如果它为零,则表示该图元不与正方形像素区域的任何部分相交。保守光栅化不允许外部覆盖结果的假阴性,尽管允许外部覆盖结果的少量假阳性。可以使用边界框来移除所获得的假阳性,如下所述。
在已经计算了像素i和每个边缘n的内部覆盖结果In,i之后,使用AND门310来组合不同边缘的结果(框410),如图3B所示。这生成像素i单个内部覆盖结果Ii,如果为零,则表示该图元未完全覆盖正方形像素区域。内部覆盖是精确执行的,没有固有的假阳性。
如上所述,使用上述方法获得的外部覆盖结果包括许多假阳性。可以通过应用边界框并从外部覆盖阳性结果中排除边界框之外的任何像素来消除假阳性。生成边界框,使得它包含图元,并且可以例如被计算,使得边界框的顶点坐标由图元的顶点的最大和最小x和y值给出(即,左上顶点=(min x,max y,),右上顶点=(max x,max y),右下顶点=(maxx,min y),左下顶点=(min x,min y))。例如,边界框的应用可以通过计算(例如,预先)对应于图元的边界框的掩码来实现,其中所有那些在边界框内的像素都具有掩码比特一,所有那些在边界框之外的像素都具有掩码比特零。然后可以使用AND逻辑块来组合像素i的单个外部覆盖结果Oi和像素i的掩码比特,以生成像素i的最终外部覆盖结果Oi′。与未应用边界框相比,像素的最终外部覆盖结果具有更少的假阳性。
图5A和5B示出了图3A中所示的边缘测试硬件302的两种不同示例实现方式。如上所述,图5A和5B所示的实现方式可以对应于多个边缘测试硬件元件302,并且这会导致更有效的硬件实现方式(例如,在物理尺寸和功耗方面)。
第一示例硬件布置500,如图5A所示,包括单个微瓦片部件硬件元件502,多个(例如,对于微瓦片中的像素的每个角各一个,因此,对于图1B中所示的示例,为25个)像素部件硬件元件504和多个(例如,微瓦片中的像素的每个角,各至少一个,因此,对于图1B中所示的示例,至少25个)加法和比较元件(其可以例如实现为多个加法器)508,每个加法和比较元件508都为同一微瓦片内的不同像素角生成输出结果。硬件布置500可以另外包括一个或多个多路复用器510,其将像素部件硬件元件504和可选地微瓦片部件硬件元件502连接到加法和比较元件508。在包括多路复用器510的示例中,一个或多个选择信号(其也可以被称为“模式信号”并且可以包括对硬件的特定操作模式进行编码的独热信号)控制多路复用器510的操作,并且特别地,控制硬件元件502、504的哪种组合连接到每个特定的加法和比较元件508(例如,对于每个加法和比较元件508,多个像素部件硬件元件504中的哪一个连接到加法和比较元件508,每个加法和比较元件508也连接到单个微瓦片部件硬件元件502)。
在各种示例中,硬件布置500可以另外包括子采样部件元件506,但是在这种情况下,该元件的输出可以被设置为零,使得它不以任何方式影响输出。例如,可以提供子采样部件元件506,其中硬件布置也用于其他计算,例如,用于每个像素有多个样本和/或输出不是固定值的计算。
如上所述,如果边缘测试硬件302评估以下形式的SOP:
f(x,y)=Ax+By+C
在系数A、B、C的值对于每个评估的SOP可能不同的情况下,那么,微瓦片部件硬件元件502评估:
fUT(xUT,yUT)=AxUT+ByUT+C
其中xUT和yUT的值(相对于瓦片原点110的微瓦片坐标)对于不同的微瓦片是不同的。微瓦片部件硬件元件502可以接收A、B、C、xUT以及yUT的值作为输入,并且该元件输出单个结果fUT。
像素部件硬件元件504评估:
fP(xP,yP)=AxP+ByP
此评估针对xP和yP的不同的值(其中这些值对于微瓦片内的不同像素角而不同)。xP和yP的值的集合(即,一个微瓦片内的所有像素角的xP和yP的值,如相对于微瓦片原点定义的)对于所有微瓦片都是相同的,并且它们可以例如由边缘测试硬件302来计算,或者可以从查找表(LUT)获得。在各种示例中,微瓦片的原点可以被定义为每个微瓦片的左上角,并且xP和yP值的值可以是整数,因此,为确定这些值,需要很少计算或不需要计算(因此这提供了有效的实现方式)。返回参考图1A中所示的示例,每个微瓦片包括四行四个像素,因此存在五行像素角,每一行有五个像素角,如图1B所示,那么,xP的值的集合是{0,1,2,3,4}(也可以写为[0,4]),并且yP的值的集合是{0,1,2,3,4}(也可以写为[0,4])。每个像素部件硬件元件504都接收A和B作为输入,并且还可以接收xP和yP的值的集合(例如,在这些值不是整数的示例中)。每个元件504都输出单个结果fP,因此,fP的计算可以与为确定xP和/或yP执行的任何计算合并。
子样本部件硬件元件506(如果提供)评估:
fS(xS,yS)=AxS+ByS
因为每个像素只有一个子样本位置,并且xS和yS只有一个值,因此,fS仅存在一个值,并且如上所述,在各种示例中,fS的值可以被设置为零。
加法和比较元件508评估:
f(x,y)=fUT+fP
或者,在存在子样本部件硬件元件506的情况下:
f(x,y)=fUT+fP+fS
并且每个加法和比较元件508对fUT和fP值的不同组合进行求和(在值的特定组合被作为输入提供给加法和比较单元508的情况下),并且该组合要么是固定的(即,在元件之间硬连线)或者由一个或多个多路复用器510(如果提供)来选择。为了执行边缘测试,仅输出(即,f(x,y)的)结果的MSB(或符号比特),因此不需要由加法和比较元件508来计算完整结果,并且加法和比较元件508可以执行比较而不执行加法(从而减少了硬件的整体面积)。该MSB指示结果的符号(因为a>b===符号(b-a)),并且如上所述,这指示像素角是在边缘的左侧还是右侧。
第二示例硬件布置520,如图5B所示,是图5A中所示的硬件布置500的变体。该第二示例硬件布置520包括单个微瓦片部件硬件元件502,多个(例如,对于微瓦片中的像素的每个角各一个,因此,对于图1B中所示的示例,至少25个)像素部件硬件元件524(尽管这些元件的操作与图5A中所示且在上面描述的那些元件的操作略有不同),以及多个(例如64个)比较元件(例如,其可以实现为多个加法器)528(尽管这些元件的操作与图5A中所示和且在上面描述的加法和比较元件508的操作略有不同),每个比较元件528都生成输出结果。类似于图5A中所示的硬件布置500,图5B所示的硬件布置520还可以另外包括由选择信号控制的一个或多个多路复用器510。此外,在各种示例中,硬件布置520可以另外包括子采样部件元件506,但是在这种情况下,该元件的输出可以被设置为零,使得它不以任何方式影响输出。
如上所述,如果边缘测试硬件302评估以下形式的SOP:
f(x,y)=Ax+By+C
在系数A、B、C的值对于每个被评估的SOP可能不同的情况下,那么,微瓦片部件硬件元件502如上参考图5A所述地操作;然而,在图5B的布置520中,微瓦片部件硬件元件502的输出被输入到多个像素部件硬件元件524中的每一个,而不是输出被直接馈送到比较元件528(如图5A所示)。
图5B的布置520中的像素部件硬件元件524不以与图5A所示的方式相同的方式操作。它们接收来自微瓦片部件硬件元件502的输出fUT(除了A和B之外)作为输入,并且评估:
fUT(xUT,yUT)+fP(xP,yP)=fUT(xUT,yUT)+AxP+ByP
此评估针对xP和yP的不同的值(其中这些值对于微瓦片内的不同像素角而不同)。如上所述(参考图5A),xP和yP的值(即,微瓦片内的所有像素角xP和yP的值,如相对于微瓦片原点所定义的)可以是整数,因此像素部件硬件元件524可以包括加法器的布置,以将A和/或B的适当倍数与由微瓦片部件硬件元件502生成的输入值fUT相加,并且这可以在不使用任何乘法器的情况下实现,这减小了比较单元528的尺寸和/或功耗。每个元件524都输出单个结果fUT+fP,并且如上所述,fP的计算以及因此单个结果的计算可以与为了确定xP和/或yP执行的任何计算合并。
比较元件528评估:
f(x,y)=fUT+fP+fS
评估方式与上述加法和比较元件408类似;然而,输入是不同的,因为fUT和fP的值已经在像素部件硬件元件424中组合。每个比较元件528对(fUT+fP)和fS值的不同组合进行求和(在值的特定组合被作为输入提供比较单元528的情况下),并且该组合要么是固定的(即,硬连线的)或由一个或多个多路复用器510(如果提供)来选择。为了执行边缘测试,仅输出(即,f(x,y)的)结果的MSB(或符号比特),因此不需要由比较元件528计算完整结果。该MSB指示结果的符号,并且如上所述,这指示子样本位置是在边缘的左侧还是右侧。
图5B所示的硬件布置520可以利用以下事实,即可以快速计算fP的值,或者可以在先前的流水线阶段执行UTC计算。通过使用这种布置520,与图5A所示的布置500相比,硬件布置520的总面积可以减小(例如,比较元件528可以小于加法和比较元件408);然而,像素部件硬件元件524输出的每个结果包括比图5A所示的布置500中更多的比特(例如,大约多15比特)。
如上所述,在各种示例中,可以没有子采样部件硬件元件506,并且在这种情况下,可以使用图5C所示的硬件布置540。该硬件布置540是图5B中所示的硬件布置520的变型。如图5C所示,比较操作(由图5B中的比较单元528执行)被组合到加法操作(由图5B中的像素部件硬件元件524执行)并且在单个像素部件和比较元件544中实现。如在图5B中所示的硬件布置中那样,在图5C中所示的硬件布置540中,输出可以是固定的(即,硬连线的)或由一个或多个可选的多路复用器510选择。
尽管图5A和5B示出了硬件元件502、504、506、524连接到单个加法和比较元件508、528(可选地通过多路复用器510),这仅是为了降低该图的复杂性。如上所述,每个加法和比较元件508、528都生成输出结果,并且硬件布置500、520在所有示例中被布置成并行地计算多个结果(例如,对于微瓦片中的每个像素角各一个,因此,对于图1B,25个结果)中所示的示例,并且因此包括多个加法和比较元件508、528(例如,至少25个加法和比较元件)。
尽管图5A、5B和5C均仅示出单个微瓦片部件元件502,使得由硬件布置500、520、540并行生成的所有结果都涉及同一微瓦片内的像素角,但是,在其他示例中,硬件布置可包括多个微瓦片部件元件502,在这样的示例中,由硬件布置并行生成的结果可以涉及多于一个微瓦片内的像素角。
在各种示例中,硬件布置500、520、540可以进一步包括多个快速判定单元530(其也可以被称为快速失败/通过逻辑元件),每个微瓦片各一个,然后将条件应用于所有输出(例如,来自多个加法和比较元件508、528、544中的全部的输出)。快速判定单元530接收由微瓦片部件硬件元件502生成的输出,并基于所接收的输出来确定来自像素部件硬件元件504、524、544的任何可能的贡献是否会改变由微瓦片部件硬件元件502输出的值的MSB的值。
如果由微瓦片部件硬件元件502输出的值fUT足够正,使得没有像素贡献可以使得结果f(x,y)为负(在考虑任何边缘规则调整之后),即,如果:
fUT>|fPmin|
其中fPmin是最小的,即,fP的最负的可能值,则硬件布置500、520可以在不评估由像素部件硬件元件504、524、544生成的输出的情况下(即,无需完全评估最后的总和)确定边缘测试是通过还是失败。
类似地,如果微瓦片部件硬件元件502输出的值fUT足够负,使得没有像素可以使结果f(x,y)为正或零,即,如果:
|fUT|>fPmax
其中fPmax是最大的,即,fP的最正的可能值,则硬件布置500、520、540可以在不评估由像素部件硬件元件504、524、544生成的输出的情况下(即,无需完全评估最后的总和)确定边缘测试是通过还是失败。
快速判定单元530的实现减少了由每个加法和比较元件508、528执行的加法的宽度,因为可以从加法中省略由微瓦片部件硬件元件502生成的输出中的多个(例如,三个)MSB。可以省略的MSB的精确数量由一个瓦片中的微瓦片数量(即,有多少XUT比特)和对系数C的精确约束来确定。
如上所述,硬件布置500、520、540都适用于使用其中像素组被一起处理的任何渲染方法的GPU,并且这包括基于瓦片的渲染和立即模式渲染。在各种示例中,如图5B所示的包括快速判定单元530的硬件520可以特别适用于使用即时模式渲染的GPU。这是因为立即模式渲染会导致比用于基于瓦片的渲染更大的UTC元素502(因为坐标范围现在可以覆盖整个屏幕区域)。
在任何实现方式中选择使用哪种硬件布置500、520、540将取决于各种因素,包括但不限于GPU使用的渲染方法。与图5B所示的硬件520中的布置相比,图5A所示的硬件布置500在用于PPC元件504的多路复用器510之前具有更少的延迟和更少的寄存器;然而,图5A中的加法和比较元件508比图5B中的比较单元528更大并且使用更多的功率。因此,在有大量加法和比较元件508(例如64个或更多)的情况下,使用图5B所示的硬件布置520可能更合适。然而,在图5B中所示的硬件布置520中,如果仅微瓦片索引改变,则不可能使PPC元件524门控,但是对于64或更多输出,比较单元528的复杂性降低可以提供就硬件的功耗而言的显性效果。
图6是用于以对于划分为瓦片的渲染空间的有效方式(即,在硬件尺寸和功耗方面)执行边缘检测和/或深度计算的示例方法的流程图,并且其中每个瓦片被细分成多个微瓦片,每个微瓦片包括相同的像素布置。该方法使用上面描述的并且在图5A、5B和5C中示出的硬件,并且可以是图形处理流水线中渲染方法的一部分。
该方法包括在第一硬件元件502中,基于微瓦片的坐标来计算第一输出(框602)。该方法还包括,在多个第二硬件元件504、524、544中的每一个中,基于微瓦片内的多个像素之一的坐标来计算多个第二输出中的一个(框604),其中多个第二硬件元件中的每一个和多个第二输出中的每一个都涉及微瓦片中的多个像素角中的不同的像素角。该方法还包括通过使用一个或多个加法和/或比较单元来组合第一输出和第二输出之一的不同组合,以生成多个输出值(框608),其中每个输出值都是边缘测试输出。
在上述方法中,图元的所有边缘都以相同的方式处理;然而,如果像素正好在物体的边缘上,则可以应用边缘规则,以便确定像素在仅一个图元内(并因此使其可见)。在各种示例中,边缘规则可以确定位于顶部或左边缘上的像素位于图元内,而如果像素位于另一边缘上,则认为其位于图元之外。这些边缘可以根据它们的A和B系数来定义,并且在下表中示出了三角形图元的示例:
例如,边缘规则可以通过对于右或水平底边缘在最终求和(例如,如框508、528、544中执行的那样)中减去一个LSB(最低有效比特)来实现,并且可以通过从来自微瓦片部件硬件元件502的输出中减去一个LSB来减去该LSB。这会导致有效的硬件实现方式,因为它避免了比较元件需要识别f(x,y)等于零的情况,而是比较元件仅需要确定f(x,y)的符号并因此确定是否f(x,y)≥0。
使用上述硬件布置和方法来确定微瓦片中每个像素的外部和内部覆盖,导致保守光栅化的硬件逻辑实现方式具有良好的利用率(例如,因为它仅需要计算一些额外的SOP,并且因为对于微瓦片中的所有像素并行执行计算,因此,可以重复使用公共像素角的结果而不是单独计算,并且在各种示例中,可以重用光栅化阶段204的现有硬件),高性能(例如,因为它不需要对边缘系数或样本位置进行任何调整-对边缘系数的调整很难精确实现,任何调整都会引入延迟,这种延迟对于边缘调整而言比样本位置调整更差),并且紧凑(在物理尺寸方面)并且功率效率高(例如,因为一旦计算出了外部覆盖,只需要少量的加法逻辑来计算内覆盖,并且不需要对边缘系数进行任何调整,并且因为对于微瓦片中的所有像素并行执行计算,因此,可以重复使用公共像素角的结果而不是单独计算)。虽然在图1B所示的示例中,一个微瓦片包括4x4像素阵列,但是,由于重复使用计算结果而具有利用益处,对于较大的像素阵列,使用本文所述的方法和硬件实现的利用率的增大更为显著。
图7示出了计算机系统,其中可以实现本文描述的图形处理系统。计算机系统包括CPU 702、GPU 704、存储器706和其他设备714,例如显示器716、扬声器718和摄像头720。上面描述的图形处理流水线,尤其是保守光栅化硬件212,可以在GPU 704内实现。计算机系统的部件可以通过通信总线722彼此进行通信。
图2、3A和3B所示以及上述的硬件布置被示为包括多个功能块。这仅是示意图,并不旨在定义这些实体的不同逻辑元件之间的严格划分。可以以任何合适的方式提供每个功能块。应当理解,本文描述的由任何元件(例如,图3A和3B中的任何元件)形成的中间值不需要在任何时间点由硬件布置物理地生成,并且可以仅仅表示逻辑值,方便地描述由硬件(例如图形处理流水线)在其输入和输出之间执行的处理。
本文描述的保守光栅化硬件212可以在集成电路上的硬件中实现。本文描述的保守光栅化硬件212可以被配置为执行本文描述的任何方法。通常,上述任何功能、方法、技术或部件可以用软件、固件、硬件(例如,固定逻辑电路)或其任何组合来实现。这里可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,当程序代码在处理器上执行时执行指定任务。本文描述的算法和方法可以由执行代码的一个或多个处理器执行,代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或可由机器访问的其他数据的存储器设备。
这里使用的术语“计算机程序代码”和“计算机可读指令”是指供处理器执行的任何种类的可执行代码,包括以机器语言、解释语言或脚本语言表示的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用诸如C、Java或OpenCL之类的编程语言代码表示的代码。可执行代码可以是,例如,任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译时,这些软件、固件、脚本、模块或库使得支持可执行代码的计算机系统的处理器执行由代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的设备、机器或专用电路,或其集合或一部分,它具有处理能力,使得它可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)、物理处理单元(PPU)、无线电处理单元(RPU)、数字信号处理器(DSP)、通用处理器(例如通用GPU)、微处理器、旨在加速CPU之外的任务的任何处理单元等。计算机或计算机系统可包括一个或多个处理器。本领域技术人员将认识到,这种处理能力被结合到许多不同的设备中,因此术语“计算机”包括机顶盒、媒体播放器、数字收音机、PC、服务器、移动电话、个人数字助理和许多其他设备。
本发明还旨在包括定义如本文所述的硬件配置的软件,例如HDL(硬件描述语言)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中被处理(即运行)时,该集成电路定义数据集将系统配置为制造图形处理流水线,图形处理流水线被配置为执行本文描述的任何方法,或者制造包括本文描述的保守光栅化硬件的图形处理流水线。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统中制造包括如本文所述的保守光栅化硬件的图形处理流水线的方法。此外,可以提供集成电路定义数据集,当在集成电路制造系统中被处理时,该集成电路定义数据集使得制造包括保守光栅化硬件的图形处理流水线的方法被执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义任何级别的集成电路的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示,如Verilog或VHDL,以及作为低级电路表示,如OASIS(RTM)和GDSII。逻辑上定义集成电路的更高级表示(例如RTL)可以在计算机系统上被处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件以生成由该表示定义的集成电路的制造定义的规则。如通常软件在计算机系统上执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为用于生成集成电路的制造定义,以执行定义集成电路的代码,以便生成该集成电路的制造定义。
现在将参考图8描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置为制造图形处理流水线的示例。
图8示出了集成电路(IC)制造系统802的示例,其被配置为制造包括如本文任何示例中描述的保守光栅化硬件的图形处理流水线。特别地,IC制造系统802包括布局处理系统804和集成电路生成系统806。IC制造系统802被配置为接收IC定义数据集(例如,定义包括如本文任何示例中所述的保守光栅化硬件的图形处理流水线),处理IC定义数据集,并根据IC定义数据集来生成IC(例如,其实现了包括如本文任何示例中所述的保守光栅化硬件的图形处理流水线)。通过对IC定义数据集的处理,将IC制造系统802配置为制造实现图形处理流水线的集成电路,该图形处理流水线包括如本文任何示例中所述的保守光栅化硬件。
布局处理系统804被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集来确定电路布局的方法在本领域是已知的,并且例如可以包括合成RTL代码以确定要生成的电路的门级表示,例如,就逻辑部件而言(例如,NAND、NOR、AND、OR,MUX和FLIP-FLOP部件)。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统804确定了电路布局时,它可以将电路布局定义输出到IC生成系统806。电路布局定义可以是例如电路布局描述。
如本领域已知的,IC生成系统806根据电路布局定义来生成IC。例如,IC生成系统806可以实现生成IC的半导体器件制造工艺,其可以包括光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可以是掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。或者,提供给IC生成系统806的电路布局定义可以是计算机可读代码的形式,IC生成系统806可以使用该计算机可读代码来形成用于生成IC的合适光掩模。
由IC制造系统802执行的不同处理可以全部在一个位置实现,例如,由一方。或者,IC制造系统802可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方执行。例如,以下的一些阶段:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示,(ii)基于门级表示来生成电路布局,(iii)根据电路布局来形成光掩模,(iv)使用光掩模来制造集成电路,可以在不同的位置和/或由不同的方执行。
在其他示例中,通过在集成电路制造系统处对集成电路定义数据集的处理,可以将系统配置为制造包括保守光栅化硬件的图形处理流水线,而不对IC定义数据集进行处理以便确定电路布局。例如,集成电路定义数据集可以定义可重新配置处理器(例如FPGA)的配置,并且通过对该数据集的处理,可以配置IC制造系统以生成具有该所定义配置的可重新配置处理器(例如,通过将配置数据加载到FPGA)。
在一些实施方案中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文所述的设备。例如,通过集成电路制造定义数据集,以上面参考图8描述的方式对集成电路制造系统的配置,可以制造出如本文所述的设备。
在一些示例中,集成电路定义数据集可以包括在由数据集定义的硬件上运行的软件,或者与由数据集定义的硬件组合运行的软件。在图8所示的示例中,IC生成系统还可以由集成电路定义数据集进一步配置,以在制造集成电路时,根据在集成电路定义数据集中定义的程序代码,将固件加载到该集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
本领域技术人员将认识到,用于存储程序指令的存储设备可以分布在网络上。例如,远程计算机可以存储被描述为软件的过程的示例。本地或终端计算机可以访问远程计算机并下载部分或全部软件以运行该程序。或者,本地计算机可以根据需要下载软件的片段,或者在本地终端处执行一些软件指令,而在远程计算机(或计算机网络)处执行另一些软件指令。本领域技术人员还将认识到,通过利用本领域技术人员已知的常规技术,软件指令的全部或一部分可以由诸如DSP、可编程逻辑阵列之类的专用电路等等来执行。
本文描述的方法可以由配置有存储在有形存储介质上的机器可读形式的软件的计算机执行,例如,软件采用包括计算机可读程序代码的计算机程序的形式,用于将计算机配置为执行所述方法的组成部分,或采用包括计算机程序代码装置的计算机程序的形式,当程序在计算机上运行时,以及在计算机程序可以在计算机可读存储介质上实现的情况下,代码装置适于执行本文所述任何方法的所有步骤。有形(或非暂时)存储介质的示例包括磁盘、拇指驱动器、存储卡等,并且不包括传播信号。软件可以适合于在并行处理器或串行处理器上执行,使得方法步骤可以以任何合适的顺序执行或同时执行。
本文描述的硬件部件可以由其上编码有计算机可读程序代码的非暂时性计算机可读存储介质生成。
存储用于实现所公开方面的机器可执行数据的存储器可以是非暂时性介质。非暂时性介质可以是易失性的或非易失性的。易失性非暂时性介质的示例包括基于半导体的存储器,例如SRAM或DRAM。可用于实现非易失性存储器的技术的示例包括光学和磁存储器技术、闪存、相变存储器、电阻RAM。
对“逻辑”的特定引用是指执行一个或多个功能的结构。逻辑的示例包括被布置成执行那些功能的电路。例如,这种电路可以包括在制造过程中可用的晶体管和/或其他硬件元件。这种晶体管和/或其他元件可用于形成实现和/或包含存储器的电路或结构,例如寄存器、触发器或锁存器,逻辑运算器,例如布尔运算,数学运算器,例如加法器、乘法器,或者,移位器和互连,作为示例。这些元件可以作为定制电路或标准单元库、宏来提供或在其他抽象级别提供。这些元件可以以特定布置互连。逻辑可以包括具有固定功能的电路,并且电路可以被编程为执行一个或多个功能;可以从固件或软件更新或控制机制提供这样的编程。被识别为执行一个功能的逻辑还可以包括实现组成性功能或子过程的逻辑。在一个示例中,硬件逻辑具有实现一个或多个固定功能操作,状态机或过程的电路。
与已知实现方式相比,在本申请中阐述的概念在设备、装置、模块和/或系统(以及在本文实现的方法中)中的实现可以引起性能改进。性能改进可以包括计算性能提高、等待时间缩短、吞吐量增大和/或功耗降低这几项中的一项或多项。在制造这种设备、装置、模块和系统(例如集成电路)期间,可以在性能改进与物理实现方式之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用较少的硅。例如,这可以通过以串行方式重用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起设备、装置、模块和系统的物理实现方式的改进(例如硅面积减小)的概念可以用来提高性能。例如,这可以通过在预定义面积预算内制造一个模块的多个实例来完成。
如对本领域技术人员显而易见的,可以延长或改变本文给出的任何范围或设备值而不丧失所寻求的效果。
应当理解,上述益处和优点可以涉及一个实施方案,或者可以涉及多个实施方案。实施方案不限于解决任何或所有所述问题的那些或具有任何或所有所述益处和优点的那些。
对“一个”项目的任何引用都指的是这些项目中的一个或多个。术语“包括”在本文中用于表示包括所识别的方法块或元件,但是这些块或元件不包括排他列表,并且装置可以包含附加的块或元件,并且方法可以包含附加的操作或元件。此外,并不暗示块、元件和操作本身是关闭的。
本文描述的方法的步骤可以以任何合适的顺序进行,或者在适当的情况下同时进行。图中方框之间的箭头示出了方法步骤的一个示例序列,但并不旨在排除其他序列或并行执行多个步骤。另外,在不脱离本文描述的主题的精神和范围的情况下,可以从任何方法中删除单个块。上述任何示例的一些方面可以与所描述的任何其他示例的一些方面组合以形成进一步的示例而不会丧失所寻求的效果。在图的元件通过箭头示出被连接的情况下,应当理解,这些箭头仅示出了元件之间的通信(包括数据和控制消息)的一个示例流向。元件之间的流向可以是任一方向或两个方向。
申请人在此独立地公开了本文描述的每个单独的特征以及两个或多个这样的特征的任意组合,在某种程度上,这样的特征或组合能够根据本领域技术人员的普通常识,基于本说明书整体来执行,而不管这样的特征或特征的组合是否解决本文公开的任何问题。鉴于前面的描述,对于本领域技术人员显而易见的是,可以在本发明的范围内进行各种修改。
示例条款
A.一种被布置成在渲染空间(100)中进行渲染图形处理流水线(200),其中所述渲染空间(100)被细分成多个瓦片(102),每个瓦片被细分成多个微瓦片(104),每个微瓦片包括相同布置的像素(106),
所述图形处理流水线包括保守光栅化硬件(212),其中所述保守光栅化硬件包括:
多个第一硬件子单元(300),每个第一硬件子单元被布置成,针对图元的不同边缘,计算所述边缘的外部覆盖结果和微瓦片中的每个像素的所述边缘的内部覆盖结果;以及
多个第二硬件子单元(320),每个第二硬件子单元被布置成,针对微瓦片中的不同像素,计算所述图元的外部覆盖结果和所述图元的内部覆盖结果,
其中每个第一硬件子单元(300)包括:
边缘测试计算硬件(302),其被布置成,针对所述微瓦片中的所述像素的每个角,计算指示所述像素角是否在所述边缘的左侧的值;
多个OR逻辑块,每个OR逻辑块被配置为执行OR运算(304),所述微瓦片中的每个像素各一个OR逻辑块,并且每个逻辑块被布置成从所述边缘测试计算硬件接收四个值作为输入,所述像素的每个角各一个值,并且其中所述OR逻辑块的输出是所述像素和所述边缘的所述外部覆盖结果;以及
第一多个AND逻辑块,每个AND逻辑块被配置为执行AND运算(306),所述微瓦片中的每个像素各一个AND逻辑块,并且每个AND逻辑块被布置成从所述边缘测试计算硬件接收四个值作为输入,所述像素的每个角各一个值,并且其中所述AND逻辑块的输出是所述像素和所述边缘的所述内部覆盖结果;
并且其中每个第二硬件子单元(320)包括:
第二多个AND逻辑块(308),所述微瓦片中的每个像素各一个AND逻辑块,并且每个AND逻辑块被布置成接收所述像素和每个所述边缘的外部覆盖结果作为输入,每个所述第一硬件子单元提供一个输入,并且其中所述AND逻辑块的输出是所述像素和所述图元的所述外部覆盖结果;以及
第三多个AND逻辑块(308),所述微瓦片中的每个像素各一个AND逻辑块,并且每个AND逻辑块被布置成接收所述像素和每个所述边缘的内部覆盖结果作为输入,每个所述第一硬件子单元提供一个输入,并且其中所述AND逻辑块的输出是所述像素和所述图元的所述内部覆盖结果。
B.根据条款A所述的图形处理流水线,其中所述边缘测试计算硬件(302)包括一个或多个硬件布置(500、520),每个硬件布置被布置成使用乘积之和来执行边缘测试,每个硬件布置包括:
微瓦片部件硬件元件(502),包括硬件逻辑,其被布置成使用所述乘积之和以及所述渲染空间中的瓦片内的微瓦片的坐标来计算第一输出;
多个像素部件硬件元件(504、524),每个像素部件硬件元件包括硬件逻辑,其被布置成使用所述乘积之和以及相对于所述微瓦片的原点定义的不同像素角的坐标来计算多个第二输出中的一个;
多个加法器,其被布置成通过对每个输出结果,组合所述第一输出和所述多个第二输出之一的不同组合,并行地生成针对所述乘积之和的多个输出结果。
C.根据条款B所述的图形处理流水线,其中每个硬件布置还包括:
子采样部件硬件元件(506),所述子采样部件硬件元件包括被布置成输出固定的第三输出的硬件逻辑,
并且其中所述多个加法器被布置成通过对于每个输出结果,组合所述第三输出和所述第一输出与所述多个第二输出之一的不同组合来生成所述多个输出结果。
D.根据条款C所述的图形处理流水线,其中所述固定的第三输出被设置为零。
E.根据条款B-D中任一项所述的图形处理流水线,其中一个或多个所述硬件布置还包括:
多个多路复用器(510),其被布置成选择所述第一输出和所述多个第二输出之一的所述不同组合。
F.根据条款B所述的图形处理流水线,其中所述多个加法器包括:
多个加法和比较元件(508),每个加法和比较元件被布置成通过组合所述第一输出和所述多个第二输出之一的不同组合来生成所述多个输出结果中的不同的结果。
G.根据条款F所述的图形处理流水线,其中一个或多个所述硬件布置还包括第一多个多路复用器(510),所述第一多个多路复用器中的每个所述多路复用器都具有多个输入和一个输出,其中每个输入被布置成从所述多个像素部件硬件元件接收所述多个第二输出中的不同的输出,并且所述多路复用器被布置成选择所接收的第二输出之一,并通过所述输出端将所选择的第二输出输出到所述多个加法和比较元件。
H.根据条款B所述的图形处理流水线,其中所述多个加法器包括所述多个加法器的第一子集和所述多个加法器的第二子集,
其中每个所述像素部件硬件元件(524)还包括用于接收来自所述微瓦片部件硬件元件的所述第一输出的输入端,以及所述多个加法器的所述第一子集中的至少一个,其被布置成对从所述微瓦片部件硬件元件接收的所述第一输出和由所述像素部件硬件元件计算出的所述第二输出进行求和以生成中间结果,以及
其中所述多个加法器的所述第二子集包括:
多个比较元件(528),每个比较元件被布置成通过评估所述中间结果中的不同的中间结果来生成所述多个输出结果中的不同的输出结果。
I.根据条款H所述的图形处理流水线,其中一个或多个所述硬件布置还包括第一多个多路复用器(510),所述第一多个多路复用器中的每个所述多路复用器都具有多个输入和一个输出,其中每个输入被布置成从所述多个像素部件硬件元件接收所述中间结果中的不同的中间结果,并且所述多路复用器被布置成选择所接收的中间结果之一并且通过所述输出端将所选择的中间结果输出到所述多个比较元件中的一个。
J.根据条款A所述的图形处理流水线,其中所述边缘测试计算硬件(302)包括一个或多个硬件布置(540),每个硬件布置被布置成使用乘积之和来执行边缘测试,每个硬件布置包括:
微瓦片部件硬件元件(502),包括硬件逻辑,其被布置成使用所述乘积之和以及所述渲染空间中的瓦片内的微瓦片的坐标来计算第一输出;
多个像素部件硬件元件(544),每个元件包括:
硬件逻辑,其被布置成使用所述乘积之和以及相对于所述微瓦片的原点定义的不同像素角的坐标来计算多个第二输出中的一个;
用于接收来自所述微瓦片部件硬件元件的所述第一输出的输入端;
多个加法器,其被布置成对从所述微瓦片部件硬件元件接收的所述第一输出和由所述像素部件硬件元件计算出的所述第二输出进行求和以生成中间结果;以及
比较元件,其被布置成通过评估所述中间结果来生成所述多个输出结果之一。
K.一种用于在图形流水线中执行保守光栅化的方法,所述图形流水线被布置成在渲染空间(100)中进行渲染,其中所述渲染空间(100)被细分成多个瓦片(102),每个瓦片被细分成多个微瓦片(104),每个微瓦片包括相同的像素(106)布置,所述方法包括:
针对图元的每个边缘和所述微瓦片中的像素的每个角,计算指示所述像素角是否在所述边缘的左侧的值(402);以及
对于每个像素,所述像素具有四个角:
对于每个边缘,在OR逻辑块中,将所述四个计算出的值组合,以生成并输出所述像素和所述边缘的外部覆盖结果(404);
对于每个边缘,在AND逻辑块中,将所述四个计算出的值组合,以生成并输出所述像素和所述边缘的内部覆盖结果(406);
在AND逻辑块中组合针对所述图元的每个边缘的所述像素的外部覆盖结果,以生成所述并输出像素和所述图元的外部覆盖结果(408);以及
在AND逻辑块中组合针对所述图元的每个边缘的所述像素的内部覆盖结果,以生成并输出所述像素和所述图元的内部覆盖结果(410)。
L.根据条款K所述的方法,其中计算指示所述像素角是否在所述边缘的左侧的值包括:
在第一硬件元件中,基于瓦片内的微瓦片的坐标来计算第一输出(602);
在多个第二硬件元件中的每一个中,基于微瓦片内的所述像素角的坐标来计算第二输出(604);以及
将所述第一输出与所述第二输出组合(608)。
M.根据条款L所述的方法,其中将所述第一输出与所述第二输出组合包括:
确定所述第一输出和所述第二输出之和的符号。
N.根据条款L或M所述的方法,其中通过在多个加法和比较元件(508)的每一个中组合所述第一输出和第二输出的不同组合,针对微瓦片中的不同像素角并行生成指示像素角是否在所述边缘所述左侧的多个值。
O.一种图形处理流水线,其被配置为执行条款J-N中任一项所述的方法。
P.根据权利要求A-I和O中任一项所述的图形处理流水线,其中所述图形处理系统在集成电路上的硬件中实现。
Q.一种计算机可读代码,其被配置为在所述代码运行时执行条款J-N中任一项所述的方法。
R.一种计算机可读存储介质,其上编码有条款Q所述的计算机可读代码。
S.一种使用集成电路制造系统来制造根据条款A-I和O中任一项所述的图形处理流水线的方法。
T.一种集成电路定义数据集,当在集成电路制造系统中被处理时,其将所述集成电路制造系统配置为制造根据条款A-I和O中任一项所述的图形处理流水线。
U.一种计算机可读存储介质,其上存储有集成电路的计算机可读描述,当在集成电路制造系统中被处理时,所述计算机可读描述使所述集成电路制造系统制造根据条款A-I和O中任一项所述的图形处理流水线。
V.一种集成电路制造系统,其被配置为制造如条款A-I和O中任一项所述的图形处理流水线。
W.一种集成电路制造系统,包括:
非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,所述计算机可读描述对根据条款A-I和O中任一项所述的图形处理流水线进行描述;
布局处理系统,其被配置为处理所述集成电路描述,以便生成体现所述图形处理流水线的集成电路的电路布局描述;以及
集成电路生成系统,其被配置为根据所述电路布局描述来制造所述图形处理流水线。
Claims (20)
1.一种被布置成在渲染空间中进行渲染的图形处理流水线,其中所述渲染空间被细分成多个瓦片,每个瓦片被细分成多个微瓦片,每个微瓦片包括相同的像素布置,
所述图形处理流水线包括保守光栅化硬件,其中所述保守光栅化硬件包括:
多个第一硬件子单元,每个第一硬件子单元被布置成,针对图元的不同边缘,计算所述边缘的外部覆盖结果和微瓦片中的每个像素的所述边缘的内部覆盖结果;以及
多个第二硬件子单元,每个第二硬件子单元被布置成,针对微瓦片中的不同像素,计算所述图元的外部覆盖结果和所述图元的内部覆盖结果,
其中每个第一硬件子单元包括:
边缘测试计算硬件,其被布置成,针对所述微瓦片中的所述像素的每个角,计算指示所述像素角是否在所述边缘的左侧的值;
多个OR逻辑块,每个OR逻辑块被配置为执行OR运算,所述微瓦片中的每个像素各一个OR逻辑块,并且每个逻辑块被布置成从所述边缘测试计算硬件接收四个值作为输入,所述像素的每个角各一个值,并且其中所述OR逻辑块的输出是所述像素和所述边缘的所述外部覆盖结果;以及
第一多个AND逻辑块,每个AND逻辑块被配置为执行AND运算,所述微瓦片中的每个像素各一个AND逻辑块,并且每个AND逻辑块被布置成从所述边缘测试计算硬件接收四个值作为输入,所述像素的每个角各一个值,并且其中所述AND逻辑块的输出是所述像素和所述边缘的所述内部覆盖结果;
并且其中每个第二硬件子单元包括:
第二多个AND逻辑块,所述微瓦片中的每个像素各一个AND逻辑块,并且每个AND逻辑块被布置成接收所述像素和每个所述边缘的外部覆盖结果作为输入,每个所述第一硬件子单元提供一个输入,并且其中所述AND逻辑块的输出是所述像素和所述图元的所述外部覆盖结果;以及
第三多个AND逻辑块,所述微瓦片中的每个像素各一个AND逻辑块,并且每个AND逻辑块被布置成接收所述像素和每个所述边缘的内部覆盖结果作为输入,每个所述第一硬件子单元提供一个输入,并且其中所述AND逻辑块的输出是所述像素和所述图元的所述内部覆盖结果。
2.根据权利要求1所述的图形处理流水线,其中所述边缘测试计算硬件包括一个或多个硬件布置,每个硬件布置被布置成使用乘积之和来执行边缘测试,每个硬件布置包括:
微瓦片部件硬件元件,包括硬件逻辑,其被布置成使用所述乘积之和以及所述渲染空间中的瓦片内的微瓦片的坐标来计算第一输出;
多个像素部件硬件元件,每个像素部件硬件元件包括硬件逻辑,其被布置成使用所述乘积之和以及相对于所述微瓦片的原点定义的不同像素角的坐标来计算多个第二输出中的一个;
多个加法器,其被布置成通过对每个输出结果,组合所述第一输出和所述多个第二输出之一的不同组合,并行地生成针对所述乘积之和的多个输出结果。
3.根据权利要求2所述的图形处理流水线,其中每个硬件布置还包括:
子采样部件硬件元件,所述子采样部件硬件元件包括被布置成输出固定的第三输出的硬件逻辑,
并且其中所述多个加法器被布置成通过对于每个输出结果,组合所述第三输出和所述第一输出与所述多个第二输出之一的不同组合来生成所述多个输出结果。
4.根据权利要求3所述的图形处理流水线,其中所述固定的第三输出被设置为零。
5.根据权利要求2所述的图形处理流水线,其中所述硬件布置中的一个或多个还包括:
多个多路复用器,其被布置成选择所述第一输出和所述多个第二输出之一的所述不同组合。
6.根据权利要求2所述的图形处理流水线,其中所述多个加法器包括:
多个加法和比较元件,每个加法和比较元件被布置成通过组合所述第一输出和所述多个第二输出之一的不同组合来生成所述多个输出结果中的不同的结果。
7.根据权利要求6所述的图形处理流水线,其中一个或多个所述硬件布置还包括第一多个多路复用器,所述第一多个多路复用器中的每个所述多路复用器都具有多个输入和一个输出,其中每个输入被布置成从所述多个像素部件硬件元件接收所述多个第二输出中的不同的输出,并且所述多路复用器被布置成选择所接收的第二输出之一,并通过所述输出端将所选择的第二输出输出到所述多个加法和比较元件。
8.根据权利要求2所述的图形处理流水线,其中所述多个加法器包括所述多个加法器的第一子集和所述多个加法器的第二子集,
其中每个所述像素部件硬件元件还包括用于接收来自所述微瓦片部件硬件元件的所述第一输出的输入端,以及所述多个加法器的所述第一子集中的至少一个,其被布置成对从所述微瓦片部件硬件元件接收的所述第一输出和由所述像素部件硬件元件计算出的所述第二输出进行求和以生成中间结果,并且
其中所述多个加法器的所述第二子集包括:
多个比较元件,每个比较元件被布置成通过评估所述中间结果中的不同的中间结果来生成所述多个输出结果中的不同的输出结果。
9.根据权利要求8所述的图形处理流水线,其中一个或多个所述硬件布置还包括第一多个多路复用器,所述第一多个多路复用器中的每个所述多路复用器都具有多个输入和一个输出,其中每个输入被布置成从所述多个像素部件硬件元件接收所述中间结果中的不同的中间结果,并且所述多路复用器被布置成选择所接收的中间结果之一并且通过所述输出端将所选择的中间结果输出到所述多个比较元件中的一个。
10.根据权利要求1所述的图形处理流水线,其中所述边缘测试计算硬件包括一个或多个硬件布置,每个硬件布置被布置成使用乘积之和来执行边缘测试,每个硬件布置包括:
微瓦片部件硬件元件,包括硬件逻辑,其被布置成使用所述乘积之和以及所述渲染空间中的瓦片内的微瓦片的坐标来计算第一输出;
多个像素部件硬件元件,每个像素部件硬件元件包括:
硬件逻辑,其被布置成使用所述乘积之和以及相对于所述微瓦片的原点定义的不同像素角的坐标来计算多个第二输出中的一个;
用于接收来自所述微瓦片部件硬件元件的所述第一输出的输入端;
多个加法器,其被布置成对从所述微瓦片部件硬件元件接收的所述第一输出和由所述像素部件硬件元件计算出的所述第二输出进行求和以生成中间结果;以及
比较元件,其被布置成通过评估所述中间结果来生成所述多个输出结果之一。
11.一种用于在图形流水线中执行保守光栅化的方法,所述图形流水线被布置成在渲染空间中进行渲染,其中所述渲染空间被细分成多个瓦片,每个瓦片被细分成多个微瓦片,每个微瓦片包括相同的像素(106)布置,所述方法包括:
针对图元的每个边缘和所述微瓦片中的像素的每个角,计算指示所述像素角是否在所述边缘的左侧的值;以及
对于每个像素,所述像素具有四个角:
对于每个边缘,在OR逻辑块中,将所述四个计算出的值组合,以生成并输出所述像素和所述边缘的外部覆盖结果;
对于每个边缘,在AND逻辑块中,将所述四个计算出的值组合,以生成并输出所述像素和所述边缘的内部覆盖结果;
在AND逻辑块中组合针对所述图元的每个边缘的所述像素的外部覆盖结果,以生成所述并输出像素和所述图元的外部覆盖结果;以及
在AND逻辑块中组合针对所述图元的每个边缘的所述像素的内部覆盖结果,以生成并输出所述像素和所述图元的内部覆盖结果。
12.根据权利要求11所述的方法,其中计算指示所述像素角是否在所述边缘的左侧的值包括:
在第一硬件元件中,基于瓦片内的微瓦片的坐标来计算第一输出;
在多个第二硬件元件中的每一个中,基于微瓦片内的所述像素角的坐标来计算第二输出;以及
将所述第一输出与所述第二输出组合。
13.根据权利要求12所述的方法,其中将所述第一输出与所述第二输出组合包括:
确定所述第一输出和所述第二输出之和的符号。
14.根据权利要求12所述的方法,其中通过在多个加法和比较元件的每一个中组合所述第一输出和第二输出的不同组合,针对微瓦片中的不同像素角并行生成指示像素角是否在所述边缘所述左侧的多个值。
15.一种图形处理流水线,其被配置为执行权利要求11所述的方法。
16.根据权利要求1所述的图形处理流水线,其中所述图形处理系统在集成电路上的硬件中实现。
17.一种计算机可读代码,其被配置为在所述代码运行时使得方法被执行,其中所述方法用于在被布置成在渲染空间中进行渲染的图形流水线中执行保守光栅化,其中所述渲染空间被细分成多个瓦片,每个瓦片被细分成多个微瓦片,每个微瓦片包括相同的像素布置,所述方法包括:
针对图元的每个边缘和所述微瓦片中的像素的每个角,计算指示所述像素角是否在所述边缘的左侧的值;以及
对于每个像素,所述像素具有四个角:
对于每个边缘,在OR逻辑块中,将所述四个计算出的值组合,以生成并输出所述像素和所述边缘的外部覆盖结果;
对于每个边缘,在AND逻辑块中,将所述四个计算出的值组合,以生成并输出所述像素和所述边缘的内部覆盖结果;
在AND逻辑块中组合针对所述图元的每个边缘的所述像素的外部覆盖结果,以生成所述并输出像素和所述图元的外部覆盖结果;以及
在AND逻辑块中组合针对所述图元的每个边缘的所述像素的内部覆盖结果,以生成并输出所述像素和所述图元的内部覆盖结果。
18.一种计算机可读存储介质,其上编码有根据权利要求17所述的计算机可读代码。
19.一种制造方法,其使用集成电路制造系统来制造根据权利要求1所述的图形处理流水线。
20.一种集成电路制造系统,包括:
非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,所述计算机可读描述对根据权利要求1所述的图形处理流水线进行描述;
布局处理系统,其被配置为处理所述集成电路描述,以便生成体现所述图形处理流水线的集成电路的电路布局描述;以及
集成电路生成系统,其被配置为根据所述电路布局描述来制造所述图形处理流水线。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1810719.3 | 2018-06-29 | ||
GB1810719.3A GB2570173B (en) | 2018-06-29 | 2018-06-29 | Conservative Rasterization |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110660069A true CN110660069A (zh) | 2020-01-07 |
Family
ID=63143802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910562437.7A Pending CN110660069A (zh) | 2018-06-29 | 2019-06-26 | 保守光栅化 |
Country Status (4)
Country | Link |
---|---|
US (4) | US10861204B2 (zh) |
EP (1) | EP3588442A1 (zh) |
CN (1) | CN110660069A (zh) |
GB (1) | GB2570173B (zh) |
Families Citing this family (2)
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 |
GB2570173B (en) * | 2018-06-29 | 2020-02-12 | Imagination Tech Ltd | Conservative Rasterization |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5949428A (en) * | 1995-08-04 | 1999-09-07 | Microsoft Corporation | Method and apparatus for resolving pixel data in a graphics rendering system |
GB2511817A (en) | 2013-03-14 | 2014-09-17 | Imagination Tech Ltd | Rendering in computer graphics systems |
US9418437B2 (en) * | 2013-03-15 | 2016-08-16 | Nvidia Corporation | Stencil then cover path rendering with shared edges |
US9324127B2 (en) * | 2014-02-14 | 2016-04-26 | Qualcomm Incorporated | Techniques for conservative rasterization |
US20160125263A1 (en) * | 2014-11-03 | 2016-05-05 | Texas Instruments Incorporated | Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor |
US10089779B2 (en) * | 2016-04-01 | 2018-10-02 | Intel Corporation | Apparatus and method for conservative rasterization of polygons |
GB2561557B (en) * | 2017-04-13 | 2020-08-12 | Advanced Risc Mach Ltd | Graphics processing method and apparatus in which modified edge positions are used in rasterisation |
GB2570173B (en) * | 2018-06-29 | 2020-02-12 | Imagination Tech Ltd | Conservative Rasterization |
-
2018
- 2018-06-29 GB GB1810719.3A patent/GB2570173B/en active Active
-
2019
- 2019-06-26 CN CN201910562437.7A patent/CN110660069A/zh active Pending
- 2019-06-26 EP EP19182636.1A patent/EP3588442A1/en active Pending
- 2019-06-28 US US16/457,472 patent/US10861204B2/en active Active
-
2020
- 2020-11-04 US US17/088,691 patent/US11276212B2/en active Active
-
2022
- 2022-02-04 US US17/665,409 patent/US11682147B2/en active Active
-
2023
- 2023-06-20 US US18/211,754 patent/US20230351653A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US10861204B2 (en) | 2020-12-08 |
GB2570173B (en) | 2020-02-12 |
US11682147B2 (en) | 2023-06-20 |
US20210049798A1 (en) | 2021-02-18 |
EP3588442A1 (en) | 2020-01-01 |
GB2570173A (en) | 2019-07-17 |
US20230351653A1 (en) | 2023-11-02 |
US20200005504A1 (en) | 2020-01-02 |
US11276212B2 (en) | 2022-03-15 |
US20220254077A1 (en) | 2022-08-11 |
GB201810719D0 (en) | 2018-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10140761B2 (en) | Generation of a control stream for a tile | |
US20230351653A1 (en) | Conservative rasterization | |
US20230401779A1 (en) | Edge test and depth calculation in graphics processing hardware | |
US20220284644A1 (en) | Conservative Rasterization Using Gradients | |
GB2549789A (en) | Generation of a control stream for a tile | |
US20240005571A1 (en) | Rasterising Aliased Lines | |
GB2549787A (en) | Generation of a control stream for a tile | |
GB2606101A (en) | Edge and depth processing hardware | |
CN115908680A (zh) | 纹理地址产生 | |
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 |