用于基于拼贴的渲染系统的几何形状至平铺仲裁器的制作方法

文档序号:17470718发布日期:2019-04-20 05:48阅读:175来源:国知局
用于基于拼贴的渲染系统的几何形状至平铺仲裁器的制作方法

本公开涉及图形处理,更具体地,涉及一种用于基于拼贴的渲染系统的几何形状至平铺仲裁器。



背景技术:

如为本领域的技术人员所知的,3d图形处理系统中的基于拼贴的渲染(tbr)使用渲染空间来渲染场景,所述渲染空间被划分成被称为拼贴的子区域,其中每个拼贴被独立地渲染。tbr的优点是快速片上存储器可在渲染期间被用于颜色、深度和模板缓冲操作,这优于其中整个场景被作为一个整体渲染的传统立即模式渲染(imr)而允许显著降低系统存储器带宽。

tbr涉及两个关键渲染阶段:几何形状处理;以及光栅化。在几何形状处理阶段期间从应用(例如游戏应用)接收到的几何形状数据(例如顶点)被变换成屏幕空间坐标。图元(即通过可应用纹理的一个或多个顶点的位置来定义的简单几何形状,诸如三角形)通过变换顶点来定义,并且图元数据(例如顶点数据)被存储在存储器(例如中间缓冲器)中。至少部分地落在拼贴的界限内的图元(例如三角形)的每拼贴列表被创建。在光栅化阶段期间每个拼贴被渲染(即针对拼贴中的每个像素识别颜色)。这使得图形硬件能够仅当在光栅化阶段中渲染该拼贴时检索与特定拼贴有关的图元数据,这使对存储器(例如中间缓冲器)的存储器带宽要求保持至最低。可以将用于每个拼贴的合成颜色缓冲器排出到缓冲器直到整个场景已被渲染为止。

已经表明,可通过使几何形状处理阶段的一个或多个方面并行化来改进tbr性能。

在下面描述的实施例仅作为示例被提供,而不限制解决已知tbr系统的任何或所有缺点的实现方式。



技术实现要素:

本发明内容被提供来引入在下面在详细描述中进一步描述的构思的选择。本发明内容不旨在识别所要求保护的主题的关键特征或必要特征,它也不旨在用于限制所要求保护的主题的范围。

本文所描述的是用于实现基于拼贴的渲染的几何形状处理阶段的系统和方法。所述系统包括多个并行几何形状流水线、多个平铺流水线以及位于所述多个几何形状流水线与所述多个平铺流水线之间的几何形状至平铺仲裁器。每个几何形状流水线被配置为:为有序几何形状组的子集的每个几何形状组生成一个或多个几何形状块;为每个几何形状块生成对应的图元位置块,并且压缩每个几何形状块以生成对应的压缩的几何形状块。所述平铺流水线被配置为从所述图元位置块生成每个拼贴的指示落在该拼贴的界限内的图元的列表。所述几何形状至平铺仲裁器被配置为按照基于所述几何形状组的次序的正确的次序将由所述多个几何形状流水线生成的所述图元位置块转发到所述多个平铺流水线。

第一方面提供一种用于实现基于拼贴的渲染的几何形状处理阶段的系统,所述系统包括:多个并行几何形状流水线,每个几何形状流水线被配置为:接收有序几何形状组的子集,每个几何形状组包括一个或多个顶点的顶点数据;为每个接收到的几何形状组生成与该几何形状组相关联的一个或多个几何形状块,每个几何形状块包括与所对应的几何形状组中的所述顶点的至少一部分有关的变换顶点数据和由所述顶点的所述至少一部分形成的一个或多个图元的图元数据;压缩每个几何形状块以生成对应的压缩的几何形状块;并且为每个几何形状块生成与和该几何形状块相同的几何形状组相关联的对应的图元位置块,每个图元位置块包括与所对应的几何形状块中的所述图元的至少一部分有关的位置信息;以及几何形状至平铺仲裁器,所述几何形状至平铺仲裁器被配置为接收由所述多个几何形状流水线生成的所述图元位置块并且按照基于所述几何形状组的次序的次序将所接收到的图元位置块转发到多个平铺流水线。

第二方面提供一种执行基于拼贴的渲染的几何形状处理阶段的方法,所述方法包括:在多个并行几何形状流水线中的每一个中为有序几何形状组的子集的每个几何形状组生成一个或多个几何形状块,每个几何形状组包括一个或多个顶点的顶点数据,每个几何形状块包括与所对应的几何形状组中的所述顶点的至少一部分有关的变换顶点数据和从所述顶点的所述至少一部分形成的一个或多个图元的图元数据;在所述多个并行几何形状流水线中的每一个中压缩所述几何形状块以生成对应的压缩的几何形状块;在所述多个并行几何形状流水线中的每一个中为每个几何形状块生成与和该几何形状块相同的几何形状组相关联的图元位置块,每个图元位置块包括与所对应的几何形状块中的所述图元的至少一部分有关的位置信息;以及在几何形状至平铺仲裁器处按照基于所述几何形状组的次序的次序将由所述多个几何形状流水线生成的所述图元位置块转发到多个平铺流水线。

可以在集成电路上用硬件具体实现本文所描述的系统。可以提供一种在集成电路制造系统处制造本文所描述的系统的方法。可以提供集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中被处理时,将所述系统配置成制造本文所描述的系统。可以提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质在其上存储有集成电路的计算机可读描述,其当在集成电路制造系统中被处理时,使所述集成电路制造系统制造本文所描述的系统。

可以提供一种集成电路制造系统,所述集成电路制造系统包括:非暂态计算机可读存储介质,所述非暂态计算机可读存储介质在其上存储有描述本文所描述的系统的计算机可读集成电路描述;布局处理系统,所述布局处理系统被配置为处理所述集成电路描述以便生成具体实现本文所描述的系统的集成电路的电路布局描述;以及集成电路生成系统,所述集成电路生成系统被配置为根据所述电路布局描述来制造本文所描述的系统。

可以提供用于执行如本文所描述的方法的计算机程序代码。可以提供非暂态计算机可读存储介质,所述非暂态计算机可读存储介质在其上存储有计算机可读指令,所述计算机可读指令当在计算机系统处被执行时,使所述计算机系统执行如本文所描述的方法。

附图说明

参考附图通过示例来对本发明进行描述。在附图中:

图1是用于实现tbr的几何形状处理阶段的示例系统的框图;

图2是图示在几何形状处理阶段期间如何分割几何形状数据的示意图;

图3是示例几何形状块和示例图元位置块的示意图;

图4是由平铺引擎输出的示例列表的示意图;

图5是用于实现tbr的几何形状处理阶段的示例系统的框图,其中在几何形状流水线至平铺流水线仲裁之前对几何形状块执行压缩;

图6是用于实现tbr的几何形状处理阶段的示例方法的流程图,其中在几何形状流水线至平铺流水线仲裁之前对几何形状块执行压缩;

图7是图5的示例gta的框图;

图8是图7的示例流水线仲裁器的框图;

图9是图示由图5的gta分配顺序编号的示意图;

图10是用于在多个几何形状流水线与多个平铺流水线之间仲裁的示例方法的流程图;

图11是在其中实现本文所描述的用于实现tbr的几何形状处理阶段的系统的示例计算机系统的框图;以及

图12是用于生成集成电路的示例集成电路制造系统的框图,所述集成电路具体实现如本文所描述的用于实现tbr的几何形状处理阶段的系统。

具体实施方式

以下描述通过示例来呈现以使得本领域的技术人员能够做出并使用本发明。本发明不限于本文所描述的实施例,并且对所公开的实施例的各种修改对于本领域的技术人员而言将是显而易见的。仅通过示例来对实施例进行描述。

如上所述,已确定了可以通过使几何形状处理阶段的一个或多个方面并行化来改进tbr系统的性能。具体地,已确定了通过并行地(例如经由并行几何形状流水线)处理接收到的几何形状数据,可优于几何形状数据被串行地处理的实施方式而改进场景被渲染的速度。然而,因为重要的是几何形状数据被以它由3d应用或游戏输出的次序平铺,所以在平铺之前对并行几何形状流水线执行仲裁以确保几何形状数据被以正确的次序平铺。

现在参考图1,图1示出用于实现tbr的几何形状处理阶段的示例系统100,其中几何形状数据由多个几何形状流水线并行地处理。

系统100包括:多个几何形状流水线102、104,用于对从3d应用或游戏接收到的几何形状数据执行几何形状处理;多个平铺流水线106、108,用于生成落在每个拼贴的界限内的经处理的几何形状的每拼贴列表;以及几何形状块储存器(gbs)和仲裁器单元110,所述gbs和仲裁器单元110被配置为在多个几何形状流水线102、104与多个平铺流水线106、108之间仲裁以确保几何形状数据被以正确的次序平铺。

图1的每个几何形状流水线102、104接收由3d应用或游戏生成的几何形状数据(例如与多个顶点有关的信息)并且处理几何形状数据以生成并输出多个几何形状块。每个几何形状块包括与一组顶点有关的顶点数据以及识别由该组顶点形成的图元的图元数据。

由应用或游戏生成的几何形状数据(例如,与多个顶点有关的信息)被划分成多个几何形状组(其可以称为图元交织标记(pim)组),以便每个几何形状组包括原始几何形状数据中的顶点的子集。每个几何形状组被指派了指示该几何形状组相对于其他几何形状组的次序的几何形状组编号(例如pim编号)。在一些情况下,几何形状组编号是n位连续递增的编号,其中n是大于2的整数(例如32)。几何形状组的子集被提供给每个几何形状流水线102、104以进行处理。术语子集在本文中用于意指小于整体的集合。因此,几何形状组的子集包括少于所有几何形状组。

例如,如图2中所示,应用或游戏可以生成包括与多个顶点有关的顶点数据的原始几何形状数据202(其可以被称为绘图调用)。在图2的示例中原始几何形状数据202包括与128个顶点(v1...v127)有关的顶点数据,但是对于本领域的技术人员而言将显然的是,这仅是示例并且原始几何形状数据202可以包括与更多或更少的顶点有关的顶点数据。如果原始几何形状数据包括与特定顶点有关的顶点数据,则该顶点被说成与原始几何形状数据相关联。

原始几何形状数据202被划分成多个几何形状组204,其中的每一个均包括与原始几何形状数据202相关联的顶点的子集的顶点数据。在图2的示例中原始几何形状数据202被划分四个几何形状组204,其中每个几何形状组204包括与32个顶点有关的顶点数据。四个几何形状组204被指派了分别指示几何形状组0在几何形状组1、2和3等之前出现的几何形状组编号0至3。具体地,几何形状组0包括与顶点v0至v31有关的顶点数据,几何形状组1包括与顶点v32至v63有关的顶点数据,几何形状组2包括与顶点v64至v95有关的顶点数据,并且几何形状组3包括与顶点v96至v127有关的顶点数据。尽管图2的示例示出每个几何形状组204包括与相同数量的顶点有关的顶点数据,然而在其他示例中不同的几何形状组可以包括与不同数量的顶点有关的顶点数据。如果几何形状组包括与特定顶点有关的顶点数据,则该顶点被说成与该几何形状组相关联。

几何形状组204的子集被提供给每个几何形状流水线102、104以进行处理。例如,可以将图2的几何形状组0和2提供给几何形状流水线0以进行处理,并且可以将图2的几何形状组1和3提供给几何形状流水线1以进行处理。对于本领域的技术人员而言将显然的是,这仅是示例并且几何形状组204可以以任何适合的方式分布在几何形状流水线102、104之中。

对于每个接收到的几何形状组,几何形状流水线102、104将顶点坐标从世界空间变换到屏幕空间,从顶点数据组装图元,并且生成和输出包括与一个或多个顶点有关的变换顶点数据(vd)和由那些顶点形成的图元的图元数据(pd)的一个或多个几何形状块。例如对于每个顶点,顶点数据可以包括识别顶点的信息(例如索引或编号)、二维(x、y)坐标、深度(z)以及在渲染期间使用的顶点的其他属性(其也可以被称为变化),诸如但不限于颜色、纹理等。例如对于每个图元,图元数据306可以包括识别图元的信息(例如,索引或编号)以及识别形成图元的顶点的信息(例如顶点索引的列表),或者,在图元是点而不是线或多边形(例如三角形)的情况下,包括点间距(即点的宽度)。每个几何形状块还可以包括允许读取和/或处理几何形状块的信息,诸如但不限于几何形状块中的顶点、图元和属性的数量。几何形状块通常还包括指示与它有关的几何形状组的信息。

图3图示示例几何形状块206,其包括顶点数据(vd)304和与由那些顶点形成的图元有关的图元数据(pd)306。具体地,在图3的示例中顶点数据304包括六个顶点0、1、2、3、4、5的信息;并且图元数据306包括三个图元0、1、2的信息-第一图元(0)由顶点0、1和2形成;第二图元(1)由顶点2、3和4形成;并且第三图元(2)由顶点3、4和5形成。

每个几何形状流水线102、104为每个几何形状组生成一个或多个几何形状块。例如,在图2中,从几何形状组0生成两个几何形状块206,从几何形状组1生成两个几何形状块206,从几何形状组2生成一个几何形状块206并且从几何形状组3生成三个几何形状块206。从特定几何形状组生成的几何形状块206的数量可以基于可与每个几何形状块相关联的顶点的最大数量以及当几何形状块被生成时与几何形状组相关联的顶点的数量。具体地,在几何形状处理期间与特定几何形状组相关联的顶点的数量可以增加(例如经由镶嵌)或者减小(例如经由剔除)。因此,最初与32个顶点相关联的几何形状组可以在从其生成几何形状块时与少于32个顶点(例如20个)或多于32个顶点(例如40个)相关联。因此,如果可与几何形状块相关联的顶点的最大数量是32则与20个顶点相关联的几何形状组可以产生一个几何形状块,然而与40个顶点相关联的几何形状组可以产生两个几何形状块。

在一些情况下,从特定几何形状组生成的几何形状块的数量也可以基于可与几何形状块相关联的图元的最大数量。例如,在一些情况下可以存在可与几何形状块相关联的图元的最大数量,其可以小于基于可与几何形状块相关联的顶点的最大数量可能的图元的最大数量。

在图1的示例中,每个几何形状流水线102、104包括剔除/剪切/变换(cct)模块112、114和几何形状块生成器(gbg)120、122,然而,这仅是几何形状流水线的示例实施方式并且对于本领域的技术人员而言将显然的是,其他几何形状流水线可以包括被配置为从所接收到的几何形状组生成几何形状块的不同和/或附加的组件。每个cct模块112、114被配置为将所接收到的几何形状组中的顶点从世界空间视口变换(或相机变换)到屏幕空间,使用索引数据和顶点数据来组装图元,执行剔除以移除任何不必要的图元和/或顶点,并且剪切对照剪切体积(其大于可见体积)仅部分地在可见体积内的图元。可以使用任何适合的剔除方法。例如,在一些情况下可以剔除顶点数据以移除对最终图像没有贡献的冗余图元(这减少几何形状流水线102、104的其余部分的工作负荷)。具体地,因为仅需要使在可见体积内的图元光栅化,所以完全在可见体积外部的图元被丢弃。

一旦顶点已被变换、剔除和剪切,并且已从其组装了图元,则gbg120、122就在剔除和剪切之后从每个几何形状组中剩下的变换顶点生成一个或多个几何形状块。如上所述,每个几何形状块包括与一个或多个顶点有关的变换顶点数据和与由那些顶点形成的图元有关的图元信息。每个gbg120、122基本上将变换顶点数据捆绑成适当大小的大块(几何形状块)以便由平铺流水线106、108处理。如上所述,可以通过与几何形状组相关联的顶点的数量、每几何形状块的顶点的最大数量和/或每几何形状块的图元的最大数量来确定几何形状块的大小。

尽管图1示出具有两个几何形状流水线102、104的系统100,然而对于本领域的技术人员而言将显然的是,这仅是示例并且其他系统可以具有多于两个几何形状流水线。

平铺流水线106、108接收由几何形状流水线102、104生成的几何形状块,压缩所接收到的几何形状块以生成压缩的几何形状块,为每个几何形状块生成包括与几何形状块中的每个图元有关的位置信息的图元位置块,并且对图元位置块执行平铺以生成落在每个拼贴的界限内的图元的列表。图4示出平铺流水线106、108的输出400的示例。具体地,图4图示平铺流水线的输出400可以包括n个拼贴中的每一个的列表402,其包括落在该拼贴的边界内的图元的列表。例如,拼贴0的列表402指示图元0和图元1落在拼贴0的界限内并且拼贴1的列表402指示图元5和图6落在拼贴1的界限内。在一些示例中,为了减少列表消耗的空间量,列表402可以包括指向包含落在拼贴的界限内的图元的几何形状块的指针以及每个几何形状块的识别落在相应拼贴内的该几何形状块中的图元的信息(例如掩码)。

在图1的示例中每个平铺流水线106、108包括压缩引擎(ce)124、126和平铺引擎(te)128的一部分。因为平铺引擎(te)不需要几何形状块中的所有信息来确定哪些图元位于每个拼贴内,而是仅仅需要每个图元的位置,所以ce124、126为每个几何形状块生成包括指示几何形状块中的每个图元的位置的信息的对应的图元位置块208。指示图元的信息可以包括形成图元的顶点的x和y坐标,和/或每个图元周围的有界框的x、y坐标(例如通过形成图元的顶点的x、y坐标的最大值和最小值来定义)。在对应于图3中所示的示例几何形状块206的图3中示出了包括图元位置数据308的示例图元位置块208。然而,为了不丢失几何形状块中的附加信息,ce124、126也压缩每个几何形状块以创建压缩的几何形状块并且将该压缩的几何形状块存储在存储器130、132中。te128然后根据图元位置块208确定每个图元在哪一个拼贴中并且生成每个拼贴的列表,诸如图4的列表402,其指示哪些图元落在该拼贴内。

gbs和仲裁器单元110在多个几何形状流水线102、104与多个平铺流水线106、108之间仲裁以确保图元被平铺流水线106、108以正确的次序(即,通过几何形状组定义的次序)处理。具体地,为了确保图元被以正确的次序平铺,gbs和仲裁器单元110选择与下一个几何形状组(例如pim组)相关联的几何形状流水线102、104作为有效的几何形状流水线102、104并且然后将与该几何形状组相关联的所有几何形状块转发到平铺流水线106、108以进行处理。例如,在具有较低的几何形状组编号的几何形状组先于具有较高的几何形状组编号的几何形状组的情况下gbs和仲裁器单元110可以被配置为选择与最低的几何形状组编号相关联的几何形状流水线102、104作为有效的几何形状流水线。可替代地,在具有较高的几何形状组编号的几何形状组将先于具有较低的几何形状组编号的几何形状组的情况下gbs和仲裁器单元110可以被配置为选择与最高的几何形状组编号相关联的几何形状流水线102、104作为有效的几何形状组。一旦与该几何形状组(例如pim组)相关联的所有几何形状块已被处理,gbs和仲裁器单元110就选择与要处理的下一个几何形状组相关联的几何形状流水线102、104等。

为了允许未选择的或非有效的几何形状流水线102、104继续处理几何形状数据(即继续输出几何形状块),gbs和仲裁器单元110包括少量存储器(例如每几何形状流水线40kb)以存储生成的几何形状块。

在图1的示例系统100中,在几何形状块的压缩之前执行仲裁以使几何形状块的压缩并行化。特别地,图1的系统100被设计为并行地压缩同一几何形状组(例如pim组)的几何形状块。然而,测试已经表明在实践中,在gbs和仲裁器单元110中用于存储由未选择的几何形状流水线生成的几何形状块的少量存储器导致未选择的几何形状流水线经常不得不停靠在上游几何形状组上。这导致几何形状流水线102、104不能完全并行地运行-即一个几何形状流水线102、104经常在等待平铺流水线106、108可用。此外,已经表明很少同时使用ce124、126两者,因此并行压缩处理似乎未显著地加速由平铺流水线对几何形状数据的处理。

因此,本文所描述的是使用多个几何形状流水线和多个平铺流水线来实现tbr的几何形状处理阶段的系统、方法和图形处理单元(gpu),其中几何形状流水线与平铺流水线之间的仲裁在几何形状块的压缩之后被执行。具体地,在本文所描述的系统、方法和gpu中每个几何形状流水线包括用于对几何形状块执行压缩的至少一个压缩引擎。这延长几何形状流水线长度从而允许在几何形状流水线必须停止以等待平铺流水线资源之前由几何形状流水线完成更多的工作。

现在参考图5,图5图示用于实现tbr的几何形状处理阶段的示例系统500,其中几何形状流水线与平铺流水线之间的仲裁在几何形状块的压缩之后被执行。图5的系统500可用于实现tbr的几何形状处理阶段,例如基于拼贴的推迟渲染tbdr。

系统500包括:多个几何形状流水线502、504,用于从自3d应用或游戏接收到的几何形状数据生成几何形状块,压缩那些几何形状块以生成对应的压缩的几何形状块,并且为每个几何形状块生成图元位置块;多个平铺流水线506、508,用于基于由多个几何形状流水线生成的图元位置块来生成落在每个拼贴的界限内的图元的每拼贴列表;以及几何形状至平铺仲裁器510,其被配置为在压缩后在多个几何形状流水线102、104与多个平铺流水线506、508之间仲裁,以确保图元位置块被平铺流水线506、508以正确的次序平铺。

每个几何形状流水线502、504接收由3d应用或游戏生成的几何形状数据(例如与多个顶点有关的顶点数据),并且对所接收到的几何形状数据执行几何形状处理和压缩。如上所述,由应用或游戏生成的初始或原始几何形状数据202被划分成多个几何形状组204并且每个几何形状流水线502、505接收几何形状组204的子集。即使几何形状组被按顺序发送到几何形状流水线502、504,因为不同的几何形状流水线502、504接收不同的几何形状组并且可具有不同的停止模式,所以从几何形状流水线502、504输出的数据可能不处于正确的次序。因此,每个几何形状组(例如pim组)被指派了指示该几何形状组相对于其他几何形状组的次序的几何形状组编号(例如pim编号)。几何形状组编号可用于确保从几何形状流水线502、504输出的数据(例如图元位置块)被诸如平铺流水线的下游组件以正确的次序处理。

像图1的几何形状流水线102、104一样,图5的几何形状流水线502、504为每个接收到的几何形状组生成一个或多个几何形状块,诸如上面参考图3所描述的几何形状块206。每个几何形状块包括与一个或多个顶点有关的变换顶点数据和与由那些顶点形成的图元有关的图元数据。每个几何形状块还包括指示与它有关的几何形状组的信息(例如几何形状组编号/pim编号)。然而,与图1的将所生成的几何形状块输出到平铺流水线106、108以进行处理的几何形状流水线102、104相比,图5的几何形状流水线502、504被配置为对几何形状块执行压缩并且将图元位置块输出到平铺流水线506、508。

在图5的示例中每个几何形状流水线502、504包括cct模块512、514;gbg520、522;以及ce528、530。图5的cct模块512、514和gbg520、522分别对应于图1的系统100的cct模块112、114和gbg120、122并且一起工作以从所接收到几何形状组生成几何形状块,诸如图3的几何形状块206。具体地,每个cct模块512、514被配置为将所接收到的几何形状组中的顶点从世界空间视口变换(或相机变换)到屏幕空间,使用索引数据和顶点数据来组装图元,执行剔除以移除对最终图像没有贡献的任何冗余图元(这减少几何形状流水线102、104的剩余部分的工作负荷),并且剪切对照裁切器体积(其大于可见体积)仅部分地在可见体积内的图元。具体地,因为仅需要使在可见体积内的图元光栅化,所以完全在可见体积外部的图元被丢弃。

一旦顶点已被变换、剔除和剪切,并且已从其组装了图元,gbg520、522就从在每个几何形状组中剩下的变换顶点生成一个或多个几何形状块。如上所述,每个几何形状块包括与一个或多个顶点有关的变换顶点数据和与由那些顶点形成的图元有关的图元数据。每个gbg520、522基本上将变换顶点捆绑成适当大小的大块(即几何形状块)以便由平铺流水线506、508处理。如上所述,可以通过在几何形状组中剩下的变换顶点的数量、每几何形状块的顶点的最大数量和/或每几何形状块的图元的最大数量来确定为几何形状组生成的几何形状块的数量和大小。在一些示例中,每几何形状块的顶点的最大数量是64并且每几何形状块的图元的最大数量是80,但是对于本领域的技术人员而言将显然的,这仅是示例并且可以使用每几何形状块的顶点和/或每几何形状块的图元的其他最大数量。

图5的ce538、530通常执行与图1的ce124、126相同的功能。特别地,每个ce528、530接收由所对应的gbg520、522生成的几何形状块,并且为每个几何形状块生成包括指示几何形状块中的每个图元的位置的信息的对应的图元位置块。指示图元的位置的信息可以包括形成图元的顶点的x和y坐标,和/或图元周围的有界框(例如通过形成图元的顶点的x、y坐标的最大值和最小值来定义)的x、y坐标。每个图元位置块还包括指示与它有关的几何形状组(即与所对应的几何形状块有关的几何形状组)的信息(例如几何形状组编号/pim编号)。

ce528、530还压缩每个几何形状块以创建压缩的几何形状块并且将经压缩的几何形状块存储在存储器130、132中。ce538、530可以使用任何适合的压缩技术来执行压缩。可以对几何形状块的全部或部分执行压缩。例如,在一些情况下ce528、530可以执行2遍无损压缩算法以压缩顶点数据(例如,坐标和属性)。像所对应的几何形状块一样,除了包括数据之外,每个压缩的几何形状块还通常包括关于经压缩的几何形状块的结构的足够信息以允许后续模块能够读取和/或处理经压缩的几何形状块。例如,每个压缩的几何形状块可包括顶点的数量、图元的数量和属性的数量。然而,不是如在图1的系统100中一样ce528、530形成平铺流水线的一部分使得压缩在仲裁后被执行,而是图5的ce528、530形成几何形状流水线的一部分,使得压缩和图元位置块生成在仲裁之前被执行。

在图5的示例中每个几何形状流水线502、504有一个ce528、530。然而,在其他示例中每个几何形状流水线502、504可以有多个ce。如上所述,这延长几何形状流水线502504从而允许由几何形状流水线502、504进行更高水平的并行处理(即几何形状流水线502、504并行地操作更长的时间),这提高系统500的性能。

因为gbg520、522通常可比所对应的ce528、530可压缩几何形状块更快地生成几何形状块,所以每个几何形状流水线502、504可以包括用于存储或者缓冲由所对应的gbg520、522生成的几何形状块的几何形状块储存器(gbs)524、526。在gbg520、522被配置为在每几何形状块基础上操作(即gbg520、522同时生成全部几何形状块并且不能生成部分几何形状块)的情况下可以调整gbs524、526的大小以能够存储最大可能的几何形状块。在一些情况下,这产生具有40kb的储存器的gbs524、526。然而,大多数几何形状块不是最大可能的大小。因此,在一些示例中gbg520、522可以被配置为检测顶点大小何时大(这将产生大几何形状块)并且响应于检测到顶点大小大而减少每几何形状块的图元的数量。顶点的大小(例如无论它是小、中还是大顶点)可以基于顶点的属性的数量。这允许将gbs524、526的大小减少至更接近地类似平均几何形状块大小的大小,但是向gbg520、522添加附加复杂性。

对于本领域的技术人员而言将显然的是,图5图示这种系统的几何形状流水线502、504的示例实施方式并且几何形状流水线502、504可以包括附加和/或不同的组件。

此外,尽管图5的示例系统500包括两个几何形状流水线502、504,然而本文所描述的原理、方法和技术可以被应用于具有多于两个几何形状流水线502、504的系统。

每个平铺流水线506、508接收由几何形状流水线502、504中的至少一个输出的图元位置块,确定每个图元落在哪一个(或哪些)拼贴内,并且生成和输出每个拼贴的列表,其识别落在该拼贴的边界内的图元。例如,平铺流水线506、508可以输出诸如图4的列表402的列表。在图5的系统500中每个平铺流水线506、508对应于通过te540的特定输入端口定义的te540的一部分,然而这仅是示例并且在其他示例中每个平铺流水线可以包括单独的te。

此外,尽管图5的示例系统500包括两个平铺流水线506、508,然而本文所描述的原理、方法和技术可以被应用于具有多于两个平铺流水线506、508的系统。

gta510在几何形状流水线502、504与平铺流水线506、508之间仲裁以确保图元位置块被平铺流水线以正确的次序(例如它原先由应用或游戏输出的次序)处理。特别地,gta510被配置为基于哪一个几何形状流水线502、504与下一个几何形状组相关联(例如基于几何形状组编号)来选择几何形状流水线502、504中的一个作为有效的流水线,然后将该几何形状组的每个图元位置块转发到平铺流水线506、508中的一个以进行处理。如上所述,每个几何形状组被指派了指示该几何形状组相对于其他几何形状组的次序的几何形状组编号。如果几何形状组被编号为使得具有较低的几何形状组编号的几何形状组应该先于具有较高的编号的几何形状组,则gta510可以被配置为选择与最低的几何形状组编号相关联的几何形状流水线502、504作为有效的几何形状流水线。然而,如果几何形状组被编号为使得具有较高的编号的几何形状组应该先于具有较低的编号的几何形状组,则gta510可以被配置为选择与最高编号的几何形状组相关联的几何形状流水线502、504作为有效的几何形状流水线。

在一些情况下,对每个几何形状流水线来说可以有专用平铺流水线,使得用于特定几何形状流水线的图元位置块必须由特定平铺流水线处理。在这些情况下,gta510可以被配置为将所选择的或有效的几何形状流水线的图元位置块转发到与有效的几何形状流水线相关联的平铺流水线。例如,在图5中gta510可以被配置为将所有图元位置块从几何形状流水线0转发到平铺流水线0并且gta510可以被配置为将所有图元位置块从几何形状流水线1转发到平铺流水线1。

然而,在其他情况下,平铺流水线可以被配置为从任何几何形状流水线接收图元位置块。这可优于每个平铺流水线束缚于具体几何形状流水线的系统而大大地改进将图元位置块从ce包装到平铺流水线中的效率。这还允许与平铺流水线分开地缩放几何形状流水线。在这些情况下,gta510可以被配置为以任何适合的方式(例如以循环方式或需求驱动方式)将图元位置块转发到平铺流水线。

例如,在一些情况下,每个平铺流水线(例如平铺引擎的平铺端口)可以与环形缓冲储存器相关联并且gta510使用基于可用环形缓冲空间的信用方案来确定哪一个流水线要转发接收到的图元位置块。具体地,当图元位置块被转发到特定平铺流水线(例如平铺引擎端口)时,图元位置块的大小从用于平铺流水线指示当前在使用中的储存器的大小的内部信用计数器递减。当平铺流水线完成图元位置块的处理时它通过返回等于图元位置块大小的信用来通知gta510。可以在重置系统时将信用计数器重置到完全存储大小。当在gta510处接收到图元位置块时,gta510可以选择剩下有最大信用数的平铺流水线(例如平铺引擎的端口)(例如,在环形缓冲器中具有最大空间量的平铺流水线)来处理该图元位置块。如果平铺流水线当中谁都没剩下足够的信用则gta510可以使ce停止。在这些情况下,gta510还可以向平铺流水线提供指示图元位置块来自于的几何形状流水线的信息,因为这不再是固有的。

gta510还可以被配置为将与所接收到的图元位置块相关联的几何形状组编号翻译为顺序编号以确保图元位置块被te540以正确的次序处理。因为多个几何形状块(以及因此多个图元位置块)可与同一几何形状组(并且因此同一几何形状组编号)相关联,以确保单独的图元位置块的排序被维持,所以每个图元位置块被指派了顺序编号。例如,如图2中所示如果几何形状组0产生几何形状块0和1(产生图元位置块0和1),并且几何形状组1也产生几何形状块0和1(产生图元位置块0和1),则可以给几何形状组0的图元位置块0指派顺序编号0;可以给几何形状组0的图元位置块1指派顺序编号1;可以给几何形状组1的图元位置块0指派顺序编号2;可以给几何形状组1的图元位置块1指派顺序编号3,依此类推。

将在下面参考图7和图8描述gta510的示例实施方式。

在一些示例中,每个几何形状流水线502、504还可以包括紧跟在几何形状流水线502、504中的对应的ce528、530之后的附加缓冲器536、538以允许未选择的几何形状流水线502、504继续处理几何形状数据更长时间,而不必在所选择的几何形状流水线数据正在由平铺流水线处理的同时停止。在压缩后添加附加缓冲器536、538使附加缓冲器变得比在压缩之前添加附加缓冲器更高效。这是因为后压缩缓冲器536、538存储比所对应的几何形状块小的图元位置块。

在一些情况下,可将由ce528、530生成的图元位置块划分成数据的三个子集-图元位置数据、边带数据以及排序或定序数据。在这些情况下,还可以将附加缓冲器536、538划分成三个子缓冲器,在图元位置块中的每种类型的数据各一个-例如图元缓冲器、边带缓冲器和排序/定序缓冲器。在每几何形状组(例如pim组)的图元的最大数量是max_primitives_geometry_group的情况下那么为了最大性能,图元缓冲器应该是num_geometry_pipelines*max_primitives_geometry_group。这将意味着在每几何形状组的图元的最大数量是256并且存在两个几何形状流水线502、504的情况下为了最大性能,图元缓冲器应该是512深度(即能够为512个图元保持图元信息)。在ce528、530被配置为在每几何形状块基础上操作(即ce528和530被配置为一次处理整个几何形状块并且不能处理部分几何形状块)的情况下,应该理想地调整图元缓冲器的大小以允许为整数个几何形状块存储图元信息。在每个几何形状块可具有最多80个图元的情况下这会将图元缓冲器的最佳大小增加至560(即向上舍入到80的最近倍数的512)深度。然而,虽然这是用于图元缓冲器的理论最佳大小,但是此理论图元缓冲器深度仅在最坏情况下适用并且在典型情况下几何形状组将包含少于256个图元,因此很可能是深度小于甚至512的图元缓冲器将是足够的。

因为每图元位置块208只有一组定序数据和边带数据,所以定序和边带缓冲器仅需要每图元位置块208存储一组数据。因此,可像等式(1)中所示的那样基于图元缓冲器的大小来调整定序和边带缓冲器的大小。特别地,可将定序和边带缓冲器的深度计算为图元缓冲器的深度除以每图元位置块的图元的平均数量。例如,如果每图元位置块平均有16个图元并且图元缓冲器的深度为512,那么根据等式(1),定序和边带缓冲器应该具有大约32的深度。

测试已经表明,当使用小到中等大小的顶点时ce528、530能够足够快地处理由所对应的gbg520、522生成的几何形状块以防止成为几何形状流水线的瓶颈,但是当使用大顶点时,ce可能成为几何形状流水线502、504中的瓶颈。然而,在两种情况下,在几何形状-平铺流水线仲裁之前执行压缩的系统(诸如图5的系统500)已经示出优于在几何形状-平铺流水线仲裁后执行压缩的系统(诸如图1的系统100)的改进性能,因为几何形状流水线能够在被停止等待平铺流水线资源之前并行地工作更长时间。

现在参考图6,图6图示用于执行tbr的几何形状处理阶段的示例方法600,其中压缩在几何形状-拼贴流水线仲裁之前被执行。

方法600在其中多个并行几何形状流水线中的每一个都为几何形状组的子集的每个几何形状组生成一个或多个几何形状块的块602处开始。如上所述,每个几何形状组(例如几何形状组204)包括与一个或多个顶点有关的顶点数据。在一些示例中,从几何形状组生成几何形状块包括将几何形状组中的顶点变换到屏幕空间中、从变换顶点数据组装图元、执行剔除以移除任何冗余图元、仅在可见体积内部分地剪切图元以及捆绑将变换顶点和相关图元信息捆绑成适当大小的一个或多个几何形状块以便由平铺流水线处理。每个几何形状块包括与一个或多个顶点有关的变换顶点数据,以及识别由那些顶点形成的图元的图元数据。每个几何形状块还包括指示与它有关的几何形状组的信息。特定几何形状组的几何形状块的大小和数量可以基于与几何形状组相关联的顶点的数量、每几何形状块的顶点的最大数量和/或每几何形状块的图元的最大数量。

在块604处,多个并行几何形状流水线中的每一个均压缩由此生成的几何形状块以形成对应的压缩的几何形状块。然后可以将经压缩的几何形状块存储在存储器中以供在后续过程(例如光栅化)中使用。可使用任何已知的压缩方法或技术来执行压缩。方法600然后进行到块606。

在块606处,为每个几何形状块生成图元位置块。图元位置块包括指示几何形状块中的每个图元的位置的信息,拼贴引擎可使用所述信息来确定图元是否落在拼贴的界限内。指示图元的位置的信息可以包括例如形成图元的顶点的x和y坐标,和/或图元周围的有界框的x、y坐标(例如通过形成图元的顶点的x、y坐标的最大值和最小值来定义)。方法600然后进行到块608。

在块608处,几何形状至平铺仲裁器510将由多个几何形状流水线生成的图元位置块按顺序转发到多个平铺流水线。换句话说,由几何形状流水线生成的所有图元位置块都通过gta510汇集,其中它们被以正确的次序放置(例如基于与其相关联的几何形状组编号),然后按照该次序转发到平铺流水线。尽管几何形状组通常被以正确的次序发送到几何形状流水线,然而可能不总是以正确的次序输出由此生成的图元位置块。例如,第一几何形状流水线可以在几何形状组0在排序上先于几何形状组1的情况下在第二几何形状流水线输出与几何形状组1相关联的图元位置块之后输出与几何形状组0相关联的图元位置块。因为重要的是图元位置块被多个平铺流水线以正确的次序处理,所以不能简单地按照图元位置块被输出的次序将它们提供给平铺流水线。因此,在几何形状流水线与平铺流水线之间执行仲裁以确保图元位置块被以正确的次序提供给平铺流水线。

在一些情况下,在多个几何形状流水线与平铺流水线之间仲裁包括基于哪一个几何形状流水线已生成与下一个几何形状组相关联的图元位置块来将多个几何形状流水线中的一个设置为有效的几何形状流水线并且然后在选择下一个有效的几何形状流水线之前将与该几何形状组相关联的所有图元位置块转发到平铺流水线。将在下面参考图10描述用于在多个几何形状流水线与平铺流水线之间仲裁的示例方法。

在块610处,图元位置块由多个平铺流水线按顺序处理以生成每个拼贴的指示哪些图元落在该拼贴的边界内的列表(例如图4的列表402)。

