减少图形系统中的冗余渲染的制作方法

未命名 10-25 阅读:63 评论:0

减少图形系统中的冗余渲染
1.相关申请的交叉引用
2.本技术要求于2022年3月31日提交的英国专利申请2204714.6和2204715.3的优先权,该英国专利申请全文以引用方式并入本文中。
技术领域
3.本公开涉及减少图形系统中的冗余渲染。


背景技术:

4.图形处理系统通常被配置为例如从在计算机系统上运行的应用接收图形数据,并且渲染图形数据以提供渲染输出。例如,提供到图形处理系统的图形数据可描述待渲染的三维(3d)场景内的几何形状,并且渲染输出可以是场景的渲染图像。替代地,场景的渲染图像可由多个渲染输出形成(例如,由合成渲染输出形成)。
5.一些图形处理系统(其可称作“基于图块的”图形处理系统)使用被细分成多个图块的渲染空间。“图块”是渲染空间的区域,并且可具有任何合适的形状,但通常是矩形的(其中术语“矩形”包含方形)。举一些示例,图块可以覆盖要渲染的图像的16
×
16像素块或32
×
32像素块。将渲染空间细分成图块允许以逐个图块的方式来渲染图像,其中可以在图块的渲染期间将“图块”的图形数据临时存储在“芯片上”,从而减少需要在图形处理系统的图形处理单元(gpu)上实现的芯片上存储器的量。
6.基于图块的图形处理系统通常以两个阶段操作。在第一阶段期间,处理图形数据(例如,如从应用接收的)以生成经处理的图形数据项集合,称为图元。图元可以表示描述场景内结构表面的几何形状。例如,图元可以采取2d几何形状、线或点的形式。图元具有一个或多个顶点,例如三角形图元在每个角处具有一个顶点,即三个顶点。场景内的对象或结构可由一个或多个图元组成。在某些情况下,结构可以由许多(例如,数百、数千、数百万等)图元组成。然后分析经处理的图元,以针对每个图块确定哪些图元至少部分地位于该图块内。
7.该第一阶段在本文中可以被称为几何处理阶段。在该阶段期间,对图形数据执行的操作通常是每顶点或每图元操作。
8.在第二阶段期间,可以通过处理被确定为至少部分地位于图块内的图元来渲染该图块。在一些情况下,作为从第一阶段到第二阶段的过渡的一部分,可以在采样位置处对被确定为位于图块内的图元进行采样,以确定该图元存在于屏幕的哪些基本区域(例如,像素)中。然后可以为基本区域中的每个基本区域生成片段。然后,可以在第二阶段期间处理生成的片段以渲染图块。因此,作为第二阶段的一部分来执行以渲染图块的操作通常是每像素或每片段操作。
9.第二阶段的输出(对于被渲染的特定图块)可以采取图块内每个像素的值(例如,颜色值)集合的形式。也就是说,第二阶段的输出可以是每像素值的集合。在第一阶段结束后,可以根据第二阶段依次(或至少部分并行地)处理每个图块。第二阶段在本文中可以被称为渲染阶段。
10.图1示出可用于渲染3d场景的图像的基于图块的图形处理系统的示例。图2中以200示出3d场景的示意图。
11.图形处理系统100包括图形处理单元(gpu)102和存储器的两个部分1041和1042,这两个部分可以或可以不形成相同物理存储器的一部分。
12.gpu 102包括几何处理逻辑106、平铺单元108和渲染逻辑110,其中渲染逻辑110包括获取单元112和片段处理逻辑114。渲染逻辑110可被配置为对渲染空间的图块的图形数据(例如,图元片段)实现隐藏表面移除(hsr)以及纹理化和/或着色。
13.几何处理逻辑106被配置为从应用接收描述要渲染的场景(例如,图2中的场景200)的图形数据(例如,以图元的形式)。在几何处理阶段中,几何处理逻辑106执行几何处理功能,诸如裁剪和剔除以移除未落入可见视图的图元。几何处理逻辑106还可以将图元投影到屏幕空间(在图2中以202示意性地示出)中。几何处理逻辑106还可以对图元执行顶点着色器程序,例如操纵或改变图元或顶点数据。几何处理逻辑106可以进一步执行诸如外壳着色器、棋盘形布置和域着色器之类的操作。从几何处理逻辑106输出的经处理的图元被传递到平铺单元108,该平铺单元确定哪些图元存在于图形处理系统100的渲染空间的每个图块(例如,图块204a-d)内(即,至少部分地相交)。平铺单元108可通过为图块创建控制流(或“显示列表”或“图块列表”)来将图元指派给渲染空间的图块,其中图块的控制流包括存在于图块内的图元的指示。经处理的图元数据被整理并存储在存储器1041中称为图元块的数据结构中,并且指示哪些图元位于哪些图块中的控制流从平铺单元108输出并存储在存储器1041中。
14.在渲染阶段,渲染逻辑110渲染渲染空间的图块的图形数据,以生成渲染值,例如渲染的图像值。渲染逻辑110可被配置为实现任何合适的渲染技术,诸如光栅化或光线跟踪来执行渲染。为了渲染图块,获取单元112从图元块,例如从存储器1041或从高速缓存中获取图块的控制流和与该图块相关的图元。片段处理逻辑114可对图元片段(即,通过对图元进行采样而形成的片段)执行包括隐藏表面移除以及着色和/或纹理化的操作,从而形成图块的渲染图像值。纹理化和/或着色可以通过执行合适的着色器程序来执行。渲染的图像值(例如,像素颜色值)然后可以被传递到存储器1042以用于存储。渲染图像可以从图形处理系统100输出,并以任何合适的方式使用,例如显示在显示器上或存储在存储器中或传输到另一个设备等。
15.当运行某些应用时(例如,用户界面、2d游戏、具有静态背景的应用等),可能出现图形处理系统针对多次渲染输出相同渲染值(跨整个图像或图像的部分)的情况。也就是说,整个图像或图像的一个或多个图块在一系列多次渲染内可以具有相同内容(并且因此具有相同渲染值)。这意味着图形处理单元可能对多次渲染执行相同操作以针对图像的一个或多个图块仅输出相同的渲染值,从而导致不必要的处理。


技术实现要素:

16.提供本发明内容是为了以简化形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用以限制所要求保护的主题的范围。
17.公开了一种使用图形处理单元执行渲染的方法和系统,该图形处理单元实现基于
图块的图形流水线,其中渲染空间被细分为图块。接收渲染的几何数据,该几何数据包括与一个或覆盖顶点着色器程序相关联的图元。使用顶点着色器程序来处理几何数据以生成经处理的图元,并且确定经处理的图元中的每个经处理的图元位于哪个图块中。对于至少一个所选择的图块,存储i)每图块顶点着色器数据的表示,其标识用于生成该图块中经处理的图元的一个或多个顶点着色器程序,以及ii)每图块渲染数据的表示,其可在图形流水线的后续阶段中渲染该图块中的经处理的图元时使用。在将所选择的图块的每图块渲染数据与先前渲染的每图块渲染数据进行比较之前,通过将该图块的每图块顶点着色器数据与先前渲染的顶点着色器数据进行比较来确定该图块的先前渲染的输出是否可用作该渲染的输出。
18.第一方面提供了一种使用图形处理单元执行渲染的方法,该图形处理单元被配置为实现基于图块的图形流水线,其中渲染空间被细分为多个图块,该方法包括:接收渲染的几何数据,该几何数据包括多个图元,每个图元与一个或多个顶点着色器程序相关联;使用一个或多个顶点着色器程序来处理几何数据以生成一个或多个经处理的图元;确定经处理的图元中的哪些位于多个图块中的每个图块内;对于多个图块中的至少一个所选择的图块,存储i)每图块顶点着色器数据的表示,其标识用于生成位于该图块中的经处理的图元的一个或多个顶点着色器程序,以及ii)每图块渲染数据的表示,其可在图形流水线的后续阶段中渲染该图块内的经处理的图元时使用;以及对于所选择的图块或每个所选择的图块,通过在将该图块的每图块渲染数据与先前渲染的每图块渲染数据进行比较之前,将该图块的每图块顶点着色器数据与先前渲染的顶点着色器数据进行比较来确定该图块的先前渲染的输出是否可以用作该渲染的输出。
19.确定该图块的先前渲染的输出是否可用作该渲染的输出可包括:确定每图块顶点着色器数据是否匹配先前渲染的对应每图块顶点着色器数据;响应于确定每图块顶点着色器数据匹配,确定该图块的每图块渲染数据是否匹配先前渲染的对应每图块渲染数据;以及响应于确定每图块渲染数据匹配,使用该图块的先前渲染的输出作为该渲染的输出。
20.确定该图块的先前渲染的输出是否可用作该渲染的输出还可包括:响应于确定每图块顶点着色器数据不匹配,使图形流水线渲染该图块。确定该图块的先前渲染的输出是否可用作该渲染的输出还可包括:响应于确定每图块渲染数据不匹配,使图形流水线渲染该图块。
21.该方法还可包括存储指示该渲染的一个或多个特征的渲染范围数据,并且在确定该图块的先前渲染的输出是否可用作该渲染的输出之前,使用渲染范围数据来检查是否跳过每图块顶点着色器数据和每图块渲染数据比较,并且使图形流水线渲染该图块。渲染范围数据可包括透明颜色,并且使用渲染范围数据来检查是否跳过每图块顶点着色器数据和每图块渲染数据比较可包括确定透明颜色是否与先前渲染的颜色匹配。渲染范围数据可包括有效标志,并且使用渲染范围数据来检查是否跳过每图块顶点着色器数据和每图块渲染数据比较可包括确定有效标志是否具有预先确定的值。该方法可基于以下中的至少一项将有效标志设置为预先确定的值:指示渲染是使用多个渲染目标的场景的一部分的数据;并且渲染包括比阈值数量更多的绘制调用。
22.该方法还可包括,对于多个图块中的至少一个所选择的图块,存储iii)指示是否跳过每图块顶点着色器数据和每图块渲染数据比较的每图块有效性数据,其中每图块有效
性数据可基于位于该图块内的经处理的图元的数量来设置。
23.每图块渲染数据可包括位于该图块内的经处理的图元中的每个经处理的图元的顶点坐标和顶点状态数据。存储每图块渲染数据的表示可包括生成位于该图块内的经处理的图元中的每个经处理的图元的顶点坐标和顶点状态数据的散列,以及存储散列值。顶点状态数据可包括与每个顶点相关联且用于渲染图块中的经处理的图元的数据,包括以下中的一项或多项:像素着色器标识符,变化,颜色数据,表面正常数据以及纹理数据。
24.第二方面提供了一种图形处理系统,该图形处理系统被配置为实现基于图块的图形流水线,其中渲染空间被细分为多个图块,该图形处理系统包括:几何处理逻辑,该几何处理逻辑被配置为接收渲染的几何数据,该几何数据包括多个图元,每个图元与一个或多个顶点着色器程序相关联,并且使用一个或多个顶点着色器程序来处理几何数据以生成一个或多个经处理的图元;平铺单元,该平铺单元被配置为确定经处理的图元中的哪些位于每个图块内;数据表征单元,该数据表征单元被配置为对于多个图块中的至少一个所选择的图块,在存储器中存储i)每图块顶点着色器数据的表示,其标识用于生成位于该图块中的经处理的图元的一个或多个顶点着色器程序,以及ii)每图块渲染数据的表示,其表征可用于在图形流水线的后续阶段中渲染该图块内的经处理的图元的数据;以及测试单元,该测试单元被配置为对于所选择的图块或每个所选择的图块,通过在将该图块的每图块渲染数据与先前渲染的每图块渲染数据进行比较之前,将该图块的每图块顶点着色器数据与先前渲染的顶点着色器数据进行比较来确定该图块的先前渲染的输出是否可以用作该渲染的输出。
25.为了确定该图块的先前渲染的输出是否可用作该渲染的输出,测试单元可进一步被配置为:确定每图块顶点着色器数据是否匹配先前渲染的对应每图块顶点着色器数据;响应于确定每图块顶点着色器数据匹配,确定该图块的每图块渲染数据是否匹配先前渲染的对应每图块渲染数据;并且响应于确定每图块渲染数据匹配,使用该图块的先前渲染的输出作为该渲染的输出。
26.为了确定该图块的先前渲染的输出是否可用作该渲染的输出,测试单元可进一步被配置为:响应于确定每图块顶点着色器数据不匹配,使图形流水线渲染该图块。为了确定该图块的先前渲染的输出是否可用作该渲染的输出,测试单元可进一步被配置为:响应于确定每图块渲染数据不匹配,使图形流水线渲染该图块。
27.数据表征单元可进一步被配置为存储指示该渲染的一个或多个特征的渲染范围数据,并且在确定该图块的先前渲染的输出是否可用作该渲染的输出之前,使用渲染范围数据来检查是否跳过每图块顶点着色器数据和每图块渲染数据比较,并且使所述图形流水线渲染所述图块。数据表征单元可进一步被配置为对于多个图块中的至少一个所选择的图块,存储iii)指示是否跳过每图块顶点着色器数据和每图块渲染数据比较的每图块有效性数据并且渲染位于该图块内的图元以渲染图块,其中每图块有效性数据基于位于该图块内的经处理的图元的数量来设置。
28.第三方面提供了一种图形处理系统,该图形处理系统被配置为执行上述方法。
29.图形处理系统可以用集成电路上的硬件来体现。可以提供一种在集成电路制造系统处制造图形处理系统的方法。可以提供一种集成电路定义数据集,该集成电路定义数据集在集成电路制造系统中被处理时配置该系统以制造图形处理系统。可以提供一种非暂时
性计算机可读存储介质,该非暂时性计算机可读存储介质上存储有图形处理系统的计算机可读描述,该计算机可读描述在集成电路制造系统中处理时,使集成电路制造系统制造体现图形处理系统的集成电路。
30.可以提供一种集成电路制造系统,该集成电路制造系统包括:非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质上存储有图形处理系统的计算机可读描述;布局处理系统,该布局处理系统被配置为处理计算机可读描述,以便生成体现图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置为根据电路布局描述来制造图形处理系统。
31.可以提供一种用于执行本文中描述的任一方法的计算机程序代码。可提供非暂时性计算机可读存储介质,其上存储有计算机可读指令,当在计算机系统处执行时,所述计算机可读指令促使所述计算机系统执行本文中所描述的方法中的任一种方法。
32.如对本领域的技术人员将显而易见,上述特征可以适当地组合,并且可与本文中所描述的示例的各方面中的任一方面进行组合。
附图说明
33.现在将参考附图详细描述示例,在附图中:
34.图1示出图形处理系统的示例;
35.图2示出场景的渲染的示意图;
36.图3示出能够执行冗余测试以检测并避免冗余渲染的图形处理系统的示例;
37.图4示出根据第一技术提供给数据表征单元并由该数据表征单元生成的数据;
38.图5示出图4的系统的操作的流程图;
39.图6示出根据第一技术提供给测试单元并由该测试单元分析的数据;
40.图7示出图6的系统的操作的流程图;
41.图8示出根据第二技术提供给数据表征单元并由该数据表征单元生成的数据;
42.图9示出图8的系统的操作的流程图;
43.图10示出根据第二技术提供给测试单元并由该测试单元分析的数据;
44.图11示出图10的系统的操作的流程图;
45.图12示出当图元块数据被分割成多个图元块区段时为每个图块生成的多个位掩码;
46.图13a和图13b示出如何可将当前和先前渲染的信息存储在存储器中;
47.图14示出可在其中实现本文中所描述的图形处理系统的计算机系统;并且
48.图15示出用于生成体现图形处理系统的集成电路的集成电路制造系统。
49.附图示出了各种示例。技术人员将了解,附图中所示出的元素边界(例如框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元素可以被设计为多个元素,或者多个元素可以被设计为一个元素。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
50.借助于示例呈现以下描述,以使得本领域的技术人员能够制造和使用本发明。本
发明不限于本文中所描述的实施例,并且对所公开实施例的各种修改对于本领域的技术人员将显而易见。
51.现在将仅借助于示例来描述实施方案。
52.本公开涉及用于在使用图形处理系统执行渲染序列时减少冗余处理量的技术。图形处理系统包括图形处理单元,该图形处理单元标识两个渲染操作(属于两个不同渲染)何时将导致图像的至少一部分(例如,图像的一个或多个图块)的相同渲染输出。与对应的先前渲染相同的(例如,图块的)渲染(例如,两次渲染均会产生图块/图像的渲染值的相同集合)在本文中被称为冗余渲染。对应的图像或其部分可以被适当地称为冗余图像或冗余图块。
53.图3示出图形处理系统300的示例,该图形处理系统被配置为实现下文描述的用于检测和避免冗余渲染的技术。图形处理系统300包括图形处理单元302和存储器块304
1,2,3
。存储器块中的每个存储器块都在图形处理单元302的外部。每个存储器块可以或可以不形成相同物理存储器的一部分。图形处理单元302包括几何处理逻辑306、平铺单元308、数据表征单元310、测试单元312和渲染逻辑314。渲染逻辑包括获取单元316和片段处理逻辑318。
54.需注意,几何处理逻辑306和渲染逻辑314在图3中被示出为单独部件,因为它们执行不同的功能,并且在一些示例中,它们在物理上分离的硬件中实现;然而,在一些其他示例中,几何处理逻辑306和渲染逻辑314可以共享处理资源,例如使得它们由相同的物理处理硬件实现,其中处理硬件可以在执行几何处理逻辑306的功能的操作和执行渲染逻辑314的功能的操作之间切换。
55.图形处理单元302接收由在主计算机系统322(例如,cpu)上运行的应用324提交的图形数据。主计算机系统322还包括图形驱动器326。计算机系统可以执行应用324来调用应用指令。这些应用指令可以采取由应用提交的渲染请求的形式。渲染请求可以包括一个或多个绘制调用。绘制调用是指定要渲染的场景的某些部件(例如,场景的一部分)的命令。绘制调用可以例如指定要渲染的场景的一个或多个几何项或结构。可能需要执行一个或多个此类绘制调用来执行一次渲染。也就是说,由应用提交的单个渲染请求可以由一个或多个绘制调用组成。
56.驱动器326接收渲染请求,这使得与该请求相关联的图形数据(以及因此组成渲染请求的一个或多个绘制调用)被提交给图形单元302。该图形数据可以存储在外部存储器(图3中未示出)中,或者其可以存储在计算机系统322内并直接从驱动器326提交。
57.图形处理单元302操作以执行渲染,作为渲染场景的图像的一部分。为了渲染场景,图形处理单元可能需要执行多次渲染。然后可以由多次渲染的输出形成渲染图像。因此,单次渲染可能不直接对应于渲染图像(但是在某些情况下可能如此)。为了执行渲染,图形单元可以执行由应用324提交的一个或多个绘制调用,以渲染与那些绘制调用相关联的几何形状,从而生成渲染的图像数据。图形处理单元302根据图形流水线执行渲染。也就是说,图形处理单元302实现图形流水线来渲染图像数据。在该示例中,图形流水线是基于图块的渲染流水线,诸如基于图块的延迟渲染流水线。
58.在几何处理阶段中,几何处理逻辑306执行几何处理功能,包括裁剪和剔除以移除未落入可见视图的图元。几何处理逻辑306还可以将图元投影到屏幕空间(在图2中以202示
意性地示出)中。几何处理逻辑306还可以对图元执行一个或多个顶点着色器程序,其可以编程地操纵图元(例如,变换图元、照亮图元、移动图元、旋转图元、使图元变形、复制图元或者以任何其他方式改变图元或其相关联属性)。从几何处理逻辑306输出的经处理的图元被传递到平铺单元308,该平铺单元确定哪些图元至少部分地与图形处理系统300的渲染空间的每个图块(例如,图块204
a-d
)相交/重叠。平铺单元308可通过为图块创建控制流(或“显示列表”/“图块列表”)来将图元指派给渲染空间的图块,其中图块的控制流包括至少部分地存在于图块内的图元的指示。经处理的图元数据被整理并存储在存储器3042中称为图元块的数据结构中(通过几何处理逻辑306或平铺单元308),并且控制流从平铺单元308输出并存储在存储器3042中。
59.在渲染阶段,渲染逻辑314渲染渲染空间的图块的图形数据,以生成渲染值,例如渲染的图像值。渲染逻辑314可被配置为实现任何合适的渲染技术,诸如光栅化或光线跟踪来执行渲染。为了渲染图块,获取单元316从图元块,从存储器3042中获取图块的控制流和与该图块相关的图元。片段处理逻辑318可对图元片段(即,通过对图元进行采样而形成的片段)执行包括隐藏表面移除以及着色和/或纹理化的操作,从而形成图块的渲染图像值。纹理化和/或着色可以通过执行合适的片段着色器程序来执行。渲染的图像值(例如,像素颜色值)然后可以被传递到存储器3043以用于存储。渲染图像可以从图形处理系统300输出,并以任何合适的方式使用,例如显示在显示器上或存储在存储器中或传输到另一个设备等。
60.图形处理单元302通过生成并存储与当前渲染(即,由图形处理单元执行的渲染)相关联的信息,并将该信息与先前渲染(即,在当前渲染之前已经处理的渲染)的对应信息进行比较来标识冗余渲染。如果信息在渲染上匹配,则当前渲染被标识为冗余。如果渲染的信息不匹配,则当前渲染被标识为非冗余。在图形单元完成当前渲染之前,存储当前渲染的信息并将其与先前渲染的信息进行比较。以这种方式,如果当前渲染被标识为是冗余,则可以避免完成该渲染所需的至少一些处理。
61.需注意,先前渲染可以是紧接在当前渲染之前的渲染,但是这不是必须的。例如,当前渲染和与当前渲染的信息进行比较的先前渲染可以被一个或多个中间渲染分开。在一些实例中,图像从不同渲染类型的多次渲染中创建。渲染类型的示例包括渲染到帧缓冲区,渲染到纹理,渲染阴影映射等。在这些实例中,先前渲染可以是与当前渲染具有相同渲染类型的先前处理的渲染。
62.虽然避免冗余渲染通常是期望的,但是生成、存储和比较信息以标识冗余渲染的过程本身不会导致过度的带宽使用、功耗和处理延迟,使得超过冗余渲染避免的益处也是很重要的。根据本文描述的示例,图形处理单元可以实现若干不同的技术,以便检测冗余渲染。这些技术由于被存储和用于检测渲染与对应于图像的相同区域的先前渲染相同的信息的类型而彼此不同。这些技术还可能由于在其处收集信息的图形处理单元所实现的图形流水线的阶段而不同。这些技术旨在通过确保仅当存在冗余渲染的合理可能性时才执行用于检测冗余渲染的处理,和/或通过减少执行的计算和存储的数据的量来优化冗余渲染避免。
63.为了检测冗余渲染,必须分析关于给定渲染的信息/数据。关于渲染的可用信息根据在图形流水线中读取信息的位置而异。例如,关于渲染的信息可以在几何处理阶段之前读取(表示为前几何阶段数据)或者在几何处理阶段之后读取(表示为后几何阶段数据)。
64.前几何阶段数据包括关于在几何处理阶段完成之前(例如,在几何处理阶段的前面)可用的渲染的信息,并且主要与要渲染的整个场景的几何形状有关(但也可以包括关于如何在流水线中稍后处理片段的信息)。该信息可包括与组成渲染的一个或多个绘制调用相关联的几何数据和状态数据。如果渲染由多个绘制调用组成,则这些绘制调用中的每个绘制调用都可以与其自身的状态数据相关联。绘制调用的提交(例如,来自运行的应用)导致该绘制调用的几何数据被提交给图形处理单元以进行处理。因此,在图形处理单元处接收的用于特定绘制调用的几何数据与该绘制调用的状态数据相关联。该前几何阶段状态数据可包括诸如将在几何处理阶段应用于图元的顶点着色器程序之类的信息。附加前几何阶段状态数据可以包括诸如渲染的绘制调用的数量和/或身份之类的信息、关于是否使用任何高级渲染技术的信息,诸如多个渲染目标(mrt)以及渲染的透明颜色(这是用于渲染输出的初始化颜色,即,在没有任何图元被渲染的情况下输出将是的颜色)。
65.给定前几何阶段数据包含图形处理器渲染场景所需的所有信息,仅使用前几何阶段数据来检测冗余渲染是可能的。例如,几何数据及其相关联的状态数据(来自组成渲染的一个或多个绘制调用)可以与先前渲染的等效数据进行比较。这种比较可以在执行任何几何处理之前进行,并且因此可以避免所有冗余处理。替代地,可以开始几何处理,并且可以并行进行比较,使得在当前渲染的几何处理阶段完成之前就知道结果。例如,比较可以在几何处理阶段的顶点后处理阶段之前完成。如果当前渲染和先前渲染匹配,那么在图形流水线中执行顶点后处理(和所有后续)阶段之前,可确定当前渲染是冗余的。然而,前几何阶段数据与整个场景相关,即不仅仅是最终渲染的一部分,诸如图块。因此,这检测到冗余渲染的可能性大大降低,因为即使整个场景内单个图元的微小差异也会使数据(和最终场景)不同。因此,就避免冗余渲染的增益与检测冗余渲染所需的处理和存储量而言,孤立地使用该前几何阶段数据来检测冗余渲染可能效率不高。
66.相反,可替代地将前几何阶段数据与图形流水线的后续阶段处的先前渲染的数据进行比较。执行这种比较的流水线的一个方便阶段处于基于图块的流水线的几何处理和渲染阶段之间的过渡(即,在当前渲染的平铺阶段结束之后)。这使得当前渲染和先前渲染的数据可以在每图块的基础上进行比较。这提供了显著更高的粒度,并且因此提供了更高的冗余渲染检测率,因为场景的一些部分可能已经改变,而其他部分没有改变。然后,与场景的未改变部分相关的图块能够被检测为冗余的。如果当前渲染和先前渲染的前几何阶段数据对于给定图块匹配(除了下面概述的另外信息之外),则该图块可被确定为冗余的,并且因此该图块的渲染阶段可被避免(但不是几何和平铺过程)。
67.在其他示例中,后几何阶段数据可用于比较渲染,其在几何处理阶段结束时或接近结束时变得可用。在这些示例中,该信息可以表征渲染空间内的图块的屏幕空间图元内容。该信息可包括例如哪些图元和/或顶点位于图块内的指示,以及关于位于图块内的那些图元中的每一者的渲染阶段的信息(例如,渲染每个图元需要哪些像素/片段着色器,渲染图元所需的图形处理单元的资源等)。该信息可以再次在每个图块的基础上与先前渲染的信息进行比较,从而允许在渲染阶段之前标识冗余图块。然而,该信息的量(每个图块的所有图元/顶点的细节,加上相关联的渲染阶段状态数据)可变得非常大,并且因此分析和比较该信息并存储结果所需的处理是显著的。
68.图3的图形处理单元302旨在平衡避免冗余渲染的潜在收益与最小化检测冗余的
计算、存储和功耗要求。图形处理单元302包括数据表征单元310,该数据表征单元接收前几何阶段数据(来自几何处理逻辑306)和后几何阶段数据(来自平铺单元308),并且关于该渲染是否适于冗余测试作出确定,并且如果是,则生成表征该渲染的数据并将其存储在存储器3041中。图形处理单元302还包括测试单元312,该测试单元在流水线的每图块渲染阶段处操作。测试单元312从存储器3041读取关于当前图块渲染和先前图块渲染的数据,并且如果这指示该渲染适于冗余测试,那么测试单元312比较当前渲染和先前渲染之间的数据。如果该数据匹配,则这指示该图块的渲染是冗余的,并且可以被跳过,并且来自先前图块渲染的输出被重新用作当前输出。先前渲染的输出可以例如从存储器中检索,例如从帧缓冲区、后台缓冲区或诸如渲染目标之类的中间存储缓冲区中检索。如果渲染被认为是冗余的,则测试单元312可以向获取单元316发送信号,以使其不从存储器读取控制流和图元块数据(或者如果已经开始读取,则停止读取),从而节省存储器带宽。同样,片段处理逻辑318不需要处理图块的片段/像素,从而节省处理和功耗。
69.本文公开了两种技术来实现这些目标。第一技术可以称为“前几何阶段数据比较,然后后几何阶段数据比较”。参考图4至图7描述第一技术。第二技术可以称为“图元块比较”,并参考图8至图12进行描述。两种技术的方面也可以组合,如对于本领域技术人员将显而易见的。
70.前几何阶段数据比较,然后后几何阶段数据比较
71.首先参考图4和图5描述“前几何阶段数据比较,然后后几何阶段数据比较”技术,这些图示出了为当前渲染生成和存储表征数据的过程。然后参考图6和图7描述冗余测试过程。
72.图4更详细地示出了图3的几何处理逻辑306、平铺单元308和数据表征单元310。特别地,图4示出了提供给数据表征单元310并由该数据表征单元生成以及存储在存储器中的数据。几何处理器逻辑306被示出为包括顶点着色器单元402和顶点后处理单元404。在一些示例中,几何处理逻辑306还可以包括图元块生成器(未在图4中示出,但是参考下面的图8进行了更详细的描述)。顶点着色器单元402接收待处理的图元数据。顶点着色器单元可对图元数据执行一个或多个顶点着色器。顶点着色器单元可例如操作来执行一个或多个几何变换,以将图元数据从模型空间变换到屏幕空间。它还可以执行照明和/或着色操作,或者以任何合适的方式编程地改变它们。然后,经变换的顶点数据从着色器单元402输出到顶点后处理单元404。顶点后处理单元对经变换的图元数据执行多个操作,以生成经处理的图元,在该示例中包括裁剪、投影和剔除。
73.现在参考图5的流程图描述图4的系统的操作。在步骤502中,在gpu 302内的几何处理逻辑306处接收用于渲染的几何数据和相关联状态数据。渲染的几何数据包括描述要渲染的几何项的表面的多个图元。图元数据可以包括一个或多个输入图元的顶点数据。每个图元/顶点都与一些状态数据相关联,这些状态数据描述了应该如何通过图形流水线来渲染图元。例如,状态数据可以包括诸如将在几何处理阶段应用于图元/顶点的顶点着色器程序之类的信息,以及诸如渲染的绘制调用的数量和/或身份之类的渲染范围数据,关于是否使用任何高级渲染技术的信息,诸如多个渲染目标(mrt),以及渲染的透明颜色。状态数据还可包括与稍后如何在流水线中(例如,在渲染阶段)处理图元相关的数据,诸如片段着色器、顶点变化、纹理信息等(其中“变化”是与每个顶点相关联的属性,包括例如颜色数据、
正常数据、纹理坐标或可以用作光栅化过程的一部分的任何其他数据)。如上所述,该几何数据可以由在主机cpu上运行的驱动器提交,并且在一些示例中,数据可以直接提交给gpu,并且在其他示例中,一些数据可以被写入存储器,并且对存储器的引用被提交给gpu(任选地连同其他数据一起)。
74.需注意,几何处理阶段的着色器(例如,顶点和几何着色器)通常在图元或图元的顶点上操作(例如,被执行),而渲染阶段的着色器(例如,像素/片段着色器)通常在片段上操作(例如,被执行)。还需注意,上面提到的状态数据仅仅是可以提交的状态数据的示例,并且还可以包括更多的数据项。还可以接收的另外状态数据的示例包括以下中的一项或多项:绘制调用类型的指示(例如,绘制调用是否被索引、实例化等);绘制调用的自变量(例如,要渲染的一个或多个图元的顶点的数量);要用于处理绘制调用的图元数据的图形处理单元的资源(例如,要使用的顶点缓冲区或索引缓冲区的指示);以及渲染目标状态的指示(例如,渲染目标混合状态或深度模板状态)。
75.在步骤504中,几何处理逻辑306处理渲染的几何数据,以生成一个或多个经处理的图元。特别地,几何处理逻辑306使用与多个图元相关联的一个或多个顶点着色器程序来处理图元。使用一个或多个顶点着色器程序来生成一个或多个经处理的图元可包括对相关联的图元和/或其相关联的顶点的数据执行顶点着色器程序,这可编程地改变或操纵图元(例如,变换图元、照亮图元、移动图元、旋转图元、使图元变形、复制图元或者以任何其他方式改变图元或其相关联属性)。经处理的图元然后可由顶点后处理单元404(或图4中未示出的任何其他另外几何阶段处理块,诸如外壳着色器、棋盘形布置和域着色器)进一步处理。经处理的图元然后被提供给平铺单元308。因此,经处理的图元可以是指已被进行了以下一项或多项操作的图元:顶点/几何着色、裁剪、投影以及经受剔除操作。
76.在步骤506中,顶点着色器和渲染范围状态数据被提供给数据表征单元310。术语“渲染范围”旨在是指作为整体应用于渲染,例如应用于渲染的所有图元的数据。这区别于“每图块”数据,该“每图块”数据仅应用于特定图块或该图块内的图元。顶点着色器数据和渲染范围状态数据的示例在图4中的前几何阶段数据块406中示出。前几何阶段数据块406包括渲染范围状态数据408和顶点着色器数据410。在图4的示例中,渲染范围状态数据408包括关于渲染透明颜色的数据,对渲染的绘制调用数量的计数,以及指示在渲染中是否使用高级渲染技术(诸如mrt)的标志。在图4的示例中,顶点着色器数据410包括将每个图元的标识符(表示为“图元id”)映射到顶点着色器的相关联标识符(表示为“着色器id”)的数据结构。需注意,尽管图4仅示出了映射到每个图元的一个顶点着色器,但是在一些示例中,图元可以具有零个或多于一个相关联的着色器程序。
77.需注意,在一些示例中,前几何阶段数据块406不是由几何着色器逻辑306提供给数据表征单元310,而是可以由图形处理单元中较早的单元(未示出)提供或者直接由驱动器提供。这由图5中的虚线示出。替代地,前几何阶段数据块406的一部分可由几何着色器逻辑306提供,而另一部分由gpu的在图形流水线中的几何着色器逻辑306之前的一部分提供(例如,渲染范围数据408由驱动器326直接提交给数据表征单元310,并且顶点着色器数据410由几何着色器逻辑306提供)。
78.在步骤508中,平铺单元308确定来自几何着色器逻辑306的经处理的图元中的哪些位于多个图块中的每个图块内。如本文中所用,术语“位于”在其涉及图元和图块时意味
着“至少部分地位于”,即与图元和图块相交或重叠。因此,位于图块内的图元可以部分位于图块内,或者全部位于图块内。
79.平铺单元308可以为每个图块生成显示列表,该显示列表指示哪些图元位于该图块内。这些显示列表可以替代地称为控制流或图块列表。由平铺单元308创建的每个显示列表可能实际上不包括列表中指示的图元的数据(例如,图元的顶点数据)。相反,每个显示列表可包含位于图块内的每个图元的指示(例如,相关图元块中的图元id)。这通过避免存储位于多于一个图块内的图元的图元数据的副本拷贝的需要而降低了存储要求。然后,存储在每个图块的显示列表中的图元id可用于索引存储在图元块内的该图元的数据。位于图块内的图元可能不都属于单个图元块,但在一些情况下可能属于多个图元块。因此,每个图块的显示列表可以索引一个或多个图元块。每个图块的显示列表由平铺单元308输出并存储在存储器中。
80.在步骤510中,平铺单元308向数据表征单元310提供每图块渲染数据。在图4中的后几何阶段数据块412中示出了每图块渲染数据的示例。图4的后几何阶段数据块412包括被组织为具有图块标识符(表示为“图块id”)的列表的每图块渲染数据414,其后是与该图块相关的数据块。在该示例中,与每个图块相关的数据包括:图元标识符(表示为“图元id”)集合;顶点坐标(表示为“顶点坐标”)集合以及顶点状态数据(表示为“顶点状态”)集合。图块的图元id指示哪些图元位于该图块中。顶点坐标列出了图块中每个图元的每个顶点的坐标(例如,x、y和z坐标)。如果图元是三角形,则存在三个顶点,每个顶点具有x、y、z坐标,例如,如在图4中对于图元0中的顶点0的x、y、z坐标表示为xyz_p0v0,对于图元0中的顶点1的x、y、z坐标表示为xyz_p0v1,对于图元0中的顶点2的x、y、z坐标表示为xyz_p0v2,等等。顶点状态列出了图块中每个图元的每个顶点的状态数据。如果图元是三角形,则存在三个顶点,每个顶点具有相关联的状态数据,例如,如在图4中对于图元0中的顶点0的状态数据表示为sd_p0v0,对于图元0中的顶点1的状态数据表示为sd_p0v1,对于图元0中的顶点2的状态数据表示为sd_p0v2,等等。顶点状态数据可与尚未为当前渲染执行的流水线的阶段相关联。在包括几何处理和渲染阶段的基于图块的图形流水线的示例中,状态数据可以是与流水线的渲染阶段相关联的数据(因为已经针对图元完成了几何处理阶段)。状态数据可以例如包括在渲染阶段要执行哪些着色器来渲染图块中的图元的指示。状态数据可以包括着色器id和/或要执行以渲染图块的图元的着色器的着色器资源的指示。在状态数据与图元相关(例如,用于渲染)而不是单独顶点相关的情况下,图元的状态数据可以与图元的一个顶点(例如,第一顶点)相关联。状态数据还可以包括顶点变化和纹理信息。
81.在步骤512中,数据表征单元310生成并在存储器中存储每图块顶点着色器数据和每图块渲染数据的表示。在一些示例中,数据表征单元310还生成并在存储器中存储渲染范围冗余数据,该冗余数据指示在稍后描述的冗余检测中有用的渲染的一个或多个特征。数据表征单元可以使该信息存储在外部存储器块3041中。替代地(或附加地),这些信息中的一些或全部可以本地存储到图形处理器,例如存储在数据表征单元中的寄存器中或高速缓冲存储器中。该信息将用于将当前渲染与先前渲染进行比较,以确定当前渲染的部分或全部是否是冗余的(如下面将更详细描述的)。
82.图4示出由数据表征单元310生成的示例性数据表征输出块416。数据表征输出块416包括标头418和每图块表征数据420。标头418包括由数据表征单元310生成的一个或多
个有效标志,其可用于指示当前渲染是否适于测试冗余渲染。如下所述,这可以节省测试阶段处的处理。在一个示例中,可以设置有效标志来指示整个当前渲染不适于测试冗余渲染,并且因此可以跳过所有相关联的冗余测试。该有效标志可以由数据表征单元310基于渲染范围状态数据408设置为预先确定的值。例如,如果渲染范围状态数据408指示渲染是使用多个渲染目标(或其他高级渲染技术)的场景的一部分,或者渲染包括比阈值数量更多的绘制调用,则有效标志可被设置为预先确定的值。这些是这是不太可能受益于冗余渲染测试的复杂渲染的指示。在一些示例中,如果数据表征单元310确定有效标志应该被设置为指示整个当前渲染不适于测试冗余渲染,那么数据表征输出块416中数据的剩余部分不需要被生成和存储。
83.在另外示例中,附加有效标志可以在每图块的基础上设置。也就是说,对于渲染空间中的每个图块,存在有效标志,并且该有效标志被设置为预先确定的值,以指示该图块是否适于冗余渲染测试。数据表征单元310可基于位于给定图块内的经处理的图元的数量来为该图块设置每图块有效标志,使得如果超过预定义最大数量的经处理的图元位于该图块中,那么有效标志被设置为指示该图块不适于冗余渲染测试。这是因为图块内的较大数量的图元是复杂场景的指示符,该复杂场景不太可能受益于冗余渲染测试,并且还可能需要对每图块表征数据进行显著处理和存储。在示例中,已经发现,图块的经处理的图元的预定义最大数量应该在16至64的范围内。在一些示例中,如果数据表征单元310确定特定图块的有效标志应该被设置为指示该图块不适于测试冗余渲染,那么该特定图块的数据表征输出块416中数据的剩余部分不需要被生成和存储。
84.虽然在图4的示例中,每图块有效标志被示出为标头的一部分,但是在其他示例中,每个图块的有效标志可以存储在数据表征输出块416的每图块表征数据420区段中,其中存储了与该图块相关的其他数据。
85.标头418还可以包括用于渲染的透明颜色。如上所述,透明颜色是渲染范围特性,并且可以用于稍后描述的冗余检测。
86.每图块表征数据420包括渲染空间中特定于每个图块的数据集。例如,图4用图块t0的数据项的序列,随后用t1的数据项的序列等来示出这一点。然而,在其他示例中,数据可以被交织,使得针对所有图块列出特定数据项的值,然后针对所有图块列出另一数据项的值,等等。如图4的示例所示,数据表征单元310为每个图块生成两个表征数据集:每图块顶点着色器数据的表示以及每图块渲染数据的表示。
87.每图块顶点着色器数据标识用于生成位于该图块内的经处理的图元的一个或多个顶点着色器程序。数据表征单元310从顶点着色器数据410生成该信息,该顶点着色器数据将图元id映射到顶点着色器的相关联的标识符和来自每图块渲染数据414的每图块中的图元id。因此,数据表征单元310能够将位于每个图块中的图元映射到这些图元所使用的顶点着色器,以生成每个图块中所使用的顶点着色器的列表。需注意,在许多情况下,多个图元可以使用相同的顶点着色器程序,因此可以预期,用于在图块中生成经处理的图元的顶点着色器列表包含比图块内存在的图元少的条目。在一个示例中,由数据表征单元310存储的每图块顶点着色器数据的表示可以是用于在每个图块中生成经处理的图元的顶点着色器id的简单列表。在另一个示例中,由数据表征单元310存储的每图块顶点着色器数据的表示可以是用于在每个图块中生成经处理的图元的顶点着色器id列表的散列,如下面更详细
描述的。
88.每图块渲染数据是在图形流水线的后续阶段中在该图块内渲染经处理的图元时可使用的数据。这是基于由平铺单元308提供的每图块渲染数据414。如图4所示,每图块渲染数据可包括位于图块内的每个图元的顶点坐标和顶点状态数据。因此,该数据准确地描述了图块内几何形状位于何处(根据坐标)以及它将如何在后续流水线阶段中被渲染到输出(根据状态数据)。这使得能够在稍后描述的冗余测试过程中在当前图块和先前图块之间进行精确比较。由数据表征单元310存储的每图块渲染数据的表示可以是来自每图块渲染数据414的顶点坐标和顶点状态数据的直接拷贝。然而,在其他示例中,由数据表征单元310存储的每图块渲染数据的表示可以是来自每图块渲染数据414的顶点坐标和顶点状态数据的散列。
89.需注意,图4中所示的数据的示例性布置仅是说明性的示例,并且可以以任何适当的方式来构造数据。
90.如上所述,每图块顶点着色器数据和每图块渲染数据的表示可以是原始数据的散列形式。使用散列的益处是它降低了存储要求,因为散列比原始数据小,并且在一些示例中可以是固定大小的,而与原始数据的大小无关。数据表征单元310可被配置为以一个或多个散列表示的形式存储每图块顶点着色器数据和每图块渲染数据中的任一者或两者。数据表征单元310可以通过实现散列函数来生成散列值。存在许多众所周知的散列函数,诸如基于xor的函数、基于循环冗余校验(crc)的函数,以及更复杂的方案,诸如md5、sha-1和sha-2。
91.在一个示例中,可以在每图元的基础上对每图块渲染数据进行散列;即位于图块内的每个图元的顶点坐标和/或状态数据可用于生成每图元的相应散列值。在这种情况下,由数据表征单元310实现的散列函数可以生成作为单个图元的顶点数据的函数的散列值。因此,在这种情况下,对于每个图块,数据表征单元在存储器块3041中存储数量等于被确定位于该图块中的图元的数量的多个散列值。因此,数据表征单元310可以使得散列化的每图块渲染数据存储在存储器块3041中,其中散列化的每图块渲染数据包括每个图块的一个或多个散列值的集合,其中例如每个散列值对应于位于图块中的相应图元。
92.在另一个示例中,可以在每图块的基础上对每图块渲染数据进行散列。也就是说,可以根据位于该图块内的所有图元的每图块渲染数据(即,基于位于该图块内的所有图元的所有顶点坐标和/或状态数据),为该图块生成单个散列值。因此,在这种情况下,由数据表征单元310实现的散列函数可以生成作为位于图块内的所有图元的每图块渲染数据的函数的单个散列值。每图块生成单个顶点散列值具有进一步减少每个图块的顶点数据的存储要求的优点。
93.在另外的示例中,每图块顶点着色器数据和每图块渲染数据可以在每图块的基础上被散列在一起。也就是说,可以根据位于该图块内的所有图元的每图块顶点着色器数据和每图块渲染数据(即,基于位于该图块内的所有图元的所有顶点着色器数据、所有顶点坐标和/或状态数据),为该图块生成单个散列值。在又另外的示例中,可以在每图块的基础上分别对每图块顶点着色器数据和每图块渲染数据进行散列,并且分别存储散列值。
94.尽管以一个或多个散列值的形式存储每图块顶点着色器数据和/或每图块渲染数据确实减少了存储器块3041中的存储要求,但是它仍然需要数据表征单元310执行多个散列计算,从而消耗图形处理单元的处理资源。
95.现在参考图6和图7,这些图示出根据“前几何阶段数据比较,然后后几何阶段数据比较”技术提供给测试单元312并且由该测试单元分析的数据,以及示出这如何操作的流程图。
96.图6更详细地示出了渲染阶段功能,包括图3的测试单元312、渲染逻辑314、获取单元316和片段处理逻辑318。特别地,图6示出了从存储器中检索并由测试单元312分析的数据,以确定特定图块的渲染是否是冗余的。测试单元312被配置为在多阶段过程中从存储器中检索并分析与图块的当前渲染和先前渲染相关的各种数据项,并使用这一点来确定当前渲染是否是冗余的。换句话说,测试单元312确定该图块的先前渲染的输出是否可用作该渲染的输出。
97.在一个示例中,获取单元316被配置为在获取正被渲染的图块的渲染数据(即,显示列表和相关联的图元数据)之前,等待在测试单元312处完成分析。如果测试单元312确定当前图块的渲染不是冗余的(即,需要被渲染),那么测试单元312向获取单元316提供信号,该获取单元可以开始获取图块的渲染数据,并将此提供给片段处理逻辑318,该片段处理逻辑将执行片段着色、纹理化等以渲染图块并生成输出。相反,如果测试单元312确定当前图块的渲染是冗余的(即,不需要被渲染),那么测试单元312向获取单元316提供信号,该信号指示不需要从存储器获取图块渲染数据。该信息(其可由测试单元312或获取单元316提供)由渲染逻辑314使用,并且使渲染逻辑在存储器中保留该图块的先前渲染的输出,并且将该数据用作图块的当前渲染的输出数据。
98.在另一个示例中,为了避免测试单元312停止图形流水线,获取单元316被配置为继续获取正在被渲染的图块的渲染数据,而不等待测试单元312完成分析。以这种方式,可能使用更多的存储器带宽,但性能得到改善。如果测试单元312确定当前图块的渲染不是冗余的(即,需要被渲染),那么获取单元316继续获取图块的渲染数据,并将此提供给片段处理逻辑318,该片段处理逻辑将执行片段着色、纹理化等以渲染图块并生成输出。如果测试单元312确定当前图块的渲染是冗余的(即,不需要被渲染),那么测试单元312向获取单元316提供信号,该信号指示图块渲染数据的获取应被停止/中断,因为不再需要该数据。如上所述,该信息(其可由测试单元312或获取单元316提供)由渲染逻辑314使用,并且使渲染逻辑在存储器中保留该图块的先前渲染的输出,并且将该数据用作图块的当前渲染的输出数据。
99.现在参考图6结合图7来描述测试单元312的操作以及测试单元用来有效地确定图块渲染是否冗余的冗余数据序列。
100.对于在渲染之前正在测试冗余的所选择的图块,测试单元312开始从数据表征输出块416中检索由数据表征单元310存储在存储器中的数据。然而,因为数据表征输出块416可能是大数据块,所以测试单元312可以在多阶段过程中检索数据,以便减少存储器带宽和功耗。特别地,该多阶段过程旨在快速有效地标识许多非冗余的图块渲染,而不会导致显著的存储器带宽或计算成本。
101.在步骤702中,在第一阶段中,测试单元312从数据表征输出块416的标头418检索当前渲染和先前渲染的数据。检索的标头数据可以是渲染范围数据和每图块有效性数据的形式。例如,如图6所示,在该第一阶段中,测试单元312检索第一数据块602,该第一数据块包括一个或多个有效标志以及当前和先前渲染的透明颜色。如上所述,有效标志可包括正
被测试的图块的渲染范围有效标志和每图块有效标志中的任一者或两者。
102.在步骤704中,测试单元312确定在第一数据块602中检索的数据是否指示对继续进行更详细的渲染数据的每图块比较是有效的。在图6的示例中,测试单元312通过检查相关有效标志是否指示先前渲染数据和当前渲染数据均适于冗余测试来确定这一点。例如,测试单元312可以检查没有为当前渲染和先前渲染设置渲染范围有效标志(例如,指示既不渲染所使用的复杂渲染特征也不包括太多的绘制调用)。测试单元312还可检查是否为当前渲染和先前渲染中的任一者设置该图块的每图块有效标志(例如,指示太多图元位于图块中)。在图6的示例中,测试单元312进一步通过比较两个值来确定当前渲染和先前渲染的透明颜色是否匹配。
103.如果任何有效标志指示图块对于冗余测试不是有效的,或者透明颜色不匹配,那么这指示测试单元不应该进行进一步的比较,因为图块不是冗余的或者不适于冗余测试。在这种情况下,在步骤706中,由gpu的渲染阶段将图块渲染为正常。重要的是,该决定可以从冗余测试过程中消除许多不合适的图块,其中仅检索非常少量的数据,并且具有非常小的处理开销。因此,这不会显著降低gpu的性能。
104.如果渲染范围数据和每图块有效性数据指示对继续进行更详细的每图块比较以检测冗余是有效的,则该过程移动到步骤708中的第二阶段,其中测试单元从数据表征输出块416检索每图块表征数据420的第一部分。在步骤708中,测试单元312检索当前渲染和先前渲染两者的图块的顶点着色器数据。例如,如图6所示,如果被测试的图块是t0,那么检索包括当前渲染和先前渲染两者的t0顶点着色器数据的第二数据块604。如上所述,每图块顶点着色器数据包括关于顶点着色器的身份的信息,该顶点着色器在几何阶段中用于处理位于正被测试的图块中的图元。如上所述,这通常是少量的数据(至少对于已经通过不包括太多图元的第一阶段的图块),并且在一些示例中可以是散列数据的形式。
105.在步骤710中,测试单元312比较检索的数据,以确定来自当前渲染和先前渲染的每图块顶点着色器数据是否匹配。如果来自当前渲染和先前渲染的每图块顶点着色器数据不匹配,那么这表明当前渲染和先前渲染的图块中的几何形状以不同的方式(用不同的着色器)生成,并且因此图块极不可能是冗余的。在这种情况下,该过程移动到步骤706,并且在渲染阶段中将图块渲染为正常。值得注意的是,这是可以使用少量数据和简单的逻辑比较来标识极有可能不是冗余的图块的决定,从而没有大量的带宽、功率或处理开销。
106.如果来自当前渲染和先前渲染的每图块顶点着色器数据匹配,则过程移动到第三阶段。第三阶段是对冗余数据的综合比较,以使用来自数据表征输出块416的每图块表征数据420的第二部分来确认图块是否冗余。在步骤712中,测试单元312检索当前渲染和先前渲染的图块的顶点坐标和状态数据。例如,如图6所示,如果被测试的图块是t0,那么检索包括当前渲染和先前渲染两者的t0顶点坐标和状态数据的第三数据块606。如上所述,图块的顶点坐标和状态数据提供了关于图块中图元的顶点位于何处以及图元将如何在渲染阶段被渲染的信息。因此,这使得能够准确比较图块的内容是否确实与先前渲染的内容相同。
107.在步骤714中,测试单元312比较检索的数据,以确定来自当前渲染和先前渲染的每图块顶点坐标和状态数据是否匹配。如果每图块顶点坐标和状态数据不匹配,那么当前渲染和先前渲染中的图块内容不相同,并且因此图块不是冗余的。在这种情况下,在步骤706中,在渲染阶段中将图块渲染为正常。如果每图块顶点坐标和状态数据确实匹配,那么
在步骤716中,确定图块是冗余的,并且在渲染阶段中可跳过图块的渲染(或避免处理的至少一部分)。在这种情况下,先前渲染的输出可以用作当前渲染的输出,如上所述。
108.如上所述,在一些示例中,检索到的每图块顶点坐标和状态数据可以是散列数据的形式。测试单元312可以要求图块的一个或多个散列值精确地匹配,以确定当前渲染的图块是冗余的。如果表征图块的图元内容的信息是多个散列值的形式,则这些散列值中的每个散列值可能必须与为先前渲染存储的图块的对应散列值匹配,以便测试单元312确定图元内容匹配。
109.为图块的顶点坐标和状态数据检索的数据的量大于冗余测试的其他阶段。然而,在不比较该数据的情况下,不能对冗余做出准确的决定。这对gpu性能/功耗的影响通过上述多阶段测试过程来减轻。通过确保不合适的或非冗余的图块被从测试过程中及早地消除,并且通过少量的冗余数据和简单的比较,准确比较所需的更大量数据的检索被最小化。
110.图元块比较
111.现在参考图8和图9描述第二技术“图元块比较”,这些图示出了为当前渲染生成和存储表征数据的过程。然后参考图10和图11描述该技术的冗余测试过程。
112.图8更详细地示出了图3的几何处理逻辑306、平铺单元308和数据表征单元310。特别地,图8示出了提供给数据表征单元310并由该数据表征单元生成以及存储在存储器中的数据。几何处理逻辑306被示出为包括顶点着色器单元402和顶点后处理单元404(如上文参考图4所描述的)。几何处理逻辑306还包括图元块生成器802。顶点着色器单元402接收待处理的图元数据。顶点着色器单元可对图元数据执行一个或多个顶点着色器。顶点着色器单元可例如操作来执行一个或多个几何变换,以将图元数据从模型空间变换到屏幕空间。它还可以执行照明和/或着色操作,或者以任何合适的方式编程地改变它们。然后,经变换的顶点数据从着色器单元402输出到顶点后处理单元404。顶点后处理单元对经变换的图元数据执行多个操作,以生成经处理的图元,在该示例中包括裁剪、投影和剔除。
113.从顶点后处理单元404输出的经处理的图元被输入到图元块生成器802中。图元块生成器802操作以将所生成的经处理的图元分组为一个或多个集合,并从每个集合生成图元块以形成一个或多个图元块。图元块是为存储在存储器中而生成的数据结构,其包含图元集合的数据,并且可以在需要图元数据时由流水线的稍后阶段访问。该数据例如可以是顶点数据(例如,顶点的屏幕空间坐标和该图元块的集合中的每个图元的顶点变化)。图元块还可包含块内每个图元的索引(例如,块中每个图元的图元id)。
114.在一个示例中,可以基于共同状态数据来执行将图元分组为集合以形成图元块。也就是说,对图元进行分组可包括标识具有共同状态数据的图元,并且将所标识的图元的顶点坐标和顶点变化与共同状态数据相关联地存储在图元块中。通过按共同状态数据对图元进行分组,这样的共同状态数据可以在图元块内存储一次,而不是为每个图元单独存储。这使得能够节省需要存储的数据量,并且因此节省读取/写入存储器带宽。这种节省可能是显著的,尤其是因为场景中的许多对象可以由数百个图元形成,所有这些图元可以共享共同状态。
115.每个图元块本身可以与图元块id相关联(例如,使得不同的图元块能够彼此区分和可标识)。由顶点后处理单元404生成的所有经处理的图元的图元数据可存储在一个或多个图元块内。也就是说,由图元块生成器802生成的一个或多个图元块可以包含由顶点后处
理单元404生成的所有经处理的图元。由图元块生成器802生成的图元块被输入到平铺单元308中,并且被写入外部存储器块3042。
116.现在参考图9的流程图描述图8的系统的操作。在步骤902中,在gpu 302内的几何处理逻辑306处接收用于渲染的几何数据和相关联状态数据。渲染的几何数据包括描述要渲染的几何项的表面的多个图元。图元数据可以包括一个或多个输入图元的顶点数据。每个图元都与一些状态数据相关联,这些状态数据描述了应该如何通过图形流水线来渲染图元。例如,状态数据可以包括诸如将在几何处理阶段应用于图元的顶点着色器程序之类的信息,以及诸如渲染的绘制调用的数量和/或身份之类的渲染范围数据,关于是否使用任何高级渲染技术的信息,诸如多个渲染目标(mrt),以及渲染的透明颜色。状态数据还可包括与稍后如何在流水线中(例如,在渲染阶段)处理图元相关的数据,诸如片段着色器、顶点变化、纹理信息等(其中“变化”是与每个顶点相关联的属性,包括例如颜色数据、正常数据、纹理坐标或可以用作光栅化过程的一部分的任何其他数据)。如上所述,该几何数据可以由在主机cpu上运行的驱动器提交,并且在一些示例中,数据可以直接提交给gpu,并且在其他示例中,一些数据可以被写入存储器,并且对存储器的引用被提交给gpu(任选地连同其他数据一起)。
117.需注意,几何处理阶段的着色器(例如,顶点和几何着色器)通常在图元或图元的顶点上操作(例如,被执行),而渲染阶段的着色器(例如,像素/片段着色器)通常在片段上操作(例如,被执行)。还需注意,上面提到的状态数据仅仅是可以提交的状态数据的示例,并且还可以包括更多的数据项。还可以接收的另外状态数据的示例包括以下中的一项或多项:绘制调用类型的指示(例如,绘制调用是否被索引、实例化等);绘制调用的自变量(例如,要渲染的一个或多个图元的顶点的数量);要用于处理绘制调用的图元数据的图形处理单元的资源(例如,要使用的顶点缓冲区或索引缓冲区的指示);以及渲染目标状态的指示(例如,渲染目标混合状态或深度模板状态)。
118.在步骤904中,几何处理逻辑306处理渲染的几何数据,以生成一个或多个经处理的图元。特别地,几何处理逻辑306使用与多个图元相关联的一个或多个顶点着色器程序来处理图元。使用一个或多个顶点着色器程序来生成一个或多个经处理的图元可包括对相关联的图元和/或其相关联的顶点的数据执行顶点着色器程序,这可编程地改变或操纵图元(例如,变换图元、照亮图元、移动图元、旋转图元、使图元变形、复制图元或者以任何其他方式改变图元或其相关联属性)。经处理的图元然后可由顶点后处理单元404(或图8中未示出的任何其他另外几何阶段处理块,诸如外壳着色器、棋盘形布置和域着色器)进一步处理。经处理的图元然后被提供给图元块生成器802。
119.在步骤906中,渲染范围状态数据被提供给数据表征单元310。如上所详述,术语“渲染范围”旨在是指作为整体应用于渲染,例如应用于渲染的所有图元的数据。这区别于“每图块”数据,该“每图块”数据仅应用于特定图块或该图块内的图元。渲染范围状态数据的示例在图8中的前几何阶段数据块804中示出。前几何阶段数据块804包括关于渲染透明颜色的数据,对渲染的绘制调用数量的计数,以及指示在渲染中是否使用高级渲染技术(诸如mrt)的标志。
120.需注意,在一些示例中,前几何阶段数据块406不是由几何着色器逻辑306提供给数据表征单元310,而是可以由图形处理单元中较早的单元(未示出)提供或者直接由驱动
器提供。这由图9中的虚线示出。替代地,前几何阶段数据块804的一部分可由几何着色器逻辑306提供,而另一部分由gpu的在图形流水线中的几何着色器逻辑306之前的一部分提供。
121.在步骤908中,图元块生成器802生成包含渲染的图元数据的一个或多个图元块。如上所述,图元块生成器802可通过标识具有共同状态数据的图元并将这些图元分组以使得它们的顶点数据与共同状态数据相关联地存储在图元块中来进行该操作。在步骤910中,图元块生成器802将生成的图元块提供给数据表征单元310。图8示出从图元块生成器802提供给数据表征单元310的示例性图元块806。图元块806包括图元块标识符(表示为“图元块id”),其后是与该图元块相关的数据块。与图元块相关的数据块可包括:标识图元块中图元的列表(表示为“图元id”),所有这些图元共有的状态数据(表示为“共同状态”),顶点坐标的集合(表示为“顶点坐标”)以及顶点变化数据的集合(表示为“顶点变化”)。
122.在包括几何处理和渲染阶段的基于图块的图形流水线的示例中,共同状态数据可以是与流水线的渲染阶段相关联的数据(因为已经针对图元完成了几何处理阶段)。共同状态数据可以例如包括在渲染阶段要执行哪些着色器来渲染图元块中的图元的指示。共同状态数据可以包括着色器id和/或要执行以渲染图元块中的图元的着色器的着色器资源的指示。顶点坐标列出了图元块中每个图元的每个顶点的坐标(例如,x、y和z坐标)。如果图元是三角形,则存在三个顶点,每个顶点具有x、y、z坐标,例如,如在图8中对于图元0中的顶点0的x、y、z坐标表示为xyz_p0v0,对于图元0中的顶点1的x、y、z坐标表示为xyz_p0v1,对于图元0中的顶点2的x、y、z坐标表示为xyz_p0v2,等等。顶点变化列出了图元块中每个图元的每个顶点的变化数据。顶点变化可以被认为是每顶点变化的状态数据,并且因此不能被分成共同状态数据。如果图元是三角形,则存在三个顶点,每个顶点具有相关联的变化数据,例如,如在图8中对于图元0中的顶点0的状态数据表示为sd_p0v0,对于图元0中的顶点1的状态数据表示为sd_p0v1,对于图元0中的顶点2的状态数据表示为sd_p0v2,等等。
123.在步骤912中,平铺单元308确定来自几何着色器逻辑306的经处理的图元中的哪些位于多个图块中的每个图块内。如本文中所用,术语“位于”在其涉及图元和图块时意味着“至少部分地位于”,即与图元和图块相交或重叠。因此,位于图块内的图元可以部分位于图块内,或者全部位于图块内。
124.平铺单元308可以为每个图块生成显示列表,该显示列表指示哪些图元位于该图块内。这些显示列表可以替代地称为控制流或图块列表。由平铺单元308创建的每个显示列表可能实际上不包括列表中指示的图元的数据(例如,图元的顶点数据)。相反,每个显示列表可包含位于图块内的每个图元的指示(例如,相关图元块中的图元id)。这通过避免存储位于多于一个图块内的图元的图元数据的副本拷贝的需要而降低了存储要求。然后,存储在每个图块的显示列表中的图元id可用于索引存储在图元块内的该图元的数据。位于图块内的图元可能不都属于单个图元块,但在一些情况下可能属于多个图元块。因此,每个图块的显示列表可以索引一个或多个图元块。每个图块的显示列表由平铺单元308输出并存储在存储器中。
125.在步骤914中,平铺单元308向数据表征单元310提供哪些图元块与每个图块相关的指示。换句话说,平铺单元308为每个图块指示哪些图元块包含位于该图块内的至少一个图元。该指示可以是每图块图元块列表的形式,该列表指示一个或多个图元块中的哪些包含位于该图块内的至少一个图元。图8示出了由平铺单元308生成并提供给数据表征单元
310的示例性图元块列表808。图元块列表808是每个图块的位掩码(即,位串)的形式,其中位在位掩码内的位置指示图元块的身份,并且位的值(一或零)指示该图元块是否包含位于该图块内的图元。例如,使用图8的图示,图元块列表808可包含与图块0(图8中的t0)相关的第一位掩码。该第一位掩码具有设置为0的第零位(如果从零开始计数),指示图元块0(图8中的pb0)不包含位于图块0内的图元。然后,第一位掩码具有设置为1的第一位,指示图元块1(图8中的pb1)包含位于图块0内的至少一个图元。然后,第一位掩码具有设置为0的第二位,指示图元块2(图8中的pb2)不包含位于图块0内的图元。位掩码可以包含对应于另外图元块的另外位,并且该位掩码因此可以是由图元块生成器802生成的图元块的数量的长度。在一些示例中(如下所述),渲染中的图元块的数量可能存在预定义的限制,超过该限制将不会执行冗余测试,在这种情况下,位掩码的长度可能相应地受到限制。图元块列表808然后可以进一步包含与图块1相关的第二位掩码(图8中的t1)。该第二位掩码具有设置为1的第零位,指示图元块0(图8中的pb0)包含位于图块1内的图元。在位掩码中可以存在另外的位,并且对于另外的片可以存在另外的位掩码。
126.使用诸如上文所述的位掩码的益处是它是非常紧凑和有效的数据结构。它需要非常少的存储空间,并且快速且有效地访问和解释数据。由于平铺单元308已经确定了哪些图元位于哪些图块中,并且它知道图元存储在何处,所以这仅仅增加了为图元被发现位于其中的每个图块设置位的添加,因此在平铺单元308处构建和提供该数据也需要最小的开销。
127.在步骤916中,数据表征单元310生成并在存储器中存储图元块表征数据和每图块图元块使用数据。在一些示例中,数据表征单元310还生成并在存储器中存储渲染范围冗余数据,该冗余数据指示在稍后描述的冗余检测中有用的渲染的一个或多个特征。数据表征单元可以使该信息存储在外部存储器块3041中。替代地(或附加地),这些信息中的一些或全部可以本地存储到图形处理器,例如存储在数据表征单元中的寄存器中或高速缓冲存储器中。该信息将用于将当前渲染与先前渲染进行比较,以确定当前渲染的部分或全部是否是冗余的(如下面将更详细描述的)。
128.图8示出由数据表征单元310生成的示例性数据表征输出块810。数据表征输出块810包括标头812、图元块数据814和每图块图元块列表816。标头812包括由数据表征单元310生成的一个或多个有效标志,其可用于指示当前渲染是否适于测试冗余渲染。如下所述,这可以节省测试阶段处的处理。在一个示例中,可以设置有效标志来指示整个当前渲染不适于测试冗余渲染,并且因此可以跳过所有相关联的冗余测试。该有效标志可以由数据表征单元310基于渲染范围状态数据804设置为预先确定的值。例如,如果渲染范围状态数据804指示渲染是使用多个渲染目标(或其他高级渲染技术)的场景的一部分,或者渲染包括比阈值数量更多的绘制调用,则有效标志可被设置为预先确定的值。这些是这是不太可能受益于冗余渲染测试的复杂渲染的指示。在一些示例中,如果数据表征单元310确定有效标志应该被设置为指示整个当前渲染不适于测试冗余渲染,那么数据表征输出块810中数据的剩余部分不需要被生成和存储。
129.标头812还可包括由图元块生成器802生成的图元块的数量。出于若干原因,该数据是有用的。它可以用作测试过程的一部分,以消除过于复杂而无法从冗余测试中获益的渲染(如下面结合图10和图11所概述的)。这对于解释数据表征输出块810的其余部分也是有益的,因为所生成的图元块的数量将取决于被渲染的场景,并且不是预先知道的。因此,
在标头中提供图元块的数量确保可以确定图元块数据814有多大,以及每个每图块图元块列表816中的位的数量。标头812还可以包括用于渲染的透明颜色。如上所述,透明颜色是渲染范围特性,并且可以用于稍后描述的冗余检测。
130.图元块数据814包括表征一个或多个图元块的内容的数据。例如,图8用图元块pb0的数据,随后用pb1的数据等来示出这一点。在一个示例中,图元块数据814可以是由图元块生成器802生成的图元块806的直接拷贝。在另一个示例中,图元块数据814可以是由图元块生成器802生成的图元块806的散列,如下面更详细描述的。
131.每图块图元块列表816是指示一个或多个图元块中的哪些包含位于该图块内的图元的数据。这是基于由平铺单元308提供的图元块列表808。每图块图元块列表816可包括例如每个图块的位掩码,其指示一个或多个图元块中的哪些包含位于该图块内的至少一个图元,其中位在位掩码内的位置指示图元块的身份,并且位的值(一或零)指示该图元块是否包含位于该图块内的图元。由数据表征单元310存储的每图块的图元块列表816可以是来自平铺单元308的图元块列表808的直接拷贝。
132.需注意,图8中所示的数据的示例性布置仅是说明性的示例,并且可以以任何适当的方式来构造数据。
133.如上所述,图元块数据814可以是原始数据的散列形式。使用散列的益处是它降低了存储要求,因为散列比原始数据小,并且在一些示例中可以是固定大小的,而与原始数据的大小无关。数据表征单元310可被配置为以一个或多个散列表示的形式存储图元块数据814。数据表征单元310可以通过实现散列函数来生成散列值。存在许多众所周知的散列函数,诸如基于xor的函数、基于循环冗余校验(crc)的函数,以及更复杂的方案,诸如md5、sha-1和sha-2。
134.图元块数据814可以在每图元块的基础上进行散列;即每个图元块被单独地散列。尽管以一个或多个散列值的形式存储图元块数据814确实减少了存储器块3041中的存储需求,但是它仍然需要数据表征单元310为每个图元块执行散列计算,从而消耗图形处理单元的处理资源。
135.现在参考图10和图11,这些图示出根据“图元块比较”技术提供给测试单元312并且由该测试单元分析的数据,以及示出这如何操作的流程图。
136.图10更详细地示出了渲染阶段功能,包括图3的测试单元312、渲染逻辑314、获取单元316和片段处理逻辑318。特别地,图10示出了从存储器中检索并由测试单元312分析的数据,以确定特定图块的渲染是否是冗余的。测试单元312被配置为在多阶段过程中从存储器中检索并分析与图块的当前渲染和先前渲染相关的各种数据项,并使用这一点来确定当前渲染是否是冗余的。换句话说,测试单元312确定该图块的先前渲染的输出是否可用作该渲染的输出。
137.在一个示例中,获取单元316被配置为在获取正被渲染的图块的渲染数据(即,显示列表和相关联的图元数据)之前,等待在测试单元312处完成分析。如果测试单元312确定当前图块的渲染不是冗余的(即,需要被渲染),那么测试单元312向获取单元316提供信号,该获取单元可以开始获取图块的渲染数据,并将此提供给片段处理逻辑318,该片段处理逻辑将执行片段着色、纹理化等以渲染图块并生成输出。相反,如果测试单元312确定当前图块的渲染是冗余的(即,不需要被渲染),那么测试单元312向获取单元316提供信号,该信号
指示不需要从存储器获取图块渲染数据。该信息(其可由测试单元312或获取单元316提供)由渲染逻辑314使用,并且使渲染逻辑在存储器中保留该图块的先前渲染的输出,并且将该数据用作图块的当前渲染的输出数据。
138.在另一个示例中,为了避免测试单元312停止图形流水线,获取单元316被配置为继续获取正在被渲染的图块的渲染数据,而不等待测试单元312完成分析。以这种方式,可能使用更多的存储器带宽,但性能得到改善。如果测试单元312确定当前图块的渲染不是冗余的(即,需要被渲染),那么获取单元316继续获取图块的渲染数据,并将此提供给片段处理逻辑318,该片段处理逻辑将执行片段着色、纹理化等以渲染图块并生成输出。如果测试单元312确定当前图块的渲染是冗余的(即,不需要被渲染),那么测试单元312向获取单元316提供信号,该信号指示图块渲染数据的获取应被停止/中断,因为不再需要该数据。如上所述,该信息(其可由测试单元312或获取单元316提供)由渲染逻辑314使用,并且使渲染逻辑在存储器中保留该图块的先前渲染的输出,并且将该数据用作图块的当前渲染的输出数据。
139.现在参考图10结合图11来描述测试单元312的操作以及测试单元用来有效地确定图块渲染是否冗余的冗余数据序列。
140.对于在渲染之前正在测试冗余的所选择的图块,测试单元312开始从数据表征输出块810中检索由数据表征单元310存储在存储器中的数据。然而,因为数据表征输出块810可能是大数据块,所以测试单元312可以在多阶段过程中检索数据,以便减少存储器带宽和功耗。特别地,该多阶段过程旨在快速有效地消除许多非冗余的图块渲染,而不会导致显著的存储器带宽或计算成本。
141.在步骤1102中,在第一阶段中,测试单元312从数据表征输出块810的标头812检索当前渲染和先前渲染的数据。检索的标头数据可以是渲染范围数据的形式。例如,如图10所示,在该第一阶段中,测试单元312检索第一数据块1002,该第一数据块包括一个或多个有效标志、图元块的数量以及当前和先前渲染的透明颜色。如上所述,有效标志可以包括渲染范围有效标志。
142.在步骤1104中,测试单元312确定在第一数据块1002中检索的数据是否指示对继续进行更详细的渲染数据的每图块比较是有效的。在图10的示例中,测试单元312通过检查有效标志是否指示先前渲染数据和当前渲染数据均适于冗余测试来确定这一点。例如,测试单元312可以检查没有为当前渲染和先前渲染两者设置渲染范围有效标志(例如,指示既不渲染所使用的复杂渲染特征也不包括太多的绘制调用)。
143.测试单元312还可以使用当前渲染和先前渲染中的图元块数量的值来确定是否适于继续对该图块进行冗余测试。例如,测试单元312可以将当前和先前渲染中的图元块的数量与预定义的限制进行比较。如果当前渲染和先前渲染中的图元块的数量超过该限制,则这可能指示该渲染包含大量图元,这指示复杂场景不太可能适于冗余测试。在一些示例中,图元块数的预定义限制在64和128之间。需注意,在替代示例中,数据表征单元310可以将图元块的数量与预定义限制进行比较,并基于此设置有效标志,而不是由测试单元312来进行。在图10的示例中,测试单元312进一步通过比较两个值来确定当前渲染和先前渲染的透明颜色是否匹配。
144.如果任何有效标志指示图块对于冗余测试不是有效的,图元块的数量超过限制,
或者透明颜色不匹配,那么这指示测试单元不应该进行进一步的比较,因为图块不是冗余的或者不适于冗余测试。在这种情况下,在步骤1106中,由gpu的渲染阶段将图块渲染为正常。重要的是,该决定可以从冗余测试过程中消除许多不合适的图块,其中仅检索非常少量的数据,并且具有非常小的处理开销。因此,这不会显著降低gpu的性能。
145.如果有效性数据指示对继续进行更详细的每图块比较以检测冗余是有效的,则在一个示例中,该过程移动到步骤1108中的第二阶段,其中测试单元从数据表征输出块810检索正被测试的图块的每图块图元块列表816。例如,在步骤1108中,测试单元312检索当前和先前渲染的图块的图元块位掩码。如图10所示,如果被测试的图块是t0,那么检索包括当前渲染和先前渲染两者的t0图元块位掩码的第二数据块1004。如上所述,每图块图元块位掩码包括标识哪些图元块包含位于正被测试的图块中的图元的信息。如上所述,这通常是少量的数据(特别是对于已经通过不包括太多图元块的第一阶段的渲染)。
146.在步骤1110中,测试单元312比较检索的数据,以确定来自当前渲染和先前渲染的每图块图元块列表是否匹配。如果来自当前和先前渲染的每图块图元块列表不匹配,那么这指示当前渲染和先前渲染的图块中的图元在不同的图元块中,并且因此图块不可能是冗余的。在这种情况下,该过程移动到步骤1106,并且在渲染阶段中将图块渲染为正常。值得注意的是,这是可以使用少量数据和简单的逻辑比较来标识可能不是冗余的图块的决定,从而没有大量的带宽、功率或处理开销。
147.需注意,在一些替代示例中,可以省略位掩码的比较,并且相反,比较可以从第一阶段移动到第三阶段(下面概述)。虽然这不会节省任何存储器带宽(因为在第三阶段中使用了位掩码),但是它可以减少完成分析的时间,并且不需要当前和先前的渲染具有相同的位掩码结构来实现比较(例如,它们可以具有不同的长度)。它还可以避免这样的情况,即在渲染之间仅场景的一部分改变,使得图元块被不同地组装,但是一些图块可能仍然是冗余的。
148.如果来自当前渲染和先前渲染的每图块图元块列表匹配,则过程移动到第三阶段。第三阶段是综合比较,以使用来自数据表征输出块810的图元块数据814来确认图块是否冗余。在步骤1112中,测试单元312使用图块的当前图元块列表和先前图元块列表来检索当前渲染和先前渲染的图块的所指示的相关图元块数据814。例如,如图10中所示,如果正被测试的图块为t0,并且t0的当前图元块列表和先前图元块列表均指示图元块1包含位于该图块中的图元,那么检索第三数据块1006,该第三数据块包括当前渲染和先前渲染的pb1的图元块数据。如上所述,图元块包含关于该图元块中图元的顶点位于何处以及它们将如何在渲染阶段被渲染的信息。因此,这使得能够准确比较图块的内容是否确实与先前渲染的内容相同。
149.在步骤1114中,测试单元312比较检索的数据,以确定来自当前渲染和先前渲染的图块的所指示的图元块数据是否匹配。如果图块的所指示的图元块数据不匹配,则不能保证当前渲染和先前渲染中的图块内容是相同的,并且因此该图块被认为不是冗余的。在这种情况下,在步骤1106中,在渲染阶段中将图块渲染为正常。如果图块的所指示的图元块数据匹配,那么在步骤1116中,确定图块是冗余的,并且在渲染阶段中可跳过图块的渲染(或避免处理的至少一部分)。在这种情况下,先前渲染的输出可以用作当前渲染的输出,如上所述。
150.如上所述,在一些示例中,图元块数据814可以是散列数据的形式。测试单元312可以要求与图块相关的图元块的一个或多个散列值精确匹配,以确定当前渲染的图块是冗余的。如果表征相关图元块的信息是多个散列值(例如,多个图元块)的形式,则这些散列值中的每个散列值可能必须与先前渲染的对应散列值单独匹配,以便测试单元312确定图元内容匹配。
151.为比较与图块相关的图元块而检索的数据量大于冗余测试的其他阶段。然而,在不比较该数据的情况下,不能对冗余做出准确的决定。这对gpu性能/功耗的影响通过上述多阶段测试过程来减轻。通过确保不合适的或非冗余的图块被从测试过程中及早地消除,并且通过少量的冗余数据和简单的比较,准确比较所需的更大量数据的检索被最小化。
152.与上文所述的“前几何阶段数据比较,然后后几何阶段数据比较”技术相比,“图元块比较”技术在检测冗余图块渲染时损失一些粒度。特别地,情况可能是图元块内的一个图元在渲染之间被改变,这然后将意味着标识该图元块的所有图块不会被认为是冗余的,即使改变的图元实际上不存在于所有这些图块中。然而,“图元块比较”技术具有在存储和计算方面更高效的优点。首先,无论如何都要在gpu中创建图元块,以用于与平铺过程一起使用,因此这利用了已经创建的数据结构。其次,图元块的使用给出了更有效的数据存储。这是因为每个图元只包含在单个图元块中,并且因此只存储一次,而不管图元在多少个图块中。相反,通过“前几何阶段数据比较,然后后几何阶段数据比较”技术,图元数据与图块相关联地存储,因此当其位于多个图块中时将被存储多次。第三,当使用散列时,图元块的使用在计算上更有效。这是因为每图元块只计算一个散列,并且每个图元仅包含在单个图元块中。这意味着图元仅被散列一次。相比之下,通过“前几何阶段数据比较,然后后几何阶段数据比较”技术,当图元位于多个图块中时,对其进行多次散列。
153.为了提高“图元块比较”技术中检测冗余图块的粒度,在一些示例中,图元块生成器802可以将为当前渲染形成的每个图元块分割成多个部分。图元块生成器802可以例如将每个图元块分割成固定数量的部分,或者分割成固定大小的部分。然后,每个图元块部分可以包含图元块内图元的子集。如果每个图元块被分割成“n”个部分,则平铺单元308然后可以为每个图块生成“n”个位掩码,每个位掩码与一部分相关联,并且指示该部分的哪些图元块包含位于图块内的一个或多个图元。这在图12中示意性地示出。
154.图12示出了示例,其中由图元块生成器802为当前渲染形成两个图元块1202和1204。然后,图元块生成器802将每个图元块分割成多个部分,在该示例中是两个区段。每个图元块的图元块部分从图元块生成器802传送到数据表征单元310。
155.平铺单元308然后为每个图块生成数量等于形成每个图元块的图元块部分的数量的多个位掩码。因此,在该示例中,平铺单元308每图块生成两个位掩码,在图12中以1206和1208示出。每个位掩码对应于相应的图元块部分编号(由图12中的虚线示出)。因此,图块的每个位掩码指示给定图元块部分号的哪些图元块部分包含位于图块内的图元。在图12所示的示例中,位掩码1206指示部分编号1的哪些图元块部分包含位于图块内的图元,并且位掩码1208指示部分编号2的哪些图元块部分包含位于图块内的图元。换句话说,在图12的示例中,其中图元块被分割成两半,位掩码1206指示来自任何图元块的第一半的图元何时位于图块内,并且位掩码1208指示来自任何图元块的第二半的图元何时位于图块内。
156.图块的位掩码和图元块部分之间的关系可以通过以下方式数学地表示:声称每个
位掩码bi指示j=1

n的哪些图元块区段pb
ij
包含位于图块内的图元,其中pb
ij
是图元块j的区段编号i的图元块,并且n是为渲染形成的图元块的数量
157.数据表征单元310然后在数据表征输出块810中存储如上所述的图元块数据814,但是这些部分被单独存储(并且任选地被单独散列)。数据表征单元310还在数据表征输出块810中存储每图块多个位掩码,每个位掩码与不同的图元块部分相关。需注意,尽管图元块生成器802被描述为分割图元块,但是在其他示例中,该功能可由数据表征单元310执行。同样,平铺单元308在上面被描述为生成每个图块多个位掩码,但是在其他示例中,这可以由数据表征单元310导出。
158.与其中图元块未被分割成区段的示例相比,该方法增加了对存储器块3041的存储器要求。这是因为图元块区段列表的大小大于图元块列表的大小;并且通过将图元块分割成多个区段,每图块需要存储多个位掩码,而不是每个图块存储单个位掩码。然而,这种方法具有增加粒度的优点。这是因为在该方法下,如果图块内的图元来自在渲染之间未改变的图元块的区段,那么即使来自图元块的另一个区段的图元已经改变,图块也将被标识为冗余的。
159.现在参考图13a和图13b,其示出了对于上述第一技术或第二技术,当前渲染和先前渲染的信息可如何存储在存储器中。例如,参考步骤512和916描述了数据表征单元使数据表征输出块416/810存储在存储器块3041中。存储器块3041也可以在其中存储先前渲染的数据表征输出块。为了最小化存要求,存储器块3041可以仅存储两个渲染的数据表征输出块:当前渲染,以及与当前渲染进行比较的先前渲染。
160.因此,当数据表征单元310将信息写入当前渲染的存储器块3041时,重要的是数据表征单元不覆盖与当前渲染相比较的先前渲染的信息。现在将参考图13a和图13b描述避免这种情况的两种方法。
161.图13a示意性地示出了当执行多次渲染时,由数据表征单元存储在存储器块3041中的信息的存储位置。每个矩形框指示渲染的数据表征输出块。每个矩形框中的值表示渲染编号。在该示例中,首先执行渲染n,然后执行渲染n+1、n+2等。在该示例中,数据表征单元310每次将当前渲染的信息存储在存储器3041中的相同位置。也就是说,当正在执行渲染n+1时,渲染n+1的信息被存储在位置2;当正在执行渲染n+2时,渲染n+2的信息也被存储在位置2中;等等。因此,为了避免当前渲染的信息覆盖先前渲染的信息(这将阻止信息能够被比较),在每次渲染结束时,存储在位置2的信息被复制到位置1。例如,在渲染n+1结束后,该渲染的信息被移动到位置1。下一个当前渲染(n+2)的信息然后可以被写入第二位置,使得渲染n+1和n+2的信息都均存储在存储器3041中,使得该信息能够被比较。
162.图13b中示出了存储信息的替代方法。在这种方法中,数据表征单元310被设置为将当前渲染的数据表征输出块存储在存储器3041中的位置,该位置取决于先前渲染的数据表征输出块的存储位置。例如,当当前渲染是渲染n+1时,先前渲染n的信息存储在位置1,并且因此数据表征单元310使得信息存储在另一存储位置(位置2)中。当当前渲染是渲染n+2时,先前渲染的信息存储在位置2,并且因此数据表征单元使得信息存储在另一存储位置(位置1)中。
163.为了使数据表征单元310知道每次渲染在哪个位置写入信息,数据表征单元可以存储当前渲染的存储位置相对于先前渲染的存储位置的指示。例如,当当前渲染是渲染n+1
时,数据表征单元在存储器3041内存储渲染n+1的信息的存储位置相对于先前渲染n的信息的存储位置的指示。当当前渲染是渲染n+2时,数据表征单元使用先前渲染(现在是渲染n+1)的信息的存储位置相对于先前渲染之前的渲染(现在是渲染n)的信息的存储位置的指示来确定在何处存储当前渲染n+2的信息。这种方法的优点是在每次渲染结束时不必在存储位置之间传输存储信息。
164.图14示出了可以在其中实现本文中所描述的图形处理系统的计算机系统。计算机系统包括cpu 1402、gpu 1404、存储器1406、神经网络加速器(nna)1411和其他设备1414,诸如显示器1416、扬声器1418和相机1422。计算机系统的部件可通过通信总线1420彼此通信。
165.图1至图14的图形处理系统被示为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,由图形处理系统形成的本文所描述的中间值不需要由图形处理系统在任何时间点物理地生成,并且可以仅表示方便地描述由图形处理系统在其输入与输出之间执行的处理的逻辑值。
166.本文中所描述的图形处理单元可以在集成电路上体现为硬件。本文所述的图形处理系统可被配置为执行本文所述任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文中可以使用术语“模块”、“功能性”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或它们的任何组合。在软件实施方式的情况下,模块、功能性、部件、元件、单元、块或逻辑表示程序代码,当在处理器上被执行时,所述程序代码执行指定任务。本文中所描述的算法和方法可由执行代码的一个或多个处理器执行,所述代码促使处理器执行算法/方法。计算机可读存储介质的示例包括随机访问存储器(ram)、只读存储器(rom)、光盘、闪存存储器、硬盘存储器,以及可使用磁性、光学和其他技术来存储指令或其他数据并且可由机器访问的其他存储器设备。
167.如本文中所使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何种类的可执行代码,包括以机器语言、解译语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网表),以及用诸如c、java或opencl等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解译、编译、运行时,这些软件、固件、脚本、模块或库使得支持可执行代码的计算机系统的处理器执行由代码指定的任务。
168.处理器、计算机或计算机系统可以是任何种类的设备、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是或包括任何种类的通用或专用处理器,诸如cpu、gpu、nna、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等。计算机或计算机系统可包括一个或多个处理器。
169.本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,诸如hdl(硬件描述语言)软件,如用于设计集成电路,或者用于配置可编程芯片以执行期望的功能。也就是说,可以提供一种其上编码有呈集成电路定义数据集形式的计算机可读程序代码的计算机可读存储介质,当在集成电路制造系统中处理(即,运行)时,计算机可读程序代码将系统配置为制造被配置为执行本文所描述的方法中的任一方法的图形处理系统,或者制造包括本文
所描述的任何装置的图形处理系统。集成电路定义数据集可以是例如集成电路描述。
170.因此,可以提供一种在集成电路制造系统处制造如本文所描述的图形处理系统的方法。此外,可以提供一种集成电路定义数据集,当在集成电路制造系统中处理时,集成电路定义数据集使得制造图形处理系统的方法得以执行。
171.集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(rtl)代码,作为高级电路表示法(诸如verilog或vhdl),以及作为低级电路表示法(诸如,oasis(rtm)和gdsii)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如rtl)可在计算机系统处进行处理,该计算机系统被配置用于在软件环境的上下文中产生集成电路的制造定义,该软件环境包括电路元件的定义以及用于组合这些元件以便产生由表示法如此定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如提供命令、变量等),以便将计算机系统配置为用于生成集成电路的制造定义,以执行定义集成电路以便生成该集成电路的制造定义的代码。
172.现在将关于图15描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置为制造图形处理系统的示例。
173.图15示出了集成电路(ic)制造系统1502的示例,该集成电路制造系统被配置为制造如本文任何示例中描述的图形处理系统。特别地,ic制造系统1502包括布局处理系统1504和集成电路生成系统1506。ic制造系统1502被配置为接收ic定义数据集(例如,定义如本文任何示例中描述的图形处理系统)、处理ic定义数据集以及根据ic定义数据集来生成ic(例如,其体现如本文任何示例中所述的图形处理系统)。通过对ic定义数据集的处理,将ic制造系统1502配置为制造集成电路,该集成电路体现如本文任何示例中所述的图形处理系统。
174.布局处理系统1504被配置为接收和处理ic定义数据集以确定电路布局。根据ic定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成rtl代码以确定要生成的电路的门级表示,例如就逻辑部件(例如nand、nor、and、or、mux和flip-flop部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1504已经确定电路布局时,其可将电路布局定义输出到ic生成系统1506。电路布局定义可以是例如电路布局描述。
175.如所属领域中已知,ic生成系统1506根据电路布局定义来生成ic。举例来讲,ic生成系统1506可实施生成ic的半导体装置制造工艺,其可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成ic。替代地,提供给ic生成系统1506的电路布局定义可呈计算机可读代码的形式,ic生成系统1506可使用所述计算机可读代码来形成用于生成ic的合适掩码。
176.由ic制造系统1502执行的不同过程可全部在一个位置例如由一方来实施。替代地,ic制造系统1502可以是分布式系统,使得一些过程可在不同位置执行,并且可由不同方来执行。例如,以下阶段中的一些阶段可以在不同位置和/或由不同方来执行:(i)合成表示
ic定义数据集的rtl代码,以形成待生成电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
177.在其他示例中,在集成电路制造系统中对集成电路定义数据集的处理可以将系统配置为在不处理ic定义数据集以确定电路布局的情况下制造图形处理系统。例如,集成电路定义数据集可以定义诸如fpga的可重新配置的处理器的配置,并且对该数据集进行的处理可以将ic制造系统配置为(例如,通过将配置数据加载到fpga)生成具有该定义的配置的可重新配置的处理器。
178.在一些实施例中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,通过集成电路制造定义数据集以上文关于图15描述的方式对集成电路制造系统进行配置,可以制造出如本文描述的装置。
179.在一些示例中,集成电路定义数据集可以包含在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图15所示的示例中,ic生成系统可以由集成电路定义数据集进一步配置为在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到该集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
180.与已知的实施方案相比,在本技术中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实施的方法中)的实施方案可以引起性能改进。性能改进可以包括计算性能提高、延迟减少、处理量增大和/或功耗降低中的一者或多者。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实现之间进行权衡,从而改进制造方法。例如,可在性能改进与布局面积之间进行权衡,从而匹配已知实施方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,本技术中所阐述的带来设备、装置、模块和系统的物理实现的改进(例如,硅面积减小)的概念可与性能提高进行权衡。这可以例如通过在预定义面积预算内制造模块的多个实例来完成。
181.申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

技术特征:
1.一种使用图形处理单元执行渲染的方法,所述图形处理单元被配置为实现基于图块的图形流水线,其中渲染空间被细分为多个图块,所述方法包括:接收所述渲染的几何数据,所述几何数据包括多个图元,每个图元与一个或多个顶点着色器程序相关联;使用所述一个或多个顶点着色器程序来处理所述几何数据以生成一个或多个经处理的图元;确定所述经处理的图元中的哪些位于所述多个图块中的每个图块内;对于所述多个图块中的至少一个所选择的图块,存储i)每图块顶点着色器数据的表示,其标识用于生成位于所述图块中的所述经处理的图元的所述一个或多个顶点着色器程序,以及ii)每图块渲染数据的表示,其能够在所述图形流水线的后续阶段中渲染所述图块内的所述经处理的图元时使用;以及对于所选择的图块或每个所选择的图块,通过在将所述图块的所述每图块渲染数据与先前渲染的每图块渲染数据进行比较之前,将所述图块的所述每图块顶点着色器数据与所述先前渲染的所述顶点着色器数据进行比较来确定所述图块的先前渲染的输出是否能够用作所述渲染的输出。2.根据权利要求1所述的方法,其中确定所述图块的所述先前渲染的所述输出是否能够用作所述渲染的所述输出包括:确定所述每图块顶点着色器数据是否匹配先前渲染的对应每图块顶点着色器数据;响应于确定所述每图块顶点着色器数据匹配,确定所述图块的所述每图块渲染数据是否匹配所述先前渲染的对应每图块渲染数据;以及响应于确定所述每图块渲染数据匹配,使用所述图块的所述先前渲染的所述输出作为所述渲染的所述输出。3.根据权利要求2所述的方法,其中确定所述图块的所述先前渲染的所述输出是否能够用作所述渲染的所述输出还包括:响应于确定所述每图块顶点着色器数据不匹配,使所述图形流水线渲染所述图块。4.根据权利要求2或3所述的方法,其中确定所述图块的所述先前渲染的所述输出是否能够用作所述渲染的所述输出还包括:响应于确定所述每图块渲染数据不匹配,使所述图形流水线渲染所述图块。5.根据任一前述权利要求所述的方法,还包括存储指示所述渲染的一个或多个特征的渲染范围数据,并且在确定所述图块的先前渲染的所述输出是否能够用作所述渲染的输出之前,使用所述渲染范围数据来检查是否跳过所述每图块顶点着色器数据和每图块渲染数据比较,并且使所述图形流水线渲染该图块。6.根据权利要求5所述的方法,其中所述渲染范围数据包括透明颜色,并且使用所述渲染范围数据来检查是否跳过所述每图块顶点着色器数据和每图块渲染数据比较包括确定所述透明颜色是否与所述先前渲染的颜色匹配。7.根据权利要求5或6所述的方法,其中所述渲染范围数据包括有效标志,并且使用所述渲染范围数据来检查是否跳过所述每图块顶点着色器数据和每图块渲染数据比较包括确定所述有效标志是否具有预先确定的值。8.根据权利要求7所述的方法,还包括基于以下中的至少一项将所述有效标志设置为
所述预先确定的值:指示所述渲染是使用多个渲染目标的场景的一部分的数据;并且所述渲染包括比阈值数量更多的绘制调用。9.根据任一前述权利要求所述的方法,还包括对于所述多个图块中的所述至少一个所选择的图块,存储iii)指示是否跳过所述每图块顶点着色器数据和每图块渲染数据比较的每图块有效性数据,其中所述每图块有效性数据基于位于所述图块内的经处理的图元的数量来设置。10.根据任一前述权利要求所述的方法,其中所述每图块渲染数据包括位于所述图块内的所述经处理的图元中的每个经处理的图元的顶点坐标和顶点状态数据。11.根据任一前述权利要求所述的方法,其中存储所述每图块渲染数据的所述表示包括生成位于所述图块内的所述经处理的图元中的每个经处理的图元的所述顶点坐标和所述顶点状态数据的散列,以及存储散列值。12.根据任一前述权利要求所述的方法,其中所述顶点状态数据包括与用于渲染所述图块中的所述经处理的图元的每个顶点相关联的数据,包括以下中的一项或多项:像素着色器标识符,变化,颜色数据,表面正常数据以及纹理数据。13.一种被配置为实现基于图块的图形流水线的图形处理系统,其中渲染空间被细分为多个图块,所述图形处理系统包括:几何处理逻辑,所述几何处理逻辑被配置为:接收渲染的几何数据,所述几何数据包括多个图元,每个图元与一个或多个顶点着色器程序相关联,并且使用所述一个或多个顶点着色器程序来处理所述几何数据以生成一个或多个经处理的图元;平铺单元,所述平铺单元被配置为确定所述经处理的图元中的哪些位于每个图块内;数据表征单元,所述数据表征单元被配置为对于所述多个图块中的至少一个所选择的图块,在存储器中存储i)每图块顶点着色器数据的表示,其标识用于生成位于所述图块中的所述经处理的图元的所述一个或多个顶点着色器程序,以及ii)每图块渲染数据的表示,其能够用于在所述图形流水线的后续阶段中渲染所述图块内的所述经处理的图元;以及测试单元,所述测试单元被配置为对于所选择的图块或每个所选择的图块,通过在将所述图块的所述每图块渲染数据与先前渲染的每图块渲染数据进行比较之前,将所述图块的所述每图块顶点着色器数据与所述先前渲染的所述顶点着色器数据进行比较来确定所述图块的先前渲染的输出是否能够用作所述渲染的输出。14.根据权利要求13所述的图形处理系统,其中为了确定所述图块的所述先前渲染的所述输出是否能够用作所述渲染的所述输出,所述测试单元进一步被配置为:确定所述每图块顶点着色器数据是否匹配先前渲染的对应每图块顶点着色器数据;响应于确定所述每图块顶点着色器数据匹配,确定所述图块的所述每图块渲染数据是否匹配所述先前渲染的对应每图块渲染数据;并且响应于确定所述每图块渲染数据匹配,使用所述图块的所述先前渲染的所述输出作为所述渲染的所述输出。15.根据权利要求14所述的图形处理系统,其中为了确定所述图块的所述先前渲染的所述输出是否能够用作所述渲染的所述输出,所述测试单元进一步被配置为:响应于确定所述每图块顶点着色器数据不匹配,使所述图形流水线渲染所述图块。16.根据权利要求14或15所述的图形处理系统,其中为了确定所述图块的所述先前渲
染的所述输出是否能够用作所述渲染的所述输出,所述测试单元进一步被配置为:响应于确定所述每图块渲染数据不匹配,使所述图形流水线渲染所述图块。17.根据权利要求13至16中任一项所述的图形处理系统,其中所述数据表征单元进一步被配置为存储指示所述渲染的一个或多个特征的渲染范围数据,并且在确定所述图块的先前渲染的所述输出是否能够用作所述渲染的输出之前,使用所述渲染范围数据来检查是否跳过所述每图块顶点着色器数据和每图块渲染数据比较,并且使所述图形流水线渲染该图块。18.根据权利要求13至17中任一项所述的图形处理系统,其中所述数据表征单元进一步被配置为对于所述多个图块中的所述至少一个所选择的图块,存储iii)指示是否跳过所述每图块顶点着色器数据和每图块渲染数据比较的每图块有效性数据并且渲染位于所述图块内的所述图元以渲染所述图块,其中所述每图块有效性数据基于位于所述图块内的经处理的图元的数量来设置。19.根据权利要求13至18中任一项所述的图形处理系统,其中所述图形处理系统在集成电路上的硬件中体现。20.一种使用集成电路制造系统来制造如权利要求13至19中任一项所述的图形处理系统的方法。21.一种计算机可读存储介质,在其上编码有计算机可读代码,所述计算机可读代码被配置为在运行所述代码时使得如权利要求1至12中任一项所述的方法被执行。22.一种计算机可读存储介质,其上存储有集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中被处理时,配置所述集成电路制造系统以制造如权利要求13至19中任一项所述的图形处理系统。

技术总结
减少图形系统中的冗余渲染。公开了一种使用图形处理单元执行渲染的方法和系统,所述图形处理单元实现基于图块的图形流水线,其中渲染空间被细分为图块。接收所述渲染的几何数据,所述几何数据包括与一个或覆盖顶点着色器程序相关联的图元。使用所述顶点着色器程序来处理所述几何数据以生成经处理的图元,并且确定所述经处理的图元中的每个经处理的图元位于哪个图块中。对于至少一个所选择的图块,存储i)每图块顶点着色器数据的表示,其标识用于生成所述图块中的所述经处理的图元的一个或多个顶点着色器程序,以及ii)每图块渲染数据的表示,其可在所述图形流水线的后续阶段中渲染所述图块中的所述经处理的图元时使用。染所述图块中的所述经处理的图元时使用。染所述图块中的所述经处理的图元时使用。


技术研发人员:J
受保护的技术使用者:想象技术有限公司
技术研发日:2023.03.29
技术公布日:2023/10/19
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