CN102265309A - 基于图块的3d计算机图形系统中的显示列表控制流分组 - Google Patents
基于图块的3d计算机图形系统中的显示列表控制流分组 Download PDFInfo
- Publication number
- CN102265309A CN102265309A CN2009801523691A CN200980152369A CN102265309A CN 102265309 A CN102265309 A CN 102265309A CN 2009801523691 A CN2009801523691 A CN 2009801523691A CN 200980152369 A CN200980152369 A CN 200980152369A CN 102265309 A CN102265309 A CN 102265309A
- Authority
- CN
- China
- Prior art keywords
- primitive
- piece
- group
- segment
- control
- 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.)
- Granted
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
- 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
- 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
提供了一种用于绘制3D计算机图形图像的方法和装置。该图像被细分成多个矩形区域,并且在该图像中可见的原语被分配给多个原语块中的各个原语块。确定哪些原语块包含与每个矩形区域相交的原语。然后将矩形区域分组到多个固定大小的组中,并获得针对每个固定大小的组的控制流数据,该控制流数据包含用于确定绘制每个第一固定大小的组中的矩形区域需要哪些原语块的数据。该控制流数据之后用于绘制用于显示的图像。
Description
技术领域
本发明涉及3D(3-dimensional)计算机图形系统,尤其涉及基于图块(tile)的系统并致力于增强基于图块的绘制(rendering)的性能。
背景技术
随着技术的快速发展,3D计算机生成的图像的复杂度增加了。人们能够通过使用顶点和三角网格来容易地为非常复杂的3D对象(诸如人类运动)构建计算机模型。然后,能够将这些类型的3D模型发送到3D计算机图形系统中,并在计算机屏幕上生成动画的3D图像。计算机生成的3D动画图像广泛地用于3D计算机游戏、导航工具和计算机辅助工程设计工具中。
3D计算机图形系统必须应对更复杂图形以及快速显示的要求。由于显示模型中的细节增加了,所以需要使用越来越多的原语(primitive)和顶点。而且随着纹理(texture)和阴影(shading)技术的演进,越来越多的信息伴随有原语和顶点数据。在现代游戏中,一次绘制中会存在着超过百万个原语。因此,存储器的带宽是计算机图形系统性能的非常重要的因素。
基于图块的绘制系统是众所周知的。这些系统将图像细分成多个矩形块或者图块。在英国专利GB2343603和国际专利申请号WO 2004/086309中,绘制表面被分成n×m个像素图块的子表面。原语(类似于三角、线或点)仅在与这些原语重叠的图块中得到处理。
在基于图块的3D计算机图形系统中,用于划分图块所执行的主要步骤如图1所示。
1、如图1中的101所示,输入原语和顶点的数据流。类似位置中的原语可以按时间顺序到达,类似于三角带和扇。
2、宏图块引擎(macro tiling engine,MTE)将顶点转换成屏幕空间,移除可以被反向面对的(back faced)或者可以通过使用公知方法剪裁平面进行剪裁的原语。如图1中的102所示,原语被分组到原语块中并被写入存储器中,其中,原语块具有固定的最大数量的顶点和原语。对于由所述原语覆盖的图块而言,原语和顶点的数量与原语块的存储器地址(原语块指针)一起被发送到图块引擎,以便将其添加到显示列表的控制流中。
为了在获取原语和顶点数据时最小化存储器带宽的影响,原语被分组到原语块(即依赖于针对原语块的边界框的宏图块)中。如图2所示,宏图块201是屏幕200的矩形区域,该宏图块201具有固定数量的图块202。宏图块可以是屏幕大小的四分之一或者十六分之一,其用于定位原语块并降低存储器的带宽。当原语块中的原语与宏图块交叉(cross)时,它们被写入称为全局宏图块的专用宏图块中。这样,原语块中的参数数据就只被写一次。来自宏图块的原语仅能够由该宏图块内的图块进行访问,而来自全局宏图块的原语可以由所有的图块的进行访问。
3、如图1中的103所示的图块引擎(TE)。将来自被写入宏图块引擎102中的原语块的每个原语与该原语块的边界框内部的每个图块进行核对。将该原语块添加到由该原语块中的任意原语所覆盖的图块的显示列表中。被写入与图块的显示列表相关联的控制流中的控制数据包括针对所述原语块中的原语和顶点的数量的原语块报头、针对被写入的原语块的存储器地址的原语块指针以及针对在图块中可见的原语的原语掩码(mask)。
针对显示列表中的控制流数据,将分离的存储器空间分配给每个图块。在每个图块的控制流数据中,称为尾指针的存储器地址指针被用作针对下一个空闲地址。
为了针对图块中的控制流来改善存储器访问,可以向图块引擎添加小的高速缓存器,即“尾指针高速缓存器”。图块中的控制流的末端的存储器位置被存储在尾指针高速缓存器中并被读取自尾指针高速缓存器,这降低了来自的图块引擎的主存储器访问。
4、3D图像处理。在图3中,针对来自区域阵列300的屏幕的每个图块来执行基于图块的3D计算机图形系统中的3D图像处理。其遍历图3中每个图块301的控制流,并在图3中的控制数据302中从由原语块指针所指向的存储器地址中读取顶点和原语数据。对来自原语块的图块中的所有有效原语执行图像处理操作,诸如隐藏表面移除、纹理化以及阴影处理。
图8中示出了基于图块的绘制的示例。作为屏幕一部分的宏图块MT0800内部具有16个图块801。两个三角带802、803以及一个大的三角804由宏图块引擎MTE 805进行处理,并被投影到MT0中的部分屏幕中。与这三个原语块相关联的顶点和原语数据被写入存储器807中的它们自己的存储器地址中。然后,这三个原语块的存储器地址指针被传递给用于进行图块化处理的图块引擎TE 806。图块引擎对所有的图块进行遍历,以确定图块内是否具有任何的原语以及与在图块中可见的原语块相关联的控制流数据是否被写入用于图块显示列表的存储器中。在示例性的显示中,T4中的控制流将包含针对原语块802和804中的三个原语块的地址指针以及三角的三角可见掩码的控制数据。例如,原语块802中的从左边开始的前三个三角以及来自原语块804的大三角在T4中是可见的。对于图块T10而言,控制流数据将仅由来自原语块803和804的信息构成。同时,将控制数据(诸如与原语块803相关联的顶点数据的地址指针)插入到针对图块T10、T11、T14和T15的控制流中,而将与原语块804相关联的控制数据插入到针对宏图块MT0中的每个图块的控制流中。
在3D绘制处理808中,以图3中的300所示的区域阵列的顺序来对所有的图块逐个地进行处理。对于3D处理中的每个图块而言,如图3中的301所示,首先从存储器中读取来自控制流的控制数据。如图3中的302所示,从存储器中读取与图块控制数据中的原语块相关联的顶点和原语数据,因此对图块可见的所有的三角都被处理并被绘制到屏幕上。
对于基于图块的计算机图形系统而言,在图块的基础上对图块执行绘制。基于图块的绘制的最大优点在于,其显著降低了对图形系统内部存储和存储器带宽的要求。
基于图块的绘制的缺点是每个图块中的显示列表所需的控制数据的增加。显示控制数据需要被写入到三角覆盖(triangle cover)的所有图块中。对于覆盖许多图块的大三角而言,被写入的控制数据的总数量是相当大的。
例如,屏幕尺寸为1920×1080的一次绘制可以被分成8160个像素为16×16的图块。覆盖整个屏幕的大三角必须被添加到所有图块的显示列表中。如果对于控制数据而言需要2个32比特字,则对于单个全屏幕三角而言,总的控制流数据接近于64KB。在该情况中所需要的大数量的控制数据对基于图块的3D计算机图形系统中的绘制的性能具有显著的影响。
英国专利申请No.0717781.9中呈现的系统同时处理两个图块以改善图块引擎的性能。来自两个邻近图块的控制流数据被组合成单个显示列表,根据上面的示例,这使得总的控制流数据为接近32KB。在这种情况中,控制流数据的大小是大约一半,但对于三角而言,这仍然是相当大数量的控制数据。
发明内容
本发明的优选实施方式提供了在基于图块的3D计算机图形系统中用于显示列表控制流分组的方法和装置。
在基于图块的绘制系统中,覆盖多个图块的三角消耗了每个图块的存储器和带宽,并且必须在每个图块中设置参考。根据本发明实施方式的用于显示列表控制流分组的方法将基于图块的显示列表组织成图块组(tile group)以形成单个显示列表控制流,其中控制流数据被施加到所述图块组而非单个的图块。如果控制数据块中的控制流数据在图块中没有被引用,则在该图块中可以跳过整个的该控制数据块。通过采用基于图块组的显示列表控制流,所需要的控制流数据的数量减少了。该实施方式还引入了控制指针阵列来增加对控制流数据进行处理的效率。通过优化显示列表控制流,所呈现的方法降低了内部参数存储器的带宽,从而改善了基于图块的3D图形系统的性能。
附图说明
图1示出了用于在基于图块的3D计算机图形系统中进行图块化所执行的主要步骤的概要图;
图2示出了在基于图块的3D计算机图形系统中使用的屏幕上的宏图块;
图3示出了在基于图块的绘制中显示列表控制流分组的概述;
图4示出了针对宏图块中的显示列表控制流分组的数据结构的概述;
图5示出了显示列表控制流分组中的控制数据块分组的数据结构;
图6示出了横跨显示列表控制流分组中的控制数据块而被写入的控制流数据;
图7示出了针对显示列表控制流分组的控制流数据的数据结构的概述;
图8示出了基于图块的绘制过程的示例。
具体实施方式
在如上所述的基于图块的3D计算机图形系统中,图块引擎从宏图块引擎中获取原语块,并计算绘制原语所需的最小数量的图块。然后,在图3中的301处,对最小的图块列表进行处理,并将针对原语块的地址的原语块数据指针与存在于所述图块中的描述所述原语的原语报头字一起写入动态分配的存储器中作为控制流数据。
每个图块都具有其自己的用于控制流数据的固定大小的存储器空间。存储器块由基于图块的3D计算机图形系统根据需要进行分配。当新的数据要被添加到控制流中时,对于超过当前分配的存储器块大小的特定图块而言,需要新的分配并通过使用流链接将旧的控制流链接到该新的分配。如果宏图块引擎经由终止信号指示场景的结束,则所有的图块都被处理并且用于有效区域中的图块的控制流以终止字结束。
在基于图块的3D计算机图形系统中,用于原语块的索引数据和顶点可以被写入该原语块所属于的宏图块中,或者在该原语块的边界框与宏图块交叉时被写入全局宏图块中,并且仅被写入一次。但是对于包含大的原语的原语块而言,控制流数据或许需要被向原语所重叠的所有图块中写入多次。在极端情况(诸如全屏三角的情况)中,控制流数据必须被写入屏幕上的每个图块中。被写入的控制流数据的重复造成存储器带宽的增加。
在本发明的优选实施方式中,来自基于图块的显示列表的控制流被优化成针对一组图块的控制流,而不是每个图块显示列表都具有一个控制流。
控制流分组中的控制流
在控制流分组的实施方式中,宏图块400中的图块被分成具有固定数量的图块的图块组,例如,图4中的401具有2×2个图块。图3中的区域阵列300和图3中的控制流301和图4中的402都基于图块组而非基于图块。仍然是在逐个图块的基础上来进行绘制,但是图块组中的图块将共享相同的区域报头字和控制流列表。
基于控制流分组的参数流结构的优点在于:
由于控制流列表是基于图块组的,所以控制流列表的数量减少了,例如,大约减少到基于图块的控制流列表所需数量的四分之一。尾指针的数量也同样减少了。
在图7中的701处,将在存储器中针对图块组的控制流分配的每个控制数据块的开始地址存储在控制指针阵列中,不需要链接指针。允许将控制数据写入交叉的控制数据块中。
在图1中的104处,当控制数据块中的控制数据没有在图块中得到引用时,在3D处理中可以跳过整个的该控制数据块。
区域报头字被减少为每个图块组2个32比特,而不是每个图块2个32比特。对于2×2的图块分组而言,区域阵列存储器空间减少了75%。
在所提出的控制流分组方法中,对于宏图块参数流数据的三个实体(即区域阵列、控制流和顶点/索引块)而言,控制流和区域阵列的数据结构是不同的。然而,顶点/索引块数据在控制流分组中不被改变。
修改控制流数据的方式是本发明的实施方式,现在通过示例进行描述。
区域阵列
区域阵列记录了针对每个图块的控制流的开始。该阵列是具有区域定义的毗邻组,每个区域定义由区域报头字和随后的控制基地址字构成。
在提出的控制流分组方法中,该区域阵列是基于图块组的,例如2×2个图块而非单个图块。其存储下面的数据。
偏移(offset) | 字段 |
0×0 | 区域报头 |
0×4 | 控制基地址 |
区域报头
区域报头字具有用于图块组中的所有图块的信息,其中每个区域报头字为8比特。在终止绘制时,图1中的图块引擎103对屏幕上的所有图块都进行检查以为每个图块建立8比特的区域报头字,然后将图块组中的区域报头字组合成针对所述图块组的区域报头字。下面针对具有2×2个图块的图块组,示出了比特功能的描述。比特31、23、15和7未使用。
区域报头字
绘制开始区域位置
在区域报头字中没有为图块组提供图块位置X,Y。在分离的寄存器中定义了用于绘制的开始图块位置和开始宏图块。通常,该位置位于要被绘制的图像的角落中。图1中的3D处理104从寄存器中定义的图块位置开始3D绘制。其从3D区域基地址中读取上面描述的两个区域报头字,然后对图块组中的每个图块进行绘制。
下一区域位置
图1中的3D处理步骤104在结束图块的绘制之后,通过使用预定的图块顺序来自动地计算下一图块位置X和Y。
在本发明的使用图块组的实施方式中,所述图块组中的2×2个图块各自共享相同的控制流基地址。每个图块都具有其自己的、来自区域报头字的8比特区域信息。由于宏图块大小与图块组的大小相匹配,所以图块组中的图块总是以扫描顺序进行绘制。对于2×2的图块组而言,如果下一图块位于相同的图块组中,则下一图块位置是图块组开始图块位置在X方向或者Y方向或者X和Y方向上加1。
在结束了对图块组中的所有图块的绘制之后,从区域阵列中读取接下来的2个32比特作为用于下一图块组的区域报头字和控制基地址字。
通过使用可以在寄存器中预定义的宏图块大小和宏图块模式来计算下一图块组的位置。图块组中的图块的数量是固定的,例如2×2个图块。以宏图块内的扫描顺序来绘制图块组。优选以垂直线的顺序来绘制宏图块。因此,在3D处理中能够自动地计算下一图块组的位置。
控制基地址
这是存储在区域阵列中的另一数据,并且是指向由图块组引用的控制流的开始的指针。当由图1中的103处的图块引擎TE以及图1中的3D处理104来生成时,控制流的基地址总是相匹配的128比特。针对图块组中的第一图块来读取控制基字,并且该控制基字由该图块组中的所有图块共享。
用于图块组的控制流数据被写入分配给该图块组的固定大小的存储器块中,例如如图所示的16个32比特的控制数据块302。
控制基地址字中包含有4比特的字段CONTROL_BLOCK_TILE_VALID,该4比特的字段表明来自控制数据块的控制流数据是否由图块组中的图块所引用。比特28用于图块组中的图块(0,0),比特29用于图块组中的图块(1,0),比特30用于图块组中的图块(0,1),以及图块31用于图块组中的图块(1,1)。如果没有针对图块设置字段CONTROL_BLOCK_TILE_VALID中的比特,则在该图块的3D处理中可以跳过所述控制数据块。但是如果控制数据块是设置了CONTROL_BLOCK_LAST的最后的控制数据块或者如果该控制数据块包含控制指针阵列,则不能跳过该控制数据块。
在跳过某个控制数据块之后,图1中的3D处理104继续对来自下一有效控制数据块的图块进行处理。32比特的偏移PRIM_BLOCK_OFFSET用于在跳过之后恢复来自所述控制数据块的第一原语块报头字。下面针对具有2×2个图块的图块组,示出了控制基地址字的结构。
控制基地址字
控制流
3D显示列表控制流由一序列的块报头构成,每个块报头之后可以跟随与对象相关的数据量,如图3中的302以及图4中的402所示。下面描述控制流的各种元素。
块报头
每个原语块报头中的首位2个比特31和30是预留给原语块报头类型的,其中,01预留给原语块以及11预留给控制流终止。当图4中图块组中的控制流数据402被处理时,首先分析每个块报头字中的两个比特31和30以确定块报头字是原语块报头字还是控制流终止字。在原语块报头字的情况中,额外的报头字(例如原语块指针字和原语掩码字)可以出现在原语块报头字之后。
原语块
在图3中的303处,原语块为图块组定义了原语数据块。该数据包括索引/顶点数据,并且潜在地包括与该块中的原语相关联的状态。在针对每个原语块的控制流中以及在图块组参考中存在着报头字。该报头字包括原语块报头字、原语块指针字以及原语掩码字。
提供有原语块的原语掩码字用于定义在图块组的每个图块中引用了当前块中的哪些原语和顶点。例如,如果在原语块中存在着多达32个原语,则需要32个比特的原语掩码,即比特/原语。原语块可以包含多达16个顶点,然而,并不是所有的这些顶点都在特定图块中使用。因此,需要16比特的顶点掩码来定义所述块中的原语所引用的顶点,即比特/顶点。
原语掩码字是可选的,并且如果原语块中的所有原语将被图块组的所有图块所引用,则原语掩码字不存在。在这种情况中,假设原语掩码和顶点掩码将被完全设置,即图块组中的每个图块都引用该块中的所有原语,并且这些原语引用该原语块中的所有顶点。
依赖于图块组中的图块的原语掩码格式,原语掩码字的总数量在原语块之间变化。下面示出了一个示例。
偏移 | 字段 |
0×00 | 原语块报头 |
0×04 | 原语块指针 |
0×08 | 原语掩码 |
0×0C | 原语掩码 |
0×10 | 原语掩码 |
0×14 | 原语掩码 |
0×18 | 原语掩码 |
原语块报头
原语块报头字包含表示原语块中的顶点数量信息的32个比特。它还包含用于2×2个图块中的每个图块的原语掩码格式。根据由每个比特指定的各种控制功能,该结构如下所示。
原语块指针
这是原语块报头之后的另一32比特字。
控制指针阵列
针对图块组的显示列表控制流的数据被写入临时分配的固定大小的存储器块中,例如,16个32比特的存储器块。由于这些控制数据块不可以位于毗邻的存储器地址中,所以下一控制数据块的开始地址必须以某种方式可用,以便处理下一控制数据块302中的控制流数据。通常,可以在当前控制数据块的末端处插入针对被链接的控制数据块的地址指针。这样,3D处理必须等待,直到整个控制数据块得到处理,以便获得下一控制数据块的开始地址。当对于图块组的某个图块而言可以跳过控制数据块中的控制流数据时,仅为了获得用于下一控制数据块的链接地址而处理该控制数据块,这样不是很有效率。
在所提出的显示列表控制流分组方法中,在控制数据块中使用控制指针阵列以允许生成针对3D处理中正被连续处理的图块组的控制流。
如图5中的500所示,在控制流分组中,以8个控制块分组来组织控制数据块。在图5中的501处,分组中的第一控制块具有预留给控制指针阵列的前8个32比特。每个控制指针都具有与区域报头中的控制基地址字相同的格式,它指向具有8个控制数据块的分组中的控制数据块的开始地址,如图5中的502所示。
第一控制块分组中的第一控制数据块的开始地址来自区域报头字即控制基地址字。控制指针阵列中的第8个控制指针指向下一控制块分组的开始地址。
由于所有控制数据块的开始地址都保存在控制块中的控制指针阵列中,所以不需要链接指针。在3D处理中,首先读取来自第一控制块的控制指针,并且这些控制指针用于获取控制数据块分组中的控制数据块的开始地址。该3D处理不需要等待至控制数据块结束才能获取下一控制数据块的地址。它持续地处理控制块分组中的控制块。该方案增加了控制流分组方法中3D处理的性能。
对于一些原语块而言,并不是图块组中的每个图块都被原语块中的原语所覆盖。对于不被原语块覆盖的图块而言,3D处理应当跳过图块组控制流中的该控制数据。
使用控制指针阵列的另一优点是,如果没有为某个图块设置CONTROL_BLOCK_TILE_VALID中的比特,则可以跳过控制数据块。这意味着控制数据块中的控制数据不被该图块所引用。该3D处理继续处理控制块分组中的控制数据块,即使在跳过了针对图块组中的某个图块的整个控制数据块的情况下。由于具备跳过不被图块引用的控制数据块的能力,所以连续被跳过的原语块的数量是有限的。
如果控制数据块是设置了CONTROL_BLOCK_LAST的最后的控制数据块或者如果该控制数据块包含控制指针阵列,则不能跳过该控制数据块。
当控制数据块被分配时,针对所述图块组来存储该控制数据块的开始地址。也存储第一原语块报头PRIM_BLOCK_OFFSET的32比特的偏移。为了填充CONTROL_BLOCK_TILE_VALID和CONTROL_BLOCK_LAST字段,在控制数据块结束时必须写入控制指针字。即在分配了新的控制数据块时,写出(write out)之前的控制指针字。在用设置的CONTROL_BLOCK_LAST比特来终止绘制时,最后的控制指针字被写入。
控制流数据块
原语块的数据大小因可选的原语掩码字而变化。为了改善控制流存储器的使用效率,允许跨越两个具有16个32比特的控制数据块来写针对原语块的控制流数据。
图6示出了原语块的示例,该原语块具有三个控制流字,即原语块报头、原语块指针和一个原语掩码字。在图6中的当前数据块601中存在着2个32比特的自由空间,从而如图6中的602所示,在下一控制数据块的开始处写入原语掩码字。
原语掩码和顶点掩码
原语块包含固定数量的原语和顶点,例如多达32个原语和16个顶点。由于在图块组的图块中或许并非所有原语都是可见的,所以在原语块中使用原语掩码和顶点掩码来指示在图块组的每个图块中引用的原语和顶点。
在提出的控制流分组方法中,图块组中的2×2个图块中的每个图块在原语块报头字中都具有其自己的原语掩码格式。在2比特原语掩码格式字中,该格式为:
·图块无效
这意味着没有来自原语块的原语被所述图块引用,没有原语和顶点掩码用于所述图块。在这种情况中,3D处理跳过图块组的图块中的原语块。
·全掩码
这意味着在图块组的所述图块中引用所有原语。在这种情况中,在控制流中不需要任何的原语和顶点掩码数据。3D处理自动地设置全部的原语和顶点掩码。
·打包的掩码数据
当在针对图块组的图块的原语掩码和顶点掩码中都仅存在着一个非0字节时,当原语块包含最大32个原语和16个顶点时,可以将该2个非0字节打包入针对控制流中的图块的2字节掩码字中,而非打包入6字节掩码中。对于非0字节不位于掩码数据的开始的情况,对于图块组中的每个图块而言,在原语块报头字中使用用于顶点掩码的1比特字节偏移和用于原语掩码的2比特字节偏移。
以具有原语掩码00000000 00000000 10100100 00000000(0x0000A400)和顶点掩码01101100 00000000(0x6C00)的原语块为例,该掩码数据可以被打包成0xA46C并被写入控制流中,而非被打包成0x0000A400和0x6C00。在原语块报头中,原语掩码格式PF_PRIM_MASK_FMT将被设置为10,作为用于所述图块的打包的掩码数据。对于所述图块而言,字节偏移PF_VERT_MASK_START被设置为1,并且PF_PRIM_MASK_START被设置为01。在3D处理中,通过使用原语掩码格式以及字节开始比特,将顶点掩码数据从0x6C重构成0x6C00,以及将原语掩码从0xA4重构成0x0000A400。
·未打包的掩码数据
不针对所述图块来打包原语掩码和顶点掩码。
相同的原语掩码
当原语块报头字中的标志PF_SAME_MASK被设置时,其表明图块组中的所有图块都具有相同的原语掩码。在这种情况中,仅针对图块组将一个原语掩码和一个顶点掩码写入控制流中。
多个原语掩码字
图块组中的每个图块中的原语和顶点掩码被写入控制流中作为字节相匹配的数据。最后,原语掩码数据被积攒成32比特。原语块中的原语掩码字的总数量可以根据图块组中图块的原语掩码格式来计算。
平均统计显示,对于具有2×2个图块的图块组而言,在每个原语块中使用的原语掩码字小于2。
尾指针
在图1中的图块引擎(TE)103中存储每个图块的尾指针字,以包含针对图块的控制数据块中的自由地址指针的信息以及一些其他图块相关的信息。在所提出的控制流分组方法中,每个图块组具有一个尾指针,而非每个图块具有一个尾指针。
每个图块组具有两个尾指针字。尾指针字1中的4比特字段TP_TILE_VALID用于在图块组的图块中有效的尾指针,如果该图块被任何原语块所覆盖则设置该比特。在绘制终止时,如果尾指针的字段TP_TILE_VALID中的任意比特为非0,则在控制流列表的最后写入终止字。如果TP_TILE_VALID中的任意比特为0,则在绘制终止时,相关的图块被设置成空图块。
为了填充控制指针字中的CONTROL_BLOCK_TILE_VALID和CONTROL_BLOCK_LAST字段,在控制数据块结束时图块引擎TE必须写控制指针。即在分配了新的控制数据块时,写出之前的控制指针字。尾指针字1中的比特TP_REGION_OUTPUT是用于表明控制基地址字是否已经被写入区域报头中的标志。如果没有设置TP_REGION_OUTPUT,则将第一控制指针字写入区域报头中作为控制基地址字,否则将第一控制指针字写入控制块组的第一控制数据块中的控制指针阵列。
尾指针字1
尾指针字的结构如下所示。
在图块组的控制流列表中的第一控制数据块之后,在8控制数据块组中的第一控制数据块的上半部分上的控制指针阵列中写入任意随后的控制指针字。下一控制指针字的地址存储在尾指针字2中作为TP_CTRL_POINTER_ADDR。与32比特的偏移TP_CTRL_POINTER_OFFSET相组合,可以将多达8个控制指针字写入控制数据块组的第一控制数据块中的控制指针阵列中。
4比特字段TP_CTRL_BLOCK_TILE_VALID用于表明控制块在图块组的图块中是否有效。如果控制块中的控制流数据不被图块所引用,则TP_CTRL_BLOCK_TILE_VALID中的相关比特将为0。在这种情况中,跳过该控制块并对下一控制块进行处理。在每次将用于原语块的控制流数据写入控制数据块中时,就用来自原语块的图块有效标志来更新字段TP_CTRL_BLOCK_TILE_VALID。在控制块被完全填充控制流数据之后,在控制指针字中写入字段TP_CTRL_BLOCK_TILE_VALID作为CONTROL_BLOCK_TILE_VALID。
字段TP_PRIM_BLOCK_OFFSET是控制块中的第一原语块报头字的32比特偏移。它由3D处理所使用,以在跳过控制块之后获取第一原语块报头。控制块中的第一原语块报头字的偏移必须被存储在尾指针字2中,并被写入控制指针字的字段PRIM_BLOCK_OFFSET中。
尾指针字2
3D处理中的控制流数据分析
图7示出了3D处理中的控制流数据分析。如图7中的700所示,包含原语块报头字、原语块指针字和原语掩码字的原语块报头字从用于图块组的控制流数据中获取。对于每个原语块而言,对原语块报头字701进行检查以获取原语掩码字702的数量(如果存在的话)。从该原语块报头字可以知道图块对于原语块而言是否有效。如果该图块有效,即存在着来自原语块的覆盖所述图块的原语,则在703处,获取用于3D处理的原语块指针字以及原语掩码字。在704处,如果所述图块对于原语块而言不是有效的,则跳过原语报头字,如在原语块报头字中定义的那样。
根据图块组中的控制流数据来持续处理原语块报头字,直到控制流的终止字(该终止字是用于绘制的图块组中的控制流的末端)为止。
用于控制流数据的系统级高速缓冲器
在控制块组中的第一控制数据块的开始处,在该控制块组中的控制指针阵列中写入8个控制指针。对于不同的控制数据块而言,用于控制流数据和控制指针的写地址是类似的。控制数据块被动态地进行分配,因此它们可以位于不同的存储器页中。这增加了在控制指针写与控制流数据写之间的存储器页中断(break)的几率。
为了降低存储器页中断并改善控制流数据写性能,在所提出的控制流分组方法中,可以使用专用于控制流数据写的系统级高速缓存器。
控制流数据高速缓存器使用16路关联伪LRU高速缓存算法作为系统级高速缓存。控制流数据高速缓存器还使用被掩蔽的写(masked write),从而在高速缓存行被清除(flushed)之后不需要存储器读来加载来自存储器的数据。
在终止绘制时,需要对控制流数据高速缓存器中的高速缓存行进行清除并使其无效。在多个上下文的情况中,上下文ID可以存储在控制流数据高速缓存器的每个高速缓存行中。在终止一次绘制时,仅具有与当前绘制的上下文ID相同的上下文ID的高速缓存行被清除并被无效,以增强高速缓存的性能。
实验表明,对于64KB的控制流数据高速缓存器,控制流数据写被平均减少了15%。
Claims (14)
1.一种用于绘制3D计算机图形图像的方法,该方法包括以下步骤:
将要被绘制的所述图像细分成多个矩形区域;
将在所述图像中可见的原语分配给多个原语块中的各个原语块;
确定哪些原语块包含与每个矩形区域相交的原语;
将所述矩形区域分组到多个固定大小的组中;
为每个所述固定大小的组获得控制流数据,所述控制流数据确定绘制每个所述固定大小的组中的每个矩形区域需要哪些原语块;以及
通过依次绘制每个组中的所述矩形区域,来使用用于每个所述固定大小的组的控制流数据绘制用于显示的所述图像。
2.根据权利要求1所述的方法,其中,提供区域阵列和控制基地址,所述区域阵列指示具有矩形区域的每个所述固定大小的组的区域报头,以及所述控制基地址指向由各个固定大小的组所引用的控制流数据的开始位置。
3.根据权利要求1或2所述的方法,其中,所述控制流数据包括针对绘制具有矩形区域的固定大小的组所需的每个原语块的原语块。
4.根据权利要求3所述的方法,其中,所述原语块包括具有每个原语1比特的原语掩码,并且该方法包括使用所述原语掩码来确定使用哪些原语来绘制所述固定大小的组的步骤。
5.根据权利要求4所述的方法,其中,所述原语块包括表示所述原语块中的顶点数量的原语块报头。
6.根据前述权利要求中任一项权利要求所述的方法,其中,所述控制流数据被写入存储器中的控制块组中,每个所述控制块组包含控制指针阵列,该控制指针阵列存储针对控制块的开始地址的数据,所述控制块包括要被链接到来自当前控制块的数据的控制流数据。
7.根据前述权利要求中任一项权利要求所述的方法,其中,针对具有矩形区域的每个固定大小的组,存储两个尾指针字。
8.一种用于绘制3D计算机图形图像的装置,该装置包括:
用于将要被绘制的所述图像细分成多个矩形区域的模块;
用于将在所述图像中可见的原语分配给多个原语块中的各个原语块的模块;
用于确定哪些原语块包含与每个矩形区域相交的原语的模块;
用于将所述矩形区域分组到多个固定大小的组中的模块;
用于为每个所述固定大小的组获得控制流数据的模块,所述控制流数据包括用于确定绘制每个所述固定大小的组中的所述矩形区域需要哪些原语块的数据;以及
用于通过依次绘制每个组中的所述矩形区域来使用用于每个所述固定大小的组的控制流数据绘制用于显示的所述图像的模块。
9.根据权利要求8所述的装置,其中,提供针对具有矩形区域的每个所述固定大小的组的区域阵列,以及提供指向具有矩形区域的各个固定大小的组的控制流数据的开始位置的控制基地址。
10.根据权利要求8或9所述的装置,其中,所述控制流数据包括针对绘制具有矩形区域的固定大小的组所需的每个原语块的原语块。
11.根据权利要求10所述的装置,其中,所述原语块包括具有1比特原语的原语掩码,并且该装置包括用于使用所述原语掩码来确定使用哪些原语来绘制所述固定大小的组的模块。
12.根据权利要求11所述的装置,其中,所述原语块包括表示所述原语块中的顶点数量的原语块报头。
13.根据权利要求8-12中任一项权利要求所述的装置,其中,所述控制流数据被写入存储器中的控制块组中,每个所述控制块组包含控制指针阵列,该控制指针阵列存储针对控制块的开始地址的数据,所述控制块包括要被链接到来自当前控制块的数据的控制流数据。
14.根据权利要求8-13中任一项权利要求所述的装置,其中,针对具有矩形区域的每个固定大小的组,存储两个尾指针字。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0823468.4 | 2008-12-23 | ||
GBGB0823468.4A GB0823468D0 (en) | 2008-12-23 | 2008-12-23 | Display list control stream grouping in tile based 3D computer graphics systems |
PCT/GB2009/002960 WO2010073017A1 (en) | 2008-12-23 | 2009-12-23 | Display list control stream grouping in tile based 3d computer graphics system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102265309A true CN102265309A (zh) | 2011-11-30 |
CN102265309B CN102265309B (zh) | 2014-05-07 |
Family
ID=40344132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980152369.1A Active CN102265309B (zh) | 2008-12-23 | 2009-12-23 | 基于图块的3d计算机图形系统中的显示列表控制流分组 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9384584B2 (zh) |
EP (1) | EP2380139B1 (zh) |
JP (1) | JP5579741B2 (zh) |
CN (1) | CN102265309B (zh) |
GB (2) | GB0823468D0 (zh) |
WO (1) | WO2010073017A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946895A (zh) * | 2011-11-16 | 2014-07-23 | 高通股份有限公司 | 基于平铺块的呈现中的镶嵌 |
CN105139330A (zh) * | 2014-05-29 | 2015-12-09 | 想象技术有限公司 | 向图元块分配图元 |
CN108873914A (zh) * | 2018-09-21 | 2018-11-23 | 长安大学 | 一种基于深度图像数据的机器人自主导航系统及方法 |
CN113256477A (zh) * | 2020-02-10 | 2021-08-13 | 畅想科技有限公司 | 用于在图形处理系统中存储平铺信息的方法和平铺引擎 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2209092A1 (en) * | 2009-01-16 | 2010-07-21 | Luciad | Method for unified visualisation of heterogeneous datasets |
CN102459632B (zh) | 2009-06-04 | 2017-05-10 | 恰根有限公司 | 复杂核酸的扩增 |
US8692848B2 (en) * | 2009-12-17 | 2014-04-08 | Broadcom Corporation | Method and system for tile mode renderer with coordinate shader |
JP5636988B2 (ja) * | 2011-01-27 | 2014-12-10 | 富士通株式会社 | 描画装置および方法 |
US9721319B2 (en) * | 2011-10-14 | 2017-08-01 | Mastercard International Incorporated | Tap and wireless payment methods and devices |
US8767009B1 (en) * | 2012-06-26 | 2014-07-01 | Google Inc. | Method and system for record-time clipping optimization in display list structure |
US10438314B2 (en) * | 2012-10-26 | 2019-10-08 | Nvidia Corporation | Two-pass cache tile processing for visibility testing in a tile-based architecture |
GB201223089D0 (en) | 2012-12-20 | 2013-02-06 | Imagination Tech Ltd | Hidden culling in tile based computer generated graphics |
GB2506706B (en) | 2013-04-02 | 2014-09-03 | Imagination Tech Ltd | Tile-based graphics |
GB2524121B (en) | 2014-06-17 | 2016-03-02 | Imagination Tech Ltd | Assigning primitives to tiles in a graphics processing system |
GB2524120B (en) * | 2014-06-17 | 2016-03-02 | Imagination Tech Ltd | Assigning primitives to tiles in a graphics processing system |
US9858718B2 (en) | 2015-01-27 | 2018-01-02 | Microsoft Technology Licensing, Llc | Dynamically adaptable virtual lists |
US9619937B2 (en) * | 2015-03-05 | 2017-04-11 | Arm Limited | Methods and apparatus for processing computer graphics primitives in tile-based graphics rendering system |
KR102454893B1 (ko) | 2015-09-30 | 2022-10-14 | 삼성전자주식회사 | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치의 동작 방법 |
GB2567436B (en) * | 2017-10-10 | 2019-10-02 | Imagination Tech Ltd | Geometry to tiling arbiter for tile-based rendering system |
JP7201820B2 (ja) * | 2018-12-17 | 2023-01-10 | 華為技術有限公司 | ビデオコーディング方法及び機器 |
US11061738B2 (en) * | 2019-02-28 | 2021-07-13 | Movidius Limited | Methods and apparatus to store and access multi dimensional data |
GB2591802B (en) | 2020-02-07 | 2022-03-23 | Imagination Tech Ltd | Graphics processing method and system for rendering items of geometry based on their size |
GB2591803B (en) | 2020-02-07 | 2022-02-23 | Imagination Tech Ltd | Graphics processing method and system for rendering items of geometry based on their size |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000028480A1 (en) * | 1998-11-06 | 2000-05-18 | Imagination Technologies Limited | Shading 3-dimensional computer generated images |
WO2002007092A2 (en) * | 2000-07-18 | 2002-01-24 | Silicon Graphics, Inc. | Multiprocessor system for 3d image rendering |
US6380935B1 (en) * | 1999-03-17 | 2002-04-30 | Nvidia Corporation | circuit and method for processing render commands in a tile-based graphics system |
GB2387094A (en) * | 2002-03-26 | 2003-10-01 | Imagination Tech Ltd | Display list compression for a tiled 3-D rendering system and storage of vertex and index data |
CN1669055A (zh) * | 2001-12-31 | 2005-09-14 | 英特尔公司 | 用于区域渲染的自动存储器管理 |
CN101067869A (zh) * | 2005-12-05 | 2007-11-07 | Arm挪威股份有限公司 | 处理图形的方法和设备 |
WO2008037954A2 (en) * | 2006-09-29 | 2008-04-03 | Imagination Technologies Limited | Improvements in memory management for systems for generating 3-dimensional computer images |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5867166A (en) | 1995-08-04 | 1999-02-02 | Microsoft Corporation | Method and system for generating images using Gsprites |
US5864342A (en) | 1995-08-04 | 1999-01-26 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks |
US5821950A (en) * | 1996-04-18 | 1998-10-13 | Hewlett-Packard Company | Computer graphics system utilizing parallel processing for enhanced performance |
US6104417A (en) | 1996-09-13 | 2000-08-15 | Silicon Graphics, Inc. | Unified memory computer architecture with dynamic graphics memory allocation |
US6697063B1 (en) | 1997-01-03 | 2004-02-24 | Nvidia U.S. Investment Company | Rendering pipeline |
US6084591A (en) | 1997-04-29 | 2000-07-04 | Ati Technologies, Inc. | Method and apparatus for deferred video rendering |
US7102646B1 (en) | 1997-11-25 | 2006-09-05 | Nvidia U.S. Investment Company | Demand-based memory system for graphics applications |
US6856320B1 (en) | 1997-11-25 | 2005-02-15 | Nvidia U.S. Investment Company | Demand-based memory system for graphics applications |
US6611272B1 (en) * | 1998-07-02 | 2003-08-26 | Microsoft Corporation | Method and apparatus for rasterizing in a hierarchical tile order |
GB2343603B (en) | 1998-11-06 | 2003-04-02 | Videologic Ltd | Shading 3-dimensional computer generated images |
US7627736B2 (en) * | 1999-04-09 | 2009-12-01 | Clearspeed Technology Plc | Thread manager to control an array of processing elements |
US20020039100A1 (en) | 2000-06-08 | 2002-04-04 | Stephen Morphet | Memory management for systems for generating 3-dimensional computer images |
JP4082194B2 (ja) | 2002-12-03 | 2008-04-30 | セイコーエプソン株式会社 | 画像処理方法および画像処理装置ならびに画像処理プログラム |
GB0307095D0 (en) | 2003-03-27 | 2003-04-30 | Imagination Tech Ltd | Improvements to a tiling system for 3d rendered graphics |
GB2406184B (en) | 2003-09-17 | 2006-03-15 | Advanced Risc Mach Ltd | Data processing system |
US7652678B2 (en) | 2004-06-25 | 2010-01-26 | Apple Inc. | Partial display updates in a windowing system using a programmable graphics processing unit |
GB2461821B (en) * | 2007-09-12 | 2010-06-30 | Imagination Tech Ltd | Methods and systems for generating 3-dimensional computer images |
GB0723536D0 (en) * | 2007-11-30 | 2008-01-09 | Imagination Tech Ltd | Multi-core geometry processing in a tile based rendering system |
-
2008
- 2008-12-23 GB GBGB0823468.4A patent/GB0823468D0/en not_active Ceased
-
2009
- 2009-12-23 JP JP2011541585A patent/JP5579741B2/ja active Active
- 2009-12-23 GB GB0922591A patent/GB2466576B/en active Active
- 2009-12-23 US US12/998,972 patent/US9384584B2/en active Active
- 2009-12-23 CN CN200980152369.1A patent/CN102265309B/zh active Active
- 2009-12-23 WO PCT/GB2009/002960 patent/WO2010073017A1/en active Application Filing
- 2009-12-23 EP EP09807710.0A patent/EP2380139B1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000028480A1 (en) * | 1998-11-06 | 2000-05-18 | Imagination Technologies Limited | Shading 3-dimensional computer generated images |
US6380935B1 (en) * | 1999-03-17 | 2002-04-30 | Nvidia Corporation | circuit and method for processing render commands in a tile-based graphics system |
WO2002007092A2 (en) * | 2000-07-18 | 2002-01-24 | Silicon Graphics, Inc. | Multiprocessor system for 3d image rendering |
CN1669055A (zh) * | 2001-12-31 | 2005-09-14 | 英特尔公司 | 用于区域渲染的自动存储器管理 |
GB2387094A (en) * | 2002-03-26 | 2003-10-01 | Imagination Tech Ltd | Display list compression for a tiled 3-D rendering system and storage of vertex and index data |
CN101067869A (zh) * | 2005-12-05 | 2007-11-07 | Arm挪威股份有限公司 | 处理图形的方法和设备 |
WO2008037954A2 (en) * | 2006-09-29 | 2008-04-03 | Imagination Technologies Limited | Improvements in memory management for systems for generating 3-dimensional computer images |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946895A (zh) * | 2011-11-16 | 2014-07-23 | 高通股份有限公司 | 基于平铺块的呈现中的镶嵌 |
CN103946895B (zh) * | 2011-11-16 | 2017-03-15 | 高通股份有限公司 | 基于平铺块的呈现中的镶嵌方法和设备 |
US10089774B2 (en) | 2011-11-16 | 2018-10-02 | Qualcomm Incorporated | Tessellation in tile-based rendering |
CN105139330A (zh) * | 2014-05-29 | 2015-12-09 | 想象技术有限公司 | 向图元块分配图元 |
CN108873914A (zh) * | 2018-09-21 | 2018-11-23 | 长安大学 | 一种基于深度图像数据的机器人自主导航系统及方法 |
CN108873914B (zh) * | 2018-09-21 | 2021-07-06 | 长安大学 | 一种基于深度图像数据的机器人自主导航系统及方法 |
CN113256477A (zh) * | 2020-02-10 | 2021-08-13 | 畅想科技有限公司 | 用于在图形处理系统中存储平铺信息的方法和平铺引擎 |
US11532115B2 (en) | 2020-02-10 | 2022-12-20 | Imagination Technologies Limited | Data structures, methods and tiling engines for storing tiling information in a graphics processing system |
US11861782B2 (en) | 2020-02-10 | 2024-01-02 | Imagination Technologies Limited | Data structures, methods and tiling engines for storing tiling information in a graphics processing system |
Also Published As
Publication number | Publication date |
---|---|
US9384584B2 (en) | 2016-07-05 |
WO2010073017A1 (en) | 2010-07-01 |
JP2012513630A (ja) | 2012-06-14 |
GB0823468D0 (en) | 2009-01-28 |
US20110304608A1 (en) | 2011-12-15 |
GB2466576A (en) | 2010-06-30 |
JP5579741B2 (ja) | 2014-08-27 |
CN102265309B (zh) | 2014-05-07 |
GB2466576B (en) | 2011-07-20 |
GB0922591D0 (en) | 2010-02-10 |
EP2380139A1 (en) | 2011-10-26 |
EP2380139B1 (en) | 2017-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102265309B (zh) | 基于图块的3d计算机图形系统中的显示列表控制流分组 | |
US11004172B2 (en) | Memory management for systems for generating 3-dimensional computer images | |
US9336623B2 (en) | Multilevel display control list in tile based 3D computer graphics system | |
CN1287330C (zh) | 用于区带渲染的有效图形状态管理 | |
US8723860B2 (en) | Methods and systems for generating 3-dimensional computer images | |
US9342860B2 (en) | Memory management system and method | |
KR20210066727A (ko) | 그래픽 처리 시스템 | |
CN102999946A (zh) | 一种3d图形数据处理方法、装置及设备 | |
CN100595794C (zh) | 绘制装置 | |
ITMI20080999A1 (it) | Modulo di renderizzazione per grafica a due dimensioni | |
US5819278A (en) | Maintaining invalidation information in tiled image representations | |
CN100483464C (zh) | 私有格式图形文件的实现方法 | |
CN113643191A (zh) | 用于体素模型的平滑方法、装置及电子设备 | |
AU2005244588A1 (en) | Method and apparatus for rendering rectangular blocks in a 2D graphics rendering system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |