用于处理图形数据的计算系统以及方法与流程

文档序号:14992104发布日期:2018-07-20 22:28阅读:233来源:国知局

一些计算系统(例如,图形处理系统)包括图形渲染逻辑,其被配置为接收图形数据(例如,从在计算机系统上运行的应用),并且渲染图形数据以提供渲染输出。例如,提供给图形处理系统的图形数据可以描述要被渲染的三维(3d)场景内的几何结构,并且渲染的输出可以是场景的经渲染的图像。

一些图形处理系统(其可以被称为“基于拼接块(tile-based)”的图形处理系统)使用被细分成多个拼接块的渲染空间。“拼接块”是渲染空间的区域,并且可以具有任何合适形状,但是通常是矩形的(其中术语“矩形”包括正方形)。为了给出一些示例,拼接块可以覆盖要渲染的图像的16×16像素块或32×32像素块。因此,渲染空间的拼接块与经渲染的图像的区域相对应。如本领域已知的那样,将渲染空间细分成拼接块具有许多益处。例如,将渲染空间细分成拼接块允许图像以逐个拼接块的方式被渲染,其中用于拼接块的图形数据可以在渲染该拼接块期间被临时存储在“片上”。

基于拼接块的图形处理系统通常分两个阶段进行操作:几何结构处理阶段和图像渲染阶段。在几何结构处理阶段中,分析用于渲染的图形数据以针对拼接块中的每个拼接块确定哪些图形数据项目存在于该拼接块内。然后,在图像渲染阶段,可以通过处理被确定为存在于该拼接块内的那些图形数据项目来渲染拼接块(而不需要处理在几何结构处理阶段中被确定为不存在于特定拼接块内的图形数据项目)。图形数据项目可以表示几何结构形状,其描述场景中的结构的表面并且被称为“原语(primitives)”。常见原语形状是三角形,但是原语可以是其他2d形状,或者还可以是线条或点。对象可以由这样原语中的一个或多个(例如,数百、数千或数百万)原语组成。

在一些计算系统中,图像处理逻辑随后处理由图形渲染逻辑渲染的经渲染的图像。这样,可以对经渲染的图像执行后处理。例如,图像处理逻辑可以将视频编码应用于经渲染的图像以对图像进行编码。将视频编码应用于经渲染的图像可以减少用于表示图像的数据量。如果要跨越网络(例如,通过因特网或本地网络,例如,使用wifi)传送图像或者如果要存储图像,则这可以是特别有用的。作为示例,图像可以表示帧序列内的帧,其在计算系统处将被渲染和编码,然后被传送到显示器以在其上进行实时显示。视频编码方法在本领域中是已知的,其通常符合视频编码标准。有许多不同的视频编码标准,诸如h.265、h.264、vp8、vp9、divx视频标准等等,以及更多的标准。编码图像的目的通常是减少用于表示图像的数据量。因此,图像的编码可能涉及图像的一些压缩。压缩可能是无损或有损的。

因为图像中的像素值之间通常存在一些相关性(例如,针对在图像中彼此相邻或至少彼此接近的像素),所以在表示图像中的像素中的每个像素的值的初始图像数据中通常存在冗余。例如,可以通过与一些分组信息一起存储颜色一次而非通过存储该颜色多次(即,像素中的每个像素一次)来压缩(无损地)所有均具有相同颜色的像素组的颜色以表示该组的所有像素的颜色。图像中的冗余越多,图像可以被压缩得越多,而不会丢失图像中的任何信息。编码器可以使用量化参数(qp)来调节在图像中保存多少细节。例如,当编码器使用的qp非常小时,图像中的几乎所有细节都被保留下来。当编码器使用的qp增加时,图像中的一些细节被聚集,以使经编码的图像的比特率下降,但是以失真的一些增加和经编码的图像的一些质量损失为代价。

编码器跨越图像以恒定(或接近恒定)比特率提供编码图像,并且当图像是包括跨越视频流的不同帧的多个帧的视频流内的帧时,可能是有益的。缓冲器可以被使用,并且作为“漏桶(leakybucket)”来操作,该漏桶以恒定速率被清空,同时用来自视频编码器的编码图像数据以可变速率被填充。速率控制器可以被用于按照目标比特率来调整由视频编码器使用的qp,并且使得缓冲器不会耗尽或饱和。速率控制器可以从视频编码器接收反馈以指示已经通过编码先前图像和/或当前正被编码的图像的先前区段而生成的比特的数目。速率控制器可以使用该反馈来确定qp应被如何变化以编码后续图像和/或当前正被编码的图像的后续区段。

图像中的冗余可能从图像到图像以及从图像的一个区段到同一图像的另一区段之间变化很大。可能是图像只能被编码一次(例如,当图像被实时编码时),使得如果通过编码图像生成了相对于目标比特率的太少或太多的比特,图像也不被重新编码。更进一步地,为了减少缓冲器的存储要求并且将图像的编码的延迟时间保持在可接受的低水平,缓冲器的大小受到约束。更进一步地,用于对相同图像的不同区段进行编码的qp中的较大变化可能导致在感知上较低质量的编码图像。因此,速率控制器不会允许qp对于图像的编码变化超过阈值量。

上文所提及的约束可以导致速率控制器没有最优地(乃至几乎最优地)控制由视频编码器用来对图像的区段进行编码(例如,当图像被实时编码时)的qp的情况。例如,图像中的细节量可以被局部化,例如,图像的底部四分之一可以包括比图像的其余部分更多的细节。在这种情况下,速率控制器可能在用于图像的四分之三的比特预算内操作良好,其耗尽比特预算的四分之三。然而,当视频编码器对包含高细节级别的图像的底部四分之一进行编码时,速率控制器被迫增加qp(与很好地适合于编码图像的底部四分之一中的细节级别的速率控制器相比较)以便使视频编码器保留在比特预算内。以这样的方式改变qp可能导致在感知上低质量的编码图像。



技术实现要素:

提供本发明内容是为了以简化形式介绍将在具体实施方式中进一步描述的概念的选择。本发明内容不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在被用于限制所要求保护的主题的范围。

在本文中所描述的示例中,一种计算系统包括图形渲染逻辑和图像处理逻辑。该图形渲染逻辑处理图形数据以使用被细分成多个拼接块的渲染空间来渲染图像。在这个意义上,图形渲染逻辑可以被认为是“基于拼接块”的渲染逻辑。图形渲染逻辑包括成本指示逻辑,其获得用于渲染空间的一个或多个拼接块的多个集合中的每个集合的成本指示。用于一个或多个拼接块的集合的成本指示提示了处理与一个或多个拼接块的集合相对应的经渲染的图像的区域的经渲染的图像值的成本。例如,拼接块的成本指示可以基于拼接块中的若干个原语。图像处理逻辑依据用于一个或多个拼接块的对应集合的成本指示来处理经渲染的图像的区域的经渲染的图像值。使用成本指示可以改善图像处理逻辑的处理。

提供了一种计算系统,其包括:

图形渲染逻辑,其被配置为处理图形数据以使用被细分成多个拼接块的渲染空间来渲染图像,该图形渲染逻辑包括成本指示逻辑,其被配置为获得用于渲染空间的一个或多个拼接块的多个集合中的每个集合的成本指示,其中一个或多个拼接块的集合的成本指示提示与处理与一个或多个拼接块的集合相对应的经渲染的图像的区域的经渲染的图像值相关联的成本;以及

图像处理逻辑,其被配置为处理用于经渲染的图像的区域的经渲染的图像值;

其中计算系统被配置为使得图像处理逻辑依据用于一个或多个拼接块的对应集合的成本指示来处理用于经渲染的图像的区域的经渲染的图像值。

更进一步地,提供了一种处理图形数据的计算机实现的方法,其包括:

处理图形数据以使用被细分成多个拼接块的渲染空间来渲染图像,所述处理图形数据包括:获得用于渲染空间的一个或多个拼接块的多个集合中的每个集合的成本指示,其中一个或多个拼接块的集合的成本指示提示与处理用于与一个或多个拼接块的集合相对应的经渲染的图像的区域的经渲染的图像值相关联的成本;以及

依据一个或多个拼接块的对应集合的成本指示来处理经渲染的图像的区域的经渲染的图像值,从而确定经处理的图像。

例如,计算系统可以被配置为使得图像处理逻辑通过控制以下各项中的一项或两项来依据用于一个或多个拼接块的对应集合的成本指示来处理用于经渲染的图像的区域的经渲染的图像值:图像处理逻辑处理经渲染的图像的区域的所依据的次序,以及图像处理逻辑处理经渲染的图像的区域所依据的质量水平。例如,该系统可以被配置为控制图像处理逻辑处理经渲染的图像的区域的次序,使得与具有相对高成本指示的一个或多个拼接块的集合相对应的经渲染的图像的区域在与具有相对低成本指示的一个或多个拼接块的集合相对应的经渲染的图像的区域之前,由图像处理逻辑处理。

图像处理逻辑可以被配置为:接收用于经渲染的图像的区域的经渲染的图像值和用于一个或多个拼接块的对应集合的成本指示;以及依据用于一个或多个拼接块的对应集合的成本指示来控制用于经渲染的图像的区域的经渲染的图像值的处理。例如,图像处理逻辑可以被配置为进一步依据与处理经渲染的图像的所有区域相关联的总成本的指示来控制用于经渲染的图像的区域的经渲染的图像值的处理。

图形渲染逻辑被配置为:确定图像处理逻辑依据用于一个或多个拼接块的对应集合的成本指示来处理经渲染的图像的区域的次序;以及使得经渲染的图像的区域以确定的次序被提供给图像处理逻辑。

图形渲染逻辑可以被配置为将经渲染的图像的区域传递给图像处理逻辑。

该计算系统还可以包括传输单元,其被配置为通过网络传送由图像处理逻辑处理的用于图像的经处理的图像值。计算系统还可以包括存储器,其被配置为存储由图像处理逻辑处理的用于图像的经处理的图像值。

在本文中所描述的示例中,图像处理逻辑包括视频编码逻辑,其被配置为依据用于一个或多个拼接块的对应集合的成本指示来对用于经渲染的图像的区域的经渲染的图像值进行编码。视频编码逻辑可以被配置为对经渲染的图像的经渲染的图像值的块进行编码。经渲染的图像值的块可以匹配经渲染的图像的区域。经渲染的图像值的块可能不匹配经渲染的图像的区域,其中经渲染的图像值的每个块与经渲染的图像的区域中的一个或多个区域重叠,并且在这种情况下,经渲染的图像值的块可以基于与经渲染的图像的所述一个或多个重叠区域相关联的一个或多个成本指示来由视频编码逻辑进行编码。

视频编码逻辑可以被配置为:按照用于一个或多个拼接块的对应集合的成本指示为经渲染的图像的经编码的区域分配数据的预算;以及按照相应的所分配的数据预算对经渲染的图像的区域进行编码。视频编码逻辑可以被配置为通过按照用于一个或多个拼接块的对应集合的成本指示在经渲染的图像的区域之间划分用于经编码的图像的总数据预算来为经渲染的图像的经编码的区域分配数据的预算。

视频编码逻辑可以被配置为:按照用于一个或多个拼接块的对应集合的成本指示来设置用于对经渲染的图像的区域进行编码的量化参数;以及按照相应量化参数对经渲染的图像的区域进行编码。

图像处理逻辑可以包括以下各项中的一项或多项:图像滤波逻辑,其被配置为依据一个或多个拼接块的对应集合的成本指示将滤波应用于经渲染的图像的区域的经渲染的图像值;以及运动估计逻辑,其被配置为依据一个或多个拼接块的对应集合的成本指示将运动估计应用于经渲染的图像的区域,其中图像表示帧序列的帧。

计算系统可以被配置为使得图像处理逻辑依据一个或多个拼接块的对应集合的成本指示来处理用于经渲染的图像的区域的经渲染的图像值,以便满足以下各项中的至少一项:对用于表示从图像处理逻辑输出的经处理的图像的经处理的区域中的每个经处理的区域的数据量的约束;对用来表示从图像处理逻辑输出的经处理的图像的数据量的约束;对从图像处理逻辑输出的经处理的图像的经处理的区域中的每个经处理的区域的定时的约束;以及对从图像处理逻辑输出的经处理的图像的定时的约束。

计算系统可以包括控制逻辑,其在图形渲染逻辑和图像处理逻辑中的一个或两个中实现,控制逻辑被配置为使得图像处理逻辑依据一个或多个拼接块的对应集合的成本指示来处理用于经渲染的图像的区域的经渲染的图像值。

用于一个或多个拼接块的集合的成本指示可以基于一个或多个因素,这些因素影响处理与一个或多个拼接块的集合相对应的用于经渲染的图像的区域的经渲染的图像值的成本。成本指示逻辑可以被配置为确定用于渲染空间的一个或多个拼接块的集合的成本指示。例如,成本指示逻辑可以被配置为基于以下因素中的一个或多个来确定用于渲染空间的拼接块的成本指示:(i)拼接块中的原语的数目;(ii)与拼接块中的原语相关联的对象类型;(iii)拼接块中的原语的拼接块覆盖面积;(iv)在渲染与拼接块相对应的图像区域期间将被应用于该拼接块中的原语的纹理;(v)用户输入;以及(vi)与处理先前帧中的对应图像区域相关联的成本,其中图像表示帧序列的帧。成本指示逻辑可以被配置为量化成本指示。

图形渲染逻辑可以包括几何结构处理逻辑和图像渲染逻辑,其中几何结构处理逻辑包括拼接单元,其被配置为为渲染空间的拼接块的生成指示哪些原语出现在拼接块中控制流,其中成本指示逻辑被实现为几何结构处理逻辑的一部分,并且其中图像渲染逻辑被配置为按照所生成的控制流在渲染空间的拼接块中渲染原语。图像渲染逻辑还可以被配置为修改成本指示。

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

可以提供一种集成电路制造系统,其包括:

非暂态计算机可读存储介质,其上存储有描述如本文中所描述的计算系统的计算机可读集成电路描述;

布局处理系统,其被配置为处理集成电路描述以生成实现计算系统的集成电路的电路布局描述;以及

集成电路生成系统,其被配置为根据电路布局描述来制造计算系统。

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

对于本领域技术人员而言,明显的是,上述特征可以适当组合,并且可以与本文中所描述的示例的各方面中的任一方面相组合。

附图说明

现在将参考附图对示例进行详细描述,其中

图1示出了计算系统;

图2是使用计算系统处理图形数据的方法的流程图;

图3a示出了渲染空间的拼接块集合;

图3b图示了渲染空间的拼接块集合的成本指示;

图4示出了计算系统的更广泛上下文;以及

图5示出了用于生成实现计算系统的集成电路的集成电路制造系统。

附图图示了各种示例。本领域技术人员应当领会,图中的元件边界(例如,框、框组或其他形状)表示边界的一个示例。可能在一些示例中,一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在整个附图中,共同的附图标记被用于指示相似的特征(如果适当的话)。

具体实施方式

本文中描述了计算系统,其中图形渲染逻辑渲染图像,该图像随后被图像处理逻辑(例如,视频编码逻辑)处理以将后处理(例如,视频编码)应用于经渲染的图像。在整个图像被渲染之后,后处理可以在图像上开始。备选地,当那些部分已经被渲染时,后处理也可以在图像的那些部分上开始,即使图像的其他部分的渲染还没有完成。可以在渲染过程期间收集关于经渲染的图像的复杂度的一些信息,其可以用于改善由图像处理逻辑应用于经渲染的图像的处理的性能(例如,效率、速度、质量等)。例如,基于拼接块的图形处理系统内在地涉及对正在被渲染的图像上的几何结构进行的两步操作:如下文更详细地描述的,第一操作是几何结构处理阶段,其中对于渲染空间的每个拼接块,与该拼接块的渲染相关的原语的指示被确定并且被存储(例如,在控制流中);而第二操作是渲染阶段,其中使用用于特定拼接块的控制流中的原语指示对拼接块进行渲染以标识哪些原语与该拼接块的渲染相关,使得可以获取用于渲染拼接块的相关数据。因此,几何结构处理阶段有机会在图像渲染完成的时间之前处理用于正在被渲染的图像的所有数据(在几何结构处理阶段)。这意味着几何结构处理阶段可以确定关于图像的信息(例如,图像的拼接块的成本指示),其对于经渲染的图像的后续图像处理可能是有用的。

在本文中作为几何结构处理阶段的一部分描述的示例中,成本指示逻辑确定用于一个或多个拼接块的每个集合的成本指示。例如,用于拼接块的成本指示可以是该拼接块中存在的原语的计数。用于拼接块的成本指示可以基于影响随后在图像处理逻辑中处理与拼接块相对应的经渲染的图像的区域的经渲染的图像值的成本的其他因素。成本指示提供与经渲染的图像的不同区域的处理复杂度有关的信息,并且因此可以被用于控制由图像处理逻辑对经渲染的图像的相应区域上执行的处理。也就是说,成本指示可以用作确定图像处理逻辑如何处理经渲染的图像的相应区域的因素。如下文更详细描述的,这个原理可以在不同示例中以不同的方式被应用。

作为示例,当视频序列的帧已经被渲染时,其可以被传递到视频编码器,其根据视频编码技术对帧进行编码。例如,可以向具有经渲染的图像数据的视频编码器提供用于一个或多个拼接块的集合的成本指示。经编码的视频数据通常是帧的压缩表示,其适合于传输(例如,到显示器以供在其上显示)和/或存储。作为视频编码的一部分,可以选择量化级别以供对帧的多个区域进行编码。用于不同拼接块的成本指示可以被用于帮助视频编码器选择合适的量化级别来对与不同拼接块相对应的经渲染的图像的区域进行编码。

图1示出了可以被用于渲染并且随后处理3d场景的图像的计算系统100的一些元件。计算系统100包括图形渲染逻辑102(例如,在图形处理单元(gpu)上实现的)、存储器104和图像处理逻辑106。图形渲染逻辑102包括几何结构处理逻辑108和图像渲染逻辑110。几何结构处理逻辑108包括成本指示逻辑112和拼接单元114。如对于本领域技术人员来说是明显的,几何结构处理逻辑108被配置为实现图形渲染过程的几何结构处理阶段,并且如此可以包括除了图1中示出的那些元件之外的其他元件,诸如变换单元和裁剪/剔除单元。图像渲染逻辑110包括隐藏表面移除(hsr)单元116,其被配置为对原语片段执行隐藏表面移除以移除被其他原语片段所隐藏的原语片段;以及纹理化/明暗处理单元118,其被配置为执行对渲染空间的拼接块的图形数据(例如,原语片段)执行纹理化和/或明暗处理。图形渲染逻辑102可以包括控制逻辑120,并且图像处理逻辑106可以包括控制逻辑122。

图形处理系统100被布置为使得在几何结构处理逻辑108处接收由应用提供的原语序列。参考图2所示的流程图对计算系统100的示例操作进行描述。

步骤s202和s204是由几何结构处理逻辑108实现的几何结构处理阶段的一部分。在步骤s202中,拼接单元114确定在图形处理系统100的渲染空间的拼接块中的每个拼接块中存在哪些原语。拼接单元108通过创建用于拼接块的控制流(或“显示列表”)来将原语指派给渲染空间的拼接块,其中用于拼接块的控制流包括在拼接块内存在的原语的指示。控制流和原语从拼接单元108输出并且被存储在存储器104中。

在步骤s204中,成本指示逻辑112确定用于渲染空间的拼接块的成本指示。如上文所描述的,用于拼接块的成本指示提示与在图像处理逻辑106中处理经渲染的图像的对应区域相关联的成本。例如,用于拼接块的成本指示可能提示在图像处理逻辑106中处理经渲染的图像的对应区域的成本。作为另一示例,用于拼接块的成本指示可能提示将由在图像处理逻辑106中处理经渲染的图像的对应区域而产生的成本(例如,数据量)。一般而言,如下文所描述的,可以确定用于一个或多个拼接块的集合的成本指示,即,可以确定用于拼接块的成本指示和/或可以确定用于拼接块的集合的成本指示。为了简单起见,本文中的一些说明指的是存在用于拼接块的成本指示,但是一般而言,应当理解,该说明可以扩展到具有拼接块的集合的成本指示。

成本指示在不同的示例中可能采取不同的形式。在一些示例中,用于拼接块的成本指示可以是当图像处理逻辑106处理与拼接块相对应的经渲染的图像的区域时将发生的处理成本的估计。处理成本可以是处理时间的长度、所执行的计算操作的数目、所消耗的处理能力、来自/去往存储器的读取/写入的数目、或处理经渲染的图像的区域的成本的任何其他合适的度量。然而,在一些示例中,用于拼接块的成本指示可能不是处理成本的直接估计。用于一个或多个拼接块的集合的成本指示可以基于一个或多个拼接块的集合的内容。一个或多个拼接块的集合的成本指示可以基于一个或多个因素,其影响处理与一个或多个拼接块的一个或多个集合相对应的经渲染的图像的一个或多个区域的成本。例如,成本指示可以是存在于拼接块中的若干个原语。拼接块中的原语的数目不是对与处理对应区域相关联的成本的直接估计(例如,由处理产生的处理时间、功耗、操作次数或数据量等),而是指示可能要与处理对应区域相关联的近似成本。例如,拼接块中的更大量原语可能提示在经渲染的图像的对应区域中存在更多图像细节,使得图像处理逻辑106对经渲染的图像的区域执行的处理可能导致更大的处理成本和/或可能产生不能被同样多地压缩的数据。这是因为拼接块中的更大量原语倾向于意味着拼接块中存在更多对象,其反过来倾向于意味着在对应的图像区域中存在更多的细节。在拼接单元114中计算拼接块中的原语的数目非常简单,因为它可以直接从用于拼接块的控制流中观察到,即,在拼接阶段结束时被包括在拼接块的控制流中的原语标识符的数目指示在该拼接块中的原语的数目。因此在该示例中,成本指示逻辑112不会为几何结构处理逻辑108增加显著的复杂度。

在广义上,用于拼接块的成本指示可以是提示与处理经渲染的图像的对应区域相关联的成本的任何参数,即,提供用于区分拼接块的可能成本的一些度量的参数。应当进一步指出,成本指示可能不会总是准确地反映处理经渲染的图像的对应区域的真实处理成本,但是如果与根本没有确定成本指示相比,它们计划提供用于经渲染的图像的区域的处理成本的更好指示。

在稍微复杂的示例中,成本指示逻辑320通过组合与存在于拼接块中的原语相关联的分数来确定用于拼接块的成本指示。与原语相关联的分数可以取决于原语是其一部分的对象的对象类型。例如,原语可以与诸如不透明、半透明或穿通(punchthrough)之类的对象类型相关联。对象类型可能影响图像复杂度,例如,穿通对象类型可以指示图像中比原语计数可能另外建议的不连续性更多的不连续性,使得当包括穿通对象时,图像复杂度可能增加。例如,当对图像中的平坦颜色区域进行编码时,视频编码器产生最紧凑的编码输出。具有表示透明、半透明或穿通几何结构的对象类型的原语更可能(与不透明原语相比较)创建非平坦颜色区域,其对于视频编码器来说处理更昂贵。

曲面细分(tessellation)是一种允许在渲染期间将图形数据项目(其可以被称为“补丁”)扩展成许多原语的技术。在曲面细分的情况下,其可以是在步骤s202中可以被分类为拼接块的补丁(而非扩展的原语)。与已经被分类为拼接块的标准三角形原语相比,补丁可能与更高成本相关联。曲面细分对于表示复杂的(例如,弯曲的)表面可以是有用的,但是可以导致大量的原语被渲染。曲面细分还可以被用于使得表面更精细或凸凹不平(bumpy)。用于拼接块的成本指示可以基于是否将曲面细分应用于补丁以在拼接块中形成原语。作为示例,如果拼接块包括要被执行曲面细分的补丁,则用于拼接块的成本指示可能更高,例如,拼接块的成本指示可以取决于由补丁的曲面细分产生的三角形的数目。

在其他示例中,可以以不同的方式确定成本指示,并且一般而言,可以使用任何成本,但是对于给定场景的特定成本的适当程度可以变化。例如,当确定拼接块的成本指示时,可以考虑拼接块中的原语的拼接块覆盖面积。原语的拼接块覆盖面积可以指示该拼接块内由该原语重叠的若干个采样位置,并且因此提供当在图像处理逻辑106中处理与该拼接块相对应的经渲染的图像的区域时将涉及的处理复杂度的一些指示。在一些示例中,用户可以提供用户输入以指导用于拼接块的成本指示的确定。在这个意义上,成本指示逻辑112可以经由输入接收用于拼接块的成本指示。例如,用户能够例如经由api扩展直接指定拼接块的成本指示,以允许开发者使用与特定拼接块相关联的工作负载的先验知识来明确地提供拼接块成本以确保高效的性能表现。

几何结构处理逻辑108可以访问与在渲染拼接块期间要由纹理化/明暗处理单元118应用于拼接块中的原语的纹理有关的信息。拼接块的成本指示可以取决于要被应用于拼接块中的原语的纹理。例如,如果要被应用于拼接块中的原语的纹理包括高图像细节级别,则图像处理逻辑106在拼接块上执行的图像处理的复杂度可以高于纹理具有相对较低的图像细节级别的情况。例如,成本指示逻辑112可以确定纹理的分数,该分数表示对应用了该纹理的经渲染的原语执行图像处理的复杂度。纹理相关分数可以与拼接块中的每个原语相关联,其中可以确定与拼接块中的原语相关联的总分数(例如,作为拼接块中的原语的个体分数的总和)并且被用于确定用于拼接块的成本指示。

在上文所描述的示例中,与当前渲染有关的因素可以被用于估计用于处理当前经渲染的图像的区域的可能的处理成本。和这些因素一样,成本指示逻辑112可以确定与先前渲染的拼接块(例如,紧邻着的在先渲染,例如,在先的帧)相对应的经渲染的图像的区域的处理成本(由图像处理逻辑106执行的处理的预测成本或实际成本),并且可以将这些用作确定当前渲染的拼接块的成本指示的因素。除非场景改变或内容突然改变,否则如果帧的序列的两个帧在序列中彼此靠近,例如,如果它们是连续帧,则它们可能相似。因此,与经渲染的图像的与先前帧中的特定拼接块相对应的区域相关联的成本提供了与处理当前帧中的对应区域相关联的成本的良好指示。在使用先前经渲染的图像的实际成本的情况下,实际成本的指示可以从图像处理逻辑106被反馈到成本指示逻辑112。

为了总结上文所描述的示例中的一些示例,成本指示逻辑112可以基于以下因素中的一个或多个因素来确定用于渲染空间的拼接块的成本指示:(i)拼接块中的原语的数量;(ii)与拼接块中的原语相关联的对象类型;(iii)拼接块中的原语的拼接块覆盖面积;(iv)在渲染与拼接块相对应的图像区域期间要被应用于该拼接块中的原语的纹理;(v)用户输入;以及(vi)与先前帧中的对应图像区域相关联的成本,其中该图像表示帧序列的帧。然而,显而易见的是,在其他示例中可以使用其他因素来确定成本指示。成本指示逻辑112可以例如根据任何合适的组合基于多个因素来确定用于拼接块的成本指示,其可能被加权或者可能不被加权,以支持一个因素而非另一因素。

如上文所描述的,可以确定用于一个或多个拼接块的每个集合的成本指示。可能是这样的情况,即,一个或多个拼接块的每个集合包括相同数目的拼接块。在一些示例中,一个或多个拼接块的集合各自包括单个拼接块。在其他示例中,一个或多个拼接块的集合各自包括多个拼接块。拼接块的集合可以是渲染空间的拼接块(例如,连续拼接块)的块(block)。可以选择一个或多个拼接块的集合的大小和形状以匹配可以由图像处理逻辑106处理的经渲染的图像的对应区域。如果图像处理逻辑106被配置为一次处理经渲染的图像的大区域,那么与图像处理逻辑106被配置为一次处理经渲染的图像的较小区域相比,拼接块的集合可以对应地包括更多的拼接块。

在一些示例中,由图形渲染逻辑102处理的拼接块的大小与由图像处理逻辑106处理的块的大小不匹配。作为示例,图形渲染逻辑102中的每个拼接块可以表示32×32像素块,而视频编码器可以编码8×8像素块。在该示例中,经渲染的图像的32×32像素区域可以与针对对应拼接块确定的成本指示相关联,并且成本指示可以用于该区域内的所有8×8像素块,以便相应地控制在图像处理逻辑106中处理经渲染的图像。因此,图形渲染逻辑102的拼接块大小与图像处理逻辑106使用的块大小之间的不匹配不会引起问题。在上文所提及的示例中,拼接块大小是图像处理逻辑106的块大小的整数倍,因此成本指示与编码器块的关联是简单的。然而,在其他示例中,拼接块大小可能不是图像处理逻辑106的块大小的整数倍。可以实现从用于拼接块的成本指示确定用于块的成本指示的其他方式,例如,可以组合用于多于一个块的成本指示来确定用于要由图像处理逻辑106处理的块的成本指示。例如,可以通过滤波、平滑或平均用于多个拼接块的成本指示来确定用于要由图像处理逻辑106处理的块的成本指示。例如,如果块与多于一个拼接块重叠,则可以通过确定重叠的拼接块的成本指示的平均值来确定块的成本指示。平均值可以是加权平均值,其中例如,权重基于与不同拼接块重叠的块的像素的数目来确定。一般而言,如果由图像处理逻辑106使用的块与图形渲染逻辑102的拼接块不匹配(并且因此不与其中成本指示相关联的经渲染的图像的区域相匹配),则经渲染的图像值的每个块与经渲染的图像的区域中的一个或多个区域重叠,并且经渲染的图像值的块基于与经渲染的图像的一个或多个重叠区域相关联的一个或多个成本指示来由图像处理逻辑106处理(例如,由视频编码逻辑编码)。

成本指示逻辑112可以量化成本指示。特别地,经量化的成本指示可以被量化以由若干个比特(例如,比特数量在1到8的范围内)来表示。在极端示例中,量化的成本指示每个都具有单个比特,使得它们用作标志来指示拼接块是高成本拼接块还是低成本拼接块。即使当成本指示被量化到这种程度时,成本指示的使用对于控制与拼接块相对应的经渲染的图像的区域的处理也可以是有用的,因为它倾向于避免高成本区域意外地被调度为在图像处理逻辑106处处理图像接近结束时进行处理,其可能不利地影响经处理的图像的质量。对成本指示的量化减少了用于存储成本指示的数据量,并且可以通过限制成本指示可以采用的不同值的数目来简化图像处理逻辑106处理图像的经渲染的区域的方式。

图3a和图3b图示了针对拼接块的块确定的成本指示的示例。图3a示出了具有896×512个像素的渲染空间302。每个拼接块是32×32像素块,使得如图3a所示,渲染空间302具有28列和16行个拼接块。如图3a中的粗线所示,拼接块被分组在一起成为4×4集合,其中每个4×4拼接块集合与要由图像处理逻辑106处理的经渲染的图像的区域相对应。

在该示例中,成本指示逻辑112通过确定成本指示或通过经由如上文所描述的api接收成本指示来获得用于渲染空间中的拼接块中的每个拼接块的成本指示。然后,基于相应集合内的拼接块的成本指示来确定用于4×4拼接块集合中的每个4×4拼接块集合的成本指示。为了给出一些示例,成本指示逻辑可以通过确定以下各项来确定用于拼接块集合的成本指示:(i)该集合内的拼接块的成本指示的平均值,(ii)该集合内的拼接块的成本指示的总和,(iii)该集合内的拼接块的成本指示的最大值,或(iv)该集合内具有高于阈值的成本指示的拼接块数目。在其他示例中,集合内的拼接块的成本指示可以以其他方式组合以整体确定用于该集合的成本指示。更进一步地,在一些示例中,确定用于拼接块集合的成本指示,而不首先确定用于集合内的个体拼接块的个体成本估计。

图3b示出了用于图3a中所示的4×4拼接块集合的成本指示。在该示例中,确定用于拼接块中的每个拼接块的成本指示,然后通过组合该拼接块集合内的个体拼接块的成本指示(例如,通过求取个体成本指示的总和)然后将成本指示向下量化为4-比特值来确定4×4拼接块集合的成本指示。4-比特值在0到15的范围内。可以看出,在渲染空间302的右下方附近存在处理成本较高的区域,例如,因为这个区域中的图形内容特别精细(例如,在该区域中有大量的原语)。相比之下,渲染空间302的左上区域处理成本并不高,例如,因为这个区域的图形数据简单,例如,这个区域可能表示在场景中没有多少细节的简单背景。

所确定的成本指示可以被存储在存储器104中。例如,拼接单元114可以包括用于拼接块的控制流中所确定的成本指示以供存储在存储器104中。在一些示例中,拼接单元114可以包括在尾指针高速缓存中的所确定的成本指示,该尾指针高速缓存包括指向用于相应拼接块的原语id列表末端的指针。在拼接单元114中处理用于渲染的几何结构结束时,指针可以被包括在用于渲染空间的拼接块的尾指针高速缓存中,并且此时成本指示逻辑112已经确定了用于拼接块的成本指示,所以这是个在控制流中的合适位置添加成本指示的好机会,而不必显著更改拼接单元114的操作。在几何结构处理阶段结束时,用于拼接块(包括成本指示)的控制流被存储在存储器104中。在其他示例中,拼接单元114可以包括控制流的区域报头中的所确定的成本指示。成本指示的确切放置位置在不同的示例中可能不同,并且这是基于实现的选择。

步骤s206表示渲染阶段,其中图像渲染逻辑110渲染用于渲染空间的拼接块的图形数据以生成渲染的值,例如,经渲染的图像值。图像渲染逻辑110可以被配置为实现任何合适渲染技术,诸如光栅化或光线追踪以执行渲染。为了渲染拼接块,从存储器104中获取用于拼接块的控制流,并且从存储器104获取与该拼接块相关的原语(如由用于拼接块的控制流所指示的)。例如,图像渲染逻辑110可以根据延迟渲染技术来实现光栅化,使得由hsr单元116执行隐藏表面移除,从而移除隐藏在场景中的原语的片段,并且纹理和/或明暗处理通过纹理化/明暗处理单元118被应用于剩余的原语片段,从而形成经渲染的图像值。执行隐藏表面移除和纹理/明暗处理的方法在本领域中是已知的。术语“片段”是指为了渲染图像的像素而被处理的在采样点处的原语的样本。在一些示例中,可以存在采样位置到像素的一对一映射。在其他示例中,可以存在比像素更多的采样位置,并且这种过采样可以允许对像素值进行更高质量的渲染,例如通过促进可以被应用于用于多个片段的渲染像素值中的每个像素值的抗锯齿和其他滤波。对通过hsr阶段的片段执行的纹理和/或明暗处理确定了经渲染的图像的像素颜色值。如本领域中已知的,可以在图像渲染逻辑110处从存储器104接收纹理数据,以便将纹理应用于原语片段。可以执行明暗处理器程序以将明暗处理应用于原语片段。纹理/明暗处理可以包括:如本领域中已知的,对原语片段应用进一步处理(例如,α混合和其他过程)以便确定图像的经渲染的像素值。图像渲染逻辑110处理拼接块中的每个拼接块中的原语。一个或多个拼接块的经渲染的图像值可以从图形渲染逻辑102输出并且提供给图像处理逻辑106。

因为在可能的情况下(例如,对于不透明的原语片段),图像渲染逻辑110被配置为在将纹理化/明暗处理应用于原语片段之前,执行对原语片段的hsr处理,上文所描述的图形渲染逻辑102实现延迟渲染系统。对于一些原语片段(例如,半透明片段、穿通片段或其深度值可以通过明暗处理器或纹理化修改的片段),在纹理化和/或明暗处理已经被应用于原语片段之前,原语片段的可见性不能被最终地确定。因此,在隐藏表面移除完成之前,这些片段被传递到纹理化/明暗处理单元118,然后纹理化和/或明暗处理的结果(其最终地定义片段的可见性)被传回到hsr单元116,以使可以完成针对那些片段的隐藏表面移除。图像渲染逻辑110通过其来处理原语片段的机制的细节会在不同的实施例中不同,并且超出了本公开的范围,这些原语片段的可见性在已经被纹理化和/或明暗处理之前,不能被确定(例如,半透明片段、穿通片段或其深度值可以由明暗处理器或纹理化被修改的片段)。其他图形处理系统被配置为在对那些原语片段,甚至对于不透明的原语片段执行hsr之前对原语片段执行纹理化和/或明暗处理,在这样的意义上,不是延迟渲染系统。延迟渲染系统避免了在对由隐藏表面移除过程移除的原语片段中的至少一些原语片段(例如,不透明原语片段)应用纹理化和/或明暗处理中涉及的处理。

在步骤s208中,经渲染的图像的图像值从图形渲染逻辑102传递到图像处理逻辑106。图像值可以经由图1中未示出的缓冲器(或经由存储器104或另一存储器)在图形渲染逻辑102和图像处理逻辑106之间进行传递。如上文所提及的,当图像渲染逻辑102已经渲染整个图像时,图像的经渲染的图像值可以被提供给图像处理逻辑106。备选地,用于经渲染的图像的一个或多个区域的集合的经渲染的图像值可以在已经对那些区域进行了渲染时,被提供给图像处理逻辑106,而不用在将经渲染的图像值中的任一经渲染的图像值传递到图像处理逻辑106之前,等待整个图像被渲染。成本指示也可以从图形渲染逻辑102传递到图像处理逻辑106。

在步骤s210中,图像处理逻辑106依据用于一个或多个拼接块的对应集合的成本指示来处理用于经渲染的图像的区域的经渲染的图像值,从而确定经处理的图像。图像处理逻辑106所执行的处理在不同的示例中可以不同,如下文更详细地解释的。

计算系统100被配置为使图像处理逻辑106依据用于一个或多个拼接块的对应集合的成本指示来处理用于经渲染的图像的区域的经渲染的图像值。例如,可以在图形渲染逻辑和图像处理逻辑中的一个或两个中实现控制逻辑(如图1中的控制逻辑120和122所示),其中控制逻辑可以被配置为使得图像处理逻辑106依据用于一个或多个拼接块的对应集合的成本指示来处理用于经渲染的图像的区域的经渲染的图像值。在一些示例中,拼接块的成本指示可以被提供给图像处理逻辑106。在这些示例中,图像处理逻辑106可以接收用于经渲染的图像的区域的经渲染的图像值和用于一个或多个拼接块的对应集合的成本指示,并且可以依据用于一个或多个拼接块的对应集合的成本指示来控制经渲染的图像的区域的经渲染的图像值的处理。图像处理逻辑106可以进一步依据与处理经渲染的图像的所有区域相关联的总成本的指示来控制经渲染的图像的区域的经渲染的图像值的处理。作为示例,图像处理逻辑106可以具有可以被分配以处理图像的总处理预算或者用于经处理的图像的总比特预算,并且这些预算可以基于由与相应区域相关联的成本指示所指示的总成本的比例来被分配给图像的区域。例如,在图像处理逻辑106正在执行视频编码的情况下,了解经编码的图像的总比特预算以及用于图像的区域的成本指示(其指示可能表示图像的经编码的区域的经编码的数据的量)允许图像处理逻辑106提前计划,以试图跨经编码的图像来适当地分发可用比特。

然而,在其他示例中,拼接块的成本指示没有被提供给图像处理逻辑106,而是在图形渲染逻辑102处被使用(例如,由控制逻辑120)以确定经渲染的图像的区域被提供给图像处理逻辑106以在其上进行处理的次序。换句话说,图形渲染逻辑102可以依据用于一个或多个拼接块的对应集合的成本指示来确定经渲染的图像的区域要被图像处理逻辑106处理的次序,并且图形渲染逻辑102可以使得经渲染的图像的区域以经确定的次序被提供给图像处理逻辑106。在一些示例中,帧的经渲染的拼接块从图形渲染逻辑102直接流式传输到图像处理逻辑106中,而无需将整个帧存储在存储器中。当在拼接阶段(即,在几何结构处理逻辑108中)确定成本时,可以控制图像渲染逻辑110渲染拼接块的次序,从而控制拼接块被发送到图像渲染逻辑110并且被该图像渲染逻辑110编码的次序。选择在图像渲染逻辑110中以任何次序渲染拼接块可能是简单的,但是通常图像处理逻辑106(例如,视频编码器)不允许完全自由选择处理(例如,编码)图像的块的次序。例如,一些图像处理逻辑块可能需要以光栅次序提交拼接块,而其他图像处理逻辑块可以允许在被依据来提交拼接块的某些固定模式中进行选择,或者可以具有各种其他约束。

更宽泛地说,其中图像处理逻辑106处理经渲染的图像的区域的次序可以依据一个或多个拼接块的对应集合的成本指示来控制。例如,可以控制图像处理逻辑106来在经渲染的图像的较低成本区域之前处理经渲染的图像的高成本区域,并且在一些示例中,可以在图像的较低成本区域之前渲染高成本区域。换句话说,计算系统100可以控制图像处理逻辑106处理经渲染的图像的区域的次序,使得与具有相对高成本指示的一个或多个拼接块的集合相对应的经渲染的图像的区域在与具有相对低成本指示的一个或多个拼接块的集合相对应的经渲染的图像的区域之前由图像处理逻辑单元106进行处理。这可以避免图像的高成本区域在渲染临近结束时由图像处理逻辑106进行处理的情形(例如,在图像处理是视频编码的示例中,当对于该区域的良好编码可能没有剩余足够比特时)。

由图像处理逻辑106处理经渲染的图像的区域的质量水平可以依据用于一个或多个拼接块的对应集合的成本指示来控制。例如,如果与具有相对低图像细节级别的图像的区域相比,具有高图像细节级别的图像的区域以更高质量水平进行处理,则经处理的图像的感知质量可以更高。例如,如果图像处理逻辑106是用于对渲染的图像进行编码的视频编码器,那么与具有较少图像细节的图像的区域相比,具有更多图像细节的图像的区域可以被提供有用于经编码的数据的更大的比特预算。

如上文所提及的,图像处理逻辑106可以包括视频编码逻辑,其被配置为依据用于一个或多个拼接块的对应集合的成本指示来对用于经渲染的图像的区域的经渲染的图像值进行编码。

如上文所描述的,图像的编码可能涉及图像的一些压缩,并且压缩可能是无损或有损的。可能会出现经渲染的图像数据中的冗余,并且视频编码器可以使用量化参数(qp)来调节多少细节被保存。当编码器使用的qp非常小时,几乎图像中的所有细节都被保留下来。当编码器使用的qp增加时,图像中的一些细节被聚集,以使经编码的图像的比特率下降,但是以失真的一些增加和经编码的图像质量的一些损失为代价。对于编码器可能有益的是,跨图像以及当图像是包括多个帧的视频流内的帧时跨视频流的不同帧以恒定(或接近恒定)比特率提供经编码的图像。速率控制器可以被用于按照目标比特率来调整编码器所使用的qp。速率控制器可以接收来自视频编码器的反馈,以指示已经通过对先前图像和/或当前正在被编码的图像的先前部分进行编码而生成的比特的数目。速率控制器可以使用该反馈来确定如何变化qp以编码后续图像和/或当前正在被编码的图像的后续部分。如果速率控制器不了解经渲染的图像的不同区域中的相对图像细节,则可能难以最佳地(或者甚至近乎最佳地)控制被视频编码器用来对图像的各部分进行编码的qp(例如,当图像被实时编码时)。控制由视频编码器使用的qp的目的可以是维持经编码的数据的比特率恒定。备选地,控制由视频编码器使用的qp的目的可以是以短期比特率变化为代价来优化经编码的图像的质量。提供图像细节的度量的成本指示可以帮助实现这两个目的。

在本文中所描述的示例中,计算系统100具有如由成本指示所指示的经渲染的图像的不同区域中的相对图像细节的一些知识,并且如此可以以更优化的方式(与当不提供成本指示时相比较)来控制视频编码器。例如,如果高成本图像区域被提供给视频编码器以在低成本图像区域之前被处理(如果这在正在被使用的编码方法中可能的话),则视频编码器将避免在图像编码临近结束时视频编码器意外遇到图像的高度精细的区域的情形。这允许视频编码器使用合适的qp来根据图像的相应区域中的细节级别对图像的不同区域进行编码,而不会超出用于经编码的图像的可用比特预算。换句话说,视频编码逻辑可以依据用于一个或多个拼接块的对应集合的成本指示来设置用于对经渲染的图像的区域进行编码的量化参数,并且依据相应的量化参数来对经渲染的图像的区域进行编码。

在另一示例中,可以使用成本指示,使得高成本区域被遍布在图像处理逻辑106对图像的处理中。这可以帮助平滑图像处理逻辑106上的处理负载。例如,图像处理逻辑16处理区域的次序可以被控制以交错高成本区域和低成本区域的处理。

在成本指示被提供给视频编码逻辑106的其他示例中,视频编码逻辑可以依据用于一个或多个拼接块的对应集合的成本指示来为经渲染的图像的经编码的区域分配数据的预算,并且依据相应分配的数据预算来对经渲染的图像的区域进行编码。例如,如果视频编码逻辑被提供有(或可以确定)用于经渲染的图像的拼接块的成本指示的总数的指示以及个体成本指示,则视频编码逻辑可以通过依据用于一个或多个拼接块的对应集合的成本指示在经渲染的图像的区域之中划分用于经编码的图像的总数据预算来为经渲染的图像的经编码的区域分配数据预算。例如,依据拼接块的成本指示与用于经渲染的图像中的拼接块的成本指示的总和的比例,可以为与拼接块相对应的区域提供总数据预算的一比例部分。

在步骤s212中,经处理的图像从图像处理逻辑106输出,并且可以以任何合适的方式使用。这个输出在图1中被示出为“经渲染和处理的图像值”。例如,计算系统100还可以包括传输单元(图1中未示出),其被配置为通过网络(例如,因特网或本地网络,诸如通过wifi连接或蓝牙连接)传送表示由图像处理逻辑106处理的图像的经处理的图像值。数据传送方法在本领域中是已知的,并且传输的细节超出了本公开的范围。

经处理的图像可以被提供给显示器以供在其上显示。例如,图形渲染逻辑102可以实时渲染图像序列,并且图像可以用视频编码逻辑106进行编码,然后被传送到显示器并且在其上进行实时显示。

附加地或备选地,从图像处理逻辑106输出的经处理的图像值可以被存储在例如存储器中,例如,计算系统100的存储器104中。

在上文所描述的示例中,图像处理逻辑106包括视频编码逻辑。在其他示例中,图像处理逻辑106可以依据成本指示来对经渲染的图像的经渲染的图像值执行其他类型的后处理。成本指示提供经渲染的图像的不同区域中的细节级别的指示。例如,图像处理逻辑106可以包括图像滤波逻辑,其被配置为依据用于一个或多个拼接块的对应集合的成本指示来对用于经渲染的图像的区域的经渲染的图像值应用滤波。例如,可以基于成本指示来设置图像滤波逻辑所使用的滤波器内核大小。对于图像的高度精细区域,较小的滤波器内核可能更适合于滤波处理,而对于图像的较不精细区域,较大的滤波器内核可能更适合于滤波处理。这是因为如果使用较大的滤波器内核(例如,相对于图像中的典型细节特征尺寸的“大”)对具有许多精细细节的图像区域(例如,表示树叶的图像区域)进行滤波,精细细节由于滤波过程而可能会丢失或模糊;而如果使用小滤波器内核(例如,相对于图像中的典型细节特征尺寸的“小”)对该图像区域进行滤波,则可以保持精细细节。相反,因为粗略细节可能通过如下滤波过程被保持,所以使用大滤波器内核(例如,相对于图像中的典型细节特征尺寸的“大”)对仅具有粗略细节的图像区域(例如,表示晴空的图像区域)进行滤波将是可接受的,并且与使用较小的滤波器内核相比较,使用大滤波器内核可以提供更好的噪声降低。可以在编码图像之前执行图像处理(例如,滤波),其中滤波过程可以从没有太多细节的区域移除细节,从而改善编码过程中对这些区域的压缩。

在另一示例中,图像处理逻辑106可以包括运动估计逻辑,其被配置为依据对应拼接块的成本指示来对用于经渲染的图像的区域的经渲染的图像值应用运动估计。例如,图像可以表示帧的视频序列内的帧,并且要估计的运动是视频序列的帧之间的内容的运动。成本指示对于提高运动估计处理的效率可能是有用的。例如,基于诸如绝对差之和(sad)之类的像素差异度量的运动估计器对高细节图像内容的轻微错位、旋转和滤波敏感。因而,在高度细节的区域(如高成本指示所指示的),可能需要放宽在运动估计中使用的匹配准则,或者将更多的计算工作放在寻找更好的运动矢量上(例如,通过使用更昂贵但鲁棒的运动估计器)。作为另一示例,成本指示可以用作运动估计处理中的候选搜索位置的指导,例如,如果运动估计器正在一个帧中寻找高细节区域,则首先检查其他帧中的高细节区域(其可能导致更有效的运动估计处理)可能是值得的,或者相反,低细节区域(如由低成本指示所指示的)可以被排除在搜索之外(这可能导致改善的搜索,由于要考虑更好的候选运动)。因为成本指示可能不能正确地指示区域中的细节级别,所以从运动搜索中排除区域可能有风险,但是如果成本指示被保守地确定,那么如果有疑问,则区域被指定为高成本,所以可能示出正确运动的区域被排除的风险低。

图像处理逻辑106可以包括多于一种类型的后处理逻辑,诸如视频编码逻辑和/或运动估计逻辑和/或滤波逻辑,其被配置为依据成本指示来处理经渲染的图像值。

对于计算系统100从图像处理逻辑106输出经渲染和处理的图像值的方式可能存在约束。例如,如果经渲染和处理的图像值要在显示器上实时显示,则可能存在定时约束,在该定时约束下,从计算系统100输出图像或图像的部分。更进一步地,如果经渲染和处理的图像值要通过网络传送或存储在存储器中,则可能存在对用于表示从计算系统100输出的图像或图像的部分的数据量的约束。例如,计算系统100可以被配置为使得图像处理逻辑106依据用于一个或多个拼接块的对应集合的成本指示来处理经渲染的图像值的区域的经渲染的图像值,以便满足至少一个约束。该至少一个约束可以包括以下各项中的一项或多项:(i)用于表示从图像处理逻辑106输出的经处理的图像的经处理的区域中的每个经处理的区域的数据量的约束;(ii)用于表示从图像处理逻辑电路106输出的经处理的图像的数据量的约束;(iii)对从图像处理逻辑106输出经处理的图像的经处理的区域中的每个经处理的区域的定时的约束;以及(iv)对从图像处理逻辑电路106输出经处理的图像的定时的约束。

在上文所描述的示例中,用于一个或多个拼接块的集合的成本指示被用于改善对经渲染的图像值应用后处理的过程。然而,在其他示例中,成本指示可以用于其他目的。例如,用于一个或多个拼接块的集合的成本指示可以被用于调度一个或多个拼接块的集合以供由图像渲染逻辑110渲染。更一般地,用于一个或多个拼接块的集合的成本指示可以被用于调度在一个或多个处理核心上的一个或多个拼接块的集合的处理。由一个或多个处理核心执行的处理可以是由图像渲染逻辑110应用的渲染,或者可以是诸如如上文所描述的示例中的视频编码之类的其他处理。调度可以尝试避免在渲染临近结束时才开始处理昂贵的拼接块。在一些示例中,针对特定拼接块的调度决定不更改该特定拼接块随后被渲染的方式。

在其他示例中,成本指示可以被用于更改不同拼接块被处理的方式,例如,拼接块被渲染的方式,或者更改与不同拼接块相对应的经渲染的图像的图像区域被处理的方式。例如,高成本指示可以指示拼接块中存在许多细节(例如,当成本指示表示拼接块中的原语的数目时),在这种情况下,这些拼接块可以以更高细节级别被渲染(例如,在光栅化技术中每个像素可以处理更多个采样位置,或者在光线追踪技术中每个像素可以处理更多光线)。备选地,如果对处理拼接块的定时存在实时约束,则具有大量细节(如由成本指示所指示的)的拼接块可以用较低的细节级别来处理,以确保它们及时被处理以供满足实时约束。例如,可以根据显示器的光栅扫描技术来渲染和直接显示图像。在该示例中,每个拼接块可能具有时限,在该时限之前,它必须被渲染,以便在显示器的光栅扫描继续进行时进行实时显示。如果拼接块在其时限之前未被渲染,则可能无法在当前帧中显示该拼接块,其可能导致显示的图像中出现断续效果(stutteringeffect)。成本指示提供关于对拼接块进行多长时间的处理的某个指示,并且如此可以被用于变化渲染拼接块的细节级别,目的在于确保每个拼接块在其时限之前被渲染以用于向显示器提供经渲染的拼接块。

在一些示例中,用于调度一个或多个拼接块的集合以用于由图像渲染逻辑110渲染的成本指示可以不同于被传递给图像处理逻辑106以用于如上文所描述的使用的成本指示。通常,在图像渲染逻辑110和图像处理逻辑106中使用相同或相似的成本指示,但并不总是如此。例如,使用的纹理中存在的图像细节是视频编码器的成本的重要指示符(与已经用较不精细的纹理进行纹理化的图像区域相比,已经用高度精细的纹理进行纹理化的图像区域的编码更昂贵),但是纹理中存在的图像细节表示了用于图形渲染逻辑102的可忽略的成本差异(纹理提取的复杂度与返回的纹理数据的颜色不是很相关)。

在上文所描述的示例中,成本指示由几何结构处理逻辑112中的成本指示逻辑确定。在其他示例中,成本指示可以在流水线中的不同点处确定。例如,成本指示可以由被包括作为图像渲染逻辑的一部分的成本指示逻辑来确定。由于与几何结构处理逻辑相比,图像渲染逻辑具有更准确的关于经渲染的图像的复杂度的知识,所以这可以允许成本指示更接近地反映经渲染的图像的复杂度。用于经渲染的图像的区域的成本指示甚至可以在该图像区域已被渲染之后被确定。

更进一步地,在一些示例中,图像渲染逻辑110可以修改由几何结构处理逻辑108确定的成本指示,例如,基于被应用于经渲染的图像的区域的纹理信息。这样,可以在几何结构处理逻辑108中确定拼接块成本估计,并且随后在拼接块已经被图像渲染逻辑110处理之后进行修改。在拼接块已经被处理之后,可能存在关于编码块的实际成本的大量信息(例如,图形渲染逻辑102可以具有每个拼接块中有多少个多边形的更好估计,例如,拼接块中有多少个原语最终可见(即,不隐藏),和/或在其中存在诸如帧缓冲器压缩之类的一些后处理的设置中,压缩本身可以提供经渲染的图像的区域中有多少细节的良好指导)。因此,在成本指示被提供给图像处理逻辑106之前,几何结构处理逻辑108之后的流水线的各部分可以被用于修改或支配在几何结构处理逻辑108中确定的成本指示。例如,在拼接块被渲染时图像渲染逻辑110能够确定拼接块中的单个原语最终遮挡拼接块中的所有其他原语,并且在这种情况下,可能有益的是,使用反映仅一个原语在拼接块中可见的成本指示,而非使用由几何结构处理逻辑108确定的成本指示,其可能指示在拼接块中存在许多原语(由于几何结构处理逻辑108可能不知道拼接块中的除一个原语外所有原语都被隐藏)。

在几何结构处理逻辑108中确定成本指示的益处在于,这很容易实现(例如,通过对被包括在用于拼接块的控制流中的原语标识符的数目进行计数),并且例如,在由图像处理逻辑电路106要实时处理经渲染的图像的情况下(例如,用于传输到显示器以使经渲染的图像可以被实时显示给用户),这不会在系统中增加显著的等待时间。

更进一步地,应当指出,提供给图像处理逻辑106的成本指示可以是按照其来控制图像处理逻辑106的操作的若干条信息中的一条信息。

一般而言,被配置为使用被细分成多个拼接块的渲染空间来处理图形数据的图形处理单元可以包括:一个或多个处理核心,其被配置为处理图形数据;成本指示逻辑,其被配置为获得用于渲染空间的一个或多个拼接块的多个集合中的每个集合的成本指示,其中用于一个或多个拼接块的集合的成本指示提示处理一个或多个拼接块的集合的成本;以及调度逻辑,其被配置为依据成本指示来调度一个或多个拼接块的集合以在一个或多个处理核心上进行处理。

图4示出了其中可以实现本文中所描述的计算系统的更宽泛的计算机系统。计算机系统包括cpu402、gpu404(其可以包括图形渲染逻辑102)、存储器406、图像处理单元408(其可以包括图像处理逻辑106)以及其他设备410,诸如显示器412、扬声器414和相机416。计算机系统的部件可以经由通信总线418彼此通信。存储器420(与存储器104相对应)被实现为存储器406的一部分。

图1的计算系统被示出为包括若干个功能块。这仅仅是示意性的,并不旨在定义这些实体的不同逻辑元件之间的严格划分。每个功能块可以以任何合适的方式被提供。应当理解,本文中被描述为由计算系统形成的介值不需要由计算系统在任何时刻物理地生成,并且可以仅仅表示逻辑值,其方便地描述由计算系统在其输入和输出之间所执行的处理。

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

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

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

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

因此,可以提供一种在集成电路制造系统处制造如本文中所描述的计算系统的方法。更进一步地,可以提供一种集成电路定义数据集,其当在集成电路制造系统中被处理时,使得制造计算系统的方法被执行。

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

现在将参照图5对在集成电路制造系统处处理集成电路定义数据集以便配置该系统以制造计算系统的示例进行描述。

图5示出了包括布局处理系统504和集成电路生成系统506的集成电路(ic)制造系统502的示例。ic制造系统502被配置为接收ic定义数据集(例如,定义如在本文中的示例中的任一示例中所描述的计算系统),处理ic定义数据集,并且根据ic定义数据集生成ic(例如,其实现如本文中的示例中的任一示例中所描述的计算系统)。ic定义数据集的处理将ic制造系统502配置为制造实现如本文中的示例中的任一示例中所描述的计算系统的集成电路。

布局处理系统504被配置为接收并且处理ic定义数据集以确定电路布局。从ic定义数据集确定电路布局的方法在本领域中是已知的,并且例如,可以涉及合成rtl代码以确定要生成的电路的门级表示,例如利用逻辑部件(例如,nand部件、nor部件、and部件、or部件、mux部件以及flip-flop部件)来表示。电路布局可以通过确定逻辑部件的位置信息从电路的门级表示来确定。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统504已经确定电路布局时,其可以将电路布局定义输出到ic生成系统506。电路布局定义可以是例如电路布局描述。

如现有技术中已知的,ic生成系统506根据电路布局定义生成ic。例如,ic生成系统506可以实现半导体设备制造工艺来生成ic,其可以涉及光刻和化学处理步骤的多步骤顺序,在这些步骤期间,电子电路逐渐形成在由半导体材料制成的晶片上。电路布局定义可以呈掩模的形式,其可以在光刻工艺中用于根据电路定义生成ic。备选地,提供给ic生成系统506的电路布局定义可以呈现为ic生成系统506可以使用的计算机可读代码的形式,以形成适用于生成ic的掩模。

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

在其他示例中,在集成电路制造系统处处理集成电路定义数据集可以将系统配置为制造计算系统,而不具有被处理以便确定电路布局的ic定义数据集。比如,集成电路定义数据集可以定义可重新配置的处理器(诸如fpga)的配置,并且该数据集的处理可以将ic制造系统配置为生成具有该定义的配置的可重新配置的处理器(例如,通过将配置数据加载到fpga)。

在一些实施例中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可以使得集成电路制造系统生成如本文中所描述的设备。例如,以集成电路制造定义数据集以上文关于图5所描述的方式来配置集成电路制造系统可以使得如本文中所描述的设备被制造。

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

与已知实现方式相比较,在本申请中阐述的概念在设备、装置、模块和/或系统(以及在本文中所实现的方法中)中的实现方式可以引起性能改进。性能改进可以包括以下各项中的一项或多项:计算性能增加、等待时间减少、吞吐量增加、和/或功耗减少。在制造这样的设备、装置、模块和(例如,集成电路中的)系统期间,性能改进与物理实现方式之间可以有所权衡,从而改进了制造方法。例如,性能改进与布局面积之间可以有所权衡,从而与已知实现方式的性能匹配,但是使用更少的硅。这可以例如通过以串行化方式重用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,可以导致设备、装置、模块和系统的物理实现方式的改善(例如,硅面积减少)的本申请中陈述的概念可以与改善的性能交换。这可以通过例如在预先定义的区域预算内制造模块的多个实例来完成。

申请人在此独立地公开了本文中所描述的每个单独特征以及两个或更多个这种特征的任意组合,公开的程度使得鉴于本领域技术人员的公知常识,能够基于作为整体的本说明书来实现这样的特征或组合,而不管这样的特征或特征的组合是否解决了文中所公开的任何问题。鉴于前面的描述,对于本领域技术人员而言,明显的是,可以在本发明的范围内做出各种修改。

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