CN104850393B - 并行平铺引擎管线中的图元块的处理 - Google Patents

并行平铺引擎管线中的图元块的处理 Download PDF

Info

Publication number
CN104850393B
CN104850393B CN201510075863.XA CN201510075863A CN104850393B CN 104850393 B CN104850393 B CN 104850393B CN 201510075863 A CN201510075863 A CN 201510075863A CN 104850393 B CN104850393 B CN 104850393B
Authority
CN
China
Prior art keywords
primitive
tile
primitive block
tiles
tiling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510075863.XA
Other languages
English (en)
Other versions
CN104850393A (zh
Inventor
X·杨
R·席德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN104850393A publication Critical patent/CN104850393A/zh
Application granted granted Critical
Publication of CN104850393B publication Critical patent/CN104850393B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

本申请涉及并行平铺引擎管线中的图元块的处理。平铺单元被设置以使用多个并行平铺引擎管线来处理图元块的序列。每个平铺引擎管线处理相应图元块,并且基于图元块与在并行平铺引擎管线中当前正在被处理的任何其他图元块是否重叠,来确定针对相应图元块的区域的优先级。每个平铺引擎管线基于区域的优先级按照瓦片顺序处理其图元块的区域。当图元标识符被写入显示列表时,应当维护图元块的提交顺序。由此,如果第一图元块与具有较高(或较低)序列号并且当前在另一平铺引擎管线中正在被处理的另一图元块重叠,则第一图元块的区域的优先级被提高(或降低)。这缩减了平铺引擎管线处于空闲的时间。

Description

并行平铺引擎管线中的图元块的处理
技术领域
本发明涉及图形处理系统,具体地,涉及并行平铺引擎管线中的图元块的处理。
背景技术
图形处理系统用于绘制图像,例如用于在屏幕上显示图像。图像数据在图形处理系统处被接收,该图像处理系统使用公知的方法将图像数据转换至屏幕空间。经转换的图像数据描述将由图像处理系统绘制的图元,其中每个图元包括一个或者多个片元,该片元对应于图形处理系统的绘制空间的相应的一个或者多个采样位置。在某些示例中,单一采样位置可以对应于最终绘制的图像的像素位置,然而在其他示例中,多于一个(例如,四个)采样位置可以对应于每个像素位置。某些图像处理系统可以是基于瓦片的,其中他们包括被子划分为多个区域(在此被称为“瓦片”)的绘制空间,其中每个区域包括多个采样位置。瓦片通常是矩形(在此使用的术语“矩形”包括正方形),但是也可以是其他形状,诸如三角形或者六边形。绘制空间可以对应于用于在屏幕上显示的图像,但是其他绘制目标诸如存储器中的纹理数据也是可行的。瓦片可以是各种尺寸,例如,瓦片可以是16×16像素。在高屏幕分辨率图像的示例中可以是1280×1024像素。由此作为示例,高屏幕分辨率图像可以被子划分为5120个瓦片(每个包括16×16像素)。
针对定义一个或者多个瓦片的组的每个图元定义包围盒,该瓦片包括绘制空间内的图元的片元的全部。平铺单元针对图元的包围盒内的每个瓦片处理图元,以确定图元是否存在于瓦片之内(即,至少部分地重叠瓦片)。存在于瓦片内的图元的图元标识符被添加至用于该瓦片的显示列表。此有助于在基于瓦片的图形处理系统中进一步以基于逐个瓦片的方式来执行处理,这是因为针对每个瓦片,相应的显示列表指示为了处理瓦片所需要的图元。对存在于瓦片内的图元的进一步处理通常依赖于图元的提交顺序。例如,半透明图元的处理可以依赖于以从后向前顺序提交的图元。图形处理系统典型地依赖于以正确顺序提交的图元的应用,这样平铺过程不会将图元的提交顺序从图元被接收到的顺序有所改变。即,图元的原始提交顺序必须被保留在用于该瓦片的每个显示列表中。在某些系统中,图元被组织为图元块,其中每个图元块与序列号相关联,其可被用作确保图元块的顺序得到维护。
平铺单元可以包括平铺引擎管线,其一次处理图元的一个图元块以确定图元块内的图元存在于哪个瓦片内。通过使用平铺单元中的单一平铺引擎管线有助于确保图元的顺序不被平铺处理而调整,但是随着场景中图元数量的增加,和/或随着绘制空间中的瓦片数量的增加,需要由单一平铺引擎执行的处理的数量增加,并且这成为平铺处理的瓶颈。
发明内容
为了改进平铺单元的性能(例如,为了降低由平铺单元执行的处理的延迟),多个平铺引擎管线可以被实现以并行地在相应图元块上执行平铺处理。在平铺单元中并行地处理多个图元块可以允许更快地执行图元的平铺。如上所述,在用于瓦片的显示列表中必须保持图元的原始提交顺序。对于每个平铺引擎管线而言维护特定图元块内的图元的顺序是不重要的,但是如果一个以上的并行平铺引擎管线正在处理重叠相同瓦片的图元块时,则重要的是确保在较迟的图元块(例如,具有较高序列号的图元块)的图元的图元标识符被写入用于一瓦片的显示列表之前,将用于较早图元块(例如,具有较低序列号的图元块)的图元的图元标识符写入用于相同瓦片的显示列表。这意味着,正在处理较迟图元块的图元的平铺引擎管线必须等待正在处理较早图元块的另一平铺引擎管线结束将图元标识符写入用于瓦片的显示列表。不希望让平铺引擎管线等待(即,空闲)。也即,在由并行平铺引擎管线正在并行处理的图元块具有重叠包围盒时,平铺引擎管线的性能受到影响,这可以导致某些平铺引擎管线由于它们在等待另一平铺引擎管线处理较早的图元块的图元而处于空闲。由此,优化平铺引擎管线的调度因而降低平铺引擎管线的空闲时间,这是有益的。
根据在此描述的一个示例,多个并行平铺引擎管线中的每一个处理相应图元块,并且基于图元块与当前在并行平铺引擎管线中正在被处理的任何其他图元块是否重叠,而确定针对相应图元块的多个区域中的每个区域的优先级。针对其确定优先级的每个区域可以包括一个或者多个瓦片。例如,基于其他图元块的序列号是大于还是小于第一图元块的序列号,与在其他平铺引擎管线中当前正在被处理的其他图元块重叠的第一图元块中的区域被优先处理。为了维护图元的提交顺序,来自具有较低序列号的图元块的图元的图元标识符在具有较高序列号的图元块的图元的图元块之前被写入用于瓦片的显示列表。由此,在在此描述的示例中,如果第一图元块的区域与具有较高序列号的并且在另一平铺引擎管线中当前正在被处理的另一图元块的区域重叠,则对于第一图元块的区域给定的优先级较高。此外,在在此描述的示例中,如果第一图元块的区域与具有较低序列号的并且在另一平铺引擎管线中当前正在被处理的另一图元块的区域重叠,则对于第一图元块的区域给定的优先级较低。以此方式,可以缩减在平铺引擎管线花费在空闲状态的时间量。
提供了一种用于在图形处理系统内处理多个平铺引擎管线中的图元块的序列的方法,所述图形处理系统配置以使用被子划分为多个瓦片的绘制空间,其中所述平铺引擎管线被设置以并行地处理相应图元块,以及其中所述绘制空间内的所述图元块中的每个图元块的位置是由相应位置指示符来指示的,以及所述图元块的序列内的所述图元块中的每个图元块的位置是由相应序列指示符来指示的,所述方法包括,对于多个相应图元块的中的每个相应图元块:确定对于所述相应图元块的多个区域中的每个区域的优先级,所述区域中的每个区域包括一个或者多个瓦片,其中如果在所述并行平铺引擎管线中当前正在被处理的所述图元块的所述位置指示符指示所述相应图元块的特定区域内存在重叠图元块,则针对所述特定区域的所述优先级是基于所述重叠图元块的所述序列指示符来确定的;以及被设置以处理所述相应图元块的所述平铺引擎管线基于针对所述区域确定的优先级来按照瓦片顺序,针对所述相应图元块的所述区域的瓦片来处理所述相应图元块的图元,由此针对所述相应图元块的所述区域的所述瓦片中的每个瓦片,如果所述相应图元块的图元存在于所述瓦片内的话,确定所述相应图元块的哪个图元存在于所述瓦片内。
针对相应图元块的多个区域确定优先级的步骤可以由以下中的任一项执行:(i)被设置以处理相应图元块的平铺引擎管线,或者(ii)控制模块。
提供了一种用于在图形处理系统内处理图元块的序列的平铺单元,所述图形处理系统配置以使用被子划分为多个瓦片的绘制空间,其中所述平铺单元被配置以使用相应位置指示符来指示所述绘制空间内的所述图元块中的每个图元块的位置,以及使用相应序列指示符来指示所述图元块的序列内的所述图元块中的每个图元块的位置,其中所述平铺单元包括多个平铺引擎管线,所述多个平铺引擎管线配置以并行地处理相应图元块,以及其中对于多个相应图元块的中的每个相应图元块,所述平铺单元被配置以:确定对于所述相应图元块的多个区域中的每个区域的优先级,所述区域中的每个区域包括一个或者多个瓦片,其中如果在所述并行平铺引擎管线中当前正在被处理的所述图元块的所述位置指示符指示所述相应图元块的特定区域内存在重叠图元块,则针对所述特定区域的所述优先级是基于所述重叠图元块的所述序列指示符来确定的;以及使用被设置以处理所述相应图元块的所述平铺引擎管线基于针对所述区域确定的优先级来按照瓦片顺序,针对所述相应图元块的所述区域的瓦片来处理所述相应图元块的图元,由此针对所述相应图元块的所述区域的所述瓦片中的每个瓦片,如果所述相应图元块的图元存在于所述瓦片内的话,确定所述相应图元块的哪个图元存在于所述瓦片内。
还提供了计算机可读代码,当所述计算机可读代码在计算机上运行时,所述代码适配以执行在此描述的任一方法的步骤。此外,提供了用于根据在此描述的任一示例来生成平铺单元的计算机可读代码。计算机可读代码可以编码在计算机可读存储介质上。
提供此发明内容以简化的形式介绍概念的选择,并且在下文的详细说明书中进行进一步描述。此发明内容并不旨在标识请求主题的关键特征或者必要特征,也并不旨在用于限制请求的主题的范围。对于本领域技术人员易见的是,上述特征可以在适当时进行组合,并且可以与在此描述的任何方面进行组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1示出了图形处理系统的部分的示意图;
图2是图元块的序列的处理方法的流程图;
图3a至图3d表示第一示例中的三个重叠图元块的瓦片的优先级;
图4a至图4c表示第二示例中的两个非重叠图元块的优先级;
图5a至图5c表示第三示例中的两个重叠图元块的区域的优先级;
图6a至图6d表示第四示例中的三个重叠图元块的优先级;
图7a至图7c表示第五示例中的两个重叠图元块的区域的优先级;以及
图8a至图8d表示第六示例中的三个重叠图元块的区域的优先级。
附图示出了各种示例。本领域技术人员应当理解,在附图中示出的元素边界(例如,方框、方框的组或者其他形状)表示边界的一个示例。在某些示例中,一个元素可以设计为多个元素,或者多个元素可以设计为一个元素。贯穿附图使用了相同的参考数字,在适当的时候以指示相似的特征。
具体实施方式
现在将仅借助于示例描述实施方式。图1示出了图形处理系统102,其包括平铺单元104和存储器106。平铺单元104包括控制模块108、三个平铺引擎管线1100、1101和1102,以及存储112用于存储显示列表的存储。在在此详细描述的示例中,图1所示的平铺单元104的元素可以以硬件实现,但是在其他示例中,在平铺单元的某些或者全部元素可以以软件实现以便在计算机处理器上执行。此外,对于本领域技术人员易见的是,图形处理系统102可以包括除了图1所示以外的其他组件,但是出于描述的目的,仅绘出了足以描述相关于平铺处理的组件。
控制模块108设置以接收图元块的序列,其包括将被绘制的图像中的屏幕空间中已经存在的图元。例如,图形处理系统102可以实现顶点处理操作以处理从应用所接收到的进入图像数据,以便将图像数据转换为屏幕空间,并且用以向平铺单元104提供图元块的序列。控制模块108配置以向平铺引擎管线110提供图元块。平铺引擎管线110配置以在图元块的图元上执行平铺处理,由此确定哪个瓦片与图元块的哪个图元重叠,如下文将详细描述。平铺引擎管线110的输出耦合至存储112。平铺单元104配置以从存储112向存储器106提供输出,由此平铺处理的结果(即,用于瓦片的显示列表)可以存储在存储器106中。
参考图2的流程图来描述平铺单元104的操作。在步骤S202中,平铺单元104(尤其是,控制单元108)接收包括图元的图元块的序列,如上文中已经在屏幕空间中描述。图元以提交顺序包括在图元块的序列中,由此图元块内的图元的顺序得以维护。此外,每个图元块具有序列指示符(例如,序列号),其描述图元块在图元块的序列内的位置。序列号可以用于确保维护序列中的图元块的顺序。图元可以被组织为图元块,由此例如图元块中的图元的最大数目为N,并且图元块中的顶点的最大数目为M。进入图像数据中的第一N个图元包括在第一图元块中,继而接下来的N个图元包括在下一图元块中,等等。作为示例,N可以是80或者某些其他适合的数字。包括在每个图元块中的图元的数字可以是固定的或者变化的。图元可以与相同图元块中的其他图元共享顶点。有益的可以将共享顶点的图元分组到相同的图元块,以允许对图元的更有效处理。在某些示例中,图元块中的顶点数量可以到达最大值M,尽管图元块中的图元的数量仍然可以小于N。在此情况下,可以开始新的图元块以包括任何附加的图元。当绘制状态改变时还可以开始新的图元块。通过避免一个图元块内的多个绘制状态,可以优化图元的存储和处理。
每个图元块具有包围盒,该包围盒定义完全涵盖图元块的图元的绘制空间的区域。用于确定图元块的包围盒的方法是现有技术中已知的,并且此类方法的细节可以不在本说明书的范围之内。图元块可以在控制模块108处伴随其包围盒的指示被接收,该包围盒是在向平铺单元104提供图元块之前确定的。备选地,控制模块108可以确定对于所接收平的包围盒。图元块的包围盒充当位置指示符,其指示图元块在绘制空间内的位置。在此示例中,包围盒是矩形的并且对准渲染空间的轴,并且由此可以由矩形包围盒的两个对角的位置定义,或者由包围盒的一个角和维度指示来定义。应当注意,通过使用矩形包围盒,包围盒内可以存在与图元块的任何图元都不重叠的某些瓦片。在更具体的示例中,包围盒可以不是矩形并且例如可以仅包括如下瓦片,该瓦片与图元块的图元中的至少一个图元重叠。在在此描述的示例中,包围盒在瓦片的粒度被确定,从而在这些示例中包围盒包括整数数量的瓦片。
控制模块108将图元块分布至平铺引擎管线110。当平铺引擎管线110对于处理新的图元块变得可用时,控制模块108在对可用平铺引擎管线110的序列中提供下一图元块。当第一图元块i已经在控制模块108处被接收时,其被提供至第一平铺引擎管线1100,当第二图元块已经在控制模块108处被接收时,其被提供至第二平铺引擎管线1101;而当第三图元块已经在控制模块108处被接收时,其被提供至第三平铺引擎管线1102。平铺引擎管线110中的每一个可以并行地处理相应图元块,并且当他们结束处理图元块时,控制模块108向他们提供新的图元块来处理。
控制信号可以在不同平铺引擎管线110之间被广播(或者另外被发送)。例如,控制信号可以被发送以指示当前正在被每个平铺引擎管线110处理的图元块的序列数量和包围盒。以此方式,针对当前正在被平铺引擎管线110处理的图元块的全部,每个平铺引擎管线110访问序列数量和包围盒的指示。
平铺引擎管线110中的每一个并行地执行步骤S204至S208。在步骤S204中,平铺引擎管线(例如,平铺引擎管线1100)使用在平铺引擎管线110中当前正在被处理的图元块的包围盒来确定在并行平铺引擎管线110中正在被处理的图元块的重叠区域。图3a示出了一个示例,其中绘制空间302被划分为9×11的瓦片阵列。图3a示出了第一图元块304的包围盒、第二图元块306的包围盒以及第三图元块308的包围盒。在图3a中的包围盒的重叠不表示包括在图元块中的图元的相关深度,而是表示了图元块的序列号,从而图元块304在序列中比图元块306更早(例如,具有较低的序列号),该图元块306转而在序列中比图元块308的更早(例如,具有较低的序列号)。可以看出,第一图元块304的包围盒覆盖5×4的瓦片块,而第二图元块306的包围盒覆盖4×4的瓦片块,而第三图元块308的包围盒覆盖3×5的瓦片块。绘制空间302的某些瓦片表示重叠区域,该重叠区域位于一个以上的图元块的包围盒内。
如在下文中更详细地描述,平铺引擎管线110逐个地处理图元块内的图元,由此在下一次迭代中移动至一个或者多个瓦片的下一集合以确定图元块的哪些图元存在于一个或者多个瓦片的下一集合内之前,每个平铺引擎管线确定相应图元块的哪个图元是存在于一个或者多个瓦片的集合内。
在步骤S206中,平铺引擎管线中的每一个平铺引擎管线确定相应图元块的多个区域中的每个区域的优先级。针对其确定优先级的区域包括一个或者多个瓦片。区域的优先级是基于该区域中的重叠图元块的存在而确定的。尤其是,如果在并行平铺引擎管线110中当前正在被处理的图元块的包围盒指示在特定区域内存在重叠图元块,则对于该特定区域的优先级是基于重叠图元块的序列号来确定的。在在此描述的第一示例中,针对其来确定优先级的每个区域包括单个瓦片,即,在这些示例中,优先级是针对图元块的包围盒覆盖的每个瓦片来确定的。对于由平铺引擎管线110确定的区域的优先级可以被存储用于后续由平铺引擎管线110来使用。
在步骤S208中,平铺引擎管线110以瓦片顺序(该瓦片顺序是通过相应图元块的区域的优先级来确定的,如在步骤S206中所确定)来处理相应图元块的图元。瓦片顺序确定其中平铺引擎管线110考虑瓦片以确定当前图元块内的图元中的任一项是否存在于瓦片之内的顺序。如上所述,在多个迭代的每个迭代中,一个或者多个瓦片的集合可以基于区域的优先级而从尚未针对相应图元块而被处理的瓦片中选择,并且一个或者多个瓦片的所选择的集合被处理。当图元块的图元已经针对瓦片而被处理时,平铺引擎管线110将图元标识符写入用于瓦片的显示列表。如上所述,图元标识符应当按照提交顺序被写入显示列表。由此,作为向瓦片的显示列表写入图元标识符处理的部分,平铺引擎管线110可以检查具有较早序列号的在另一平铺引擎管线中正在被处理的图元块不具有进一步的图元标识符以写入瓦片的显示列表。响应于这种检查,如果必要则平铺引擎管线110可以在将图元标识符写入用于瓦片的显示列表之前进行等待。这种检查确保图元的提交顺序在显示列表中得以保持。从在此的描述中易见的是,确定优先级目的在于将此检查将导致的等待的数量最小化。继而,一个或者多个瓦片的下一集合由平铺引擎管线110来处理,其结果被写入适当的显示列表。在图元块的瓦片的全部都已经被处理之前,重复此处理。显示列表被存储在存储112中。在其他示例中,存储112可以不在平铺单元104中实现,而是显示列表可以直接被写入存储器106。平铺引擎管线110中的每一个可以访问用于绘制空间302的瓦片的相同显示列表。
参见图3b至图3d,在此示出了一个示例,其中针对图元块304、306、308的包围盒覆盖的每个瓦片来确定优先级。在此示例中,图元块的瓦片一次一个地被处理,即,在此示例中在每个迭代中由平铺引擎管线110处理的图元块的一个或者多个瓦片的集合包括单一瓦片。图3b示出了针对图元块304的瓦片确定的优先级,图3c示出了针对图元块306的瓦片而确定的优先级,而图3d示出了针对图元块308的瓦片确定的优先级。在此示例中,对于与由平铺引擎管线110中的一个当前正在处理的另一图元块不重叠的图元块的瓦片(其中在此可以将其称为“当前图元块”),优先级被确定为零。换言之,针对不是在步骤S204中确定的重叠区域的图元块的区域,优先级为零。对于位于重叠区域中的图元块的瓦片,优先级是基于在重叠区域中的重叠图元块的序列号来确定的。为了确定第一图元块(例如,图元块304)的重叠区域中的瓦片的优先级,将第一图元块的序列号与存在于重叠区域中的第二图元块的序列号进行比较,其中第一图元块具有比第二图元块更低的序列号。为了维护图元的提交顺序,如果在针对第一图元块的图元针对瓦片而被处理(例如由平铺引擎管线1100处理)之前,第二图元块的图元针对重叠区域中的瓦片被处理(例如由平铺引擎管线1101处理),则平铺引擎管线1101在向用于瓦片的显示列表写入图元标识符之前进行等待,直到平铺引擎管线1100已经结束了针对瓦片的第一图元块的图元的处理。
由此,为了最小化(或者至少缩减)平铺引擎管线110处于空闲的时间量而确定优先级,由此针对重叠区域,每个平铺引擎管线110将其正在处理的相应图元块的序列号与重叠区域中的其他重叠图元块的每个其他重叠图元块的序列号进行比较,其中对于其他重叠图元块的每个其他重叠图元块:(i)如果相应图元块的序列号大于重叠图元块,则相应图元块的重叠区域中的瓦片的优先级被增加(例如,递增),以及(ii)如果相应图元块的序列号小于重叠图元块的序列号,则相应图元块的重叠区域中的瓦片的优先级被降低(例如,递减)。当在重叠区域中存在两个以上的重叠图元块时,则可以累积地确定优先级,从而对于瓦片的总优先级是从在重叠区域中是重叠的图元块的不同配对的比较所获得的优先级的总和。
例如,图3b示出了被赋予与其他两个当前图元块(306和308)中的任何一个都不重叠的图元块304的瓦片的优先级被给定为优先级0。被赋予与图元块306重叠但是与图元块308不重叠的的图元块304瓦片的优先级被给定为1,这是由于图元块304在图元块序列中在图元块306之前到来(即,图元块304具有比图元块306更低的序列号)。类似地,被赋予与图元块308重叠但是与图元块306不重叠的图元块304的瓦片的优先级也被给定了1的优先级,这是因为图元块304在图元块序列中在图元块308之前到来(即,图元块304具有比图元块308更低的序列号)。被赋予与两个其他当前图元块(306和308)中的两者重叠的图元块304的瓦片的优先级被给定为2的优先级,这是因为图元块304在图元块的序列中在图元块306和308两者之前到来(即,图元块304具有比图元块306和308两者都低的序列号)。
继续此示例,图3c示出了被赋予与其他两个当前图元块(304和308)中的任一项都不重叠的图元块306的瓦片的优先级被给定为0的优先级。被赋予与图元块304重叠但是与图元块308不重叠的图元块306的瓦片的优先级被给定为优先级-1,这是因为图元块306在图元块序列中在图元块304之后到来(即,图元块306具有比图元块304更高的序列号)。被赋予与其他两个当前图元块(304和308)中的两者重叠的图元块306的瓦片的优先级被给定为优先级0,这是因为图元块306在图元块序列中在图元块304之后到来,并且在图元块308之前到来(即,图元块306具有比图元块304更高的序列号,并且具有比图元块308更低的序列号)。
继续此示例,图3d示出了被赋予与其他两个当前图元块(304和306)中的任一项都不重叠的图元块308的瓦片的优先级被给定为优先级0。被赋予与图元块304重叠但是与图元块306不重叠的图元块308的瓦片的优先级被给定为优先级-1,因为图元块308在图元块的序列中在图元块304之后到来(即,图元块308具有比图元块304更高的序列号)。被赋予与其他两个当前图元块(304和306)中的两者重叠的图元块308的瓦片的优先级被给定为优先级-2,这是因为图元块308在图元块序列中在图元块304和306两者之后到来(即,图元块308具有比图元块304和306两者更高的序列号)。
由此,在步骤S208中,每个平铺引擎管线110以瓦片顺序,从具有最高优先级的瓦片到具有最低优先级的瓦片处理其相应的图元块。每次平铺引擎管线110结束处理一个瓦片,则平铺引擎管线110通过选择具有当前最高优先级的并且尚未被处理的瓦片,来决定下一步处理哪个瓦片。备选地,其中瓦片被处理的顺序可以在任何瓦片实际被处理之前从初始优先级值来确定,继而在瓦片硬被处理之后不被更新。然而,这提供了较少的机会来更新优先级以及基于从其他平铺引擎管线接收的信息来调整顺序。通常,关于处理哪个瓦片的决定可以针对每n个瓦片做出,其中n是范围1≤n≤N瓦片的某个整数,其中≤N瓦片是绘制空间302中的瓦片的总数。为了保持跟踪哪些瓦片已经被处理,平铺引擎管线可以每次存储已经被处理的相应图元块的瓦片的指示。如果多于一个的未处理瓦片具有当前的最高优先级,则具有当前最高优先级的一个瓦片被选择,例如,通过以光栅扫描顺序选择瓦片中的第一瓦片,或者通过确定是否已经被满足的瓦片的任何依赖性来确定,这将在下文中更详细地描述。
对于图元块304,由于与当前图元块的全部三个重叠的瓦片具有优先级2,在图元块304中,这些瓦片可以首先由平铺引擎管线1100首先处理以降低其他平铺引擎管线1101和1102必须等待这些瓦片由平铺引擎管线1100处理而等待的时间量。继而,与一个其他图元块重叠的瓦片(例如,具有优先级1)由平铺引擎管线1100处理,再次缩短了其他平铺引擎管线1101或者1102必须等待由平铺引擎管线1100处理这些瓦片的时间量。继而,平铺引擎管线1100将处理与其他图元块不重叠的瓦片,这是因为其他平铺引擎管线正在等待平铺引擎管线1100来结束处理这些瓦片。
对于图元块306,具有优先级0的任何瓦片可以被首先处理。与图元块重叠的两个瓦片可以在其他平铺引擎管线1100和1102的两者中被处理,但是在平铺引擎管线1100已经结束了对在那些瓦片中的图元块304的图元的处理之前,处理结果不能被写入用于这些瓦片的显示列表。由此,如果这些瓦片被选择首先由平铺引擎管线1101处理,则平铺引擎管线1101可能需要在向针对这些瓦片的显示列表写入图元标识符之前进行等待。如上所述,为了避免这种情况,通过确定是否已经满足针对瓦片的任何依赖性,平铺引擎管线1101可以选择具有当前最高优先级(即,图3c中的示例中的优先级0)的瓦片之一。例如,当平铺引擎管线1100结束处理瓦片时,其可以向其他平铺引擎管线1101和1102发送广播信号以指示其已经结束了处理瓦片。如果平铺引擎管线的全部在他们结束处理瓦片时都发送类似的广播信号,则每个平铺引擎管线可以确定哪些瓦片已经被其他的平铺引擎管线处理。由此,平铺引擎管线1101可以确定平铺引擎管线1100是否已经结束了处理与全部三个图元块304、306和308重叠的瓦片(即,“重叠瓦片”)。如果这些瓦片尚未由平铺引擎管线1100处理,则平铺引擎管线1101将处理具有优先级零的其他瓦片中的某些(例如,在图元块306的右手侧的瓦片)。当平铺引擎管线1101接收指示平铺引擎管线1100已经结束处理重叠瓦片的信号时,则平铺引擎管线1101将处理接下来的那些重叠瓦片。一种实现方法可以是,当接收到指示其他平铺引擎管线已经结束处理瓦片时,提高依赖于另一平铺引擎管线的瓦片的优先级。例如,响应于接收到平铺引擎管线1100已经结束处理那些瓦片的指示,最初具有优先级0的图元块306的顶部左侧的瓦片的优先级可以被提高至1。当平铺引擎管线1101已经处理了图3c所示的具有优先级零的全部瓦片时,则其将处理仅与图元块304重叠的瓦片(即,具有优先级-1)。等到平铺引擎管线1101开始处理具有优先级-1的图元块306的瓦片时,平铺引擎管线1100将有可能已经结束了针对图元块304的这些瓦片的处理。
对于图元块308,平铺引擎管线1102将首先处理与其他图元块不重叠的瓦片,这是因为这些瓦片不需要等待其他平铺引擎管线1100和1101的任何处理。继而,与一个其他图元块重叠的瓦片(即,具有优先级-1)由平铺引擎管线1102处理,这是因为在平铺引擎管线1102可以处理这些瓦片之前,这些瓦片依赖于一个其他的平铺引擎管线110(例如,平铺引擎管线1100)来处理这些瓦片。由于在图元块308中与全部三个当前图元块重叠的瓦片具有优先级-2,这些瓦片最后由平铺引擎管线1102处理,由此提高了在由平铺引擎管线1102处理这些瓦片之前的、其他平铺引擎管线1100和1101为处理这些瓦片而花费的时间量。
应当注意,被赋予图3a至图3d所示的图元块304、306和308的瓦片的优先级导致了在平铺引擎管线110中的每一个中对图元块的处理的调度,其将降低平铺引擎管线处于空闲的时间量,该空闲是由于在向该瓦片的显示列表中写入之前等待另一平铺引擎管线结束处理瓦片而造成的。
当平铺引擎管线110针对图元块的包围盒中的全部瓦片结束处理图元块的图元时,则其可用于处理另一图元块,并且在步骤S210中,控制模块108确定在当前图像中是否存在另一待处理的图元块。如果存在,则新的图元块被提供至可用的平铺引擎管线110用于处理。在步骤S212中,新的图元块的序列号和包围盒被广播至其他平铺引擎管线110(例如,从可用的平铺引擎管线110进行)。继而,该方法返回步骤S204并且该方法重复步骤S204至S208。以此方式,每次平铺引擎管线110中的一个平铺引擎管线开始处理新的图元块时,用于全部当前图元块的瓦片的优先级被重新计算。也即,第一平铺引擎管线110可以从第二平铺引擎管线接收广播,该广播包括第二平铺引擎管线正在开始处理的新的图元块的序列指示符和位置指示符(即,包围盒),并且响应于接收该广播,第一平铺引擎管线110基于接收的广播重新确定其正在处理的图元块的区域的优先级。这可以包括响应于接收广播而重新确定重叠区域。
当没有剩余的待处理的新的图元块时,则该方法从步骤S210移至步骤S214。在步骤S214中,当图像的全部图元块已经被处理、并且全部图元标识符已经被写入存储112中的瓦片的显示列表时,则用于瓦片的显示列表从存储112被输出至存储器106。如上所述,在某些备选示例中,存储112不在平铺单元104中实现,而是平铺处理的结果从平铺引擎管线110被直接写入存储器106中的显示列表。用于瓦片的显示列表可以从存储器106中获得,以用于以逐个瓦片的方式在未来处理图元时使用。
在参见图3a至图3d描述的示例中,针对图元块的每个瓦片来确定优先级。在此情况下,维护可变大小的阵列以存储针对每个图元块的优先级,并且用于每个平铺引擎管线的完整瓦片的掩膜被存储。存储此数据的全部的硬件是昂贵的。关于上文给出的示例描述的原理可以在不同示例中实现,如下所述。尤其是,下文给出的示例可以更加适合于其中存储在硬件方面受限的图形处理系统,例如,如果图形处理系统102在移动设备(此时计算资源和可用处理能力是有限的)中实现的情况。
例如,代替针对图元块的每个瓦片确定优先级,可以针对包括多个瓦片的区域确定单一优先级。以此方式,需要存储较少的优先级。例如,图4a示出了其中存在两个非重叠图元块404和406的绘制空间402。图4b示出了单一优先级值零可以被赋予整个图元块404,并且单一优先级值零还可以被赋予整个图元块406。图元块404和406的瓦片可以由两个平铺引擎管线110来并行地处理,其以任意顺序并行地处理,这是因为图元块没有重叠因而在不同图元块的瓦片之间不存在依赖。相比于针对图元块的每个瓦片存储优先级零而言,存储用于整个图元块的单一优先级零需要较少的存储。
在较少细节示例中,图5a示出了其中存在两个重叠图元块504和506的绘制空间502,其中图元块504在图元块的序列中的定位比图元块506更早(即,具有较低序列号)。在此示例中,平铺引擎管线1100处理图元块504,而平铺引擎管线1101处理图元块506。平铺引擎管线(1100和1101)中的每一个通过确定在并行平铺引擎管线中当前正在被处理的图元块(504和506)的重叠区域,而确定将针对其确定优先级的区域。针对所确定区域的优先级继而可以如上所述地确定。由此,平铺引擎管线1100确定存在图元块504的第一区域508(在图5b中标记为“R01”),其与图元块506重叠,并且被给定优先级1。平铺引擎管线1100还确定存在图元块504的第二区域510(在图5b中被标记为“R0”),其是非重叠的并且被给定优先级0。由此,平铺引擎管线1100在处理来自区域510的瓦片之前将处理来自区域508的瓦片。类似地,平铺引擎管线1101确定存在图元块506的第一区域512(在图5c中标记为“R1”),其与图元块504不重叠,并且被给定优先级0。平铺引擎管线1101还确定存在图元块506的第二区域514(在图5c中标记为“R01”,其包括与区域508的那些相同的瓦片),其与图元块504重叠,并且被给定优先级-1。由此,平铺引擎管线1101在处理来自区域514的瓦片之前将处理来自区域512的瓦片。
通过根据图5b和图5c中所示的区域的优先级来处理图元块504和506的图元,在平铺引擎管线1101开始处理来自区域514的瓦片时,可能的是,平铺引擎管线1100将已经结束(或者至少已经开始)处理来自区域508的瓦片。由此,由于平铺引擎管线1101等待平铺引擎管线1100处理瓦片而对于性能的影响被最小化。
图6a至图6d示出了其中包括三个重叠图元块604、606和608的另一绘制空间602。在此示例中,平铺引擎管线1100处理图元块604、平铺引擎管线1101处理图元块606,而平铺引擎管线1102处理图元块608。平铺引擎管线110中的每一个通过确定在并行平铺引擎管线中正在被处理的图元块(604、606和608)的重叠区域,而确定将针对其确定优先级的区域。在其他示例中,针对其确定优先级的区域可以在平铺引擎管线110以外的一个或者多个模块中确定,例如,控制模块108可以确定该区域。确定的区域是在瓦片粒度被确定的,这意味着每个区域包括整数数量的瓦片。针对确定的区域的优先级继而可以如上所述地确定。由此,平铺引擎管线1100确定存在图元块604的第一区域610(在图6b中标记为“R012”),其与图元块606和608两者重叠,并且被给定优先级2。平铺引擎管线1100还确定存在图元块604的第二区域612(在图6b中被标记为“R01”),其与图元块606重叠,并且被给定优先级1。平铺引擎管线1100还确定存在图元块604的第三区域614(在图6b中被标记为“R02”),其与图元块608重叠,并且还被给定优先级1。平铺引擎管线1100还确定图元块604的第四区域616和第五区域618(在图6b中被标记为“R0”),其与图元块606和608不重叠,并且被给定优先级0。
由此,平铺引擎管线1100将首先处理来自区域610的瓦片。接着这些瓦片,平铺引擎管线1100将处理来自区域612的瓦片,或者处理来自区域614的瓦片,这是因为两者都具有优先级1。平铺引擎管线1100可以在处理来自区域614的瓦片之前选择处理来自区域612的瓦片,这是因为区域612与图元块606重叠,而区域614与图元块608重叠。由于图元块606在图元块序列中在图元块608之前到来(即,图元块606的序列号低于图元块608的序列号),更好的是在处理区域614的瓦片之前处理区域612的瓦片。这是因为,图元块606很可能已经被处理了较长的时间量(因为当平铺引擎管线变得可用时图元块被分配给平铺引擎管线中的一个,并且由于图元块606在图元块序列中在图元块608之前到来,图元块606很可能在图元块608之前被分配给平铺引擎管线)。由此,图元块606比图元块608更有可能等待图元块604的重叠区域中的瓦片被处理。在处理来自区域612和614的瓦片之后,区域616和618中的瓦片由平铺引擎管线1100所处理。
平铺引擎管线1101确定存在图元块606的第一区域620(在图6c中被标记为“R012”),其与图元块604和608中的两者重叠,并且被给定优先级0。平铺引擎管线1101还确定存在图元块606的第二区域622(在图6c中被标记为“R1”),其与图元块604和608不重叠,并且被给定优先级0。平铺引擎管线1101还确定存在图元块606的第三区域624(在图6c中被标记为“R01”),其与图元块604重叠,并且被给定优先级-1。
由此,平铺引擎管线1101可以首先选择处理来自区域620和622的瓦片,这是由于它们具有相等的最高优先级。如上所述,当平铺引擎管线1100已经结束了针对区域610中的瓦片(区域R012)的处理时,其可以向平铺引擎管线1101发送指示以指示此处理已经结束。该指示可以简单地指示区域R012已经在平铺引擎管线1100中被处理(而不需要指定区域R012的每个瓦片),这是由于此区域包括与图元块604和606两者中相同的瓦片。在平铺引擎管线1101接收此指示之前,其可以在选择处理来自区域620的瓦片之前选择处理来自区域622的瓦片。然而,当从平铺引擎管线1100接收指示时,区域620的优先级可以被提高,从而来自该区域的瓦片接下来将由平铺引擎管线1101处理。平铺引擎管线1101存储每个区域中的已经被处理的瓦片的指示。由此,如果处理从区域622切换至区域620,例如,响应于来自平铺引擎管线1100的信号,当区域622的某些但不是全部瓦片已经被处理时,则指示对区域620中哪些瓦片已经被处理保持跟踪。由此,当区域620中的瓦片已经被处理时,平铺引擎管线1101可以使用该指示来确定来自区域622的哪些瓦片尚未被处理,并且继而可以前进以处理这些瓦片。在处理来自区域620和622的瓦片之后,区域624中的瓦片由平铺引擎管线1101来处理。
易见的是,平铺引擎管线1102确定存在图元块608的第一区域626(在图6d中标记为“R2”),其与图元块604和606不重叠,并且被给定优先级0。平铺引擎管线1102还确定存在图元块608的第二区域628(在图6d中标记为“R02”),其与图元块604重叠,并且被给定优先级-1。平铺引擎管线1102还确定存在图元块608的第三区域630(在图6d中标记为“R012”),其与图元块604和606重叠,并且被给定优先级-2。由此,平铺引擎管线1102将首先处理来自区域626的瓦片,接着处理来自区域628的瓦片,并且再接着处理来自区域630的瓦片。
存在针对上述示例的进一步修改,该修改可以简化由平铺引擎管线110执行的处理。可以发现,在图5a至6d中示出的示例中,确定的区域可以是非矩形形状。在下文描述的示例中,区域确定为矩形。使用矩形区域使得区域定义变得简单(trivial),这是因为矩形可以通过指定矩形的两个对角的位置、或者通过指定一个角的位置和维度来指定确定矩形(由此降低了定义区域所需的数据量)。进一步,使用矩形区域还可以使得关于确定哪些瓦片包括在哪些区域中变得简单。
用于确定区域的一个方法是,自适应地将图元块的包围盒划分为较小的矩形区域。用于平铺引擎管线110的硬件可以具有用于最大区域数量的存储。最大区域数量例如可以是10或者15,或者是适合于平铺单元104的存储限制的任何其他适合的数字。这允许使用固定的存储器分配,相比于使用对于平铺单元104可用的可变存储器分配而言,这是更加有益(respectful)的硬件限制。如果通过使用矩形区域而用以完全定义每个单独优先级区域的区域的数量大于可以被存储的最大区域数量,则区域的数量被限制为最大数,并且区域的优先级被调整为处理如下情况,其中某些区域可以包括与不同图元块重叠的瓦片。例如,如果区域通常被划分为两个区域,其中一个区域具有高于另一区域的优先级,而由于区域数量的限制而使得该区域不能被划分,则整个区域可以被赋予两个优先级中的较高优先级。
图7a示出了具有图元块704和706的绘制空间702,该图元块704和706与图5a中所示的图元块504和506具有相对应的布置。图7b示出了针对图元块704确定的优先级。图元块704包括区域708,其具有优先级1,这是因为其与图元块706重叠。图元块704还包括两个区域710和712,其具有优先级0,这是因为他们是不重叠的。可以发现,区域708至712是矩形的。通过比较图7b和图5b可见,尽管图7b中存在更多区域,区域中的每一个是矩形的因而定义矩形708、710和712的所需的数据量将典型地少于定义区域508和510所需的数据量。进一步,当区域全部是矩形时,确定瓦片位于哪个区域之内变得简单。
类似地,图7c示出了针对图元块706确定的区域和优先级。图元块706包括区域714和716,其具有优先级0这是因为他们是非重叠的。图元块706还包括区域718,其具有优先级-1这是因为其与图元块704重叠。
根据上述示例的原理,如何基于在图7b和7c中示出的优先级来由平铺引擎管线1100和1101并行地执行对图元块704和706中的图元的处理,这是易见的。
如上所述,每次平铺引擎管线110开始处理新的图元块,则向全部其他平铺引擎管线广播新的图元块的序列号和包围盒。每个平铺引擎管线继而重新确定针对其相应图元块的区域和优先级。
例如,图8a示出了具有图元块804、806和808的绘制空间802,该图元块804、806和808与图6a中所示的图元块604、606和608具有相对应的布置。图8b示出了针对图元块804而确定的区域和优先级。图元块804包括区域810,其具有优先级2,这是因为其与图元块806和808两者重叠。图元块804还包括区域812和814,其具有优先级1,这是因为他们与图元块806重叠。图元块804还包括区域816和818,其具有优先级1,这是因为他们与图元块808重叠。图元块804还包括区域820、822和824,其具有优先级0,这是因为他们与图元块806或者图元块808中的任意一个都不重叠。可以发现,区域810至824是矩形。
类似地,图8c示出了针对图元块806确定的区域和优先级。图元块806包括区域826,其具有优先级0,这是因为其与图元块804和808两者重叠。图元块806还包括区域832和834,其具有优先级-1,这是因为他们与图元块804重叠。图元块806还包括具有优先级0的区域828和830,这是因为他们与图元块804或者图元块808中的任意一个都不重叠。
类似地,图8d示出了针对图元块808确定的区域和优先级。图元块808包括区域836,其具有优先级0,这是因为其与图元块804或者图元块806中的任意一个都不重叠。图元块808还包括图元块838和840,其具有优先级-1,这是因为他们与图元块804重叠。图元块808还包括区域842,其具有优先级-2,这是由于其与图元块804和806重叠。
已经被确定的矩形区域的指示以及在已经被处理的那些区域中的瓦片的指示被存储用于平铺引擎管线110中的每一个,并且这些指示完全定义剩余的将在当前图元块上执行的处理,即,不需要存储其他信息以确定哪些瓦片仍然需要被处理以及哪些已经被处理。进一步,通过在此描述的排序而实现的性能增益(也即,在平铺引擎管线的空闲时间中的缩减)是随着可以被确定的区域的最大数量的提高而提高的,最高点是在单独区域中可以定义全部不同重叠区域时出现。其中排序的性能所在的范围与平铺单元104的硬件具有存储的区域的最大数量成比例。此外,当到达区域的最大数量时,系统性能将以平稳方式降低。也即,当到达区域的最大数量时,不创建更多的区域,因而某些优先级将不是最优的,并且由此由平铺引擎管线执行的处理的顺序可能也不是最优的,但是这将仅仅导致平铺引擎管线的稍多空闲时间。相比于限制在平铺单元104的硬件中所需的存储而产生的益处而言,可以认为在空闲时间中偏离最优空闲时间的轻微增长的不利影响是不显著的,因而通常设置区域的最大数量仍然是有益的。最大数量的值是具体实现,并且可以在硬件的存储限制和期望的平铺引擎管线的空闲时间中的缩减之间进行折中而选择。
在上述示例中(例如,在图1中),存在三个平铺引擎管线110。在其他示例中,可以存在不同数量(例如,2个、4个或者更多)的平铺引擎管线,该平铺引擎管线配置用于并行地处理相应的图元块。
在上述示例中,大多数处理(例如,确定重叠区域、确定针对该区域的优先级、传输信号以指示在平铺引擎管线110中当前正在被处理的图元块的序列号和包围盒、传输指示瓦片已经被处理、以及当另一平铺引擎管线已经结束了针对较早图元块的在重叠区域中的瓦片的处理时提高重叠区域的优先级)是在平铺引擎管线110中执行。在这些示例中,可以在不同平铺引擎管线110之间发送(例如,广播)信号,以允许平铺引擎管线110以协作方式操作。在这些示例中,控制模块108的任务可以是当平铺引擎管线110变得可用时向他们分发新的图元块。在其他示例中,控制模块108可以执行如上描述的在平铺引擎管线110中正在执行的某些处理。例如,控制模块108可以访问在不同平铺引擎管线110中正在被处理的图元块的序列号和包围盒。在此情况下,控制模块108可以确定区域和/或区域的优先级,以用于由平铺引擎管线110在处理相应图元块的瓦片中使用。作为另一示例,平铺引擎管线110可以彼此不直接通信,而是可以从平铺引擎管线110向控制模块108发送信号。此类信号的一个示例是指示平铺引擎管线110已经结束了针对瓦片的处理的信号。控制模块108可以使用这些信号来更新针对在其他平铺引擎管线中当前正在被处理的其他图元块的重叠区域的优先级,如上所述。控制模块108可以用作参与全部通信的集线器。
在一个极端示例中,控制模块108可以执行全部处理,用以:针对当前正在被处理的全部图元块的确定区域以及优先级;当其接收指示平铺引擎管线110已经结束处理瓦片的指示时更新优先级和/或区域;以及确定每个平铺引擎管线110接下来将处理哪个瓦片。控制模块108继而可以向平铺引擎管线110发送指示,以指示平铺引擎管线110接下来将处理哪个瓦片,并且平铺引擎管线110在瓦片已经被处理时向控制模块108返回信号。
以此方式,在上述主要示例中由平铺引擎管线110执行的某些功能可以被卸载到控制模块108并且以中央方式执行。
通常,上述的功能、方法、技术或者组件中的任一项可以在模块中使用软件、固件、硬件(例如,固定逻辑电路)或者这些实现的任意组合来实现。在此使用的术语“模块”、“功能”、“组件”、“方框”、“单元”和“逻辑”旨在概括地表示软件、固件、硬件或者其任意组合。
在软件实现的情况下,模块、功能、组件、方框、单元或者逻辑表示软件代码,该软件代码在处理器(例如,一个或者多个CPU)上执行时执行特定任务。在一个示例中,所描述的方法可以由计算机执行,该计算机配置有存储在计算机可读介质中的机器可读形式的软件。计算机可读介质的一个此类配置是信号承载介质并且被配置以向计算机设备传输指令(例如,作为载波),诸如经由网络来进行。计算机可读介质还可以配置为非暂态计算机可读存储介质而不是信号承载介质。计算机可读介质的示例包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或者其他数据、并且由机器可访问的其他存储器设备。
软件可以是如下形式:包括计算机程序代码用于配置计算机执行所述方法的组成部分的计算机程序的形式,或者是包括被适配为执行在此所述的任何方法的所有步骤的计算机程序代码装置的计算机程序的形式,其中程序运行在计算机上并且其中计算机程序体现在计算机可读媒介上。程序代码可以存储于一个或者多个计算机可读介质中。在此所述的技术的特性是平台无关的,这意味着该技术可以在具有各种处理器的各种计算平台上实现。
本领域的技术人员也将理解,功能、技术或者方法的全部或者一部分可以由专用电路、专用集成电路、可编程逻辑阵列、现场可编程门阵列等执行。例如,模块、功能、组件、方框、单元或者逻辑可以包括电路形式的硬件。这样的电路可以包括晶体管和/或在制造过程中可用的其他硬件元素。这样的晶体管和/或其他元素可以被用于形成电路或者结构,该电路或者结构实现和/或包括存储器,比如寄存器、触发器或者锁存器、逻辑运算器,比如布尔运算、数学运算器,比如加法器、乘法器或者移位器、以及互连。这样的元素可以作为定制电路或者标准单元库、宏或者在其他抽象级别来提供。这样的元素可以按照特定的布置进行互连。模块、功能、组件、方框、单元或者逻辑可以包括固定功能的电路或者可以被编程为执行一个或者多个功能的电路;这样的编程可以从固件或者软件更新或者控制机制提供。在一个示例中,硬件逻辑具有实现固定的功能操作、状态机或者过程的电路。
还旨在包括“描述”或者定义硬件的配置的软件,该硬件实现以上所述的模块、功能、组件或者逻辑,比如HDL(硬件描述语言)软件,用于设计集成电路或者配置可编程芯片以执行期望的功能。即,可以提供在其上编码有计算机可读程序代码的计算机可读存储媒介用于生成被配置为执行在此所述的任何方法的平铺单元,或者用于生成包括在此所述的任何装置的平铺单元。
术语“处理器”和“计算机”在此用于指代具有处理能力使得它可以执行指令的任何设备或者设备的部分,或者能够执行功能或者方法的全部或者一部分的专用电路,或者它们的任意组合。
尽管用特定语言描述主题的结构特征和/或方法的行为,应当理解,在所附权利要求中定义的主题不一定被限制于以上所述的特定的特征或者行为。而是,以上所述的特定的特征和行为作为实现权利要求的示例形式被公开。应当理解,以上所述的益处和优点可以涉及一个示例或者可以涉及几个示例。
对于技术人员明显的是,在此给出的任何范围或者值在不失去所寻求的效果的情况下可以被扩展或者改变。在此所述方法的步骤可以以任何适当地顺序执行,或者在适当时同时执行。在不失去所寻求的效果的情况下,以上所述的任何示例的方面可以与以上所述的任何其他示例的方面合并,从而形成进一步的示例。

Claims (21)

1.一种在图形处理系统内的多个平铺引擎管线中进行处理的方法,所述图形处理系统配置以使用被子划分为多个瓦片的绘制空间,图元块的序列各自包括至少一个图元,其中所述平铺引擎管线被设置以并行地处理相应图元块,以及其中所述绘制空间内的所述图元块中的每个图元块的位置是由相应位置指示符来指示的,以及所述图元块的序列内的所述图元块中的每个图元块的位置是由相应序列指示符来指示的,所述方法包括,对于多个所述相应图元块的中的每个相应图元块:
确定对于所述相应图元块的多个区域中的每个区域的优先级,所述区域中的每个区域包括一个或者多个瓦片,其中如果在并行平铺引擎管线中当前正在被处理的图元块的位置指示符指示所述相应图元块的特定区域内存在重叠图元块,则针对所述特定区域的所述优先级是基于在所述并行平铺引擎管线中当前正在被处理的所述重叠图元块的所述序列指示符被确定的;以及
基于针对所述区域确定的所述优先级来按照瓦片顺序,处理针对所述相应图元块的所述区域的瓦片的所述相应图元块的图元,由此针对所述相应图元块的所述区域的所述瓦片中的每个瓦片,如果所述相应图元块的图元存在于所述瓦片内的话,确定所述相应图元块的哪个图元存在于所述瓦片内。
2.根据权利要求1所述的方法,其中确定针对所述特定区域的所述优先级包括比较所述相应图元块的所述序列指示符与所述重叠图元块中的每个重叠图元块的所述序列指示符,其中对于所述重叠图元块中的每个重叠图元块:
如果所述相应图元块的所述序列指示符大于所述重叠图元块的所述序列指示符,则所述相应图元块的所述特定区域的所述优先级被降低;以及
如果所述相应图元块的所述序列指示符小于所述重叠图元块的所述序列指示符,则所述相应图元块的所述特定区域的所述优先级被提高。
3.根据权利要求1所述的方法,进一步包括:通过确定在所述并行平铺引擎管线中当前正在被处理的所述图元块的重叠区域来确定所述区域。
4.根据权利要求1所述的方法,其中所述区域中的每个区域是瓦片,从而针对所述相应图元块的所述瓦片中的每个瓦片来确定优先级。
5.根据权利要求1所述的方法,进一步包括:从处理新的图元块的平铺引擎管线向其他平铺引擎管线发送包括所述新的图元块的所述序列指示符和所述位置指示符的信号。
6.根据权利要求5所述的方法,其中包括所述新的图元块的所述序列指示符和所述位置指示符的所述信号从以下中的任一项被发送:(i)开始处理所述新的图元块的平铺引擎管线,或者(ii)控制模块。
7.根据权利要求1所述的方法,进一步包括:在正在处理相应图元块的所述平铺引擎管线中的每个平铺引擎管线中:
(i)接收包括另一平铺引擎管线正在开始处理的新的图元块的序列指示符和位置指示符的信号;以及
(ii)响应于接收所述信号,基于接收的所述信号来重新确定针对所述相应图元块的区域的优先级。
8.根据权利要求7所述的方法,进一步包括:通过确定在所述并行平铺引擎管线中当前正在被处理的所述图元块中的重叠区域来确定所述区域,其中正在处理相应图元块的所述平铺引擎管线中的每个平铺引擎管线响应于接收所述信号而重新确定所述区域。
9.根据权利要求1所述的方法,进一步包括:基于第二平铺引擎管线正在开始处理的新的图元块的序列指示符和位置指示符来重新确定第一平铺引擎管线正在处理的第一图元块的区域的优先级。
10.根据权利要求9所述的方法,进一步包括:通过确定在所述并行平铺引擎管线中当前正在被处理的所述图元块中的重叠区域来确定所述区域,其中控制模块基于所述新的图元块的所述位置指示符来重新确定由所述平铺引擎管线正在处理的所述图元块的所述区域。
11.根据权利要求1所述的方法,进一步包括:从已经结束处理重叠区域中的图元块的图元的平铺引擎管线,发送指示所述重叠区域中的所述图元块的所述图元已经被处理的信号,其中在所述重叠区域中存在至少一个重叠图元块在至少一个其他平铺引擎管线中当前正在被处理。
12.根据权利要求1所述的方法,进一步包括:在正在处理相应图元块的每个平铺引擎管线中:
(i)接收指示重叠区域中的另一图元块的图元在另一平铺引擎管线中已经被处理的信号;以及
(ii)响应于接收所述信号,基于接收的所述信号来提高针对所述相应图元块的所述重叠区域的所述优先级。
13.根据权利要求1所述的方法,进一步包括:
(i)接收指示重叠区域中的第一图元块的图元在第一平铺引擎管线中已经被处理的信号;以及
(ii)响应于接收所述信号,提高针对第二图元块的所述重叠区域的所述优先级。
14.根据权利要求1所述的方法,其中所述处理所述相应图元块的图元包括:
在多个迭代中的每个迭代中针对一个或者多个瓦片的集合处理图元,其中在每个迭代中,从尚未针对所述相应图元块而被处理的所述瓦片中基于所述区域的所述优先级来选择一个或者多个瓦片的所述集合。
15.根据权利要求14所述的方法,其中:
(i)如果一个或者多个瓦片的多个集合是来自针对尚未被处理的瓦片的具有相等最高优先级的区域,则基于所述瓦片的光栅扫描顺序而选择一集合;或者
(ii)如果一个或者多个瓦片的多个集合是来自针对尚未被处理的并且与当前正在被处理的所述图元块的不同的其他图元块重叠的瓦片的、具有相等最高优先级的区域,则基于所述图元块的所述重叠的其他图元块的所述序列指示符来选择一集合。
16.根据权利要求1所述的方法,其中所述处理针对所述相应图元块的所述区域的瓦片的所述相应图元块的图元包括:向所述瓦片的显示列表写入被确定存在于所述相应瓦片内的所述相应图元块的所述图元的图元标识符,
其中所述向瓦片的所述显示列表写入所述相应图元块的所述图元的图元标识符包括:检查在另一平铺引擎管线中当前正在被处理的具有较早序列号的图元块不具有要写入所述瓦片的所述显示列表的进一步的图元标识符。
17.根据权利要求1所述的方法,其中图元块的所述位置指示符是所述图元块的包围盒。
18.一种配置以在图形处理系统内处理图元块的序列的平铺单元,所述图形处理系统配置以使用被子划分为多个瓦片的绘制空间,其中所述平铺单元被配置以使用相应位置指示符来指示所述绘制空间内的所述图元块中的每个图元块的位置,以及使用相应序列指示符来指示所述图元块的序列内的所述图元块中的每个图元块的位置,
其中所述平铺单元包括多个平铺引擎管线,所述多个平铺引擎管线配置以并行地处理相应图元块,
以及其中对于多个所述相应图元块的中的每个相应图元块,所述平铺单元被配置以:
确定对于所述相应图元块的多个区域中的每个区域的优先级,所述区域中的每个区域包括一个或者多个瓦片,其中如果在并行平铺引擎管线中当前正在被处理的所述图元块的所述位置指示符指示所述相应图元块的特定区域内存在重叠图元块,则针对所述特定区域的所述优先级是基于在所述并行平铺引擎管线中正在被处理的所述重叠图元块的所述序列指示符被确定的;以及
使用被设置以处理所述相应图元块的所述平铺引擎管线基于针对所述区域的确定的所述优先级来按照瓦片顺序,针对所述相应图元块的所述区域的瓦片来处理所述相应图元块的图元,由此针对所述相应图元块的所述区域的所述瓦片中的每个瓦片,如果所述相应图元块的图元存在于所述瓦片内的话,确定所述相应图元块的哪个图元存在于所述瓦片内。
19.根据权利要求18所述的平铺单元,其中所述平铺单元配置以使用以下中的任一项来确定针对所述相应图元块的所述多个区域的所述优先级:(i)被设置以处理所述相应图元块的所述平铺引擎管线,或者(ii)所述平铺单元的控制模块。
20.一种具有在其上编码的计算机可读代码的计算机可读存储介质,当所述代码在计算机上运行时被适配以执行根据权利要求1至17中的任一项所述的方法的步骤。
21.一种具有在其上编码的计算机可读代码的计算机可读存储介质,所述计算机可读代码用于生成根据权利要求18或19的平铺单元。
CN201510075863.XA 2014-02-13 2015-02-12 并行平铺引擎管线中的图元块的处理 Active CN104850393B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1402492.1 2014-02-13
GB1402492.1A GB2517809B (en) 2014-02-13 2014-02-13 Processing of primitive blocks in parallel tiling engine pipes

Publications (2)

Publication Number Publication Date
CN104850393A CN104850393A (zh) 2015-08-19
CN104850393B true CN104850393B (zh) 2019-12-27

Family

ID=50440063

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510075863.XA Active CN104850393B (zh) 2014-02-13 2015-02-12 并行平铺引擎管线中的图元块的处理

Country Status (4)

Country Link
US (2) US9524534B2 (zh)
CN (1) CN104850393B (zh)
DE (1) DE102015101543A1 (zh)
GB (1) GB2517809B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9842424B2 (en) * 2014-02-10 2017-12-12 Pixar Volume rendering using adaptive buckets
GB2526598B (en) 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
US10163180B2 (en) * 2015-04-29 2018-12-25 Qualcomm Incorporated Adaptive memory address scanning based on surface format for graphics processing
KR102646906B1 (ko) * 2016-11-17 2024-03-12 삼성전자주식회사 타일 기반 렌더링 방법 및 장치
KR102637736B1 (ko) * 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
GB2578320B (en) 2018-10-23 2023-07-05 Advanced Risc Mach Ltd Graphics processing
CN113256478A (zh) * 2020-02-13 2021-08-13 畅想科技有限公司 用于在图形处理系统中存储图元的方法和图元块生成器
CN113747040B (zh) * 2020-05-29 2022-09-13 杭州海康威视数字技术股份有限公司 区域显示方法、装置和电子设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4570233A (en) * 1982-07-01 1986-02-11 The Singer Company Modular digital image generator
US5321805A (en) * 1991-02-25 1994-06-14 Westinghouse Electric Corp. Raster graphics engine for producing graphics on a display
US7755629B2 (en) * 2004-06-30 2010-07-13 Canon Kabushiki Kaisha Method of rendering graphic objects
GB0524804D0 (en) * 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
GB0723536D0 (en) * 2007-11-30 2008-01-09 Imagination Tech Ltd Multi-core geometry processing in a tile based rendering system
GB0900700D0 (en) * 2009-01-15 2009-03-04 Advanced Risc Mach Ltd Methods of and apparatus for processing graphics
US8854384B2 (en) * 2010-04-06 2014-10-07 Broadcom Corporation Method and system for processing pixels utilizing scoreboarding
US9317948B2 (en) * 2012-11-16 2016-04-19 Arm Limited Method of and apparatus for processing graphics
US9552665B2 (en) * 2013-03-18 2017-01-24 Arm Limited Hidden surface removal in graphics processing systems

Also Published As

Publication number Publication date
US10109029B2 (en) 2018-10-23
US20170061571A1 (en) 2017-03-02
US9524534B2 (en) 2016-12-20
GB201402492D0 (en) 2014-04-02
CN104850393A (zh) 2015-08-19
DE102015101543A1 (de) 2015-08-13
GB2517809A (en) 2015-03-04
US20150228049A1 (en) 2015-08-13
GB2517809B (en) 2015-07-22

Similar Documents

Publication Publication Date Title
CN104850393B (zh) 并行平铺引擎管线中的图元块的处理
CN109413403B (zh) 一种渲染3d场景的几何结构的渲染方法和图形处理系统
EP3048582B1 (en) Rendering views of a scene in a graphics processing unit
EP3671651B1 (en) Primitive block generator for graphics processing systems
US11158023B2 (en) Primitive block-based rasterization in graphics processing systems
CN110363856B (zh) 混合硬件
US11430164B2 (en) Tile-based scheduling
US11967012B2 (en) Efficient convolution operations
CN110660069A (zh) 保守光栅化
GB2580166A (en) Primitive block-based rasterization in graphics processing systems
GB2580170A (en) Transformed geometry data cache for graphics processing systems
GB2570172A (en) Conservative Rasterization Using Gradients
GB2597370A (en) Transformed geometry data cache for graphics processing systems
US20230044249A1 (en) Efficient convolution operations with a kernel shader
GB2595782A (en) Tile-based scheduling
GB2580168A (en) Primitive block generator for graphics processing systems
GB2610081A (en) Primitive block generator for graphics processing systems
GB2610919A (en) Tag buffer for graphics processing systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant