CN118052696A - 图形处理系统 - Google Patents
图形处理系统 Download PDFInfo
- Publication number
- CN118052696A CN118052696A CN202311536013.6A CN202311536013A CN118052696A CN 118052696 A CN118052696 A CN 118052696A CN 202311536013 A CN202311536013 A CN 202311536013A CN 118052696 A CN118052696 A CN 118052696A
- Authority
- CN
- China
- Prior art keywords
- primitive
- primitives
- combined
- individual
- assembled
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 284
- 238000000034 method Methods 0.000 claims description 187
- 230000008569 process Effects 0.000 claims description 152
- 238000009877 rendering Methods 0.000 claims description 87
- 239000000470 constituent Substances 0.000 claims description 45
- 238000004590 computer program Methods 0.000 claims description 6
- 239000000872 buffer Substances 0.000 description 32
- 239000012634 fragment Substances 0.000 description 29
- 230000015654 memory Effects 0.000 description 28
- 230000006870 function Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 238000004040 coloring Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Landscapes
- Image Generation (AREA)
Abstract
当生成图形处理输出时,基于为该输出提供的基元配置信息,根据为该输出提供的顶点索引集合来装配110在生成该输出时要处理的基元中的一个或多个基元的序列。当生成要处理的一个或多个经装配基元的序列时,确定将根据该基元配置信息被装配为个别基元的基元112是否能够与用于该输出的另一基元111组合113以提供用于包括在该要处理的一个或多个经装配基元的序列中的单个组合基元,并且如果是,则在该要处理的一个或多个经装配基元的序列中包括对应于两个基元的单个组合基元。
Description
本发明涉及图形处理系统,并且特定来说涉及用于准备在图形处理系统中渲染输出时要处理的基元的方法和装置。
计算机图形系统通常通过处理所谓的基元来产生该计算机图形系统的输出,诸如用于显示的帧,该基元通常是简单的多边形,诸如三角形。每个基元通常由顶点集合(例如,在三角形基元的情况下为三个顶点)定义。
通常,将用于给定图形处理输出(例如,用于显示的帧)的顶点集合将被存储为定义顶点(例如,顶点中的每个顶点的相关属性)的顶点数据集合。
虽然可以简单地依次存储要用于要生成的每个基元的顶点(使得实际上顶点集合将相应地定义要处理的基元),但是还已知的是,根据引用顶点数据集合中的顶点的索引集合来单独地定义基元。这然后可避免例如复制顶点数据集合中的顶点的需要,因为顶点集合中的单个顶点条目(顶点)可通过重用索引集合中的相关索引而被引用多次。
因此,在典型图形处理流水线的情况下,要生成的输出的最初提供的数据将尤其包括要使用且经处理以用于生成输出的顶点集合,以及引用该顶点集合(以实际上定义将如何使用顶点来形成在生成输出时要处理的基元集合)的索引集合(序列)。
每个顶点将具有与其相关联的表示该顶点的数据集合(诸如位置、颜色、纹理和其他属性)。然后在处理包括顶点的基元时使用此“顶点”数据,以便生成图形处理系统的期望输出。
一旦已生成用于输出的顶点和顶点索引集合,该顶点和顶点索引集合就可由图形处理器处理以生成期望的图形处理输出(渲染目标),诸如用于显示的帧。
这将尤其包括使用基于顶点索引集合(序列)的顶点来“装配”基元,并且然后处理如此装配的基元。
基元处理可以涉及例如确定与要处理的输出面积相关联的采样点阵列中的哪些采样点被基元覆盖,并且然后确定每个采样点应具有的外观(例如,就其颜色等而言)以表示该采样点处的基元。这些过程通常分别被称为光栅化和渲染。
光栅化和渲染过程使用与正被处理的基元的顶点相关联的顶点属性。为了便于此操作,在例如对基元进行光栅化和渲染之前,通常对针对给定图形处理输出定义的顶点的属性中的至少一些属性进行初始的所谓“顶点着色”(顶点处理)操作。此“顶点着色”操作进行操作以将顶点的属性变换成用于后续图形处理操作的期望形式。这可包括例如将顶点位置属性从它们最初被限定于的模型或用户空间变换到待在其中显示图形处理的输出的屏幕空间。
因此,由图形处理器执行的图形处理流水线将通常包括顶点处理阶段(顶点着色器),该顶点处理阶段对针对顶点定义的初始顶点属性值执行顶点处理(着色)计算,以便生成期望的输出顶点属性集合(即,适当“着色”属性)以供在图形处理流水线的后续处理阶段中使用。
然后,将存在适当的“基元装配”操作,该操作例如根据将使用所提供的索引和顶点装配的所定义的一个或多个基元类型从所提供的索引和顶点“装配”将由图形处理流水线处理的基元。
如此装配的基元然后将被处理,例如被光栅化和渲染。
图1示出了生成输出时的此图形处理序列。
如图1所示,对于要生成的输出,提供了场景数据11集合,尤其包括顶点集合和索引集合,该索引集合定义要为输出处理的基元并引用该顶点集合。
然后,顶点经历适当的顶点处理(着色)12,例如以将顶点的位置从“模型”空间变换到“屏幕”空间。
然后是基元装配阶段13,其取得索引和经处理的顶点,并且例如根据指示将如何使用索引来装配基元的信息(例如,应生成简单三角形、三角形条带还是三角形扇等形式的基元以供处理),使用索引和顶点来装配用于处理的基元。
经装配基元然后被光栅化14以生成用于处理的适当图形片段,并且由光栅化器生成的片段然后被适当地处理(渲染)15以提供最终输出,例如图像16。
申请人相信,对这种图形处理的操作仍然存在改进的范围。
根据本发明的第一方面,提供一种操作图形处理器的方法,所述图形处理器执行图形处理流水线以生成输出,在所述输出中提供将用于在生成所述输出时要处理的基元的顶点集合,以及引用所述顶点集合中的顶点的顶点索引集合和指示将如何在生成所述输出时将所述顶点索引装配成用于处理的基元的基元配置信息;
所述方法包括:
基于为所述输出提供的所述基元配置信息来生成根据为所述输出提供的所述顶点索引集合在生成所述输出时要处理的一个或多个经装配基元的序列,所述经装配基元的序列中的每个经装配基元包括用于所述基元的标识符和用于所述基元的一个或多个顶点索引的集合;以及
将所述一个或多个经装配基元的序列提供到正由所述图形处理器执行的所述图形处理流水线的稍后阶段以供处理;
其中所述基于为所述输出提供的所述基元配置信息来生成根据为所述输出提供的所述顶点索引集合在生成所述输出时要处理的一个或
多个经装配基元的序列包括:
确定将根据所述基元配置信息被装配为个别基元的基元是否能够与用于所述输出的另一基元组合以提供用于包括在所述要处理的一个或多个经装配基元的序列中的单个组合基元;以及
当确定将根据所述基元配置信息被装配为个别基元的所述基元能够与用于所述输出的另一基元组合以提供用于包括在所述要处理的一个或多个经装配基元的序列中的单个组合基元时,在所述要处理的一个或多个经装配基元的序列中包括对应于两个基元的单个组合基元。
根据本发明的第二方面,提供了一种图形处理器,所述图形处理器操作以执行图形处理流水线以生成输出;
所述图形处理器包括:
基元装配电路,所述基元装配电路被配置为:
基于为所述输出提供的基元配置信息来生成根据为所述输出提供的顶点索引集合在生成输出时要处理的一个或多个经装配基元的序列,所述顶点索引集合引用为所述输出提供的顶点集合中的顶点,所述基元配置信息指示将如何在生成所述输出时将所述顶点索引装配成用于处理的基元,经装配基元序列的每个经装配基元包括用于所述基元的标识符和用于所述基元的一个或多个顶点索引集合;
以及
将所述一个或多个经装配基元的序列提供到由所述图形处理器执行的所述图形处理流水线的稍后阶段以供处理;
其中所述基元装配电路包括:
确定电路,所述确定电路被配置为确定将根据所述基元配置信息被装配为个别基元的基元是否能够与用于所述输出的另一基元组合以提供用于包括在所述要处理的一个或多个经装配基元的序列中的单个组合基元;以及
处理电路,所述处理电路被配置为当确定将根据所述基元配置信息被装配为个别基元的基元能够与用于所述输出的另一基元组合以提供用于包括在所述要处理的一个或多个经装配基元的序列中的单个组合基元时,在所述要处理的一个或多个经装配基元的序列中包括对应于所述两个基元的单个组合基元。
本发明涉及图形处理器和图形处理,在该图形处理中,基于指示如何将顶点索引装配成用于处理的基元的基元配置信息,从针对要生成的输出定义的顶点索引集合装配用于处理的图形基元。
然而,在本发明中,不是基于所提供的基元配置信息来简单地装配用于处理的基元,而是确定(如由所提供的基元配置信息所定义的)个别基元实际上是否可以被装配和表示为单个组合基元。当确定可将两个(或更多个)个别基元表示为单个组合基元时,则不是将个别基元个别地包括在用于处理的经装配基元序列中(如在简单地遵循基元配置信息的情况下将进行),而是将单个组合基元包括在要处理的基元序列中(作为替代)。
如下文将更详细讨论,申请人已认识到,对于许多图形内容,最初定义为个别基元(例如,三角形)的基元实际上可与其他基元组合且表示为单个组合基元以用于至少一些图形处理的目的。例如,共享边的个别三角形可表示为具有四个顶点的单个组合基元。此外,例如具有共享边的三角形在图形内容中可以是常见的,例如在定义了三角形条带或网格的情况下,或者已经在对要渲染的场景进行建模时使用了四边形(而不是三角形)的情况下。
此外,通过将例如多对个别基元(例如,三角形)表示为用于处理的经装配基元序列中的单个组合基元,其实际上可减少包括在要处理的经装配基元序列中的基元的数量(与由初始基元配置信息定义的基元的数量相比),此可相应地允许通过图形处理流水线的稍后阶段更有效地处理经装配基元序列。
例如,并且特别地,在基于图块的图形处理流水线中,将例如三角形对组合成提供给拼接器(拼接过程)的经装配基元序列中的单个组合基元实际上可以并且将增加拼接器的吞吐量,因为拼接器和拼接过程实际上将能够将两个三角形作为单个组合基元来处理,而先前将必须单独地处理这两个三角形。这可因此提供更有效的拼接过程(其通常为基于图块的图形处理中的串行化点,该串行化点因此限制图形处理流水线的吞吐量)。
如下文将进一步讨论,将多个基元表示为经装配基元序列中的单个组合基元还可(例如)促进基于图块的图形处理流水线中的基元列表的经改进压缩,且还潜在地提高图形处理的其他阶段(诸如基元(三角形)设置)的吞吐量和/或效率。
可以任何合适和期望的方式提供将用于在生成输出时要处理的基元的顶点集合、引用顶点集合中的顶点的顶点索引集合和指示将如何在生成输出时将顶点索引装配成用于处理的基元的基元配置信息(它们在本发明中使用和提供)。例如,它们可以由需要所讨论的图形处理的应用程序提供,并且/或者由图形处理器的驱动程序生成然后提供,例如并且优选地,响应于从需要图形处理的应用程序接收的命令和数据而提供。
顶点、顶点索引和基元配置信息可以以任何合适和期望的方式对图形处理器可用。例如并且优选地,顶点和顶点索引至少可存储(例如并且优选地作为适当数组)在存储器中,接着可从该存储器中由图形处理器获取该顶点和顶点索引以供使用。基元配置信息可同样存储在存储器中以供图形处理器使用。例如,基元配置信息可以以与要生成的输出相关联并用于该输出的描述符的形式提供。
正被处理的顶点和顶点索引的集合可以是在生成输出时要处理的任何期望且合适的顶点和顶点索引的集合。因此,顶点和顶点索引的集合可包括(且在一个优选实施方案中确实包括)针对给定图形处理输出(诸如针对待显示的帧)定义的整个顶点集合和整个顶点索引集合。顶点和顶点索引的集合还可包括针对少于整个输出而定义的顶点集合和顶点索引集合,诸如针对给定绘制调用和/或针对要生成的图块(在基于图块的图形处理器和图形处理流水线中)而定义的顶点集合和顶点索引集合。在一个优选的实施方案中,顶点集合和顶点索引集合是针对绘制调用定义的顶点集合和顶点索引集合。
相应地,正被生成的输出可以包括整个(完整)(例如,帧),或者仅包括总输出(例如,帧)的一部分(诸如(渲染)图块)。
在顶点和顶点索引的集合小于针对给定输出所定义的顶点和顶点索引的整个集合的情况下,则优选地针对用于输出的顶点和顶点索引的每个集合(例如并且优选地针对每个绘制调用和/或图块)重复以本发明的方式的操作。相应地,本发明的过程优选地被重复用于要生成的多个输出,并且优选地用于每个输出,例如用于输出帧序列中的连续帧,和/或用于组成总输出(例如帧)的每个图块。
顶点集合中的每个顶点应当并且优选地确实具有一组一个或多个顶点属性(顶点属性数据(值)),并且与之相关联。这些顶点属性可以是可与顶点相关联的任何合适和期望的属性,诸如位置(例如,针对顶点的x、y、z、w坐标/值)、颜色(例如,顶点的RGB值)、透明度(顶点的α值)等中的一者或多者、优选地复数者并且优选地全部。在一个优选的实施方案中,每个顶点具有与其相关联的位置(位置数据)和一个或多个其他非位置属性(数据)(变动),例如定义所讨论的顶点的颜色、光、法线、纹理坐标等。
还可存在“每基元”的一些属性(但其在顶点着色器中(每顶点)以相同方式确定),其中来自“激发”顶点的属性接着用于基元。这些类型的属性的示例是:基元ID;层ID;点大小;以及基元可变速率着色值。
要生成的输出的顶点索引集合中的每一顶点索引应当并且优选地标识(索引)在用于输出的顶点集合中提供的对应顶点。因此,顶点将各自可由(唯一地)标识顶点集合中的顶点的对应索引来标识。优选地,索引是在顶点的任何处理之前(例如,由应用程序/驱动程序)提供的用于顶点的“输入”索引。
同一顶点索引可在用于输出的顶点索引集合中出现多于一次,并且/或者情况可能是用于输出的顶点集合中的一些顶点实际上将不被包括在用于输出的索引集合中。
用于要生成的输出的顶点索引集合优选地作为顶点索引的适当序列按照索引将用于输出的基元的顺序提供给基元装配过程。
为输出提供的基元配置信息可以是指示并定义如何将顶点索引用于处理以输出的基元(配置到该基元中)的任何合适和期望的信息。在一个特别优选的实施方案中,基元配置信息指示要使用顶点索引序列装配的基元的类型,即,基元是否应当是例如三角形、三角形条带、三角形扇的形式或其他配置形式(诸如线或点)。
本发明中的基元装配操作和电路可使用顶点索引集合以及针对正生成的输出而定义的基元配置信息来装配基元,该基元接着将在以任何合适且所要方式(经受本发明的特定操作)生成输出时被处理。
在一个优选的实施方案中,基元装配过程和电路通过针对输出定义的顶点索引序列(按照顶点索引序列顺序)来工作,并且基于配置信息从中装配基元,每个基元包括来自用于输出的顶点索引序列的适当索引序列。
因此,基元装配过程/电路应当并且优选地确实以其(期望)序列顺序从顶点索引集合(数组)获取顶点索引,且基于基元配置信息“装配”对应于基元的所获取顶点索引的相应子序列。相应地,基元装配过程优选地包括以下步骤:从顶点索引的集合(数组)中获取顶点索引,并且按照(期望)顶点索引顺序将顶点索引作为索引流输出到基元装配过程以便装配成基元。相应地,图形处理器以及优选地基元装配电路优选地包括索引获取器(索引获取电路),该索引获取器可操作用于从(来自索引数组的)(存储的)索引集合读取和获取索引并且输出用于装配成基元的索引序列(流)。
例如,在基元配置指示指示应生成三角形形式的基元的情况下,基元装配过程和电路可输出来自顶点索引序列的三个连续索引的相应集合(借此提供用于处理的三角形序列)。对于三角形条带,经装配基元序列可同样包括来自顶点索引序列的三个索引的相应集合,但在该情况下,每个连续(个别)三角形将重用前一三角形中的最后两个索引(且索引顺序将例如颠倒)。将相应地配置其他基元类型。
基元装配操作(电路)优选地被配置为仅输出“完整”基元(即,仅用于“完整”基元的顶点索引序列)。因此,在只有“不完整”或“退化”基元可以从来自索引序列的给定索引集合中装配的情况下,优选地,基元装配过程/电路不输出基元。
相应地,基元装配操作(电路)优选地能够识别并丢弃任何“故障”(不完整或退化)基元,使得该基元装配操作(电路)随后将仅输出完整基元以供进一步处理。这可以例如并且优选地根据所讨论的图形API来完成。
在一个特别优选的实施方案中,基元装配操作/电路被配置为并且可操作以将更复杂的基元(诸如线条条带、线条链、三角形条带、三角形扇、四边形、四边形条带、相邻线条、相邻线条、相邻三角形和相邻三角形条带)转换为更简单的基元,诸如并且优选地是三角形、线条或点中的一者或多者。
在本发明中,基元装配操作/电路确定将根据所提供的基元配置信息被装配为个别基元的基元是否可以与用于输出的另一个基元组合以提供用于包括要处理的一个或多个经装配基元的序列的单个组合基元(并且当确定个别基元可以被装配为单个组合基元时,对应于所讨论的个别基元的单个组合基元被包括在要处理的一个或多个经装配基元的序列中)。
就这一点而言,所考虑的并且可以被装配为单个组合基元的个别基元(根据基元配置信息)的数量可以是(初始定义的)个别基元的任何合适和期望数量。例如,基元装配操作/电路可以是可操作以并且被配置为以本发明的方式(并且在一个优选实施方案中是这种情况)标识可以被装配为相应的单个组合基元的多对基元,并且/或者该基元装配操作/电路可以操作以确定根据基元配置信息最初被定义为个别基元的多于两个(例如,三个(或更多个))基元是否可以被组合用于基元装配过程。例如,对于根据基元配置信息的多个个别基元的序列,可以考虑该基元序列是否可以被组合在一起用于基元装配过程,例如,其中个别基元被组合,除非并且直到在序列中遇到不兼容基元(或者达到可组合基元的阈值数量)(例如,组合序列然后再次开始)。
因此,在本发明的实施方案中,确定将根据基元配置信息被装配为个别基元的两个或更多个基元是否可被装配为单个组合基元以用于包括在要处理的一个或多个经装配基元的序列中(且如果是,则对应于两个或更多个个别基元的单个组合基元包括在要处理的一个或多个经装配基元的序列中)。
在一个特别优选的实施方案中,确定将根据基元配置信息被装配为两个个别基元的两个基元是否可以被装配为单个组合基元以用于包括在要处理的一个或多个经装配基元的序列中,并且当确定两个个别基元可以被装配为单个组合基元以用于包括在要处理的一个或多个经装配基元的序列中时,对应于两个个别基元的单个组合基元被包括在要处理的一个或多个经装配基元的序列中。
因此,在一个特别优选的实施方案中,基元装配操作/电路确定将根据基元配置信息被装配为两个个别基元的两个基元是否可以被装配为单个组合基元,并且当确定两个个别基元可以被装配为单个组合基元时,在要处理的一个或多个基元的序列中包括对应于两个个别基元的单个组合基元。
被包括在要处理的装配基元序列中的单个组合基元将被并且优选地被包括在要处理的装配基元序列中,而不是根据基元配置信息被装配为个别基元(并且被装配为单个组合基元)的两个(或更多个)基元。因此,在确定将被装配为两个个别基元的两个基元可被装配为单个组合基元的情况下,单个组合基元将包括在要处理的一个或多个基元的序列中,且两个对应个别基元将不(作为个别基元)包括在经装配基元序列中。
因此,在这种情况下,不是精确地如所提供的基元配置信息所定义的那样生成经装配基元序列,而是将如所提供的基元配置信息所定义的两个(或更多个)个别基元作为单个组合基元被包括在用于处理的经装配基元序列中。因此,例如,在确定根据所提供的基元配置信息装配的两个个别三角形可以被装配为单个组合“三角形对”的情况下,基元装配操作/电路将包括在用于处理单个组合“三角形对”的经装配基元序列中,而不是(并且不在经装配基元序列中包括)组合“三角形对”所对应的两个个别三角形。
可以确定是否可以以任何合适和期望的方式将两个(或更多个)基元装配为单个组合基元。优选地,这(至少)基于并根据基元是否共享边来确定。更优选地,当(并且如果)基元共享边时,确定将根据基元配置信息被装配为个别基元的基元可以(潜在地)被装配为单个组合基元。
相应地,在一个特别优选的实施方案中,当(并且如果)基元不(不同于)共享边时,确定将根据基元配置信息被装配为个别基元的基元不能(可以不同于)被装配为单个组合基元。因此,在一个特别优选的实施方案中,在两个基元不共享边的情况下,确定所讨论的两个个别基元不能一起被装配为单个组合基元以用于包括在要处理的一个或多个基元的序列中。
因此,在一个特别优选的实施方案中,确定将根据基元配置信息被装配为个别基元的基元是否可以与另一个基元组合以便输出被装配为单个组合基元,包括确定两个基元是否共享边,并且当没有(当不同于)确定两个基元共享边时,确定两个基元不能(可以不同于)被装配为(全部或部分)单个组合基元,但是优选地,当确定两个基元共享边时,确定两个基元可以(潜在地)被装配为(全部或部分)单个组合基元(如果是,则两个个别基元相应地作为单个组合基元的全部或部分被包括在经装配基元序列中)。
相应地,在一个特别优选的实施方案中,确定将被装配为两个个别基元的两个基元是否可以被装配为单个组合基元包括确定两个基元是否共享边,并且当没有(当不同于)确定两个基元共享边时,确定两个基元不能(可以不同于)被装配为(全部或部分)单个组合基元,但是,优选地,当确定两个个别基元共享边时,确定两个个别基元可以(潜在地)被装配为单个组合基元(因此两个个别基元作为单个组合基元被包括在经装配基元序列中)。
在未确定(不同于确定)所考虑的个别基元可被装配为单个组合基元以用于包括在要处理的一个或多个基元的序列中的情况下,则可例如确定那些个别基元中的一个或两个基元是否可与替代基元组合以用于包括在要处理的一个或多个基元的序列中,并且/或者两个个别基元中的一个或两个基元可例如替代地且在一个优选的实施方案中作为相应个别基元(且根据基元配置信息)包括在经装配基元序列中。
在一个优选的实施方案中,当确定个别基元不能与任何其他基元组合时,该基元作为(根据基元配置信息装配的)相应个别基元被包括在经装配基元序列中。
可以确定个别基元是否以任何合适和期望的方式共享边。在一个特别优选的实施方案中,这是基于并根据要用于个别基元的顶点来完成的,并且最优选地基于并根据基元是否共享一对顶点来完成的(在基元具有共同的两个顶点的情况下确定该基元共享边(因此,共享边是位于基元共同具有的两个顶点之间的边))。
可相应地确定基元以任何合适和期望的方式具有共同的两个顶点。在一个优选的实施方案中,这是基于将用于基元的顶点的顶点索引,即,使得并且优选地基于将用于基元的顶点的索引来确定基元是否具有共同的两个顶点(因为任何共同的顶点都将使用来自用于正被生成的输出的顶点集合的同一顶点索引)。
因此,在一个特别优选的实施方案中,根据基元配置信息将个别基元的顶点的索引与另一个别基元的顶点的索引进行比较,以借此确定个别基元是否可被装配为单个组合基元以用于包括在要处理的经装配基元序列中。相应地,当基元具有共同的至少两个顶点索引时,则优选地确定基元可以(潜在地)被组合以被装配为单个组合基元以用于包括在经装配基元序列中(并且当基元不具有共同的至少两个顶点索引时,则优选地确定基元不能被组合以被装配为单个组合基元以便包括在经装配基元序列中)。
仅基于并且只基于基元是否共享边(具有共同的至少两个顶点)来确定个别基元是否可以被组合以装配为单个组合基元是可能的,并且在一个优选实施方案中是这种情况。因此,在这种情况下,当被评估的基元被确定为共享边时,它们将被组合,但是当该基元不共享边时,它们将不被组合。
然而,当确定基元是否可以被组合以装配为单个组合基元以用于包括在经装配基元序列中时,除了基元是否共享边之外,还可以考虑一个或多个另外的因素和准则(并且在另一优选实施方案中是这种情况)。在这种情况下,“组合”确定将是基于基元是否共享边以及一个或多个另外的条件(准则)。
就这一点而言可以考虑的另外的条件/准则可以是任何合适的条件或准则,该条件或准则可以适合于确定个别基元是否可以出于本发明的目的而被组合(即使它们共享边也是如此)。例如,一个此类条件可为是否可旋转潜在地待组合的基元中的一个或两个基元(相对于其根据基元配置信息所定义的定向)。
附加地或另选地,仅在个别基元以特定的、优选地选择的、优选地预定义的组合的某种形式共享它们的边的情况下,可以仅出于本发明的目的准许个别基元被组合,即使它们共享边也是如此。例如,尽管存在可组合两个三角形的十八种方式(第二基元的三个边中的任一边可与第一基元的三个边中的任一边共享边,且该边可具有相同或相反定向),但基元组合确定可被配置为仅允许针对那些可能组合的子集组合基元。因此,例如,可以仅在基元仅满足特定的、优选地选择的、优选地预定义的一些但不是全部可能组合的子集(在该组合中两个基元可以共享边)的情况下准许基元被组合。这可接着减少可能需要针对组合基元而指示和编码的基元重建信息的量(例如,如下文所讨论)。
当然,其他布置将是可能的。
可以以任何合适和期望的方式来执行个别基元是否可以被组合(以被装配为单个组合基元(例如,无论个别基元是否共享边))的确定。此考虑可针对如由基元配置信息定义的个别基元中的一些但不是全部基元而作出,但在一个特别优选的实施方案中,针对如由基元配置信息定义的所有(完整)基元而考虑基元是否可与另一基元组合以装配为用于包括在经装配基元序列中的单个组合基元。因此,在一个特别优选的实施方案中,根据基元配置信息对每个和每一(完整)个别基元进行这种考虑。
在这种情况下,对于根据基元配置信息的任何给定个别基元,可考虑个别基元是否可根据需要与至多另一基元或与至多多个其他个别基元(如由基元配置信息定义)组合。例如,可考虑如由基元配置信息定义的基元序列中的相应对个别基元以确定是否可组合相应对基元,并且/或者可将如由基元配置信息定义的个别基元与序列中的多个其他个别基元(例如并且优选地如由基元配置信息定义的基元序列中的其相邻个别基元)进行比较。
对于根据基元配置信息定义的任何给定个别基元,可仅考虑另一个别基元来确定该基元是否可与另一基元组合,或在确定该个别基元是否可与其他基元组合时可考虑多个其他个别基元(如基元配置信息所定义),如所期望。
在一个优选实施方案中,对于一个个别基元(以及对于为其进行确定的每个相应的个别基元),可以并且优选地考虑(至多)多个其他个别基元,以确定该个别基元是否可以与由基元配置信息定义的基元序列的另一个别基元组合。
因此,在这种情况下,根据基元配置信息,个别基元可以并且在必要时将例如并且优选地与基元序列中的多个其他基元进行比较,以确定该基元是否可以与那些其他个别基元中的任一个基元进行组合。
在一个特别优选的实施方案中,将根据基元配置信息的个别基元与根据基元配置信息的个别基元序列的至多两个其他基元(且仅至多两个其他基元)进行比较以确定那些基元是否可组合为单个组合基元以用于包括在要处理的经装配基元序列中。
在一个特别优选的此类实施方案中,(仅)确定基元是否可与将根据基元配置信息装配的个别基元的序列中的其紧邻基元(中的一个基元)组合。
因此,在一个特别优选的实施方案中,根据基元配置信息将一个基元与在基元序列中紧接在其前面的基元进行比较,并且(优选地仅在根据基元配置信息不能将该基元与在基元序列中紧接在其前面的基元进行组合的情况下)根据基元配置信息将该基元与在基元序列中紧接在其后面的基元(即,根据基元配置信息将被组合的个别基元序列中紧接在前面的基元以及(优选地仅在必要时)紧接在后面的基元)进行比较。换句话说,根据基元配置信息,优选地(并且在必要时)评估个别基元序列中的每个相应对相邻基元,以确定该对基元是否可以被装配为单个组合基元以用于包括在要处理的经装配基元序列中。
因此,在一个特别优选的实施方案中,根据基元配置信息为相应对相邻个别基元确定序列中的该对相邻基元是否可以被装配为单个组合基元以便包括在要处理的经装配基元序列中。
该操作可以任何合适和期望的方式实现。优选地,根据基元配置信息装配个别基元,然后停止/保持(缓冲),同时根据基元配置信息装配序列中的下一个个别基元,然后适当地比较这两个基元以确定它们是否可以被装配为单个组合基元。在确定两个个别基元可以被装配为单个组合基元的情况下,则表示两个个别基元的单个组合基元优选地被输出以用于包括在并且被包括在用于处理的经装配基元序列中,其中序列中的下一个个别基元接着根据基元配置信息被装配并且被缓冲以用于对照序列中的下一个个别基元进行测试。
另一方面,在确定两个个别基元不应当被装配为单个组合基元以用于包括在要处理的经装配基元序列中的情况下,优选地,输出(被缓冲的)第一个别基元以用于包括在并且被包括在经装配基元序列中作为个别基元(如由基元配置信息所定义),但是之后的第二个别基元被缓冲以用于根据基元配置信息针对下一个别基元进行测试。
此过程优选地继续以评估相应连续对个别基元以根据基元配置信息从个别基元的序列适当地输出组合基元或个别基元。
在一个优选实施方案中(无论一个基元是相对于多个基元的池中的其他基元还是相对于基元配置信息所定义的基元序列中的其相邻基元而被考虑),优选地,如果并且当(并且一旦)找到所考虑的基元可以与之组合的另一基元时,停止对与其他基元组合的考虑。因此,在这种情况下,例如当系统操作以将个别基元与经装配基元的池中的(至多)多个其他基元进行比较时,一旦已经找到池中的合适的“匹配”基元,则所考虑的基元和池中的基元将作为单个、组合、经装配基元被输出,并且将不执行对原始个别基元的组合的进一步考虑。
当然,其他布置将是可能的。
如从上文将了解,虽然本发明的目标是根据基元配置信息标识(例如,多对)个别基元,该个别基元可被装配为单个组合基元以用于包括在经装配基元序列中,但申请人已认识到可能存在如由基元配置信息定义的基元,该基元将不与另一个别基元组合以待装配为单个组合基元以用于包括在要处理的经装配基元序列中。在这种情况下,基元应当并且优选地(简单地)作为(根据基元配置信息装配的)单个个别基元被包括在经装配基元序列中。
因此,当没有(当不同于)确定根据基元配置信息的个别基元可以与根据基元配置信息的另一基元组合以装配为单个组合基元以便包括在要处理的经装配基元序列中时,该基元优选地被包括在要作为个别基元(并且根据基元配置信息)处理的经装配基元序列中(而不将该基元与另一基元组合)。
基元装配过程(电路)的输出是要处理的(多个)基元序列,从基元装配过程输出的每个基元包括用于基元的标识符和用于基元的顶点索引序列。
用于每个输出的经装配基元的标识符可以是任何合适和期望的标识符,该标识符可用于唯一地标识例如并且优选地所讨论的基元集合(例如,所讨论的输出的基元集合)内的基元。在一个优选实施方案中,(由基元装配过程/电路)将基元简单地按顺序编号,每个基元的序列号充当其标识符。当然,其他布置将是可能的。
在一个优选的实施方案中,例如作为顶点(属性)处理的结果,由基元装配处理(电路)指派的基元标识符可以被为所讨论的基元生成和/或指派给所讨论的基元的稍后标识符覆盖。在优选的此类实施方案中,由基元装配处理(电路)输出的基元还可以具有与其相关联的标志,以指示由基元装配过程分配给基元的标识符是否可以被另一(例如,稍后的)基元标识符覆盖。
如果需要,基元装配过程(电路)还可以输出一个(和每个)基元的其他信息(例如状态)。(然而,在此阶段,基元装配过程(电路)优选地不输出与经装配基元相关联的任何顶点属性。)
因此,在一个特别优选的实施方案中,本发明的基元装配过程包括(并且基元装配电路被相应地配置为)从为以顶点索引序列顺序生成的输出所定义的顶点索引序列中获取索引,基于基元配置信息和本发明方式的操作将所获取的顶点索引组织(例如,划分)到对应于完整基元的顶点索引的相应子序列中,并且将对应于完整基元的顶点索引的每个相应子序列输出为至少与基元的标识符(在优选实施方案中,该标识符是基元的相应序列号)相关联的经装配基元。
在根据基元配置信息对应于两个(或更多个)个别基元的单个组合基元的情况下,则基元装配过程(电路)优选地针对一个(并且针对每个)这样装配的单个组合基元输出:用于基元的标识符;用于基元的顶点索引序列;以及用于组合基元的“重建”信息。基元装配过程(电路)也可以并且在优选实施方案中也可以例如并且优选地输出组合基元的基元“类型”指示,从而将该组合基元标识为“组合”基元(例如,可以存在为组合基元设置而不是为个别基元设置的“组合”基元标志)。基元装配过程(电路)优选地对于经装配组合基元仅输出此组信息。
在这种情况下,用于单个组合基元的标识符可以是用于单个组合基元的单个(例如,分配的)标识符,但是在一个特别优选的实施方案中,包括已经被组合以形成单个组合基元的个别基元的相应标识符。因此,在一个特别优选的实施方案中,包括在经装配基元序列中的一个(以及每个)组合基元与该标识符相关联,并且使用用于已经(根据基元配置信息)被组合以形成单个组合基元的个别基元的标识符。
用于一个(和每个)组合基元的顶点索引序列应列出组合基元的所有顶点所需的顶点索引。因此,该顶点索引序列应当并且优选地列出用于组成已被组合以形成单个组合基元的两个(或更多个)个别基元的所有顶点的所有索引。
用于组合基元的顶点索引序列优选地应当并且优选地确实列出用于组成组合基元的个别基元的顶点索引,而没有顶点索引的任何复制或重复。因此,例如并且优选地,在已组合以形成组合“三角形对”基元的两个个别三角形的情况下,用于组合三角形对的顶点索引集合(序列)将包括四个顶点索引,因为组成三角形对的每个个别三角形将具有共同的两个顶点。(就这一点而言可看出,组合两个个别三角形以形成三角形对相应地使顶点开销增加仅25%,同时(至少对于图形处理流水线的一些阶段)使需要处理的基元的数量减半。)
与组合基元一起被包括并且用于组合基元的“重建”信息应当并且优选地提供任何必要(配置)信息以允许已经被组合以形成组合基元的个别基元(例如,三角形)被(重)建构(即,这将允许组合基元被划分(分裂)回已经被组合的两个(或更多个)个别基元)。因此,该重建信息优选地提供并包括任何必要的配置信息,以允许从组合基元装配个别基元。
因此,在一个特别优选的实施方案中,本发明的方法包括(并且基元装配电路包括处理电路,该处理电路被配置为)当确定将被装配为个别基元的基元可以与另一基元组合以提供用于包括在要处理的一个或多个经装配基元的序列中的单个组合基元时,针对单个组合基元输出(关联于单个组合基元)用于组合基元的重建信息,以允许已经被组合以形成组合基元的个别基元被重建(重新生成)。
在一个特别优选的实施方案中,此组合基元重建信息指示以下各项中的一项或多项,优选地复数项,并且优选地全部项:
对于每个个别基元(例如,三角形),该基元的与用于形成组合
基元的其他(另一)基元共享的边;以及
已组合到组合基元中的个别基元(第二基元)中的一个基元的旋转(顺时针或逆时针)(因为一个基元(第一基元)的旋转应由顶点的顺序定义)。
申请人已经认识到关于基元重建信息,可能潜在地存在可能需要为组合基元指示的大量不同的边(和旋转方向)组合。因此,在优选实施方案中,确定当形成组合基元时是否可以旋转基元,使得实际上将仅存在有限数量的需要被指示的可能共享边配置。例如,可旋转基元以使得共享边(就用于形成共享边的基元的顶点而言)对于形成为组合基元的所有基元将是相同的。在这种情况下,可能不再需要在重建中包括标识哪些边在组合基元中共享的信息,因为每个和每一组合基元将总是具有相同的共享边配置。
在这种情况下,可以并且优选地确定是否有可能旋转被组合的个别基元以便具有“预定的”共享边,并且在被确定为可能(或者不必要)的情况下仅组合基元。例如,并且优选地,可能有一个或多个属性和/或条件必须满足潜在地要被组合的基元以便基元能够以这种方式旋转,仅在满足那些条件和/或个别基元具有适当属性的情况下才旋转和组合基元。
在这种情况下,重建信息将仅需要指示基元的环绕(无论是顺时针还是逆时针),并且将不需要包括标识个别基元的哪些边是共享边的任何信息。
在一个优选的实施方案中,就这一点而言考虑的条件是旋转基元是否将对正在生成的输出具有任何影响。例如,在激发顶点用于着色的情况下,旋转可能影响输入,因此可能不被准许。
组合基元的基元类型指示应当并且优选地是允许组合基元的类型被标识的基元类型。因此,例如,在多对三角形可能以三角形对的形式组合成组合基元的情况下,组合基元的基元类型将把组合基元标识为“三角形对”。当然,其他布置也是可能的(例如,取决于组合基元的配置)。组合基元的基元类型可以并且优选地在格式上对应于可以用于所讨论的图形处理器和图形处理系统的其他基元类型指示。
如上文所讨论,且如本领域的技术人员将了解,作为正执行的图形处理流水线的整个处理序列的一部分,将需要获取(且在必要时处理(着色))用于待渲染的基元的顶点的顶点属性,以供在处理用于渲染输出的基元时使用。
就这一点而言,基于为在装配基元之前生成的输出提供的顶点索引集合(并且在一个实施方案中,这是所做的),简单地获取(并且在必要时处理(着色))要处理的基元的顶点的属性将是可能的。
然而,在一个特别优选的实施方案中,在基元已经被装配之后(并且基于用于经装配基元的顶点索引)获取(并且在必要时处理(着色))要处理的基元的顶点属性。
最优选地,并且如下面将进一步讨论的,在已经装配基元之后(并且优选地,响应于(尝试)获取经装配基元的顶点属性),执行在可以处理基元之前所需要的任何顶点处理(顶点着色)。(换句话说,在执行顶点(顶点属性)的任何处理(例如,将属性变换到屏幕空间)之前,如上文所讨论而装配要处理的基元。)
因此,在一个优选的实施方案中,本发明的方法包括
基于经装配基元的顶点索引来获取经装配基元的顶点的一个或多个属性,基于经装配基元的顶点索引来获取经装配基元的顶点的一个或多个属性包括对正获取的属性中的一个或多个属性执行顶点属性处理;以及
将包括经装配基元的所获取的顶点属性的经装配基元提供到正由图形处理器执行的图形处理流水线的稍后阶段以供处理。
相应地,图形处理器优选地包括:
顶点获取电路,该顶点获取电路被配置为基于经装配基元的顶点索引来获取经装配基元的顶点的一个或多个属性,其中顶点获取电路被配置为触发对正获取的属性中的一个或多个属性执行顶点属性处理;以及
处理电路,该处理电路被配置为将包括经装配基元的所获取的顶点属性的经装配基元提供到图形处理器执行的图形处理流水线的稍后阶段以供处理。
相应地,在一个特别优选的实施方案中,在将顶点索引装配成(完整)基元之前不执行顶点属性获取,即,使得仅对由包括在由基元装配过程(电路)输出的基元中且用于该基元的顶点索引指示的那些顶点执行任何顶点属性提取。
在此阶段针对顶点获取的顶点属性可为任何合适和期望的顶点属性(与顶点集合中的顶点相关联的属性)。就这一点而言,将有可能获取与每个顶点相关联的所有属性(针对所有属性的数据值),或仅可在此阶段获取顶点的属性中的一些但不是全部属性的子集(其中(例如并且优选地)在此阶段未获取的属性接着在图形处理流水线的稍后阶段被获取)。
在一个特别优选的实施方案中,在基元连同其所获取的属性一起被向前发送以供处理之前,基于经装配基元的顶点索引针对经装配基元的顶点仅获取属性中的一些但并非全部(例如,一个)属性,其中经装配基元的顶点的一个或多个其他属性接着被获取以供在图形处理流水线的稍后阶段处处理。
在此阶段基于经装配基元的顶点索引仅获取顶点属性中的一些但不是全部顶点属性的情况下,则优选地至少获取位置。在一个特别优选的实施方案中,对于顶点(顶点索引)仅获取位置属性(位置)。
一个或多个顶点属性可以以任何合适和期望的方式(从存储它们的存储器)被获取。在一个优选实施方案中,这是经由被配置为存储顶点属性的高速缓存(“顶点高速缓存”)来完成的,其中相应地确定所要求的属性(顶点)是否已经存在于高速缓存中,并且在属性尚未存在于高速缓存中的情况下,然后触发将属性(从存储器)获取到高速缓存中(例如并且优选地,根据针对所讨论的图形处理器和数据处理系统的正常高速缓存操作)。
基于经装配基元的顶点索引来获取经装配基元的顶点的一个或多个属性应当并且优选地使得基于经装配基元的顶点索引来获取经装配基元的所有顶点的所有(期望)属性。因此,这可以包括对于经装配基元的每个和每一顶点索引,获取该顶点(该索引所指示的顶点)的期望的一个或多个属性。
然而,在优选实施方案中,优选地临时存储(保持)顶点的至少一些先前获取的(例如最近获取的)属性,然后当同一顶点(同一顶点索引)出现在另一基元中时,不需要并且优选地不(重新)获取任何先前获取的(并且仍然保持的)顶点属性。
如上文所讨论,在图形处理中,可能且通常可能存在以下情况:针对顶点的初始定义的属性值中的至少一些属性值在其由图形处理器在生成输出时使用之前需要以某种方式处理。例如,针对顶点定义的位置可能需要从它们最初定义的(例如,模型)空间变换成将针对(并且相对于)生成输出的(例如,屏幕)空间。顶点属性的此处理通常可被称为“顶点着色”。
在一个优选的实施方案中,除了基于经装配基元的顶点索引来获取经装配基元的顶点的一个或多个属性之外,还响应于且基于从基元装配过程(电路)输出的经装配基元的顶点索引来(在必要时)执行并触发所获取的属性的适当顶点处理(顶点着色)。
因此,优选地基于经装配基元的顶点索引来执行对经装配基元的顶点的一个或多个属性的获取以及对所获取的属性的任何必要顶点(属性)处理(顶点着色)。
最优选地,当基于经装配基元的顶点索引来获取顶点属性时,此时还触发并执行对所讨论的属性的任何必要顶点属性处理(顶点着色)(并且,例如并且优选地,响应于获取由顶点索引指示的顶点的属性的尝试)。
相应地,可操作以获取由基元装配操作所输出的基元的索引所指示的顶点的顶点属性的顶点获取阶段(电路)还优选地被配置为且可操作以在必要时触发对所获取的顶点属性的适当处理(顶点着色),使得将获取经适当处理(着色)的顶点属性。
在一个特别优选的实施方案中,在使用之前通常将经受顶点处理(顶点着色)的正被获取的任何属性优选地经受作为“获取”过程的一部分的适当顶点着色操作(即,使得将获取经适当处理(顶点着色)的属性值)。
对于在此阶段未获取(且因此在此阶段未经受任何顶点着色)的任何属性,那些属性可以并且优选地在其被获取以供使用时(在其被获取以供使用的图形处理流水线的适当稍后阶段处)经受任何所需顶点着色。
在正获取的顶点属性将经受顶点处理(顶点着色)的情况下,则属性的获取优选地获取(且例如返回到顶点高速缓存)经处理(着色)的属性值或值本身以及可作为顶点处理(顶点着色)的结果而生成的任何其他数据值(诸如状态信息)两者。例如,并且优选地,在顶点着色位置(位置着色)的情况下,位置着色操作还可以例如生成一个或多个参数(值),诸如以下各项中的一项或多项:可变速率着色参数值、点大小、线宽和/或层ID等。在这种情况下,这些附加参数优选地也与“经处理”位置一起被获取。当然,其他布置将是可能的。
实际顶点属性(例如,位置)处理(着色)可以任何合适和期望的方式执行。这优选地通过执行适当的顶点着色器(例如,位置着色器)以执行顶点着色来完成,其中接着将该顶点着色(例如,位置着色)操作的结果存储在存储器中且针对顶点从该存储器获取。
因此,在一个特别优选的实施方案中,图形处理器还包括一个或多个执行单元(电路)(着色器核心),该一个或多个执行单元(电路)可操作以执行着色器程序(包括顶点着色器程序)以对输入数据值执行处理操作,且顶点属性处理(着色)由执行适当顶点着色程序的一个或多个执行单元(着色器核心)执行。
一旦已获取经装配基元的相关顶点属性,则包括其所获取的顶点属性的经装配基元可以被并且被提供到图形处理流水线的稍后阶段以供处理。这可以任何合适且期望的方式进行。
在一个特别优选的实施方案中,图形处理器还包括(逻辑上)在顶点属性获取阶段(电路)之后的“后期”基元装配过程(阶段)(和电路),该基元装配过程(阶段)(和电路)可操作以并且被配置为输出要处理的一个或多个经装配基元的序列(对应于提供给顶点获取阶段(电路)的经装配基元序列),在这种情况下(并且在此阶段处),经装配基元序列的每个经装配基元包括(至少(并且在一个实施方案中,仅))用于基元的标识符和用于经装配基元的(并且对应于)每个顶点的一个或多个顶点属性的集合,并且在根据本发明的“组合”基元的情况下包括用于组合基元的基元重建信息集合(如上文所讨论)。(同样,在组合基元的情况下,用于基元的标识符优选地包括已经(根据基元配置信息)被组合以形成单个组合基元的个别基元的标识符。)
因此,此后期基元装配阶段(电路)优选地可操作并且被配置为将所获取的顶点属性(以及任何其他所获取数据)与相关经装配基元相关联,且将包括适当所获取的顶点属性的经装配基元序列输出到图形处理流水线的稍后阶段以供执行。
因此,在一个特别优选的实施方案中,本发明的方法包括(并且图形处理器相应地包括)“早期”基元装配阶段(电路)和“组合”基元的任何必要基元重建信息两者,“早期”基元装配阶段(电路)可操作以基于基元配置信息从顶点索引装配基元,并且输出包括用于每个基元的标识符和指示用于基元的顶点的索引集合的经装配基元序列以及用于“组合”基元的任何必要基元重建信息,然后在顶点属性获取之后跟随有“后期”基元装配阶段(电路),该后期基元装配过程(电路)输出要处理的经装配基元序列,其中在该阶段处的每个经装配基元包括用于基元的标识符和用于经装配基元的(并且对应于)每个顶点的一个或多个顶点属性的集合(基于从早期基元装配阶段(电路)输出的用于经装配基元的所指示的顶点索引),以及用于“组合”基元的任何必要基元重建信息。
因此,“后期”基元装配过程(电路)优选地接收(和/或获取)来自初始(早期)基元装配阶段(电路)的经装配基元(序列)和来自顶点属性获取阶段(电路)的所获取(且在适当情况下经处理(顶点着色))的顶点属性(以及任何其他所获取数据)作为输入,并且基于且使用那些输入来输出经装配基元的(对应)序列,该经装配基元的(对应)序列针对每个基元包括所讨论基元的顶点的一个或多个(所获取的)顶点属性。后期基元装配过程(电路)应当并且优选地(并且以相同的基元(序列)顺序)输出与由初始(早期)基元装配过程(电路)输出的经装配基元序列相同的经装配基元序列。
因此,特别地,在通过初始(早期)基元装配过程(电路)将两个(或更多个)基元装配为单个组合基元以包括在经装配基元序列中的情况下,后期基元装配过程(电路)应当并且优选地相应地输出单个组合基元而不是(根据初始基元配置信息)组成该单个组合基元的个别基元。
后期基元装配过程(电路)将针对每个基元输出已基于用于该基元的顶点索引而针对该基元获取的对应一个或多个顶点属性(以及任何其他数据)。因此,在上面讨论的优选实施方案中,其中所获取的顶点属性是每个索引(顶点)的位置,后期基元装配过程(电路)将为每个经装配基元输出一组适当的(优选适当变换的)位置,即所讨论的基元的每个索引(顶点)的(变换的)位置。
后期基元装配阶段(电路)优选地基于用于从早期基元装配阶段(电路)接收的经装配基元的索引确定用于经装配基元的顶点(顶点属性)。在一个优选的实施方案中,当后期基元装配阶段(电路)从早期基元装配阶段(电路)接收(用于)基元(的顶点索引)时,从存储顶点的地方适当地获取(拉取)顶点(所获取的顶点属性)。(如果需要,也可以将顶点(所获取的顶点属性)从它们的存储装置“推”到后期基元装配阶段(电路)。)
就这一点而言,将有可能由后期基元装配阶段使用的所有顶点(所获取的顶点属性)存储在顶点高速缓存中且由后期基元装配阶段(电路)从中使用(且在一个实施方案中是这种情况)。在这种情况下,后期基元装配阶段(电路)将从顶点高速缓存获取(或接收)其需要用于基元的顶点(所获取的顶点属性)。
在一个特别优选的实施方案中,后期基元装配阶段(电路)被配置为并且可操作以存储一组一个或多个且优选多个“先前使用”的顶点(顶点索引)(例如并且优选地,一组先前使用的顶点位置)的(所获取的)顶点属性(以及任何其他数据),该顶点属性对应于且包括先前已用于已向前发送以供处理的经装配基元的顶点属性(例如位置)(以及任何其他所获取的顶点数据)。
为了这个目的,后期基元装配阶段(电路)优选地包括(保持)适当的缓冲区(使用的顶点缓冲区)(已与该缓冲区相关联),在该缓冲区中存储用于经装配基元的顶点的所获取的属性(例如位置)。
在这些实施方案中,“先前使用的”顶点存储(缓冲区)应当并且优选地是除了任何(该)顶点高速缓存(如上文所讨论)之外的。
换句话说,对于用于由早期基元装配阶段(电路)输出的经装配基元的每一顶点索引,在从顶点高速缓存获取该顶点的相关属性(且触发将该顶点的相关属性获取到顶点高速缓存中(如果需要))之前,将首先检查该顶点(该顶点索引)的(相关)属性是否已由后期基元装配阶段(电路)存储。
因此,在这种情况下,顶点属性获取过程(电路)优选地相应地包括初始索引检查操作(电路),该初始索引检查操作(电路)从(早期)基元装配操作接收完整基元,并且可操作以并被配置为根据用于基元的索引来确定所讨论的顶点是否已经被后期基元装配阶段(电路)存储(已经存在于最近使用的顶点缓冲区中)。此初始索引检查操作(电路)相应地优选地(在逻辑上)布置在早期基元装配过程(电路)与顶点属性获取过程(电路)之间。
此检查优选地针对用于从(早期)基元装配操作接收到的每个和每一经装配基元的每个和每一索引来进行。
一旦已(例如,通过后期基元装配阶段(电路))装配了包括相关所获取(和着色的)顶点属性(例如并且优选地,着色的顶点位置)的经装配基元,则接着将如此装配的基元(包括其所获取的顶点属性)提供到图形处理器执行的图形处理流水线的稍后阶段以供处理。
因此,优选地包括经装配基元的所获取的顶点属性的该经装配基元被向前传递以进行适当的进一步处理,以便在生成输出时处理那些基元。
(经装配)基元的处理可包括可在生成输出时执行的任何合适和期望的基元处理。
基元的处理优选地至少包括渲染基元以生成例如并且优选地用于基元的渲染输出数据。可通过(例如)将基元光栅化成片段且接着对如此生成的片段进行渲染(片段着色)来执行渲染。附加地或另选地,可使用光线跟踪或混合光线跟踪技术来渲染基元。
相应地,在一个实施方案中,图形处理器还包括光栅化器(光栅化电路)和渲染器(渲染电路)(优选地以可编程片段着色器的形式)。
在遵循根据本发明的实施方案的任何特定和优选处理(例如,如下面进一步讨论的)的情况下,例如并且优选地,取决于并且根据所讨论的图形处理器和图形处理流水线,可以以任何期望和合适的方式来执行经装配基元的处理。通常并且优选地,经装配基元(尽可能地)被光栅化和/或渲染等,如对于所讨论的图形处理器和图形处理流水线通常所做的那样(因为一旦基元以本发明的方式被装配,该基元就通常可以被认为是并且被视为与将以任何其他方式装配的基元没有不同)。
包括顶点属性的经装配基元应当并且优选地传递到正由图形处理器执行的图形处理流水线的下一阶段(电路)。此可为图形处理流水线的任何合适和期望的阶段,该阶段(例如,紧紧)跟在基元装配阶段的完成之后。例如,在即时模式渲染器的情况下,经装配的完整基元可以被传递到例如光栅化器以进行处理。
在一个特别优选的实施方案中,图形处理器和图形处理流水线为基于图块的图形处理器和图形处理流水线,且因此优选地包括拼接阶段(电路)以及在适当基元列表读取器(读取过程/电路)之后的光栅化及渲染过程两者,其中将经装配基元添加到基元的适当列表(基元列表)以用于指示针对正生成的输出的给定区域需要处理的基元,该适当基元列表读取器(读取过程/电路)可操作并且被配置为读取由拼接过程准备的基元列表以标识针对渲染输出的相应图块需要处理的基元,且将所读取基元提供到正执行以进行处理的图形处理流水线的后续处理阶段(电路)(以提供待在逐个图块的基础上处理的基元)。
在图形处理器是基于图块的图形处理器的情况下,优选地(首先)将具有它们的顶点属性的经装配基元传递到图形处理器和图形处理流水线的拼接器(拼接阶段)以用于“拼接”。
因此,在一个特别优选的实施方案中,图形处理器是基于图块的图形处理器(并且图形处理器相应地执行的图形处理流水线执行基于图块的图形处理),并且在相应基元随后被进一步处理(例如,光栅化和渲染)之前,包括其相关联的所获取(和处理)的顶点数据(属性)的经装配的完整基元首先被提供给图形处理器和图形处理流水线的拼接过程(拼接器电路),以用于生成适当的基元列表。
本发明的实施方案中的拼接过程和操作可以以任何合适和期望的方式来执行,诸如并且优选地根据所讨论的图形处理器和图形处理流水线的正常方式来执行。
因此,拼接过程应当并且优选地包括确定渲染输出已经被划分为用于拼接过程的多个区域中的哪个区域或哪些区域,相应基元落入其中并且然后将基元添加到用于所讨论的区域或多个区域的相应基元列表。此过程可(例如并且优选地)包括确定表示基元在输出内的位置的边界框,且接着将该边界框的位置与可为其准备基元列表的相应区域进行比较,以确定应将基元包括(列出)于哪一或哪些基元列表中。
拼接过程可以并且优选地还包括适当地剔除被确定为不落在为其准备基元列表的区域内(例如,被确定为落在期望(可见)输出面积(视图平截锥体)之外)的任何基元(即,使得它们不被包括在任何基元列表中)。
在一个特别优选的实施方案中,拼接过程可操作以并且被配置为适当地处置并且考虑已经以本发明的方式包括在经装配基元序列中的任何组合基元。这可以按任何合适且所需的方式来完成。
在一个优选实施方案中,拼接过程包括用于在确定基元应当被列入的一个或多个基元列表时使用的经装配基元的边界框生成过程。在一个优选实施方案中,在组合基元的情况下,仅涵盖整个组合基元的单个边界框被确定并用于组合基元的(整个)拼接过程。
然而,在一个特别优选的实施方案中,至少最初生成个别边界框,并将其用于组合基元表示(对应于)的每个个别基元的拼接过程。因此,在组合基元对应于两个个别三角形基元的情况下,优选地,(最初)生成两个单独的边界框(每个边界框用于每个个别三角形基元),并将其用于拼接过程。在这种情况下,用于个别基元的个别边界框可以并且优选地根据用于组合基元的顶点的位置和为组合基元提供的基元重建信息来适当地生成(因为这然后将允许确定用于组成组合基元的个别基元的顶点和顶点位置,使得然后可以为组成组合基元的个别基元确定个别边界框)。
在一个优选的实施方案中,拼接过程包括基元剔除过程,例如并且优选地基于潜在可见性来剔除基元,诸如以下各项中的一项或多项或复数项:正面/背面剔除、平截锥体剔除、样本感知剔除以及可在此阶段实现的任何其他基于基元可见性的剔除。
作为拼接过程的一部分的此(不可见)基元剔除可简单地将组合基元视为整体(即,是否可剔除整个组合基元)(并且在一个实施方案中,这是所做的)。
然而,在一个特别优选的实施方案中,特别是在为对应于组合基元的个别基元生成个别边界框的情况下,作为拼接过程的一部分的任何(例如可见性)剔除优选地为组合基元的每个个别基元单独地确定该基元是否可以被剔除,即,使得对于组合基元(根据基元配置信息)所对应的(组成组合基元的)每个个别基元,将为该基元单独确定其是否可以被剔除。
应当理解,在这种情况下,可以确定组成组合基元的个别基元中没有一个基元可以被剔除(在这种情况下,组合基元作为整体将不会被剔除),或者组成组合基元的个别基元中的全部(例如,两个)基元都可以被剔除(在这种情况下,整个组合基元可以并且优选地在拼接阶段被剔除),或者组成组合基元的个别基元中的一些但不是全部(例如,在三角形对组合基元的情况下,一个但不是两个)基元可以被剔除。
在这最后一种情况下,整个组合基元不应当被并且优选地不被剔除,因为组成组合基元的个别基元中的至少一个基元不应当被剔除。
在一个优选实施方案中,当通过作为拼接过程的一部分执行的剔除过程确定组成组合基元的个别基元中的一个(或多个)基元可被剔除,但组成组合基元的个别基元中的另一个(或多个)基元不能被剔除(即,组成组合基元的个别基元中的一些但不是全部基元可被剔除)时,组合基元被划分回其组成个别基元,其中被确定为能够被剔除的个别基元中的任一个基元接着被剔除,且剩余个别基元中的任一个基元接着作为相应个别基元(而非作为组合基元)被写入到适当基元列表中。
因此,例如,在确定三角形对组合基元的一个基元可被剔除的情况下,优选地将三角形对基元转换回其个别三角形基元,可被剔除的个别三角形基元接着被剔除,但未被剔除的个别三角形基元接着作为个别三角形基元被写入到适当基元列表中。
在这种情况下,将组合基元转换成适当的个别基元可以并且优选地使用与组合基元相关联的基元重建信息来允许重新生成适当的个别基元。
相应地,被重新生成的个别基元优选地具有个别基元应当具有的形式和与其相关联的相关信息,诸如用于基元的标识符(其可以并且优选地取自用于组合基元的组合标识符)以及用于个别基元的相关顶点/顶点属性集合。然而,由于基元现在是个别基元的形式(而不是被组合在组合基元中),所以与组合基元相关联的基元重建信息可被丢弃且不需要与经重新组成的个别基元相关联地提供。
在一个特别优选的实施方案中,在组成组合基元的基元中的一些但不是全部基元可以被剔除的情况下,组合基元作为组合基元被保持(拼接),但是注意(例如,在与组合基元相关联的状态信息(诸如标志)中),组成组合基元的能够被剔除的适当的个别基元或多个基元可以被剔除。优选地,为每个个别基元提供可见/剔除指示(例如,标志)并将其与每个个别基元相关联,并且相应地设置。因此,例如并且优选地,在三角形对组合基元的情况下,将注意到并且与组合三角形对基元相关联的是组成三角形对的相应三角形中的哪一个三角形实际上被确定为能够被剔除。
此个别基元剔除指示可接着且优选地接着稍后用于图形处理中以剔除确定可剔除的个别基元,从而避免或省略对该个别基元的处理。例如,这可以在组合基元在图形处理中的稍后点处被重新划分回其个别基元时以及之后的点处进行(这将在下面更详细地讨论)。
这尤其可能是沿着流水线发送组合基元的成本与沿着流水线发送个别基元的成本相同的情况,因为在这种情况下,推迟将组合基元分裂回其个别基元以及稍后在流水线中的单个点处移除被剔除基元的成本可能是更好的,例如在组合基元在任何情况下都需要被分裂成其个别基元的情况下。
在一个特别优选的实施方案中,在组成组合基元的个别基元在大小和/或位置上彼此充分不同的情况下,并且最优选地,在个别基元将被列在彼此不同的基元列表集合中的情况下(当在个别基础上考虑时),拼接过程被配置为将组合基元划分回其组成个别基元。
这可以并且优选地基于为组成组合基元的个别基元生成的边界框来确定。因此,在一个特别优选的实施方案中,拼接过程为组成组合基元的每个个别基元导出个别边界框,并且基于个别基元的边界框来确定是否为了将基元写入基元列表(或不写入)而将组合基元细分为其个别基元。
在一个特别优选的此类实施方案中,关于是否将组合基元细分为其个别组成基元的决定是基于个别基元是否将基于它们的边界框被写入到彼此相同的基元集合列表。特别地,当个别基元将被写入相同的基元列表时,组合基元被保持为组合基元,但是当组成组合基元的个别基元将被写入至少一个彼此不同的基元列表时,则组合基元被划分回其组成个别基元。
在一个优选的实施方案中,为了促进这一点,在为其准备基元列表的渲染输出区域(例如,个别渲染图块)的分辨率下导出个别基元的边界框,然后确定个别基元的边界框是否相同。
在用于组成组合基元的个别基元的边界框被确定为相同的情况下(至少在基元列表区域(例如,渲染图块)的分辨率下),则组合基元优选地被保持为组合基元,但是在用于组成组合基元的个别基元的边界框不相同的情况下(例如,并且优选地,在为其准备个别基元列表的渲染输出的区域(例如,渲染图块)的分辨率下),则组合基元优选地被划分回其组成个别基元。
这种基于个别基元的大小将组合基元划分回其组成个别基元可以代替或补充基于是否可以剔除个别基元中的一些但不是全部基元而使组合基元回到其组成个别基元的任何细分,但是在一个特别优选的实施方案中,可以基于剔除过程的结果以及个别基元(的边界框)的相对大小和/或位置将组合基元划分回其组成个别基元。
(拼接过程的)剔除和边界框生成过程的输出优选地相应地是基元集合以及它们对应的边界框。在个别基元的情况下,这再次优选地包括用于基元的标识符、用于基元的顶点索引集合以及对用于基元的边界框(边界框信息)的指示(优选地根据基元(以其分辨率)落入哪个基元列表区域(例如,渲染图块))。
对于(还没有细分回其组成个别基元的)组合基元,来自剔除和边界框过程的输出同样优选地包括用于基元的标识符、用于组合基元的顶点索引集合、用于组合基元的重建信息、针对组合基元的剔除指示(如果有的话)以及针对组合基元的边界框信息。在这种情况下,优选地仅指示对应于作为整体的组合基元的单个边界框(而不是指示用于组成组合基元的每个个别基元的个别边界框)。
因此,在组合基元的情况下,尽管边界框过程可最初生成用于组合基元的每个个别基元的个别边界框,但边界框过程到拼接过程的下一阶段的输出将优选地是并且是优选地用于作为整体的组合基元的单个边界框。
相应地,在一个特别优选的实施方案中,在组合基元的情况下,最初为组合基元的每个个别基元生成个别边界框,但是当没有(当不同于)(例如,基于个别基元的边界框,或者作为拼接过程的一部分的剔除过程,或者以其他方式)确定组合基元应当被细分回其组成个别基元时,为拼接和基元列表写入过程的至少(稍后)部分生成并使用组合基元的单个边界框来代替组成组合基元的个别基元的个别边界框。
然后,优选地使用来自边界框生成等过程的边界框来确定应当将对应的基元包括在(写入)哪些基元列表中。这优选地由图形处理器和图形处理流水线的适当分格阶段(电路)来完成,该分格阶段输出基元序列以及针对每个基元的对基元应包括在其中的基元列表的指示。在这种情况下,在基元将被包括在多于一个基元列表中的情况下,该基元优选地对于它将被包括在其中的每个基元列表被指示一次。
一旦已确定应将给定基元(无论是组合基元还是个别基元)包括在哪一基元列表或哪些基元列表中,则优选地将基元适当地写入到适当基元列表或哪些基元列表中,例如写入到存储器中。此过程可以并且优选地包括适当地压缩基元列表,例如当它们被写入时进行压缩。
再次,基元列表写入和基元列表的任何压缩可以并且优选地考虑并且被配置为考虑在基元列表中以本发明的方式组合的基元的(潜在)存在。
因此,例如并且优选地,基元列表写入过程优选地被配置为能够在基元列表中写入(编码)包括其重建信息的组合基元。
类似地,压缩过程(如果有的话)优选地被配置为能够压缩为组合基元提供的相关信息(即,特别地包括基元重建信息)以及可以为非组合基元提供的信息。
除了或代替(并且优选地除了)配置拼接过程以允许和考虑要处理的经装配基元序列中可能存在“组合”基元,图形处理流水线的一个或多个(并且优选地复数个)其他阶段和电路优选地相应地配置以允许和考虑组合基元的存在。
特别地,在优选实施方案中,在基元装配阶段(电路)(以及拼接阶段/电路(如果有的话))与光栅化和渲染阶段(电路)(或其他形式的渲染阶段(电路),诸如不包括光栅化的光线跟踪渲染过程)中间(之间)还可以存在一个或多个处理阶段(电路),图形处理流水线的这些中间阶段和电路中的一个或多个(并且优选地复数个)阶段和电路被配置为允许和考虑组合基元的存在。
因此,例如并且优选地,在基于图块的图形处理流水线的情况下,基元列表读取器(读取过程)优选地相应地被配置为能够处置且(例如)读取来自基元列表的组合基元,且将组合基元作为输出提供到图形处理流水线的后续阶段。在必要时,基元列表读取器应当相应地并且优选地可操作以解压缩(解码)压缩的组合基元并且输出适当的经装配的组合基元以供处理。在这种情况下,基元列表读取器优选地以上述形式输出组合基元,即包括用于组合基元的适当标识符、对用于组合基元的顶点的索引的指示以及用于组合基元的基元重建信息集合。
在一个特别优选的实施方案中,在渲染之前并且优选地在光栅化引擎(光栅化处理)之前存在基元(三角形)设置阶段(电路),该基元(三角形)设置阶段(电路)可操作以确定渲染(例如,光栅化和渲染)过程所需要的任何每基元信息。这可以例如并且优选地包括在光栅化和渲染基元之前生成用于基元的适当的线(边)方程,并且优选地在适当时生成每基元信息。
在一个特别优选的实施方案中,此基元(三角形)设置阶段/电路还被配置为考虑组合基元。最优选地,基元(三角形)设置阶段被配置为仅一次生成用于组合基元内的共享边的任何必要的线(边)方程,并且然后适当地并且优选地为共享所讨论的边的所有(例如,两个)个别基元提供用于共享边的导出“共享”导出方程。同样,这可以并且优选地基于并且使用为组合基元提供的基元重建信息来完成,这将由此允许确定哪个边被个别基元共享以及哪些顶点形成该共享边。
在一个优选的实施方案中,存在顶点属性获取阶段/电路,该顶点属性获取阶段/电路被配置为获取在光栅化结束渲染过程之前的光栅化和渲染过程将需要的经装配基元的顶点属性。
在一个优选的实施方案中,此顶点获取过程/阶段在任何基元设置阶段/电路之前(且优选地为基元设置阶段/电路提供适当的顶点属性信息)。在基于图块的图形处理的情况下,此顶点属性获取阶段/过程优选地在基元列表的读取(基元列表读取器)之后(且优选地介于基元列表读取器与基元设置阶段/电路中间)。
在一个优选的实施方案中,任何此类稍后顶点获取阶段/电路还被配置为能够处置组合基元,且特别地能够触发对组合基元的顶点集合的获取(并且在必要时,顶点着色)。
如上文所讨论,在本发明的优选实施方案中,至少一个(和每个)组合基元与其基元重建信息相关联,该基元重建信息可以用于重新生成(重建)被组合以形成组合基元的个别基元,并且相应地,该重建信息可以优选地用于将组合基元细分回其组成个别基元。
如上文所讨论,在一个特别优选的实施方案中,组合基元可以在基于图块的图形处理流水线中的拼接器的边界框生成和/或剔除阶段期间并且作为其一部分被细分回其组成个别基元。
在一个特别优选的实施方案中,可在图形处理流水线的其他阶段处将组合基元细分为其个别组成基元。这可以代替但优选地附加于在拼接器阶段进行该操作的能力。
图形处理器和图形处理流水线可以被配置且可操作以使得组合基元可以在整个图形处理流水线执行中的仅一个点处(例如,在拼接器处)被细分回其个别组成基元,但是在一个优选的实施方案中,图形处理器和图形处理流水线被配置且可操作以使得组合基元可以在整个图形处理流水线执行中的多于一个点处(并且优选地至少在拼接器处和整个图形处理流水线中的另一个点处)被细分回其个别组成基元。
因此,在一个特别优选的实施方案中,图形处理器和图形处理流水线被配置且可操作以使得组合基元可在整个图形处理流水线执行中的至少一个(且优选地多个)点处细分回其个别组成基元。在一个特别优选的实施方案中,组合基元可以在以下流水线阶段中的一个或多个流水线阶段、并且优选地在以下流水线阶段中的复数个流水线阶段、并且优选地在以下流水线阶段中的全部流水线阶段被细分回其个别基元:拼接器基元边界框生成和/或剔除阶段;基元列表压缩和写入阶段;基元列表读取阶段;稍后顶点获取阶段;以及三角形设置阶段。
就这一点而言,在任何给定处理阶段将组合基元细分回其个别基元的可能是有条件的,即,使得当(并且仅当)满足一个或多个特定条件时(并且在优选实施方案中是这种情况),组合基元将被细分回其组成个别基元。
因此,例如并且优选地,在拼接边界框和剔除阶段处的潜在组合基元细分的情况下,如上文所讨论,此细分优选地取决于是否将剔除组成组合基元的个别基元中的仅一些但并非全部基元,和/或个别基元的“大小和/或位置”。类似地,在基元列表压缩和写入的情况下,如果可以通过压缩两个个别基元来更有效地进行压缩,则优选地在压缩和写入到基元列表之前将组合基元细分回其个别基元。
在一个特别优选的实施方案中,基元组合过程之后的图形处理流水线的阶段中的一个或多个阶段(的序列)被配置为支持并处置组合基元,其中在支持并可处置组合基元的该阶段序列之后,存在并非既定且被配置为支持并处置组合基元的阶段(和阶段序列)。在这种情况下,流水线优选地被配置为使得任何和所有组合基元将在流水线中没有(即不同于)被配置为支持和处置组合基元的第一阶段之前(例如,在流水线序列中支持和处置组合基元的最后一个阶段处或紧接其后)细分回其个别基元。
因此,在这种情况下,在图形处理流水线序列中将存在没有(不同于)被配置为处置组合基元的阶段,且任何和所有组合基元都将在到达该处理阶段之前细分回其个别基元。
在一个特别优选的实施方案中,在基于光栅化的渲染的情况下,在渲染之前,并且优选地在光栅化之前,将一个(和所有)组合基元细分回其个别组成基元。因此,在渲染之前(并且优选地在光栅化之前),在图形处理流水线中优选地存在一个阶段,在该阶段中,任何仍然组合的基元被细分回其个别组成基元。这种(明确的)细分可以在光栅化和渲染之前的任何阶段(并且优选地在拼接过程之后)进行,因此,例如,在基元列表写入阶段、基元列表读取阶段、后期顶点获取阶段或基元(三角形)设置阶段进行。
在一个特别优选的实施方案中,在光栅化和渲染之前将任何(剩余的)组合基元最终细分回其个别基元的操作(在流水线序列中)尽可能接近光栅化和渲染。因此,在一个特别优选的实施方案中,该操作在基元(三角形)设置阶段执行,并且最优选地在已经执行了任何基元(三角形)设置之后执行,并且特别是在已经确定了组合基元的共享边的线方程之后执行。
因此,在图形处理流水线包括基元(三角形)设置阶段(电路)的一个特别优选的实施方案中,在已针对组合基元执行基元(三角形)设置之后,将组合基元细分回其组成个别基元,接着将那些个别基元作为个别基元发送到后续处理阶段(诸如光栅化和渲染),而非将组合基元向前发送以供处理。
在一个特别优选的实施方案中,对于尽可能多的图形处理流水线,即对于尽可能多的直到并包括基元(三角形)设置阶段(电路)(并且在光栅化和渲染之前)的图形处理流水线,组合基元被保持为组合基元并且作为组合基元穿过图形处理流水线。
因此,在一个特别优选的实施方案中,除非在图形处理流水线中较早满足将组合基元细分回其组成个别基元的条件(除非确定在图形处理流水线中的较早阶段处将组合基元细分回其组成个别基元),否则由基元装配阶段/电路包括在经装配基元序列中的组合基元被保持为直到并包括图形处理流水线的基元(三角形)设置阶段(电路)(的至少一部分)的组合基元。
相应地,在一个优选的实施方案中,当确定应当在图形处理流水线的较早阶段处将基元细分回其组成个别基元时(仅在图形处理流水线中较早满足(发生)将组合基元细分回其组成个别基元的条件的情况下),在图形处理流水线的基元(三角形)设置阶段(电路)之前,仅将经装配的组合基元细分回其组成个别基元。
当然,其他布置将是可能的。
在将组合基元细分回其个别组成基元的情况下,则可以任何合适和期望的方式重新生成那些个别基元。在一个特别优选的实施方案中,如上文所讨论,这使用为组合基元提供的基元重建信息,并且最优选地使用该重建信息来标识组合基元的共享边、用于每个个别基元的适当顶点以及组成组合基元的每个个别基元的环绕方向。
将组合基元细分回其个别组成基元还优选地使用与组合基元相关联的任何相关联的可见性剔除信息(一个或多个指示符)来确定组成组合基元的个别基元中的任一个基元实际上是否可以被剔除,并且如果是,则优选地剔除在将组合基元细分回其个别组成基元时已经被指示为要被剔除的个别基元。特别地,组成被指示为被剔除的组合基元的任何个别基元优选地在组合基元被细分回其个别组成基元时的阶段(以及在组合基元被细分回其个别组成基元时)被剔除。因此,例如并且优选地,对于组合三角形对基元,如果个别三角形中的一个三角形经指示为被剔除,则当将组合三角形对基元细分回其个别组成基元时,优选地剔除该个别三角形基元,使得仅剩余个别三角形基元将向前发送以供处理。
一旦已将组合基元细分回其个别组成基元,则在一个特别优选的实施方案中,在图形处理的稍后阶段不将基元与任何其他基元(再)组合,即,一旦已将组合基元细分回其个别组成基元,则那些个别基元保持为个别基元(且不存在关于其是否可与任何其他基元组合的进一步确定)以用于其通过图形处理流水线的剩余处理。
在基元(三角形)设置阶段和组合基元的任何最终细分(以及从组合基元中剔除个别基元的任何剔除)之后,装配基元的序列(在该阶段优选地将仅包含个别基元,并且没有组合基元)将被向前发送以用于光栅化和渲染(或者用于在非基于光栅化的渲染器的情况下的渲染)。
光栅化(如果有的话)和渲染过程可以以任何合适和期望的方式来执行,并且优选地根据针对所讨论的图形处理器和图形处理流水线的正常光栅化和渲染过程来完成(因为提供给光栅化和渲染过程的基元将是与以任何其他方式装配的基元没有不同的个别基元)。
一旦基元已经被(光栅化和)渲染,则该处理的输出可以例如并且优选地被写入例如主存储器中的例如帧缓冲区,然后可以从该帧缓冲区例如将该输出提供给显示器以进行显示,或者以其他方式进行处理。在基于图块的渲染的情况下,这优选地经由图块缓冲区来完成。
如上文所讨论,在优选实施方案中,在(早期)基元装配过程之后的顶点属性的获取仅获取每一顶点的属性中的一些但并非全部属性(且触发对每一顶点的属性中的一些但并非全部属性的处理)。因此,在这种情况下,可在基元的后续处理期间且针对基元的后续处理(例如并且优选地,在需要所讨论的顶点属性的图形处理流水线的适当阶段处)获取(且在必要时处理(顶点着色))基元的顶点的其他属性。
因此,在这种情况下,除了在装配用于处理的基元时发生的顶点属性获取(和处理)之外,还将进一步获取(和处理(顶点着色))基元的其他顶点属性。
因此,在一个优选的实施方案中,本发明的方法还包括在已将包括其所获取的顶点属性的经装配基元提供到图形处理器执行的图形处理流水线的稍后阶段之后获取(且在必要时处理(顶点着色))经装配基元的顶点的其他属性(并且图形处理器包括可操作并且被配置为进行该操作的一个或多个处理电路)。
图形处理器和图形处理流水线的各种处理阶段(电路)可并且优选地另外被配置为能够以任何合适和期望的方式处置组合基元。例如并且优选地,该各种处理阶段(电路)可被适当地配置为支持沿流水线向下传递(和处理)数量增加(例如,四个)的顶点。
尽管上面主要参考将两个个别三角形基元组合成组合三角形对基元的可能性描述了本发明,但是如上文所讨论,如果需要,可以将多于两个(例如三角形)个别基元组合成组合基元。在这种情况下,图形处理器和图形处理流水线的各种处理阶段(电路)优选地被适当地配置为能够处置此类组合基元,并且/或者此类组合基元可在适当时使用多个循环来处理。
以上描述了以本发明的方式进行的操作可能涉及的图形处理器和图形处理流水线的主要元件。如本领域技术人员将理解的,图形处理器可另外包括并执行并且优选地确实包括并执行图形处理器和图形处理流水线可(通常)包括的其他处理阶段和电路中的任一者或一者或多者以及优选地全部。因此,例如,图形处理器还可包括深度(或深度和模板)测试器、混合器、图块缓冲区、写出电路等。
在一个优选的些实施方案中,图形处理器包括存储本文所述的数据和/或存储用于执行本文所述的过程的软件的一个或多个存储器和/或存储器设备,和/或与该一个或多个存储器和/或存储器设备通信。图形处理器还可与主机微处理器通信,和/或与用于基于图形处理器的输出来显示图像的显示器通信。
要生成的输出可包括可以且待由图形处理器和处理流水线生成的任何输出。因此,该输出可包括(例如)将在基于图块的图形处理系统中生成的图块和/或输出片段数据的帧。本发明可用于图形处理器和处理流水线可用以生成的所有形式的输出,诸如用于显示的帧、渲染到纹理输出等。在一个优选的实施方案中,输出为输出帧,并且优选地为图像。
在一个特别优选的实施方案中,本发明的各种功能在单个图形处理平台上执行,该单个图形处理平台生成和输出(渲染的)数据,该数据例如被写入到用于显示设备的帧缓冲区。
可以任何期望且合适的方式来执行本发明的各种功能。例如,除非另外指明,否则本发明的功能在本文可根据需要以硬件或软件来实现。因此,例如,除非另外指明,否则本发明的各种功能元件、级和“装置”可包括合适的一个或多个处理器、一个或多个控制器、功能单元、电路系统、电路、处理逻辑部件、微处理器布置等,这些部件可被配置为执行各种功能等,诸如适当专用硬件元件(处理电路/电路系统)和/或可编程硬件元件(处理电路/电路系统),这些部件可被编程用于以期望的方式操作。
在这里还应注意,如本领域技术人员将了解,可在给定的处理器上并行地重复和/或执行本发明的各种功能等。同样,如果需要,各种处理级可共享处理电路系统/电路等。
此外,除非另外指明,否则本发明的处理级中的任何一个或多个或所有处理级可体现为例如呈一个或多个固定功能单元(硬件)(处理电路)的形式和/或呈可被编程为执行期望的操作的可编程的处理电路的形式的处理级电路。同样,本发明的处理阶段和处理阶段电路系统中的任何一者或多者可作为独立的电路元件提供给其他处理阶段或处理阶段电路中的任何一者或多者,并且/或者处理阶段和处理阶段电路中的任何一者或多者或全部可至少部分地由共享处理电路形成。
在执行上面所讨论的特定功能所需的任何硬件的条件下,图形处理器可另外包括图形处理器所包括的任何一个或多个或所有通常的功能单元等。
本领域的技术人员还应当理解,本发明的全部所述实施方案可视情况在一个实施方案中包括本文所述特征中的任何一者或多者或全部。
根据本发明的方法可以至少部分地使用软件例如计算机程序来实现。因此,可以看出,本发明的实施方案在本文可提供计算机软件,该计算机软件特别适于在安装在数据处理器上时执行本文所述的方法;计算机程序元素,该计算机程序元素包括用于当该程序元素在数据处理器上运行时执行本文所述方法的计算机软件代码部分;和计算机程序,该计算机程序包括适于当该程序在数据处理系统上运行时执行本文所述的一个或多个方法的所有步骤的代码。该数据处理器可以是微处理器系统、可编程FPGA(现场可编程门阵列)等。
本发明还扩展至计算机软件载体,该计算机软件载体包括在用于操作显示控制器或包括数据处理器的微处理器系统时,使与该数据处理器、该控制器或系统结合以执行本发明的方法的步骤的此类软件。此类计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM、RAM、闪存存储器或磁盘,或者可以是信号,诸如通过导线的电子信号、光信号或无线电信号,诸如到卫星的信号等。
还将了解,不是本发明的方法的所有步骤都需要由计算机软件执行,并且因此根据更广的实施方案,本发明提供安装在计算机软件载体上的用于执行本文陈述的方法的步骤中的至少一个步骤的计算机软件和此类软件。
本发明因此可合适地体现为用于与计算机系统一起使用的计算机程序产品。此类具体实施可包括固定在有形非暂时性介质上的一系列计算机可读指令,诸如计算机可读介质,例如磁盘、CDROM、ROM、RAM、闪存存储器或硬盘。其还可包括一系列计算机可读指令,这些计算机可读指令能够经由调制解调器或其他接口设备通过有形介质(包括但不限于光通信线路或模拟通信线路)或者无源地使用无线技术(包括但不限于微波、红外或其他传输技术)传输到计算机系统。该系列计算机可读指令体现了本文先前所述的功能的全部或部分。
本领域的技术人员将会理解,此类计算机可读指令可以多种编程语言编写,以与许多计算机架构或操作系统一起使用。此外,此类指令可使用目前或将来的任何存储器技术(包括但不限于半导体、磁性或光学技术)来存储,或者使用目前或将来的任何通信技术(包括但不限于光学、红外或微波技术)来传输。可以设想的是,此类计算机程序产品可以作为可移除中间体与附随的印刷或电子文档(例如收缩包装软件)一起分发,可以预加载计算机系统(例如系统ROM或固定磁盘),或者可通过网络(例如互联网或万维网)从服务器或电子公告板来分发。
现在将仅以举例的方式并参考附图来描述本发明的优选实施方案,其中:
图1示出了图形处理的示例性序列;
图2示出了可实现本发明的示例性数据处理系统;
图3示意性地示出了可根据本发明来操作的图形处理器;
图4、图5A、图5B和图5C示出了在本发明的实施方案中将三角形组合为三角形对;
图6示出了在本发明的实施方案中组合个别基元以形成组合经装配基元的操作;
图7示意性地示出了本发明的实施方案中的可能的组合三角形对配置;
图8更详细地示出了本发明的实施方案中的图3的图形处理器的操作的某些部分;
图9示出了本发明的实施方案中的组合基元的边界框生成;并且
图10和图11更详细地示出了图8所示的操作的某些部分。
相似的附图标号用于附图中的相似特征(在适当的情况下)。
现在将描述本发明的优选实施方案。
图2示出了示例性片上系统(SoC)图形处理系统8,其包括主机处理器,该主机处理器包括中央处理单元(CPU)1、图形处理器(GPU)2、显示处理器3和存储器控制器5。示例性数据处理系统还可以包括视频引擎(图2中未示出)。如图2所示,这些单元经由互连线4进行通信并且具有对片外存储器6的访问权限。在该系统中,图形处理器2将渲染待显示的帧(图像),然后显示处理器3将这些帧提供给显示面板7以用于显示。
在此系统的使用中,在一个或多个主机处理器(CPU)1上执行的应用9(诸如游戏)将例如需要在显示面板7上显示帧。为此,该应用将为例如在CPU 1上执行的图形处理器2向驱动器10提交适当的命令和数据。驱动器10然后将生成适当的命令和数据,以使图形处理器2渲染适当的帧以用于显示并将那些帧存储在适当的帧缓冲区中,例如存储在主存储器6中。然后,显示处理器3将这些帧读取到用于显示的缓冲区中,然后从该缓冲区中读取这些帧并将其显示在显示器的显示面板7上。
在本实施方案中,图形处理器2在生成诸如用于显示的图像的输出时执行处理诸如三角形的图形基元的图形处理流水线。图形处理流水线包括并执行与图1所示的图形处理序列中示出的那些操作类似的操作,但是在本实施方案中,并且如下面将进一步讨论的,基元装配过程可以组合个别基元以按照本发明的方式装配组合(融合)基元。
图3示意性地示出了本实施方案中的图形处理器2和当生成输出时由图形处理器2执行的图形处理流水线的处理序列。
图3示出了主要元件和流水线阶段/电路。如本领域的技术人员将理解的,可存在图形处理器和处理流水线的在图3中未示出的其他元件。此处还应该指出的是,图3仅是示意性的,并且例如在实践中,即使所示的功能单元和流水线阶段在图3中被示意性地示出为个别阶段,但它们也可共享重要的硬件电路。还应当理解,如图3所示的图形处理器和处理流水线的阶段、元件和单元等中的每一者(除非另外指示)可根据需要来实现,并且将相应地包括例如用于执行所需的操作和功能的适当电路系统、电路和/或处理逻辑部件等。
如图3所示,再次针对要生成的输出,将一组场景数据30提供到图形处理器,例如并且优选地通过将其存储在存储器6中而将其提供到图形处理器,该组场景数据尤其包括顶点集合(每一顶点具有与其相关联的一个或多个属性,诸如位置、颜色等)、引用顶点集合中的顶点的索引集合以及指示将如何在生成输出时将顶点索引装配成用于处理的基元的基元配置信息,接着可由图形处理器2从该存储器读取该组场景数据。
此场景数据可以由需要生成输出的应用(和/或响应于来自应用的命令的驱动程序)提供,并且可以例如包括针对所讨论的输出的顶点、索引等的完整集合,或者例如用于针对所讨论的输出要处理的相应绘制调用的相应不同顶点集合、索引集合等。当然,其他布置将是可能的。
然后,在本实施方案中,“早期”基元装配阶段(电路)31操作以基于所提供的基元配置信息使用所提供的引用顶点的索引集合来装配用于处理的基元,以生成经装配基元序列,每个基元在此阶段处包括用于基元的标识符和用于基元的一个或多个顶点索引的集合。下文将更详细地讨论该操作。
来自基元装配阶段(电路)31的经装配基元接着用以触发对经装配基元的顶点的属性的获取和顶点处理(着色)32。在本实施方案中,在此阶段触发并执行顶点位置的获取以及顶点的位置从例如初始定义顶点的“模型”空间到例如生成输出图像的“屏幕”空间的变换(但是在图形处理的稍后阶段触发并执行任何其他顶点属性的获取和着色)。同样,下面将更详细地讨论此操作。
然后,存在“后期”基元装配阶段(电路)33,其通过将由早期基元装配阶段(电路)31输出的基元与来自顶点处理32的对应的所获取和着色的顶点属性相关联来(且特定来说使用用于那些基元的索引)从由早期基元装配阶段(电路)31输出的基元序列装配用于进一步处理的基元,以提供经装配基元序列,每个基元包括用于基元的标识符和用于基元的顶点的相关所获取(和着色)顶点属性(以及任何其他所获取数据)。同样,下文将更详细地讨论此操作。
所需要的其他顶点属性(变动),诸如颜色、透明度等,将稍后(例如在拼接阶段(拼接器))在流水线中被获取(并且在必要时被“顶点着色”)。
具有从后期基元装配32获取和处理的顶点属性(位置)的经装配基元首先被传递给拼接器(拼接电路)34以进行处理。(就这一点而言,假设本实施方案中的图形处理器2是基于图块的图形处理器,并且因此生成要彼此单独地生成的总体输出(例如,帧)的相应输出图块,用于总体输出的图块集合然后被适当地组合以提供最终的总体输出。)
拼接器34执行“拼接”的过程以将经装配基元分配给用于相应渲染输出区域(面积)的基元列表,该渲染输出区域(面积)然后被用于标识应当针对要渲染的每个图块渲染的基元以生成输出数据(其可以例如是要渲染以供显示的帧)。例如,可以使用基元列表构建单元来实现拼接器34,该基元列表构建单元将经装配基元作为其输入,使用该数据来构建基元列表,并且将基元列表存储在存储器中。拼接器还可以剔除不可见的某些基元。
光栅化阶段(电路)(光栅化器)35将来自正渲染的图块的基元列表的基元(包括其顶点)作为其输入,将基元光栅化为片段,且将片段提供到片段处理阶段(电路)36,该片段处理阶段(电路)在此实施方案中包括着色器执行引擎(着色器核心)。着色器执行引擎是通过执行从光栅化引擎35接收的片段的片段着色软件例程(程序)来执行片段着色的可编程执行单元。
着色的每个图形“片段”可以对应于最终显示中的单个像素(图片元素)(因为像素是最终显示中的奇点,因此图形处理器所操作(渲染)的“片段”与显示的像素之间通常存在一对一映射)。然而,可能存在片段与显示器像素之间不存在一一对应的情况,例如,在显示最终图像之前对经渲染的图像执行诸如下采样的特定形式的后处理的情况下。
将借助于一个或多个执行线程来处理每个片段,该一个或多个执行线程将执行针对所讨论的片段所讨论的着色器程序的指令。通常,将存在各自同时(并行)执行的多个执行线程。
片段处理36的输出(渲染的片段)被写入到图块缓冲区37。一旦已经完成了对所讨论的图块的处理,则将该图块写入存储器中的输出数据数组38,并且处理下一个图块,以此类推,直到已经生成了完整的输出数据数组。然后该过程将继续进行到下一个输出数据数组(例如帧),以此类推。
输出数据处理38通常可以是旨在用于在显示设备(诸如屏幕或打印机)上显示的帧的图像,但也可例如包括旨在用于稍后渲染遍历的中间渲染数据(也称为“渲染到纹理”输出)等。
如上文所讨论,本发明和当前实施方案特别涉及基元装配过程,并且特别涉及将根据所提供的基元配置信息定义的个别基元组合成单个组合基元作为基元装配过程的一部分的能力。
在本实施方案中,出于说明性目的,假设所有基元最初被定义为三角形,且基元装配过程操作以(潜在地)将多对个别三角形组合(融合)在一起以形成三角形对。当然,个别基元和组合基元的其他配置将是可能的。
在本实施方案中,当两个个别三角形共享边时,基元装配过程操作以将这两个个别三角形组合(融合)成组合“三角形对”基元。
图4示出了此操作并示出了示例性渲染输出100,该渲染输出包括要显示的帧,具有第一对三角形101、102和第二对三角形103、104,它们将在基元装配状态下分别被组合成相应的组合(融合)“三角形对”基元105、106。
更具体地,如图4所示,个别三角形101被定义为包含顶点0、1、2,并且个别三角形102被定义为包含顶点1、2、3。因此,这些三角形共享具有顶点索引1、2的顶点之间的边,且因此可组合为具有该共享边且使用四个顶点0、1、2、3的单个三角形对。相应地,三角形103和104共享顶点4和5之间的边,并且因此可以再次被装配为共享该边并且使用顶点4、5、6和7的组合(融合)三角形对基元。
图4还将输出帧100示为被细分成用于渲染过程的相应图块107。
本实施方案涉及并使用所谓的“基于图块的”渲染。在基于图块的渲染中,二维渲染输出(即,渲染过程的输出,诸如待显示的输出帧)被渲染为多个较小面积的区域,通常称为“渲染图块”。在此类布置中,渲染输出通常被划分(按面积)为规则大小和形状的渲染图块(它们通常为矩形,例如正方形)。(通常用于“拼接”和“基于图块”的渲染的其他术语包括“分块”(渲染图块被称为“组块”)和“存储桶”渲染。下文将出于方便使用术语“图块”和“拼接”,但应理解,这些术语旨在涵盖所有另选和等效的术语和技术,其中渲染输出被渲染为多个较小面积区域。)
在基于图块的图形处理流水线中,将正产生的渲染输出的几何(基元)分类到渲染输出面积的区域中,以便允许标识针对渲染输出的给定区域需要进行处理的几何(基元)。该分类允许标识针对渲染输出的给定区域需要进行处理的基元(以便例如避免不必要地渲染实际上不存在于区域中的基元)。该分类过程产生了针对渲染输出的不同区域待渲染的基元列表(本文称为“基元”列表,但也通常称为“多边形”或“图块”列表)。
一旦已针对所有渲染输出区域准备了基元列表,每个渲染图块就通过光栅化和渲染针对对应于渲染图块的渲染输出的区域列出的基元来处理。
针对渲染输出的区域准备基元列表的过程因此基本上涉及确定应当针对给定渲染输出区域处理的基元。该过程通常通过确定(以期望的精度水平)与所讨论的渲染输出区域相交(即,将(至少部分地)出现在其中)的基元,然后准备这些基元的列表以供图形处理系统将来使用来执行。因此,对于待处理的每个基元,图形处理器读入相关联顶点数据,将顶点位置至少转换为屏幕空间(顶点着色),然后使用每个基元的经着色顶点位置来确定基元至少部分地覆盖渲染输出的哪一(哪些)区域(并且因此应被渲染)。
此处应当注意,在基元落入多于一个渲染输出区域的情况下,如将经常发生的情况,其被包括在其所落入的每个区域的基元列表中。针对其准备基元列表的渲染输出区域可以是单个渲染图块,或一组多个渲染图块等。
实际上,每个渲染输出区域可被视为具有料格(bin)(基元列表),发现落入(即,相交)该区域内的任何基元都被放置在该料格中(并且实际上,以此方式在逐个区域的基础上对基元进行分类的过程通常称为“分格(binning)”)。
以这种方式准备的基元列表然后可被写出(例如)到存储器,并且一旦拼接操作完成,使得已准备所有基元列表(针对所有渲染输出区域的所有基元),则然后可由图形处理器使用基元列表以执行渲染图块的实际渲染,其中存储在基元列表中的信息相应地用以在生成期望的渲染输出(例如,以显示帧)时标识待针对每个渲染图块待渲染的基元。
图5进一步示出以本实施方案的方式将个别三角形组合成三角形对。图5A示出了共享边的两个顺时针三角形,这两个顺时针三角形可以被组合成单个三角形对。图5B同样示出一对顺时针三角形,其可组合成单个组合三角形对,但与图FA所示的三角形共享不同边。图5C示出了共享边且可相应地组合成组合三角形对的顺时针和逆时针三角形。
在本实施方案中,早期基元装配阶段(电路)31(例如,如图3中所示出)被配置为并且操作以确定待装配的相应对三角形是否可组合(融合)成组合三角形对,且如果是,则输出单个组合经装配三角形对基元,而不是将三角形作为经装配个别三角形输出。
为此,在本实施方案中,早期基元装配过程首先操作以基于所提供的基元配置信息从用于正生成的输出的顶点索引集合初始地装配个别三角形基元,但接着比较正用于相应连续对个别三角形基元的顶点以确定该基元实际上是否共享边。当确定基元确实共享边(即,具有共同的两个顶点)时,则早期基元装配过程(电路)输出组合三角形对基元而不是个别三角形。
图6示意性地示出了在本实施方案中就这一点而言的早期基元装配阶段(电路)31的操作。
如图6所示,早期基元装配阶段(电路)将操作以使用且基于正生成的输出的基元配置信息从用于正生成的输出的顶点索引集合初始地装配个别三角形(三角形基元)(步骤110)。
如图6所示,早期基元装配过程对序列中的前一三角形111进行缓冲,使得它可以与序列中的(当前)三角形112进行比较,并且由此确定序列中的当前三角形112是否可以被组合以与序列中的前一三角形111形成三角形对(步骤113)。
为了确定当前和前一三角形是否可被组合并作为组合三角形对输出,早期基元装配过程(在步骤113中)比较用于正被考虑的两个三角形的顶点索引以确定该三角形是否具有共同的两个顶点。
当该三角形具有共同的两个顶点时,假设三角形共享由两个共享顶点形成的边,因此该三角形可以作为组合三角形对输出。在这种情况下,如图6所示,经缓冲的前一基元111和当前基元112作为单个组合(融合)基元被输出,然后被“清除”以使用序列中的下一基元重新开始比较过程。
另一方面,如果三角形具有少于两个共同的顶点,则它们不能被组合,并且因此该对的第一基元(前一基元111)输出其个别基元,并且当前基元112被缓冲以用于与序列中的下一基元进行比较(如图6所示)。
因此,例如考虑图4所示的示例性三角形,早期基元装配阶段将首先将具有顶点0、1、2的第一三角形101装配为个别三角形,并将其缓冲为前一基元111。然后,该早期基元装配阶段将装配具有顶点1、2、3的第二三角形102作为当前基元112,并且比较这两个三角形的顶点,从而标识它们具有共同的顶点1和2。在这种情况下,早期基元装配阶段然后将输出三角形101和102作为具有四个顶点0、1、2、3并且共享顶点1和2之间的边的单个组合三角形对105,如以上所讨论。(关于图4所示的相应三角形103和104的操作将是类似的。)
将重复此比较和输出过程,直到已考虑用于输出的(如由基元配置信息所定义的)所有个别三角形为止。
在本实施方案中,早期基元装配阶段(电路)(至少)为它所装配的每个基元输出用于该基元的标识符以及用于该基元的顶点的顶点索引。因此,在输出三角形基元的情况下,早期基元装配过程将输出用于基元的标识符以及三个顶点索引,从而指示所讨论的三角形的顶点。
在组合三角形对基元的情况下(其中早期基元装配过程已确定一对个别三角形可被组合以作为三角形对基元输出),则早期基元装配过程再次输出用于组合三角形对基元的标识符以及用于待用于三角形对基元的顶点的顶点索引。在这种情况下,标识符包括已组合以形成三角形对的两个个别三角形的标识符,且将存在指示待用于三角形对的顶点的四个(而非三个)顶点索引(因为(例如)如图4和图5中所示出,每个三角形对将使用四个不同顶点)。
在本实施方案中,当输出组合三角形对基元时,早期基元装配过程还为该组合基元提供并包括并输出该组合基元的重建信息集合,该重建信息集合提供从所定义的三角形对基元重建相应三角形(三角形基元)所必需的信息。
(如下文将进一步讨论,申请人已认识到通常将需要将组合三角形对基元重新划分成其组成个别三角形以用于图形处理流水线的稍后阶段。为组合三角形对基元提供的重建信息允许这样做。)
在本实施方案中,为一个(和每个)组合三角形对基元提供的基元重建信息包括对该对中的每个个别三角形的哪个边是共享边的指示,以及组成组合三角形对的第二个三角形的旋转(因为第一个三角形的环绕由顶点顺序给出)。
如图5A、图5B、图5C所示,例如,可以组合具有不同旋转配置的相应三角形,并且还可以是这样的情况:相应对三角形可以与其他相应对三角形共享不同(相对)的边。图7进一步示出了这一点,并且示出了多对三角形可以共享边的不同方式,并且三角形的环绕可以是相同或相反的方向。
为组合(融合)三角形对基元提供的基元重建信息允许确定组成组合三角形对的个别基元的特定共享边和旋转配置。
就这一点而言,将有可能限制准许形成组合基元的可能的共享边配置的数量(例如,限制到图7所示的潜在配置的子集)(例如,可以标识特定共享边配置对于特定类型的内容相对稀少)。这可接着减少需要在基元重建信息中指示的不同边组合的数量,从而可减少所需要的基元重建信息的量。
就这一点而言,还可以旋转组成三角形对的个别三角形中的一个或两个三角形,以减少需要被指示的不同边组合的数量,从而可减少所需要的基元重建信息的量。例如,这可以在单个三角形的取向对整体输出没有任何影响的情况下进行(使得然后从其初始定义的顶点配置旋转三角形是“安全的”)。
图8更详细地示出了图3所示的图形处理器2的各种阶段以及它们在本实施方案中的操作。
如图8所示,早期基元装配过程和电路31包括索引获取器(索引获取电路)40,该索引获取器(索引获取电路)从为所生成的输出所定义和提供的(所存储的)顶点索引数组中获取并输出索引序列(流)41。
(如图8所示,同一顶点索引可以在用于该输出的索引序列41中出现一次以上。也可以是这样的情况:用于输出的顶点集合中的一些顶点实际上将不被包括在用于输出的索引序列中。)
索引获取器40向早期基元装配阶段(电路)31提供索引序列41,该早期基元装配阶段(电路)根据定义要装配的基元类型(例如,经装配基元是三角形、三角形条带、三角形扇、点还是线等形式)的基元配置信息53,从由索引获取器40提供的索引流41装配完整的基元43。此基元配置信息(基元类型定义)53可以例如作为用于正在生成的输出的描述符(元数据)的一部分来提供。
如图8所示,早期基元装配阶段(电路)31包括共享边检测电路58,该共享边检测电路执行图6所示的过程以标识可组合且作为组合三角形对基元输出的相应三角形基元。
早期基元装配阶段(电路)31可操作以从输入的索引流41输出完整的经装配基元的序列43。
在组合三角形对基元的情况下,如图8所示,早期基元装配阶段(电路)31输出用于组合三角形对基元的标识符,包括组成三角形对的个别三角形基元的标识符(其将为个别三角形基元的相应序列号)、来自对应于用于将用于三角形对基元的顶点的索引的索引顶点流的顶点索引序列,以及用于三角形对基元的重建信息集合。
在单个个别三角形(未示出)的情况下,由早期基元装配电路31输出的(完整的)基元包括以基元的序列号的形式的用于基元的标识符,以及来自输入索引顶点流的顶点索引序列,其对应于用于要用于基元的顶点的索引。
在本实施方案中,早期基元装配电路31可操作以在此阶段丢弃任何退化或不完整基元,使得将仅输出完整基元。如果需要,早期基元装配电路31还可操作以将较复杂基元细分成较简单基元(诸如三角形、线或点)以供输出。
还应当注意,在此阶段,只有提供给早期基元装配电路(阶段)的索引和基元配置信息将已经从存储器中获取。在该过程中的此时,没有顶点属性已被获取或处理(顶点着色)。
来自早期基元装配阶段(电路)31的完整装配基元的序列43被提供给早期基元装配滤波器阶段(电路)44。EPA过滤器44操作以确定(检查)用于由早期基元装配阶段31输出的经装配基元的索引所指示的顶点的位置是否已经存储在后期基元装配阶段(电路)33的后期基元装配缓冲区54中。
如下文将进一步讨论,后期基元装配阶段/电路33充当“后期”基元装配阶段,其将经变换位置添加到由早期基元装配阶段/电路31输出的经装配基元,且包括存储用于最近使用的顶点集合的经变换位置的缓冲区54。缓冲区54根据“最近使用”协议(诸如在先进先出的基础上)或根据最近最少使用的替换策略来存储给定数量的不同顶点的经变换位置。
EPA过滤器44维持适当变换的位置已存储在后期基元装配缓冲区54中的那些顶点(顶点索引)的记录(诸如位图),且将从早期基元装配阶段31接收的新装配基元的每个顶点索引与该记录进行比较,以确定(由索引指示的)所讨论的顶点的经变换位置是否已存储在后期基元装配缓冲区54中。
对于EPA过滤器44确定当前未存储在后期基元装配缓冲区54中的经装配基元的任何索引,EPA过滤器44将该索引转发到顶点处理阶段(电路)32,以用于待获取的顶点的期望顶点属性(在本实施方案中为位置(位置属性))(以及待执行的属性(在这种情况下为位置)的任何必要顶点处理(顶点着色))。
如图8所示,在本实施方案中,顶点获取/处理阶段(电路)32包括顶点高速缓存45和顶点着色(在这种情况下为位置着色)阶段/电路47。
顶点高速缓存45存储多个顶点的适当变换的位置(位置属性)51,接着可从该适当变换的位置读取到后期基元装配缓冲区54中以用于后期基元装配过程33(此将在下文更详细地讨论)。
顶点高速缓存45还可操作以触发任何必要的顶点处理(用于正被获取的顶点的顶点着色),在这种情况下,如图8所示,该顶点处理将包括借助于位置着色器47对顶点的位置(位置属性)的位置着色以生成适当变换的位置。
位置着色过程(位置着色器)47执行针对顶点的位置(位置属性)的适当位置着色程序,以将位置从其“模型”空间定义变换到正关于其生成输出的适当“屏幕”空间。
着色(经变换)位置接着存储50在变换后位置缓冲区48中,接着可由顶点高速缓存45从该变换后位置缓冲区获取51该着色(经变换)位置。
将借助于一个或多个执行线程来处理(位置着色)每个顶点,该一个或多个执行线程将执行针对所讨论的顶点所讨论的(位置)着色器程序的指令。通常,将存在各自同时(并行)执行的多个执行线程。
位置着色过程(位置着色器)47在图形处理器2的相应可编程处理核心(着色器核心)上执行位置着色程序。
除了生成顶点的适当变换的位置之外,如果需要,位置着色还可以生成其他参数,诸如以下各项中的一项或多项:可变速率着色参数值、点大小、线宽和/或层ID等。在这种情况下,这些附加参数优选地也与经变换位置一起存储在后期变换位置缓冲区48中且从其获取到顶点高速缓存45中。
EPA过滤器44检查用于它从早期基元装配31接收的每个完整基元的每个索引,以确定该顶点的经变换位置属性是否已经存储在后期基元装配阶段(电路)33的缓冲区54中。
因此,如图8所示,EPA过滤器44将EPA过滤器44确定的尚未存储在后期基元装配缓冲区54中的经装配基元的任何索引56转发到顶点获取/处理阶段(电路)32的顶点高速缓存45以执行对顶点高速缓存45中的该索引(该索引所对应的顶点)的查找。
当EPA过滤器44将用于尚未存储在后期基元装配阶段缓冲区54中的顶点的索引转发到顶点高速缓存45时,在顶点高速缓存45中执行对该索引的查找,且如果顶点不存在(且尚未被获取)(即,存在对顶点的高速缓存未命中),则顶点高速缓存45(高速缓存控制器)将对(由索引指示的)所讨论的顶点的位置着色请求49发送到位置着色器47以触发对所讨论的顶点的位置着色。
然后,一旦执行了位置着色,则将所讨论的顶点的着色(经变换)位置50存储在变换后位置缓冲区48中。顶点高速缓存45接着从变换后位置缓冲区48获取51所讨论的顶点的经变换位置。此时,该顶点的相关经变换位置将存在于顶点高速缓存45中,且因此可从该顶点高速缓存获取到后期基元装配阶段/电路33的缓冲区54中。
对于EPA过滤器44确定的已存在于后期基元装配缓冲区54中的任何顶点(索引)(即,后期基元装配阶段/电路33已存储所讨论的顶点的经变换位置),则不将索引发送到顶点高速缓存45(不在该顶点高速缓存中查找)。
以此方式,仅针对经变换位置尚未由后期基元装配阶段/电路33存储的那些顶点触发位置着色以及将经变换位置加载到顶点高速缓存45中。
如图4所示,EPA过滤器44还将从早期基元装配31接收的经装配基元序列43发送52到后期基元装配阶段/电路33。
后期基元装配阶段/电路33将序列43中的每个基元与所讨论的基元的顶点的对应经变换位置57相关联,且因此输出经装配基元的对应序列55,在此阶段处,如图8所示,对于组合三角形对基元,该经装配基元的对应序列现在各自包括基元标识符、组合基元的顶点的着色(经变换)位置的序列以及用于组合三角形对基元的重建信息。
在单个三角形基元的情况下,后期基元装配阶段/电路33将相应地输出基元标识符和基元的着色(变换)位置序列(未示出)。
如图8所示,包括由后期基元装配阶段/电路33生成的变换位置的经装配基元序列55然后被提供给图形处理器2的拼接阶段(拼接电路)60。
如图8所示,拼接过程首先包括剔除和边界框生成器阶段/电路61,接着是分格器和迭代器阶段/电路62。然后存在基元(多边形)列表写入电路63,其将基元写入到例如存储器中的基元列表中以供将来使用。
剔除和边界框生成器61针对由后期基元装配阶段/电路33输出的经装配基元生成适当边界框,且还操作以基于基元的潜在可见性来标识可从进一步处理剔除的任何基元。在本实施方案中,此可见性剔除使用正面/背面剔除、平截锥体剔除和样本感知剔除中的一者或多者。
边界框生成使用所提供的用于经装配基元的位置来生成用于基元的适当边界框。在本实施方案中,使用处于输出为了渲染目的而被划分成的个别图块的分辨率下的边界框,但是其他布置当然也是可能的。
在本实施方案中,边界框生成器61针对组合三角形对基元的每个个别基元生成单独边界框(而非针对组合三角形对基元作为整体生成单个组合边界框)。
图9示出了这一点,并且示出了组成组合三角形对904的相应个别三角形902、903的相应单独边界框900、901的导出。出于说明性目的,图9示出了与组成组合三角形对的个别三角形的顶点对准的边界框900、901。然而,如以上所讨论的,在本实施方案中,当执行剔除并将三角形添加到基元列表时针对个别三角形所确定和使用的实际边界框将处于渲染图块的分辨率下。因此,例如,在这种情况下,用于三角形902的边界框将包括图块(1,2)(2,2)(1,3)(2,3),并且用于三角形903的边界框将包括图块(2,2)(3,2)、(2,3)和(3,3)。
在个别三角形的情况下,将相应地生成该单个三角形的单个边界框。
在组合三角形对基元的情况下,本实施方案中的剔除和边界框生成器61确定组成组合三角形对基元的个别三角形的个别边界框在基元列表区域(例如,渲染图块)的分辨率下是否相同(即,该边界框在它们(至少部分地)落入其中的基元列表面积方面是否相同)。在此基础上,当组成组合三角形对基元的个别三角形的两个边界框相同时,则以组合三角形对基元的形式留下组合三角形对基元。另一方面,在组成组合三角形对基元的个别三角形的个别边界框在基元列表区域分辨率的级别上不相同(没有充分对准)的情况下,则组合三角形对基元被重新划分回其组成个别三角形。
因此,如图8所示,对于图4所示出的示例组合基元,组合三角形对基元105将在剔除和边界框生成之后维持为组合三角形对基元,但组合三角形对106将细分回其组成个别三角形103、104,因为个别三角形103和104具有非对准的边界框(在渲染图块的解析度下)。
(可见性)剔除过程确定基元在输出中是否潜在地可见(且因此需要进一步处理)。
在个别三角形的情况下,当从剔除测试确定个别三角形不可见时,剔除个别三角形,但在其他情况下保持个别三角形且传递以供处理。
在组合基元的情况下,剔除过程针对组成组合基元的每个个别基元确定其是否(潜在地)可见。在组成组合基元的个别基元中无一者经确定为不可见的情况下,接着将组合基元保持为组合基元,其中单个边界框用于组合基元。相应地,在组成组合基元的所有个别基元被确定为不可见的情况下,剔除整个组合基元。
在从剔除过程确定组成组合三角形对基元的个别三角形中的一者而非两者可被剔除的情况下,向组合三角形对基元提供可剔除组合三角形对基元的个别三角形的指示(该指示已与该组合三角形对基元相关联),使得可在处理的稍后阶段剔除个别三角形(例如,当组合三角形对基元在处理的稍后阶段细分回其组成个别三角形时)。
然后,当三角形对基元被重新划分回其个别三角形基元时,然后从进一步处理中剔除可被剔除的三角形。因此,在这种情况下,一旦将组合三角形对基元细分,便将输出对应于未被剔除的组合三角形对基元的个别三角形的单个个别三角形基元,而非输出一对个别三角形基元。
如图8所示,来自剔除和边界框生成的输出64针对每个基元包括用于基元的标识符、用于基元的顶点索引集合、用于基元的边界框信息(在当前情况下,基元属于哪一或哪些图块的形式),且在组合三角形对基元的情况下,包括用于基元的重建信息。
接着将具有基元的边界框的该基元传递到分格迭代器阶段/电路62,该分格迭代器阶段/电路操作以使用基元的边界框(通过将基元的边界框与相应基元列表区域进行比较)来标识基元应在哪些基元列表中列出,且输出65相应基元及其目标基元列表(料格)。如图8所示,在此阶段,在基元将被包括在多个基元列表中的情况下,相应基元被列出多次,对于其将被列出的每个基元列表列出一次(并且具有所讨论的基元列表的对应标识)。
基元(多边形)列表写入阶段/电路63接着将基元写入到存储器66中的相应基元(多边形)列表中。如图8所示,可以在将基元列表写入存储器之前对其进行压缩。
图10和图11还示出了在图8中所示的处理序列中为每个经装配基元提供的数据,直到完成拼接过程和将基元(多边形)列表写入存储器为止。
图10示出了一对三角形的示例性序列,该对三角形可以是组合三角形对并且作为组合三角形对被装配并写入到基元列表。
如图10所示,并且如上文所讨论,索引获取器40将首先获取用于要生成的输出的索引序列41。早期基元装配器31接着(在此示例中)将从该索引序列装配组合三角形对,且针对该组合三角形对(假设其由基元P0和P1组成)输出用于该组合三角形对基元的标识符200、用于该组合三角形对基元的四个顶点的索引201以及用于该组合三角形对基元的重建信息集合202。
如图10所示,在本实施方案中,用于组合三角形对基元的基元重建信息包括对在组合三角形对基元中共享的两个个别三角形的相应边的指示,以及对该对的第二基元的环绕的指示(因为顶点索引的顺序定义该对的第一基元的环绕)。当然,基元重建信息的其他布置将是可能的。
顶点获取过程32接着将获取尤其经装配组合三角形对基元的经变换顶点位置,且将这些提供到后期基元装配33,如图10所示,该后期基元装配将输出用于组合基元的对应数据集合,该数据集合包括用于组合三角形对基元的标识符200、用于组合基元的顶点索引集合201、用于组合基元的重建信息202以及组合基元的经适当变换的顶点位置204。
边界框生成器和剔除器61执行剔除并创建边界框,并且(假设组成组合三角形对基元的个别基元中的至少一个基元通过剔除测试,使得组合三角形对基元将被进一步处理)为组合三角形对基元输出用于组合三角形对基元的标识符200、用于组合基元的顶点索引集合201以及用于组合基元的重建信息202,连同用于组成组合基元的每个个别三角形的可见性/剔除指示符205以及用于组成组合三角形对的每个个别三角形的边界框信息206(在拼接过程的此阶段之后不需要顶点位置)。
分格器/迭代器62取得组合三角形对基元的边界框并确定应当在哪些基元列表(料格)中列出基元,并且为组合三角形对基元输出用于三角形对基元的标识符200、用于组合三角形对基元的顶点索引集合201、用于组合三角形对基元的重建信息202、用于组成组合基元的每个个别三角形的可见性/剔除指示符205以及基元应当被列入的(一个或多个)基元列表(料格)集合207(不再需要边界框)。
命令压缩器63每基元列表(料格)接收一次组合三角形对基元,编码(压缩)该基元并将其写入对应的基元列表中。
图11示出了在如下情况下的对应处理:在早期基元装配阶段确定两个三角形基元P0、P1不能被组合为组合三角形对基元,并且因此替代地被处理为相应个别三角形。因此,在这种情况下,如图11所示,为个别基元单独地生成和维护用于个别基元的相应信息,并且不存在与个别基元相关联的重建信息(否则,该处理如参考图10所述)。
直到并且包括基元列表66的准备和写入的图8中的上述处理可以被认为是在生成输出时执行的整个图形处理序列和图形处理流水线的适当几何处理(几何阶段)的序列。
图8还示出了一旦已经准备好基元列表就在本实施方案中执行的后续处理阶段,并且该后续处理阶段可以相应地被认为是在生成输出时执行的片段处理阶段(片段阶段)的序列。
由于本实施方案使用基于图块的渲染,因此针对单独生成的输出的相应图块执行这些片段阶段。因此,图8示出的片段阶段的序列将针对每个相应的图块执行,该图块将针对所讨论的输出进行处理。
如图8所示,这些“片段阶段”以基元(多边形)列表读取器阶段/电路70开始,读取应用于正被处理的图块的一个或多个基元列表66且输出(提供到后续处理阶段)待针对所讨论的图块处理的基元的序列71。
同样,在此阶段,对于组合基元,如图8所示,由基元列表读取器70提供的用于组合基元的信息将包括用于基元的标识符、用于基元的顶点的索引以及用于基元的重建信息。对于单个三角形,将同样提供用于该三角形的标识符和顶点索引。
为了允许组合三角形对基元的潜在存在,基元列表读取器70能够读取和解码并且重新生成(并且在必要时解压缩)包括在基元列表中的组合基元。
接着存在顶点获取器阶段72,其可操作以获取由基元列表读取器70针对正被处理的图块提供的基元的顶点属性,且特定来说,适当顶点着色位置。此顶点获取过程可简单地从存储器获取所需属性,并且/或者在需要时还触发适当顶点着色以生成该属性的适当顶点着色版本。
为了允许组合三角形对基元的潜在存在,顶点获取器72被配置为能够根据需要获取组合基元的顶点。
顶点获取器将基元序列74提供给三角形(基元)设置阶段/电路73,该三角形设置阶段/电路执行任何所需的基元(三角形)设置处理,诸如为基元的边导出线方程。
如图8所示,顶点获取器提供基元序列,在组合基元的情况下,该基元序列包括用于基元的相应基元标识符、组合基元的顶点的适当顶点着色属性(在这种情况下为位置)以及基元的重建信息。(同样,对于三角形基元,将提供标识符以及顶点着色位置。)此信息然后被基元(三角形)设置阶段/电路73用来导出随后的光栅化和渲染过程所需要的所需基元信息。
为了允许组合三角形对基元的潜在存在,基元(三角形)设置阶段被配置为仅导出用于组合基元的共享边的任何必要线方程一次,且接着提供用于组成组合三角形对基元的两个个别三角形的该共享边的线方程。
一旦对基元执行了基元(三角形)设置,就将基元提供给光栅化器75以用于光栅化成图形片段,然后将这些片段提供给流水线的适当的渲染(片段处理)阶段/电路76。所执行的渲染(片段处理)可包括可针对图形处理流水线执行的任何合适和期望的渲染(片段处理)。该渲染优选地包括至少执行片段的片段着色。
光栅化器和渲染(片段处理)可以以任何合适和期望的方式来执行,诸如并且优选地以针对所讨论的图形处理器和图形处理流水线的正常方式来执行。
然后将所渲染的片段数据适当地输出到存储器(未示出),然后可以从该存储器使用所渲染的片段数据,例如用于显示或其他目的。(当图形处理器和流水线执行基于图块的图形处理时,经处理的片段数据将经由适当的图块缓冲区(未示出)被写出到存储器。)
如图8所示,在本实施方案中,有可能在图形处理的各种阶段将组合三角形对基元细分(分裂)回其组成个别三角形。
如上文所讨论,这在上文的剔除和边界框生成阶段61处是可能的(取决于组合三角形基元的边界框和/或剔除结果(如上文所讨论))。
在本实施方案中,还可以在压缩和基元列表写入阶段/电路63处、在基元列表读取器70处、在顶点获取器72处以及在基元(三角形)设置阶段/电路73处将组合三角形对基元细分回其个别三角形。流水线可被配置为始终在这些阶段中的一个或多个阶段处将组合基元细分回其组成个别三角形,或该过程可取决于所满足的某些条件(如剔除和边界框生成潜在组合基元分裂的情况)。
在本实施方案中,组合基元在被提供给光栅化和渲染过程之前总是被细分回其组成个别基元。这优选地在光栅化器之前的处理序列中尽可能迟地完成(即,使得在可能的情况下通过流水线序列尽可能长地保持组合基元作为组合基元),并且因此优选地在组合基元已经经受基元(三角形)设置73之后完成。
这里应当注意,尽管出于清楚的目的,图8和其他附图仅示出了几个基元、顶点、索引、位置等,但是对于给定输出的基元、顶点、索引的数量可以并且通常将显著地更高。
从上文可见,至少在本发明的优选实施方案中,本发明可提供更有效的图形处理流水线,尤其是关于通过流水线对基元的处置和处理。在本发明的优选实施方案中,这至少通过将个别基元组合成组合基元(在适当情况下这样做)且接着使组合基元通过图形处理流水线的阶段来实现。此可接着(例如)减少需要由图形处理流水线的相应阶段处置的基元的数量,借此增加那些阶段的吞吐量和效率,减少可能需要包括在基于图块的图形处理系统中的基元列表中的基元的数量等。
Claims (21)
1.一种操作图形处理器的方法,所述图形处理器执行图形处理流水线以生成输出,在所述输出中提供将用于在生成所述输出时要处理的基元的顶点集合,以及引用所述顶点集合中的顶点的顶点索引集合和指示将如何在生成所述输出时将所述顶点索引装配成用于处理的基元的基元配置信息;
所述方法包括:
基于为所述输出提供的所述基元配置信息来生成根据为所述输出提供的所述顶点索引集合在生成所述输出时要处理的一个或多个经装配基元的序列,所述经装配基元的序列中的每个经装配基元包括用于所述基元的标识符和用于所述基元的一个或多个顶点索引的集合;以及
将所述一个或多个经装配基元的序列提供到正由所述图形处理器执行的所述图形处理流水线的稍后阶段以供处理;
其中所述基于为所述输出提供的所述基元配置信息来生成根据为所述输出提供的所述顶点索引集合在生成所述输出时要处理的一个或多个经装配基元的序列包括:
确定将根据所述基元配置信息被装配为个别基元的基元是否能够与用于所述输出的至少一个另一基元组合以提供用于包括在所述要处理的一个或多个经装配基元的序列中的单个组合基元;以及
当确定将根据所述基元配置信息被装配为个别基元的所述基元能够与用于所述输出的至少一个另一基元组合以提供用于包括在所述要处理的一个或多个经装配基元的序列中的单个组合基元时,在所述要处理的一个或多个经装配基元的序列中包括对应于所述基元的单个组合基元。
2.根据权利要求1所述的方法,包括:
当不同于确定根据所述基元配置信息的个别基元能够与根据所述基元配置信息的另一基元组合以被装配为用于包括在所述要处理的经装配基元的序列中的单个组合基元时,将所述基元作为个别基元包括在所述要处理的经装配基元的序列中。
3.根据权利要求1或2所述的方法,包括:
根据所述基元配置信息装配第一个别基元;
根据所述基元配置信息确定所述基元是否能够与所述序列中的下一个个别基元组合以提供用于包括在所述要处理的一个或多个经装配基元的序列中的单个组合基元;以及
当确定两个所述个别基元能够被装配为单个组合基元时,将表示所述两个个别基元的单个组合基元包括在用于处理的所述经装配基元的序列中;
以及
当不同于确定所述两个个别基元能够被装配为单个组合基元时,将所述第一个别基元作为由所述基元配置信息定义的个别基元包括在所述经装配基元的序列中。
4.根据权利要求1或2所述的方法,包括:
将已经被组合以形成所述单个组合基元的所述个别基元的相应标识符与包括在所述经装配基元的序列中的组合基元相关联。
5.根据权利要求1或2所述的方法,包括:
将用于所述组合基元的重建信息集合与包括在所述经装配基元的序列中的组合基元相关联,所述重建信息集合允许重建已经被组合以形成所述组合基元的所述个别基元。
6.根据权利要求1或2所述的方法,其中所述图形处理器是基于图块的图形处理器,并且拼接过程生成用于经装配基元的边界框,所述边界框将在确定所述基元应当被列入的一个或多个基元列表时被使用,并且所述方法包括:
生成用于经装配组合基元所对应的每个个别基元的单独边界框;以及
基于用于所述个别基元的所生成的边界框,确定是否将所述组合基元细分回所述组合基元的个别基元以便将所述基元写入到所述基元列表。
7.根据权利要求1或2所述的方法,其中所述图形处理器是基于图块的图形处理器,并且所述拼接过程包括基元剔除过程,并且所述方法包括:
所述基元剔除过程单独地针对组合基元的每个个别基元确定是否能够剔除所述基元;以及
当确定能够剔除组成组合基元的所述个别基元中的一些但不是全部个别基元时,提供对能够剔除组成所述组合基元的所述个别基元中的哪些个别基元的指示;
以及随后:
将所述组合基元划分回所述组合基元的组成个别基元;以及
剔除被指示为能够被剔除的所述个别基元中的任一个别基元。
8.根据权利要求1或2所述的方法,其中所述图形处理流水线包括基元设置阶段,所述基元设置阶段能够操作以在对基元进行光栅化和渲染之前生成用于所述基元的边方程;并且所述方法包括:
所述基元设置阶段针对组合基元仅生成一次用于所述组合基元内的共享边的任何边方程。
9.根据权利要求1或2所述的方法,还包括在渲染所述基元之前将所有组合基元细分回所述组合基元的个别组成基元。
10.根据权利要求1或2所述的方法,其中所述图形处理流水线包括基元设置阶段,所述基元设置阶段能够操作以在对基元进行光栅化和渲染之前生成用于所述基元的边方程;并且所述方法包括:
将由基元装配过程包括在所述经装配基元的序列中的组合基元保持为直到所述基元设置阶段的组合基元,除非在所述图形处理流水线中更早满足将所述组合基元细分回所述组合基元的组成个别基元的条件。
11.一种图形处理器,所述图形处理器能够操作以执行图形处理流水线以生成输出;
所述图形处理器包括:
基元装配电路,所述基元装配电路被配置为:
基于为所述输出提供的基元配置信息来生成根据为所述输出提供的顶点索引集合在生成输出时要处理的一个或多个经装配基元的序列,所述顶点索引集合引用为所述输出提供的顶点集合中的顶点,所述基元配置信息指示将如何在生成所述输出时将所述顶点索引装配成用于处理的基元,所述经装配基元的序列中的每个经装配基元包括用于所述基元的标识符和用于所述基元的一个或多个顶点索引集合;
以及
将所述一个或多个经装配基元的序列提供到由所述图形处理器执行的所述图形处理流水线的稍后阶段以供处理;
其中所述基元装配电路包括:
确定电路,所述确定电路被配置为确定将根据所述基元配置信息被装配为个别基元的基元是否能够与用于所述输出的至少一个另一基元组合以提供用于包括在所述要处理的一个或多个经装配基元的序列中的单个组合基元;和
处理电路,所述处理电路被配置为当确定将根据所述基元配置信息被装配为个别基元的基元能够与用于所述输出的至少一个另一基元组合以提供用于包括在所述要处理的一个或多个经装配基元的序列中的单个组合基元时,在所述要处理的一个或多个经装配基元的序列中包括对应于所述基元的单个组合基元。
12.根据权利要求11所述的图形处理器,其中所述处理电路被配置为:
当不同于确定根据所述基元配置信息的个别基元能够与根据所述基元配置信息的另一基元组合以被装配为用于包括在所述要处理的经装配基元的序列中的单个组合基元时,将所述基元作为个别基元包括在所述要处理的经装配基元的序列中。
13.根据权利要求11或12所述的图形处理器,其中:
所述基元装配电路被配置为首先根据所述基元配置信息装配个别基元;
所述确定电路被配置为根据所述基元配置信息确定个别基元是否能够与所述序列中的相邻个别基元组合以提供用于包括在所述要处理的一个或多个经装配基元的序列中的单个组合基元;并且
所述处理电路被配置为:
当确定两个所述个别基元能够被装配为单个组合基元时,将表示所述两个个别基元的单个组合基元包括在用于处理的所述经装配基元的序列中;
以及
当不同于确定所述两个个别基元能够被装配为单个组合基元时,将所述第一个别基元作为由所述基元配置信息定义的个别基元包括在所述经装配基元的序列中。
14.根据权利要求11或12所述的图形处理器,其中所述处理电路被配置为:
将已经被组合以形成所述单个组合基元的所述个别基元的相应标识符与包括在所述经装配基元的序列中的组合基元相关联。
15.根据权利要求11或12所述的图形处理器,其中所述处理电路被配置为:
将用于所述组合基元的重建信息集合与包括在所述经装配基元的序列中的组合基元相关联,所述重建信息集合允许重建已经被组合以形成所述组合基元的所述个别基元。
16.根据权利要求11或12所述的图形处理器,其中所述图形处理器是基于图块的图形处理器,并且包括被配置为准备用于要生成的输出的区域的基元列表的拼接电路,并且所述拼接电路被配置为:
生成用于经装配基元的边界框,所述边界框将在确定所述基元应当被列入的一个或多个基元列表时被使用;并且
被进一步配置为:
生成用于经装配组合基元所对应的每个个别基元的单独边界框;以及
基于用于所述个别基元的所生成的边界框,确定是否将所述组合基元细分回所述组合基元的个别基元以便将所述基元写入到所述基元列表。
17.根据权利要求11或12所述的图形处理器,其中所述图形处理器是基于图块的图形处理器,并且包括被配置为准备用于要生成的输出的区域的基元列表的拼接电路,并且所述拼接电路被配置为执行基元剔除过程,其中所述拼接电路被配置为:
单独地针对组合基元的每个个别基元确定是否能够剔除所述基元;以及
当确定能够剔除组成组合基元的所述个别基元中的一些但不是全部个别基元时,提供对能够剔除组成所述组合基元的所述个别基元中的哪些个别基元的指示;
并且所述图形处理器被配置为:
随后,将组合基元划分回所述组合基元的组成个别基元;以及
剔除所述组合基元的被指示为能够被剔除的所述个别基元中的任一个别基元。
18.根据权利要求11或12所述的图形处理器,其中所述图形处理器包括基元设置电路,所述基元设置电路能够操作以在对基元进行光栅化和渲染之前生成用于所述基元的边方程,并且所述基元设置电路被配置为:
针对组合基元仅生成一次用于所述组合基元内的共享边的任何边方程。
19.根据权利要求11或12所述的图形处理器,其中所述图形处理器被配置为在渲染所述基元之前将所有组合基元细分回所述组合基元的个别组成基元。
20.根据权利要求11或12所述的图形处理器,其中所述图形处理器包括基元设置电路,所述基元设置电路能够操作以在对基元进行光栅化和渲染之前生成用于所述基元的边方程,并且所述图形处理器被配置为:
将由所述基元装配电路包括在所述经装配基元的序列中的组合基元保持为直到所述基元设置电路的组合基元,除非在所述图形处理流水线中更早满足将所述组合基元细分回所述组合基元的组成个别基元的条件。
21.一种包括计算机软件代码的计算机程序,所述计算机软件代码用于当程序元素在一个或多个数据处理器上运行时执行根据权利要求1或2所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202217989504A | 2022-11-17 | 2022-11-17 | |
US17/989,504 | 2022-11-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118052696A true CN118052696A (zh) | 2024-05-17 |
Family
ID=89225030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311536013.6A Pending CN118052696A (zh) | 2022-11-17 | 2023-11-17 | 图形处理系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN118052696A (zh) |
GB (1) | GB202317250D0 (zh) |
-
2023
- 2023-11-10 GB GBGB2317250.5A patent/GB202317250D0/en active Pending
- 2023-11-17 CN CN202311536013.6A patent/CN118052696A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
GB202317250D0 (en) | 2023-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9619937B2 (en) | Methods and apparatus for processing computer graphics primitives in tile-based graphics rendering system | |
CN107392989B (zh) | 图形处理器和操作方法、图形处理系统和操作方法 | |
US10755473B2 (en) | Graphics processing system | |
CN105321199B (zh) | 图形处理流水线及其操作方法与介质 | |
CN110488967B (zh) | 图形处理 | |
US10607400B2 (en) | Graphics processing systems using a vertex shader to render plural images | |
US9558585B2 (en) | Hidden surface removal in graphics processing systems | |
US9865065B2 (en) | Method of and graphics processing pipeline for generating a render output using attribute information | |
KR102258100B1 (ko) | 텍스쳐 처리 방법 및 장치 | |
US10235793B2 (en) | Graphics processing systems | |
US9519982B2 (en) | Rasterisation in graphics processing systems | |
GB2608094A (en) | Graphics processing | |
US10839600B2 (en) | Graphics processing systems | |
KR102442488B1 (ko) | 그래픽 처리 시스템 및 그래픽 프로세서 | |
US10726610B2 (en) | Efficient graphics processing using metadata | |
CN116777726A (zh) | 图形处理 | |
US11790479B2 (en) | Primitive assembly and vertex shading of vertex attributes in graphics processing systems | |
CN118052696A (zh) | 图形处理系统 | |
KR20190038931A (ko) | 선호된 프리미티브 배치 비닝 및 분류를 갖는 하이브리드 렌더 | |
US20240169464A1 (en) | Graphics processing systems | |
US20240169465A1 (en) | Graphics processing systems | |
GB2600108A (en) | Graphics processing systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |