图形处理系统的制作方法

文档序号:6339061阅读:274来源:国知局
专利名称:图形处理系统的制作方法
技术领域
本发明涉及图形处理系统,并且更具体地涉及图形处理系统中的所谓的“累积缓 (accumulation buffer)” 桑作。
背景技术
如本领域中已知的,在图形处理中存在通常被称为“累积缓冲”的过程。该过程是 作为例如桌面Open GL (开放图形库)标准的一部分的公知特征。“累积缓冲”过程基本上牵涉例如从若干不同视角对“帧”的若干不同版本进行 再现,并且将帧的所有不同再现版本的所期望的加权平均累积在单个缓冲器(“累积缓冲器 (accumulation buffer)”)中。这种所得到的不同帧的“累积缓冲”平均版本然后被用作输 出帧(例如并且典型地,用作将显示的帧)。“累积缓冲”典型地用于模拟许多不同的效果,诸如景深、运动模糊、软阴影和图形保真。使用累积缓冲的一个缺陷在于在现有的实施方式中,需要使用(图形处理器)外 部的全帧浮点缓冲器来充当累积缓冲器。尽管这在功率较大的桌面图形处理系统的情况下 可能是可接受的,但是申请人认识到,这样的布置在诸如用于便携式设备的系统和/或嵌 入式图形处理系统的功率较低的图形处理系统中是不合需要的。实际上,出于该原因和其 他原因,例如Open GLES标准不包括累积缓冲的使用。因此申请人认为,对图形处理系统中的累积缓冲操作和实施仍存在改进的余地。

发明内容
根据本发明的第一方面,提供一种在基于图块(tile)的图形处理系统中提供帧的 若干再现传递(pass)的累积结果作为输出帧的方法,该方法包括
针对输出帧将被划分成的每个图块单独地执行若干再现传递并且累积这些再现传递 的结果,以便针对每个图块生成包括该图块的再现传递的累积结果的输出图块,并且使得 在对其他图块开始该过程之前,至少针对一个图块完成所有再现传递以及这些再现传递的 结果的累积;以及
组合如此生成的输出图块以提供包括帧的若干再现传递的累积结果的输出帧。根据本发明的第二方面,提供一种基于图块的图形处理系统,该系统包括 用于针对输出帧将被划分成的每个图块单独地执行若干再现传递并且累积这些再现
传递的结果的部件,以便针对每个图块生成包括该图块的再现传递的累积结果的输出图 块,并且使得在对其他图块开始该过程之前,至少针对一个图块完成所有再现传递以及这 些再现传递的结果的累积;以及
用于组合如此生成的输出图块以提供包括每个图块的若干再现传递的累积结果的输 出帧的部件。根据本发明的第三方面,提供一种操作基于图块的图形处理系统的方法,包括图形处理系统
针对将输出的帧的第一图块或者第一多个图块集合,对该图块或者单独地对该集合中 的每个图块执行多次再现传递并且累积相应图块或者每个相应图块的这些再现传递的结 果以为该图块或者该图块集合中的每个图块提供表示该图块的多次再现传递的累积结果 的图块输出;以及
向输出再现目标,优选地向帧缓冲器输出该图块或者该图块集合中的每个图块的累积 图块输出;以及 此后
针对将输出的帧的第二图块或者第二多个图块集合,对该图块或者单独地对该集合中 的每个图块执行多次再现传递并且累积相应图块或者每个相应图块的这些再现传递的结 果以为该第二图块或者该第二图块集合中的每个图块提供表示该图块的多次再现传递的 累积结果的图块输出;以及
向输出再现目标,优选地向帧缓冲器输出该第二图块或者该第二图块集合中的每个图 块的累积图块输出;以及
对输出帧的剩余图块重复该过程; 由此
通过在逐个图块的基础上执行若干再现传递并且累积这些再现传递的结果,生成包括 输出帧的若干再现传递的累积结果的输出帧。根据本发明的第四方面,提供一种基于图块的图形处理系统,该系统包括 用于执行如下操作的部件
针对将输出的帧的第一图块或者第一多个图块集合,对该图块或者单独地对该集合中 的每个图块执行多次再现传递并且累积相应图块或者每个相应图块的这些再现传递的结 果以为该图块或者该图块集合中的每个图块提供表示该图块的多次再现传递的累积结果 的图块输出;以及
向输出再现目标,优选地向帧缓冲器输出该图块或者该图块集合中的每个图块的累积 图块输出;以及
用于此后执行如下操作的部件
针对将输出的帧的第二图块或者第二多个图块集合,对该图块或者单独地对该集合中 的每个图块执行多次再现传递并且累积相应图块或者每个相应图块的这些再现传递的结 果以为该第二图块或者该第二图块集合中的每个图块提供表示该图块的多次再现传递的 累积结果的图块输出;以及
向输出再现目标,优选地向帧缓冲器输出该第二图块或者该第二图块集合中的每个图 块的累积图块输出;以及
用于对输出帧的剩余图块重复该过程的部件; 由此
通过在逐个图块的基础上执行若干再现传递并且累积这些再现传递的结果,生成包括 输出帧的若干再现传递的累积结果的用于显示的输出帧。如上文所讨论的,本发明涉及提供作为帧的多次再现传递的累积结果的输出帧, 即涉及“累积缓冲”操作。
然而,不是通过一个接一个地对全部帧进行多次再现并且累积结果来生成“累积 的”输出巾贞,在本发明中在逐个图块的基础上执行累积操作,并且然后组合如此“累积的”图 块以提供“累积的”输出帧。换言之,单独地对每个图块执行多次再现传递和它们的结果的 累积并且然后组合每个单独图块的结果以提供(例如,将被显示的)输出“累积帧”。因而,本发明通过对于给定图块使该图块连续经历多次再现传递并且以适当的 (并且所期望的)方式单独地累积该图块的这些再现传递的结果进行操作。因此实际上,如果考虑在传统的累积缓冲实施方式中,跨越整个帧(即针对帧的所 有图块)执行给定的再现传递以在下一“子帧”开始之前(在然后使整个帧经历下一再现传 递之前)生成给定的“子帧”,则作为替代,本发明中的再现顺序使得在系统移动到下一图块 (或图块集合)并且对该图块(或该图块集合中的图块)执行再现传递序列之前,首先将对给 定图块(或图块集合中的图块)(而非跨越帧的所有图块)一个接一个地执行再现传递序列, 以此类推。因此,实际上,给定图块(或图块集合)的每个“子块”将在另一图块(或图块集合) 开始之前被再现(并且累积)。因此,具体地在本发明中,如上文阐述的,在对输出帧的其他图块开始该过程之 前,至少针对一个图块(并且优选地至少针对一些图块(即针对多个图块))完成再现传递和 这些再现传递的结果的累积。换言之,在本发明中,在继续处理其他图块之前结束一个(或 多个)图块的累积过程,而不是作为整体处理每个整个帧。类似地,在传统的累积缓冲操作中,最终输出累积帧包括一起对该最终输出帧有 贡献的若干子帧的累积,而本发明可被视为针对给定图块处理若干子图块,它们被累积在 一起以提供最终输出累积图块(即然后被输出到帧缓冲器并且与帧的每个其他图块的输出 累积图块组合以给出总体输出帧)。申请人:已认识到本发明的布置可以带来许多优点。首先,由于针对单独图块执行累积操作,因此这消除了对具有用于“累积缓冲”操 作的全帧“累积”缓冲器的需要。而且,如下文将进一步讨论的,本发明允许使用图形处理器自身上的缓冲器(诸如 并且优选地,在任何情况下均将存在的图块缓冲器)实施累积过程。这然后消除了对作为累 积缓冲过程的一部分的任何外部存储器(和外部存储器访问)的需要。这然后可以提供在消 除用于累积缓冲操作的外部存储器带宽方面的显著节约。与使用外部累积缓冲器的传统的 累积器缓冲实施方式相比,这可以导致例如显著的功率使用节约以及增加的再现速度。实际上,申请人认为,与传统的累积缓冲实施方式对比,本发明使得在功率较低的 图形处理系统上(诸如在便携式设备中)高效地实施累积缓冲操作成为可能。而且,促进在 功率较低的例如便携式设备中使用累积缓冲过程将允许这些设备中的显著图形性能提升。如上文所讨论的,本发明旨在被实施在基于图块的图形处理系统中。如本领域中已知的,在基于图块的再现中,再现过程的二维输出阵列或帧(“再现 目标”)(例如并且典型地,其将被显示以显示正被再现的场景)被细分或者划分成多个更小 的区域或者子区域——通常被称为“图块”——用于再现过程。图块(子区域)每个均被(典 型地一个接一个地)分开再现。再现图块(子区域)然后被重组以提供完整的输出阵列(帧) (再现目标)例如用于显示。因此图块可以被认为是再现过程对其进行操作的再现目标区域(输出帧)的细分。在这些布置中,再现目标区域(输出帧)典型地被划分成规则尺寸和形状的图块(它们通常 是例如正方形或矩形),但这不是必需的。通常用于“图块化的(tiling)”和“基于图块的”再现的其他术语包括“片式 (chunking)"(子区域被称为“片(chunk)”)和“小块(bucket)”再现。术语“图块”和“图 块化”在这里为便利而被使用,但是应当理解,这些术语旨在于涵盖所有可选的和等同的术 语和技术。在本发明中出于再现目的而将再现目标(输出帧)划分成的图块可以为任何所期 望的和适当的尺寸或形状。如本领域中示出的,所有图块优选地均为相同尺寸和形状,尽 管这不是必需的。在优选的实施例中,每个图块是矩形的,并且在尺寸上优选地是16X16、 32X32或者16X8采样位置。这里还应当注意,虽然在特别优选的实施例中,出于本发明的目的而将帧划分成 的图块与再现过程将在其“常规”再现操作中对其进行操作的图块相同或相似,但是如果需 要,可以使用具有与“常规”再现图块不同的尺寸和/或形状的图块来执行本发明。例如, 如果需要,本发明的“累积缓冲”过程对其进行操作的“图块”可以包括多个“再现图块”或 者“再现图块”的子区域。如上文所讨论的,本发明的重要特征在于,在逐个图块的基础上执行多次再现传 递和这些再现传递的结果的累积,而不是通过在下一再现传递开始之前跨越整个帧执行每 次再现传递。换言之,给定图块将经历多次再现传递,其结果将直接连续地、一个接一个地 被累积,而不是例如在对该特定图块执行下一再现传递之前等待对(整个帧的)所有图块执 行给定的再现传递。因而,对于正被处理的给定图块,一旦该图块的前一再现传递已结束,则该图块的 下一再现传递将开始,而不是在开始所讨论的图块的下一再现传递之前等待完成所有其他 图块的前一再现传递。(该操作的效果将是如上文所讨论的,在生成输出帧的过程期间, 在开始至少一个其他图块的再现传递和累积之前,将完成至少一个图块的再现传递和累积 (实际上,在开始其他图块的再现和累积过程之前,将完成一些图块的,并且典型地许多图 块的再现和累积处理)。)。最优选地,正被处理的给定图块的下一再现传递在该图块的前一再现传递结束时 立即开始。然而,这不是必需的,并且例如如下文所讨论的,将有可能并行地处理多个图块 和/或使不同图块的处理交织。在这种情况下,可能的是在开始给定图块的下一再现传递 之前另一图块将经历再现传递(但是,情况仍然将是在其他图块开始之前完成一个或多个 图块)。最优选地,一个图块(或图块集合)的处理在下一图块(或图块集合)开始之前完成 (以提供其最终累积输出)。类似地,优选地,在当前正被处理的图块(或图块集合)完全结束 之前,未经处理的图块(或图块集合)的处理不会开始(在前一图块(或图块集合)的处理完 成之前,下一图块(或图块集合)不会开始)。(再次地,如上文所提到的,在可选的布置中,如 果需要,将有可能在前一图块/图块集合结束之前开始下一图块/图块集合。)。在一个特别优选的实施例中,单个地、依次地对每个图块进行处理,即所有图块依 次一个接一个地经历多次再现传递和累积过程。在这种情况下,每个单独图块将优选地在 下一图块开始之前完成(完全累积)。
在另一优选的实施例中,多个图块(多个图块集合)可以并且优选地确实同时经历 再现传递和累积过程。例如并且优选地,两个图块可以按本发明的方式同时经历该处理。例 如,两个图块的处理可以被交织。在这些情况下,构成输出累积帧的图块实际上可以被视为按图块集合进行处理 (如上文所讨论的),每个集合包括构成输出帧的图块中的两个或更多个(并且优选地两个) 但并非所有。每个这样的图块集合然后将被依次处理,其中一个集合的处理优选地在下一 集合开始之前完成。如果需要,其他布置将是可能的。例如,由于图块实际上彼此独立,因此如上文所 提到的,如果需要,将有可能并行地和/或按交织的方式处理不同图块,例如以便提高并行 处理速率。在这种情况下,在前一图块(图块集合)结束之前,下一图块(或图块集合)可以 开始。情况还可以是例如,图块处理机制可以导致图块处理例如在可以并行地处理针对不 同图块的命令的情况下在一些时间上重叠。然而,即使在这些布置中,情况仍然将是一个或 多个图块将在其他图块开始之前完成。将对每个图块执行的再现传递可以按任何适当的和所期望的方式执行。如将意识 到的,对于要求显示帧的“累积缓冲”操作的任何应用,将典型地指令图形处理器执行所期 望的再现传递序列,并且因此在本发明中,其是应当对每个图块执行的这个所期望的(所定 义的)再现传递序列。如本领域中已知的,对于累积缓冲操作,这些再现传递通常将再现不 同帧,诸如从不同视角观看、和/或经历不同照明条件、和/或空间上(其位置移位)或时间 上跳动等的给定场景。因而在优选的实施例中,再现传递对多个不同帧进行再现,这些帧然 后被累积以提供输出累积帧。再现传递优选地按图形处理系统的常规方式或者用于图形处理系统的常规方式 来执行。因而优选地,对于任何给定的再现传递,将对图块进行再现并且生成适当再现的输 出图块(例如并且优选地,至少最初该输出图块将被存储在图形处理器的图块缓冲器中)。 这将针对在对所讨论的累积输出帧所需的(所定义的)再现传递序列中的每次再现传递进 行重复。如上文所讨论的,每次再现传递将被视为生成输出的总体“累积”图块的“子图块”。如将意识到的,将需要是一种机制,由此给定图块的每次再现传递的结果可以被 累积(即累积针对给定图块生成的“子图块”)。这与对传统的“累积缓冲器”布置中的累积 缓冲器的要求类似,但是不是需要为全帧缓冲器(即能够同时存储整个帧的再现结果),本 发明将仅要求同时存储单个图块(或多个图块集合)的再现结果。因此,本发明中的“累积 缓冲器”将仅需要是图块(或图块集合)“累积”缓冲器(即尺寸被调整为使得能够累积图块 (或者适当的图块集合,其中本发明同时处理多个图块集合)的再现结果的缓冲器)。可以按任何适当的和所期望的方式提供该图块“累积”缓冲器。例如,其仍然可以 按与传统的累积缓冲实施方式类似的方式被提供为外部的但小很多的缓冲器。然而,在特别优选的实施例中并且如上文所讨论的,图块“累积”缓冲器与图形处 理器一起(优选地在图形处理器内部)被提供在片上(on-chip)。如上文所讨论的,这是有 利的,原因在于其可以消除对累积过程的任何外部存储器访问和带宽的需要。而且,本发明 的关键优点在于其促进通过图形处理器自身在片上实施累积过程和缓冲器。因此在这种 情况下,图形处理器将具有“图块缓冲器”和“累积缓冲器”。因而,根据本发明的第五方面,提供一种操作基于图块的图形处理器的方法,该方法包括
图形处理器对将输出的帧的图块执行多次再现传递序列并且在图形处理器的存储器 中累积这些再现传递的结果;以及
一旦其完成了再现传递序列并且累积了这些再现传递的结果,就将图块的累积结果输 出到帧缓冲器。根据本发明的第六方面,提供一种基于图块的图形处理器,该图形处理器包括 存储器;
用于对将输出的帧的图块执行多次再现传递序列并且在图形处理器的存储器中累积 这些再现传递的结果的部件;以及
用于一旦完成了再现传递序列并且累积了这些再现传递的结果就将图块的累积结果 输出到帧缓冲器的部件。如本领域的技术人员将意识到的,在适当的情况下,本发明的这些方面可以并且 优选地确实包括这里描述的本发明的优选和任选特征中的任何一个或多个或者所有。因 此,例如,优选地依次对构成累积输出帧的每个图块或者多个图块集合执行多次再现传递 和累积过程。类似地,再现传递的结果被累积在其中的图形处理器的存储器优选地包括(如 下文所讨论的)图形处理器的图块缓冲器。在图块累积缓冲器被提供在图形处理器自身上的情况下,则这可以例如通过在图 形处理器上提供适当的另外缓冲器(存储器)来实现。例如,累积缓冲器可以被提供为位于 “常规”图形处理单元外部的片上块。这可以例如在其中可以为此目的而添加新缓冲器的新 处理器上完成。然而,在特别优选的实施例中,通过为该目的使用处理器的现有存储器(即通过使 用例如因为其具有另一已经现有功能而无论以何种方式存在和将要存在的、图形处理器的 存储器),在图形处理器上提供图块累积缓冲器。在特别优选的这种布置中,在任何情况下都将在图形处理器上存在的图块缓冲器 被用作用于存储在实施本发明时要使用的“图块累积”缓冲器的存储器。因此,在特别优选的实施例中,图形处理器的图块缓冲器可以并且优选地能够(并 且被配置为)存储(常规)图块缓冲器和正被再现的图块的累积“图块”。在这些布置中,至少可以使用图形处理器的现有(已经需要和提供的)逻辑来实施 本发明,即没有额外成本。类似地,本发明的这些布置至少可以在现有的图形处理器上实施 (由于它们不要求任何另外的逻辑(硬件))并且因此本发明与现有的图形处理系统兼容并 且可以在现有的图形处理系统上实施。在其中将使用图形处理器的诸如(一个或多个)图块缓冲器的已存在的存储器来 在本发明的过程中累积图块的结果的这些布置中,则如本领域的技术人员将意识到的,可 能有必要确保存储器中有用于累积图块(或图块集合)的结果的空间。在必要的情况下,这可以按任何所期望的和适当的方式来完成。例如,可以减少正 被执行的多重采样量(例如并且优选地,减半),例如从4x减少到h,因为这将然后释放例 如图块缓冲器中的空间。例如,四个FP16值将使用与两个RGBA8888缓冲器相同的存储量, 因此通过将这种布置中的多重采样量从4x减少到h,“释放的”(不再使用的)样本(用于 这些样本的空间)可以用于存储累积“图块”。在一个优选的实施例中,这被完成。
可选地,不是减少多个样本(针对每个图块存储的样本)的数目,实际上可以减小 图块的尺寸(例如并且优选地,减半),以便在图块缓冲器中为“累积”图块提供“空间”。例 如,在常规地使用尺寸为16X16采样点的图块缓冲器的系统中,当实施本发明时,作为替 代,可以使用16X8的图块尺寸。这实际上将用于16X16图块的图块缓冲器一分为二,一 半是16X8 “常规”图块缓冲器,而另一半是用于图块的16X8 “累积”缓冲器。在这种情况 下,当使用本发明时可以例如保留(即不减少)较高水平的多重采样,并且对于累积缓冲器 可以使用较高水平的精度(例如32位值),但是将使用较小的图块尺寸对这些帧进行处理。因此,在另一优选的实施例中,当使用本发明时,图形处理系统对其进行操作的图 块的尺寸(与所使用的“常规”图块尺寸(并且例如,(一个或多个)其图块缓冲器被配置为对 其进行处理的图块尺寸))优选地被减小一半。(这里应注意,用于实施本发明的上文(和其他)过程和技术仅需要在图形处理系 统进行操作以按本发明的方式对帧进行处理时使用。在其他情况下图形处理系统可以照常 操作(例如对于不需要累积缓冲操作的帧)。)。本发明中的累积给定图块的再现传递的结果的过程可以按任何适当的和所期望 的方式执行。例如,可以针对整个图块完成相关的再现传递以为该再现传递生成经适当再现的 子图块(如上文所讨论的),并且一旦完成,然后将该“子图块”适当地添加到“累积图块”(缓 冲器)。这与其中整个子帧被再现并且然后在“累积传递”中被添加到累积器缓冲器的传统 累积器缓冲操作类似。因此,在一个优选的实施例中,本发明进行该操作,并且使用或者包括累积传递阶 段,即,当其完成图块的再现传递时,其然后在“累积传递”中将所得到的再现“子图块”添 加到(该图块的)“图块”累积缓冲器。在这种情况下,例如并且优选地,通过使用图形处理器的图块写回逻辑或者适当 的着色器,可以按所期望的那样执行“累积传递”(数据从再现“子图块”移动到“累积缓冲 器”)。在另一特别优选的实施例中,不是在累积该子图块(再现传递)的结果之前等待图 块的整个再现传递完成(等待生成整个最终“子图块”),累积图块(缓冲器)优选地随着再现 传递的进行而连续更新。在这种情况下,图块的再现结果将随着再现传递的进行而被有效地添加到图块累 积缓冲器,而不是完成再现传递并且然后在该阶段处累积所得到的子图块。因此,这实际上 将消除对被再现的每个“子图块”之间的分开“累积传递”的需要,这可能是有利的(例如, 其将允许下一子图块立即开始,而不是必须等待首先完成累积传递)。这可以按所期望的那样完成,但是在特别优选的实施例中,每当在再现传递中对 采样位置进行再现时,如果必要,对累积缓冲器(图块)进行更新。换言之,当完成再现传递期间的采样位置(的给定实例)的再现时,如果必要,对累 积缓冲器中的所讨论的再现传递(子图块)的该采样位置的累积值进行更新,无需等待确定 子图块(再现传递)的该采样位置的最终值。优选地,如果必要,每当生成了每个采样位置或者采样位置的集合(当同时对多个 采样位置进行再现时)的新再现结果时,用该采样位置或者多个采样位置的再现结果对累积缓冲器进行更新。申请人:已认识到,在其中累积缓冲器随着再现的进行而被更新的这些布置中,针 对在再现传递期间被再现的采样点生成的值将被再现图块的完成版本中(所讨论的“子图 块”的最终版本中)的这些采样点的后来再现值替换,例如,其中由于透支(over-draw),在 再现传递中早先的采样点值实际上被后来的采样值遮蔽(occlude)。此外,由于累积缓冲器实际上应仅累积所讨论的子图块与其他子图块(再现传递) 的“最终”版本(再现传递的最终结果),因此不能简单地在累积缓冲器中累积给定采样位置 的所有中间再现值。因此在本发明的这些布置中在累积缓冲器中简单地累积采样位置的每一个新再 现值可能不是适当的,因为这实际上可能导致累积缓冲器累积错误值。因此,在特别优选的实施例中,系统被配置和操作以确保仅正被再现的子图块中 的每个采样位置的当前值(即当前存储在图块缓冲器中的值)被应用到累积缓冲器(在累积 缓冲器中累积)。由于图块缓冲器应总是保存正被再现的子图块的当前版本(即在该时刻在累积缓 冲器中应累积的子图块的版本),因此如果然后确保累积缓冲器已(仅)累积任何给定采样 位置的“当前”图块缓冲器值,则累积缓冲器应总是正确的(对于该时刻),即使子图块的再 现仍未结束,并且当子图块(再现传递)结束时将是正确的。这应确保例如,将正确地处理所有透支情形,即使在正在再现“子图块”时正在 执行累积,并且因此确保将产生与之后跟着累积缓冲器(具有累积传递)的“常规”过程 的情况下将产生的累积输出相同的累积输出(accordingly ensure that an identical accumulation output will be produced as would be produced as if the "normal" procedure for accumulation buffers (with an accumulation pass) was being followed)。在这些布置中,再现采样位置优选地照常被写入图块缓冲器(S卩,例如由于它们遮 蔽针对这些采样位置存储的现有片元(fragment),当它们应替换现有的图块缓冲器值时以 及如果它们应替换现有的图块缓冲器值)。因而,系统优选地被操作以随着再现传递按“常规”方式进行而生成图块(子图块) 的图块缓冲器并且然后确保总是将图块缓冲器的当前值应用到所讨论的再现传递(子图 块)的给定采样位置的累积缓冲器。这可以按所期望的那样实现,但是在本发明的这些布置的特别优选的实施例中, 当新再现值将被写入正被再现的子图块的采样位置时,首先从累积缓冲器中适当地(即以 适当的加权)减去所讨论的子图块中的该采样位置的当前值,并且然后将新再现值适当地 添加到累积缓冲器。这应从而确保实际上仅子图块中的采样位置的“当前”值被应用到累 积缓冲器。在一个优选的这样的实施例中,首先确定采样位置的新再现值是否确实替换正用 于子图块中的该采样位置的现有值,并且如果新值确实替换现有值,则仅用该新值来更新 累积缓冲器。(如本领域中已知的,例如并且优选地通过使用适当的深度(Z)测试(比较),可 以按所期望的那样确定采样位置的新再现值是否替换该采样位置的现有值。)。这种布置可以按所期望的那样实现,但是在特别优选的实施例中通过如下方式实现当覆盖正被再现的子图块的一个或多个采样位置的新片元退出再现管线(pipeline) 时,从(一个或多个)这些采样位置的累积缓冲器中适当地减去由新片元覆盖的(一个或多 个)采样位置的现有图块缓冲器值并且然后将由新片元覆盖的(一个或多个)采样位置的 (一个或多个)(新再现的)图块缓冲器值添加(累积)到(一个或多个)这些采样位置的累积 缓冲器。(如本领域中已知的,再现过程典型地通过如下方式执行将正被处理以显示图像 的采样点“表示”为通常被称为“片元”的对其执行图像再现操作(诸如着色)的离散图形实 体。每个采样点实际上将由片元表示,该片元将用于对所讨论的采样点着色。片元可以表 示(与其关联)单个采样点或多个采样点。因而“片元”是经过再现过程(再现管线)的图形 实体。)。在另一优选的这样的实施例中,当采样位置将被再现时,从该采样位置的累积缓 冲器值中适当地减去应用到所讨论的子图块的该采样位置的累积缓冲器的当前值,并且然 后,在对采样位置进行再现之后,该子图块的图块缓冲器中的该采样位置的当前值(其可以 是新再现值,其中新值替换采样位置的旧值,或者可以是采样位置的前一(现有)当前值(其 中新值未替换先前存储的值))被适当地添加(累积)到所讨论的采样位置的累积缓冲器值。因此,在一个特别优选的实施例中,在图块正被再现(经历其再现传递中的一个) 时,当表示一个或多个采样位置的片元进入再现过程(管线)时,从所讨论的图块的这些采 样位置的(一个或多个)累积缓冲器值中适当地减去所讨论的再现传递的该片元(该片元表 示的(一个或多个)采样位置)的当前图块缓冲器值,并且然后,当该片元完成其再现时,片 元再现之后的采样位置的(一个或多个)当前图块缓冲器值被适当地添加(累积)到所讨论 的图块的这些采样位置的(一个或多个)累积缓冲器值。在本发明的这些实施例的优选布置中,累积缓冲器存储定点值。为使该技术令人 满意地工作,这可能在一些环境中是必要的。如上文所讨论的,针对输出帧的图块生成的“累积”输出图块的集合应被组合以提 供总体输出累积帧。这通过一旦每个输出“累积”图块(其将被存储在图块“累积缓冲器” 中)准备好就将其写入例如帧缓冲器来完成。然后,当所有输出累积图块均已被写入例如帧 缓冲器时,输出帧完成并且可以例如并且优选地被显示(或者按所期望的那样以另外的方 式输出)。这里应注意,本发明可以用于可以使用图形处理器来提供的任何适当形式的累积 输出。因而,尽管在一个特别优选的实施例中,在输出帧预期形成用于(例如,在屏幕或者 打印机上)显示的图像的情况下(在这种情况下,如本领域中已知的,输出帧将被存储在帧 缓冲器中)使用本发明,但是在输出帧未预期用于显示的情况下,例如在输出帧(再现目标) 是正在使用图形处理器生成的纹理的情况下(例如在“再现到纹理”操作中),或者实际上, 在正在使用图形处理器生成的输出是任何其他形式的数据阵列的情况下,也可以使用本发 明。因此,在上下文允许的情况下,这里提到由图形处理器生成的“输出帧”应被视为不仅 包括用于显示的帧,而且在适当的情况下包括其他适当的再现目标,诸如图形处理器正在 生成的作为其输出的纹理或者其他表面。输出累积图块可以按所期望的那样被写入帧缓冲器,并且如果需要,可以例如经 历作为该过程的一部分的进一步处理,诸如下采样。为此目的优选地使用用于将图块写入帧缓冲器的“常规”过程。可以按任何所期望的和适当的方式指令和控制图形处理器以按本发明的方式进 行操作。如本领域的技术人员将意识到的,按本发明的方式的操作优选地通过如下方式触 发图形处理器的驱动器(软件)(其将例如在图形处理器耦合到的主机系统或者处理器上 运行)例如响应于来自在主机上运行的应用程序的显示“累积帧”的请求,向图形处理器发 送适当的命令序列。在特别优选的实施例中,对于待处理的每个图块,用于触发和控制按本发明的方 式的操作的命令序列包括“开始新图块”命令(其将触发所讨论的图块的第一再现传递(生 成第一“子图块”));以及然后的“开始新子图块”命令序列,针对图块将经历的每个剩余再 现传递有一个命令。如上文所讨论的,这些命令应使图形处理器对将累积的适当的“子图 块”序列进行再现以提供输出“累积”图块。在这种布置中,“开始新图块”命令优选地清除将用于该图块的图块缓冲器和将用 于该图块的累积缓冲器(在其信号通知新图块的开始时),但是开始新子图块命令应仅清除 图块缓冲器而非累积缓冲器。开始新图块命令和开始新子图块命令优选地还指示在将所讨论的子图块累积到 累积图块时将使用的权重。(如本领域中已知的,其通常还将指明将应用到在累积缓冲过程 中对累积帧有贡献的每个“子帧”的权重,并且因此这在本发明中也将需要考虑。在开始新 图块/子图块命令中指明将使用的权重是一种实现此的便利方法。)。在特别优选的实施例中,图形处理器的驱动器还将进入累积缓冲器中的所有再现 传递(子帧)组合为图形处理器的单个任务。这然后促进依次针对每个图块(或图块集合)一 个接一个地执行再现传递。认为,图形处理器的驱动器的这种操作可以凭其自身的特征是新型的和有利的。因而根据本发明的第七方面,提供一种操作基于图块的图形处理器的驱动器的方 法,该方法包括
驱动器
接收将输出需要累积缓冲操作的帧的指令; 将帧的进入累积缓冲器中的子帧组合为图形处理器的单个任务; 准备命令序列并且将其发送到图形处理器,对于将输出的帧的每个图块,该命令序列 包括开始新图块命令和开始新子图块命令序列,每个这样的命令指令图形处理器对于所讨 论的图块开始在所需用于帧的累积缓冲操作的再现传递序列中的一次再现传递。根据本发明的第八方面,提供一种基于图块的图形处理器的驱动器,该驱动器包 括
用于响应于接收到将输出需要累积缓冲操作的帧的指令,将帧的进入累积缓冲器中的 子帧组合为图形处理器的单个任务的部件;以及
用于准备命令序列并且将其发送到图形处理器的部件,对于将输出的帧的每个图块, 该命令序列包括开始新图块命令和开始新子图块命令序列,每个这样的命令指令图形处理 器对于所讨论的图块开始在所需用于帧的累积缓冲操作的再现传递序列中的一次再现传 递。
如本领域的技术人员将意识到的,在适当的情况下,本发明的这些方面可以并且 优选地确实包括这里描述的本发明的优选和任选特征中的任何一个或多个或者所有。例 如,开始新图块/子图块命令优选地具有上文讨论的(一种或多种)形式。类似地,图形处理器优选地响应于接收到来自驱动器的命令序列而按本发明的方 式进行操作。实际上,将意识到,响应于接收到来自其驱动器的这种命令序列,图形处理器将进 行操作以使输出帧的图块经历再现传递序列并且因此累积这些再现传递序列的结果。这将 针对输出帧将被划分成的每个图块来完成。因而,根据本发明的第九方面,提供一种在基于图块的图形处理系统中处理输出 帧的图块的方法,该方法包括
使图块经历多次再现传递序列中的第一再现传递并且将所得到的再现图块存储在该 图块的累积缓冲器中;
使图块经历所定义的再现传递序列中的第二再现传递并且将该再现传递的结果累积 到该图块的累积缓冲器中;以及
针对再现传递序列中的每次剩余再现传递重复该过程; 以便生成表示图块的多次再现传递的累积结果的图块输出;以及 向输出再现目标,优选地向帧缓冲器输出图块的累积图块输出。根据本发明的第十方面,提供一种基于图块的图形处理系统,该图形处理系统包 括
用于使输出帧的图块经历多次再现传递序列中的第一再现传递并且用于将所得到的 再现图块存储在图块的累积缓冲器中的部件;
用于使图块经历再现传递序列中的第二再现传递并且用于将该再现传递的结果累积 到图块的累积缓冲器中的部件;以及
用于针对再现传递序列中的每次剩余再现传递重复该过程的部件; 以便生成表示图块的多次再现传递的累积结果的图块输出;以及 用于向输出再现目标,优选地向帧缓冲器输出图块的累积图块输出的部件。如本领域的技术人员将意识到的,在适当的情况下,本发明的这些方面可以并且 优选地确实包括这里描述的本发明的优选和任选特征中的任何一个或多个或者所有。因而,例如,优选地针对输出帧将被划分成的每个图块重复该过程。在这种情况下,在基于图块的图形处理系统中,该方法或系统将因此包括用于处 理构成输出帧的至少一部分的图块集合的步骤或部件,包括如下步骤或用于如下步骤的部 件
使图块集合的第一图块经历再现传递序列中的第一再现传递并且将所得到的再现图 块存储在图块的累积缓冲器中;
使第一图块经历再现传递序列中的第二再现传递并且将该再现传递的结果累积到图 块的累积缓冲器中;以及
针对再现传递序列中的每次剩余再现传递重复该过程以生成表示图块的多次再现传 递的累积结果的图块输出;以及
向输出再现目标,优选地向帧缓冲器输出图块的累积图块输出;以及此后,使图块集合的第二图块经历再现传递序列中的第一再现传递并且将所得到的再现图 块存储在第二图块的累积缓冲器中;
使图块序列的第二图块经历再现传递序列中的第二再现传递并且将该再现传递的结 果累积到该图块的累积缓冲器中;以及
针对再现传递序列中的每次剩余再现传递重复该过程以生成表示第二图块的多次再 现传递的累积结果的图块输出;以及
一旦第二图块的再现传递序列的累积结果完成;
向输出再现目标,优选地向帧缓冲器输出第二图块的累积图块输出;以及
针对图块集合中的剩余图块重复该过程。这里还应意识到,虽然在正在处理输出累积帧时将遵循并且基本上应遵循上文讨 论的一个接一个地处理图块(或图块集合)的序列,但是仍然有一些图块的处理之前没有其 他图块的处理并且有一些图块的处理之后没有其他图块的处理。例如,最后处理的(一个或 多个)图块之后没有另外图块的处理(由于然后输出帧将结束)。因此,例如,上文提到的图 块集合(序列)将包括来自帧的“中间,,的图块集合或序列,并且例如对于输出帧的末尾图 块,实际上未精确地遵循该处理序列。本发明的各种功能可以按任何所期望的和适当的方式执行。例如,本发明的功能 可以按所期望的那样以硬件或软件实施。因而,例如,本发明的各种功能元件和“部件”可以 包括可操作用于执行各种功能等的适当的一个或多个处理器、功能单元、电路、处理电路、 管理电路、逻辑、处理逻辑、微处理器布置等,诸如可以被编程为按所期望的方式操作的适 当的专用硬件元件和/或可编程硬件元件。在优选的实施例中,图形处理器被实施为硬件元件(例如ASIC)。因此,在另一方 面,本发明包括硬件元件,该硬件元件包括这里描述的本发明的任何一个或多个方面的装 置或者根据本发明的任何一个或多个方面的方法操作的装置。在特别优选的实施例中,图形处理器包括单个图形处理平台,其生成和输出被写 入显示设备的帧缓冲器的图形数据。这里还应注意,如本领域的技术人员将意识到的,本发明的各种功能等可以在给 定的处理器上复制和/或并行地执行。本发明适用于任何形式或配置的(基于图块的)图形处理器和再现器,诸如具有 “管线式”再现布置的处理器(在这种情况下再现器将具有再现管线的形式)。如将根据上文意识到的,本发明特别(尽管并非排他性地)适用于3D图形处理器和 处理设备,并且因此扩展到包括这里描述的本发明的任何一个或多个方面的装置或者根据 本发明的任何一个或多个方面的方法操作的装置的3D图形处理器和3D图形处理平台。以 为执行上文讨论的特定功能所需的任何硬件为准,这种3D图形处理器可以另外包括3D图 形处理器包括的常规功能单元等中的任何一个或多个或者所有。本领域的技术人员还将意识到,在适当的情况下,本发明的所有所描述的方面和 实施例可以包括这里描述的优选和任选特征中的任何一个或多个或者所有。根据本发明的方法可以至少部分地使用例如计算机程序的软件来实施。因而将了 解,当从另外的方面观察时,本发明提供计算机软件,其在被安装在数据处理部件上时特 别适于执行这里描述的方法;计算机程序元件,其包括用于在该程序元件在数据处理部件上运行时执行这里描述的方法的计算机软件代码部分;以及计算机程序,其包括在该程序 在数据处理系统上运行时适于执行这里描述的一种或多种方法的所有步骤的代码部件。数 据处理系统可以是微处理器、可编程FPGA (现场可编程门阵列)等。本发明还扩展到计算机软件载体,其包括在用于操作图形处理器、再现器或者包 括数据处理部件的微处理器系统时结合所述数据处理部件使所述处理器、再现器或系统执 行本发明的方法的步骤的这种软件。这种计算机软件载体可以是诸如ROM芯片、CD ROM或 盘的物理存储介质,或者可以是诸如导线上的电子信号、光信号或者无线电信号(诸如针对 卫星等)的信号。将进一步意识到,并非本发明的方法的所有步骤都需要由计算机软件执行并且因 而根据另外的广泛方面,本发明提供用于执行这里阐述的方法的至少一个步骤的计算机软 件和安装在计算机软件载体上的这种软件。因此本发明可以适当地被实施为与计算机系统一起使用的计算机程序产品。这种 实施方式可以包括均固定在诸如非暂时性计算机可读介质(例如,盘、CD ROM、ROM或者硬 盘)的有形介质上的一系列计算机可读指令。其还可以包括可经由调制解调器或者其他接 口设备、通过包括但不限于光学或者模拟通信线路的任一有形介质、或者使用包括但不限 于微波、红外或者其他传送技术的无线技术无形地传送到计算机系统的一系列计算机可读 指令。计算机可读指令系列实施本文前面描述的所有或部分功能。本领域的技术人员将意识到,这些计算机可读指令可以以许多编程语言编写以 与许多计算机架构或者操作系统一起使用。此外,可以使用包括但不限于半导体、磁或者 光的目前的或者未来的任何存储器技术来存储这些指令,或者使用包括但不限于光、红外 或者微波的目前的或者未来的任何通信技术来传送这些指令。预期的是,这种计算机程 序产品可以被分发为具有伴随的印刷或电子文件的可移动介质(例如,现成套装(shrink wrapped)软件),例如与计算机系统一起预先装载在系统ROM或固定盘上,或者通过例如因 特网或万维网的网络从服务器或者电子公告牌进行分发。


现将仅通过示例方式并且参照附图来描述本发明的许多优选的实施例,在附图 中
图1示意性地示出本发明的实施例的主要操作; 图2示意性地示出用于实施本发明的适当的图形处理器架构; 图3示意性地示出实施本发明的一个优选方法;以及 图4和5示意性地示出实施本发明的另一优选方法。
具体实施例方式如上文讨论的,本发明涉及图形处理系统中的“累积缓冲”过程,并且具体地涉及 用于在基于图块的图形处理系统中实施这种操作的优选的和创新的系统和方法。如本领域中已知的,“累积缓冲”过程基本上牵涉例如从若干不同视角对输出帧 的多个不同版本进行再现,并且然后累积这些结果作为单个输出“累积”帧。该操作典型地 用于模拟诸如景深、运动模糊、软阴影和图形保真的不同效果。
图1示出本发明的基本概念。图IA示意性地示出已被划分成多个图块或子区域2、3、4和5的帧1,如本领域中 已知的,每个图块将被分开地再现并且然后被组合以提供用于显示的输出帧。(图IA为清楚起见示出被划分成四个图块的帧。如本领域的技术人员将意识到的, 给定的帧将典型地被划分成比四个图块更多的图块。)。图IB示意性地示出将应用到图IA中示出的帧1的传统“累积缓冲”操作。因而, 如图IB中所示,如本领域中已知的,帧1的多个不同版本1’、1"、1’ “、被再现并且一起 累积以提供输出“累积”巾贞6。在这种情况下,并且如本领域中已知的,第一再现传递将完整 地生成对累积输出帧6有贡献的第一子帧1’。然后第二不同再现传递将生成第二整个子帧 1",其将再次地被累积到最终累积输出帧6中,以此类推。图IC示意性地示出如何根据本发明的实施例执行用于生成累积帧6的累积缓冲 操作。如图IC中所示,不是依次完整地对每个子帧1’ UM' 〃和进行再现,在根据本 发明的实施例的系统中,每个单独图块2、3、4和5单独地经历不同再现传递并且被累积。因而,例如,在图块2的情况下,针对该图块执行第一再现传递以生成子图块2’, 并且然后针对该图块执行第二再现传递以生成与图块的第一版本2’累积的图块的第二版 本2〃,并且然后执行第三再现传递以生成再次与图块的先前再现版本累积的图块的第三版 本2’ ",以此类推,以提供图块的最终输出累积版本2a。。。然后提供累积输出图块2a。。作为输 出以形成总体累积输出帧6的输出图块2。然后针对构成输出帧6的每个剩余单独图块3、4和5重复该操作,并且将单独的 累积图块2Arc、3皿、4a。。和5a。。组合在一起以提供输出累积帧6。因而,如果将图IB中示出的传统累积缓冲布置视为生成若干子帧(帧1’ UM' 〃 和1""),这些子帧通过这些若干子帧的累积而一起对最终图像6有贡献,则如图IC中所示 的本实施例的概念可以类似地被视为牵涉到针对构成输出帧的每个单独图块生成若干子 图块(例如2’、2"、2’ 〃和2""),这些子图块累积在一起以对最终累积图块(例如2a。。)有贡 献,该最终累积图块然后成为所讨论的图块的输出版本。然后组合每个这样的输出累积图 块以提供总体累积输出帧6。因此,类似地,本实施例的再现顺序是在移动到下一图块(或图块集合)之前,对一 个特定图块(或者如下文将进一步讨论的,多个特定图块的集合)的所有“子图块”进行再 现(以执行和累积所有再现传递)。(与此相比,传统的累积缓冲操作可以被视为生成包括帧 的所有图块的子帧并且一旦生成了该子帧,则生成包括帧的所有图块的下一子帧,以此类推)。以另一方式来看,在传统的累积缓冲操作中,针对帧的所有图块执行为生成累积 帧所需的再现传递序列中的第一再现传递以生成第一子帧,并且仅在该第一子帧已被生成 时,才再次跨越帧的所有图块执行第二再现传递序列以生成第二子帧,以此类推。与此相比,在本实施例中,将针对图块执行序列中的第一再现传递,并且然后当该 图块的第一再现传递完成时,将针对该相同图块执行累积输出帧序列中的第二再现传递以 生成该图块的第二子图块,而无需等待针对帧的所有图块执行第一再现传递,以此类推,直 至所讨论的图块的所有再现传递完成。然后系统将移动到输出帧的另一图块。换言之,在 本实施例中,再现顺序将使得在不用等待输出帧的其他图块的再现传递完成的情况下(且优选地在移动到输出帧的下一图块之前)将对一个特定图块的所有“子图块”进行再现。如将更详细讨论的,在本实施例的布置中,可以如图IC中所示,可以一个接一个 地依次处理每个单独图块2、3、4、5,或者可选地,将有可能一起处理两个或更多个单独图 块,使得例如作为多个图块的多个不同集合对构成输出帧的图块进行有效的处理。例如,对于图IC中图示的布置,可以同时处理图块2、3的对,并且然后,当这些图 块结束时,然后可以处理图块4和5的对。就是说,这里应理解,尽管在该布置中可以同时 处理图块2、3的对,但是情况仍然是,对每个图块仍与其他图块分开地执行累积和多次再 现传递,仅仅是图块2和3的处理可以例如被交织以便允许同时执行这些图块的过程。图2示意性地示出可以根据本发明操作的图形处理器的实施例。图2中示出的图形处理器包括光栅化器50,如本领域中已知的,其接收用于再现 的图形基元,将基元光栅化为采样点并且生成具有用于对基元进行再现的适当位置(表示 适当的采样位置)的图形片元。然后存在再现管线形式的再现器51,其从光栅化器50接收用于再现的图形片元 并且对这些图形片元应用许多再现操作,诸如纹理映射、雾化、混合等,以生成例如用于显 示片元的适当的片元数据。来自再现器51的再现片元数据被存储在再现管线的图块缓冲 器52中以用于后续的处理。如本领域中已知的,图块缓冲器52存储表示再现过程的输出帧的(例如,待显示 的输出帧的)一部分的片元数据阵列。一旦处理了每个图块,则将其数据导出到适当的储存 器,并且然后对下一图块进行处理,以此类推,直至处理了足够的图块以提供整个输出帧。在本实施例中,图块缓冲器52在常规操作中被配置为存储尺寸为16X 16采样位 置的图块,并且对于每个采样点存储四个FP16值。当然,其他布置将是可能的。图块缓冲器52可以被提供为分开的缓冲器,或者实际上所有都可以是相同较大 缓冲器的一部分。它们位于图形处理器上(本地)。如下文将进一步讨论的,当在本实施例中实施本发明时,对图块缓冲器52的操作 进行修改。如本领域中已知的,来自图块缓冲器52的数据被输入到下采样单元53,并且由此 输出到显示设备55的帧缓冲器M (其可以不在图形处理器自身上)以用于显示在显示设备 上。显示设备55可以包括例如,包括像素阵列的显示器,诸如计算机监视器,或者打印机。下采样单元53将图块缓冲器中存储的片元数据下采样至显示设备55的适当的分 辨率(即,使得生成与显示设备的像素对应的像素数据阵列)。在本实施例中,当图形处理器按本发明的方式正在操作时,对图块缓冲器52的操 作进行修改以便在正在累积给定图块的“子图块”序列时为给定图块提供必要的“累积缓冲 器”存储。(如从上文将意识到的,例如在按图3中示出的方式正对子图块2’、2"、2’〃和2"" 的序列进行处理时,随着再现的进行,将需要把再现每个这种“子图块”的结果累积在一起, 该累积的再现结果然后将最终提供输出累积图块2Arc。因此有必要提供用于随着再现的进 行而累积子图块的“累积缓冲器”。这类似于提供用于在“传统的”累积缓冲实施方式中对 每个子帧进行处理时累积每个子帧的结果的累积缓冲器。然而,在本发明中,“累积缓冲器” 每次仅需要累积图块(或图块集合)而非全帧。)。
在图2中示出的布置中,用于在按本发明的方式对给定图块进行处理时存储给定 图块的累积再现结果的累积缓冲器被提供为图形处理器的图块缓冲器52中的缓冲器。因而,如图2所示,对于正在按本发明的方式处理的给定图块,图块缓冲器52将 被配置为提供正被处理的图块的“常规”图块缓冲器56和该图块的累积图块“累积缓冲 器” 57。然后并且如下文将进一步讨论的,当图块经历给定的再现传递以生成诸如图IC 中示出的子图块2’的子图块时,该图块将被存储在图块缓冲器56中并且所得到的再现子 图块然后被累积到累积缓冲器57中。一旦诸如子图块2’的给定子图块已被完全再现时,图块缓冲器56然后将被清除 并且将诸如子图块2"的下一子图块再现到其中。所得到的再现子图块2"将被累积到累积 缓冲器57中(使得在该阶段,累积缓冲器57将存储子图块2’和2"的适当累积的再现结 果)。图块缓冲器56然后将被清除并且对诸如子图块2’ “的下一子图块进行再现,并且 该子图块的结果被累积到累积缓冲器57中,以此类推。然后,一旦输出帧的给定图块的所有子图块均已被再现并且累积到累积缓冲器57 中,则然后(经由下采样阶段53)将累积缓冲器57的内容输出到帧缓冲器M作为用于适当 的输出或显示的输出累积图块。此时图块缓冲器56和累积缓冲器57可以被清除,并且然后针对输出帧的另一图 块(诸如图块3)开始该过程。然后对待输出的帧的每个图块重复该操作。在本实施例中,当图形处理器按本发明的方式正在操作时,图块缓冲器52被配置 为通过将作为光栅化过程的一部分而执行的多重采样量从4x减少到^来提供与图块缓冲 器56组合的累积缓冲器57。由于四个FP16值(其是给定的16X16图块缓冲器将针对其每 个数据位置而常规存储的值)将占用与两个RGBA8888缓冲器相同的存储量,因此通过将多 重采样量减少到&,给定的16 X 16数据位置的四个FP6值的图块缓冲器可以被重新配置为 提供两个RGBA8888缓冲器,因此一个这种缓冲器形成图块缓冲器56而另一个这种缓冲器 形成累积缓冲器57。这允许将必要的图块累积缓冲器57提供为图块缓冲器的一部分并且 避免了例如必须为此目的而添加新缓冲器。当然,用于促进在图块缓冲器中提供累积缓冲器57的其他布置将是可能的。例 如,不是将所采用的多重采样数目从4x减少到h,作为替代可以将正被处理的图块的尺寸 一分为二,以从一个16X 16数据位置的图块缓冲器提供一个16X8图块缓冲器56和一个 16X8累积缓冲器57。该布置将允许保留数目较高的多个样本并且例如较高精度值用于累 积缓冲器,但是另一方面将需要使用较小的图块尺寸来处理输出帧。这里应注意,这些布置允许图形处理器的现有逻辑(即图块缓冲器)提供用于按本 发明的方式的操作的必要的图块累积缓冲器。因而,可以在没有额外成本的情况下提供图 块累积缓冲器。此外,与传统的累积缓冲器架构相比,应存在相当大的速度提升并且减少了 纹理缓存和其他缓存查找。还将有可能的是例如,将另外的缓冲器添加到图形处理器或者实际上甚至提供图 形处理器外部的缓冲器,以充当图块累积缓冲器,尽管这不是如此优选的。现将参照图3至5描述用于操作图形处理器以按本发明的方式对输出帧进行处理的许多优选的实施例。图3示出根据本发明的图形处理器的操作的第一优选的实施例,其 中存在分开的再现和累积步骤。图4和5示出具有组合的再现和累积步骤的、这种操作的 第二优选的实施例。在图3至5中针对相同的步骤使用了相同的附图标记。如将意识到的,本发明的操作首先将由对累积缓冲操作的要求来触发,例如响应 于图形处理器的驱动器从需要图形显示的应用程序接收到这样的命令。如本领域中已知 的,该命令将典型地指令图形处理器对一系列子帧进行处理并且将其累积到累积缓冲器 中,其中每个子帧例如具有定义的再现传递和表示其对最终累积帧的贡献的指明权重。在本实施例中,响应于接收到这样的命令,图形处理器驱动器首先将要进入累积 缓冲器中的所有N次再现传递(子帧)组合为图形处理器的单个“任务”(步骤20)。这以便 确保图形处理器不会在将子帧组合为单个帧之前分开地对每个子帧进行再现,而是可以如 上文讨论的,顺序地对每个图块执行每次再现传递。当然,其他布置将是可能的。图形处理器驱动器还在步骤20中准备用于指令图形处理器按本发明的方式进行 操作的命令序列。该命令序列包括针对待处理的每个图块的第一子图块的“开始新图块”命令以及 针对相同图块的待处理的其他子图块的“开始新子图块”命令。“开始新图块”和“开始新子 图块”命令之间的差异在于除了清除图块缓冲器56之外,开始新图块命令将使图形处理 器清除累积缓冲器57 (即将累积缓冲器57写入帧缓冲器M),而每个开始新子图块命令将 仅清除图块缓冲器56。(在本实施例中,每个图块缓冲器使其与“清除”位图关联以指示哪些采样位置仍 未被再现。对于常规再现操作,针对将被再现的每个新图块,重置该清除位图。然而,在将 这应用到本实施例的累积缓冲操作时,如上文讨论的,在图块的最终版本(“累积”图块)被 输出到帧缓冲器之前将存在再现图块的多个版本(累积“子图块”)。因此,有必要每当新子 图块开始时“清除” “子图块”缓冲器并且每当待累积的新图块开始时清除“累积”图块缓冲
0)0每个开始新图块和开始新子图块命令还指明在将该子图块累积到“累积”图块时 使用的权重。针对输出帧的每个图块,生成开始新图块命令和开始新子图块命令的这种序列。如本领域中已知的,驱动器还将准备用于使图形处理器按适当的方式对每个相应 子图块进行再现的适当的命令序列(其将适当地遵循开始新图块命令和开始新子图块命 令)。图3然后示意性地示出在本发明的第一实施例中图形处理器响应于从其驱动器 接收到这种命令序列的操作。如图3所示,图形处理器将针对每个图块(步骤21)(它将接收该图块的指示新图 块正被开始的“开始新图块”命令)首先清除累积缓冲器57 (步骤22)(即设定“累积”图块 的清除位图)。然后其将对图块执行和累积构成累积操作的N次再现传递序列(步骤23至沈)。如 上文所讨论的,(第一再现传递之后的)每个后续的再现传递将由开始新子图块命令指示, 并且下一“开始新图块”命令将表明当前图块的结束和下一图块的开始。
因而,对于(将针对累积缓冲器执行的N次再现传递序列中的)每次再现传递η (步 骤23),图形处理器将首先清除图块缓冲器(即当前“子图块”将被写入的缓冲器)(步骤Μ)。 (如本领域中已知的,如果需要,图块缓冲器56还可以用缺省背景颜色(即在那些实际上没 有基元被再现到帧的位置处帧将获得的颜色)进行初始化。)图形处理器然后将执行再现传 递η (对子图块η进行再现)并且将结果存储在图块缓冲器56中(步骤25)。一旦该再现传递完成(子图块η被再现到图块缓冲器56),图形处理器然后将图块 缓冲器中如此存储的再现子图块η累积到累积缓冲器57中(步骤沈)。例如,可以使用图形 处理器的着色器或者图块写回逻辑来执行该累积。如本领域的技术人员将意识到的,该累积步骤等同于在传统的累积缓冲操作中执 行的“累积传递”,然而是将再现子图块累积到“累积”图块的传递,而不是将整个再现帧累 积到累积缓冲器中的传递。在通过使用图块写回逻辑来完成累积的情况下,这例如可以重新使用下采样逻辑 53中的加法器进行累积。将图形处理器的着色器用于累积步骤可以避免例如,将用于累积 传递的逻辑添加到图形处理器的需要。一旦当前子图块(所讨论的子图块)以此方式被累积到累积缓冲器中,就将存在新 的“开始新子图块”命令,并且针对所需用于累积缓冲操作的再现传递序列中的下一子图块 (下一再现传递),重复清除图块缓冲器、对子图块进行再现、以及一旦该子图块已被再现就 将所得到的再现子图块累积到累积缓冲器中的步骤23、24、25和26。重复该操作直至对累积缓冲操作所需的再现传递序列中的所有再现传递均已完 成并且累积了所讨论的图块的结果(即所讨论的图块的所有N个子图块均已被生成和累 积)。(在本实施例中,随着累积过程的执行,片元依赖性检查确保阻挡与图块缓冲器 中的特定采样位置关联的所有片元退出再现管线,直至该相同采样位置的所有先前片元均 已退出管线(这也包括先前子图块(或图块)中的相同采样位置的片元)。这确保了按正确的 顺序对每个图块的采样位置进行处理。)。一旦对累积缓冲操作所需的再现传递序列中的所有再现传递均已完成并且累积 了所讨论的图块的结果,就将在累积缓冲器57中存储的累积图块输出到外部存储器帧缓 冲器54 (步骤27)。这里应注意,在以上过程中,当子图块η (图块的第η次再现传递)完成时,该图块 未被写回到外部存储器,而是作为替代被适当地累积在累积缓冲器57中(在步骤沈)。类似地,累积缓冲器57未被写回到外部存储器(到帧缓冲器),直至所讨论的图块 的所有子图块均已被再现和累积(在步骤27)。因而消除了用于累积缓冲操作的所有外部存储器带宽。该过程然后针对构成输出帧的下一图块重复,并且因此返回步骤21和22以清除 累积缓冲器并且开始针对输出帧的下一图块的过程。(将存在用于触发该操作(this)的“开 始新图块”命令。)。然后重复该操作序列(如图3所示)直至在步骤21发现构成输出帧的所有图块均 已被覆盖,在该阶段,帧缓冲器应包含完整的累积输出帧,该完整的累积输出帧然后可以被 显示(或者按所期望的那样以另外的方式输出)。所讨论的帧的累积将因此结束(步骤观)。
图4和5示出根据本发明的图形处理器的操作的第二优选的实施例。如可以从图4看到的,该实施例中的按本发明的方式的操作与上文描述的并且在 图3中示出的前一实施例的操作类似,除了不是完成将相关子图块再现到图块缓冲器并且 只有然后在累积传递中将子图块累积到累积缓冲器中(图3中的步骤25和沈),在该实施例 中,随着再现传递的进行,每个子图块被“直接”再现到累积缓冲器57 (图4中的步骤30)。 该布置具有如下优点其避免了在给定的再现传递(子图块)完成时进行累积传递的需要。图5更详细地、示意性地示出图4的“直接再现”到累积缓冲器中的步骤30。(如本领域的技术人员将意识到的,图5中示出的值“k”和“_k”是在将再现值累 积到累积缓冲器中时应用到这些再现值的适当的权重。权重k可以在需要时按所期望的那 样由处理器适当地存储和取回。如上文所讨论的,权重信息优选地被提供作为开始新图块 命令和开始新子图块命令的一部分。)。如图5所示,在该布置中,当对给定的子图块进行再现时,每当为该子图块再现的 新片元F(i,j)被确定为替换该片元对应的、子图块的图块缓冲器中的(一个或多个)现有再 现采样位置值(即新片元重写(overwrite)图块缓冲器中的现有片元((一个或多个)采样位 置值))时,新再现的片元(即其再现值)被存储在所讨论的采样位置的图块缓冲器56中(如 同对图块进行再现时的常规情况)。(在本实施例中,适当的深度(Z)测试布置用于确定新片 元是否应重写现有片元。如果需要,可以使用其他适当的用于确定新片元是否应重写现有 片元的机制。)。然而,不是简单地将新片元的值添加到所讨论的(一个或多个)采样位置的(一个 或多个)现有累积缓冲器值,在本实施例中如图5中所示,首先在撤消阶段31中从所讨论 的(一个或多个)采样位置的当前累积缓冲器值A(i,j)中适当地减去该片元位置的(所讨论 的采样位置的)前一图块缓冲器值T (i,j)(即正被新片元替换的(一个或多个)图块缓冲器 值),以给出所讨论的片元位置的(采样位置的)“经校正的”累积缓冲器值32。然后,如图5中所示,在累积阶段34中使所讨论的一个或多个采样位置的当前片 元F(i,j)值33与如此确定的(一个或多个)“经校正的”累积缓冲器值32适当地累积以 提供用于存储在所讨论的(一个或多个)采样位置的累积缓冲器中的新累积缓冲器值NA(i, j) 35。该操作的效果是在所讨论的片元对应的、(一个或多个)采样位置的新再现值被 累积在累积缓冲器57中之前,移除(撤消)前一图块缓冲器值(即正由新再现的片元重写的 图块缓冲器值)对累积缓冲器值的影响。因而“撤消”操作考虑了正被再现的子图块内的一些采样位置可能被重写多次的 可能性,然而对于给定的采样位置,累积缓冲器应仅累积子图块中的最终值。例如,如果F1(1,1)、F2(1,1)和F3(l,l)表示将被写入给定子图块的采样位置 (1,1)的三个片元,并且Fl (1,1)重写背景颜色,F2(l,l)重写Fl(l,l),并且F3(l,l)重 写F2(l,l),则在累积缓冲器中累积的所讨论的子图块的该特定采样位置的正确值应是 F3(l, 1)。然而,本实施例的过程通过如上文讨论的那样将每个新再现片元(除非其由现有 片元遮蔽)立即累积到累积缓冲器而进行操作。在没有撤消阶段31的情况下,这将导致累 积缓冲器在这种情况下累积Fl (1,1)、F2(1,1)和F3(l,1)以及背景颜色值。这将给出错误的累积缓冲器值。撤消阶段31通过撤消(移除)累积缓冲器57中先前累积的值(其中这些值被后来 的值重写)的影响而消除了该问题。具体地,在该示例中,当确定Fl (1,1)将重写所讨论的 采样位置的背景颜色时,撤消阶段31将首先从累积缓冲器57中减去位置(1,1)的背景颜 色值,以便在累积步骤结束时,累积缓冲器仅存储位置(1,1)的值F1。类似地,当确定值 F2(l, 1)将重写采样位置(1,1)的当前值时,撤消阶段31将首先从累积缓冲器57中减去位 置(1,1)的当前值F1,以便累积阶段34然后将导致对于位置(1,1)将值F2存储在累积缓 冲器57中,以此类推。因此,如将意识到的,图5中示出的过程实际上操作使得每当将重写现有片元的 新片元退出再现过程时,在将片元再现之后的新图块缓冲器值添加到累积缓冲器之前,从 累积缓冲器中减去适当的采样位置的旧图块缓冲器值。因此这将正确地处理所有透支情形 并且产生与累积缓冲器的常规“累积传递”过程相同的输出。当然,其他布置将是可能的。在该实施例中,累积缓冲器57存储有定点值以促进该方法的操作。在图块缓冲器被初始化为缺省背景颜色(在没有基元被再现的位置处,帧将获得 该缺省背景颜色)的情况下(如上文所讨论的),则在本实施例中,对于所有采样位置,累积 缓冲器57优选地最初被设定为累积该背景缺省颜色,以便确保当在对于任何给定的采样 位置把第一片元累积到累积缓冲器57中时撤消阶段31减去该背景值时,累积缓冲器具有 适当的值。从上文可见在该布置中,当每个片元完成其再现时,其照常被写入图块缓冲器 56,但是不是在更新累积缓冲器57之前等待图块的所有片元完成再现(即等待所讨论的子 图块被完全再现),在图块的新片元将被添加到图块缓冲器时立即更新累积缓冲器57。这因 此消除了每个子图块之间的累积传递的需要,从而提高了性能。如本领域的技术人员将意识到的,如果需要,可以对本发明进行各种修改,并且可 以使用本发明的其他布置。例如,不是在移动到帧的下一图块之前按顺序对给定图块的所 有子图块进行再现,将有可能,例如在图块缓冲器的结构允许的情况下如果需要,在移动到 两个(或更多个)图块的下一集合之前使这两个(或更多个)不同图块的子图块的处理交织。 例如在如图3所示的那样且通过经由图块写回单元使数据从图块缓冲器移动到图块累积 缓冲器来执行累积过程的情况下,这可能更加高效。类似地,由于单独图块所有均为彼此独立的,所以它们可以彼此独立地被处理,并 且因此如果需要,可以例如被并行地处理或者之间被交织。同样地,例如在图块处理按顺序处理来自命令列表的命令,并且每个命令的完成 耗用一定的时间,但是新命令的处理在前一命令的处理开始之后立即开始(使得可以(并 且典型地)并行地处理若干命令),并且每个图块的命令块被排队以逐一地(after each other)处理的情况下,则在这种情况下由于命令可能被并且将被并行地处理,因此在这种 布置中可能有时同时正在处理来自不同图块的命令(即同时正在处理两个或更多个图块)。然而,应注意,即使在存在这种不止一个图块的同时和/或并行处理的情况下,情 况仍然将是,一些图块的处理将在其他图块开始之前完成。如从上文可见的,本发明至少在其优选的实施例中消除了在要求累积缓冲操作时提供全帧累积缓冲器的需要。因此这可以极大地减少在执行累积缓冲操作时的(外部)存储 器带宽,并且因此与传统的累积缓冲器操作相比提供了再现速度的显著增加。此外由于本发明可以提供显著的带宽减少,因此它还促进了更低得多的功率使 用,从而例如促进在功率较低的诸如便携式和嵌入式图形系统和设备中进行累积缓冲操作。至少在本发明的优选的实施例中,这是通过在逐个图块的基础上执行累积过程而 不是跨越整个帧执行累积过程来实现的。而且,累积缓冲器可以被实施在图形处理器的内 部,并且优选地使用图形处理器的现有图块缓冲器来实施。本发明的实施例随着再现的进 行进一步执行累积过程,从而消除了对分开的累积传递的需要。这允许至少在本发明的优选的实施例中使用基于图块的图形处理系统的现有逻 辑在没有额外成本的情况下提供累积缓冲操作,并且至少在本发明的优选的实施例中提供 与传统的再现器相比相当大的速度提升以及纹理缓存和其他缓存查找的减少。
权利要求
1.一种在基于图块的图形处理系统中提供帧的若干再现传递的累积结果作为输出帧 的方法,所述方法包括针对所述输出帧将被划分成的每个图块单独地执行所述若干再现传递并且累积这些 再现传递的结果,以便针对每个图块生成包括所述图块的再现传递的累积结果的输出图 块,并且使得在针对其他图块开始该过程之前,至少针对一个图块完成所有的再现传递以 及这些再现传递的结果的累积;以及组合如此生成的输出图块以提供包括所述帧的所述若干再现传递的累积结果的输出帧。
2.根据权利要求1所述的方法,包括 所述图形处理系统针对将输出的帧的第一图块或者第一多个图块集合,对所述图块或者单独地对所述集 合中的每个图块执行多次再现传递并且累积相应图块或者每个相应图块的这些再现传递 的结果以为所述图块或者所述图块集合中的每个图块提供表示所述图块的所述多次再现 传递的累积结果的图块输出;以及向再现目标输出所述图块或者所述图块集合中的每个图块的累积图块输出;以及 此后针对将输出的帧的第二图块或者第二多个图块集合,对所述图块或者单独地对所述集 合中的每个图块执行所述多次再现传递并且累积相应图块或者每个相应图块的这些再现 传递的结果以为所述第二图块或者所述第二图块集合中的每个图块提供表示所述图块的 所述多次再现传递的累积结果的图块输出;以及向所述再现目标输出所述第二图块或者所述第二图块集合中的每个图块的累积图块 输出;以及对所述输出帧的剩余图块重复这个过程; 由此通过在逐个图块的基础上执行若干再现传递并且累积这些再现传递的结果,生成输出 帧,所述输出帧包括所述输出帧的所述若干再现传递的累积结果。
3.根据权利要求1所述的方法,其中依次单个地对构成所述输出帧的图块进行处理。
4.根据权利要求1所述的方法,其中多个图块同时经历再现和累积过程。
5.根据前面任一权利要求所述的方法,包括将图块的再现传递的结果累积在与所述 图形处理系统的图形处理器一起被提供在片上的图块缓冲器中。
6.根据权利要求1所述的方法,包括当图块的再现传递完成时,在累积传递中将该 再现传递的结果累积在其中存储所述图块的再现传递的累积结果的累积缓冲器中。
7.根据权利要求1所述的方法,包括随着再现传递的进行,将图块的再现传递的再 现结果累积在其中存储所述图块的再现传递的累积结果的累积缓冲器中。
8.根据权利要求1所述的方法,其中,所述图形处理系统包括图形处理器和所述图形 处理器的驱动器,所述驱动器向所述图形处理器发送将由所述图形处理器执行的命令;以 及所述方法进一步包括所述驱动器接收将输出需要累积缓冲操作的帧的指令;将所述帧的要进入累积缓冲器中的子帧组合为所述图形处理器的单个任务;以及 准备命令序列并且将其发送到所述图形处理器,所述命令序列包括针对将输出的帧的 每个图块的、开始新图块命令和开始新子图块命令序列,每个这样的开始新子图块命令指 令所述图形处理器对于所讨论的图块开始在对所述帧的累积缓冲操作所需的再现传递序 列中的一次再现传递。
9.一种操作基于图块的图形处理器的驱动器的方法,所述方法包括 所述驱动器接收将输出需要累积缓冲操作的帧的指令;将所述帧的要进入累积缓冲器中的子帧组合为所述图形处理器的单个任务;以及 准备命令序列并且将其发送到所述图形处理器,所述命令序列包括针对将输出的帧的 每个图块的、开始新图块命令和开始新子图块命令序列,每个这样的开始新子图块命令指 令所述图形处理器对于所讨论的图块开始在对所述帧的累积缓冲操作所需的再现传递序 列中的一次再现传递。
10.一种基于图块的图形处理系统,包括图形处理器,被配置为针对帧将被划分成的每个图块单独地执行若干再现传递并且累 积这些再现传递的结果,以便针对每个图块生成包括所述图块的再现传递的累积结果的输 出图块,并且使得在针对其他图块开始该过程之前,至少针对一个图块完成所有的再现传 递以及这些再现传递的结果的累积;以及输出缓冲器,将如此生成的输出图块被组合到该输出缓冲器中以提供包括每个图块的 所述若干再现传递的累积结果的输出帧。
11.根据权利要求10所述的基于图块的图形处理系统,其中 所述图形处理器被配置为针对将输出的帧的第一图块或者第一多个图块集合,对所述图块或者单独地对所述集 合中的每个图块执行多次再现传递并且累积相应图块或者每个相应图块的这些再现传递 的结果以为所述图块或者所述图块集合中的每个图块提供表示所述图块的所述多次再现 传递的累积结果的图块输出;以及向再现目标输出所述图块或者所述图块集合中的每个图块的累积图块输出;以及 此后针对将输出的帧的第二图块或者第二多个图块集合,对所述图块或者单独地对所述集 合中的每个图块执行所述多次再现传递并且累积相应图块或者每个相应图块的这些再现 传递的结果以为所述第二图块或者所述第二图块集合中的每个图块提供表示所述图块的 所述多次再现传递的累积结果的图块输出;以及向所述再现目标输出所述第二图块或者所述第二图块集合中的每个图块的累积图块 输出;以及对所述输出帧的剩余图块重复这个过程; 由此通过在逐个图块的基础上执行若干再现传递并且累积这些再现传递的结果,生成用于 显示的输出帧,所述输出帧包括所述输出帧的所述若干再现传递的累积结果。
12.根据权利要求10所述的系统,其中依次单个地对构成所述输出帧的图块进行处理。
13.根据权利要求10所述的系统,其中多个图块同时经历再现和累积过程。
14.根据权利要求10至13中任何一个所述的系统,包括用于累积图块的再现传递的 结果的图块缓冲器,其与所述图形处理系统的所述图形处理器一起被提供在片上。
15.根据权利要求10所述的系统,包括累积缓冲器,在其中存储图块的再现传递的 累积结果;且其中所述图形处理器被配置为当图块的再现传递完成时执行累积传递以在所 述累积缓冲器中累积所述再现传递的结果。
16.根据权利要求10所述的系统,包括累积缓冲器,在其中存储图块的再现传递的 累积结果;且其中所述图形处理器被配置为随着再现传递的进行,在所述累积缓冲器中累 积图块的再现传递的再现结果。
17.根据权利要求10所述的系统,其中所述图形处理系统包括图形处理器;以及所述图形处理器的驱动器,向所述图形处理器发送将由所述图形处理器执行的命令;以及所述驱动器被布置为接收将输出需要累积缓冲操作的帧的指令;将所述帧的要进入累积缓冲器中的子帧组合为所述图形处理器的单个任务;以及准备命令序列并且将其发送到所述图形处理器,所述命令序列包括针对将输出的帧的 每个图块的、开始新图块命令和开始新子图块命令序列,每个这样的开始新子图块命令指 令所述图形处理器对于所讨论的图块开始在对所述帧的累积缓冲操作所需的再现传递序 列中的一次再现传递。
18.一种基于图块的图形处理器的驱动器,被配置为响应于接收到将显示需要累积缓冲操作的帧的指令,将所述帧的要进入累积缓冲器中 的子帧组合为所述图形处理器的单个任务;以及准备命令序列并且将其发送到所述图形处理器,所述命令序列包括针对将输出的帧的 每个图块的、开始新图块命令和开始新子图块命令序列,每个这样的命令指令所述图形处 理器对于所讨论的图块开始在对所述帧的累积缓冲操作所需的再现传递序列中的一次再 现传递。
19.一种包括计算机软件代码部分的计算机程序元件,当所述程序元件在数据处理部 件上运行时,用于执行根据权利要求1至9中任何一个所述的方法。
全文摘要
本发明涉及图形处理系统。图形处理系统中的“累积缓冲”过程不是通过依次对构成累积帧的每个子帧全面地再现来执行的,而是通过使构成累积帧的每个单独图块(2、3、4和5)单独地经历不同再现传递序列来执行的。因此,对于构成累积帧的每个单独图块,依次生成若干子图块(例如2'、2"、2'"和2"")并且将其累积在一起以提供作为所讨论的图块的累积版本而输出的最终累积图块(2ACC)。然后针对构成累积帧(1)的剩余单独图块(3、4和5)中的每个重复该过程,并且将单独的累积图块(2ACC、3ACC、4ACC和5ACC)组合在一起以提供输出累积帧(6)。
文档编号G06T1/20GK102103739SQ20101059392
公开日2011年6月22日 申请日期2010年12月17日 优先权日2009年12月17日
发明者赫格隆德 F., 耶蒙内斯 O. 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1