现在参考图7,图7图示图5的gta510的示例实施方式。如上所述,gta510被配置为在几何形状流水线502、504与平铺流水线506、508之间仲裁以确保由几何形状流水线502、504生成的图元位置块被平铺流水线506、508以正确的次序处理。

图5的示例gta510包括被配置为在几何形状流水线502、504与平铺流水线506、508之间执行仲裁的流水线仲裁器702。流水线仲裁器702具有每几何形状流水线用于接收由特定几何形状流水线生成的图元位置块的一个输入;以及每平铺流水线用于将图元位置块发送到特定平铺流水线的一个输出。在图7的示例中存在两个几何形状流水线并因此有两个输入,以及存在两个平铺流水线并因此有两个输出。

流水线仲裁器702被配置为选择与下一个几何形状组相关联(基于几何形状组编号)的几何形状流水线502、504作为有效的几何形状流水线并且将与该几何形状组相关联的所有图元位置块提供给一个或多个平铺流水线。在几何形状组编号使得具有较低的几何形状组编号的几何形状组将在具有较高的几何形状组编号的几何形状组之前被处理的情况下流水线仲裁器702可以被配置为选择与最低的几何形状组编号相关联的几何形状流水线502、504作为有效的几何形状流水线。然而,在几何形状组编号使得具有较高的几何形状组编号的几何形状组将在具有较低的几何形状组编号的几何形状组之前被处理的情况下流水线仲裁器702可以被配置为选择与最高的几何形状组编号相关联的几何形状流水线502、504。

为了确保图元位置块被以正确的次序处理,流水线仲裁器702还可以被配置为用顺序编号替换几何形状组识别符(例如编号)。特别地,当图元位置块由流水线仲裁器702接收到时每个图元位置块将与几何形状组识别符(例如编号)相关联。因为可以存在与同一几何形状组相关联的多于一个图元位置块,所以可以存在与同一几何形状组编号相关联的多于一个图元位置块,因此,在没有进一步信息的情况下可能无法维持与同一几何形状组相关联的图元位置块的排序。因此,流水线仲裁器702用单独的顺序编号替换几何形状组识别符(例如编号)。

例如,如图2中所示如果几何形状组0产生几何形状块0和1(产生图元位置块0和1),并且几何形状组1还产生几何形状块0和1(产生图元位置块0和1),然后可以给几何形状组0的图元位置块0指派顺序编号0;可以给几何形状组0的图元位置块1指派顺序编号1;可以给几何形状组1的图元位置块0指派顺序编号2;并且可以给几何形状组1的图元位置块1指派顺序编号3,依此类推。将在下面参考图9提供生成顺序编号的另一示例。

一旦与当前几何形状组相关联的所有图元位置块已被提供给平铺流水线(具有适当的顺序编号),流水线仲裁器702就重复过程-即流水线仲裁器702选择与下一个几何形状组相关联的几何形状流水线502、504作为有效的几何形状流水线并且将与该几何形状组相关联的所有图元位置块提供给一个或多个平铺流水线等。

在下面参考图8描述流水线仲裁器702的示例实施方式。

在一些情况下,gta510还可以被配置为充当几何形状流水线的组件之间的接口。

现在参考图8,图8图示图7的流水线仲裁器702的示例实施方式。如上所述,流水线仲裁器702被配置为选择与下一个几何形状组相关联(基于几何形状组编号)的几何形状流水线502、504作为有效的几何形状流水线并且将与该几何形状组相关联的所有图元位置块转发到一个或多个平铺流水线。在图8的示例中每个图元位置块可被理解为包括数据的三个集合-定序数据、边带数据和图元位置数据(ppd)-并且每个集合分别被流式传输到流水线仲裁器702中。

图元位置数据(ppd)包括识别要平铺的一个或多个图元的位置的信息。图元位置数据可以包括来自所对应的几何形状块的图元的顶点的x和y坐标;并且/或者图元位置数据可以包括定义每个图元的有界框(通过图元的顶点的x和y坐标的最大值和最小值来定义)的信息。图元位置数据还可以包括可以协助平铺引擎确定图元是否落在拼贴的边界内的其他信息。例如,在图元是点、线或由点/线(而不是实心三角形)组成的多边形(例如三角形)的情况下图元位置数据还可以包括点或线的宽度。在图元是多边形(例如三角形)的情况下图元位置数据还可以包括指示顶点被发送的次序(例如顺时针或逆时针)的卷绕次序。图元位置数据还可以包括针对每个图元指示该图元是否如此小以致它在任一方向上宽仅1个拼贴的信息。

边带数据包括与图元位置块和/或该图元位置块内的图元有关的状态和其他信息。边带数据可以包括例如关于所对应的几何形状块的信息,诸如但不限于在存储器中已存储所对应的压缩的几何形状块的地址、与经压缩的几何形状块内的特定图元有关的数据的定位、isp状态的大小以及渲染目标、存储器页面打开/关闭请求和用于结束当前渲染的终止字。定序数据包括允许以正确的次序处理图元位置块的信息。定序数据可以包括例如指示几何形状组的开始、几何形状组的结束、图元位置块的开始、图元位置块的结束和几何形状组编号的信息。

在图8的流水线仲裁器702中定序数据被用作控制有效的几何形状流水线的选择的主数据。具体地,图8的示例流水线仲裁器702包括几何形状流水线选择器802,所述几何形状流水线选择器802被配置为监视来自多个几何形状流水线的定序数据(在图8的示例中存在两个几何形状流水线-几何形状流水线0和几何形状流水线1)以检测当前几何形状组的结束。响应于检测到当前几何形状组的结束,几何形状流水线选择器802基于在多个几何形状流水线的顺序数据中检测到的几何形状组编号来确定几何形状流水线中的哪一个将是下一个有效的几何形状流水线。特别地,几何形状组选择器从定序数据中识别几何形状流水线中的哪一个与下一个几何形状组相关联(例如哪一个几何形状流水线与最低的几何形状组编号相关联,或者哪一个几何形状与最高的几何形状组编号相关联)。

一旦几何形状流水线选择器802已选择多个几何形状流水线中的一个作为有效的几何形状流水线,几何形状流水线选择器802就向定序复用器(mux)804发送信号(例如所选择的几何形状流水线编号),所述信号使定序mux804输出所选择的或有效的几何形状流水线的定序数据。几何形状流水线选择器还将信号(例如所选择的几何形状流水线编号)发送到(i)使边带mux808输出所选择的或有效的几何形状流水线的边带数据的第一fifo(先进先出)806;以及将使图元mux810响应于检测到新的图元位置块的开始而输出所选择的或有效的几何形状流水线的图元位置数据的(ii)第二fifo807。边带数据接口然后被配置为从使边带mux808输出所选择的或有效的几何形状流水线的边带数据的第一fifo806弹出信号(例如选择的几何形状流水线编号);并且图元数据接口被配置为从使图元mux810响应于检测到新的图元位置块的开始而输出所选择的或有效的几何形状流水线的图元位置数据的第二fifo807弹出信号(例如选择的几何形状流水线编号)。

流水线仲裁器702还包括用于将几何形状组编号转换成顺序编号的顺序编号生成器812。顺序编号生成器812接收所选择的或有效的几何形状流水线的定序数据并且监视该定序数据以检测新的图元位置块的开始。响应于检测到新的图元位置块,顺序编号生成器812生成新的顺序编号并且用该顺序编号替换定序数据中的几何形状组编号。在一些示例中,顺序编号生成器812包括保持当前顺序编号的n位计数器并且每当由顺序编号生成器812检测到新的图元位置块时计数器递增。在下面参考图9描述顺序编号如何可以由顺序编号发生器812生成的示例。

