CN113256477B - 用于在图形处理系统中存储平铺信息的方法和平铺引擎 - Google Patents
用于在图形处理系统中存储平铺信息的方法和平铺引擎 Download PDFInfo
- Publication number
- CN113256477B CN113256477B CN202110179418.3A CN202110179418A CN113256477B CN 113256477 B CN113256477 B CN 113256477B CN 202110179418 A CN202110179418 A CN 202110179418A CN 113256477 B CN113256477 B CN 113256477B
- Authority
- CN
- China
- Prior art keywords
- tile
- primitive
- block
- entry
- primitive block
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本申请提供了用于在图形处理系统中存储平铺信息的方法和平铺引擎,其中图块被分组成图块组,图元被分组成图元块。方法包括,针对每个图块组:针对图块组中的每个图块,确定每个图元块的哪些图元与图块相交;针对包括与图块组中的至少一个图块相交的至少一个图元的每个图元块,在存储器中存储可变长度控制数据块;以及在存储器中存储控制流,控制流包括用于每个图元块的固定大小的图元块条目,每个图元块包括与图块组的至少一个图块相交的至少一个图元,每个图元块条目标识对应的图元块的控制数据块在存储器中的位置。每个图元块条目可以包括有效图块信息,有效图块信息标识图块组中的哪些图块对于对应的图元块有效。
Description
技术领域
本申请涉及用于在图形处理系统中,特别是在基于图块的渲染图形处理系统中存储平铺信息的数据结构、方法和平铺引擎。
背景技术
图形处理系统被配置成例如从在计算机系统上运行的应用程序(例如游戏应用程序)接收图形数据,并对来自图形数据的图像进行渲染以提供渲染输出。举例来说,应用程序可以生成场景的3D模型并输出表示场景中的对象的几何结构数据。特定来说,应用程序可以使用一个或多个基元(即,简单的几何形状,例如但不限于可以被应用纹理的矩形、三角形、线和点)来表示每个对象,所述多个基元由一个或多个顶点的位置限定。在这些状况下,由应用程序输出的几何结构数据可以包含标识每个顶点的信息(例如顶点在世界空间中的坐标)和指示由顶点形成的基元的信息。然后,图形处理系统将接收到的几何结构数据转换成可以在屏幕上显示的图像。
图形处理系统可以例如实施即时模式渲染(IMR)或基于平铺块的渲染(TBR)。在IMR中,将整个场景作为整体进行渲染。与此对比,在TBR中,使用被划分成被称为平铺块的子区段的渲染空间对场景进行渲染,其中可针对每个平铺块独立地执行渲染过程的至少一部分。平铺块可以具有任何合适形状,但通常为矩形(其中术语“矩形”包含正方形)。TBR的优点为,可以在渲染期间使用快速、片上存储器以用于颜色、深度和模板缓冲区操作,这与IMR相比允许显著减少系统存储器带宽,而不需要足够大以同时存储用于整个场景的数据的片上存储器。
TBR涉及两个关键阶段:几何处理阶段;以及光栅化阶段。在几何处理阶段期间,将从应用程序(例如游戏应用程序)接收的几何结构数据(例如限定基元的顶点)从世界空间坐标变换成屏幕空间坐标。然后创建至少部分地落在平铺块的边界内的经过变换的基元(例如三角形)的每平铺块列表。在光栅化阶段期间,对每个平铺块单独地渲染(即,将经过变换的基元映射到像素并且针对平铺块中的每个像素标识颜色)。这可以包括标识哪个(哪些)基元在每个像素处是可见的。接着可以由每个像素处的可见基元的外观确定所述像素的颜色,所述可见基元可以由应用于所述像素处的纹理和/或在所述像素上运行的像素着色器程序限定。像素着色器程序描述将针对给定像素执行的操作。对每个平铺块单独地渲染会使图形处理系统能够在光栅化阶段中对特定平铺块进行渲染时仅检索与所述平铺块相关的经过变换的基元数据,这会使针对存储器(例如中间缓冲区)的带宽要求保持为低。一旦已经针对平铺块中的每个像素标识出颜色值,就将平铺块的颜色值写出到存储器(例如帧缓冲区)。一旦已经渲染整个场景(即,一旦已经针对所有平铺块的像素确定了颜色值),场景就可以例如显示在屏幕上。
图1示出示例TBR图形处理系统100。系统100包括存储器1021、1022、1023、1024、几何处理逻辑104和光栅化逻辑106。存储器1021、1022、1023和1024中的两个或多个可以在同一物理存储器单元中实现。
几何处理逻辑104实施TBR的几何处理阶段。几何处理逻辑104包括变换逻辑108、图元块生成器110,以及平铺引擎112。变换逻辑108从应用程序(例如游戏应用程序)接收几何结构数据(例如顶点、基元和/或补片)并将几何结构数据变换到渲染空间(例如屏幕空间)中。变换逻辑108还可以执行例如裁剪和剔除的功能以移除落在视锥外的几何结构数据(例如基元或补片),和/或应用所属领域的技术人员所知的照明/属性处理。
图元块生成器110将经过变换的图元(即,与之相关的经过变换的几何结构数据)存储在图元块中的存储器1022中。图元块是一种数据结构,其中一个或多个图元(例如,与之相关的经过变换的几何结构数据)被存储在一起。在图元块中存储图元可以允许将一组图元的经过变换的几何结构数据更有效地存储在存储器1022中。具体而言,用于基元的经过变换的几何结构数据通常包括用于多个顶点的经过变换的顶点信息,其中这些顶点在多个基元之间共享(或为多个基元所共有)。因此,在同一基元块中的多个基元共享顶点的状况下,与所述顶点有关的数据只需在所述基元块中存储一次。
可以使用任何合适的方法或技术将经过变换的图元分组成图元块。例如,在一些状况下,可以基于经过变换的图元到达图元块生成器110的顺序将经过变换的图元分组成图元块。在这些状况下,每个图元块可以具有最大大小(例如,就位或字节而言)、可以属于图元块的最大图元数量和/或可以属于图元块的最大顶点数,并且图元块生成器110可被配置成将图元添加到当前图元块中,直到达到最大值中的一个或多个最大值。
在其他状况下,可以基于图元在渲染空间中的位置来将图元分组成图元块,使得空间上类似的图元位于相同的图元块中。例如,可以将渲染空间划分成多个宏区域,这些宏区域可以涵盖多个图块(例如,被划分成1024个32×32的图块的1024×1024的渲染空间可以具有16个256×256的宏区域),并且图元块生成器110可以被配置成维护每一个宏区域的图元块。然后,当图元块生成器110接收到图元时确定该图元至少部分地落在哪个或哪些宏区域内。如果图元块生成器110确定图元至少部分地落在仅一个宏区域内,则图元块生成器110可以将图元(即,与图元相关的经过变换的几何结构数据)放置在该宏区域的图元块中。如果图元块生成器110确定图元落在一个以上的宏区域内,则图元块生成器110可以被配置成(i)选择图元落入的宏区域中的一个宏区域(例如,第一宏区域),并且将图元(即,与之相关的经过变换的几何结构数据)放置在所选择的宏区域的图元块中;或者(ii)将图元(即,与之相关的经过变换的几何结构数据)放置在图元至少部分地落入的宏区域中的每一个宏区域的图元块中。
将图元块与标识图元块在存储器中的位置的信息一起提供给平铺引擎112。平铺引擎112从经过变换的几何结构数据生成用于每个平铺块的经过变换的基元的列表,所述经过变换的基元至少部分地落在所述平铺块内。所述列表可以被称作显示列表或经过变换的显示列表。在一些状况下,经过变换的显示列表可以包括到与至少部分地落在图块内的图元相关的经过变换的几何结构数据(例如,顶点数据)的指针或链路。例如,图2示出了用于图块的示例性显示列表202,该示例性显示列表包括用于每个图元块的图元块条目204、206,每个图元块包括至少部分地落在该图块的边界内的至少一个图元。每个图元块条目204、206包括标识图元块在存储器中的位置(例如,图元块在存储器中的地址)的信息208和标识图元块的哪些图元至少部分地落在图块的边界内的信息210。如图2所示,标识图元块的哪些图元至少部分地落在图块内的信息可以是掩码的形式,该掩码包括图元块中的每一个图元的位,指示该图元是否至少部分地落在图块的边界内。
返回图1,光栅化逻辑106实现TBR的光栅化阶段。具体而言,光栅化逻辑106通过从存储器1023提取平铺块的显示列表,然后从存储器1022提取落在平铺块内的由所述平铺块的显示列表指示的基元的经过变换的几何结构数据,以逐平铺块的方式渲染基元;并基于经过变换的几何结构数据来渲染所述平铺块的基元。
在一些状况下,光栅化逻辑106可包括光栅化器114、隐藏表面移除(HSR)逻辑116和纹理化/着色逻辑118。在这些状况下,光栅化器114从存储器1023提取每个显示列表,并且针对每个显示列表从存储器1022提取针对落在由对应的显示列表指定的平铺块内的基元的经过变换的几何结构数据,并将每个基元转换成基元片段的集合。术语“片段”在本文中用于意指采样点处的基元的样本,所述样本将被处理以对图像的像素进行渲染。在一些示例中,可以存在像素到片段的一对一映射。不过,在其他示例中,片段可以多于像素,并且此过采样可以允许像素值的较高质量渲染,例如通过促进可以应用于多个片段以用于对每个像素值进行渲染的抗混叠和其他滤波器。
然后将特定平铺块的基元片段提供到HSR逻辑116,所述HSR逻辑通过对基元片段执行深度测试而移除隐藏(例如,被其他基元片段隐藏)的基元片段。接着将其余片段(在隐藏表面移除之后)传递到纹理化/着色逻辑118,所述纹理化/着色逻辑对基元片段执行纹理化和/或着色以确定被渲染图像的像素值。接着,将平铺块的被渲染像素值存储在存储器1024(例如,帧缓冲区)中。
光栅化逻辑106处理每个平铺块,并且当整个图像已经被渲染并存储在存储器1024(例如,帧缓冲区)中时,图像可以从图形处理系统100输出并以任何合适的方式使用,例如,显示在显示器上、存储在存储器中或传输到另一设备等。在片段在由纹理化/着色逻辑118处理之前由HSR逻辑116处理的意义上,图1所展示的TBR图形处理系统100是“推迟的”渲染系统。在其他示例中,图形处理系统可能并非推迟的渲染系统,在此状况下,将会在将HSR应用于片段之前将纹理化/着色应用于那些片段。
尽管几何处理逻辑在图中示为与光栅化逻辑分离,但在一些实施方案中,几何处理逻辑和光栅化逻辑可共享一些资源。例如,图形处理系统可以使用统一着色方法,其中相同的物理执行单元可以用于执行在几何处理阶段中使用的指令(例如,执行顶点处理)并执行在光栅化阶段中使用的指令(例如,执行片段处理)。
下文描述的实施方案仅以示例的方式提供,并且不限制解决用于在图形处理系统中平铺基元的已知方法和系统的任何或所有缺点的实现方式。
发明内容
提供本发明内容是为了介绍在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
本文描述了用于在存储器中存储平铺数据的数据结构、方法和平铺引擎,其中图块被分组成图块组,并且图元被分组成图元块。该方法包括,针对每个图块组:针对图块组中的每一个图块,确定每个图元块的哪些图元与该图块相交;针对包括与图块组中的至少一个图块相交的至少一个图元的每个图元块,在存储器中存储可变长度的控制数据块;以及在存储器中存储控制流,该控制流包括用于每个图元块的固定大小的图元块条目,每个图元块包括与图块组的至少一个图块相交的至少一个图元,每个图元块条目标识该图元块的控制数据块在存储器中的位置。每个图元块可以包括有效图块信息,该有效图块信息标识图块组中的哪些图块对于图元块有效。如果图元块中的至少一个图元与图块相交,则该图块是针对图元块的有效图块。
第一方面提供了一种在基于图块的图形处理系统中平铺图元的方法,其中渲染空间被划分成多个图块,所述多个图块被分组成多个图块组,每个图块组包括至少两个图块,该方法包括,针对图块组:针对图块组中的每一个图块,确定多个图元块中的每一个图元块的哪些图元与该图块相交,每个图元块包括至少一个图元;针对包括与图块组中的至少一个图块相交的至少一个图元的每个图元块,在存储器中存储可变长度的控制数据块;以及在存储器中存储控制流,该控制流包括用于每个图元块的固定大小的图元块条目,每个图元块包括与图块组的至少一个图块相交的至少一个图元,每个图元块条目标识对应的图元块的控制数据块在存储器中的位置。
每个图元块条目可以包括有效图块信息,该有效图块信息标识图块组中的哪些图块对于对应的图元块有效,如果图元块中的至少一个图元与图块相交,则该图块可以是针对图元块的有效图块。
有效图块信息可以包括有效图块掩码,该有效图块掩码包括图块组中的每一个图块的位,该位指示该图块是否是针对图元块的有效图块。
控制流可以包括至少一种其他类型的条目,该至少一种其他类型的条目中的每一个条目可以包括有效图块信息,该有效图块信息指示图块组中的图块都不是有效图块。
每个控制数据块可以包括标识对应的图元块的哪些图元与每个图块相交的信息。
至少一个控制数据块可以包括至少一个图元掩码,该至少一个图元掩码包括用于对应的图元块中的每一个图元的位,该位标识该图元是否与图块组的一组一个或多个图块相交。
至少一个控制数据块可以包括与对应的图元块中的至少一个图元相交的图块组的每一个图块的图元掩码,每个图元掩码可以包括对应的图元块中的每一个图元的位,该位标识该图元是否与对应的图块相交。
每个控制数据块可以包括标识对应的图元块在存储器中的地址的信息。
每个控制数据块可以包括图元块标头,该图元块标头指示:图块组的图块中的一个或多个图块是否与对应的图元块的相同的图元相交以及/或者图块组中的图块中的一个或多个图块是否与对应的图元块中的所有图元相交。
每个图元块条目可以包括数据指针,该数据指针标识对应的控制数据块在存储器中的位置;控制流可以包括指定控制数据基址的至少一部分的至少一个控制数据基址条目;并且存储器中的控制数据块的地址可以由控制数据基址和对应的图元块条目的数据指针的组合生成。
每个数据指针可以包括到由控制数据基址标识的存储器的一部分中的偏移。
每个控制数据基址条目可以指定完整的控制数据基址。
每个控制数据基址条目可以仅指定完整的控制数据基址的一部分。
控制流可以包括指定控制数据基址的第一部分的第一控制数据基址条目和指定控制数据基址的第二部分的第二控制数据基址条目。
每个图元块条目可以包括图元块标头,该图元块标头包括描述对应的图元块和/或对应的控制数据块的信息。
将控制流存储在存储器中可以包括将控制流条目划分成多个控制流块;其中除最后一个控制流块之外,每个控制流块中的最后一个条目可以是标识下一个控制流块在存储器中的位置的链路条目。
控制流还可以包括标识控制流的结束的终止条目,该终止条目可以是控制流中的最后一个条目。
每个图元块条目可以是32位。
每个图块组可以在渲染空间中包括N×M块的图块,其中N和M是大于或等于1的整数。N和M可等于2。
第二方面提供了一种在图形处理系统中使用的平铺引擎,用于将图元平铺到渲染空间的图块组中的图块中,该平铺引擎包括:平铺逻辑,该平铺逻辑被配置成针对图块组中的每个图块,确定多个图元块中的每一个图元块的哪些图元与该图块相交,每个图元块包括至少一个图元;控制数据块生成器,该控制数据块生成器被配置成针对包括与图块组中的至少一个图块相交的至少一个图元的每个图元块,在存储器中存储可变长度的控制数据块;以及控制流生成器,该控制流生成器被配置成在存储器中存储控制流,该控制流包括用于包括与图块组中的至少一个图块相交的至少一个图元的每个图元块的固定大小的图元块条目,每个图元块条目标识对应的图元块的控制数据块在存储器中的位置。
第三方面提供了一种对包括渲染空间的至少两个图块的图块组的控制流进行解码的方法,该方法包括:接收图块组的控制流,该控制流包括一个或多个固定长度的图元块条目,每个图元块条目标识对应的图元块的控制数据块在存储器中的位置,针对图元块条目中的至少一个图元块条目:(a)确定图块组的当前图块对于对应的图元块是否有效,如果图元块中的至少一个图元与图块相交,则该图块是针对图元块的有效图块;(b)响应于确定当前图块对于对应的图元块有效,从存储器中所标识的位置检索对应的控制数据块;(c)从所检索的控制数据块标识图元块在存储器中的地址以及与渲染当前图块相关的该图元块的图元;(d)输出信息,该信息标识图元块在存储器中的地址以及与渲染当前图块相关的该图元块的图元。
每个图元块条目可包括有效图块信息,该有效图块信息标识图块组中的哪些图块对于对应的图元块有效;并且该方法还可以包括针对控制流的一组条目:为该组条目中与当前图块相对应的每个条目选择有效图块信息的一部分;对所选择的部分执行操作以确定当前图块对于该组条目中的任何图元块条目是否有效;并且如果操作结果指示当前图块针对该组条目中的至少一个图元块条目有效,则仅对该组条目中的图元块条目执行(a)–(d)。
每个条目的有效图块信息可包括有效掩码,该有效掩码具有用于图块组的每个图块的位,该位指示该图块对于条目是否有效;每个条目的有效图块信息的所选择的部分可以是与当前图块相对应的有效图块掩码的位;并且对所选择的部分执行的运算可以是“或”运算。
第四方面提供了一种控制流解码器,用于对包括渲染空间的至少两个图块的图块组的控制流进行解码,该控制流解码器包括:获取模块,该获取模块被配置成从存储器中获取图块组的控制流,该控制流包括一个或多个固定长度的图元块条目,每个图元块条目标识对应的图元块的控制数据块在存储器中的位置;图元块条目分析器,该图元块条目分析器被配置成针对一个或多个图元块条目中的至少一个图元块条目:确定图块组的当前图块对于对应的图元块是否有效,如果图元块中的至少一个图元与图块相交,则该图块是针对图元块的有效图块;响应于确定当前图块对于对应的图元块是有效图块,从存储器中所标识的位置检索对应的控制数据块;从所检索的控制数据块标识图元块在存储器中的地址以及与渲染当前图块相关的该图元块的图元;以及输出信息,该信息标识图元块在存储器中的地址以及与渲染当前图块相关的该图元块的图元。
第五方面提供了一种在基于图块的图形处理系统中平铺图元的方法,其中渲染空间被划分成多个图块,所述多个图块被分组成多个图块组,每个图块组包括至少两个图块,该方法包括,针对图块组:针对图块组中的每一个图块,确定多个图元块中的每一个图元块的哪些图元与该图块相交,每个图元块包括至少一个图元;针对包括与图块组中的至少一个图块相交的至少一个图元的每个图元块,在存储器中存储可变长度的控制数据块;以及在存储器中存储控制流,该控制流包括用于每个图元块的固定大小的图元块条目,每个图元块条目包括(i)标识图块组中的哪些图块针对图元块有效的有效图块信息,以及(ii)标识图元块的控制数据块在存储器中的位置的数据指针,如果图元块中的至少一个图元与图块相交,则该图块是针对图元块的有效图块。
第六方面提供了一种在图形处理系统中使用的平铺引擎,用于将图元平铺到渲染空间的图块组中的图块中,该平铺引擎包括:平铺逻辑,该平铺逻辑被配置成针对图块组中的每一个图块确定多个图元块中的每一个图元块的哪些图元与该图块相交,每个图元块包括至少一个图元;控制数据生成器,该控制数据生成器被配置成针对包括与图块组中的至少一个图块相交的至少一个图元的每个图元块,在存储器中存储可变长度的控制数据块;以及控制流生成器,该控制流生成器被配置成将控制流存储在存储器中,该控制流包括用于每个图元块的固定大小的图元块条目,每个图元块包括与图块组中的至少一个图块相交的至少一个图元,每个图元块条目包括(i)标识图块组中哪些图块针对图元块有效的有效图块信息,以及(ii)标识该图元块的控制数据块在存储器中的位置的数据指针,如果图元块中的至少一个图元与图块相交,则该图块是针对该图块的有效图块。
第七方面提供了一种对用于包括渲染空间的至少两个图块的图块组的控制流进行解码来生成图块组中的当前图块的显示列表的方法,该方法包括:接收图块组的控制流,该控制流包括一个或多个固定长度的图元块条目,每个图元块条目包括(i)标识图块组中的哪些图块针对图元块有效的有效图块信息,以及(ii)标识该图元块的控制数据块在存储器中的位置的数据指针,如果图元块中的至少一个图元与图块相交,则该图块是针对图元块的有效块;针对图元块条目中的至少一个图元块条目:从有效图块信息确定当前图块对于对应的图元块是否有效;响应于确定当前图块对于对应的图元块有效,从数据指针标识对应的控制数据块在存储器中的地址;从存储器中所标识的地址检索对应的控制数据块;从所检索的控制数据块标识图元块在存储器中的地址以及该图元块的与渲染当前图块相关的图元;以及输出信息,该信息标识图元块在存储器中的地址以及该图元块的与渲染当前图块相关的图元。
第八方面提供了一种控制流解码器,用于对包括渲染空间的至少两个图块的图块组的控制流进行解码,以生成图块组中当前图块的显示列表,该控制流解码器包括:获取模块,该获取模块被配置成从存储器中获取图块组的控制流,该控制流包括一个或多个固定长度的图元块条目,每个图元块条目包括(i)有效图块信息,该有效图块信息标识图块组中的哪些图块针对图元块有效,以及(ii)标识该图元块的控制数据块在存储器中的位置的数据指针,如果图元块中的至少一个图元块与图块相交,则该图块是针对图元块的有效块;图元块条目分析器,该图元块条目分析器被配置成针对图元块条目中的至少一个图元块条目:从有效图块信息确定当前图块对于对应的图元块是否有效;响应于确定当前图块对于对应的图元块有效,从数据指针标识对应的控制数据块在存储器中的地址;从数据指针标识对应的控制数据块在存储器中的地址;从存储器中所标识的地址检索对应的控制数据块;从所检索的控制数据块标识图元块在存储器中的地址以及与渲染当前图块相关的该图元块的图元;以及输出信息,该信息标识图元块在存储器中的地址以及该图元块的与渲染当前图块相关的图元。
本文所述的平铺引擎、控制流解码器和图形处理系统可以体现在集成电路上的硬件中。可以提供一种在集成电路制造系统中制造体现本文所述的平铺引擎、控制流解码器和/或图形处理系统的集成电路的方法。可以提供集成电路限定数据集,当在集成电路制造系统中进行处理时,该集成电路限定数据集将系统配置成制造体现本文所述的平铺引擎、控制流解码器或图形处理系统的集成电路。可以提供一种非暂态计算机可读存储介质,在其上存储有本文所述的平铺引擎、控制流解码器或图形处理系统的计算机可读描述,当在集成电路制造系统中进行处理时,该可读描述致使集成电路制造系统制造体现平铺引擎、控制流解码器或图形处理系统的集成电路。
可以提供一种集成电路制造系统,该集成电路制造系统包括:非暂态计算机可读存储介质,其上存储有本文所述的平铺引擎、控制流解码器或图形处理系统的计算机可读描述;布局处理系统,该布局处理系统被配置成处理计算机可读描述,以生成体现平铺引擎、控制流解码器或图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置成根据电路布局描述制造体现平铺引擎、集成电路生成系统或图形处理系统的集成电路。
可以提供用于执行如本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂态计算机可读存储介质,当在计算机系统处执行时,所述计算机可读指令使计算机系统执行如本文所述的方法。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1是示例的基于平铺块的渲染图形处理系统的框图;
图2是示例性显示列表的示意图;
图3是示出用于一组图块的示例性控制流的示意图;
图4是示出用于一组图块的第一示例性控制结构的示意图,该组图块包括具有固定大小的条目的控制流和链接到该控制流的多个控制数据块;
图5是示出用于示例性2×2图块组的示例性有效图块掩码的示意图;
图6是用于一组图块的第二示例性控制结构的示意图,该组图块包括具有固定大小的条目的控制流和链接到该控制流的多个控制数据块;
图7是示出一组示例性控制流条目的示意图,其中每个条目包括有效信息字段;
图8是示出根据示例性控制数据基址条目和图元块条目生成控制数据块的地址的示意图;
图9是示出根据一组示例性控制数据基址条目和图元块条目生成控制数据块的地址的示意图;
图10是示出包括多个控制数据基址条目的第一组示例性控制流条目的示意图;
图11是示出包括多个控制数据基址条目的第二组示例性控制流条目的示意图;
图12是示例性平铺引擎的框图;
图13是示出边界框平铺方法的示意图;
图14是生成图4或图6的控制结构的示例性方法的流程图;
图15是实现图14的方法的步骤1410的示例性方法的流程图,其中将控制流存储在控制流块中;
图16是示例性控制流解码器的框图;
图17是处理控制流的图元块条目的示例性方法的流程图;
图18是处理控制流的条目的示例性方法的流程图;
图19是确定是否可以针对图块跳过一组条目的示例性方法的流程图;
图20是包括图12的平铺引擎和图16的控制流解码器的示例性的基于图块的渲染图形处理系统的框图;
图21是示出当以本文所述的方式存储平铺数据时的总带宽占针对多个基准按图块存储单独的显示列表时的总带宽的百分比的图;
图22是示出以本文所述的方式存储平铺数据的页面总数占针对多个基准按图块存储单独的显示列表时的页面总数的百分比的图;
图23是示出以本文所述的方式存储平铺数据时的总平铺引擎突发占针对多个基准按图块存储单独的显示列表时的平铺引擎突发的百分比的图;
图24是示出以本文所述的方式存储平铺数据时的总平铺引擎掩码写入占针对多个基准按图块存储单独的显示列表时的平铺引擎掩码写入的百分比的图;
图25是示出以本文所述的方式存储平铺数据时的总平铺引擎突发占按图块组存储显示列表时的平铺引擎突发的百分比的图,其中可变长度控制数据针对多个基准被存储为控制流的一部分;
图26是其中可以实现本文所述的平铺引擎、控制流解码器或图形处理系统的示例性计算机系统的框图;以及
图27是用于生成体现本文所述的平铺引擎、控制流解码器和/或图形处理系统的集成电路的示例性集成电路制造系统的框图。
附图示出了各种示例。技术人员将理解,附图中所示的元件边界(例如,框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同附图标记来指示相似特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施方案,并且对所公开的实施方案的各种修改对于所属领域的技术人员而言将是显而易见的。仅通过示例的方式描述实施方案。
如上所述,在将经过变换的图元(例如,与之相关的经过变换的几何结构数据)存储在图元块中时,图块的显示列表可以包括每个图元块的条目,每个图元块包括至少部分地落在该图块的边界内的至少一个图元。由于图元块可以包括至少部分地落在多个图块的边界内的图元,因此在多个图块中针对相同的图元块可以存在一个图元块条目。为了减少图元块数据的这种重复,可以将图块划分成一组N×M图块,其中N和M是大于或等于1的整数,并且按图块组生成标识与该组中的每一个图块相关的图元块(及其图元)的控制流。
例如,英国专利号2466576描述了为每组图块存储控制流,该控制流包括用于每个图元块的图元块条目,每个图元块包括至少部分地落在该组中的至少一个图块的边界内的至少一个图元。每个图元块条目包括:(i)标识哪些图块针对该图元块有效的信息,(ii)标识图元块在存储器中的位置的信息,以及(iii)针对每个有效图块,标识至少部分地落在该图块的边界内的该图元块的图元的信息。如果在图元块中至少有一个图元至少部分地落在该图块的边界内,则认为该图块对于图元块有效。可替换地,至少部分地落在图块的边界内的图元可以被描述为与该图块相交的图元。
图3示出了英国专利号2466576的用于包括四个图块的图块组的控制流302的示例。控制流302包括针对图块组中的至少一个图块有效的每个图元块的图元块条目304、306。每个图元块条目304、306包括图元块标头308和图元块指针310。图元块条目304、306可以可选地包括图元掩码数据312。图元块标头308包括标识图块组中的哪些图块针对图元块有效的信息。例如,如图3所示,图元块标头308可包括用于图块组中的每一个图块的指示图块针对图元块是否有效的图元掩码格式字段314、316、318和320。例如,每个图元掩码格式字段314、316、318、320可以包括两个位,并且“00”可以指示图块针对图元块无效;‘01’可以指示图块具有完整的图元掩码(即,图元块中的所有图元针对该图块有效);‘10’可以指示图元掩码被压缩;并且‘11’可以指示图元掩码未压缩。图元块标头308还可以包括其他信息322,诸如但不限于图元块中的顶点数,图块组中的所有图块是否有效并且具有完整的图元掩码(即,图元块中的所有图元针对图块有效),以及是否所有图块都具有相同的图元掩码。
图元块指针310包括图元块在存储器324中的地址。在一些状况下,图元块指针310还可以包括其他信息326,诸如但不限于图元块中的图元的数量。
图元掩码数据312包括标识至少部分地落在有效图块中的每一个有效图块的边界内的图元块的图元的一个或多个图元掩码。每个图元掩码可以包括图元块中的每一个图元的位,该位指示该图元是否至少部分地落在一个或多个对应的图块的边界内。在一些状况下(例如,当每个有效图块具有不同的图元掩码时),图元掩码数据312可包括用于每个有效图块的图元掩码。在其他状况下(例如,当所有有效图块具有相同的图元掩码时),图元掩码数据312可以仅包括应用于所有有效图块的一个掩码。每个图元掩码可以呈压缩或未压缩形式。
英国专利号2466576中描述的这种控制流结构的问题之一是图元掩码数据的长度可变。这是因为图元掩码数据的大小取决于有效图块的数量、图元块中图元的数量,以及图元掩码是否被压缩。由于图元掩码数据的长度可变,因此对于图元块条目也是如此。这意指为了使光栅化逻辑确定哪些图元块与图块相关,光栅化逻辑必须处理控制流中的每一个图元块条目。具体而言,光栅化逻辑必须处理每个图元块条目以确定(i)对应的图元块是否与正在处理的图块相关;以及(ii)下一个图元块条目的开始位置。在控制流中相关的图元块条目之间存在较大间隙的情况下,这可能会影响图形处理系统的性能。例如,如果存在2000个图元块条目,并且图块仅针对第一图元块条目和最后一个图元块条目有效,则在输出与第一图元块条目相关的数据的时间和输出与最后一个图元块条目相关的数据的时间之间将存在很大的间隙。
因此,本文描述了图块组控制结构以及用于生成此类控制结构的方法和平铺引擎,其中可变长度字段或图元块条目的部分被从中移除并且分开存储,使得图元块条目具有固定长度。具体而言,本文所述的图块组控制结构包括控制流,该控制流包括用于每个图元块的固定长度的图元块条目,每个图元块包括至少部分地落在图块组中至少一个图块的边界内的至少一个图元块。如英国专利号2466576的图元块条目,每个图元块条目包括标识该图元块的图块组中的有效图块的信息(例如,有效图块掩码)。然而,代替将图元块的可变长度控制数据(例如,图元掩码)包括在图元块条目中,将可变长度控制数据存储在存储器中的其他位置(例如,在另一个页面中),并且图元块条目包括指向可变长度控制数据的指针或链路。
固定长度的图元块条目允许光栅化逻辑快速识别标识每个图元块的有效图块的信息(例如,有效图块掩码),而不必处理每一个图元块条目。具体而言,光栅化逻辑不再必须处理每个图元块条目来标识下一个图元块条目开始的位置。相反,光栅化逻辑可以快速提取标识有效图块的信息(例如,有效图块掩码)以确定哪些图元块与特定图块相关。这允许栅格化逻辑快速跳过与特定图块无关的图元块条目。测试表明,这可以大大减少光栅化逻辑跳过无效条目(即,对图块无效的条目)的时间。具体而言,测试表明,在一些状况下,这可以使光栅化逻辑跳过无效的图元块条目的速率提高一倍。此外,如果图元块与图块相关,则光栅化逻辑只能必须从存储器读取该图元块的可变长度控制数据。
现在参考图4,该图示出了包括控制流402和与控制流402分开存储的每个相关图元块的控制数据块404、406的第一示例性图块组控制结构400,其中该控制流包括标识与图块组相关的图元块的一个或多个固定长度的控制条目。
具体地,控制流402包括用于每个图元块的图元块条目408、410,每个图元块包括至少部分地落在图块组中的至少一个图块的边界内的至少一个图元。在图4的示例中,控制流402包括两个图元块条目408、410,指示存在包括至少部分地落在该组中的至少一个图块的边界内的图元的两个图元块。然而,对于本领域的技术人员将显而易见的是,这仅是示例,并且可以存在任何数量的图元块条目。
每个图元块条目408、410包括指示图块组中的哪些图块对于对应的图元图块有效的有效图块信息412,以及标识对应的控制数据块在存储器中的位置的数据指针414。每个图元块条目408、410还可以可选地包括图元块标头422,该图元块标头包括关于图元块和/或其与图块组的图块的关系的信息。
有效图块信息412可以包括有效图块掩码,该有效图块掩码包括图块组中的每一个图块的位,该位指示该图块针对图元块是否有效。例如,用于包括四个图块的图块组的有效图块掩码可以包括四个位。在一些状况下,“0”可以指示图块针对图元块无效,并且“1”可以指示图块针对图元块有效。然而,对于本领域的技术人员将显而易见的是,这仅是示例,并且“0”可以指示对应的图块有效。如上所述,如果图元块包括至少部分地落在图块组中的至少一个图块的边界内的至少一个图元,则该图块针对图元块有效。
现在参考图5,该图示出了用于包括四个图块(即,包括2×2块的图块的图块组)的图块组500的一组示例性图元块的示例性有效图块掩码:第一图块502、第二图块504、第三图块506,以及第四块508。在该示例中,存在两个图元:图元A和图元B,这两个图元落在图块组中图块的边界内,如图5所示。图元A形成第一图元块510的一部分,并且图元B形成第二图元块512的一部分。当图元A至少部分地落在第一图块、第二图块和第三图块502、504、506的边界内时,第一图元块510的有效图块掩码可以是‘1 1 1 0’,其中‘1’指示图块针对图元块有效。类似地,当图元B至少部分地落在第二图块、第三图块和第四图块504、506和508的边界内时,第二图元块512的有效图块掩码可以是‘0 1 1 1’。对于本领域的技术人员将显而易见的是,这是简单的示例,其中每个图元块仅包括单个图元,然而,在其他示例中,图元块可以包括多个图元。
返回到图4,由于图元块的控制数据与该图元块的图元块条目分开存储,所以数据指针414包括标识对应的控制数据块在存储器中的位置的信息。在一些状况下,数据指针414可以包括控制数据块在存储器中的地址。在其他状况下,如下面更详细描述的,数据指针414可以包括偏移,并且可以根据该偏移和控制数据基址来确定用于特定图元块的平铺数据的地址。
用于图元块的控制数据404、406在本文中被定义为允许获得图元块中与图块组中的特定图块的渲染相关的图元(例如,与其相关的经过变换的几何结构数据)的数据。图元块的控制数据404、406可以包括标识图元块在存储器中的位置的图元块指针416。在一些状况下,图元块指针416可以包括存储器中存储图元块的地址。
控制数据404、406还可以可选地包括信息418,该信息标识与有效图块中的每一个有效图块相关的对应的图元块的图元。标识与有效图块中的每一个有效图块相关的对应的图元块的图元的信息418可以包括一个或多个图元掩码。在一些状况下,针对每个有效图块可存在标识图元块中与该图块相关的图元的一个图元掩码。在其他状况下,可存在一个或多个图块之间共享的图元掩码。例如,在图块组的有效图块都具有相同的图元掩码的情况下,仅图元掩码的单个副本可以被存储在控制数据块404、406中,并且控制数据块404、406可以包括指示所有的有效图块都具有相同的图元掩码的信息(例如,在如下所述的图元块标头中)。在一些状况下,在图元块的控制数据块中可能未存储图元掩码。例如,在一些状况下,如果图元块中的所有图元都与所有的有效图块相关,这些有效图块在本文中可被称为具有完整图元掩码的有效图块,则控制数据块404、406可以简单地包括指示每个有效图块具有完整是图元掩码的信息(例如,在如下所述的图元块标头中)。
每个图元掩码可以包括图元块中的每一个图元的位,该位指示该图元是否与渲染一个或多个对应的图块相关(即,该图元是否至少部分地落在一个或多个对应的图块的边界内)。例如,如果在图元块中有五十个图元,则图元掩码可包括五十个位。在一些状况下,“1”可以指示图元至少部分地落在一个或多个对应的图块的边界内,并且“0”可以指示图元不至少部分地落在一个或多个对应的图块的边界内。然而,对于本领域的技术人员将显而易见的是,这仅是示例,并且在其他状况下,‘0’可以指示图元与一个或多个对应的图块相关,并且‘1’可以指示图元与一个或多个对应的图块无关。一个或多个图元掩码可以压缩或未压缩的形式存储在控制数据块中。可以使用任何合适的压缩技术或算法来压缩图元掩码。
图元块条目408、410和/或控制数据块404、406可以可选地包括提供关于图元块和/或相关联的控制数据的附加信息的图元块标头420或422。图元块标头420、422中的一者或两者均可以包括以下项中的一个或多个:
·完整的掩码信息-(例如,位)指示图块组中的所有图块都具有完整的图元掩码,并且因此在控制数据块中未存储任何图元掩码
·图元计数器信息-(例如,针对多达128个图元,7位),指示图元数据块中图元的数量。这可以帮助光栅化逻辑确定存储在控制数据块中的图元掩码的大小。
·相同的掩码信息–(例如,位)指示图块组中的所有图块具有相同的图元掩码,因此在控制数据块中仅存储一个图元掩码
·(在图块组中针对每个图块的)图元掩码格式信息–(例如,针对多达4种图元掩码格式,每个图块2位),指示该图块的图元掩码的格式。例如,在图元掩码格式信息包括每个图块2位的情况下,‘01’可以指示图块具有完整的图元掩码,并且因此图块的图元掩码不包括在控制数据块中,‘10’可以指示图块的图元掩码以压缩形式存储在控制数据块中,并且‘11’可以指示图块的图元掩码以未压缩形式存储在控制数据块中。
·(在图块组中针对每个图块的)图元掩码开始信息–指示针对该图块,图元掩码在控制数据块中的开始位置。
对于本领域的技术人员将显而易见的是,这仅仅是可以包括在图元块标头中的信息的示例性列表,并且其他示例性图元块标头可以包括附加的和/或不同的信息。
包括在图元块条目408、410的图元块标头中的信息可以基于(i)图元块条目的大小或长度;以及(ii)图块组中的图块数量。具体而言,图块组中的图块的数量确定有效图块掩码所需的位数,并且因此指示多少剩余位数能够用于数据指针信息和图元块标头。在一个示例中,每个图元块条目408、410可以包括图元块标头422,该图元块标头包括完整的掩码信息和/或相同的掩码信息,以及可选地包括图元计数器信息,具体取决于图块组中的图块数量;并且每个控制数据块可以包括图元块标头420,该图元块标头包括上面列出的不包括在图元块条目的图元块标头422中的信息。对于本领域的技术人员将显而易见的是,这是在图元块条目和控制数据块之间的图元块标头信息的示例性划分,并且图元块标头信息可以任何合适的方式在两者之间划分。
多种控制流条目类型
在一些状况下,除了固定大小的图元块条目之外,控制流还可以包括一种或多种其他类型的固定大小的条目。其他控制流条目类型中的每一种类型都可以用于传送不同的信息。在一些状况下,每个控制流条目可以是32位的双字。
现在参考图6,该图示出了第二示例性控制流结构600,该第二示例性控制流结构包括控制流602、604和多个控制数据块606、608、610、612、614。在该示例中,控制流602、604包括用于每个图元块的固定长度的图元块条目616、618、620、622、624,每个图元块包括至少部分地落在图块组中的至少一个图块的边界内的至少一个图元。每个图元块条目616、618、620、622、624一般对应于图4的图元块条目408、410。具体而言,每个图元块条目616、618、620、622、624包括标识哪些图块对于对应的图元块有效的有效图块信息412,包括标识对应的控制数据块在存储器中的位置的信息的数据指针414;以及可选地包括图元块标头422。然而,在该示例中,控制流602、604还包括其他类型的条目。具体而言,在该示例中,控制流602、604可以包括一个或多个控制数据基址条目626、628、一个或多个链路条目630和/或终止条目632。将在下面描述这些控制流条目类型中的每一种类型。对于本领域的技术人员将显而易见的是,这些是其他控制流条目类型的示例,并且在其他示例中,控制流可以包括:仅这些控制流条目类型的子集;附加的控制流条目类型;以及/或者不同类型的控制流条目。
如图6所示,控制流602、604可以包括多种类型的固定大小的条目,每个条目可以具有用于标识条目类型的专用字段(例如,专用数量的位)。例如,在一些状况下,每个条目的K位(在本文中可被称为条目类型位)可用于标识条目的类型,其中K基于不同类型的数量。例如,在一些状况下,K可以等于其中H是不同控制流条目类型的数量。在一些状况下,条目类型位可以是每个条目的前K位。
表1示出了如何使用两个条目类型位来标识图元块条目、控制数据基址条目、链路指针条目和终止条目的示例。具体而言,如果两个条目类型位被设定为‘00’,则这可以将条目标识为图元块条目;如果两个条目类型位被设定为‘01’,则这可以将条目标识为控制数据基址条目,如果两个条目类型位被设定为‘10’,则这可以将该条目标识为链路指针条目;并且如果两个条目类型位被设定为‘11’,则这可以将条目标识为终止条目。
表1
控制流条目类型 | 条目类型位 |
图元块条目 | 0 0 |
控制数据基址条目 | 0 1 |
链路指针条目 | 1 0 |
终止条目 | 1 1 |
如图6所示,其中控制流602、604可以包括多种类型的控制流条目,每个条目可以包括模仿图元块条目中的有效图块信息412的有效图块信息(例如,有效图块掩码),然而除图元块条目之外,所有条目的有效图块信息可以被配置成指示没有有效图块。例如,在每个图元块条目包括有效图块掩码,该有效图块掩码包括每个图块的指示该图块针对图元块是否有效的位的情况下,其他控制流条目中的每一个控制流条目可以包括被设定为全零的有效图块掩码。虽然这减少了能够用于其他信息的其他控制流条目的位数,但是这可以允许光栅化逻辑根据多个控制流条目的有效图块信息来快速确定是否可以针对特定图块跳过其图元块条目。即使确定可以针对特定图块跳过集合上的图元块条目,也可以照常处理集合中的其他条目(例如,控制数据基址条目、链路条目和终止条目)。例如,如下面更详细描述的,光栅化逻辑可以被配置成接收一组控制流条目(例如,控制流块),并且能够通过对每个有效图块信息/字段的相关位进行“或”运算来快速确定是否需要处理集合中的任何图元块条目。因此,通过将所有非图元块条目中的有效图块掩码设定为全零,光栅化逻辑可以快速而轻松地忽略或跳过不包括针对特定图块有效的图元块条目的控制流条目的集合或一组控制流条目,而无需分析或解码条目。
例如,图7示出了用于包括四个图块的图块组的一组示例性八个控制流条目700。可以看出,每个控制流条目都包括有效图块信息(例如,4位有效图块掩码,其中“1”指示对应的图块对于对应的图元块有效)。然而,仅图元块条目的有效图块信息将图块指示为有效(例如,仅图元块条目的有效图块掩码包括‘1’)。每种其他条目类型的有效图块信息(例如,有效图块掩码)指示没有有效图块(例如,有效图块掩码被设定为全零)。当光栅化逻辑接收到该组控制流条目时,可以提取与感兴趣的图块(即,光栅化逻辑正在渲染的图块)相关的每个条目的有效图块信息/掩码的位。例如,当图块组中的第一图块是相关图块时,光栅化逻辑可以选择每个条目的第3位(即,每个有效图块信息/掩码的第1位);当图块组中的第二图块是相关图块时,光栅化逻辑可以选择每个条目的第4位(即,每个有效图块信息/掩码的第2位);当图块组中的第三图块是相关图块时,光栅化逻辑可以选择每个条目的第5位(即,每个有效图块信息/掩码的第3位);以及当图块组中的第四图块是相关图块时,光栅化逻辑可以选择每个条目的第6位(即,每个有效图块信息/掩码的第4位)。然后,光栅化逻辑可以对所选择的位执行“或”(即,对其执行“或”运算)以确定集合中的任何图元块条目对相关图块是否有效。如图7所示,其中有效图块掩码中的‘1’指示对应的图块针对图元有效,并且有效图块掩码中的‘0’指示对应的图块针对图元块无效;则如果“或”运算的结果为‘0’,则指示集合中的任何图元块条目针对相关图块均无效;以及如果“或”运算的结果为‘1’,则指示图元块条目中的至少一个图元块条目针对相关图块有效。如果对所选择的位进行“或”运算的结果指示集合中的任何图元块条目都对感兴趣的图块无效,则光栅化逻辑可以快速忽略该集合中的图元块条目,而无需进一步处理。即使确定一组条目中没有针对图块无效的图元块条目,也可以照常处理该集合中的其他条目(例如,控制数据基址条目、链路条目以及终止条目)。例如,由于与第一图块相对应的有效图块掩码的所有位均为零,因此对这些位进行“或”运算将得出‘0’,这指示集合中的所有图元块条目针对图块均无效。
然而,如果对所选择的位进行“或”运算的结果指示集合中的图元块条目中的至少一个图元块条目针对相关图块有效,则光栅化逻辑可以分析每个条目的条目类型,以查看是否需要对控制流条目执行任何进一步的处理。例如,如果光栅化逻辑确定条目是图元块条目,则光栅化逻辑可以分析与相关图块相对应的有效图块掩码的位,以确定相关图块针对图元块是否有效。如果相关图块针对图元块有效,则光栅化逻辑可以读取数据指针以确定对应的控制数据块在存储器中的地址;并且根据存储器中的该地址读取控制数据块。如果相关图块针对图元块无效,则光栅化逻辑可以跳到下一个条目。例如,对于图7所示的该组条目,当图块组中的第二图块是相关图块时,光栅化逻辑可以跳过图元块条目3、4和6;当图块组中的第三图块是相关图块时,光栅化逻辑可以跳过图元块条目1、3和5;并且当图块组中的第四图块是相关图块时,光栅化逻辑可以跳过图元块条目4、5和6。
然而,如果光栅化逻辑根据条目类型位来确定条目不是图元块条目,则光栅化逻辑可以基于条目的类型执行动作。例如,如下面更详细描述的,在条目是控制数据基址条目的情况下,光栅化逻辑可以存储控制数据基址;在条目是链路条目的情况下,光栅化逻辑可以从存储器读取下一个控制流块;以及在条目是终止条目的情况下,光栅化逻辑可以完成相关图块的处理并且开始处理下一个图块。下面将详细描述光栅化逻辑对控制流的处理。
控制数据基址条目
如上所述,图元块条目的数据指针414可不包括存储器中对应的控制数据块的完整地址,而是可包含偏移,该偏移可以与基址一起用于生成控制数据块的完整地址。例如,基址可以指定地址的X个最高有效位,并且偏移可以指定地址的Y个最低有效位,其中完整地址包括X+Y位,其中X和Y是大于或等于1的整数。在这些状况下,控制流可以包括指定控制数据基址(例如,控制数据块地址的X个最高有效位)的一个或多个控制数据基址条目。
在一些状况下,基址可以由单个控制基址条目指定。换句话讲,在一些状况下,可以在单个控制基址条目中指定X个MSB。图8示出了图元块条目802和控制数据基址条目804的示例性配置,其中在单个控制数据基址条目中指定控制数据块的地址的X个MSB。在该示例中,控制数据块的地址包括32位,每个图块组包括四个图块,并且每个控制流条目是32位。示例性图元块条目802包括:指定条目类型的2位条目类型字段806;指定哪些图块对于对应的图元块有效的4位有效图块信息字段808(例如,4位有效图块掩码);可以如上所述指定关于图元块和/或图元掩码的信息的8位图元块标头字段810;以及指定对应的控制数据块的地址的18个LSB的18位数据指针字段812。在该示例中,控制数据基址条目804包括2位条目类型字段814、被设定成指示没有有效图块的4位有效图块信息字段816(例如,4位有效图块掩码)、指定对应于任何后续条目的控制数据块的地址的14个MSB的14位控制数据基址字段818。可以不使用控制数据基址条目804的其余12位820。控制数据块822的地址可以通过使用来自控制数据基址字段818的14位作为MSB以及来自数据指针字段812的18位作为LSB来生成。
然而,根据控制流条目的大小和图块组中图块的数量(以及因此有效图块掩码中的位数),可能无法在单个控制数据基址条目中指定所有X个MSB条目。因此,可以在若干控制数据基址条目上指定X个MSB。在这些状况下,可存在多种类型的控制数据基条目,每种类型指定X个MSB的不同部分。例如,图9示出了图元块条目902和控制数据基址条目904和906的示例性配置,其中在两个控制数据基址条目上指定了控制数据块的地址的X个MSB。在该示例中,控制数据块地址包括32位,每个图块组包括16个图块,并且每个控制流条目为32位。示例性图元块条目902包括:指定条目类型的2位条目类型字段908;指定哪些图块对于对应的图元块有效的16位有效图块信息字段910(例如,16位有效图块掩码);可以如上所述指定关于图元块和/或图元掩码的信息的2位图元块标头字段912;以及指定对应的控制数据块的地址的12个LSB的12位数据指针字段914。
在图9的示例中,存在两种类型的控制数据基址条目-指定X个MSB的最高位的高控制数据基址条目904和指定X个MSB的最低位的低控制数据基址条目906。每个控制数据基址条目904、906包括指定条目类型的2位条目类型字段916、918,指示没有有效图块的16位有效图块信息字段920、922(例如,16位有效图块掩码),以及用于指定10位的基址的10位的控制数据基址字段924、926。两个控制数据基址条目904、906之间的唯一区别在于,在高控制数据基址条目中,第19位930被设定为‘1’以指示指定了最高的10位,并且在低控制数据基址条目中,第19位928被设定为‘0’以指示指定了较低的10位。在该示例中,可以不使用控制数据基址条目的最后三个位932、934。可以通过使用高控制数据基址条目904的控制数据基址字段926的位作为前10位,使用低控制数据基址条目906的控制数据基址字段924的位作为接下来的10位,并且使用来自图元块条目902的数据指针字段914的12位作为最后12位,生成用于图元块条目的控制数据块936的地址。
在图9的示例中,每个控制数据基址条目指定基址的相同数量的位,然而,在其他示例中,不同的控制数据基址条目可以指定基址的不同数量的位。例如,高控制数据基址条目可以指定地址的前12位,并且低控制数据基址条目可以指定地址的接下来的8位。
在一些状况下,可以将与控制流中的图元块条目相对应的控制数据块打包到存储器中(例如,可以将它们背对背放置在存储器中)。例如,可以为一组图块的控制流分配一页存储器,用于存储相关的控制数据块。可以将控制数据块一个接一个地(例如,背对背(backto back))写入分配的页面,直到页面被填满。一旦分配的页面被填满,就可以分配新页面,并且将控制流的后续控制数据块写入新页面,直到该页面被填满,依此类推。控制数据块在存储器中的这种打包允许使用相同的基址来计算多个控制数据块的地址。因此,一旦由控制数据基址条目(或一组控制数据基条目)设定了基址,则该基址可用于计算每个后续图元块条目的控制数据块的地址,直到由一个或多个后续控制数据基条目更新基址为止。在一些状况下,如图6所示,在将新页面分配给控制流时,可以更新基址。
图10示出了一组示例性控制流条目1000,其中单个控制数据基址条目指定整个基址(例如,如参考图8所述)。在该示例中,控制数据基址条目1将控制数据基址设定为‘基址1’,并且控制数据基址条目2将控制数据基址设定为‘基址2’。“基址1”可指向存储器中的第一页,并且“基址2”可指向存储器中的第二页。在该示例中,将根据“基址1”来计算图元块条目1、2和3的控制数据块的地址,因为在由栅格化逻辑处理这些图元块条目时,基址将被设定为“基址1”;并且将根据“基址2”来计算图元数据块条目4和5的控制数据块的地址,因为在由栅格化逻辑处理这些图元块条目时,基址将被设定为“基址2”。
在基址由多个控制数据基址条目指定的情况下(例如,参考图9所述),则当基址需要被更新时(例如,在将新页面分配给控制数据块的控制流时),可能仅需要更新地址的一部分。这可意指只能将一种类型的控制数据基址条目添加到控制流中以更新基址。例如,如果新页面接近上一页,则仅需要更新基址的较低位。
图11示出了一组示例性控制流条目1100,其中基址由两个控制数据基址条目指定(例如,如参考图9所述)。在该示例中,高控制数据基址条目1将基址的高(例如,MSB)位设定为‘高基址1’,低控制数据基址条目1将基址的低(例如,LSB)位设定为‘低基址1’,并且低控制数据基址条目2将基址的低(例如,LSB)位设定为‘低基址2’。‘高基址1’和‘低基址1’的组合可以指定存储器中第一页的地址,并且‘高基址1’和‘低基址2’的组合可以指定存储器中的第二页。在该示例中,将根据‘高基址1’+’低基址1’来计算图元块条目1和2的控制数据块的地址,因为在由栅格化逻辑处理这些图元块条目时,基址将被设定为‘高基址1’+’低基址1’;并且将根据‘高基址1’+’低基址2’来计算图元数据块条目3和4的控制数据块的地址,因为在由栅格化逻辑处理这些图元块条目时,基址将被设定为‘高基址1’+’低基址2’。
链路条目
在一些状况下,如图6所示,控制流602、604可以被划分成一系列控制流块602、604,分别存储在存储器中。每个控制流块可以具有最大大小。在一些状况下,控制流块的最大大小可以是控制流条目大小的整数倍。例如,在一些状况下,其中每个控制流条目是一个双字,每个控制流块的最大大小可以是32个双字。在控制流被划分成一系列控制流块的情况下,控制流可以包括将控制流块链接在一起的一个或多个链路条目630。具体而言,每个链路条目可以指定序列中的下一个控制流块的地址或指向序列中的下一个控制流块。例如,在图6中,第一控制流块602(控制流块0)中的链路条目630将包括第二控制流块604(控制流块1)的地址或指向该第二控制流块的指针。当光栅化逻辑在控制流块中遇到链路条目630时,可以触发光栅化逻辑使用指定的地址或指针从存储器中读取下一个控制流块。
在一些状况下,如图6所示,链路条目630可以是每个控制流块中除最后一个控制流块之外的最后一个条目。在一些状况下,光栅化逻辑可能能够一次读取整个控制流块。例如,在控制流块为32个双字的一些状况下,存储器可支持4节拍突发读取,其中每个突发为256位或32字节。在其他状况下,光栅化逻辑一次只能读取控制流块的一部分。
终止条目
在一些状况下,控制流的最后一个条目可以是终止条目632,该终止条目向光栅化逻辑发信号通知控制流的结束。具体而言,当光栅化逻辑遇到终止条目632时,可以完成对相关图块的当前控制流的处理,并且开始处理另一个图块的另一个控制流。
平铺引擎
现在参考图12,该图示出了被配置成生成如上所述的一组图块的控制结构的示例性平铺引擎1200,该控制结构标识哪些图元落在图块组的每个图块内。图块组可以包括渲染空间中的任何一组N×M图块,其中N和M是大于或等于1的整数。如上所述,控制结构包括控制流和链接到该控制流的一个或多个控制数据块。平铺引擎1200包括平铺逻辑1202、控制数据块生成器1204,以及控制流生成器1206。
平铺逻辑1202被配置成(i)如上所述接收多个图元块,其中每个图元块包括一个或多个图元(例如,与之相关的经过变换的几何结构数据);以及(ii)针对每个所接收的图元块,确定该图元块的哪些图元至少部分地落在图块组中的每一个图块的边界内(这在本文中可以被称为平铺图元);以及(iii)输出确定的结果。在一些状况下,输出可以是用于每个图元块的一组图元掩码的形式,其中该组图元掩码包括用于图块组中的每一个图块的图元掩码。如上所述,每个图元掩码可以包括图元块中的每一个图元的位,该位指示该图元是否至少部分地落在图块的边界内。
平铺逻辑1202可以使用任何合适的方法来确定图元是否至少部分地落在图块的边界内。例如,在一些状况下,平铺逻辑1202可以使用简单、准确性不高的方法(诸如简单的边界框平铺方法)来确定图元是否至少部分地落在图块内,以便将图元快速地分类到图块中。如所属领域的技术人员所知的,在边界框方法中,对涵盖基元的边界框进行标识(例如,涵盖基元顶点的与轴线对齐的最小边界框)。可以使用任何合适的方法来生成边界框。例如,平铺逻辑1202可以通过找到图元顶点的最小和最大的X和Y坐标并且根据这些坐标形成轴线对齐边界框来生成边界框。可以以任何粒度或分辨率生成边界框。例如,在一些状况下,边界框可以处于X和Y坐标分辨率(即,边界框可以由顶点的最大和最小的X和Y坐标限定)。在其他状况下,边界框可以处于图块分辨率(即,包围图元的最近的图块边缘)。一旦平铺逻辑1202已经标识出图元的边界框,如果边界框至少部分地与图块重叠,平铺逻辑1202就可以确定图元至少部分地落在图块内。换句话讲,如果图元的边界框至少部分地落在图块的边界内,则可以确定该图元至少部分地落在图块内。虽然可以使用边界框方法快速有效地确定图元是否至少部分地落在图块内,但这并不是“完美”的平铺,因为边界框通常大于图元,这可导致图元实际上未处于图块中时被确定为处于该图块中。
例如,图13示出了包括四个图块1302、1304、1306和1308的示例性图块组1300。如果使用简单的轴线对齐边界框方法来确定图元1310至少部分地落在这些图块1302、1304、1306、1308中的哪些图块内,则生成围绕图元1310的边界框1312。由于边界框1312与所有图块1302、1304、1306、1308至少部分地重叠,因此即使图元1310实际上仅落在三个图块1304、1306、1308内或与它们重叠,也可以确定该图元至少部分地落在四个图块1302、1304、1306、1308中的每一个图块内。然而,在图元实际上并未落在图块内时确定图元落在图块内不会导致出错,并且在光栅化阶段中会简单地丢弃该图元。然而,在图元确实落在图块时确定图元并未落在图块内可导致光栅化阶段发生错误。因此,保守平铺块是有利的。换句话讲,与不包括实际上落在图块内的图元相比,更好的是指示图元落在图块内,即使图元实际上并未落在图块内。
然而,在其他状况下,图块逻辑1202可以使用更复杂和/或更精确的方法(诸如完美平铺或近乎完美平铺方法)来确定图元是否落在图块内。可以由平铺逻辑1202使用的示例性完美平铺方法在申请人已公开的申请号为2549789的英国专利申请中进行了描述,该申请的全部内容以引用方式并入本文。
控制数据块生成器1204接收由平铺逻辑1202输出的结果(例如,图元掩码)和存储器中每个图元块的地址。然后,控制数据块生成器1204被配置成针对包括至少部分地落在图块组中的至少一个图块的边界内的至少一个图元的每个图元块:(i)为该图元块生成控制数据块(例如,以上参考图4描述的控制数据块404、406);(ii)将所生成的控制数据块存储在存储器1208中;以及(iii)输出控制数据块在存储器中的地址。如上所述,用于图元块的控制数据块包括图元块在存储器中的地址,并且可以包括由平铺逻辑1202生成的一个或多个图元掩码。在一些状况下,图元块的控制数据块还可以包括图元块标头,该图元块标头可以包括关于图元块和/或图元掩码的附加信息,诸如但不限于图元块中图元的数量、控制数据块中图元掩码的格式,等等。如上所述,控制数据块生成器1204可以最初被分配存储器页面以存储图块组的控制数据块,并且可以将控制数据块打包在存储器中所分配的页面中,并且一旦存储器页面被填满,就可以将新页面分配给图块组以存储控制数据块。
控制流生成器1206接收由平铺逻辑1202输出的结果(例如,图元掩码)和每个控制数据块的地址。然后,控制流生成器1206被配置成针对包括至少部分地落在图块组中的至少一个图块的边界内的至少一个图元的每一个图元块(i)生成固定大小的图元块条目(例如,以上参考图4所述的图元块条目408、410);(ii)将所生成的图元块条目存储在存储器1210中,作为该组图块的控制流的一部分。如上所述,图元块的图元块条目包括有效图块信息(例如,在图块组中针对每个图块具有1位的有效图块掩码),该有效图块信息标识图块组中的哪些图块针对图元块有效;以及指向存储器1208中的对应的控制数据块的数据指针。图元块条目还可以包括图元块标头,该图元块标头可以包括关于图元块和/或对应的控制数据块的附加信息。
在一些状况下,控制流生成器1206还可以被配置成在存储器1210中的图元块条目中与其他类型的条目交织。例如,如上所述,在一些状况下,图元块条目的数据指针可以仅包括偏移,该偏移可以与基址组合来生成对应的控制数据块在存储器中的地址。在这些状况下,控制流生成器1206可以被配置成当确定控制数据块的基址已经改变时(例如,当控制数据块被写入存储器的新页面时),生成基址条目(如上所述)并且将其存储在存储器1210中。
此外,如上所述,在一些状况下,控制流可以在存储器中存储在控制流条目块中,其中每一个块具有最大数量的条目。在这些状况下,控制流生成器1206可以被配置成通过将条目添加到控制流块直到达到最大数量的条目来构建控制流块。一旦已经达到最大数量的条目减去一的条目,控制流生成器1206就可以被配置成将链路条目添加到控制流块,指示下一个控制流块将在存储器中存储的位置,然后将控制流块写入存储器中。控制流生成器1206可以被配置成继续构建控制流块,直到已经生成最后的图元块条目。
在一些状况下,控制流生成器1206可以被配置成一旦生成图块组的最后一个图元块条目,就将终止条目(如上所述)存储在存储器中以指示该图块组的控制流的结束。
现在参考图14,该图示出了用于为一组图块生成控制结构的示例性方法1400,该方法可以由图12的平铺引擎1200实现。方法1400开始于步骤1402,在该步骤中,平铺引擎接收图元块。如上所述,图元块包括一个或多个图元(例如,与之相关的经过变换的几何形状)。一旦已经在平铺引擎处接收到图元块,方法1400就前进至步骤1404,在该步骤中,平铺引擎为平铺组中的每一个图块确定图元块中的哪些图元至少部分地落在图块的边界内。换句话讲,针对图块组中的每一个图块,确定图元块中的哪些图元与图块重叠或相交。可以使用任何平铺方法来确定图元是否至少部分地落在图块的边界内。上面描述了可用于确定图元是否至少部分地在图块的边界内的示例性平铺方法。一旦针对图块组的每个图块确定哪些图元至少部分地落在图块的边界内,方法1400就前进至步骤1406。
在步骤1406处,基于步骤1404的确定,在平铺引擎处确定是否存在至少部分地落在图块组的图块的至少一个图块的边界内的图元块的至少一个图元。如果图元块中没有图元至少部分地落在图块组中的至少一个图块的边界内,则图元块与图块组中图块的渲染无关,并且方法1400前进至步骤1412。然而,如果图元块的图元中的至少一个图元至少部分地落在图块组中的至少一个图块的边界内,则方法1400前进至步骤1408。
在步骤1408处,平铺引擎为图元块生成控制数据块,并且将该控制数据块存储在存储器的为控制数据块指定的部分中。如上所述,图元块的控制数据块包括图元块在存储器中的地址,并且可以包括一个或多个图元掩码。在一些状况下,图元块的控制数据块还可以包括图元块标头,该图元块标头可以包括关于图元块和/或图元掩码的附加信息,诸如但不限于图元块中图元的数量、控制数据块中图元掩码的格式,等等。如上所述,图块组可以最初被分配存储器页面以存储图块组的控制数据块,并且控制数据块可以被打包在存储器中所分配的页面中,直到该页面被填满。一旦存储器页面被填满,就可以将新页面分配给图块组。然后,方法1400前进至步骤1410。
在步骤1410处,平铺引擎为图元块生成图元块条目,并且将该图元块条目存储在存储器中作为图块组的控制流的一部分。如上所述,图元块的图元块条目包括有效图块信息(例如,在图块组中针对每个图块具有1位的有效图块掩码),该有效图块信息标识图块组中的哪些图块针对图元块有效;以及指向存储器中的对应的控制数据块的数据指针。图元块条目还可以包括图元块标头,该图元块标头可以包括关于图元块和/或对应的控制数据块的附加信息。然后,方法1400前进至步骤1412。
在步骤1412处,确定是否还存在更多的图元块。如果存在至少一个以上的图元块,则方法1400返回到步骤1402,在该步骤中接收下一个图元块。然而,如果没有更多的图元块,则方法1400结束。
尽管在图14的方法1400中,在处理下一个图元块之前将当前图元的图元块条目存储在存储器中,但在其他示例中,可以在将它们存储在存储器中之前生成全部或部分的图元块条目。例如,在一些状况下,图元块条目可以被打包到控制流块中,而正是控制流块被存储在存储器中。
现在参考图15,该图示出了实现步骤1410的示例性方法,其中图元块条目被打包到控制流块中,每个控制流块具有最大数量的条目。方法1410可以由图12的平铺引擎1200实现。方法1410开始于步骤1502,在该步骤中,平铺引擎为图元块生成图元块条目(如上所述)。然后,方法1410前进至步骤1504,在该步骤中,平铺引擎将图元块条目添加到当前控制流块。然后,方法1410前进至步骤1506,在该步骤中,平铺引擎确定这是否是最后一个图元块条目。如果确定这是最后一个图元块条目,则方法1410前进至步骤1508、1510和1512,其中平铺引擎生成终止条目(如上所述)以指示控制流的结束,将终止条目添加到当前的控制流块,并且将当前的控制流块存储在存储器中。例如,在图6中,在平铺引擎生成控制流的最后一个图元块条目624之后,平铺引擎将图元块条目624添加到当前控制流块604;生成终止条目632;将终止条目632添加到当前控制流块604;并且将当前控制流块604存储在存储器中。
然而,如果平铺引擎在步骤1506处确定这不是控制流中最后一个图元块条目,则方法1410前进至步骤1514,在该步骤中,平铺引擎确定当前控制流块是否具有最大数量的条目减去一的条目。例如,如果每个控制流块最多可以具有32个条目(如有必要,包括到下一个控制流块的链路条目),则平铺引擎将确定当前控制流块中现在是否存在31个条目。如果平铺引擎确定在当前控制流块中存在小于最大数量的条目减去一的条目,则方法1410结束。然而,如果平铺引擎在步骤1514处确定当前控制流块包括最大数量的条目减去一的条目(例如,31个条目),则方法1410前进至步骤1516。
在步骤1516处,平铺引擎生成链路条目。如上所述,链路条目包括标识存储器中的下一个控制流块的位置的信息。标识下一个控制流块的位置的信息可以是下一个控制流块在存储器中的地址。生成链路条目可包括通过请求用于存储下一个控制流块的存储器的新的数据块(chunk)来确定下一个控制流块在存储器中的位置。一旦已经生成了链路条目,该方法就前进至步骤1518和1520,其中将链路条目添加到控制流块,并且将该控制流块存储在存储器中。然后,方法1410前进至框1522,在该框处生成新的控制流块,并且新的控制流块成为当前控制流块,然后方法1410结束。例如,在图6中,在平铺引擎生成图元块条目622并且将图元块条目622添加到第一控制流块602之后,平铺引擎可以确定现在控制流块包括最大数量的条目减去一的条目。然后,平铺引擎生成链路条目630,该链路条目标识下一个控制流块604将存储在存储器中的位置,将链路条目630添加到第一控制流块602,并且将控制流块602存储在存储器中。
控制流解码器
现在参考图16,该图示出了示例性控制流解码器1600,用于对图4或图6的控制流进行解码,以供一组图块标识将用于渲染图块组的当前图块的图元。控制流解码器1600包括:获取模块1602,该获取模块被配置成从存储器1604中获取控制流的一组控制流条目(例如,控制流块);以及图元块条目分析器1606,该图元块条目分析器被配置成(i)分析其每个图元块条目以确定对应的图元块是否与当前图块相关;以及(ii)如果确定对应的图元块与当前图块相关,则获取存储器中对应的控制数据块。例如,图元块条目分析器1606可以被配置成接收图元块条目并且检查与当前图块相对应的有效图块掩码的位,以确定当前图块对于对应的图元块是否有效。如果确定当前图块对于对应的图元块有效,则图元块条目分析器1606可以如上所述从数据指针信息(以及可选地从控制数据基址)标识用于该图元块的控制数据块的地址。一旦图元块条目分析器1606已经标识控制数据块的地址,图元块条目分析器就从存储器1608的该地址中检索控制数据块。下面参考图17描述可以由图元块条目分析器1606实现的用于分析图元块条目的示例性方法。
在一些状况下,在控制流可以包括不同类型的条目(例如,控制数据基址条目、链路条目和/或终止条目)的情况下,控制流解码器1600还可以包括条目类型分析器1610和/或链路条目分析器1612,以及控制数据基址条目分析器1614。条目类型分析器被配置成接收由获取模块获取的控制流条目,确定每个条目的类型,并且将条目转发到适当的分析器以进行处理。例如,如果条目类型分析器从例如控制流条目的条目类型位确定控制流条目是图元块条目,则条目类型分析器1610可以将控制流条目转发到图元块条目分析器1606,如上所述,根据图元块条目确定当前图块对于对应的图元块是否有效,如果是,则从存储器中检索对应的控制数据块。然而,如果条目类型分析器1610根据例如控制流条目的条目类型位确定控制流条目是链路条目,则条目类型分析器1610可以将控制流条目转发到链路条目分析器1612。然而,如果条目类型分析器1610根据例如控制流条目的条目类型位确定控制流条目是控制数据基址条目,则条目类型分析器1610可以将控制流条目转发到控制数据基址条目分析器1614。但如果条目类型分析器根据例如控制流条目的条目类型位确定控制流条目是终止条目,则该条目可获知控制流已经结束。然后,控制流解码器1600可以通过检索包括该图块的图块组的控制流条目来开始处理另一个图块。下面参考图18描述可以由条目类型分析器实现的示例性方法。
控制数据基址条目分析器1614被配置成从条目类型分析器1610接收控制数据基址条目,并且提取其中标识的新的控制数据基址或控制数据基址的新的部分。例如,如以上参考图8至图11所述,在一些状况下,每个控制数据基址条目可以标识完整的控制数据基址(例如,图8和图10);在其他状况下,每个控制数据基址条目可以仅指定控制数据基址的一部分(例如,前K位或后K位),并且因此,完整的控制数据基址由多个控制数据基址条目指定。在前一种状况下,控制数据基址条目分析器1614可以被配置成提取在其中标识的新的控制数据基条目。在后一种状况下,控制数据基址条目分析器1614可以被配置成确定在其中指定了基址的哪些位,并且提取在其中标识的控制数据基址的新的部分。然后,控制数据基址条目分析器1614可以更新所存储的当前控制数据基址1616,以反映新的基址或基址的新的部分。然后,当图元块条目分析器确定当前图块针对与图元块条目相对应的图元块有效时,图元块条目分析器1606可以被配置成基于图元块条目的数据指针部分和当前控制数据基址1616来确定对应的控制数据块在存储器中的地址。
链路条目分析器1612被配置成接收来自条目类型分析器1610的链路条目,并且从中提取下一个控制流块在存储器中的地址。链路条目分析器1612然后可以将下一个控制流块的地址传输至获取模块1602,该获取模块可以随后使用所标识的地址从存储器1604中检索下一个控制流块。
在一些状况下,在每个条目包括有效图块信息的情况下(例如,如上面参考图7所述),控制流解码器1600还可以包括块跳过模块1618,该块跳过模块被配置成根据每个条目的有效图块信息来确定该组中的任何图元块条目是否与当前图块相关。例如,如以上参考图7所述,在有效图块信息包括有效图块掩码的情况下,块跳过模块1618可以被配置成选择与当前图块相对应的每个有效图块掩码的位,对所选择的位执行“或”运算,并且基于“或”运算的结果来确定该块或组中的任何图元块条目是否与当前图块相关。如果块跳过模块1618确定块或组中的图元块条目都与当前图块无关,则块跳过模块1618可以被配置成将组或块中的控制流条目提供给条目类型分析器1610,以及没有图元块条目需要被传递到图元块分析器的通知。然而,如果块跳过模块1618确定块或组中的至少一个图元块条目与当前图块相关,则块跳过模块1618可以被配置成将组或块中的控制流条目提供给条目类型分析器1610以照常处理。下面参考图19描述可以由块跳过模块1618实现的示例性方法。
现在参考图17,该图示出了用于处理图元块条目的示例性方法1700,该方法可以由控制流解码器1600,特别是其图元块条目分析器1606实现。方法1700开始于步骤1702,在该步骤中,控制流解码器(例如,图元块条目分析器1606)接收图元块条目。在步骤1704处,控制流解码器(例如,图元块条目分析器1606)根据图元块条目中的有效图块信息确定当前图块对于对应的图元块是否有效(即,对应的图元块中是否存在至少部分地落在当前图块的边界内的图元)。例如,在有效图块信息包括有效图块掩码的情况下,这可以包括:标识与当前图块相对应的有效图块掩码的位;以及根据所标识的位确定当前图块对于对应的图元块是否有效。如果在步骤1704处确定当前图块对于对应的图元块无效,则不对图元块条目进行进一步处理,并且该方法结束。然后可以针对下一个图元块条目重复该方法。然而,如果在步骤1704处确定当前图块对于对应的图元块有效,则方法1700前进至步骤1706。
在步骤1706处,控制流解码器1600(例如,图元块条目分析器1606)根据图元块条目的数据指针部分标识对应的控制数据块在存储器中的地址。在一些状况下,图元块条目的数据指针部分可以指定整个地址。在这些状况下,可以从图元块条目中提取地址。然而,在其他状况下,图元块条目的数据指针部分可以仅指定偏移,并且通过组合在图元块条目的数据指针部分中指定的偏移和当前基址来生成完整地址。一旦已经标识出对应的控制数据块在存储器中的地址,方法1700就前进至步骤1708,在该步骤中,控制流解码器1600(例如,图元块条目分析器1606)使用所标识的地址从存储器中检索对应的控制数据块。一旦已经从存储器中检索到控制数据块,方法1700就前进至步骤1710,在该步骤中,控制流解码器从控制数据块确定(i)对应的图元块的地址,以及(ii)与当前图块相关的该图元块的图元。标识与当前图块相关的该图元块的图元可以包括从控制数据块中读取与当前图块相对应的图元掩码,或者从控制数据块中读取其他信息。例如,如上所述,控制数据块可以包括指示图块组中的图块是否具有完整的有效掩码的信息。在步骤1712处,控制流解码器1600(例如,图元块条目分析器1606)输出图元块在存储器中的地址和标识该图元块的与当前图块相关的图元的信息。然后,方法1700结束。
现在参考图18,该图示出了用于处理控制流的条目的示例性方法1800,其中存在多个控制流条目类型,所述多个控制流条目类型可以由控制流解码器1600,具体地,由其条目类型分析器实现。方法1800开始于步骤1802,其中控制流解码器1600(例如,条目类型分析器1610)接收控制流条目。在步骤1804处,控制流解码器1600(例如,条目类型分析器1610)分析控制流条目的条目类型信息/位以标识控制流条目的类型。如果控制流解码器1600(例如,条目类型分析器1610)确定(步骤1806)控制流条目是图元块条目,则在步骤1808处,对图元块条目进行处理以确定当前图块对于对应的图元块是否有效,如果是,则从存储器中检索该图元块的控制数据块(例如,可以执行方法1700)。然而,如果控制流解码器1600确定(步骤1806)控制流条目不是图元块条目,则方法1800前进至1810。如果控制流解码器1600(例如,条目类型分析器1610)确定(步骤1810)控制流条目是控制数据基址条目,则方法1800前进至步骤1812,在该步骤中,从中提取新的控制数据基址或控制数据基址的新的部分,并且更新当前基址以反映新的基址或其新的部分。如果控制流解码器1600(在步骤1810)确定控制流条目不是控制数据基址条目,则方法1800前进至1814。如果控制流解码器1600(例如,条目类型分析器1610)确定(步骤1814)控制流条目是链路条目,则方法1800前进至步骤1816,在该步骤中,从中提取下一个控制流块的地址,并且从所标识的地址中检索下一个控制流块。如果控制流解码器1600确定(步骤1814)控制流条目不是链路条目,则方法1800前进至1818。如果控制流解码器1600(例如,条目类型分析器1610)确定(步骤1818)控制流条目是终止条目,则控制流已经结束,并且方法1800前进至步骤1820,在该步骤中,控制流解码器1600终止控制流的处理。
尽管图18以特定顺序示出了步骤1806、1810、1814和1818,但对于本领域的技术人员将显而易见的是,可以任何顺序执行步骤1806、1810、1814和1818。
现在参考图19,该图示出了跳过控制流条目的组或块的示例性方法1900,其中每个控制流条目包括有效图块信息,并且任何非图元块条目的有效图块信息指示图块组中的图块均无效。方法1900可以由控制流解码器1600,特别是其块跳过模块1618来实现。方法1900开始于步骤1902,其中控制流解码器1600(例如,块跳过模块1618)接收控制流条目的组或块。在将控制流条目划分成控制流块的情况下,该组条目可以形成控制流块。在步骤1904处,控制流解码器1600(例如,块跳过模块1618)可以选择与当前图块有关的每个条目的有效图块信息的部分(例如,位)。在一些状况下,有效图块信息可以包括有效图块掩码,该有效图块掩码包括每个图块的位,该位指示该图块对于对应的图元块是否有效。例如,如以上参考图7所述,如果图块组包括四个图块,则有效图块掩码包括每个图块的位,其中第一位对应于第一图块,第二位对应于第二图块,第三位对应于第三图块,并且第四位对应于第四图块。在该示例中,如果当前图块是该组中的第一图块,则控制流解码器1600(例如,块跳过模块1618)可以选择控制流条目中的每一个控制流条目的有效图块掩码的第一位。
然后在步骤1906处,控制流解码器1600(例如,块跳过模块1618)可以对所选择的位执行操作或组合所选择的位,以确定当前图块对于该组中的任何图元块条目是否有效。例如,如上所述,控制流解码器1600(例如,块跳过模块1618)可以对所选择的位执行“或”运算(例如,可以对所有所选择的位一起执行“或”运算),以确定当前图块是否对于该组中的任何图元块条目有效。然后在步骤1908处,根据操作或组合的结果,确定当前图块对于该组中的任何图元块条目是否有效。如果在步骤1908处确定当前图块对于该组中的任何图元块条目无效,则方法1900前进至步骤1910,其中对该组中除图元块条目之外的所有条目进行处理。这可以包括针对每个条目执行或实现图18的方法1800的修改版本,其中代替执行针对图元块条目的步骤1808,方法1800简单地结束。然而,如果在步骤1908处确定当前图块对于该组中的至少一个图元块条目有效,则方法1900前进至步骤1912,在该步骤中对该组中的所有条目进行处理。这可以包括例如针对该组中的每一个控制流条目执行图18的方法1800。
图形处理系统
现在参考图20,该图示出了包括图12的平铺引擎1200和图16的控制流解码器1600的示例性的基于图块的图形处理系统2000。图20的图形处理系统2000与图1的图形处理系统100的相似之处在于包括几何处理逻辑2004和光栅化逻辑2006;几何处理逻辑2004包括变换逻辑2008和图元块生成器2010(它们各自用作图1的对应部件);并且光栅化逻辑2006包括光栅化器2014、HSR逻辑2016和纹理化/着色逻辑2018(它们各自用作上述图1的对应部件)。然而,代替包括被配置成按图块存储显示列表的平铺引擎的几何处理逻辑,几何处理逻辑2004包括平铺引擎1200,该平铺引擎被配置成将图块分组成图块组并且针对每个图块组存储控制结构,该控制结构包括控制流和如上所述链接到该控制流的一个或多个控制数据块。图20的光栅化逻辑2006还包括控制流解码器1600,该控制流解码器被配置成通过对存储在存储器2002中的对应的控制流进行解码来为每个图块生成显示列表。
测试结果
测试表明,在大多数情况下,与按图块存储显示列表相比,与控制流分开存储可变长度的控制数据减少了读取和写入平铺数据的总带宽(例如,如以上参考图2所述)。例如,图21示出了用于存储一组图块的控制流的带宽(其中可变控制数据块与其分开存储)占针对多个图形基准按图块存储显示列表的带宽的百分比。可以看出,总带宽仅针对TRex和PUBG基准增加,即使在这些状况下,增加量也很小。这种增加归因于两个平铺的控制流,其中控制流解码器必须读取控制流,并且在必要时读取控制数据块。
测试表明,在大多数情况下,与按图块存储显示列表相比,与控制流分开存储可变长度的控制数据将减少用于存储平铺数据的存储器的量(例如,如上面参考图2所述),因为这样允许控制流本身被更有效地打包到存储器中。在将控制流作为整体存储在控制流块中时会发生唯一的存储器浪费,存储器页面可以被分配给控制流块,但可能不会使用整个页面(例如,因为没有足够的条目来填充页面)。例如,图22示出了当可变长度控制数据与控制流分开存储时存储平铺数据的总页面占按图块存储显示列表时的总页面的百分比。从图22可以看出,如本文所述,存储平铺数据(例如,为每组图块存储控制流,其中可变长度的控制数据与控制流分开存储)减少了用于存储平铺数据的页面总数,并且在一些状况下,诸如“Angry Birds(愤怒的小鸟)”时,非常明显(即,超出50%)。
测试还表明,与按图块存储显示列表相比,当如本文所述存储平铺数据时(例如,存储每组图块的控制流,其中可变长度的控制数据与控制流分开存储),将减少图块引擎的掩码写入的数量和图块引擎所产生的突发的数量(例如,如以上参考图2所述)。具体而言,图23示出了当如本文所述存储平铺数据时由平铺引擎产生的突发的数量占当按图块存储显示列表时由图块引擎产生的突发的数量的百分比;并且图24示出了当如本文所述存储平铺数据时针对平铺引擎执行的掩码写入的数量占当针对多个图形基准按图块存储显示列表时平铺引擎的掩码写入的数量的百分比。如本领域的技术人员所公知的,可以配置一些存储器,使得数据可以仅以突发大小的数据块或存储器接口宽度的数据块(例如,一次32字节)写入到存储器中。然而,可能希望仅写入突发大小的数据块的一部分。在这些状况下,突发大小的数据块的待写入部分可以由掩码标识。这被称为掩码写入。
测试还表明,与按图块组存储控制流(其中将可变长度的控制数据存储为控制流的一部分)相比,当如本文所述存储平铺数据时(例如,为每组图块存储控制流,其中可变长度的控制数据与控制流分开存储),将减少由平铺引擎产生的突发的数量(例如,如以上参考图3所述)。图25示出了当如本文所述存储平铺数据时由平铺引擎产生的突发数量占当按图块组存储显示列表时由平铺引擎产生的突发数量的百分比,其中可变长度的控制数据被存储为控制流的一部分(例如,如以上参考图3所述)。
图26示出了其中可以实现本文所述的平铺引擎、控制流解码器和/或图形处理系统的计算机系统。计算机系统包括CPU 2602、GPU 2604、存储器2606和其他设备2614,例如显示器2616、扬声器2618和摄像头2620。在GPU 2604上实现处理块2610(该处理块可以对应于本文所述的平铺引擎、控制流解码器和/或图形处理系统)。在其他示例中,处理块2610可以在CPU 2602上实现。计算机系统的部件可以通过通信总线2622彼此进行通信。
图1、图12和图16的平铺引擎、控制流解码器和图形处理系统被示出为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应该理解,本文所述的由平铺引擎、控制流解码器或图形处理系统形成的中间值无需在任何时候由平铺引擎、控制流解码器或图形处理系统物理生成,并且仅表示逻辑值,这些逻辑值方便地描述了由平铺引擎、控制流解码器或图形处理系统在其输入和输出之间执行的处理。
本文所述的平铺引擎、控制流解码器和图形处理系统可以体现在集成电路上的硬件中。本文所述的平铺引擎、控制流解码器和图形处理系统可以被配置成执行本文所述的任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序代码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行代码的一个或多个处理器执行,所述代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可以由机器存取的其他存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。也就是说,可以提供一种其上编码有集成电路定义数据集形式的计算机可读程序代码的计算机可读存储介质,当在集成电路制造系统中处理(即,运行)时,该计算机可读程序代码将该系统配置成制造被配置成执行本文所述任何方法的平铺引擎、控制流解码器或图形处理系统,或者制造包括本文所述任何装置的平铺引擎、控制流解码器或图形处理系统。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文所述的平铺引擎、控制流解码器或图形处理系统的方法。此外,可以提供一种集成电路限定数据集,当其在集成电路制造系统中被处理时致使平铺引擎、控制流解码器或图形处理系统的制造方法被执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件以生成由该表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参考图27描述在集成电路制造系统处处理集成电路限定数据集以便将系统配置为制造平铺引擎、控制流解码器或图形处理系统的示例。
图27示出了集成电路(IC)制造系统2702的示例,该IC制造系统被配置成制造如本文的任何示例中所述的平铺引擎、控制流解码器或图形处理系统。具体地说,IC制造系统2702包括布局处理系统2704和集成电路生成系统2706。IC制造系统2702被配置成接收IC定义数据集(例如,定义如本文任何示例中所述的平铺引擎、控制流解码器或图形处理系统)、处理IC定义数据集以及根据IC定义数据集来生成IC(例如,其体现如本文任何示例中所述的平铺引擎、控制流解码器或图形处理系统)。IC限定数据集的处理将IC制造系统2702配置成制造体现如本文的任何示例中所述的平铺引擎、控制流解码器或图形处理系统的集成电路。
布局处理系统2704被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统2704确定了电路布局时,它可以将电路布局定义输出到IC生成系统2706。电路布局定义可以是例如电路布局描述。
如本领域已知的,IC生成系统2706根据电路布局定义来生成IC。例如,IC生成系统2706可以实现生成IC的半导体器件制造工艺,其可以涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代性地,提供给IC生成系统2706的电路布局定义可以是计算机可读代码的形式,IC生成系统2706可以使用该计算机可读代码来形成用于生成IC的合适掩模。
由IC制造系统2702执行的不同过程可以全部在一个位置例如由一方来实现。替代性地,IC制造系统2702可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同的方来执行。例如,以下阶段中的一些可以在不同位置和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其他示例中,在集成电路制造系统中对集成电路定义数据集的处理可以将该系统配置成在不处理IC定义数据集来确定电路布局的状况下制造平铺引擎、控制流解码器或图形处理系统。举例来说,集成电路定义数据集可以定义例如FPGA的可重新配置的处理器的配置,并且对所述数据集进行的处理可以将IC制造系统配置成(例如,通过将配置数据加载到FPGA)生成具有所述定义的配置的可重新配置的处理器。
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,通过集成电路制造定义数据集,以上面参考图27描述的方式对集成电路制造系统的配置,可以制造出如本文所述的设备。
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图27所示的实例中,IC生成系统还可以由集成电路定义数据集进一步配置,以在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实现方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实现方式可以引起性能改进。性能改进可以包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实现方式的改进(诸如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个实例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
Claims (30)
1.一种在基于图块的图形处理系统中平铺图元的方法(1400),其中将渲染空间划分成多个图块,将所述多个图块分组成多个图块组,每个图块组包括至少两个图块,所述方法(1400)包括,针对图块组进行以下操作:
针对所述图块组的每一个图块,确定多个图元块中的每一个图元块的哪些图元与所述图块相交,每个图元块包括至少一个图元(1404);
针对包括与所述图块组中的至少一个图块相交的至少一个图元的每个图元块,在存储器中存储可变长度的控制数据块(1408);以及
在存储器中存储控制流,所述控制流包括每个图元块的固定大小的图元块条目,所述每个图元块包括与所述图块组中的至少一个图块相交的至少一个图元,每个图元块条目标识对应的图元块的所述控制数据块在存储器中的位置(1410)。
2.如权利要求1所述的方法(1400),其中每个图元块条目包括有效图块信息,所述有效图块信息标识所述图块组中的哪些图块对于所述对应的图元块有效,如果图元块中的至少一个图元与图块相交,则所述图块是针对所述图元块的有效图块。
3.如权利要求2所述的方法(1400),其中所述有效图块信息包括有效图块掩码,所述有效图块掩码包括所述图块组中的每一个图块的位,所述位指示所述图块是否为针对所述图元块的有效图块。
4.如权利要求2所述的方法(1400),其中所述控制流包括至少一种其他类型的条目,所述至少一种其他类型的条目中的每一个条目包括指示所述图块组中的所述图块都不是有效图块的有效图块信息。
5.如权利要求1至4中任一项所述的方法(1400),其中每个控制数据块包括标识所述对应的图元块的哪些图元与所述图块组中的每个图块相交的信息。
6.如权利要求1至4中任一项所述的方法(1400),其中至少一个控制数据块包括至少一个图元掩码,所述至少一个图元掩码包括所述对应的图元块中的每一个图元的位,所述位标识所述图元是否与所述图块组的一组一个或多个图块相交。
7.如权利要求1至4中任一项所述的方法(1400),其中至少一个控制数据块包括与所述对应的图元块中的至少一个图元相交的所述图块组中的每一个图块的图元掩码,每个图元掩码包括所述对应的图元块中的每一个图元的位,所述位标识所述图元是否与所述对应的图块相交。
8.如权利要求1至4中任一项所述的方法(1400),其中每个控制数据块包括标识所述对应的图元块在存储器中的地址的信息。
9.如权利要求1至4中任一项所述的方法(1400),其中每个控制数据块包括图元块标头,所述图元块标头指示:所述图块组的所述图块中的一个或多个图块是否与所述对应的图元块的相同的图元相交以及/或者所述图块组中的所述图块中的一个或多个图块是否与所述对应的图元块中的所有图元相交。
10.如权利要求1至4中任一项所述的方法(1400),其中:
每个图元块条目包括数据指针,所述数据指针标识所述对应的控制数据块在存储器中的所述位置;
所述控制流包括至少一个控制数据基址条目,所述控制数据基址条目指定控制数据基址的至少一部分;以及
控制数据块在存储器中的地址由所述控制数据基址和所述对应的图元块条目的所述数据指针的组合生成。
11.如权利要求10所述的方法(1400),其中每个数据指针包括到由所述控制数据基址标识的存储器的一部分中的偏移。
12.如权利要求10所述的方法(1400),其中每个控制数据基址条目指定完整的控制数据基址。
13.如权利要求10所述的方法(1400),其中每个控制数据基址条目仅指定完整的控制数据基址的一部分。
14.如权利要求13所述的方法(1400),其中所述控制流包括:指定所述控制数据基址的第一部分的第一控制数据基址条目,以及指定所述控制数据基址的第二部分的第二控制数据基址条目。
15.如权利要求1至4中任一项所述的方法(1400),其中每个图元块条目包括图元块标头,所述图元块标头包括描述对应的图元块和/或对应的控制数据块的信息。
16.如权利要求1至4中任一项所述的方法(1400),其中将所述控制流存储在存储器中包括:将所述控制流条目划分成多个控制流块(1514);其中除最后一个控制流块之外,每个控制流块中的最后一个条目是标识下一个控制流块在存储器中的位置的链路条目(1516、1518)。
17.如权利要求1至4中任一项所述的方法(1400),其中所述控制流还包括标识所述控制流的结束的终止条目,所述终止条目是控制流(1508、1510)中的最后一个条目。
18.如权利要求1至4中任一项所述的方法(1400),其中每个图元块条目是32位。
19.如权利要求1至4中任一项所述的方法(1400),其中每个图块组在所述渲染空间中包括N×M块的图块,其中N和M是大于或等于1的整数。
20.如权利要求19所述的方法(1400),其中N和M等于2。
21.一种在图形处理系统(2000)中使用的用于将图元平铺到渲染空间的图块组中的图块的平铺引擎(1200),所述平铺引擎(1200)包括:
平铺逻辑(1202),所述平铺逻辑被配置成针对所述图块组中的每一个图块,确定多个图元块中的每一个图元块的哪些图元与所述图块相交,每个图元块包括至少一个图元;
控制数据块生成器(1204),所述控制数据块生成器被配置成针对包括与所述图块组中的至少一个图块相交的至少一个图元的每个图元块,在存储器(1208)中存储可变长度的控制数据块(404、406、606、608、610、612、614);以及
控制流生成器(1206),所述控制流生成器被配置成在存储器(1210)中存储控制流(402、602、604),所述控制流(402、602、604)包括用于每个图元块的固定大小的图元块条目(408、410、616、618、620、622、624),所述每个图元块包括与所述图块组中的至少一个图块相交的至少一个图元,每个图元块条目标识对应的图元块的所述控制数据块(404、406、606、608、610、612、614)在存储器中的位置。
22.一种对包括渲染空间的至少两个图块的图块组的控制流进行解码的方法(1700),所述方法(1700)包括:
接收所述图块组的所述控制流,所述控制流包括一个或多个固定长度的图元块条目,每个图元块条目标识对应的图元块的控制数据块在存储器中的位置;
针对所述一个或多个图元块条目中的至少一个图元块条目:
(a)确定所述图块组中的当前图块对于所述对应的图元块是否有效,如果所述图元块中的至少一个图元与图块相交,则所述图块是针对所述图元块的有效图块(1704);
(b)响应于确定所述当前图块对于所述对应的图元块有效,从存储器中所标识的位置检索对应的控制数据块(1708);
(c)从所检索的控制数据块标识所述图元块在存储器中的地址以及所述图元块的与渲染所述当前图块相关的图元(1710);以及
(d)输出标识所述图元块在存储器中的所述地址的信息以及所述图元块的与渲染所述当前图块相关的图元的信息(1712)。
23.如权利要求22所述的方法(1700),其中:
每个图元块条目包括有效图块信息,所述有效图块信息标识图块组中的哪些图块对于对应的图元块有效;并且
所述方法还包括针对控制流的一组条目:
为所述组条目中与当前图块相对应的每个条目选择有效图块信息的一部分(1904);
对所选择的部分执行操作以确定当前图块对于所述组条目中的任何图元块条目是否有效(1906);并且
如果操作结果指示当前图块针对所述组条目中的至少一个图元块条目有效,则仅对所述组条目中的图元块条目执行(a)–(d)(1908、1910、1912)。
24.如权利要求23所述的方法(1700),其中:
每个条目的有效图块信息包括有效掩码,所述有效掩码具有用于图块组的每个图块的位,所述位指示所述图块对于条目是否有效;
每个条目的有效图块信息的所选择的部分是与当前图块相对应的有效图块掩码的位;并且
对所选择的部分执行的运算是“或”运算。
25.一种控制流解码器(1600),所述控制流解码器用于对包括渲染空间的至少两个图块的图块组的控制流进行解码,所述控制流解码器(1600)包括:
获取模块(1602),所述获取模块被配置成从存储器(1604)中获取图块组的控制流(402、602、604),所述控制流包括一个或多个固定长度的图元块条目(408、410、616、618、620、622、624),每个图元块条目(408、410、616、618、620、622、624)标识对应的图元块的控制数据块(404、406、606、608、610、612、614)在存储器(1608)中的位置;
图元块条目分析器(1606),所述图元块条目分析器被配置成针对所述一个或多个图元块条目(408、410、616、618、620、622、624)中的至少一个图元块条目:
(a)确定图块组的当前图块对于对应的图元块是否有效,如果图元块中的至少一个图元与图块相交,则所述图块是针对图元块的有效图块;
(b)响应于确定当前图块对于对应的图元块是有效图块,从存储器(1608)中所标识的位置检索对应的控制数据块(404、406、606、608、610、612、614);
(c)从所检索的控制数据块(404、406、606、608、610、612、614)标识图元块在存储器中的地址以及与渲染当前图块相关的所述图元块的图元;以及
(d)输出信息,所述信息标识图元块在存储器中的地址以及与渲染当前图块相关的所述图元块的图元。
26.一种平铺引擎,所述平铺引擎被配置为执行如权利要求1至4中任一项所述的方法(1400)。
27.如权利要求21所述的平铺引擎(1200),其中所述平铺引擎(1200)体现在集成电路上的硬件中。
28.一种图形处理系统(2000),所述图形处理系统包括如权利要求21所述的平铺引擎(1200)。
29.一种计算机可读存储介质,其上存储有计算机可读指令,所述计算机可读指令当在计算机系统处执行时致使所述计算机系统执行如权利要求1至4中任一项所述的方法。
30.一种计算机可读存储介质,其上存储有如权利要求21所述的平铺引擎(1200)的计算机可读描述,所述计算机可读描述当在集成电路制造系统中处理时致使所述集成电路制造系统制造体现所述平铺引擎(1200)的集成电路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2001794.3A GB2586297B (en) | 2020-02-10 | 2020-02-10 | Data structures, methods and tiling engines for storing tiling information in a graphics processing system |
GB2001794.3 | 2020-02-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113256477A CN113256477A (zh) | 2021-08-13 |
CN113256477B true CN113256477B (zh) | 2023-06-06 |
Family
ID=69897062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110179418.3A Active CN113256477B (zh) | 2020-02-10 | 2021-02-09 | 用于在图形处理系统中存储平铺信息的方法和平铺引擎 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11532115B2 (zh) |
EP (2) | EP4307291A3 (zh) |
CN (1) | CN113256477B (zh) |
GB (1) | GB2586297B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2526598B (en) * | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
US20240005601A1 (en) * | 2022-06-29 | 2024-01-04 | Advanced Micro Devices, Inc. | Hierarchical depth data generation using primitive fusion |
CN116385253B (zh) * | 2023-01-06 | 2024-07-23 | 格兰菲智能科技股份有限公司 | 图元绘制方法、装置、计算机设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3236420A1 (en) * | 2008-12-19 | 2017-10-25 | Imagination Technologies Limited | Multi level display control list in tile based 3d computer graphics system |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0524804D0 (en) * | 2005-12-05 | 2006-01-11 | Falanx Microsystems As | Method of and apparatus for processing graphics |
GB2461821B (en) * | 2007-09-12 | 2010-06-30 | Imagination Tech Ltd | Methods and systems for generating 3-dimensional computer images |
GB0823468D0 (en) * | 2008-12-23 | 2009-01-28 | Imagination Tech Ltd | Display list control stream grouping in tile based 3D computer graphics systems |
US8854384B2 (en) * | 2010-04-06 | 2014-10-07 | Broadcom Corporation | Method and system for processing pixels utilizing scoreboarding |
GB2524120B (en) * | 2014-06-17 | 2016-03-02 | Imagination Tech Ltd | Assigning primitives to tiles in a graphics processing system |
KR102454893B1 (ko) * | 2015-09-30 | 2022-10-14 | 삼성전자주식회사 | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치의 동작 방법 |
GB2549789B (en) | 2016-04-29 | 2020-05-06 | Imagination Tech Ltd | Generation of a control stream for a tile |
EP3249612B1 (en) * | 2016-04-29 | 2023-02-08 | Imagination Technologies Limited | Generation of a control stream for a tile |
GB2570743B (en) * | 2018-06-29 | 2021-06-23 | Imagination Tech Ltd | Tile assignment to processing cores within a graphics processing unit |
-
2020
- 2020-02-10 GB GB2001794.3A patent/GB2586297B/en active Active
-
2021
- 2021-02-09 CN CN202110179418.3A patent/CN113256477B/zh active Active
- 2021-02-10 EP EP23212465.1A patent/EP4307291A3/en active Pending
- 2021-02-10 EP EP21156181.6A patent/EP3862979B1/en active Active
- 2021-02-10 US US17/172,313 patent/US11532115B2/en active Active
-
2022
- 2022-12-13 US US18/080,658 patent/US11861782B2/en active Active
-
2023
- 2023-12-31 US US18/401,566 patent/US20240135625A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3236420A1 (en) * | 2008-12-19 | 2017-10-25 | Imagination Technologies Limited | Multi level display control list in tile based 3d computer graphics system |
Also Published As
Publication number | Publication date |
---|---|
EP3862979A1 (en) | 2021-08-11 |
CN113256477A (zh) | 2021-08-13 |
EP4307291A3 (en) | 2024-04-17 |
GB2586297B (en) | 2022-03-02 |
GB2586297A (en) | 2021-02-17 |
US11861782B2 (en) | 2024-01-02 |
EP4307291A2 (en) | 2024-01-17 |
US20240135625A1 (en) | 2024-04-25 |
GB202001794D0 (en) | 2020-03-25 |
EP3862979B1 (en) | 2024-01-03 |
US20210248806A1 (en) | 2021-08-12 |
US20230111561A1 (en) | 2023-04-13 |
US11532115B2 (en) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113256477B (zh) | 用于在图形处理系统中存储平铺信息的方法和平铺引擎 | |
US11610358B2 (en) | Data structures, methods and tiling engines for hierarchically storing tiling information in a graphics processing system | |
CN111508056B (zh) | 利用扩展变换级掩码的图形处理系统 | |
US11551401B2 (en) | Data structures, methods and primitive block generators for storing primitives in a graphics processing system | |
US20230409221A1 (en) | Methods and systems for storing variable length data blocks in memory | |
GB2592046A (en) | Methods and tiling engines for tiling primitives in a graphics processing system | |
GB2592045A (en) | Data structures, methods and primitive block generators for storing primitives in a graphics processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |