CN110728734A - 使用梯度的保守光栅化 - Google Patents
使用梯度的保守光栅化 Download PDFInfo
- Publication number
- CN110728734A CN110728734A CN201910562145.3A CN201910562145A CN110728734A CN 110728734 A CN110728734 A CN 110728734A CN 201910562145 A CN201910562145 A CN 201910562145A CN 110728734 A CN110728734 A CN 110728734A
- Authority
- CN
- China
- Prior art keywords
- pixel
- output
- hardware
- edge
- tile
- 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
Images
Classifications
-
- 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
- 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/20—Drawing from basic elements, e.g. lines or circles
-
- 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/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20021—Dividing image into blocks, subimages or windows
-
- 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
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/122—Tiling
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Hardware Design (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- General Engineering & Computer Science (AREA)
Abstract
本发明描述了保守光栅化硬件,其包括硬件逻辑,所述硬件逻辑被布置成对图元的每个边缘以及对微图块中每个像素的两个拐角执行边缘测试计算。被使用的两个拐角是基于边缘的梯度选择的,一个拐角的边缘测试结果是内覆盖结果,另一拐角的边缘测试结果是该像素的外覆盖结果。通过在与门中组合所述像素和所述图元的每一个边缘的外覆盖结果,计算所述像素和所述图元的总外覆盖结果。以相似方式计算所述像素的总内覆盖结果。
Description
背景技术
在计算机图形学中,代表场景中的物体的一组表面被划分成许多较小和较简单的片断(称作图元), 这些片断通常是三角形的,更适合渲染。产生的被划分表面通常是原始表面的近似,但这种近似的准确 性可通过增大所生成的图元的数目来提高,这又通常导致图元更小。次划分的数量通常是由细节层次 (LOD)确定的。因此通常使用需要较高细节层次的增大数目的图元,例如,因为物体更靠近观察者和/ 或物体具有更复杂的形状。然而,使用较大数目的三角形增加了渲染场景所需的处理努力,因此增大了 执行该处理的硬件的大小。而且,由于平均三角形大小减小,所以混叠(例如,当有角度的线参差不齐 地出现时)出现得更频繁,因此图形处理系统使用抗混叠技术,这通常涉及获取每个像素的几个样本, 随后对数据进行滤波。
由于被生成的图元的数目增加,处理图元的图形处理系统的能力变得更重要。提高图形处理系统的 效率的一种已知方式是以tile-based(基于图块)方式渲染图像。这样,图元将被渲染到的渲染空间被划 分成多个图块(tile),这些图块然后被相互独立地渲染。Tile-based图形系统包括平铺图元的平铺单元, 即对于图元确定图元处于渲染空间的哪个图块中。然后,当渲染单元渲染图块时,给定信息(例如按图 块(per-tile)列表)指示应当使用哪些图元来渲染图块。
Tile-based渲染的替代方式是中间模式渲染。在此类系统中,不存在生成按图块列表的平铺单元,并 且每个图元似乎被立即渲染;然而,即使在此类系统中,渲染空间仍可以被划分成像素图块,并且仍可 以逐个图块渲染每个图元,在进行到下一图块之前处理图块中的每个像素。这是为了提高存储器参量的 局部性进行的。
只通过实例提供下面描述的实施例,不是限制实施方式,其解决了已知图形处理管线的任何或全部 缺点。
发明内容
提供本发明内容部分以用简化形式介绍构思的选择,这在下面的具体实施方式部分中进一步描述。 本发明内容部分不旨在标识所声称的主题的关键特征或基本特征,也不旨在用于限制所声称的主题的范 围。
描述了一种图形处理管线,其包括保守光栅化硬件。所述保守光栅化硬件包括硬件逻辑,所述硬件 逻辑被布置成对图元的每个边缘以及对微图块中每个像素的两个拐角并行地执行边缘测试计算。被使用 的两个拐角是基于边缘的梯度选择的,一个拐角的边缘测试结果是内覆盖结果,另一拐角的边缘测试结 果是该像素的外覆盖结果。通过在与门中组合所述像素和所述图元的每一个边缘的外覆盖结果,计算所 述像素和所述图元的总外覆盖结果。以相似方式计算所述像素的总内覆盖结果。此硬件可以通过将所述 像素拐角位置从实际像素拐角偏移,精确地执行覆盖测试或者可包括不确定区域。
第一方面提供一种被布置成在渲染空间中渲染的图形处理管线,其中,所述渲染空间被细分成多个 图块,每个图块被细分成多个微图块,每个微图块包括像素的相同排列;所述图形处理管线包括保守光 栅化硬件,并且其中,所述保守光栅化硬件包括:多个第一硬件子单元,每一个被布置成对于微图块中 的每个像素对于图元的不同边缘计算所述边缘的外覆盖结果和所述边缘的内覆盖结果;和多个第二硬件 子单元,每一个被布置成对于微图块中的不同像素计算所述图元的外覆盖结果和所述图元的内覆盖结果; 其中,每个第一硬件子单元包括:象限选择硬件,所述象限选择硬件被布置成使用限定图元边缘的向量 的梯度识别第一像素拐角位置和第二像素拐角位置;和边缘测试计算硬件,所述边缘测试计算硬件被布 置成对于所述微图块中每个像素的每个像素拐角位置计算对所述像素拐角位置是否在所述边缘的左边进 行指示的值,其中,所述第一像素拐角位置的值是所述像素的外覆盖结果,所述第二像素拐角位置的值 是所述像素的内覆盖结果;并且其中,每个第二硬件子单元包括:第一多个与门,所述微图块中的每个 像素用一个与门,并且每个与门被布置成接收所述像素和每一个所述边缘的外覆盖结果作为输入,所述 输入来自所述第一硬件子单元中的每一个,并且其中,所述与门的输出是所述像素和所述图元的外覆盖结果;和第二多个与门,所述微图块中的每个像素用一个与门,并且每个与门被布置成接收所述像素和 每一个所述边缘的内覆盖结果作为输入,所述输入来自所述第一硬件子单元中的每一个,并且其中,所 述与门的输出是所述像素和所述图元的内覆盖结果。
第二方面提供一种在图形管线中执行保守光栅化的方法,所述图形管线被布置成在渲染空间中渲染, 其中,所述渲染空间被细分成多个图块,每个图块被细分成多个微图块,每个微图块包括像素的相同排 列,所述方法包括:对于图元的每个边缘,基于限定所述边缘的向量的梯度识别第一像素拐角位置和第 二像素拐角位置;对于所述微图块中的每个像素以及对于所述图元的每个边缘,计算第一值,所述第一 值指示所述第一像素拐角位置是否在所述边缘的左边,其中,所述第一值是所述像素的外覆盖结果;并 计算第二值,所述第二值指示所述第二像素拐角位置是否在所述边缘的左边,其中,所述第二值是所述 像素的内覆盖结果;对于所述图元的每个边缘在与门中组合所述像素的外覆盖结果,以生成并输出所述 像素和所述图元的外覆盖结果;和对于所述图元的每个边缘在与门中组合所述像素的内覆盖结果,以生 成并输出所述像素和所述图元的内覆盖结果。
包括保守光栅化硬件的图形处理管线可以在集成电路上以硬件实施。可以提供一种在集成电路制造 系统处制造包括保守光栅化硬件的图形处理管线的方法。可以提供一种集成电路定义数据集,其在集成 电路制造系统处被处理时使得系统制造包括保守光栅化硬件的图形处理管线。可以提供一种非暂时性计 算机可读存储介质,所述非暂时性计算机可读存储介质上存储了集成电路的计算机可读描述,当所述计 算机可读描述被处理时使布局处理系统生成用在集成电路制造系统中的电路布局描述,以制造包括保守 光栅化硬件的图形处理管线。
可以提供一种集成电路制造系统,包括:非暂时性计算机可读存储介质,所述非暂时性计算机可读 存储介质上存储了计算机可读集成电路描述,所述计算机可读集成电路描述对包括保守光栅化硬件的图 形处理管线进行描述;布局处理系统,所述布局处理系统被配置成处理所述集成电路描述,以便生成实 施包括保守光栅化硬件的图形处理管线的集成电路的电路布局描述;和集成电路生成系统,所述集成电 路生成系统被配置成根据所述电路布局描述制造包括保守光栅化硬件的图形处理管线。
可以提供用于执行本文中描述的任何方法的计算机程序代码。可以提供非暂时性计算机可读存储介 质,所述非暂时计算机可读存储介质上存储了计算机可读指令,当所述计算机可读指令在计算机系统处 被执行时使所述计算机系统执行本文中描述的任何方法。
上述特征可适当地组合,这对本领域技术人员是显然的,并且可以与本文中描述的实例的任何方面 组合。
附图说明
现在将参考附图更详细地描述实例,其中:
图1是被划分成图块和微图块的渲染空间的示意图;
图2A是示例性图形处理单元(GPU)管线的示意图;
图2B是显示各个图元的边缘向量的示意图;
图3A是更详细地显示图2A的管线的保守光栅化硬件的第一部分的示意图;
图3B是更详细地显示图2A的管线的保守光栅化硬件的第二部分的示意图;
图4是执行保守光栅化的示例性方法的流程图;
图5A-5C是显示图示像素拐角位置的选择的示意图;
图6示出了实施包括保守光栅化硬件的图形处理管线的计算机系统;
图7示出了用于生成集成电路的集成电路制造系统,其实施包括本文中描述的保守光栅化硬件的图 形处理管线;
图8A更详细地示出了图3A的边缘测试硬件的第一示例性实施方式的示意图;
图8B更详细地示出了图3A的边缘测试硬件的第二示例性实施方式的示意图;以及
图9是执行边缘检测的示例性方法的流程图。
附图图示了各个实例。本领域技术人员将认识到图中图示的元件边界(例如,框、框的组合或其它 形状)表示边界的一个实例。在一些实例中,可能是一个元件可以被指定为多个元件,或者多个元件可 以被指定为一个元件。适当时在所有图式中使用共同的附图标记以指示相似的特征。
具体实施方式
通过实例呈现以下描述以使得本领域技术人员制造和使用本发明。本发明不局限于本文中描述的实 施例,所公开的实施例的各种变形将对本领域技术人员是显然的。
现在只通过实例描述实施例。
本文中描述了执行保守光栅化的硬件。此硬件可以在图形处理管线的光栅化阶段内(例如,在图形 处理单元GPU内)实施。保守光栅化涉及确定方形像素区域是否被图元完全覆盖(这称作“内覆盖”)、 是否被图元部分覆盖(这称作“外覆盖”)或是否根本没有被图元覆盖。本文中描述的保守光栅化硬件提供 了获得外覆盖结果和内覆盖结果的有效途径(例如,在物理尺寸和功耗方面)。
本文中描述的硬件依赖于渲染空间的规则再划分,这可关于图1描述。渲染空间100被划分成多个 图块102(例如,可以是方形或矩形),并且每个图块还被划分成称作“微图块”的更小区域104的规则排 列。在每个图块102内,存在微图块104的预定义排列,在各个实例中,所有的微图块104大小相同。尽 管图1示出了图块102内5x4个微图块104的排列,在其它实例中,在每个图块102中可以有不同数目的 微图块104。每个微图块104包括相同数目(和排列)的像素106。在图1中所示的实例中,每个微图块 104包括16个像素106的4x4排列。
如下面更详细地描述的,本文中描述的保守光栅化硬件对于图元的每个边缘计算微图块中每个像素 的两个对角相对的拐角的边缘测试结果,这两个像素拐角中的一个的边缘测试结果是图元的边缘的外覆 盖结果,这两个像素拐角的另一个的边缘测试结果是图元的边缘的内覆盖结果。基于边缘向量的梯度选 择使用的像素拐角,对于整个微图块也是相同的。特定像素的整个图元(不只是图元的单个边缘)的外 覆盖结果和内覆盖结果是通过在硬件逻辑(例如,使用与门)中对每个个别边缘组合像素的对应结果获 得的。使用本文描述的硬件,覆盖测试可以被精确地执行,或者所使用的像素拐角可以与真实像素拐角偏置,以便在保守光栅化中包括不确定区域。
图2A示出了示例性图形处理单元(GPU)管线200的示意图,其可以在GPU内在硬件中实施,并 使用tile-based渲染方法。本文中描述的硬件还可以用在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的一部分。象限选择硬件301确定将由后续边缘 测试硬件302使用的两个像素拐角位置(块402)。基于边缘向量(例如,图5A中示出的像素拐角50A、 50B)的梯度从可能的四个像素拐角中选择两个像素拐角位置。被选择的两个像素拐角总是彼此对角相对。 在准确地执行保守光栅化时,所选择的位置正好对应于像素拐角,如图5A中所示;然而,在包括不确定 区域时,像素拐角位置与图5B所示的像素拐角偏移,此偏移(如由图5B中的箭头所指示)在远离像素 的中心的方向上预定义量(例如,在x方向和y方向上都偏移1/512)。
可以关于图5C描述基于梯度选择像素拐角位置(在块402)。图5C是示出被划分成四个象限501- 504的边缘的可能梯度的示意图。如果边缘的梯度在第一象限501(即在边缘向量中的系数A和B都是正 的),则选择右下像素拐角51A和左上像素拐角51B。如果边缘的梯度在第二象限502(即在边缘向量中 的系数A是负的,且系数B是正的)则选择左下像素拐角52A和右上像素拐角52B。如果边缘的梯度在 第三象限503(即在边缘向量中的系数A和B都是负的),则选择左上像素拐角53A和右下像素拐角 53B。如果边缘的梯度在第四象限504(即在边缘向量中的系数A是正的且系数B是负的),则选择右上 像素拐角54A和左下像素拐角54B。在被选择的这些像素拐角中,第一(标记为A并以黑色圆圈显示) 随后被使用以计算外覆盖结果,第二(标记为B并以白色圆圈显示)随后被用来计算内覆盖结果。图5C 的这种描述假设使用图元的顺时针环绕顺序。这是一种设计选择,如果使用逆时针顺序,则可以适当地 修改所述方法。修改将取决于所选择的用于产生系数的方法,例如,可能涉及将样本点的选择旋转180 度和/或反转边缘测试的符号。
已经确定两个像素拐角位置后(在象限选择硬件301中),边缘测试硬件302对两个所选择像素拐 角位置中的每一个通过计算该边缘的f(x,y)的值或符号计算像素拐角是否位于边缘上或者位于边缘的左 边或右边(块404,406)。这是因为:
·如果f(x,y)计算出是正的(即大于零),则像素拐角在边缘的右边
·如果f(x,y)计算出是负的(即小于零),则像素拐角在边缘的左边
·如果f(x,y)计算出正好为零,则像素拐角正好在边缘上
尽管图3A只示出2个分立的边缘测试硬件元件302,但要认识到可以有比这更多的这种元件,在各 个实例中,边缘测试硬件元件302可以被组合到边缘测试硬件逻辑中,边缘测试硬件逻辑被布置成并行 地计算多个边缘测试结果,例如,并行地计算微图块104中像素拐角位置中每一个的边缘测试结果。通 过组合边缘测试硬件逻辑,系数可以用硬件获得,和/或中间结果可以重新使用,即用在计算超过一个边 缘测试结果中。这种组合硬件的实例在共同待决的英国申请第1805608.5号中描述,并且也在图8A、图 8B和图9中示出并在下面描述。
像素的两个像素拐角位置的f(x,y)的符号(或值)(如在硬件元件302和块404、406中计算的)是: 对于像素i和边缘n第一像素拐角位置的结果是外覆盖结果On,i,对于像素i和边缘n第二像素拐角位置 的结果是内覆盖结果In,i。
已经计算出像素i和每个边缘n的外覆盖结果后On,i后,使用如图3B所示的与门308组合不同边缘 的结果(块408)。这生成像素i的单个外覆盖结果Oi,并且如果是负的,则指示图元并不与方形像素区 域的任何部分相交。保守光栅化不允许外覆盖结果有假阴性,然而允许外覆盖结果有少量的假阳性。使 用本文中描述的方法和硬件,内覆盖的假阳性结果的数目降低(内覆盖没有内在的假阳性)。
已经计算出像素i和每个边缘n的内覆盖结果In,i后,使用如图3B所示的与门310组合不同边缘的结 果(块410)。这生成像素i的单个内覆盖结果Ii,并且如果是负的,则其指示图元并没有完全覆盖方形 像素区域。
虽然图3B和上面的描述提到使用与门308、310,但要认识到这些门(和任何其它本文中提到的与门) 可以替代性由任何逻辑块替代,所述逻辑块被配置成执行与(AND)运算,此逻辑块可称作与逻辑块。
如上面提到的,使用上述的方法获得的外覆盖结果包括许多假阳性。通过应用边界框并从外覆盖阳 性结果中排除在边界框外部的任何像素,可以消除假阳性。生成边界框,使得其包含该图元,并且例如 边界框可以被计算,使得边界框的顶点坐标由图元的顶点的最大x值、最大y值、最小x值和最小y值给 定(即左上顶点=(min x,max y,),右上顶点=(max x,max y),右下顶点=(max x,min y),左下顶 点=(min x,min y))。例如,可以通过计算(例如提前)对于图元与边界框对应的掩膜来实施边界框的 应用,在边界框内部的所有这些像素具有为一的掩膜位,在边界框外部的所有那些像素具有为零的掩膜 位。与逻辑块然后可以用来组合像素i的单个外覆盖结果Oi和像素i的掩膜位,以生成像素i的最终外覆 盖结果Oi'。相比不应用边界框,像素的最终外覆盖结果具有更少的假阳性。
图8A和图8B示出了图3A中示出的边缘测试硬件302的两种不同的示例性实施方式。如上所述, 图8A和图8B中所示的实施方式可以对应于多个边缘测试硬件元件302,这产生更有效的硬件实施方式 (例如,在物理尺寸和功耗方面)。
图8A中所示的第一示例性硬件布置800包括单个微图块组件硬件元件802、多个(例如,每个像素 一个,所以对于图1中所示的实例为16个)像素组件硬件元件804、两个子采样组件硬件元件806和多 个(例如,每个像素两个,所以对于图1中所示的实例为32个)加法比较元件(例如可以被实施为多个 加法器)808,每个加法比较元件808生成同一微图块内不同像素拐角位置的输出结果(因此一对加法比 较元件808生成单个像素的两个输出结果)。硬件布置800可以另外包括多个多路复用器810,其将微图 块组件硬件元件802、像素组件硬件元件804和子采样组件元件806连接至加法比较元件808。在包括多 路复用器810的实例中,一个或多个选择信号(其还可以称作“模式信号”,并且可包括独热码(one-hot)信号,其对硬件的操作的特定模式进行编码)控制多路复用器810的操作,特别是控制硬件元件802、 804、806中哪个组合连接至每个加法比较元件808(例如,对于每个加法比较元件808,多个像素组件硬 件元件804中的哪一个和子采样组件硬件元件806中的哪一个(在超过一个时)连接至加法比较元件808, 每个加法比较元件808还连接至单个微图块组件硬件元件802。)
如上所述,如果边缘测试硬件302估计形式为以下的SOP:
f(x,y)=Ax+By+C
其中,系数A、B、C的值对每个被估计的SOP可能不同,微图块组件硬件元件802估计:
fUT(xUT,yUT)=AxUT+ByUT+C
其中,xUT和yUT的值(相对于图块原点110的微图块坐标)对不同微图块不同。微图块组件硬件元 件802可以接收A、B、C、xUT和yUT的值作为输入,且该元件输出单个结果fUT。
像素组件硬件元件804估计:
fP(xP,yP)=AxP+ByP
这是对于xP和yP的不同值(其中,这些值对微图块内的不同像素是不同的)进行的。xP和yP的值的 集合(即对微图块内的所有像素xP和yP的值,如相对于微图块原点定义的)对所有微图块是相同的,例 如,他们可以由边缘测试硬件302计算或者可以从查询表(LUT)访问。在各个实例中,微图块的原点 可以被定义为每个微图块的左上拐角,且xP和yP的值可以是整数,所以这些值的确定要求很少或不要求 任何运算(因此这提供有效的实施方式)。再参照图1中所示的实例,其中,每个微图块包括四行四个 像素,则xP的值的集合是{0,1,2,3}(其还可以写成[0,3]),yP的值的集合是{0,1,2,3}(其也可以写成 [0,3])。每个像素组件硬件元件804接收A和B作为输入,并且还可以接收xP和yP的值的集合(例如, 在这些参数不是整数的实例中)。每个元件804输出单个结果fP,因此fP的计算可以与为确定xP和/或yP而执行的任何计算合并。
子采样组件硬件元件806估计:
fs(xs,ys)=Axs+Bys
这是对于xs和ys的不同值进行的,其中,这些值对两个不同的像素拐角位置不同(例如,如在图5A- 5C中示出并在上文描述的)。xS和yS的值的集合(即对于两个所选择像素拐角位置xS和ys的值,如相对 于像素原点定义的)对于微图块内的所有像素是相同的,他们在象限选择硬件301中确定,并且值本身 可以被输入到子采样组件硬件元件806,或者像素拐角位置的识别符可以被输入,且实际上这些值可以被 元件806或共享硬件逻辑计算或确定(例如,从查询表(LUT)中访问)。每个子采样组件硬件元件806 接收A和B作为输入。每个元件806输出单个结果fs,因此fs的计算可以与为确定xs和/或ys而执行的任 何计算合并。
加法比较元件808估计:
f(x,y)=fUT+fP+fs
每个加法比较元件808对fUT、fP,和fs值的不同组合求和(其中,值的特定组合被提供作为加法比较 单元808的输入),这种组合或者是固定的(即元件之间的硬连线)或者由一个或多个多路复用器810 (在提供时)选择。为了执行边缘测试,只有结果的(即f(x,y)的)MSB(或符号位)输出,因此全部 结果并不需要由加法比较元件508计算,加法比较元件508可以执行比较而不是加法(这降低了硬件的 总面积)。此MSB指示结果的符号(因为a>b===sign(b-a)),并且如上面描述的,这指示像素拐角 位置是否在边缘的左边或右边。
图8B中示出的第二示例性硬件布置820是图8A中示出的硬件布置800的变形。此第二示例性硬件 布置820包括单个微图块组件硬件元件802、多个(例如16个)像素组件硬件元件824(尽管这些与图 8A中所示并在上文描述的略微不同地操作)、两个子采样组件硬件元件806和多个(例如,对于每个像 素两个,所以对于图1中所示的实例是32个)加法比较元件(例如,可以实施为多个加法器)828(尽 管这些与图8B中所示并在上文描述的略微不同地操作),每个加法比较元件828生成输出结果。与图 8A中示出的硬件布置800相同,图8B中示出的硬件布置820可以另外包括由选择信号控制的多个多路 复用器810。
如上所述,如果边缘测试硬件302估计形式为以下的SOP:
f(x,y)=Ax+By+C
其中,系数A、B、C的值可能对每个被估计的SOP不同,微图块组件硬件元件802如参照图8A与 上面描述的一样操作;然而,输出不是被直接馈送到加法单元828(如图8A中所示),在图8B的布置 820中,微图块组件硬件元件802的输出被输入到多个像素组件硬件元件824中的每一个。一个或多个子 采样组件硬件元件806中的每一个也如参照图8A与上文描述的一样操作。
在图8B的布置820中的像素组件硬件元件824不以与图8A中示出的相同方式操作。他们接收微图 块组件硬件元件802的输出fUT作为输入(除了A和B外),并估计:
fUT(xUT,yUT)+fP(xP,yP)=fUT(xUT,yUT)+AxP+ByP
这是对于xP和yP的不同值(其中,这些值对微图块内的不同像素是不同的)进行的。如上所述(参 照图8A),xP和yP的值(即对于微图块内的所有像素xP和yP的值,如相对于微图块原点定义的)可以是 整数,因此像素组件硬件元件824可包括加法器的布置,以将适当倍数的A和/或B加入到由微图块组件 硬件元件802生成的输入值fUT,这可以在不使用任何乘法器下实施,降低了加法比较单元828的大小和/ 或功耗。每个元件824输出单个结果fUT+fP,如上所述,fP的计算且因此还有单个结果的计算可以与为 确定xP和/或yP执行的任何计算合并。
加法比较元件828估计:
f(x,y)=fUT+fP+fS
所述估计以与上述的加法比较元件808相似的方式进行;然而,输入是不同的,原因是fUT和fP的值 已经在像素组件硬件元件824中被组合。每个加法比较元件428对(fUT+fP)和fS值的不同组合求和(其 中,值的特定组合作为输入提供到加法比较单元828),并且组合是固定的(即硬连线的)或由一个或多 个多路复用器810(在提供时)选择。如上所述,在各个实例中,只有结果的(即f(x,y)的)MSB(或符 号位)被输出,因此完全结果并不需要被计算。此MSB指示结果的符号,并且如上面描述的,这指示像 素拐角位置是否在边缘的左边或右边。
图8B中示出的硬件布置820可以应用于以下情况,即fP的值可以被快速地计算或者替代性地,UTC 计算可以在先前管线阶段执行。通过使用此布置820,硬件布置820的总面积可以相比图8A中所示的布 置802减小(例如,加法比较元件828可以比加法比较元件808更小);然而,由像素组件硬件元件824 输出的每个结果包括比图8A中所示的布置800更多的位数(例如,近似多15位)。
尽管图8B示出了与子采样组件硬件元件806对齐的微图块组件硬件元件802,但这些计算可以不是 并行执行的。在各个实例中,在硬件布置中的第一管线阶段可以计算微图块组件fUT(在微图块组件硬件 元件802中),并且并行地执行子采样位置的查询(例如,如上面描述的从LUT)。这最大化了第二管 线阶段中运算可用的时间,其中,像素组件硬件元件824将像素组件fP增加到微图块组件fUT,并且并行 地子采样组件硬件元件806计算子采样(或像素拐角位置)组件fS。
尽管图8A和图8B示出了硬件元件802、804、806、824连接至单个加法比较元件808、828(可选 地通过多路复用器810),但这只是为了降低图的复杂性。如上所述,每个加法比较元件808、828生成 输出结果,并且硬件布置800、820在所有实例中被布置成并行地计算多个结果(例如,32个结果),因 此包括多个加法比较元件808、828(例如,32个加法比较元件)。
尽管图8A和图8B两者都只示出了单个微图块组件元件802,使得由硬件布置800、820并行地生成 的所有结果涉及相同微图块内的像素拐角位置,但在其它实例中,硬件布置可包括多个微图块组件元件 802,并且在这种实例中,由硬件布置并行地生成的结果可以涉及在超过一个微图块内的像素拐角位置。
在各种实例中,硬件布置800、820还可包括多个快速决策单元830(其还可以被称作快速失效/通过 逻辑元件),每个微图块一个,且条件然后被应用到所有输出(例如,所有的多个加法比较元件808、 828的输出)。快速决策单元830接收由微图块组件硬件元件802生成的输出,并基于所接收的输出确定 由包括像素组件硬件元件804、824的一对元件和子采样组件元件806的任何可能的贡献是否可改变由微 图块组件硬件元件802输出的值的MSB的值。
如果由微图块组件硬件元件802输出的值fUT是充分正的,以致没有像素或子采样贡献可使结果 f(x,y)为负(在考虑任何边缘规则调节之后),即,如果:
fUT>|fPmin|+|fSmin|
其中,fPmin为最小值,即fP的最负可能值,fsmin为最小值,即fS的最负可能值,则硬件布置800、 820可在不估计由像素组件硬件元件804、824和子采样组件元件806(即不完全地估计最终和)生成的 输出的情况下确定边缘测试是否通过或失败。
类似地,如果由微图块组件硬件元件802输出的值fUT是充分负的,以致没有像素或子采样贡献会使 结果f(x,y)为正或零,即如果:
|fUT|>fPmax+fsmax
其中,fPmax是最大值,即fP的最正可能值,fSmax为最大值,即fs的最正可能值,则硬件布置800、 820可以在不估计由像素组件硬件元件804、824和子采样组件元件806生成的输出的情况下(即不完全 估计最终和)确定边缘测试通过还是失败。
快速决策单元830的实施降低了由每个加法比较元件808、828执行的加法的宽度,原因是由微图块 组件硬件元件802生成的输出的MSB的数目(例如,三个)可以从加法中忽略不计。可以被忽略的MSB 的精确数目由图块中微图块的数目(即有多少XUT位)和对系数C的精确约束确定。
如上所述,硬件布置800、820都适合用在使用任何渲染方法的GPU中,其中,像素组被一起处理, 这包括tile-based渲染和中间模式渲染。在各个实例中,如图8B中示出的包括快速决策单元830的硬件 820可以特别适用于使用中间模式渲染的GPU。这是因为中间模式渲染产生比tile-based渲染更大的UTC 元件802(因为坐标的范围现在可以覆盖整个屏幕区域)。
在任何实施方式中选择使用哪种硬件布置800、820将取决于各种因素,包括但不限于由GPU使用 的渲染方法。与图8B中所示的硬件820中的布置相比,图8A中示出的硬件布置800在用于PPC元件 804的多路复用器810之前具有较少延迟和较少寄存器;然而,图8A中的加法比较元件808比图8B中 的加法比较单元828更大并使用更多的功率。结果,在有大量的加法和比较元件808时(例如,64个或 更多),则可能更适合使用图8B所示的硬件布置820。然而,在图8B中所示的硬件布置820中,如果 只有微图块索引改变,则不可能门输出PPC元件824,但对于64个或更多个输出,加法比较单元828的 复杂性降低,可提供关于硬件的功耗的主导效果。
图9是对划分成图块的渲染空间以高效方式(即在硬件的大小和功耗方面)执行边缘测试的示例性 方法的流程图,其中,每个图块被细分成多个微图块,每个微图块包括像素的相同布置。此方法使用上 面描述并在图8A和图8B中显示的硬件,并且可以是在图形处理管线中的渲染方法的一部分。
所述方法包括在第一硬件元件802中,基于微图块的坐标计算第一输出(块902)。所述方法还包括 在多个第二硬件元件804、824的每一个中,基于微图块内的多个像素之一的坐标计算多个第二输出中的 一个(块904),其中,多个第二硬件元件中的每一个和多个第二输出中的每一个涉及多个像素中的不同 的一个像素。所述方法还包括在两个第三硬件元件806的每一个中,基于像素拐角位置的坐标计算第三 输出(块906),其中,多个第三硬件元件中的每一个和多个第三输出中的每一个(由多个第三硬件元件 中的不同的一个生成)涉及一对像素拐角位置中的不同的一个像素拐角位置。所述方法还包括通过使用 一个或多个加法单元组合第一输出与第二输出中的一个和第三输出的不同组合,生成多个输出值(块 908),其中,每个输出值是边缘测试输出。
在上面的描述中,假设每个边缘被独立地估计(所以对于图元的每个边缘可以是边缘测试硬件302 的实例);然而,在两个或更多边缘的边缘向量之间存在预定关系时,在执行对这些边缘中每一个的边 缘测试时,计算出的输出中的一些可以被重新使用,这进一步降低了总硬件的面积。例如,如果图元是 如图2B中所示的矩形22或平形四边形23,则在边缘向量的相对各对即f1和f3,f2和f4的系数之间存在 预定义关系。具体讲,如果;
f1(x,y)=Ax+By+C1
则:
f3(x,y)=-Ax-By+C3
结果,对于求反的系数,不需要复制所有的像素组件硬件元件804和子采样组件硬件元件806,而是 用于第一边缘的像素组件硬件元件804的输出可以对第二边缘重新使用,用于第一边缘的子采样组件硬 件元件806的输出可以对第二边缘重新使用。
例如在被实施时这可以如下:在使用图8A的硬件布置800时,像素组件硬件元件804的输出为:
fP(xP,yP)=AxP+ByP
对于第一边缘,f1可以被求反,并重新用于第二边缘,其中:
fP(xP,yP)=-AxP-ByP
类似地,子采样组件硬件元件806的输出:
fs(xs,ys)=Axs+Bys
对于第一边缘,f1可以被求反,并重新用于第二边缘,其中:
fs(xs,ys)=-AxS-ByS
或者替代性地,来自像素组件硬件元件804和子采样组件硬件元件806的输出的求反可以被忽略, 在加法比较单元808中执行的比较可以被修改,使得对于第一边缘,比较是:
fUT1+fp+fS>0
并且对于第二边缘,改进后的比较是:
fUT2+fp+fS≤0
(其中,用C系数求反来计算fUT2),这可以产生更有效的硬件实施方案(例如,在尺寸和/或功率 方面)。
对于超过一个边缘重新使用各个硬件元件804、806的所有输出产生如上面描述的总面积节约。例如, 用于对一对相反边缘执行边缘测试的硬件面积可以比用于对单个边缘执行边缘测试的硬件面积小1.5倍。 结果,也降低了执行保守光栅化的总硬件尺寸。
在上述的方法中,图元的所有边缘以相同方式对待;然而,如果像素正好在物体的边缘上,则边缘 规则可被应用,使得确定像素在图元中的仅一个图元内(因此可见)。在各个实例中,边缘规则可以确 定位于上边缘或左边缘的像素位于图元内,而如果像素位于另一边缘上,则认为在图元外部。这些边缘 可根据其A和B系数定义,在下面的表中示出三角形图元的实例:
对于右边缘或水平底边缘,边缘规则可以由例如通过在最终求和(例如,在块808、828中执行的) 中减去一个LSB(最低有效位)来实施,并且可以通过从微图块组件硬件元件802的输出减去一个LSB 来减去此LSB。这产生有效的硬件实施方式,因为其避免了比较元件识别f(x,y)等于零情况的任何需要, 而是比较元件只需要确定f(x,y)的符号,因此确定f(x,y)≥0是否成立。
使用上述的硬件布置和方法确定微图块中每个像素的外覆盖和内覆盖,产生具有良好利用率(例如, 因为其只需要计算少数的附加SOP,并且因为对于图块中的所有像素运算是并行执行的,并且在各个实 例中,光栅化阶段204中的现有硬件可以被重新使用)且既紧凑(在物理尺寸方面)又功率高效(例如, 因为对于微图块中的所有像素运算被并行地执行)的保守光栅化的硬件逻辑实施方式。
图6示出了可以实施本文中描述的图形处理系统的计算机系统。计算机系统包括CPU 602、GPU 604、 存储器606和其它装置614,诸如显示器616、扬声器618和摄像头620。上面描述的图形处理管线具体 是保守光栅化硬件212可以在GPU 604内实施。计算机系统的组件可以通过通信总线622彼此通信。
在图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)的高级表示可以在计算机系统处被处理,所述计算机系统被配置成在软件环境的背景下生 成集成电路的制造定义,所述制造定义包括电路元件的定义和用于组合的这些元件的规则的定义,以便 生成由所述表示定义的集成电路的制造定义。通常是软件在计算机系统处执行以便定义机器的情况,可 能需要一个或多个中间用户步骤(例如,提供命令、变量等)以便计算机系统被配置成生成集成电路的 制造定义以执行定义集成电路的代码,以便生成该集成电路的制造定义。
现在将参照图7描述在集成电路制造系统处处理集成电路定义数据集以便配置系统制造图形处理管 线的实例。
图7示出了集成电路(IC)制造系统702的实例,其被配置成制造包括本文任何实例中描述的保守 光栅化硬件的图形处理管线。具体讲,IC制造系统802包括布局处理系统704和集成电路生成系统706。 IC制造系统702被配置成接收IC定义数据集(例如,定义包括在本文中任何实例中描述的保守光栅化硬 件的图形处理管线),处理IC定义数据集,并根据IC定义数据集生成IC(例如,实施包括在本文中任 何实例中描述的保守光栅化硬件的图形处理管线)。IC定义数据集的处理配置IC制造系统702,以制造 集成电路,所述集成电路实施包括在本文中任何实例中描述的保守光栅化硬件的图形处理管线。
布局处理系统704被配置成接收并处理IC定义数据集以确定电路布局。从IC定义数据集确定电路布 局的方法是本领域已知的,例如,可涉及合成RTL代码以确定待生成的电路的门级表示,例如,根据逻 辑组件(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP(触发器)组件)。可通过确定逻辑组 件的位置信息从电路的门级表示确定电路布局。这可以自动进行或者在用户参与下进行以便优化电路布 局。当布局处理系统704已经确定电路布局后,其可以将电路布局定义输出到IC生成系统706。电路布 局定义可以是例如电路布局描述。
IC生成系统806根据如本领域已知的电路布局定义生成IC。例如,IC生成系统706可以实施半导体 器件制造过程以生成IC,这可以涉及光刻和化学处理步骤的多步骤序列,在这期间,电子电路在由半导 体材料制成的晶片上逐渐产生。电路布局定义可以是掩膜的形式,其可以用在光刻过程中以根据电路定 义生成IC。替代性地,提供至IC生成系统806的电路布局定义可以是计算机可读代码的形式,IC生成系 统806可以使用该代码形成用于生成IC的适当掩膜。
由IC制造系统702执行的不同过程可以全部在一个位置例如由一方实施。替代性地,IC制造系统 802可以是分布式系统,使得过程中的一些可以在不同位置执行,且可以由不同各方执行。例如,阶段中 的一些:可以在不同的位置和/或由不同的各方执行(i)对代表IC定义数据集的RTL代码进行合成以形 成待生成的电路的门级表示,(ii)基于门级表示生成电路布局,(iii)根据电路布局形成掩膜,和(iv) 使用掩膜制造集成电路。
在其它实例中,在集成电路制造系统处处理集成电路定义数据集可以配置系统以制造包括保守光栅 化硬件的图形处理管线,无需处理IC定义数据集,从而确定电路布局。例如,集成电路定义数据集可以 定义可重新配置的处理器的配置,例如,FPGA,且数据集的处理可以配置IC制造系统以生成具有该定 义的配置的可重新配置的处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,集成电路制造定义数据集当在集成电路制造系统处被处理时,可以使集成电路制 造系统生成如本文中描述的装置。例如,由集成电路制造定义数据集以上文参照图7描述的方式配置集 成电路制造系统可以使得制造如本文中描述的装置。
在一些实例中,集成电路定义数据集可包括软件,所述软件在数据集定义的硬件上运行或者结合在 数据集定义的硬件运行。在图7中所示的实例中,IC生成系统还可以在制造集成电路时被集成电路定义 数据集配置,以将固件根据集成电路定义数据集处定义的程序代码加载到该集成电路上,或者另外给集 成电路提供可用于集成电路的程序代码。
本领域技术人员将认识到用来存储程序指令的存储装置可分布在网络上。例如,远程计算机可以将 所描述的过程的实例存储为软件。本地或终端计算机可以访问远程计算机,并下载软件的一部分或全部 以运行程序。替代性地,本地计算机可以根据需要下载软件的片断或者在本地终端执行一些软件指令并 在远程计算机(或计算机网络)执行一些软件指令。本领域技术人员还将认识到通过利用本领域技术人 员已知的常规技术,软件指令的全部或一部分可以由诸如DSP、可编程逻辑阵列等的专用电路执行。
本文中描述的方法可以由计算机执行,所述计算机配置有存储在有形的存储介质上的机器可读形式 的软件,例如,以包括用于配置计算机以执行所描述的方法的组成部分的计算机可读程序代码的形式, 或者以计算机程序的形式,包括当该程序在计算机上运行时适于执行本文中描述的任何方法的所有步骤 的计算机程序代码方式,其中,该计算机程序可以在计算机可读存储介质上实施。有形(或非暂时性) 存储介质的实例包括硬盘、闪盘(thumb drive)、存储卡等,且不包括被传播的信号。软件可适于在并行 处理器或串行处理器上执行,使得所述方法步骤可以任何适当次序执行或被同时执行。
本文中描述的硬件组件可以由非暂时性计算机可读存储介质生成,非暂时性计算机可读存储介质上 编码了计算机可读程序代码。
存储机器可执行数据以用在实施所公开的方面的存储器可以是非暂时性介质。非暂时性介质可以是 易失性或非易失性的。易失性非暂时性介质的实例包括基于半导体的存储器,诸如SRAM或DRAM。可 以用来实施非易失性存储器的技术的实例包括光学和磁存储器技术、闪存、相变存储器、电阻性RAM。
特别提到的“逻辑”指的是执行一种功能或多种功能的结构。逻辑的实例包括被布置成执行这些功能的 电路。例如,此类电路可以包括晶体管和/或可用在制造过程中的任何硬件元件。这类晶体管和/或其它元 件可以用来形成这样的电路或结构,作为实例,其实施和/或包含存储器(例如寄存器、触发器或锁存 器)、逻辑运算符(例如,布尔运算)、数学运算符(例如,加法器、乘法器或移位器)和互连。此类 元件可作为定制电路或标准单元库、宏指令或以其它抽象级提供。此类元件可以特定排列互连。逻辑可 包括为固定功能的电路,且电路可以被编程以执行一种或多种功能;这种编程可以从固件或软件更新或 控制机制提供。被识别的执行一种功能的逻辑还以可包括实施组成功能或子过程的逻辑。在一个实例中, 硬件逻辑具有实施一种固定功能操作或多种操作的电路、状态机或过程。
与已知实施方式相比,本申请中在装置、设备、模块和/或系统(以及在本文中实施的方法)中陈述 的构思的实施方式可以带来性能改进。性能改进可包括提高运算性能、降低延迟、提高吞吐量和/或降低 功耗中的一个或多个。在这种装置、设备、模块和系统(例如,在集成电路中)的制造过程中,性能改 进可相对物理实施方案折衷,从而改进制造方法。例如,可相对布局面积交换性能改进,从而与已知实 施方案的性能相当,但使用较少的硅。这例如可以通过以串行方式重新使用功能块或者在装置、设备、 模块和/或系统的元件之间共享功能块来完成。相反,本申请中陈述的带来装置、设备、模块和系统的物 理实施方式的改进的构思(诸如降低硅面积)可被交换以获得改进的性能。这例如可以通过在预定义面 积预算内制造模块的多个实例来完成。
本文中给出的任何范围或装置值可以被扩展或更改,而不失去所寻找的效果,这对本领域技术人员 是显然的。
要理解上述的益处和优点可以涉及一个实施例或者可以涉及几个实施例。实施例不局限于解决所陈 述问题中的任何一个或全部的那些实施例,或者不局限于具有所陈述的益处和优点的任何一个或全部的 实施例。
对“一个(an)”物品的任何提及指的是一个或多个那些物品。术语“包括”在本文中使用含义是包括所 标识的方法块或元件,但此类块或元件并不包括排他性列表,设备可以包含附加块或元件,方法可以包 含附加操作或元件。而且,块、元件和操作本身不暗指是闭合式的。
本文中描述的方法的步骤可以任何适当次序或在适当时被同时执行。图式中框之间的箭头示出了方 法步骤的一种示例性顺序,但不旨在排除并行地执行多个步骤的其它顺序。另外,在不偏离本文中描述 的主题的精神和范围下,个别块可以从方法的任一个中删除。在不失去所寻求的效果的情况下,上述的 任何实例的各方面可以与所描述的任何其它实例的各方面组合以形成另外的实例。在图示的元件显示为 由箭头连接时,要认识到这些箭头只示出元件之间的通信(包括数据和控制消息)的一种示例流。元件 之间的流可以是任一方向或在两个方向上。
本申请人在此分开地公开了本文中描述的每个个别特征和两个或更多个此类特征的任何组合,以致 此类特征或组合能够基于本说明书作为整体根据本领域技术人员的普通常识执行,而不管此类特征或特 定的组合是否解决本文中讨论的任何问题。鉴于前述描述,本领域技术人员显然明白在本发明的范围内 可进行各种变形。
示例性款项
A.一种被布置成在渲染空间(100)中渲染的图形处理管线(200),其中,所述渲染空间(100) 被细分成多个图块(102),每个图块被细分成多个微图块(104),每个微图块包括像素(106)的相同 排列,
所述图形处理管线包括保守光栅化硬件(212),并且其中,所述保守光栅化硬件包括:
多个第一硬件子单元(300),每个第一硬件子单元被布置成对于微图块中的每个像素对 于图元的不同边缘计算所述边缘的外覆盖结果和所述边缘的内覆盖结果;和
多个第二硬件子单元(320),每个第二硬件子单元被布置成对于微图块中的不同像素计 算所述图元的外覆盖结果和所述图元的内覆盖结果;
其中,每个第一硬件子单元(300)包括:
象限选择硬件(301),所述象限选择硬件被布置成使用限定图元边缘的向量的梯度识别第一像素拐角位置和第二像素拐角位置;和
边缘测试计算硬件(302),所述边缘测试计算硬件被布置成对于所述微图块中每一个像素中的每个像素拐角位置计算对所述像素拐角位置是否在所述边缘的左边进行指示的值,其中, 所述第一像素拐角位置的值是所述像素的外覆盖结果,并且所述第二像素拐角位置的值是所述像素的内 覆盖结果;
并且其中,每个第二硬件子单元(320)包括:
第一多个与门(308),所述微图块中的每个像素用一个与门,并且每个与门被布置成接收所述像素和每一个所述边缘的外覆盖结果作为输入,所述输入来自所述第一硬件子单元中的每 一个,并且其中,所述与门的输出是所述像素和所述图元的外覆盖结果;和
第二多个与门(308),所述微图块中的每个像素用一个与门,并且每个与门被布置成接收所述像素和每一个所述边缘的内覆盖结果作为输入,所述输入来自所述第一硬件子单元中的每 一个,并且其中,所述与门的输出是所述像素和所述图元的内覆盖结果。
B.根据款项A所述的图形处理管线,其中,所述边缘测试计算硬件包括一个或多个硬件布置(800, 820),每个硬件布置被布置成使用所述边缘的乘积之和执行边缘测试,每个硬件布置包括:
微图块组件硬件元件(802),所述微图块组件硬件元件包括硬件逻辑,所述硬件逻辑被布置成 使用所述乘积之和以及所述渲染空间中图块内的微图块的坐标计算第一输出;
多个像素组件硬件元件(804,824),每个像素组件硬件元件包括硬件逻辑,所述硬件逻辑被布 置成使用所述乘积之和以及相对于所述微图块的原点定义的不同像素的坐标计算多个第二输出中的一个;
两个子采样组件硬件元件(806),每个子采样组件硬件元件包括硬件逻辑,所述硬件逻辑被布 置成使用所述乘积之和以及相对于像素的原点定义的不同像素拐角位置的坐标计算第三输出;
多个加法器,所述多个加法器被布置成通过对每个输出结果组合所述第一输出、所述多个第二输 出中的一个和第三输出的不同组合,并行地生成所述乘积之和的多个输出结果。
C.根据款项B所述的图形处理管线,其中,一个或多个所述硬件布置还包括:
多个多路复用器(810),所述多个多路复用器被布置成选择所述第一输出、所述多个第二输出 中的一个和第三输出的不同组合。
D.根据款项B所述的图形处理管线,其中,所述多个加法器包括:
多个加法比较元件(808),每个加法比较元件被布置成通过组合所述第一输出、所述多个第二 输出中的一个和第三输出的不同组合,生成所述多个外覆盖结果或内覆盖结果中的不同的一个。
E.根据款项D所述的图形处理管线,其中,一个或多个所述硬件布置还包括:
第一多个多路复用器(810),所述第一多个多路复用器中的每一个多路复用器具有多个输入和 一个输出,其中,每个输入被布置成从所述多个像素组件硬件元件接收所述多个第二输出中的不同的一 个,并且所述多路复用器被布置成选择所接收的第二输出中的一个,并将所选择的第二输出通过所述输 出输出到所述多个加法比较元件中的一个;和
第二多个多路复用器(810),所述第二多个多路复用器中的每一个多路复用器具有多个输入和 一个输出,其中,每个输入被布置成从所述多个子采样组件硬件元件接收所述多个第三输出中的不同的 一个,并且所述多路复用器被布置成选择所接收的第三输出中的一个,并将所选择的第三输出通过所述 输出输出到所述多个加法比较元件中的一个。
F.根据款项B所述的图形处理管线,其中,所述多个加法器包括所述多个加法器的第一子组和所述 多个加法器的第二子组,
其中,所述像素组件硬件元件(824)中的每一个还包括用于从所述微图块组件硬件元件接收所 述第一输出的输入,且所述多个加法器的所述第一子组中的至少一个被布置成对从所述微图块组件硬件 元件接收的第一输出和由所述像素组件硬件元件计算的第二输出求和以生成中间结果;并且
其中,所述多个加法器的所述第二子组包括:
多个加法比较元件(828),每个加法比较元件被布置成通过将所述中间结果中的一个和第三输 出的不同组合进行求和,生成所述多个外覆盖结果和内覆盖结果中的不同的一个。
G.根据款项F所述的图形处理管线,其中,一个或多个所述硬件布置还包括:
第一多个多路复用器(810),所述第一多个多路复用器中的每一个多路复用器具有多个输入和 一个输出,其中,每个输入被布置成从所述多个像素组件硬件元件接收所述中间结果中的不同的一个, 并且所述多路复用器被布置成选择所接收的中间结果中的一个,并将所选择的中间结果通过所述输出输 出到所述多个加法比较元件中的一个;和
第二多个多路复用器(410),所述第二多个多路复用器中的每一个多路复用器具有多个输入和 一个输出,其中,每个输入被布置成从所述多个子采样组件硬件元件接收多个第三输出中的不同的一个, 并且所述多路复用器被布置成选择所接收的第三输出中的一个,并将所选择的第三输出通过所述输出输 出到所述多个加法比较元件中的一个。
H.根据款项B-G中任一项所述的图形处理管线,其中,由所述硬件布置生成的每个输出结果包括单 个位。
I.根据款项H所述的图形处理管线,其中,所述单个位包括所述第一输出、所述多个第二输出中的 一个和第三输出的和的最高有效位。
J.根据款项I所述的图形处理管线,还包括决策单元(830),所述决策单元包括用于从所述微图块 组件硬件元件接收第一输出的输入和硬件逻辑,所述硬件逻辑被布置成确定第二输出和第三输出的任何 组合在被加到所述第一输出时是否能够产生具有与所述第一输出不同符号的输出结果,并且响应于确定 所述组合不能够产生具有与所述第一输出不同符号的输出,输出所述第一输出的最高有效位。
K.根据前述款项中任一项所述的图形处理管线,其中,所述像素拐角位置与所述实际像素拐角位置 偏移。
L.一种在图形管线中执行保守光栅化的方法,所述图形管线被布置成在渲染空间(100)中渲染, 其中,所述渲染空间(100)被细分成多个图块(102),每个图块被细分成多个微图块(104),每个微 图块包括像素(106)的相同排列,所述方法包括:
对于图元的每个边缘,基于限定所述边缘的向量的梯度识别第一像素拐角位置和第二像素拐角位 置(402);以及
对于所述微图块中的每个像素以及对于所述图元的每个边缘,计算第一值,所述第一值指示所述 第一像素拐角位置是否在所述边缘的左边(404),其中,所述第一值是所述像素的外覆盖结果;并计算 第二值,所述第二值指示所述第二像素拐角位置是否在所述边缘的左边(406),其中,所述第二值是所 述像素的内覆盖结果;以及
对于所述图元的每个边缘在与门中组合所述像素的外覆盖结果,以生成并输出所述像素和 所述图元的外覆盖结果(408);以及
对于所述图元的每个边缘在与门中组合所述像素的内覆盖结果,以生成并输出所述像素和 所述图元的内覆盖结果(410)。
M.根据款项L所述的方法,其中,对像素和边缘计算所述第一值和第二值包括:
在第一硬件元件中,基于图块内微图块的坐标计算第一输出(602);
在多个第二硬件元件的每个第二硬件元件中,基于微图块内像素的坐标计算第二输出(604);
在两个第三硬件元件的每个第三硬件元件中,基于所述第一像素拐角位置和第二像素拐角位置中 的不同的一个的坐标计算第三输出(606);以及
基于所述第一像素拐角位置组合第一输出与第二输出和所述第三输出,以生成所述第一值,并基 于所述第二像素拐角位置组合第一输出与第二输出和所述第三输出以生成第二值(608)。
N.根据款项M所述的方法,其中,微图块中每个像素的所述第一值和第二值是通过在多个加法比较 元件(808,828)的每一个中组合所述第一输出、第二输出和第三输出的不同组合并行地生成的。
O.根据款项L-N中任一项所述的方法,其中,基于限定所述边缘的向量的梯度识别第一像素拐角位 置和第二像素拐角位置包括:
基于在限定所述边缘的向量中坐标的符号,选择像素的两个对角相对的拐角。
P.根据款项O所述的方法,还包括定义两个像素拐角位置,每个像素拐角位置是从所述像素的所选 拐角中的一个向外与所述像素的中心偏移预定距离的位置。
Q.一种被配置成执行款项L-P中任一项所述的方法的图形处理管线。
R.根据款项A-K和Q中任一项所述的图形处理管线,其中,所述图形处理系统在集成电路上以硬件 实施。
S.计算机可读代码,所述计算机可读代码被配置成当所述代码被运行时使得执行款项L-P中任一项 所述的方法。
T.一种计算机可读存储介质,所述计算机可读存储介质上编码了款项S的计算机可读代码。
U.一种使用集成电路制造系统制造如款项A-K和Q中任一项所述的图形处理管线的方法。
V.一种集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中被处理时,配置所述 集成电路制造系统制造如款项A-K和Q中任一项所述的图形处理管线。
W.一种计算机可读存储介质,所述计算机可读存储介质上存储了集成电路的计算机可读描述,当所 述计算机可读描述在集成电路制造系统中被处理时使所述集成电路制造系统制造如款项A-K和Q中任一 项所述的图形处理管线。
X.一种集成电路制造系统,所述集成电路制造系统被配置成制造如款项A-K和Q中任一项所述的图 形处理管线。
Y.一种集成电路制造系统,包括:
非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储了集成电路的计算机可读 描述,所述计算机可读描述对款项A-K和Q中任一项所述的图形处理管线进行描述;
布局处理系统,所述布局处理系统被配置成处理所述集成电路描述,以便生成实施所述图形处理系 统的集成电路的电路布局描述;和
集成电路生成系统,所述集成电路生成系统被配置成根据所述电路布局描述制造所述图形处理系统。
Claims (20)
1.一种被布置成在渲染空间(100)中渲染的图形处理管线(200),其中,所述渲染空间(100)被细分成多个图块(102),每个图块被细分成多个微图块(104),每个微图块包括像素(106)的相同排列,
所述图形处理管线包括保守光栅化硬件(212),并且其中,所述保守光栅化硬件包括:
多个第一硬件子单元(300),每个第一硬件子单元被布置成对于微图块中的每个像素对于图元的不同边缘计算所述边缘的外覆盖结果和所述边缘的内覆盖结果;和
多个第二硬件子单元(320),每个第二硬件子单元被布置成对于微图块中的不同像素计算所述图元的外覆盖结果和所述图元的内覆盖结果;
其中,每个第一硬件子单元(300)包括:
象限选择硬件(301),所述象限选择硬件被布置成使用限定图元边缘的向量的梯度识别第一像素拐角位置和第二像素拐角位置;和
边缘测试计算硬件(302),所述边缘测试计算硬件被布置成对于所述微图块中每一个像素中的每个像素拐角位置计算对所述像素拐角位置是否在所述边缘的左边进行指示的值,其中,所述第一像素拐角位置的值是所述像素的外覆盖结果,并且所述第二像素拐角位置的值是所述像素的内覆盖结果;
并且其中,每个第二硬件子单元(320)包括:
第一多个与门(308),所述微图块中的每个像素用一个与门,并且每个与门被布置成接收所述像素和每一个所述边缘的外覆盖结果作为输入,所述输入来自所述第一硬件子单元中的每一个,并且其中,所述与门的输出是所述像素和所述图元的外覆盖结果;和
第二多个与门(308),所述微图块中的每个像素用一个与门,并且每个与门被布置成接收所述像素和每一个所述边缘的内覆盖结果作为输入,所述输入来自所述第一硬件子单元中的每一个,并且其中,所述与门的输出是所述像素和所述图元的内覆盖结果。
2.根据权利要求1所述的图形处理管线,其中,所述边缘测试计算硬件包括一个或多个硬件布置(800,820),每个硬件布置被布置成使用所述边缘的乘积之和执行边缘测试,每个硬件布置包括:
微图块组件硬件元件(802),所述微图块组件硬件元件包括硬件逻辑,所述硬件逻辑被布置成使用所述乘积之和以及所述渲染空间中图块内的微图块的坐标计算第一输出;
多个像素组件硬件元件(804,824),每个像素组件硬件元件包括硬件逻辑,所述硬件逻辑被布置成使用所述乘积之和以及相对于所述微图块的原点定义的不同像素的坐标计算多个第二输出中的一个;
两个子采样组件硬件元件(806),每个子采样组件硬件元件包括硬件逻辑,所述硬件逻辑被布置成使用所述乘积之和以及相对于像素的原点定义的不同像素拐角位置的坐标计算第三输出;
多个加法器,所述多个加法器被布置成通过对每个输出结果组合所述第一输出、所述多个第二输出中的一个和第三输出的不同组合,并行地生成所述乘积之和的多个输出结果。
3.根据权利要求2所述的图形处理管线,其中,一个或多个所述硬件布置还包括:
多个多路复用器(810),所述多个多路复用器被布置成选择所述第一输出、所述多个第二输出中的一个和第三输出的不同组合。
4.根据权利要求2所述的图形处理管线,其中,所述多个加法器包括:
多个加法比较元件(808),每个加法比较元件被布置成通过组合所述第一输出、所述多个第二输出中的一个和第三输出的不同组合,生成所述多个外覆盖结果或内覆盖结果中的不同的一个。
5.根据权利要求4所述的图形处理管线,其中,一个或多个所述硬件布置还包括:
第一多个多路复用器(810),所述第一多个多路复用器中的每一个多路复用器具有多个输入和一个输出,其中,每个输入被布置成从所述多个像素组件硬件元件接收所述多个第二输出中的不同的一个,并且所述多路复用器被布置成选择所接收的第二输出中的一个,并将所选择的第二输出通过所述输出输出到所述多个加法比较元件中的一个;和
第二多个多路复用器(810),所述第二多个多路复用器中的每一个多路复用器具有多个输入和一个输出,其中,每个输入被布置成从所述多个子采样组件硬件元件接收所述多个第三输出中的不同的一个,并且所述多路复用器被布置成选择所接收的第三输出中的一个,并将所选择的第三输出通过所述输出输出到所述多个加法比较元件中的一个。
6.根据权利要求2所述的图形处理管线,其中,所述多个加法器包括所述多个加法器的第一子组和所述多个加法器的第二子组,
其中,所述像素组件硬件元件(824)中的每一个还包括用于从所述微图块组件硬件元件接收所述第一输出的输入,且所述多个加法器的所述第一子组中的至少一个被布置成对从所述微图块组件硬件元件接收的第一输出和由所述像素组件硬件元件计算的第二输出求和以生成中间结果;并且
其中,所述多个加法器的所述第二子组包括:
多个加法比较元件(828),每个加法比较元件被布置成通过将所述中间结果中的一个和第三输出的不同组合进行求和,生成所述多个外覆盖结果和内覆盖结果中的不同的一个。
7.根据权利要求6所述的图形处理管线,其中,一个或多个所述硬件布置还包括:
第一多个多路复用器(810),所述第一多个多路复用器中的每一个多路复用器具有多个输入和一个输出,其中,每个输入被布置成从所述多个像素组件硬件元件接收所述中间结果中的不同的一个,并且所述多路复用器被布置成选择所接收的中间结果中的一个,并将所选择的中间结果通过所述输出输出到所述多个加法比较元件中的一个;和
第二多个多路复用器(410),所述第二多个多路复用器中的每一个多路复用器具有多个输入和一个输出,其中,每个输入被布置成从所述多个子采样组件硬件元件接收多个第三输出中的不同的一个,并且所述多路复用器被布置成选择所接收的第三输出中的一个,并将所选择的第三输出通过所述输出输出到所述多个加法比较元件中的一个。
8.根据权利要求2所述的图形处理管线,其中,由所述硬件布置生成的每个输出结果包括单个位。
9.根据权利要求8所述的图形处理管线,其中,所述单个位包括所述第一输出、所述多个第二输出中的一个和第三输出的和的最高有效位。
10.根据权利要求9所述的图形处理管线,还包括决策单元(830),所述决策单元包括用于从所述微图块组件硬件元件接收第一输出的输入和硬件逻辑,所述硬件逻辑被布置成确定第二输出和第三输出的任何组合在被加到所述第一输出时是否能够产生具有与所述第一输出不同符号的输出结果,并且响应于确定所述组合不能够产生具有与所述第一输出不同符号的输出,输出所述第一输出的最高有效位。
11.一种在图形管线中执行保守光栅化的方法,所述图形管线被布置成在渲染空间(100)中渲染,其中,所述渲染空间(100)被细分成多个图块(102),每个图块被细分成多个微图块(104),每个微图块包括像素(106)的相同排列,所述方法包括:
对于图元的每个边缘,基于限定所述边缘的向量的梯度识别第一像素拐角位置和第二像素拐角位置(402);以及
对于所述微图块中的每个像素以及对于所述图元的每个边缘,计算第一值,所述第一值指示所述第一像素拐角位置是否在所述边缘的左边(404),其中,所述第一值是所述像素的外覆盖结果;并计算第二值,所述第二值指示所述第二像素拐角位置是否在所述边缘的左边(406),其中,所述第二值是所述像素的内覆盖结果;以及
对于所述图元的每个边缘在与门中组合所述像素的外覆盖结果,以生成并输出所述像素和所述图元的外覆盖结果(408);以及
对于所述图元的每个边缘在与门中组合所述像素的内覆盖结果,以生成并输出所述像素和所述图元的内覆盖结果(410)。
12.根据权利要求11所述的方法,其中,对像素和边缘计算所述第一值和第二值包括:
在第一硬件元件中,基于图块内微图块的坐标计算第一输出(602);
在多个第二硬件元件的每个第二硬件元件中,基于微图块内像素的坐标计算第二输出(604);
在两个第三硬件元件的每个第三硬件元件中,基于所述第一像素拐角位置和第二像素拐角位置中的不同的一个的坐标计算第三输出(606);以及
基于所述第一像素拐角位置组合第一输出与第二输出和所述第三输出,以生成所述第一值,并基于所述第二像素拐角位置组合第一输出与第二输出和所述第三输出以生成第二值(608)。
13.根据权利要求12所述的方法,其中,微图块中每个像素的所述第一值和第二值是通过在多个加法比较元件(808,828)的每一个中组合所述第一输出、第二输出和第三输出的不同组合并行地生成的。
14.根据权利要求11所述的方法,其中,基于限定所述边缘的向量的梯度识别第一像素拐角位置和第二像素拐角位置包括:
基于在限定所述边缘的向量中坐标的符号,选择像素的两个对角相对的拐角。
15.根据权利要求14所述的方法,还包括定义两个像素拐角位置,每个像素拐角位置是从所述像素的所选拐角中的一个向外与所述像素的中心偏移预定距离的位置。
16.一种被配置成执行权利要求11所述的方法的图形处理管线。
17.根据权利要求16所述的图形处理管线,其中,图形处理系统在集成电路上以硬件实施。
18.计算机可读代码,所述计算机可读代码被配置成当所述代码被运行时使得执行方法,所述方法用于在图形管线中执行保守光栅化,所述图形管线被布置成在渲染空间(100)中渲染,其中,所述渲染空间(100)被细分成多个图块(102),每个图块被细分成多个微图块(104),每个微图块包括像素(106)的相同排列,所述方法包括:
对于图元的每个边缘,基于限定所述边缘的向量的梯度识别第一像素拐角位置和第二像素拐角位置(402);以及
对于所述微图块中的每个像素以及对于所述图元的每个边缘,计算第一值,所述第一值指示所述第一像素拐角位置是否在所述边缘的左边(404),其中,所述第一值是所述像素的外覆盖结果;并计算第二值,所述第二值指示所述第二像素拐角位置是否在所述边缘的左边(406),其中,所述第二值是所述像素的内覆盖结果;以及
对于所述图元的每个边缘在与门中组合所述像素的外覆盖结果,以生成并输出所述像素和所述图元的外覆盖结果(408);以及
对于所述图元的每个边缘在与门中组合所述像素的内覆盖结果,以生成并输出所述像素和所述图元的内覆盖结果(410)。
19.一种计算机可读存储介质,所述计算机可读存储介质上存储了集成电路的计算机可读描述,当所述计算机可读描述在集成电路制造系统中被处理时使所述集成电路制造系统制造根据权利要求1所述的图形处理管线。
20.一种集成电路制造系统,包括:
非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储了集成电路的计算机可读描述,所述计算机可读描述对权利要求1所述的图形处理管线进行描述;
布局处理系统,所述布局处理系统被配置成处理所述集成电路描述,以便生成实施所述图形处理系统的集成电路的电路布局描述;和
集成电路生成系统,所述集成电路生成系统被配置成根据所述电路布局描述制造所述图形处理系统。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1810718.5A GB2570172B (en) | 2018-06-29 | 2018-06-29 | Conservative Rasterization Using Gradients |
GB1810718.5 | 2018-06-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110728734A true CN110728734A (zh) | 2020-01-24 |
CN110728734B CN110728734B (zh) | 2022-07-15 |
Family
ID=63143689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910562145.3A Active CN110728734B (zh) | 2018-06-29 | 2019-06-26 | 使用梯度的保守光栅化方法、装置、系统及介质 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10861205B2 (zh) |
EP (1) | EP3588443A1 (zh) |
CN (1) | CN110728734B (zh) |
GB (1) | GB2570172B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2570172B (en) * | 2018-06-29 | 2020-02-12 | Imagination Tech Ltd | Conservative Rasterization Using Gradients |
US11682109B2 (en) * | 2020-10-16 | 2023-06-20 | Qualcomm Incorporated | Configurable apron support for expanded-binning |
US20230334735A1 (en) * | 2022-04-15 | 2023-10-19 | Meta Platforms Technologies, Llc | 2D Rendering Hardware Architecture Based on Analytic Anti-Aliasing |
Citations (4)
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 |
US20150022525A1 (en) * | 2013-07-19 | 2015-01-22 | Adobe Systems Incorporated | Triangle rasterization |
CN106067187A (zh) * | 2015-04-22 | 2016-11-02 | 想象技术有限公司 | 在图形处理系统中对基元分块 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6611272B1 (en) * | 1998-07-02 | 2003-08-26 | Microsoft Corporation | Method and apparatus for rasterizing in a hierarchical tile order |
US7006110B2 (en) * | 2003-04-15 | 2006-02-28 | Nokia Corporation | Determining a coverage mask for a pixel |
JP4030519B2 (ja) * | 2004-04-15 | 2008-01-09 | 株式会社東芝 | 画像処理装置および画像処理システム |
US8139058B2 (en) * | 2006-11-03 | 2012-03-20 | Vivante Corporation | Hierarchical tile-based rasterization algorithm |
WO2013101167A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Five-dimensional rasterization with conservative bounds |
US9324127B2 (en) * | 2014-02-14 | 2016-04-26 | Qualcomm Incorporated | Techniques for conservative rasterization |
US10089779B2 (en) * | 2016-04-01 | 2018-10-02 | Intel Corporation | Apparatus and method for conservative rasterization of polygons |
EP3249612B1 (en) * | 2016-04-29 | 2023-02-08 | Imagination Technologies Limited | Generation of a control stream for a tile |
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 |
GB2572603B (en) * | 2018-04-05 | 2022-03-23 | Imagination Tech Ltd | Edge and depth processing hardware |
GB2570172B (en) * | 2018-06-29 | 2020-02-12 | Imagination Tech Ltd | Conservative Rasterization Using Gradients |
-
2018
- 2018-06-29 GB GB1810718.5A patent/GB2570172B/en active Active
-
2019
- 2019-06-26 EP EP19182750.0A patent/EP3588443A1/en active Pending
- 2019-06-26 CN CN201910562145.3A patent/CN110728734B/zh active Active
- 2019-06-28 US US16/457,560 patent/US10861205B2/en active Active
-
2020
- 2020-11-17 US US16/950,619 patent/US11373349B2/en active Active
-
2022
- 2022-05-24 US US17/752,458 patent/US20220284644A1/en active Pending
Patent Citations (4)
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 |
US20150022525A1 (en) * | 2013-07-19 | 2015-01-22 | Adobe Systems Incorporated | Triangle rasterization |
CN106067187A (zh) * | 2015-04-22 | 2016-11-02 | 想象技术有限公司 | 在图形处理系统中对基元分块 |
Non-Patent Citations (2)
Title |
---|
TOMAS AKENINE- MÖLLER等: "A Simple Algorithm for Conservative and Tiled Rasterization", 《HTTP://FILEADMIN.CS.LTH.SE/GRAPHICS/RESEARCH/PAPERS/2005/CR/_CONSERVATIVE.PDF》 * |
李华 等: "基于亚像素级几何图元覆盖检测算法", 《系统仿真学报》 * |
Also Published As
Publication number | Publication date |
---|---|
EP3588443A1 (en) | 2020-01-01 |
US20210074041A1 (en) | 2021-03-11 |
US20220284644A1 (en) | 2022-09-08 |
CN110728734B (zh) | 2022-07-15 |
US11373349B2 (en) | 2022-06-28 |
GB201810718D0 (en) | 2018-08-15 |
GB2570172A (en) | 2019-07-17 |
GB2570172B (en) | 2020-02-12 |
US20200005505A1 (en) | 2020-01-02 |
US10861205B2 (en) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11373349B2 (en) | Conservative rasterization using gradients | |
US20230351653A1 (en) | Conservative rasterization | |
US20230401779A1 (en) | Edge test and depth calculation in graphics processing hardware | |
US20240005571A1 (en) | Rasterising Aliased Lines | |
US12026820B2 (en) | Texture address generation using fragment pair differences | |
US20240202991A1 (en) | Cube mapping using gradients of an input block of fragments |
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 |