图8的流水线仲裁器702还包括平铺流水线选择器814,所述平铺流水线选择器814被配置为选择多个平铺流水线中的一个作为所选择的几何形状流水线的定序、边带和图元数据的接受者并且使所选择的或有效的几何形状流水线的定序数据、边带数据和图元位置数据被转发到所选择的平铺流水线。在图8的示例中平铺流水线选择器814监视输出到平铺流水线的定序数据以确定正确的平铺流水线。一旦平铺流水线选择器814已选择哪一个平铺流水线将从有效的几何形状组接收数据,平铺流水线选择器814就向定序复用器816发送信号(例如所选择的平铺流水线编号),所述信号使定序复用器816将所选择的或有效的几何形状流水线的定序数据转发到所选择的平铺流水线。平铺流水线选择器814还将信号(例如所选择的平铺流水线编号)发送到(i)将使边带复用器820将所选择的或有效的几何形状流水线的边带数据转发到所选择的平铺流水线的第三fifo(先进先出)818;以及(ii)当拼贴流水线选择器814检测到新的图元位置块时将使图元复用器822将所选择的或有效的几何形状流水线的图元位置数据转发到所选择的平铺流水线的第四fifo819。边带数据接口然后被配置为从使边带复用器820将所选择的或有效的几何形状流水线的边带数据转发到所选择的平铺流水线的第三fifo818弹出信号;并且图元数据接口被配置为从将使图元复用器822在平铺流水线选择器814检测到新的图元位置块时将所选择的或有效的几何形状流水线的图元位置数据转发到所选择的平铺流水线的第四fifo819弹出信号。

此配置允许独立地处理三个流而不用重复切换逻辑(例如几何形状流水线选择器802和平铺流水线选择器814),因为这些流可以不同的速度运行,从而允许要独立地处理的数据流中的每一个(定序数据、边带数据和图元位置数据)可以改进流水线仲裁器的性能。

现在参考图9,图9图示gta510的操作以及特别是顺序编号到图元位置块的分配。在图9的示例中存在两个几何形状流水线502、504-几何形状流水线0和几何形状流水线1。几何形状流水线0为几何形状组0生成前面是开始几何形状组0信息908并且后面是结束几何形状组0信息910的三个图元位置块(ppb)902、904、906。几何形状流水线1从几何形状组1生成前面是开始几何形状组1信息918并且后面是结束几何形状组1信息920的三个图元位置块(ppb)912、914和916。gta510将确定几何形状流水线0是与下一个几何形状组(几何形状组0)相关联的几何形状流水线,然后将与几何形状组0的图元位置块902、904和906相对应的三个图元位置块922、924、926分别转发到附加有顺序编号0、1和2的适当的平铺流水线。一旦gta510接收到结束几何形状组0信息,gta510就将确定几何形状流水线1是与下一个几何形状组(几何形状组1)相关联的几何形状流水线,然后将与图元位置块912、914、916相对应的三个图元位置块928、930和932分别转发到附加有顺序编号3、4和5的适当的平铺流水线。

现在参考图10,图10图示可以由图5的gta510和/或图7和图8的流水线仲裁器702实现的用于在多个几何形状流水线与多个平铺流水线之间仲裁的示例方法1000。在方法1000中gta识别与下一个几何形状组相关联的几何形状流水线并且在该几何形状组的持续时间内锁定到该几何形状流水线上。特别地,gta将与该几何形状组相关联的所有图元位置块转发到平铺流水线。只有在将与该几何形状组相关联的所有图元位置块已被转发到平铺流水线之后,gta才从该几何形状流水线解锁并且识别要锁定到上面的下一个几何形状流水线。

方法1000在其中gta510(例如流水线仲裁器702)选择多个几何形状流水线中的一个作为有效的几何形状流水线的块1002处开始。gta510基于几何形状组编号选择与下一个几何形状组相关联的几何形状流水线作为有效的几何形状流水线。如上所述,例如,在具有较低的几何形状组编号的几何形状组将先于具有较高的几何形状组编号的几何形状组的情况下gta510可以选择与最低的几何形状组编号相关联的几何形状流水线;或者在具有较高的几何形状组编号的几何形状组将先于具有较低的几何形状组编号的几何形状组的情况下gta510可以选择与最高的几何形状组编号相关联的流水线。一旦几何形状流水线中的一个已被选择为有效的几何形状流水线,gta510就被说成被锁定到该流水线上并且方法进行到块1004。

在块1004处,gta510从所选择的或有效的几何形状流水线获得下一个图元位置块。一旦下一个图元位置块已被获得方法1000就进行到块1006。

在块1006处,gta510将与在块1004中获得的图元位置块相关联的几何形状组编号转换或者翻译成顺序编号以生成修改的图元位置块。因为几何形状流水线在每几何形状组基础上操作并且平铺流水线基于在每图元位置块基础上操作,所以向每个图元位置块指派单独的顺序编号允许在平铺流水线中自始至终维持图元位置块的最终次序。如上面参考图7和图8所描述的,gta510可以维持滚动n位计数器并且每当获得新的图元位置块时,当前计数器值被用作该图元位置块的顺序编号并且计数器递增以为下一个图元位置块生成顺序编号。一旦图元位置块的几何形状组编号被转换成顺序编号,方法1000就进行到块1008。

在块1008处,gta510选择多个平铺流水线中的一个来接收修改的图元位置块。在一些情况下,可以存在专用于每个几何形状流水线的一个平铺流水线,其可仅处理来自该几何形状流水线的图元位置块。换句话说,在几何形状流水线与平铺流水线之间存在一对一关系。在这些情况下,gta510选择与所选择的或有效的几何形状流水线相对应的平铺流水线作为要接收经修改的图元位置块的平铺流水线。在其他情况下,每个流水线可以能够从任何几何形状流水线接收图元位置块。在这些情况下,gta510可以基于任何适合的准则或度量来选择要接收图元位置块的平铺流水线。例如,在一些情况下gta510可以以循环方式选择平铺流水线。一旦gta510已选择多个平铺流水线中的一个来接收经修改的图元位置块,方法1000就进行到块1010。

在块1010处,gta510将经修改的图元位置块转发到在块1008中选择的平铺流水线。一旦gta510已将经修改的图元位置块转发到所选择的平铺流水线,则方法1000就进行到块1012。

在块1012处,gta510确定在块1004处获得的图元位置块是否是几何形状组的最后图元位置块。换句话说,gta510确定gta510是否已将与当前几何形状组相关联的所有图元位置块转发到平铺流水线。在一些情况下,几何形状流水线可以被配置为将图元位置块作为几何形状组提供给gta510。例如,如图9所示与同一几何形状组相关联的图元位置块可以前面是开始几何形状组信息并且后面是结束几何形状组信息。在这些情况下,当gta510检测到结束几何形状组信息时gta510可以确定已经到达几何形状组的末尾(并且因此与几何形状组相关联的所有图元位置块已被转发到平铺流水线)。如果gta510确定已经到达几何形状组的末尾并且与几何形状组相关联的所有图元位置块已被转发到平铺流水线,则gta510从当前几何形状流水线解锁并且方法1000往回进行到gta510选择几何形状流水线中的一个作为有效的几何形状流水线的块1002。然而,如果gta510确定尚未到达几何形状组的末尾并且存在尚未被转发到平铺流水线的与几何形状组相关联的至少一个以上图元位置块,则方法1000往回进行到获得几何形状组的下一个图元位置块的块1004。

图11示出可以在其中实现本文所描述的系统500的计算机系统。计算机系统包括cpu1102、gpu1104、存储器1106和其他器件1114,诸如显示器1116、扬声器1118和相机1120。系统1110(与图5的系统500相对应)被示出为实现在gpu1104内。在其他示例中,可以将系统1110实现在cpu1102内。计算机系统的组件可经由通信总线1122彼此通信。

图1、图5、图8和图9的系统、gta和流水线仲裁器被示出为包括许多功能块。这仅是示意性的,而不旨在定义此类实体的不同逻辑元件之间的严格划分。可以以任何适合的方式提供每个功能块。应当理解的是,在本文中描述为由系统500的元件形成的中间值不需要由系统500在任何点以物理方式生成并且可以仅仅表示方便地描述系统500在其输入和输出之间执行的处理的逻辑值。

可以在集成电路上用硬件实现本文所描述的系统、gta和流水线仲裁器。本文所描述的系统、gta和流水线仲裁器可以被配置为执行本文所描述的方法中的任一个。通常,上述的功能、方法、技术或组件中的任一个可用软件、固件、硬件(例如,固定逻辑电路)或其任何组合加以实现。可以在本文中使用术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”来通常表示软件、固件、硬件或其任何组合。在软件实施方式的情况下,模块、功能性、组件、元件、单元、块或逻辑表示当在处理器上执行时执行所指定的任务的程序代码。本文所描述的算法和方法能通过一个或多个处理器执行使处理器执行算法/方法的代码来执行。计算机可读存储介质的示例包括随机存取存储器(ram)、只读存储器(rom)、光盘、闪速存储器、硬盘存储器以及可以使用磁、光学和其他技术来存储可由机器访问的指令或其他数据的其他存储器器件。

如本文所使用的术语计算机程序代码和计算机可读指令指代用于处理器的任何种类的可执行代码,包括用机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网络表),以及用诸如c、java或opencl的编程语言代码表达的代码。可执行代码可以是例如任何类型的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境处被适当地执行、处理、解释、编译、执行时,使支持可执行代码的计算机系统的理器执行由代码指定的任务。

处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其合集或部分,具有处理能力使得它可执行指令。处理器可以是任何种类的通用或专用处理器,诸如cpu、gpu、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等。计算机或计算机系统可以包括一个或多个处理器。

它还旨在包含定义如本文所描述的硬件的配置的软件,诸如hdl(硬件描述语言)软件,同样被用于设计集成电路或者用于配置可编程芯片,以执行期望的功能。也就是说,可以提供计算机可读存储介质,所述计算机可读存储介质在其上编码有形式为集成电路定义数据集的计算机可读程序代码,所述集成电路定义数据集当在集成电路制造系统中被处理时,将系统配置成制造被配置为执行本文所描述的方法中的任一个的系统,或者制造包括本文所描述的任何设备的处理器。集成电路定义数据集可以是例如集成电路描述。

可以提供在集成电路制造系统处制造如本文所描述的系统的方法。可以提供集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中被处理时,使制造系统的方法被执行。

集成电路定义数据集可以形式为计算机代码,例如作为网络表、用于配置可编程芯片的代码、作为在任何级别下定义集成电路的硬件描述语言,包括作为寄存器转移级别(rtl)代码、作为诸如verilog或vhdl的高级电路表示以及作为诸如oasis(rtm)和gdsii的低级电路表示。可以在计算机系统处处理逻辑上定义集成电路的更高级别表示(诸如rtl),所述计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,所述软件环境包括电路元件的定义以及用于组合那些元件以生成如通过表示所定义的集成电路的制造定义的规则。通常在软件在计算机系统处执行以便定义机器的情况下,可能需要一个或多个中间用户步骤(例如提供命令、变量等)以让被配置用于生成集成电路的制造定义的计算机系统执行定义集成电路的代码以便生成该集成电路的制造定义。

现在将相对于图12描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置成制造系统(例如系统500)的示例。

图12示出被配置为制造如本文示例中的任一个中所描述的系统(例如系统500)的集成电路(ic)制造系统1202的示例。特别地,ic制造系统1202包括布局处理系统1204和集成电路生成系统1206。ic制造系统1202被配置为接收ic定义数据集(例如,定义如本文示例中的任一个中所描述的系统(例如系统500)),处理ic定义数据集,并且根据ic定义数据集(例如其具体实现如本文示例中的任一个中所描述的系统(例如系统500))来生成ic。ic定义数据集的处理将ic制造系统1202配置成制造具体实现如本文示例中的任一个中所描述的系统(例如系统500)的集成电路。

布局处理系统1204被配置为接收并处理ic定义数据集以确定电路布局。根据ic定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成rtl代码以例如按逻辑组件(例如与非、或非、与、或、复用器和触发器组件)确定要生成的电路的门级表示。可通过确定用于逻辑组件的位置信息来根据电路的门级表示确定电路布局。可以自动地或者在用户参与情况下做这个以便优化电路布局。当布局处理系统1204已确定电路布局时,它可以将电路布局定义输出到ic生成系统1206。电路布局定义可以是例如电路布局描述。

如本领域中已知的,ic生成系统1206根据电路布局定义来生成ic。例如,ic生成系统1206可以实现用于生成ic的半导体器件制作工艺,所述工艺可以涉及光刻和化学处理步骤的多步骤序列,在此期间在由半导体材料制成的晶片上逐渐地创造电子电路。电路布局定义可以形式为掩模,所述掩模可在光刻工艺中被用于根据电路定义来生成ic。可替代地,提供给ic生成系统1206的电路布局定义可以形式为计算机可读代码,ic生成系统1206可使用所述计算机可读代码来形成在生成ic时使用的适合的掩模。

由ic制造系统1202执行的不同过程可以被全部实现在一个位置中,例如由一方实现。可替代地,ic制造系统1202可以是分布式系统,使得一些过程可以在不同位置处被执行,并且可以由不同方执行。例如,可以在不同位置中和/或由不同方执行以下步骤的阶段中的一些:(i)合成表示ic定义数据集的rtl代码以形成要生成的电路的门级表示,(ii)基于门级表示生成电路布局,(iii)依照电路布局形成掩模,以及(iv)使用掩模来制作集成电路。

在其他示例中,在集成电路制造系统处处理集成电路定义数据集可以将系统配置成在不用对ic定义数据集进行处理以便确定电路布局的情况下制造系统(例如,系统500)。例如,集成电路定义数据集可以定义可重构处理器(诸如fpga)的配置,并且该数据集的处理可以将ic制造系统配置成生成具有该定义配置的可重构处理器(例如通过将配置数据加载到fpga)。

在一些实施例中,集成电路制造定义数据集当在集成电路制造系统中被处理时可以使集成电路制造系统生成如本文所描述的器件。例如,通过集成电路制造定义数据集以上面关于图12所描述的方式配置集成电路制造系统可以使如本文所描述的器件被制造出。

在一些示例中,集成电路定义数据集能包括在数据集下定义的硬件上或者与在数据集下定义的硬件相结合地运行的软件。在图12中所示的示例中,可以进一步通过集成电路定义数据集将ic生成系统配置成在制造集成电路时,依照在集成电路定义数据集下定义的程序代码将固件加载到该集成电路上或者以其他方式给集成电路提供程序代码以供与集成电路一起使用。

可以在集成电路上用硬件具体实现本文所描述的图形处理系统。本文所描述的图形处理系统可以被配置为执行本文所描述的方法中的任一个。

当与已知实施方式相比较时,在本申请中在装置、设备、模块和/或系统中(以及在本文所实现的方法中)阐述的构思的实施方式可以产生性能改进。性能改进可以包括增加的计算性能、减少的等待时间、增加的吞吐量和/或降低的功耗中的一种或多种。在此类装置、设备、模块和系统(例如集成电路)的制造期间,可对照物理实施方式来权衡性能改进,从而改进制造方法。例如,可以对照布局面积来用性能改进进行交换,从而与已知实施方式的性能匹配但是使用较少的硅。例如,这可以通过以串行化方式重用功能块或者在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反地,可以为了改进的性能而用本申请中阐述的在装置、设备、模块和系统的物理实施方式方面产生改进(诸如减少的硅面积)的构思进行交换。例如,这可以通过在预定义面积预算内制造模块的多个实例来完成。

申请人因此独立地公开本文所描述的每个单独的特征以及两个或更多个此类特征的任何组合,在这个意义上能够整体上按照本领域的技术人员的公知常识基于本说明书作为执行此类特征或组合,而不管此类特征或特征的组合是否解决本文所公开的任何问题如何。鉴于前面的描述,对于本领域的技术人员而言将显然的是,可以在本发明的范围内做出各种修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1