CN104424621B - 基于图块的图形处理流水线和操作图形处理流水线的方法 - Google Patents

基于图块的图形处理流水线和操作图形处理流水线的方法 Download PDF

Info

Publication number
CN104424621B
CN104424621B CN201410440493.0A CN201410440493A CN104424621B CN 104424621 B CN104424621 B CN 104424621B CN 201410440493 A CN201410440493 A CN 201410440493A CN 104424621 B CN104424621 B CN 104424621B
Authority
CN
China
Prior art keywords
segment
processing
post
stored
sampling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410440493.0A
Other languages
English (en)
Other versions
CN104424621A (zh
Inventor
S·T·埃利斯
J·尼斯塔德
A·恩格-哈斯特维德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN104424621A publication Critical patent/CN104424621A/zh
Application granted granted Critical
Publication of CN104424621B publication Critical patent/CN104424621B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

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

Abstract

基于图块的图形处理流水线和操作图形处理流水线的方法。当在基于图块的图形处理流水线中处理图块的集合以生成输出时,针对图块的集合中的一个或更多个图块,所述流水线渲染包含将在处理操作中使用的数据的一个或更多个渲染目标(602),并且将所述渲染目标存储在图块缓冲器中(604)。所述流水线还存储一个或多个渲染目标的一些而非全部的采样位置值,以在处理图块的集合中的相邻图块时使用(606)。所述流水线然后使用所存储的一个或多个渲染目标(608)和来自图块的集合中的另一相邻图块的一个或更多个存储的采样位置值对所述图块执行处理操作,以生成所述图块的输出(612)。

Description

基于图块的图形处理流水线和操作图形处理流水线的方法
技术领域
本发明涉及图形处理系统,并且特别地涉及基于图块(tile)的图形处理系统。
背景技术
如本领域中已知的那样,通常通过首先将待生成的输出(诸如待显示的帧)划分成多个类似的基本分量(所称的“图元(primitive)”)以使得能够更容易地执行图形处理操作。这些“图元”通常形式为简单的多边形,诸如三角形。
图形图元通常由图形处理系统的应用程序接口使用从要求图形输出的应用(例如游戏)接收到的图形绘制指令(请求)来生成。
每个图元在这个阶段通常由一组顶点来定义和表示。图元的每个顶点与表示该顶点的一组数据(诸如位置、颜色、纹理及其它属性数据)相关联。这个数据然后例如在对顶点(顶点所涉及的(一个或更多个)图元)进行光栅化和渲染时使用,以便生成期望的图形处理系统输出。
在生成并定义了图元和它们的顶点后,它们能够被图形处理系统处理,例如以便显示帧。
这个处理基本上涉及确定覆盖待处理的输出区域的采样点的阵列的哪些采样点被图元覆盖,然后确定每个采样点在该采样点处表示图元所应具有的外观(例如,在其颜色等方面)。这些处理通常分别被称为光栅化和渲染。
光栅化处理确定应被用于图元的采样位置(即,要被用于在输出(例如待显示的场景)中表示图元的采样点的(x,y)位置)。这通常使用图元的顶点的位置来完成。
接着,渲染处理得到表示采样点处的图元所必需的诸如红、绿和蓝(RGB)颜色值和“Alpha(阿尔法)”(透明度)值的数据(即,对每个采样点“着色”)。如本领域中已知的那样,这可以涉及应用纹理、使采样点数据值混合等。
(在图形文献中,术语“光栅化(rasterisation)”有时被用来表示图元转换到采样位置及渲染两者。然而,在本文中,“光栅化”将仅被用于表示将图元数据转换为采样点地址。)
这些处理通常通过测试一个采样点的或超过一个的采样点的集合,然后针对所发现的被包括在关注的(正在被测试的)所述图元内部(被其覆盖)的采样点的采样点的每个集合生成离散图形实体,所述离散图形实体通常称为被执行了图形处理操作(诸如渲染)的“片段(fragment)”。因此,被覆盖的采样点实际上被处理为片段,所述片段将被用来渲染所关注的所述采样点处的图元。“片段”是经过渲染处理(渲染流水线)的图形实体。根据图形处理系统是如何构造的,所生成和被处理的各个片段例如可以表示单个采样点或多个采样点的集合。
(因此,“片段”实际上是如内插到图元的一个或多个给定输出空间采样点的图元数据的集合(与所述图元数据相关联)。片段还可以包括在关注的所述采样点(片段位置)处对图元着色所需要的每图元的数据和其它状态数据。每个图形片段通常可以是与输出(例如输出帧)的“像素”相同的大小和位置(因为当像素是最终显示中的奇异点(singularity),图形处理器所操作(渲染)的“片段”与显示器的像素之间可以存在一对一映射)。然而,情况可以是这样的,即,在片段与显示器像素之间不存在一对一对应,例如在显示最终图像之前在渲染的图像上执行特定形式的后处理(诸如下采样)的情况下。)
(情况还可能是,由于给定位置处的例如来自不同的重叠图元的多个片段可彼此影响(例如,由于透明度和/或混合),最终的像素输出可能取决于像素位置处的多个或全部片段。)
(相应地,可存在采样点与显示器的像素之间的一对一对应,但是更典型地,可能不存在采样点与显示器像素之间的一对一对应,因为可以对渲染的采样值执行下采样以生成用于显示最终图像的输出像素值。类似地,如果给定位置处的例如来自不同的重叠图元的多个采样点值可以彼此影响(例如,由于透明度和/或混合),则最终的像素输出还将取决于该像素位置处的多个重叠的采样值。)
如本领域中已知的那样,图形处理系统和图形处理器通常以图形处理流水线的形式提供,所述图形处理流水线具有用于执行生成所期望的一组输出图形数据(例如可以表示待显示的帧中的全部或一部分)所必需的图形处理功能的多个处理级,所述图形处理功能诸如是取回输入数据、几何处理、顶点着色、光栅化、渲染等。
图形处理流水线的处理级例如可以是固定功能单元(硬件)的形式,或者所述功能单元中的一些或全部可以是可编程的(用能够被编程为执行所期望的操作的可编程电路来提供)。例如,图形处理流水线可以包括用于执行期望的顶点和/或片段着色操作的可编程顶点和/或片段着色器。
基于图块的图形处理流水线还将包括所谓的图块缓冲器,该图块缓冲器将渲染的片段数据存储在流水线的末端直到给定图块完成并且写出到外部存储器(诸如帧缓冲器)以供使用为止。这个本地流水线存储器用于在数据被最终导出到外部存储器之前在本地保持片段数据,并且典型的形式是针对这个目的而留出的片上RAM。
图形处理流水线将典型地具有为了用作图块缓冲器而留出的RAM的固定分配。这可以包括例如一个或更多个颜色缓冲器以及深度和/或深度与模版缓冲器,所述一个或更多个颜色缓冲器中的每一个都具有适于存储一个被渲染的图块的颜色(RGB或RGBa)数据,而深度和/或深度与模版缓冲器用于存储图块的深度和/或模版数据。
为了便于将渲染的图形数据从图块缓冲器写到外部存储器(诸如帧缓冲器),图形处理流水线将典型地包括出于这个目的而耦合到图块缓冲器流水线存储器的写出电路。图形处理流水线还可以设置有固定功能下采样电路以用于在本地存储的数据需要被写出到外部存储器时之前对本地存储的数据进行下采样(例如,可以是出于抗叠(anti-aliasing)目的以过采样的或多重采样的方式渲染待显示的帧的情况)。
越来越期望在执行图形处理时执行所谓的“延迟着色(deferred shading)”。在进行延迟着色时,应用执行多次渲染操作(pass)。它在第一渲染操作中使用多个渲染目标以向单独的多个渲染目标输出颜色、深度、表面法线以及潜在地其它属性。这些渲染输出然后通常被存储在一组缓冲器中(例如在主存储器中)以供使用,所述缓冲器通常被称为G-缓冲器(通用缓冲器)。来自第一渲染操作的输出然后被读回图形处理流水线来做复杂的光线计算和合成以在第二渲染操作中产生最终结果。这需要大量带宽来读写全部的渲染目标(因为应用将通常例如在第一操作中写出多个渲染目标,并且然后在第二操作中将渲染目标用作纹理来生成最终结果)。
在低功率和便携式装置中的图形处理器中,将数据从图形处理流水线写入外部存储器的带宽成本和用于将数据从外部存储器读取到图形处理流水线的本地存储器以用于延迟着色的反向操作的带宽成本可能是重大问题。带宽消耗可以是热量和功率消耗的较大来源,因此通常期望设法降低嵌入式图形处理系统中用于外部存储器读写的带宽消耗。
已提出了各种技术来设法降低图形处理系统中用于外部存储器读写的带宽消耗。这些技术例如包括使用纹理和帧缓冲器压缩来设法减少必须写/读的数据量,和/或设法消除不必要的外部存储器(例如帧缓冲器)读写事务(操作)。
尽管有这些已知的技术,申请人相信对于在图形处理流水线中特别是在基于图块的图形处理流水线中执行例如延迟着色的改进的技术而言,仍然存在进一步的改进空间。
发明内容
根据本发明的第一方面,提供了一种操作基于图块的图形处理流水线的方法,所述基于图块的图形处理流水线包括:
多个处理级,至少包括光栅化器和渲染器,所述光栅化器对输入的图元进行光栅化以生成待处理的多个图形片段,每个图形片段都与一个或更多个采样点相关联,所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,被构造成将所述图块缓冲器中存储的数据写到所述外部存储器;
该方法包括以下步骤:
所述图形处理流水线在处理图块的集合以生成输出时,针对所述图块的集合中的第一图块:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样点阵列相对应的采样位置值阵列;
使用所存储的至少一个渲染目标对所述图块执行处理操作生成针对所述图块的输出;以及
存储所述图块的所述至少一个渲染目标中的一个或多个渲染目标的一些但非全部的采样位置值以在处理所述图块的集合中的至少一个其它图块时使用;并且
针对所述图块的集合中的另一个图块:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样点阵列相对应的采样位置值阵列;以及
使用所存储的至少一个渲染目标和来自所述第一图块的被存储以在处理所述图块的集合中的另一个图块时使用的所述采样位置值中的一个或更多个,对所述另一个图块执行处理操作以生成针对所述另一个图块的输出。
根据本发明的第二方面,提供了一种基于图块的图形处理流水线,包括:
多个处理级,至少包括光栅化器和渲染器,所述光栅化器对输入的图元进行光栅化以生成待处理的多个图形片段,每个图形片段都与一个或更多个采样点相关联,所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储存储渲染的片段数据;以及
写出级,被构造成将所述图块缓冲器中存储的数据写到所述外部存储器;
其中,所述图形处理流水线被构造成在处理图块的集合以生成输出时:
针对所述图块的集合中的第一图块:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样点阵列相对应的采样位置值阵列;
使用所存储的至少一个渲染目标对所述图块执行处理操作以生成针对所述图块的输出;以及
存储所述图块的所述至少一个渲染目标中的一个或多个渲染目标的一些但非全部的采样位置值,以在处理所述图块的集合中的至少另一个图块时使用;并且
针对所述图块的集合中的另一个图块:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与所述图块的采样点阵列相对应的采样位置值阵列;以及
使用所存储的至少一个渲染目标和来自所述第一图块的被存储以在处理所述图块的集合中的另一个图块时使用的所述采样位置值中的一个或更多个,对所述另一个图块执行处理操作以生成针对所述另一个图块的输出。
本发明涉及基于图块的图形处理流水线,其中当正在渲染图块的集合以生成输出时,使用针对给定图块而渲染的数据来执行处理操作,所述处理操作用于为提供针对图块的输出结果。如将在下面进一步讨论的,所述处理操作可以包括例如延迟着色操作、压缩操作、图像处理操作等。
然而,在本发明中,并且在针对给定图块的处理操作而生成针对关注的图块的一个或多个渲染目标并使用所述一个或多个渲染目标中,针对一个图块的一个或多个渲染目标而生成的采样位置值中的一些但非全部的采样位置值被存储以在执行针对另一个图块(例如且优选地为相邻的图块)执行处理操作时使用。然后,当另一个图块(例如,相邻图块)将被处理时,所存储的前一个图块的采样位置值在处理该另一个图块时被使用。这具有能够以具有更高的带宽和存储器效率的方式在基于图块的图形处理流水线中执行诸如延迟着色操作的处理操作的效果,如将在下面进一步讨论的那样。
特别地,本发明例如能够使得延迟着色操作能够在基于图块的图形处理系统中在例如无需存储和后续再存储所有已渲染图块数据的情况下执行。因此,本发明能够有利于以降低的外部带宽成本执行这样的操作,而不写出和读回庞大的G-缓冲器,从而使得这些技术能够被应用在嵌入的空间中。这进而能够导致提高的系统性能和减少的功率消耗。
申请人已特别地认识到,可由图形处理流水线应用的一些处理操作可能需要与例如邻近特定采样位置的采样位置相对应的采样位置值。申请人进一步认识到,在基于图块的系统中,特定的采样位置(例如在正在被处理的特定图块的边缘处或附近的采样位置)的相邻采样位置中的一些采样位置实际上可以是在与正在被处理的特定图块相邻的图块中。本发明通过存储为了处理另一个图块(例如,相邻图块)而针对给定图块所生成的采样位置值中的一些而非全部的采样位置值来对此进行解决。以这种方式,在处理相邻图块时所需的采样位置值可由图形处理流水线使用。
然而,申请人认识到,没必要存储图块的全部已渲染数据以在执行诸如延迟着色的处理操作时与后续图块一起使用。因此,通过仅存储来自前一图块的采样位置值中的一些而非全部,避免了完整的图块的数据(例如G-缓冲器)的存储以及写出和读回。与例如简单地存储所有已渲染图块数据以供以后使用相比,这使得处理操作(例如延迟着色)能够以具有更高的带宽和存储器效率的方式执行。
本发明同样扩展到存储针对给定图块生成的采样位置值以在处理相邻图块时使用的操作。
因此,根据本发明的另一方面,提供了一种操作基于图块的图形处理流水线的方法,所述基于图块的图形处理流水线包括:
多个处理级,至少包括光栅化器和渲染器,所述光栅化器对输入的图元进行光栅化以生成待处理的多个图形片段,每个图形片段都与一个或更多个采样点相关联,所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,被构造成将存储在所述图块缓冲器中的数据写到所述外部存储器;该方法包括以下步骤:
所述图形处理流水线在处理图块的集合以生成输出时:
针对所述图块的集合中的至少一个图块:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样点阵列相对应的采样位置值阵列;
使用所存储的至少一个渲染目标中的至少一个对所述图块执行处理操作以生成针对所述图块的输出;以及
存储所述图块的所述至少一个渲染目标中的一个或多个渲染目标的一些而非全部的采样位置值,以在处理所述图块的集合中的另一个图块时使用。
根据本发明的另一方面,提供了一种基于图块的图形处理流水线,包括:
多个处理级,至少包括光栅化器和渲染器,所述光栅化器对输入的图元进行光栅化以生成待处理的多个图形片段,每个图形片段都与一个或更多个采样点相关联,所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,被构造成将存储在所述图块缓冲器中的数据写到所述外部存储器;
其中,所述图形处理流水线被构造成在处理图块的集合以生成输出时:
针对所述图块的集合中的至少一个图块:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样点阵列相对应的采样位置值阵列;
使用所存储的至少一个渲染目标中的至少一个对所述图块执行处理操作以生成针对所述图块的输出;以及
存储所述图块的所述至少一个渲染目标中的一个或多个渲染目标的一些而非全部的采样位置值以在处理所述图块的集合中的另一个图块时使用。
相应地,本发明同样扩展到在处理图块时对来自前一图块的存储的采样位置值的使用。
因此,根据本发明的另一方面,提供了一种操作基于图块的图形处理流水线的方法,所述基于图块的图形处理流水线包括:
多个处理级,至少包括光栅化器和渲染器,所述光栅化器对输入的图元进行光栅化以生成待处理的多个图形片段,每个图形片段都与一个或更多个采样点相关联,所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,被构造成将存储在所述图块缓冲器中的数据写到所述外部存储器;
该方法包括以下步骤:
所述图形处理流水线在处理图块的集合以生成输出时:
针对所述图块的集合中的至少一个图块:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样点阵列相对应的采样位置值阵列;以及
从存储器读取来自针对所述图块的集合中的之前处理的图块而生成的一个或更多个渲染目标的一些而非全部的采样位置值;以及
使用所述图块的所存储的至少一个渲染目标中的至少一个和来自所述图块的集合中的之前处理的图块的一个或更多个渲染目标的读取的采样位置值,对所述图块执行处理操作以生成针对所述图块的输出。
根据本发明的另一方面,提供了一种基于图块的图形处理流水线,包括:
多个处理级,至少包括光栅化器和渲染器,所述光栅化器对输入的图元进行光栅化以生成待处理的多个图形片段,每个图形片段都与一个或更多个采样点相关联,所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,被构造成将存储在所述图块缓冲器中的数据写到所述外部存储器;
其中,所述图形处理流水线被构造成在处理图块的集合以生成输出时:
针对所述图块的集合中的至少一个图块:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样点阵列相对应的采样位置值阵列;
从存储器读取来自针对所述图块的集合中的之前处理的图块而生成的一个或更多个渲染目标的一些而非全部的采样位置值;以及
使用所述图块的所存储的至少一个渲染目标中的至少一个和来自所述图块的集合中的之前处理的图块的一个或更多个渲染目标的读取的采样位置值,对所述图块执行处理操作以生成针对所述图块的输出。
图形处理流水线的光栅化器如本领域中已知的那样生成待渲染的图形片段以生成针对所期望的图形输出(如待显示的帧)的采样点的渲染的图形数据。由光栅化器生成的每个图形片段都与图形输出的采样点的集合相关联,并且将被用于生成针对与所述片段相关联的采样点的集合中的采样点中的一个或更多个采样点的渲染的图形数据。
光栅化器可以被构造成生成片段以按照任何期望的且适合的方式进行渲染。如本领域中已知的那样,光栅化器将例如接收待光栅化的图元,对照采样点位置的集合来测试那些图元,并且因此生成表示所述图元的片段。
如在本领域中已知的那样,渲染器应处理由光栅化器生成的片段以针对所述片段表示(覆盖)的采样点生成渲染的片段数据。这些渲染处理可包括例如片段着色(shading)、混合、纹理映射等。在优选实施方式中,渲染器采用可编程片段着色器的形式或者包括可编程片段着色器。
如本领域中已知的那样,图块缓冲器将存储正在考虑的图块的采样值的阵列或多个阵列。图块缓冲器将存储采样位置阵列的数据值,其中采样位置的各个集合例如并且优选地与已被渲染的片段数据所涉及的输出数据阵列的相应像素相对应并且相关联。
这些采样值通常并且在优选实施方式中被组合成分别与正在考虑的图块中的相应的(例如显示器)像素相关联的多个采样值的集合(诸如多个2x2个采样值的组)。采样值例如可以包括颜色值(颜色缓冲器)、深度值(深度缓冲器)等。
如在本领域中已知的那样,写出级(单元)工作以将图块缓冲器中的数据(在图块缓冲器中的数据完成后)写出到外部(主)存储器(例如,帧缓冲器)。如在本领域中已知的那样,必要时,这可以包括以固定方式或以可变方式将图块缓冲器中的采样值下采样(平均)为待写入主存储器(例如帧缓冲器)的最后输出(像素)值和/或其它输出。
在本发明中处理的图块的集合可以是任何期望且适合的图块集合,所述图块一起组成将使用图形处理流水线生成的输出(诸如期望的渲染输出)。在一个优选实施方式中,输出是例如待显示的输出帧。在另一优选实施方式中,所述输出是纹理。图块集合优选地包括超过两个图块,并且优选地包括超过三个图块。
图块能够采用任何期望且适合的形状。然而,在优选实施方式中,图块是矩形(包括并且优选为正方形)。每个图块可以是W个采样位置宽(在水平方向上)乘H个采样位置高(在垂直方向上)。在优选实施方式中,W是16个采样位置和/或H是16个采样位置。必要时,待生成的不同输出能够使用不同尺寸的图块。
优选地对正在被处理的图块集合中的每个图块适当地执行本发明的方式的操作以生成输出。因此,在优选实施方式中,在图块集合包括四个或更多个图块的情况下,针对图块集合中的图块中的两个图块或更多个(针对多个图块),本发明包括(并且图形处理流水线被构造成):
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将至少一个渲染目标存储在图块缓冲器中;
存储所述图块的至少一个渲染目标中的一个或多个渲染目标的一些而非全部的存储采样位置值以在处理图块集合中的至少一个其它图块时使用;以及
使用所存储的至少一个或多个渲染目标和来自图块集合中的至少一个其它图块的一个或更多个存储的采样位置值对所述图块执行处理操作,以输出针对所述图块的输出。
在优选实施方式中,针对正在被处理的图块集合中的每个图块执行这个操作,对所述集合中的要处理的第一图块(不存在任何先前处理的图块)和所述集合中的要处理的最后一个图块(不存在待处理的任何后续图块)进行保存。
图块的一个或多个渲染目标的采样位置值中的一些而非全部被存储以在处理时使用的所述其它一个图块或多个图块可以是图块集合中的任一个或多个期望的其它图块。然而,在特别优选的实施方式中,是图块集合中的相邻的一个或多个图块。因此,在特别优选的实施方式中,本发明包括为针对图块生成的至少一个渲染目标的一个或多个渲染目标存储采样位置值中的一些而非全部以在处理图块集合中的相邻的(至少一个相邻的)图块时使用。相应地,处理操作使用来自另一个(例如第一)图块的存储的采样位置值所针对的图块集合中的另一图块优选地包括所述图块集合中的与所述图块(该图块被存储了采样位置值且所述采样位置值正被用于处理操作)相邻的图块。
如在本领域中已知的那样,图块的渲染目标(或多个渲染目标)将包括与图块所对应(表示)的采样位置相对应的采样位置值的阵列。例如,取决于正在执行的特定处理操作,采样位置值可以包括例如深度值、颜色值(RGB值)、法线值、透明度值等中的一个或更多个。
可以以任何期望和适合的方式得到渲染目标的采样位置值。在优选实施方式中,采样位置值是通过在所述图块的采样位置方面执行一个或更多个渲染处理而得到的。一个或更多个渲染处理可以包括例如纹理化、片段着色以及混合中的一个或更多个。
对包含用于处理操作的数据的输入数据渲染目标(或多个)的渲染能够按照需要来触发和执行,例如并优选地通过正常方式触发所述图形处理流水线的适当渲染操作。
取决于处理操作的性质,可以按照需要来选择针对图块生成的用于处理操作的渲染目标的数量。对于某些处理操作,诸如数据(例如纹理)压缩或解压缩,每个图块可能仅需要单个渲染目标(例如,包含待压缩或解压缩的纹理或图像)。另一方面,对于延迟着色操作,例如,针对每个图块可能需要并生成多个渲染目标(因此,多个渲染目标中的每一个的一些而非全部的采样位置数据将被存储以在处理相邻图块时使用)。在延迟着色操作的情况下,输入数据渲染目标可以包括例如颜色数据、深度数据、曲面法线、其它属性等。
在图块需要多个渲染目标情况下,那些渲染目标优选地全部生成并同时存储在图块缓冲器中。因此,在优选实施方式中,图块缓冲器被构造成能够(并且可构造成)同时地存储多个渲染目标。
图块的多个渲染目标可以以任何适合且期望的方式存储在图块缓冲器中。例如,图块缓冲器可以被调整大小以便容纳多个颜色缓冲器(每个都能够用来存储渲染目标)。因此,图块缓冲器中可以存在为相应的渲染目标留出的固定分配。然而,在优选实施方式中,这可以按照本申请人的于2013年5月2日提交且发明名称为Graphics Processing Systems(图形处理系统)的美国专利申请No.13/875831中描述的方式完成,通过引用的方式将其整体并入本文中。
因此,在优选实施方式中,图块缓冲器包括被分配的量的存储器以用作为图块缓冲器,并且图形处理系统(图形处理流水线是所述图形处理系统的一部分)包括存储器分配器,所述存储器分配器被构造成针对要由图形处理系统生成的渲染输出确定要生成的每个渲染目标的图块数据存储要求,并且可操作为基于所述确定而将存储器的被分配用于图块缓冲器的部分分配给渲染目标中的相应目标,其中图形处理流水线为渲染输出而生成相应的渲染目标的渲染的图块数据,然后将渲染的图块数据存储在图块缓冲器的分配给相应渲染目标的部分中。
在这些实施方式中,图形处理流水线的驱动程序优选地执行确定和图块缓冲器存储器分配(驱动程序是存储器分配器)。
通过将图块缓冲器存储器空间内的不同地址分配给渲染目标,图块缓冲器在不同的渲染目标之间被优选地按比例分配,并且每个渲染目标优选地具有与它相关联的渲染目标描述符形式的状态信息,该状态信息指示所述渲染目标的数据应该被写入的图块缓冲器区(图形处理流水线的处理级然后使用来确定在哪里存储所述渲染目标的渲染的图块数据)。
使用图块数据执行的处理操作可以是任何期望且适合的处理操作。在优选实施方式中,它是以下中的一项:延迟着色操作;数据压缩或解压缩操作;以及图像处理操作。在优选实施方式中,它是延迟着色操作,诸如延迟打光(deferred lighting)操作。
能够按照需要来执行处理操作,例如取决于处理操作的性质。例如,图形处理流水线能够具有执行处理操作的固定功能处理硬件(并且在一个优选实施方式中情况是这样的)。
然而,在特别优选的实施方式中,图形处理流水线包括可操作为(能够被编程为)执行处理操作的可编程处理级。因此,在优选实施方式中,图形处理流水线包括可编程处理级,该可编程处理级可操作为响应于一个或更多个图形程序指令,读取存储在图块缓冲器中的数据(例如,优选地,从图块缓冲器中的一个或更多个(或者两个或更多个)渲染目标读取数据),并且从来自先前处理过的例如相邻的一个或更多个图块所被存储的存储器的存储的数据值读取数据,并且接着使用读取的数据来执行处理操作(例如,优选地,延迟着色操作)。
在一个优选实施方式中,处理操作针对图块使用一个渲染目标。在另一优选实施方式中,处理操作针对图块使用多个渲染目标。
处理操作优选地得到图块的一个或超过一个输出值。每个输出值优选地分别对应于图块的采样位置。
在一个优选实施方式中,处理操作得到图块的采样位置值的输出阵列,其中所述采样位置值例如优选地与图块的每个采样位置相对应。在另一优选实施方式中,处理操作得到图块的单个或仅几个输出值。在这种情况下,一个或更多个输出值优选地包括所关注的图块的采样位置中的一些而非全部的采样位置的一个或多个输出值。
所述一个或多个输出值能够以任何期望且适合的方式从采样位置值得到。
在优选实施方式中,处理操作使用来自渲染目标(或多个目标)的采样位置值的集合(核)来得到输出值(和每个输出值)。被优选地使用的采样位置值的集合优选地包括采样位置值阵列(例如,采样位置值的3x3阵列),其包括正在被生成输出值的采样位置。因此,在优选实施方式中,处理操作使用来自(多个)采样位置(来自一个或来自超过一个的渲染目标)的集合的采样位置值来生成针对给定采样位置的输出值,并且正在被生成输出值的采样位置优选地是所述采样位置的集合中的正在被用来生成输出值的采样位置中的一个。
能够从要被使用以得到输出值(和每个输出值)的每个渲染目标使用相同的采样位置值集合(核),或者能够在得到输出值(用于处理操作)时从不同的渲染目标使用不同的采样位置值集合(核)。
在一些实施方式中,用于产生给定采样位置的输出结果的采样位置集合(核)可以围绕所述采样位置(即,正在被处理的采样位置可以在正在被使用的采样位置集合(处理核)的中央处或者朝向该采样位置集合的中央)。
然而,申请人已认识到,这可能意味着,例如图块中(例如在图块的左上角)的一些采样位置可能需要来自例如图块的集合(例如,特定图块上方的相邻图块、在特定图块左侧的相邻图块、以及特定图块的左上方的相邻图块)的采样位置值,但是该图块中(例如在图块的右下角中)的其它采样位置可能需要来自不同的图块的集合(例如三个相邻图块(例如,在所述图块下方的相邻图块、在所述图块右侧的相邻图块、以及在所述图块右下方的相邻图块))的采样位置值。这可以意味着,在给定图块能够被处理之前,将需要得到和存储的大量图块的采样位置值。
为了解决这个问题,在特别优选的实施方式中,由处理操作用来产生给定(并且针对每一个)采样位置的输出结果的采样位置集合(核)被构造为约束(减少)在处理给定图块时不同(例如,相邻的)图块(可能需要来自这些图块的采样位置数据)的数量。优选地,方案是这样的,即,在处理给定图块时,将需要来自不超过三个其它图块的采样位置数据。
在优选实施方式中,这通过以下方式来实现,即,构造用来产生给定采样位置(和要被生成输出值的每个采样位置)的输出结果的采样位置的集合(核),使得所述采样位置的集合(核)不围绕所关注的采样位置(即,使得被关注的采样位置(被生成了输出值的采样位置)位于将被用于产生所关注的采样位置的输出结果的采样位置的集合(核)的边缘处)。
在特别优选的这样的实施方式中,处理操作被构造为使得针对将被生成输出值的一采样位置并且优选地针对将被生成输出值的每个采样位置,将被生成输出结果的采样位置位于将用来产生所述采样位置的输出结果的采样位置集合(核)的角部。
这意味着,针对任何给定图块的采样位置的处理操作将至多需要来自仅三个相邻图块(作为与正在被生成输出值的采样位置相反的采样位置集合(核)的角部相邻的图块)(例如,特定图块上方的相邻图块、特定图块左侧的相邻图块、以及特定图块左上方的图块)的采样位置的采样位置值。这减少了输出的例如需要被首先处理以在特定图块被处理之前(例如在特定图块上方和/或左则的那些图块之前)得到采样位置值的图块的数量。
从上文将了解的是,处理操作将典型地包括并且在优选实施方式中包括生成针对正在被处理的图块的一个或更多个采样位置(在优选实施方式中针对每一个采样位置)的输出值。此外,取决于将被用于针对待生成的每个采样位置输出值的处理操作的采样位置值的数量,将理解,在图块中的一些采样位置(例如内部采样位置)方面,处理操作将简单地使用所关注的图块的采样位置值,然而对于图块中的其它采样位置(例如外部或边缘采样位置),处理操作将使用所关注的图块的采样位置值和来自一个或更多个其它图块(例如相邻图块)的所存储的采样位置值二者。因此,在优选实施方式中,处理操作生成图块内的多个的采样位置的输出值,并且对于那些采样位置中的一些采样位置仅使用所关注的图块的采样位置值,而对于采样位置中的其它采样位置则使用来自所关注的图块的采样位置值和所存储的来自至少一个其它图块(例如,优选地,相邻图块)的采样位置值。
在处理操作使用来自另一个图块或多个图块(例如,相邻的一个或多个图块)的采样值的情况下,图形处理流水线将读取(并且在处理操作中使用)所存储的一个或更多个其它先前处理过的图块的一个或多个渲染目标的采样位置的一些而非全部的采样位置值。
可以以任何适合且期望的方式使用处理操作的输出(例如,针对图块生成的一个或多个输出值)。它优选地被存储用于以后使用。在优选实施方式中,针对图块的处理操作的输出(结果)被写入图块缓冲器中的输出渲染目标,或者写入外部存储器。这在例如处理操作是延迟着色操作,并且图块的输出结果因此是例如待显示的帧的延迟着色图块情况下可以是适当的。在处理操作的结果被写出到外部存储器情况下,这例如可以由写出单元执行。相应地,在处理操作的结果被写入图块缓冲器中的输出渲染目标的情况下,输出的渲染目标随后可以例如再次通过写出单元被写入外部存储器。
如上面所讨论的那样,图块的集合中的至少一些图块的一个或更多个但非全部的渲染目标采样位置值被保持以在处理另一图块(例如相邻图块)时使用。在优选实施方式中,所保持的(存储的)采样位置值包括并且优选地仅包括来自所述图块以处理其它图块所需的采样位置值(至少期望是所述采样位置值)。因此,在优选实施方式中,图块的渲染目标采样位置值的选择的子集被存储以在处理另一(相邻)图块时使用。
因此,在优选实施方式中,基于已知的或预期在处理另一图块或多个图块时将被需要的采样位置值来选择和确定被存储以在处理另一图块(例如相邻的一个或多个图块)时使用的采样位置值。这个确定优选地基于待使用采样位置值执行的处理操作的性质(在处理另一图块时所需的一图块的采样位置值的数量取决于所述处理操作),并且可以例如通过对从请求执行处理操作的应用向图形处理系统发送的指令的分析(例如,优选地,通过图形处理流水线的驱动程序)而做出。
如上所述,在处理操作使用采样位置值集合(核)来产生每个输出值(例如,3x3卷积核)的情况下,优选地基于处理操作将使用所述采样位置值的集合(核)(处理操作将使用该采样位置值集合来产生每个输出值)的大小(和形状)来选择所存储的在处理另一图块时使用的采样位置值。
例如,如果采样位置的集合是X个采样位置宽(即,在水平方向上)乘Y个采样位置高(即,在垂直方向上)(例如,X可以是3和/或Y可以是3,使得核是3个采样位置乘3个采样位置),则需要被存储以与相邻图块一起使用的采样位置值优选地(在使用中)根据X和Y的值来确定。
对于不同的处理操作并且对于不同类型的采样位置值,X和Y的值可以不同。相应地,被存储的用于在处理另一图块或多个图块时使用的采样位置值的数量对于针对图块所生成的每个渲染目标来说可能是相同的,或者可以在各个不同的渲染目标之间不同(对于不同的渲染目标来说是不同的)(并且对于待由图形处理流水线生成的各个不同的输出来说是相同的,或者在待由图形处理流水线生成的各个不同的输出之间不同)。
因此,实施方式可以包括根据处理操作和/或正在被用于得到(多个)输出值的采样位置值的类型来确定处理操作将使用的采样位置的集合(核)的大小(例如,X和Y的值)(例如,将要需要的相邻采样位置值的相邻采样位置值的数量)。可以通过对从请求执行处理操作的应用向图形处理系统发送的指令的分析做出这个确定。
在优选的这样的实施方式中,图块的被存储以用于处理其它图块时使用的采样位置值是与在最靠近图块的特定角部的垂直侧的X-1个采样位置内的一列中的采样位置相对应的那些采样位置值和/或在最靠近特定角部的水平侧的Y-1个采样位置内的一行中的那些采样位置值(例如,在相邻图块的右侧的X-1个采样位置内和在相邻图块的从底部开始向上的Y-1个采样位置内)。因此,在实施方式中,针对图块或针对每个(适合)图块,优选地存储这些并且优选地仅存储这些采样位置值。
申请人认识到,在这些情况下,一些采样位置值可以既属于最靠近图块的特定角部的垂直侧的X-1个采样位置内的列,又属于最靠近特定角部的水平侧的Y-1个采样位置内的行(例如,在对角相邻的图块的右下角部中的采样位置值)。在优选实施方式中,这些采样位置值仅被存储一次以与另一图块一起使用(即,可能被相邻图块需要的每个采样位置值仅被存储一次以用于另一图块)。可以例如按图块的列而非对应的行存储它们(或者反之亦然)。这例如能够进一步减少存储采样位置值所需的存储器的数量和存储器带宽(即,(Y-1)×(X-1)个采样位置值)。
在优选实施方式中,图块的被存储用于相邻图块(或多个图块)的每一列和/或每一行采样位置值被存储,使得所述每一列和/或每一行采样位置值将作为单独的(和不同的)存储器存取突发(例如,优选地,作为单独的(和不同的)高速缓存线)而被取回。这例如能够有利于建立存储器中的采样位置值的索引并从存储器取出所述值。
在优选实施方式中,在多列和多行采样位置值被存储为各个不同的存储器突发“单元”(例如高速缓存线)的情况下,例如存储列采样位置值的高速缓冲线优选地与存储行采样位置值的高速缓存线交织(即,使得按顺序,将存在存储一列采样位置值的高速缓存线,然后是存储一行采样位置值的高速缓存线,然后是存储一列采样位置值的高速缓存线(必要时,依此类推),或者反之亦然)。
这例如能够有助于使所存储的采样位置值中由于复制的行和列值未被存储两次而导致的任何“间隙”之间的存储器突发长度最大化,并且减少写入所保持的采样位置值所需的单独存储器突发的数量。
在一些实施方式中,相邻图块所需的采样位置值的数量对于待处理的每个特定图块可以是相同的,并且例如能够如上所述那样从X和Y的值来确定。因此,在优选实施方式中,存储相同数量个采样位置值以用于所关注的每个图块的相邻图块(或多个图块)。
然而,在其它实施方式中(例如,在处理操作不必处理图块内的每个采样位置的情况下),相邻图块所需的采样位置值的数量对于不同的图块(例如对于待处理的每个特定图块)可以是不同的。在这些实施方式中,例如像上面所讨论的那样根据X和Y的值确定的采样位置值的最坏情况数量仍然能够从每个图块保持。
然而,在这些布置的优选实施方式中,不同数量的采样位置值被存储用于与图块集合中的不同图块的相邻图块(或多个图块)(即,被存储的用于与相邻图块(或多个图块)的采样位置值的数量能够并且优选地在所述图块的集合中的图块之间不同)。在这种情况下,优选地针对待处理的每个相应的图块得到每个相邻图块需要哪些采样位置值。
在优选的这样的实施方式中,对于尺寸为X乘Y个采样位置的处理核并且对于尺寸为W乘H个采样位置的图块、并且处理核生成针对位于该处理核的角部处的采样位置的输出值,水平方向上的第i个图块(其中,i=0,1,2...)所需的来自前一个图块的采样位置值(即必须从前一个图块中取回以用于处理第i个图块的采样位置值的数量)是与在由下式给出的最靠近正在被生成输出值的处理核的角部的垂直侧的Ni个采样位置内的列的采样位置相对应的那些采样位置值:
Ni=iW mod X
相应地,将为第i个图块存储以在处理水平方向上的下一个图块时使用的采样位置值是与在由下式给出的最靠近正在被生成输出值的处理核的角部的垂直侧的Ni个采样位置内的列的采样位置相对应的那些采样位置值:
Ni=(i+1)W mod X
类似地,对于尺寸为X乘Y的核并且对于尺寸为W乘H的图块、并且处理核生成针对位于处理核的角部处的采样位置的输出值,在垂直方向上第j个图块(其中,j=0,1,2...)所需的来自前一个图块的采样位置值(即,必须从前一个图块中取回以用于处理第j个图块的采样位置值的数量)是与在由下式给出的最靠近正在被生成输出值的处理核的角部的水平侧的Mj个采样位置内的行的采样位置相对应的那些采样位置值:
Mj=jH mod Y
相应地,将为第j个图块存储以在处理垂直方向上的下一个图块时使用的采样位置值是与在由下式给出的最靠近正在被生成输出值的处理核的角部的水平侧的Mj个采样位置内的列的采样位置相对应的那些采样位置值:
Mj=(j+1)H mod Y
在优选实施方式中,按照上述方式确定用于Ni和Mj的值和随后的存储以用于与其它(多个)图块一起使用的采样位置值。
能够按照需要来存储为了在处理另一个或多个图块(例如,相邻的一个或多个图块)时使用而存储的采样位置数据。采样位置数据被优选地存储在图形处理流水线的本地(片上)存储器(优选为图形处理流水线的本地高速缓存,诸如,并且优选为图块缓冲器)中。可以以任何适合且期望的方式将该采样位置数据存储在例如图块缓冲器中。例如,图块缓冲器可以被调整大小以便容纳采样位置数据,例如,图块缓冲器中可存在为相应的采样位置数据而留出的固定分配,或者,例如并且优选地,可以按照在本申请人的早先的美国专利申请No.13/875831中所描述的方式来完成。
采样位置数据还可以或者替代地被存储在例如主机系统的图形处理流水线(与主机系统相关联)可访问的外部存储器(主存储器)中。在本地(片上)存储器可能不具有用于采样位置数据的容量情况下,这可以是适当的。采样位置数据被优选地存储在适合的高速缓冲存储器中,该高速缓冲存储器与图形处理流水线相关联并且可由图形处理流水线访问,并且由图形处理流水线可访问的主存储器支持。
在优选实施方式中,所保持的采样位置数据被优先地存储在图形处理流水线的本地(片上)存储器(诸如图块缓冲器)中,但是必要时,存储在外部存储器中。
按照需要,例如经由针对该处理的显式硬件支持、或者通过例如借助于着色器编译器将适当的图形处理指令包括在被提供给图形处理流水线的图形处理指令的集合中,能够便于对这个采样位置数据的存储。
被存储以在处理另一个或更多个图块(例如,相邻的一个或更多个图块)时使用的采样位置数据应被存储(保持)直到可能需要所述采样位置数据的所有其它图块已被处理完为止(在这点上,可以例如并且优选地允许重写采样位置数据)。保持所存储的采样位置数据以在处理另一个或更多个图块时使用的周期能够按照需要来确定,例如并且优选地基于所述处理操作(其将确定多少其它图块需要所存储的采样位置数据)和图块的处理顺序的了解或例如相关的其它图块(例如,相邻图块)何时已被处理的指示来确定。这将有助于确保为了在处理另一个或更多个图块时使用而被存储的采样位置数据不被保持超过需要的时间,从而减少存储所述数据所需要的存储器的量。
图形处理流水线能够以任何期望且适合的方式(例如,根据所述图形处理系统和存储采样位置数据的存储器的性质)读取为了在处理另一图块(例如相邻图块)时使用而存储的采样位置数据。例如,图形处理流水线可以具有用于读取处理的显式硬件支持,或者适当的图形程序指令能够包括在例如由着色器编译器提供给图形处理流水线的图形处理指令的集合中。方案优选地是这样的,即用于将在当前图块的边缘外面读取的处理操作的操作被适当地重定向至存储器中的存储有保存的来自先前被处理的图块或多个图块(例如,相邻的一个或多个图块)的值的适当位置。
在优选实施方式中,读取处理包括图形处理流水线在从(预期)存储有采样位置数据的存储器读取所存储的来自另一个图块的采样位置数据之前,确定该另一个图块的采样位置数据是否仍然存在于图块缓冲器中,并且如果该采样位置数据仍然存在于图块缓冲器中,则从图块缓冲器而不是从预期存储该采样位置数据的存储器读取所需要的采样位置数据,但是如果应从存储器读取的采样位置数据不仍然处于图块缓冲器中,则从预期存储有采样位置数据的存储器读取采样位置数据。
这使得来自另一图块的采样位置数据可以仍然存在于图块缓冲器中,并且使得能够在处理另一图块(例如相邻图块)时能够从图块缓冲器使用所述数据,从而再次节约存储器带宽。在多个图块在任一时刻在飞行中(in flight)的情况下,在图形处理流水线中可以是特别适当的。
从上文可以理解,取决于处理操作的性质,针对给定图块(或至少针对图块的特定输出值(采样位置))的处理操作可能需要来自超过一个其它图块(例如相邻图块)的采样位置值。
因此,在优选实施方式中,使用用于所述图块的采样位置值和另一图块(例如相邻图块)的采样位置的采样位置值来执行处理操作的步骤包括使用所述图块的采样位置值和来自多个其它图块(例如并且优选相邻图块)的采样位置值来执行处理操作。
类似地,在优选实施方式中,至少针对图块的特定输出值(采样位置),处理操作使用来自超过一个(来自多个)其它图块(例如相邻图块)的采样位置值。在这种情况下,方案优选地是这样的,即,处理操作将从不要求来自超过三个其它图块(例如相邻图块)的采样位置值。
相应地,在优选实施方式中,图块的一个或多个渲染目标的一些而非全部采样位置值被存储以在处理图块的集合中的两个或更多个其它图块(例如并且优选地为相邻图块)时使用,并且正在存储图块的一个或多个渲染目标的采样位置值以在处理该图块的集合中的另一个或更多个图块时使用的存储器优选地存储该图块集合中的多个图块的一个或多个渲染目标的一些而非全部采样位置值以在处理该图块集合中的其它图块时使用。
因此,在优选实施方式中,第一个其它图块(例如相邻图块)的一个或更多个而非全部采样位置值、第二个其它图块(例如相邻图块)的一个或更多个而非全部采样位置值、以及第三个其它图块(例如相邻图块)的一个或更多个而非全部采样位置值将被存储(保持)以在处理给定图块时使用。
相应地,当确定是否保持图块的采样位置值以在处理其它图块时使用并且保持多长时间时,该处理应该并且优选地考虑到该图块的采样位置值将被仅一个其它图块或被超过一个其它图块需要的概率。
在特别优选的实施方式中,组成正在被处理的输出(例如用于显示的帧、渲染至纹理操作中的纹理等)的图块按照所选择的顺序(具体地,优选为预定的顺序)被处理。图块处理顺序优选地是这样的,即,被每个其它图块(例如相邻图块)需要的采样位置值将在处理给定图块时可得到(至少在必要的初始图块(若有的话)已被处理后)。
换句话说,在图块的集合中的图块优选地按照有利于使给定图块的被另一个或多个图块(例如,相邻的一个或多个图块)需要的采样位置值在该给定图块要被处理时可以得到的顺序被处理。因此,图块优选地被按照使得采样位置值将在处理给定图块时被需要的图块在该给定图块之前被处理的顺序处理。
图块处理顺序优选地还使得其中可能需要保持图块的采样位置数据以在处理其它图块时使用的周期被减少和/或最小化。
在实施方式中,如上面所讨论的那样,位于各个处理“核”使用的采样位置集合的角部(并且同一角部)(例如,右下角)处的该处理“核”的特定输出值采样位置有助于此。如上面所讨论的那样,这可以意味着每个特定采样位置将至多仅需要来自与所述核的相反角部邻近的三个相邻图块的采样位置的采样位置值。在这种情况下,图块可以优选地在朝向每个处理“核”的角部(输出值采样位置位于该角部)(和/或远离核的相反角部))的大致方向(例如右下方)上被处理。这例如能够确保必要的相邻图块已经在正被处理的每个特定图块之前被处理。
在优选实施方式中,特别是当子区正在被单个处理核心处理时,按照光栅顺序(例如,通过沿着每行向右处理子区,并且然后向下移动到下一行)、按照Z(Morton)顺序、按照转置光栅顺序(例如,通过沿着每列处理子区,并且然后向右移动到下一列)或者按照转置Z(Morton)顺序处理子区。
在图形处理流水线包括多个图像处理核心并且正在被处理的图块的集合正在被多个图形处理核心处理(即,分布在多个图形处理核心上以进行处理)的情况下,优选地通过按顺序将图块的行(或列)分配给处理核心来处理图块,例如通过将图块的第一行(或列)分配给第一处理核心、将图块的第二行(或列)分配给第二处理核心、将图块的第三行(或列)分配给第一处理核心、将图块的第四行(或列)分配给第二处理核心等等。这个顺序可扩展至超过两个处理核心。
在优选实施方式中,对图块的第一行(或列)的处理被构造为使得对图块的该行(或列)的处理总是比图块的第二行(或列)的处理早一个或更多个图块,并且所述图块的第二行(或列)的处理则将比图块的第三行(或列)的处理早一个或更多个图块,依此类推。这例如能够确保正在被一个核心处理的图块(其渲染(多个)目标被另一个处理核心需要)将在需要它们的特定图块之前已经被处理。
可以按照需要来实现以上布置,例如通过使用以适当顺序将图块分配给一个或多个处理核心的“作业”管理器。作业管理器例如可以实现互锁以避免正在对处理顺序靠后的一行(或列)图块进行处理的处理核心赶上和/或超越正在对处理顺序靠前的一行(或列)图块进行处理的处理核心。
如上面所讨论的那样,在一些优选实施方式中,处理操作的输出(一个或更多个输出值)被写到外部(主)存储器中的输出缓冲器。然而,其它实施方式包括存储输出(一个或更多个输出值)以用作为针对待处理的图块的集合中的另一图块(例如,下一个图块)的一个或多个输入值。这例如能够允许对多个图块执行聚合处理。在这种情况下,图块的输出(一个或更多个输出值)能够例如被写入高速缓冲存储器以用于这样的用途。
在这些布置中,聚合处理可以包括例如将与图块的采样位置相对应的采样位置值相加的求和处理和/或对具有一个或多个特定值(例如高于或低于给定门限值)的采样位置进行计数的计数处理(例如,用于直方图生成、总计面积表和/或有限冲激响应)。
因此,一些实施方式包括以下步骤:通过聚合处理来得到图块的一个或更多个输出值;将一个或给多个输出值存储在例如高速缓存中作为特定图块的一个或更多个采样点值;以及在处理待处理的另一图块时使用该特定图块的一个或更多个采样点值。
如上面所讨论的那样,在本发明中,仅来自图块的一个或多个渲染目标的一些而非全部的采样位置值被存储以用于另一个或多个图块。该处理应并优选地操作为不从图块缓冲器写出图块的其它的、初始的数据渲染目标中的任一个。按照需要,可以防止从图块缓冲器写出图块的一个或多个初始的输入数据渲染目标的剩余部分。优选地,防止渲染目标的固定功能写出。
防止渲染目标的固定功能写出能够在静态基础上(即,被预先确定成静态地禁用写出)执行,或者可在动态基础上(在使用中)防止。在特别优选的实施方式中,可编程处理级操作来禁用和防止渲染目标的输入数据集合到外部存储器的固定功能写出。
如本领域的技术人员将理解的那样,可针对待生成的每个总体输出(例如帧)重复执行本发明方式的处理。
本发明能够被用于图形处理流水线可被用于处理和/或生成的所有适合形式的输入和输出,诸如用于显示的帧、渲染到纹理输出等。
在一些实施方式中,图形处理流水线包括一个或更多个存储器和/或存储器装置和/或与一个或更多个存储器和/或存储器装置进行通信,所述存储器和/或存储器装置存储本文中所描述的数据,诸如采样位置值、输出值等,和/或存储用于执行本文中所描述的处理的软件。图形处理流水线还可以与主机处理器通信,和/或与用于基于由图形处理器生成的数据来显示图像的显示器通信。
在优选实施方式中,图形处理流水线是图形处理(数据处理)系统的一部分,所述图形处理(数据处理)系统包括主机微处理器和适当的主存储器等以及图形处理流水线,其中主机微处理器例如执行图形处理流水线的驱动程序。
图形处理流水线还可以包含图形处理流水线可包含的任何其它适合且期望的处理级,诸如早期深度(或早期深度和模版)测试器、后期深度(或深度和模版)测试器、混合器等。
在特别优选的实施方式中,本发明的各种功能在单个图形处理平台上执行,所述图像处理平台生成并输出例如被写入显示装置的帧缓冲器的输出值。
能够在任何适合的系统(诸如适当地构造的基于微处理器的系统)中实现本发明。在优选实施方式中,本发明被实现在计算机和/或基于微处理器的系统中。
能够以任何期望且适合的方式执行本发明的各种功能。例如,按照需要,本发明的功能能够用硬件或软件来实现。因此,例如,本发明的各种功能元件可以包括可操作为执行各种功能等的一个或多个适合的处理器、一个或多个控制器、功能单元、电路、处理逻辑、微处理器等,诸如适当地构造的专用硬件元件或处理电路,和/或能够被编程以按照期望方式操作的可编程硬件元件或处理电路。
这里还应该注意的是,如本领域的技术人员所了解的,可以在给定处理器上复制和/或并行地执行本发明的各种功能等。同样地,必要时,各种处理级可以共享处理电路。
因此,本发明扩展到图形处理器并且扩展到包括本文中所描述的本发明的方面中的任何一个或更多个的装置或者依照本文中所描述的本发明的方面中的一个或更多个操作的图形处理平台。根据执行上面所讨论的特定功能所必需的任何硬件,这样的图形处理器能够另外包括图形处理器包括的常见功能单元等中的任何一个或更多个或全部。
本领域的技术人员还将了解的是,本发明的所描述的方面和实施方式中的全部能够并且优选地包括本文中所描述的优选和可选特征中的任何一个或更多个或全部。
可以至少部分地使用软件例如计算机程序来实现根据本发明的多种方法。因此将看到,当从另外的方面观察时,本发明提供专门适于在被安装在数据处理装置上时执行本文中描述的方法的计算机软件、包括用于在程序元素在数据处理装置上运行时执行本文中描述的方法的计算机程序元素、以及包括适于在程序在数据处理系统上运行时执行本文中描述的一个或多个方法的所有步骤的代码手段的计算机程序。数据处理器可以是微处理器系统、可编程FPGA(现场可编程门阵列)等。
本发明同样扩展到包括这种软件的计算机软件载体,在所述软件用来操作图形处理器时,包括数据处理装置的渲染器或微处理器系统与所述数据处理装置相结合地使所述处理器、渲染器或系统执行本发明的方法的步骤。这样的计算机软件载体可以是诸如ROM芯片、RAM、闪速存储器、CD ROM或磁盘的物理存储介质,或者可能是诸如导线上的电信号、光学信号或诸如到卫星的无线电信号等的信号。
将进一步了解的是,并非本发明的方法的所有步骤都需要被计算机软件执行,并且因此从更广泛的方面,本发明提供计算机软件和安装在计算机软件载体上以用于执行本文中所陈述的方法的步骤中的至少一个的软件。
本发明可以因此适当地被实现为计算机程序产品以与计算机系统一起使用。这样的实施方式可以包括固定在有形介质上的一系列计算机可读指令,所述有形介质诸如非瞬时性计算机可读介质,例如,软磁盘、CD-ROM、ROM、RAM、闪速存储器或硬盘。它还能够包括经由调制解调器或其它接口装置、通过有形介质(包括但不限于光学或模拟通信线)或者无形地使用无线技术(包括但不限于微波、红外线或其它传输技术)可传送到计算机系统的一系列计算机可读指令。该系列计算机可读指令实现本文中先前描述的功能性的全部或一部分。
本领域的技术人员将了解的是,这样的计算机可读指令能够采用用于与许多计算机架构或操作系统一起使用的许多编程语言来编写。此外,这样的指令可以使用目前的或将来的包括但不限于半导体、磁或光学的任何存储器技术来存储,或者使用目前的或将来的包括但不限于光学、红外线或微波的任何通信技术来传送。设想了这样的计算机程序产品可以作为可去除介质与所附的打印或电子文档一起发布(例如,热塑收缩包装的软件)、在计算机系统(例如在系统ROM或固定磁盘上)预先加载或者通过网络(例如,因特网或万维网)从服务器或电子布告板分发。
附图说明
现将仅通过示例的方式并且参照附图对本发明的许多优选实施方式进行描述,在附图中:
图1示出了根据本发明的实施方式的采样位置的阵列;
图2A和图2B示出了根据本发明实施方式的用于采样位置值的延迟处理的核;
图3示出了根据本发明实施方式的应用于采样位置的阵列的图2B的核;
图4A和图4B示出了根据本发明实施方式的用于采样位置值的存储器高速缓存存储布置;
图5示出了根据本发明的另一实施方式的重复地应用于采样位置的阵列的图2B的核;
图6示出了根据本发明实施方式的处理采样位置的阵列的特定子区的流程图;
图7示出了根据本发明另一实施方式的采样位置的阵列;
图8示出了根据本发明另一实施方式的处理采样位置的阵列的特定子区的流程图;
图9A至图9C示出了根据本发明实施方式的采样位置的阵列的子区的处理顺序;
图10示意性地示出了能够按本发明的方式操作的图形处理流水线;以及
图11示意性地示出了图10的图形处理流水线的操作的优选实施方式。
具体实施方式
在图中,在适当的情况下,相同的附图标记被用于相同的特征。
现在将在用于显示的计算机图形的处理的情景下对本发明的优选实施方式进行描述。
如在本领域中已知且如上面所讨论的那样,在要显示计算机图形图像时,所述图像通常先被定义为一系列图元(多边形),这些图元然后被划分(光栅化)成用于图形渲染的图形片段。在正常的图形渲染操作期间,渲染器将修正与每个片段相关联的(例如)颜色(红、绿及蓝,RGB)和透明度(阿尔法,α)数据,使得能够正确地显示这些片段。在片段已完全遍历渲染器后,它们关联的数据值被存储在存储器中,准备输出以进行显示。
本发明涉及一种基于图块的图形处理流水线,即其中图形处理流水线是基于图块的渲染器,并且因此将如在本领域中已知的那样产生具有渲染输出数据阵列(诸如待生成的输出帧)的图块。
(如在本领域中已知的那样,在基于图块的渲染中,不是整个渲染输出(例如,帧)有效地像在立即模式渲染中那样被一举处理完,相反,渲染输出(例如,待显示的帧)被划分成多个较小的子区(通常被称为“图块”)。每个图块(子区)被单独地(通常一个接一个地)渲染,并且已渲染的图块(子区)被重新组合以提供完整的渲染输出,例如,用于显示的帧。在这样的布置中,渲染输出通常被划分成大小和形状规则的子区(图块)(通常例如是正方形或矩形),但这不是必要的。)
如本领域中已知那样,渲染输出数据阵列可以典型地是要在显示装置(诸如屏幕或打印机)上显示的输出帧,但是还可以例如包括要在以后的渲染操作中使用的中间数据等(也被称为“渲染到纹理”输出)。
图1示出了用来对要显示的帧进行采样的采样位置104的示例性阵列100。在本实施方式中,每个采样位置104对应于显示器的像素,但是能够使用采样位置104与显示器的像素之间的其它映射。
在这个实施方式中,阵列100被划分成九个图块(子区)102,其中每个图块102包括六十四个采样位置104。图块102中的每一个都将被图形处理核心单独地处理。所述处理例如可以包括渲染每个采样位置104以得到针对该采样位置104的采样位置值(深度、颜色以及透明度)。如在本领域中已知的那样,针对给定图块102生成的采样位置值被存储在图块缓冲器中。
如将在下面所讨论的那样,在本实施方式中,图块的采样位置值接着在诸如着色、数据压缩或数据聚合的处理操作中使用,以产生针对图块的一个或多个输出值。
图2A示出了能够被用来使用采样位置值来执行处理操作的采样位置104的示例性集合(核)200。核200是水平方向上的X个采样位置乘垂直方向上的Y个采样位置。在本实施方式中,假定了核200是3×3卷积核,并且因此X是3并且Y是3。因此,核200的每个“应用”将使用图1中所示出的采样位置阵列100的采样位置104中的九个采样位置的采样位置值以得到在核200的中央202处的采样位置的输出值x。
图2B示出了在根据本发明的更优选实施方式执行处理操作时所使用的采样位置104的另一核200。核200再次使用图1中所示出的采样位置阵列100的九个采样位置104。然而,在这个实施方式中,处理操作使用九个采样位置104的采样位置值来得到核200的中央204处的采样位置的输出值x。将在下面讨论这个特定实施方式优于图2A中所示出的优点的优点。
图3示出了在被应用于采样位置104的阵列100时图2B的核200。在这个实施方式中,按照使核200的角部204与阵列100中的采样位置中的每一个重叠的方式重复地应用核200。因此,所述核在这个实施方式中的应用将彼此重叠。因此,得到可阵列100中的采样位置104中的每一个的输出。
在这个实施方式中,被应用于每个核200的处理操作是使用与核200的采样位置104相对应的采样位置值的延迟着色处理。
在图3中,示出了在得到特定图块(中央图块)内的特定采样位置的输出值时的核200。从图3可以看到,在该位置中,核200不仅使用与特定图块中的采样位置相对应的采样位置值,而且还使用与三个相邻图块(即,该特定图块上方的相邻图块、该特定图块左侧的相邻图块以及该特定图块的左上方的相邻图块)中的采样位置相对应的采样位置值。
在图3中用灰色示出了在处理其它图块时使用的采样位置值。这些采样位置在每个图块102中形成Y-1个(即两个)采样位置宽的列300和X-1个(即两个)采样位置宽的行301。这些采样位置在使用中被标识,并且这些采样位置的采样位置值在处理所关注的图块时被存储在高速缓冲存储器中,使得它们在处理各个相邻的图块时是可用的。
(从图3将了解的是,当在阵列100的边缘处应用核200时,可能不存在所述核内的每个位置的采样位置值。可以使用所提供的在处理操作中处理这种边缘的任何机制来解决(不受本发明的使用的影响))。
图4A和图4B例示了用于需要被保持以使得在处理图3中所示出的各个相邻图块时可用的图块采样位置值的高速缓冲存储器存储布置。图4A示出了诸如图3的左上角部中的图块的示例性图块。再次用灰色示出被存储在高速缓冲存储器中的采样位置值。图4B则示出了这些采样位置值如何被存储在高速缓冲存储器400中。采样位置值的每列和每行被存储在高速缓存400的单独的高速缓存线402、404、406、408中。具体地,列x=6被存储在高速缓存线402中,行y=6被存储在高速缓存线404中,列x=7被存储在高速缓存线406中,而行y=7被存储在高速缓存线408中。
从图4A可以看到,一些采样位置值410、412、414、416是待存储的采样位置值的列和行两者的一部分。在这个实施方式中,为了减少需要被存储的数据量,这些采样位置值仅被存储一次,即,对这些采样位置值的存储仅涉及它们的列而不是它们的行。具体地,采样位置410和412的采样位置值仅被存储在用于列x=6的高速缓存线402中,并且采样位置414和416的采样位置值仅被存储在用于列x=7的高速缓存线406中。应该注意,高速缓存400中的“间隙”在交替的高速缓存线中。这使得在读取和写入高速缓冲存储器400时所需的存储器突发的大小最大化,并且使得在读取和写入高速缓冲存储器400时所需的存储器突发的数量最小化。
图5示出了图2B根据另一实施方式在被应用于阵列100时的核200。为了清楚起见,在图5中未示出采样位置104。在这个实施方式中,按照使得核200的应用彼此不重叠的方式重复地应用核200。因此,核200的角部204仅与阵列100中的采样位置中的一些重叠,并且仅得到阵列100中的一些采样位置104的输出。在图5中,核200被示出在其位置中的每一个位置中。
在这个实施方式中,使用每个核200而应用的处理操作是使用与所述核200的采样位置104相对应的采样位置值的解析或压缩处理。
从图5可以看到,在一些位置中,核200可以不仅再次使用与特定图块中的采样位置相对应的采样位置值,但是还可以使用与(多达)三个相邻图块中的采样位置相对应的采样位置值。然而,相邻图块所需的采样位置值的数量对于每一个图块都是不相同的。具体地,中央列i=1中的图块需要从左侧的列i=0起的两列采样位置的采样位置值,而右侧的列i=2中的图块需要从中央列i=1起的仅一列采样位置的采样位置值。
水平方向上的第i个图块(其中,i=0,1,2...)所需的前一个图块的采样位置值(即,为了处理所述第i个图块而必须从前一个图块中获得的采样位置值的数量)(针对尺寸为X乘Y个采样位置的处理核、并且针对尺寸为W乘H个采样位置的图块、并且处理核针对其生成位于该处理核的角部处的采样位置的输出值)是与在最靠近正在被生成输出值的处理核的角部的垂直侧的Ni个采样位置内的采样位置列相对应的那些采样位置值,由下式给出:
Ni=iW mod X
相应地,将为第i个图块存储以在处理在水平方向上的下一个图块时使用的采样位置值是与最靠近正在被生成输出值的处理核的角部的垂直侧的Ni个采样位置内的采样位置列相对应的那些采样位置值,由下式给出:
Ni=(i+1)W mod X
类似地,垂直方向上的第j个图块(其中,j=0,1,2...)所需的前一个图块的采样位置值(即,必须从前一个图块中得到以用于处理第j个图块的采样位置值的数量)(针对尺寸为X乘Y的核、并且针对尺寸为W乘H的图块、以及处理核针对其为位于该处理核的角部处的采样位置生成输出值)是与最靠近正在被生成输出值的处理核的角部的水平侧的Mj个采样位置内的采样位置行相对应的那些采样位置值,由下式给出:
Mj=jH mod Y
相应地,将为第j个图块存储以在处理在垂直方向上的下一个图块时使用的采样位置值是与最靠近正在被生成输出值的处理核的角部的水平侧的Mj个采样位置内的采样位置列相对应的那些采样位置值,由下式给出:
Mj=(j+1)H mod Y
因此,在这个实施方式中,针对每个图块而需要被存储在存储器高速缓存中的采样位置值能够在使用中再次确定。
图6是概括上述实施方式的在处理阵列100的特定图块(例如中央图块)时的操作的流程图600。
在步骤602中,如上所述,在阵列100的特定图块102中的每个采样位置104执行初始渲染,以便得到采样位置104中的每一个的采样位置值(例如,深度、颜色以及透明度)。在步骤604中,采样位置104的采样位置值被存储在图块缓冲器中。在步骤606中,图块的一个或更多个但非全部采样位置值(例如,在上述示例中,图块的位于列300和行301中的采样位置值)被存储在高速缓冲存储器(可以是图块缓冲器的一部分或图形处理流水线本地的不同的高速缓冲存储器)中。
在步骤608、610以及612中,如上所述,处理操作(例如着色、解析、压缩等)通过从图块缓冲器读取特定图块的采样位置值、从高速缓冲存储器读取相邻图块的一个或更多个采样位置值、以及使用所述采样位置值得到一个或更多个输出值(例如着色值、解析值或压缩值)来执行。在步骤614中,一个或更多个输出值被存储在输出缓冲器中,所述输出缓冲器诸如是显示器的帧缓冲器。
图7例示了另选的实施方式,其中,一个或更多个输出值被存储在高速缓冲存储器而不是输出缓冲器中。在这个实施方式中,仍然在阵列100的给定图块102的每个采样位置104执行初始渲染,以便在处理操作被执行之前得到图块102的采样位置104中的每一个的采样位置值(例如,深度、颜色以及透明度)。然而,在这个实施方式中,处理操作是聚合处理。
在这个特定实施方式中,聚合处理包括对所关注的图块的具有高于预定阈值的亮度的采样位置(由它们的采样位置值指示)的采样位置的数量进行计数,以得到所述图块的输出值(即计数)。输出值(即计数)然后被存储在存储器高速缓存中作为图块102的采样位置中的一个(例如采样位置706)的采样位置值。对于阵列的图块中的每一个,输出值被存储为采样位置值的采样位置用灰色示出。当处理后续图块时,来自前一个图块的采样位置(即计数)被包括在对后续图块的计数中。然后,针对每个后续图块重复该处理,使得得到所有图块的计数。
图8示出了概括上述另选实施方式在处理阵列100的特定图块(例如中央图块)时的操作的流程图800。
在步骤802中,如上所述,在特定图块102中的每个采样位置104执行初始渲染,以便得到采样位置104中的每一个的采样位置值(例如,深度、颜色以及透明度)。在步骤804中,采样位置104的采样位置值被存储在图块缓冲器中。
在步骤806、808以及810中,如上所述,处理操作(例如计数)通过从图块缓冲器读取特定图块的采样位置值、从高速缓冲存储器(如上所述,可以是图块缓冲器或另一高速缓冲存储器)读取相邻图块的采样位置值(例如,相邻图块的计数)、以及使用所述采样位置值得到输出值(例如,特定图块的计数)来执行。在步骤812中,输出值(例如,特定图块的计数)被存储在高速缓冲存储器中以用于与后续图块一起使用。
现在返回到图2A和图2B的核,能够在本发明的实施方式中使用图2A和图2B两者的核。然而,如上所述,图2B的核具有优于图2A的核的优点。将参照图9A至图9C对这些优点进行说明。
当使用图2A的核来处理特定图块(例如,中央图块)时,可能需要与所有周围图块的采样位置相对应的采样位置值。为了解决这个,能够初始地处理所有周围图块以在针对特定图块执行处理操作之前得到采样位置值。然而,当使用图2B的核来处理特定图块时,仅需要与来自在上方和/或在左侧的相邻图块的采样位置相对应的采样位置值。这意味着,能够在在特定图块上方和/或左侧的所有图块都已被处理以得到采样位置值后执行针对该特定图块的处理操作,即,不需要等待直到在该特定图块下面和/或右侧的图块被处理得到采样位置值为止。因此,使用图2B的核可以导致更加灵活且高效的布置。
图9A至图9C示出了可在使用图2B的核时使用的图块处理顺序。这些图块处理顺序中的每一个都确保位于每个特定图块上方和/或左侧的图块已在处理该特定图块之前被处理。在这些实施方式中,图块处理顺序由将图块分配给处理核心以处理的作业管理器实现。
图9A示出了处理图块102的光栅化顺序,其中每个图块102都由相同的单个处理核心处理。在这个实施方式中,在向下移动到下一行之前沿着每行从左向右处理图块102。
图9B示出了处理图块102的Z顺序,其中每个图块102由相同的单个处理核心再次处理。在这个实施方式中,具有四个图块的大块被处理,所述处理从左上角部中开始、向右移动、然后对角地向左下方移动并且接着向右移动。如果需要,针对具有四个图块的另一大块并且在更大规模上(例如,针对四个具有四个图块的大块等)重复这个模式。
图9C示出了处理图块的顺序,其中由多个处理核心处理所述图块。在这个实施方式中,每个核心都分配了一行图块,并且该行的图块被处理核心从左向右处理。在这个实施方式中,在第二处理核心(核心2)开始处理它的行之前,第一处理核心(核心1)开始处理它的行,依此类推。例如通过作业管理器中的互锁,处理核心被防止赶上针对上方的行的处理核心。这确保了位于每个特定图块上方和/或左侧的图块已在处理该特定图块之前被处理了。
图10示意性地示出了可根据本发明操作的图形处理流水线1。
图10示出了与本实施方式的操作相关的图形处理流水线1的主要元件和流水线级。如本领域的技术人员将了解的那样,可存在图10中未例示的图形处理流水线的其它元件。在这里还应该注意的是,图10仅是示意性的,并且例如,即使它们在图10被示意性地示出为单独的级,在实践中所示出的功能单元和流水线级也可以共享有效的硬件电路。还将了解,图10中所示出的图形处理流水线的级、元件以及单元等中的每一个都可以按照需要被实现,并且将因此包括例如适当的电路和/或处理逻辑等以执行必要的操作和功能。
图10示意性地示出了在生成用于输入到光栅化处理的图形图元(多边形)2之后的流水线级。因此,此时,图形数据(顶点数据)已经历片段前端操作8(诸如变换和打光操作(未示出))以及用来响应于提供给图形处理器的命令和顶点数据而建立待渲染的图元的图元建立级(未示出),如本领域中已知那样。
如图10中所示,图形处理流水线1的这个部分包括许多级,包括光栅化级3、早期Z(深度)和模版测试级4、片段着色级6形式的渲染器、后期Z(深度)和模版测试级7、混合级9、图块缓冲器10以及下采样和写出(多重采样解析)级13。
如本领域中已知的那样,图形处理流水线1的光栅化级3操作来将组成渲染输出(例如待显示的图像)的图元光栅化成单独的图形片段以处理。为此,光栅化器3接收用于渲染的图形图元2、将图元光栅化为采样点并且生成具有用于渲染图元的适当位置(代表适当的采样位置)的图形片段。
然后,由光栅化器所生成的片段被向前发送到流水线的其余部分以处理。
如本领域中已知的那样,早期Z/模版级4对它从光栅化器3接收到的片段执行Z(深度)测试,以查看是否能够在该处丢弃(剔除)任何片段。为此,早期Z/模版级4将从光栅化器3发出的片段(与其相关联)的深度值与已经被渲染的片段的深度值(这些深度值被存储在作为图块缓冲器10的一部分的深度(Z)缓冲器中)相比较,以确定新的片段是否将被已经被渲染的片段闭塞。同时,执行早期模版测试。
通过片段早期Z和模版测试级4的片段然后被发送到片段着色级6。如在本领域中已知的那样,片段着色级6对通过早期Z和模版测试的片段执行适当的片段处理操作,以便处理片段来生成适当渲染的片段数据。
如在本领域中已知的那样,该片段处理可以包括任何适合且期望的片段着色处理,诸如对片段执行片段着色器程序、对片段应用纹理、对片段应用雾化或其它操作等,以生成适当的片段数据。在本实施方式中,片段着色级6形式为着色器流水线(可编程片段着色器),但是如果需要,其它布置(诸如附加地使用或取而代之地使用固定功能片段着色单元)将是可能的。
然后,存在“后期”片段Z和模版测试级7,其尤其对已着色的片段执行流水线深度测试的结束以确定所渲染的片段是否将在最后图像中真正地看到。这个深度测试使用存储在图块缓冲器10中的Z-缓冲器中的片段的位置的Z-缓冲器值来通过像在本领域中已知的那样将从片段着色级6发出的片段(与其相关联)的深度值与已渲染的(如在深度缓冲器中所存储的)片段的深度值相比较来确定新的片段的片段数据是否应该代替已渲染的片段的片段数据。这个后期片段深度和模版测试级7同样对片段执行任何必要的“后期”阿尔法和/或模版测试。
然后,通过后期片段测试级7的片段与已存储在图块缓冲器10中的片段在混合器9中经受(如果需要)任何必要的的混合操作。在这个阶段,还对片段执行必要的任何其它剩余的操作,诸如抖动等(未示出)。
最后,(混合的)输出片段数据(值)被写入图块缓冲器10,从那里它们例如能够被输出到帧缓冲器以进行显示。输出片段的深度值也被适当地写入在图块缓冲器10内的Z-缓冲器。(如在本领域中已知的那样,图块缓冲器将存储分别存储适当的颜色等或Z值的颜色缓冲器和深度缓冲器,颜色缓冲器和深度缓冲器针对所述缓冲器代表的每个采样点(本质上针对正在被处理的图块的每个采样点))如在本领域中已知的那样,这些缓冲器存储代表总体渲染输出(例如待显示的图像)的部分(图块)的片段数据的阵列,其中缓冲器中的各个采样值集合对应于总体渲染输出的相应像素(例如,每个2x2的采样值集合可以对应于一输出像素,其中使用4倍多重采样)。
在本实施方式中,图块缓冲器将其片段数据存储为32x32阵列(即,与待生成的输出中(例如,在待显示的图像中)的采样位置的32x32阵列相对应)。图块缓冲器中的每个32x32数据位置阵列因此能够在4倍抗混叠下(即在每像素取4个采样时)对应于(并且将“自然地”支持)例如待显示的帧的16x16像素“图块”。
图块缓冲器被提供为位于图形处理流水线(芯片)上(本地的)RAM的一部分。
来自图块缓冲器10的数据被输入到下采样(多重采样解析)写出单元13,并且从这里输出(写回)到主存储器16中的外部存储器输出缓冲器,诸如在显示装置(未示出)的帧缓冲器。如在本领域中已知的那样,还可以存在与主存储器16相关联的高速缓冲存储器15。(显示装置能够包括显示器,所述显示器例如包括像素的阵列,诸如计算机监视器或打印机。)
下采样和写出单元13将存储在图块缓冲器10中的片段数据下采样为用于输出缓冲器(装置)的适当分辨率(即,使得生成与输出装置的像素相对应的像素数据的阵列),以生成用于输出到输出缓冲器的输出值(像素)。
在具有渲染输出的图块已被处理并且其数据被导出到主存储器(例如,导出到主存储器16中的帧缓冲器)以进行存储后,处理下一个图块,依此类推,直到处理了足够的图块以生成整个渲染输出(例如,待显示的帧(图像))为止。然后,针对下一渲染输出(例如帧)重复该过程等。
用于图形处理流水线1的其它布置当然是可能的。
上文描述了图1中所示出的图形处理系统的操作的某些特征。现将描述根据本发明实施方式的在图1中所示出的图形处理系统的操作的另外特征。
如图10所示,图形处理流水线1还包括图块着色器14形式的可编程处理级,图块着色器14能够读取图块缓冲器10中的存储的值以对这些些值执行处理操作,并且将其处理操作的结果写回到图块缓冲器10或经由写出单元13写出到主存储器。因此,这个图块着色操作能够使用由片段着色器等产生并且存储在图块缓冲器10中的已渲染片段值作为其输入,不需要将那些片段值写出到外部存储器并且然后通过图形处理流水线1读回以便执行图块着色器处理操作。
如图10所示,图块着色器14还可以操作以将数据存储在主存储器16和高速缓冲存储器15中并且从主存储器16和高速缓冲存储器15读取数据。这允许图块着色器14存储来自图块的采样位置值以与相邻图块一起使用,并且以在执行其处理操作时使用存储在主存储器16和高速缓冲存储器15中的相邻图块数据值。
如上所述,该布置允许各种处理操作在减少的存储器带宽和能量消耗情况下被执行。
本实施方式中的图块着色器级14与片段着色器6共享处理电路。因此图块着色器14和片段着色器6具有可编程硬件级形式的共享硬件,所述可编程硬件级能够执行第一序列的图形处理线程以首先生成片段数据值并且然后将片段数据值存储在图块缓冲器10中,然后执行第二序列的图形处理线程以处理图块缓冲器10内的片段数据值。
(换言之,存在可通过适当的图形程序指令构造成执行片段着色操作(从而作为片段着色器6)或者执行图块着色操作(从而作为图块着色器14)的可编程硬件元件(电路)。该可编程硬件元件支持多线程处理并因此可以提供这些功能和其它功能。)
在本实施方式中,图块着色器14通过用新的着色器类型GL_TILE_SHADER和新的内置变量来扩展OpenGL ES着色语言来实现。这使得能够在现有着色器编程模型内支持图块着色器级14。这个新的着色器类型未被附加到程序对象,而是相反地附加到帧缓冲器对象。在本实施方式中,图块着色器14如正常的OpenGL ES着色器那样工作,但是允许用于读取和写入通用存储器的功能、使用图像写入功能对纹理的随机写访问以及用于读取和写入图块缓冲器的功能。
图块着色器14能够读取图块缓冲器10中的图块内的任何位置作为为任何给定处理操作(例如线程)的输入,并且还能够将数据写到被存储在图块缓冲器10中的图块内的任何位置。在本实施方式中,以下API函数有助于此:
gl_ReadTilePixelColor(int2loc,cb,ms)
gl_ReadTilePixelDepth(int2loc,ms)
gl_WriteTilePixelColor(int2loc,cb,ms,颜色)
gl_WriteTilePixelDepth(ing2loc,ms,颜色)
其中
cb=颜色缓冲器的索引(这在存在存储在图块缓冲器10中的多个渲染目标(多个颜色缓冲器)情况下使用),
ms=采样的索引(其中多重采样被促进)并且
loc=屏幕空间中的像素坐标。
从图块着色器14写出能够由从图块着色器14到存储器的通用加载/存储或者通过将数据写回到图块缓冲器10并且然后通过写出单元13触发固定功能写出来完成。
图块着色器14也能够触发或者防止特定图块缓冲器分量的规则写出。这在本实施方式中通过调用函数gl_WriteOutColorTile(cb,[s])、gl_WriteOutDepthTile([s])来实现,其中cb是颜色缓冲器索引并且s是要使用的采样索引(这个索引控制什么样本被写出作为最终值)。这些函数标记图块是否写出颜色或深度缓冲器。(写出(如果需要)在图块着色器已完成其处理之后发生。)
在本实施方式中,为了该目的通过API调用来触发图块着色器14的操作:
glResolveTiles(x,y,w,h,xthreads,ythreads)
这个“解析”API调用的作用是“解析”(开始图块处理/图块着色器触发)命令被添加到包含在解析API调用中所指示的矩形(像素坐标中的(x,y,w,h))内的像素的每个图块的命令列表。
然后,当图块正在被图形处理流水线处理并且在图块命令列表中遇到“解析”命令时,图形处理流水线1操作如下。
首先,等待当前图块的所有生成的片段线程完成并且被提交给图块缓冲器。这确保图块缓冲器在图块着色器14开始其操作之前包含所关注的图块的最终渲染数据。
然后,针对位于当前图块内的每个位置发出图块着色器线程以对于位于当前图块内的每个位置执行图块着色器程序。每个线程针对图块内的给定像素执行相关的图块着色处理,并且可以从与不同的像素以及或者代替它实际上正在“处理”的像素相关联的样本位置访问数据作为其输入。在图块着色线程已完成后,恢复命令列表。
在本实施方式中,图块着色器14可以例如并且像上面所讨论的那样被用来在图块缓冲器10中的已渲染图块被写入外部存储器之前对它们执行延迟着色操作。这可能将执行延迟打光或任何其它期望的延迟着色操作。
图块着色器14能够被用来允许整个延迟着色处理逐个图块地完成,从而节约用于执行延迟着色的外部存储器带宽。
为此,图块缓冲器10被构造成能够同时地保持多个渲染目标,使得用于累计输出结果的多个G-缓冲器和颜色缓冲器能够被同时地存储在图块缓冲器10中。这可以按照需要实现。例如,可使图块缓冲器10具有使它能够实际上容纳在任何事件中用于多个图块的颜色缓冲器的足够大小。在这种情况下,每个图块颜色缓冲器能够被指定为适当的渲染目标。另选地,本申请人的美国专利申请No.13/875831中所描述的技术(通过引用整体地并入在本文)能够被使用以使图块缓冲器10能够保持所需要的多个渲染目标。
在这个过程中,当处理给定图块时,图形处理流水线1首先被控制成向各个单独的渲染目标提供延迟着色操作所需要的已渲染几何图形(G-缓冲器)。这个处理操作可以例如为包括然后被分别地存储在图块缓冲器10中的颜色、深度、曲面法线以及其它属性的图块生成渲染目标。(如在本领域中已知的那样,当执行延迟着色时,这些值然后被用来做复杂的光线计算和合成以产生最后期望的输出结果。)
在已为所关注的图块生成了这些渲染目标后,能够通过将适当的解析命令包括在图块命令列表中来触发图块着色器14操作,其中图块着色器被适当地控制成读取来自图块缓冲器10中多个的渲染目标的数据和来自先前处理的图块存储的数据,处理该数据,然后将处理结果写入在图块缓冲器10中的单独的输出颜色缓冲器渲染目标中。
图块着色器14因此将从被存储在图块缓冲器10中的所生成的渲染目标中的一些或全部读取存储的样本值作为输入值,并且在需要时,读取从先前处理的图块(相邻的一个或多个图块)存储的数据(如上面所讨论的那样),使用那些值来执行延迟着色操作,并且然后将该操作的结果存储在单独的输出颜色缓冲器中(已为此目的而分配了颜色缓冲器)。取决于正在被执行的确切的延迟着色操作,图块着色器14在执行针对给定像素的延迟着色操作时可以仅读取在每个渲染目标中与该像素相关联的采样值和/或可以读取在每个渲染目标中与一个或更多个其它(不同的)像素相关联的采样值。图块着色器14被构造成能够在适当的图形程序指令的控制下执行这些任务中的任一个。
在该操作完成后,图块着色器14触发将输出结果渲染目标写出到外部存储器的操作。
根据本发明,图块着色器14也被触发来存储已为图块缓冲器10中的图块生成以在处理图块的集合中的后续(相邻)的一个或多个图块(如果存在的话)时使用的渲染目标的采样位置值中的一些而非全部。然而,除将被保持以用于处理相邻的一个或多个图块(如上面所讨论的那样)的采样位置值以外,禁用将包含G-缓冲器的渲染目标写入存储器。这能够使用上面所讨论的适当的图块写功能来实现。
在另选布置中,例如如果本地(片上)存储器不足,则图块着色器14能够替代地存储已为图块生成以在处理主存储器16(和高速缓存存储器15)中的图块的集合中的后续(相邻)的一个或多个图块时使用的渲染目标的采样位置值。
针对待生成的输出的每个图块适当地重复这个过程,使得能够生成最终的延迟着色输出,例如帧。
图11例示了这个过程。
如图11中所示,用于图形处理流水线(例如可以在主机处理器上运行)的驱动程序将接收API调用以为了延迟着色操作而渲染多个渲染目标,然后执行图块着色器“解析”操作以对多个渲染目标执行延迟着色操作(步骤20)。响应于此,驱动程序将生成适当的图块命令列表,该列表包括用来渲染多个输入渲染目标的命令、随后是用来触发图块着色器操作的“解析”命令、以及用来使图块着色器执行延迟着色操作的命令(步骤21)。
这些命令列表然后被提供给图形处理流水线(步骤22),响应于命令,所述图形处理流水线渲染总体渲染输出的每个图块的多个输入数据渲染目标(步骤23),以在在图块缓冲器10中逐个图块地存储多个输入数据渲染目标。因为每个图块的多个渲染目标被渲染,所以当图形处理流水线看到图块“解析”命令时(步骤24),它等待直到在飞行中的渲染操作已完成为止,并且然后执行适当的图块着色器程序以使用所存储的多个渲染目标以及在适当时使用从先前相邻的一个或多个图块存储的存储采样位置数据来执行延迟着色操作(步骤25)。延迟着色操作的结果被写入图块缓冲器10中的另一个“输出”渲染目标(步骤26)。在所关注的图块被处理后,“输出”渲染目标图块被写出到外部存储器,并且来自所关注的图块的渲染目标的需要与后续相邻的一个或多个图块一起使用的采样位置值被存储在图块缓冲器10中,同时防止多个输入数据值渲染目标的写出(步骤27)。所述处理然后移动到下一个图块(步骤28),直到用于渲染输出的所有图块已被处理为止(步骤29)。
从上文可以看到,本发明至少在其优选实施方式中提供了使例如延迟着色操作可以根据基于图块的图形处理流水线内的渲染的图块数据来执行,其中减少了到和来自外部存储器的数据的存储和后续的再存储。这能够减少在基于图块的图形处理系统中的特定处理操作所需的带宽和存储器的量。
这至少在本发明的优选实施方式中是通过保持图块的一个或更多个但非全部采样位置的采样位置值以在处理相邻图块时使用来实现的。

Claims (27)

1.一种操作基于图块的图形处理流水线的方法,所述基于图块的图形处理流水线包括:
至少包括光栅化器和渲染器的多个处理级,所述光栅化器对输入的图元进行光栅化以生成待处理的图形片段,每个图形片段与一个或更多个采样位置相关联,并且所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,其被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,其被构造成将所述图块缓冲器中存储的数据写到所述外部存储器,
所述方法包括以下步骤:
所述图形处理流水线在处理分别包含多个采样位置的阵列的多个图块的集合以生成输出时
针对所述图块的集合中的第一图块的多个采样位置执行以下处理操作:
渲染包含将在所述处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标包括与所述第一图块的采样位置的阵列相对应的采样位置值的阵列;
使用来自针对所述第一图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值,对所述第一图块执行所述处理操作以生成针对所述第一图块内的多个采样位置的输出值;以及
存储针对所述第一图块而存储在所述图块缓冲器中的所述至少一个渲染目标中的一个渲染目标或多个渲染目标的一些而非全部的所述采样位置值,以在执行所述图块的集合中的至少一个其它图块的所述处理操作时使用;并且
针对所述图块的集合中的第二图块的多个采样位置执行以下处理:
针对所述第二图块,渲染包含将在所述处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标包括与所述第二图块的采样位置的阵列相对应的采样位置值的阵列;以及
针对所述第二图块内的多个采样位置中的一些采样位置,仅使用来自针对所述第二图块而存储在所述图块缓冲器中的至少一个渲染目标的采样位置值,并且针对所述第二图块内的多个采样位置中的其它采样位置,使用来自针对所述第二图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值和来自所述第一图块的被存储以在执行所述图块的集合中的至少一个其它图块的所述处理操作时使用的所述采样位置值中的一个或更多个采样位置值,对所述第二图块执行所述处理操作以生成针对所述第二图块内的多个采样位置的输出值。
2.根据权利要求1所述的方法,其中,所述图块的集合包括四个或更多个图块,并且所述方法包括以下步骤:
针对所述图块的集合中的两个或更多个图块:
渲染包含将在所述处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中;
存储针对所述图块而存储在所述图块缓冲器中的所述至少一个渲染目标中的一个渲染目标或多个渲染目标的一些而非全部的所述采样位置值,以在执行所述图块的集合中的至少一个其它图块的所述处理操作时使用;以及
使用针对所述图块而存储在所述图块缓冲器中的至少一个渲染目标或多个渲染目标以及来自所述图块的集合中的至少一个其它图块的一个或更多个存储的采样位置值,对所述图块执行所述处理操作以生成针对所述图块的输出。
3.根据权利要求1或2所述的方法,其中:
存储针对所述第一图块而存储在所述图块缓冲器中的所述至少一个渲染目标中的一个渲染目标或多个渲染目标的一些而非全部的所述采样位置值以在执行所述图块的集合中的至少一个其它图块的所述处理操作时使用的步骤包括:存储针对所述第一图块生成的、存储在所述图块缓冲器中的所述至少一个渲染目标中的一个渲染目标或多个渲染目标的一些而非全部的所述采样位置值,以在执行所述图块的集合中的至少一个相邻图块的所述处理操作时使用;并且
所述处理操作使用来自所述第一图块的存储的所述采样位置值所针对的所述图块的集合中的所述第二图块包括所述图块的集合中的与所述第一图块相邻的图块。
4.根据权利要求1所述的方法,其中,所述处理操作包括以下中的一项:延迟着色操作;数据压缩或解压缩操作;以及图像处理操作。
5.根据权利要求1所述的方法,其中,所述处理操作由所述图形处理流水线的可编程处理级执行。
6.根据权利要求1所述的方法,其中:
所述处理操作得到针对图块的一个或更多个采样位置的输出值;
针对被生成了输出值的每个采样位置,所述处理操作使用来自多个采样位置的集合的采样位置值来生成所述输出值;并且
用于生成针对采样位置的输出值的多个采样位置的各个集合都被构造为使得正在使用所述多个采样位置的集合为其生成所述输出值的所述采样位置是位于所述采样位置的集合的角部处的采样位置。
7.根据权利要求1所述的方法,其中:
所述处理操作得到针对图块的一个或更多个采样位置的输出值,并且使用多个采样位置值的集合来产生每个输出值,并且
所述方法包括以下步骤:
基于所述处理操作使用以产生每个输出值的所述采样位置值的集合的大小和形状来选择被存储以在执行另一个图块的所述处理操作时使用的所述采样位置值。
8.根据权利要求1所述的方法,其中,被存储以在执行另一个图块或多个图块的所述处理操作时使用的所述采样位置数据被存储在与所述图形处理流水线相关联并且所述图形处理流水线能够访问的高速缓冲存储器中。
9.根据权利要求1所述的方法,该方法包括以下步骤:按照选择的顺序处理所述图块的集合,使得采样位置值在执行另一图块的所述处理操作时被需要的图块或多个图块在所述另一图块之前被处理。
10.根据权利要求1所述的方法,该方法包括以下步骤:将所述处理操作的输出写到所述图块缓冲器中的输出渲染目标,或者写到外部存储器。
11.根据权利要求1所述的方法,该方法包括以下步骤:存储所述处理操作的输出以用作所述图块的集合中的待处理的另一个图块的一个输入值或多个输入值。
12.一种操作基于图块的图形处理流水线的方法,所述基于图块的图形处理流水线包括:
至少包括光栅化器和渲染器的多个处理级,所述光栅化器对输入的图元进行光栅化以生成待处理的图形片段,每个图形片段与一个或更多个采样位置相关联,并且所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,其被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,其被构造成将所述图块缓冲器中存储的数据写到所述外部存储器,
所述方法包括以下步骤:
所述图形处理流水线在处理分别包含多个采样位置的阵列的多个图块的集合以生成输出时
针对所述图块的集合中的至少一个图块的多个采样位置执行以下处理操作:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样位置的阵列相对应的采样位置值的阵列;
使用来自针对所述图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值对所述图块执行所述处理操作以生成针对所述图块内的多个采样位置的输出值;以及
存储针对所述图块而存储在所述图块缓冲器中的所述至少一个渲染目标中的一个渲染目标或多个渲染目标的一些而非全部的所述采样位置值,以在执行所述图块的集合中的至少一个其它图块的所述处理操作时使用。
13.一种操作基于图块的图形处理流水线的方法,所述基于图块的图形处理流水线包括:
至少包括光栅化器和渲染器的多个处理级,所述光栅化器对输入的图元进行光栅化以生成待处理的图形片段,每个图形片段都与一个或更多个采样位置相关联,并且所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,其被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,其被构造成将所述图块缓冲器中存储的数据写到所述外部存储器,
所述方法包括以下步骤:
所述图形处理流水线在处理分别包含多个采样位置的阵列的多个图块的集合以生成输出时
针对所述图块的集合中的至少一个图块的多个采样位置执行以下处理操作:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样位置的阵列相对应的采样位置值的阵列;
从存储器读取来自针对所述图块的集合中的先前处理的图块所生成的一个或更多个渲染目标的一些而非全部的所述采样位置值;以及
针对所述图块内的多个采样位置中的一些采样位置,仅使用来自针对所述图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值,并且针对所述图块内的多个采样位置中的其它采样位置,使用来自针对所述图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值和来自所述图块的集合的先前处理的图块的一个或更多个渲染目标的所读取的采样位置值,对所述图块执行所述处理操作以生成针对所述图块内的多个采样位置的输出值。
14.一种基于图块的图形处理流水线,该图形处理流水线包括:
至少包括光栅化器和渲染器的多个处理级,所述光栅化器对输入的图元进行光栅化以生成待处理的图形片段,每个图形片段都与一个或更多个采样位置相关联,并且所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,其被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,其被构造成将所述图块缓冲器中存储的数据写到所述外部存储器,
其中,所述图形处理流水线被构造成在处理分别包含多个采样位置的阵列的多个图块的集合以生成输出时
针对所述图块的集合中的第一图块的多个采样位置执行以下处理操作:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与所述第一图块的采样位置的阵列相对应的采样位置值的阵列;
使用来自针对所述第一图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值,对所述第一图块执行所述处理操作以生成针对所述第一图块内的多个采样位置的输出值;以及
存储针对所述第一图块而存储在所述图块缓冲器中的所述至少一个渲染目标中的一个渲染目标或多个渲染目标的一些而非全部的所述采样位置值,以在执行所述图块的集合中的至少一个其它图块的所述处理操作时使用;并且
针对所述图块的集合中的第二图块的多个采样位置执行以下处理操作:
针对所述第二图块,渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标包括与所述第二图块的采样位置的阵列相对应的采样位置值的阵列;以及
针对所述第二图块内的多个采样位置中的一些采样位置,仅使用来自针对所述第二图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值,并且针对所述第二图块内的多个采样位置中的其它采样位置,使用来自针对所述第二图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值和来自所述第一图块的被存储以在处理所述图块的集合中的至少一个其它图块时使用的所述采样位置值中的一个或更多个采样位置值,对所述第二图块执行所述处理操作以生成针对所述第二图块内的多个采样位置的输出值。
15.根据权利要求14所述的图形处理流水线,其中,所述图块的集合包括四个或更多个图块,并且所述图形处理流水线被构造成针对所述图块的集合中的两个或更多个图块:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中;
存储针对所述图块而存储在所述图块缓冲器中的所述至少一个渲染目标中的一个渲染目标或多个渲染目标的一些而非全部的所述采样位置值,以在执行所述图块的集合中的至少一个其它图块的所述处理操作时使用;以及
使用针对所述图块而存储在所述图块缓冲器中的至少一个或多个渲染目标和所述图块的集合中的至少一个其它图块的一个或更多个存储的采样位置值,对所述图块执行所述处理操作以生成针对所述图块的输出。
16.根据权利要求14或15所述的图形处理流水线,其中,所述图形处理流水线被构造成:
存储针对所述第一图块生成的、存储在所述图块缓冲器中的所述至少一个渲染目标中的一个渲染目标或多个渲染目标的一些而非全部的所述采样位置值,以在执行所述图块的集合中的至少一个相邻图块的所述处理操作时使用;以及
所述处理操作随后使用来自所述第一图块的存储的所述采样位置值所针对的所述图块的集合中的所述第二图块包括所述图块的集合中的与所述第一图块相邻的图块。
17.根据权利要求14所述的图形处理流水线,其中,所述处理操作包括以下中的一项:延迟着色操作;数据压缩或解压缩操作;以及图像处理操作。
18.根据权利要求14所述的图形处理流水线,其中,所述图形处理流水线包括执行所述处理操作的可编程处理级。
19.根据权利要求14所述的图形处理流水线,其中:
所述处理操作得到针对图块的一个或更多个采样位置的输出值;
所述处理操作针对被生成了输出值的每个采样位置使用来自多个采样位置的集合的采样位置值来生成所述输出值;并且
被用于生成采样位置的输出值的每个多个采样位置的集合都被构造成使得正在使用所述多个采样位置的集合为其生成所述输出值的所述采样位置是位于所述采样位置的集合的角部处的采样位置。
20.根据权利要求14所述的图形处理流水线,其中:
所述处理操作得到针对图块的一个或更多个采样位置的输出值,并且使用多个采样位置值的集合来产生每个输出值;并且
所述图形处理流水线被构造成:
基于所述处理操作使用来产生每个输出值的采样位置值的集合的大小和形状来选择被存储以在执行另一个图块的所述处理操作时使用的所述采样位置值。
21.根据权利要求14所述的图形处理流水线,其中,被存储以在执行另一个图块或多个图块的所述处理操作时使用的所述采样位置数据被存储在与所述图形处理流水线相关联并且所述图形处理流水线能够访问的高速缓冲存储器中。
22.根据权利要求14所述的图形处理流水线,其中,所述图形处理流水线被构造成按照选择的顺序处理所述图块的集合,使得采样位置值在执行另一个图块的所述处理操作时被需要的一个图块或多个图块在所述另一个图块之前被处理。
23.根据权利要求14所述的图形处理流水线,其中,所述图形处理流水线被构造成将所述处理操作的输出写入所述图块缓冲器中的输出渲染目标,或者写入外部存储器。
24.根据权利要求14所述的图形处理流水线,其中,所述图形处理流水线被构造成存储所述处理操作的输出以用作所述图块的集合中的待处理的另一个图块的一个输入值或多个输入值。
25.一种基于图块的图形处理流水线,包括:
至少包括光栅化器和渲染器的多个处理级,所述光栅化器对输入的图元进行光栅化以生成待处理的图形片段,每个图形片段都与一个或更多个采样位置相关联,并且所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,其被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,其被构造成将所述图块缓冲器中存储的数据写到所述外部存储器,
其中:
所述图形处理流水线被构造成在处理分别包含多个采样位置的阵列的多个图块的集合以生成输出时
针对所述图块的集合中的至少一个图块的多个采样位置执行以下处理操作:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样位置的阵列相对应的采样位置值的阵列;
使用来自针对所述图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值,对所述图块执行所述处理操作以生成针对所述图块内的多个采样位置的输出值;以及
存储针对所述图块而存储在所述图块缓冲器中的所述至少一个渲染目标中的一个渲染目标或多个渲染目标的一些而非全部的所述采样位置值,以在执行所述图块的集合中的至少一个其它图块的所述处理操作时使用。
26.一种基于图块的图形处理流水线,包括:
至少包括光栅化器和渲染器的多个处理级,所述光栅化器对输入的图元进行光栅化以生成待处理的图形片段,每个图形片段都与一个或更多个采样位置相关联,并且所述渲染器处理由所述光栅化器生成的片段以生成渲染的片段数据;
图块缓冲器,其被构造成在将渲染的片段数据写出到外部存储器之前在所述图形处理流水线本地存储渲染的片段数据;以及
写出级,其被构造成将所述图块缓冲器中存储的数据写到所述外部存储器,
所述图形处理流水线被构造成在处理分别包含多个采样位置的阵列的多个图块的集合以生成输出时
针对所述图块的集合中的至少一个图块的多个采样位置执行以下处理操作:
渲染包含将在处理操作中使用的数据的至少一个渲染目标,并且将所述至少一个渲染目标存储在所述图块缓冲器中,每个渲染目标都包括与关注的所述图块的采样位置的阵列相对应的采样位置值的阵列;
从存储器读取针对所述图块的集合中的先前处理的图块生成的一个或更多个渲染目标的一些而非全部的所述采样位置值;以及
针对所述图块内的多个采样位置中的一些采样位置,仅使用来自针对所述图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值,并且针对所述图块内的多个采样位置中的其它采样位置,使用来自针对所述图块而存储在所述图块缓冲器中的所述至少一个渲染目标的采样位置值和来自所述图块的集合中的先前处理的图块的一个渲染目标或多个渲染目标的所读取的采样位置值,对所述图块执行所述处理操作以生成针对所述图块内的多个采样位置的输出值。
27.一种计算机存储介质,所述计算机存储介质存储包括代码的计算机程序,所述代码适于在所述程序在数据处理系统上运行时执行根据权利要求1所述的方法。
CN201410440493.0A 2013-08-30 2014-09-01 基于图块的图形处理流水线和操作图形处理流水线的方法 Active CN104424621B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/015,897 2013-08-30
US14/015,897 US9514563B2 (en) 2013-08-30 2013-08-30 Graphics processing systems

Publications (2)

Publication Number Publication Date
CN104424621A CN104424621A (zh) 2015-03-18
CN104424621B true CN104424621B (zh) 2019-05-14

Family

ID=51752271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410440493.0A Active CN104424621B (zh) 2013-08-30 2014-09-01 基于图块的图形处理流水线和操作图形处理流水线的方法

Country Status (4)

Country Link
US (1) US9514563B2 (zh)
CN (1) CN104424621B (zh)
GB (1) GB2519422B (zh)
TW (1) TWI637346B (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104770051A (zh) * 2012-11-01 2015-07-08 交互数字专利控股公司 用于实现WLAN接近服务(WLAN ProSe)的方法
US9449362B2 (en) * 2013-09-06 2016-09-20 Intel Corporation Techniques for reducing accesses for retrieving texture images
US9349213B2 (en) * 2013-09-09 2016-05-24 Vivante Corporation Tile-based accumulative multi-layer alpha blending systems and methods
US9934604B2 (en) * 2013-12-27 2018-04-03 Intel Corporation Culling using masked depths for MSAA
GB2526598B (en) 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
US10417817B2 (en) * 2014-11-13 2019-09-17 Nvidia Corporation Supersampling for spatially distributed and disjoined large-scale data
US9772849B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772848B2 (en) 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
KR102341267B1 (ko) * 2015-05-04 2021-12-20 삼성전자주식회사 양안 시차 영상에 대한 렌더링 방법 및 장치
US10089775B2 (en) * 2015-06-04 2018-10-02 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US10008030B2 (en) 2015-09-07 2018-06-26 Samsung Electronics Co., Ltd. Method and apparatus for generating images
US20170076417A1 (en) * 2015-09-10 2017-03-16 Apple Inc. Display frame buffer compression
US10275493B1 (en) * 2016-01-18 2019-04-30 OmniSci, Inc. System and method for executing queries on multi-graphics processing unit systems
GB2546810B (en) * 2016-02-01 2019-10-16 Imagination Tech Ltd Sparse rendering
CN107240142B (zh) * 2016-03-28 2020-10-16 龙芯中科技术有限公司 图形绘制方法及装置
GB2548852B (en) 2016-03-30 2020-10-28 Advanced Risc Mach Ltd Method of operating a graphics processing pipeline by compressing a block of sampling positions having the same data value
US10169887B2 (en) 2016-06-10 2019-01-01 Apple Inc. Accelerated blits of multisampled textures on GPUs
US10127707B2 (en) * 2016-06-27 2018-11-13 Intel Corporation Discard mechanism for tile-based rendering
US20180082465A1 (en) * 2016-09-16 2018-03-22 Prasoonkumar Surti Apparatus and method for optimized tile-based rendering
CN108073550A (zh) 2016-11-14 2018-05-25 耐能股份有限公司 缓冲装置及卷积运算装置与方法
TWI634436B (zh) * 2016-11-14 2018-09-01 耐能股份有限公司 緩衝裝置及卷積運算裝置與方法
US10445852B2 (en) * 2016-12-22 2019-10-15 Apple Inc. Local image blocks for graphics processing
GB2558885B (en) * 2017-01-12 2021-04-07 Imagination Tech Ltd Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering
GB2558886B (en) 2017-01-12 2019-12-25 Imagination Tech Ltd Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space
US10417815B2 (en) * 2017-01-27 2019-09-17 Advanced Micro Devices, Inc. Out of order pixel shader exports
US10460418B2 (en) 2017-02-10 2019-10-29 Microsoft Technology Licensing, Llc Buffer index format and compression
US10235735B2 (en) * 2017-04-10 2019-03-19 Intel Corporation Graphics processor with tiled compute kernels
GB2561557B (en) * 2017-04-13 2020-08-12 Advanced Risc Mach Ltd Graphics processing method and apparatus in which modified edge positions are used in rasterisation
US10789202B2 (en) * 2017-05-12 2020-09-29 Google Llc Image processor with configurable number of active cores and supporting internal network
US10074210B1 (en) * 2017-07-25 2018-09-11 Apple Inc. Punch-through techniques for graphics processing
CN108133453A (zh) * 2017-12-13 2018-06-08 北京奇虎科技有限公司 一种基于OpenGL的图像处理器及其功能扩展方法
GB2571979B8 (en) * 2018-03-15 2023-07-12 Advanced Risc Mach Ltd Graphics processing
GB2570743B (en) 2018-06-29 2021-06-23 Imagination Tech Ltd Tile assignment to processing cores within a graphics processing unit
CN109446110A (zh) * 2018-10-16 2019-03-08 西安邮电大学 可实现数据地址连续的U型布局tile缓存方法
GB2580179B (en) * 2018-12-21 2021-08-18 Imagination Tech Ltd Tile-based scheduling
CN112426711B (zh) * 2020-10-23 2024-03-26 杭州电魂网络科技股份有限公司 Bloom效果处理的方法、系统、电子装置和存储介质
GB2603156B (en) * 2021-01-28 2023-05-10 Advanced Risc Mach Ltd Tile-based graphics processing systems
WO2024073953A1 (zh) * 2022-10-08 2024-04-11 芯动微电子科技(珠海)有限公司 一种分块渲染模式图形处理方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101794456A (zh) * 2009-01-15 2010-08-04 Arm有限公司 用于处理图形的方法和装置
US8325203B1 (en) * 2007-08-15 2012-12-04 Nvidia Corporation Optimal caching for virtual coverage antialiasing

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09212678A (ja) 1996-01-31 1997-08-15 Sony Corp 3次元画像生成装置
GB2353686B (en) 1996-04-30 2001-05-02 Evans & Sutherland Computer Co Computer graphics system with adaptive pixel multisampler
US5905506A (en) 1996-08-26 1999-05-18 Adobe Systems Incorporated Shared tile image representations
US6104417A (en) 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
US6856320B1 (en) 1997-11-25 2005-02-15 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US7102646B1 (en) 1997-11-25 2006-09-05 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US6044178A (en) 1998-03-10 2000-03-28 Seiko Epson Corporation LCD projector resolution translation
US6614448B1 (en) 1998-12-28 2003-09-02 Nvidia Corporation Circuit and method for displaying images using multisamples of non-uniform color resolution
US6380935B1 (en) 1999-03-17 2002-04-30 Nvidia Corporation circuit and method for processing render commands in a tile-based graphics system
US6466223B1 (en) 1999-03-24 2002-10-15 Microsoft Corporation Method and apparatus for texture memory management
US6674443B1 (en) 1999-12-30 2004-01-06 Stmicroelectronics, Inc. Memory system for accelerating graphics operations within an electronic device
US7453459B2 (en) 2001-02-26 2008-11-18 Adobe Systems Incorporated Composite rendering 3-D graphical objects
US6798421B2 (en) 2001-02-28 2004-09-28 3D Labs, Inc. Ltd. Same tile method
US6943809B2 (en) 2001-06-12 2005-09-13 Adobe Systems Incorporated Tiled vector flattened output
US6914609B2 (en) * 2002-02-28 2005-07-05 Sun Microsystems, Inc. Multiple scan line sample filtering
US6819324B2 (en) 2002-03-11 2004-11-16 Sun Microsystems, Inc. Memory interleaving technique for texture mapping in a graphics system
US7154502B2 (en) 2002-03-19 2006-12-26 3D Labs, Inc. Ltd. 3D graphics with optional memory write before texturing
CN1795665B (zh) * 2003-05-27 2013-01-09 株式会社尼康 图像处理装置与图像处理程序
GB0319697D0 (en) 2003-08-21 2003-09-24 Falanx Microsystems As Method of and apparatus for differential encoding and decoding
US7053893B1 (en) 2003-12-15 2006-05-30 Nvidia Corporation Position conflict detection and avoidance in a programmable graphics processor using tile coverage data
US7589722B2 (en) 2004-08-10 2009-09-15 Ati Technologies, Ulc Method and apparatus for generating compressed stencil test information
GB0426170D0 (en) 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
US8199825B2 (en) 2004-12-14 2012-06-12 Hewlett-Packard Development Company, L.P. Reducing the resolution of media data
US8212832B2 (en) 2005-12-08 2012-07-03 Ati Technologies Ulc Method and apparatus with dynamic graphics surface memory allocation
US7660486B2 (en) 2006-07-10 2010-02-09 Aten International Co., Ltd. Method and apparatus of removing opaque area as rescaling an image
US10115221B2 (en) 2007-05-01 2018-10-30 Advanced Micro Devices, Inc. Stencil compression operations
US7948500B2 (en) 2007-06-07 2011-05-24 Nvidia Corporation Extrapolation of nonresident mipmap data using resident mipmap data
GB2469526B (en) 2009-04-17 2015-06-24 Advanced Risc Mach Ltd Generating and resolving pixel values within a graphics processing pipeline
US8988443B2 (en) 2009-09-25 2015-03-24 Arm Limited Methods of and apparatus for controlling the reading of arrays of data from memory
GB0922126D0 (en) * 2009-12-17 2010-02-03 Advanced Risc Mach Ltd Graphics processing systems
US9508185B2 (en) 2011-05-02 2016-11-29 Sony Interactive Entertainment Inc. Texturing in graphics hardware
GB2497762B (en) 2011-12-20 2018-05-23 Advanced Risc Mach Ltd Intermediate value storage within a graphics processing apparatus
US9183664B2 (en) 2012-05-03 2015-11-10 Apple Inc. Tiled forward shading with improved depth filtering
US9899007B2 (en) 2012-12-28 2018-02-20 Think Silicon Sa Adaptive lossy framebuffer compression with controllable error rate
US9384522B2 (en) 2012-12-28 2016-07-05 Qualcomm Incorporated Reordering of command streams for graphical processing units (GPUs)

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8325203B1 (en) * 2007-08-15 2012-12-04 Nvidia Corporation Optimal caching for virtual coverage antialiasing
CN101794456A (zh) * 2009-01-15 2010-08-04 Arm有限公司 用于处理图形的方法和装置

Also Published As

Publication number Publication date
US20150062154A1 (en) 2015-03-05
GB2519422B (en) 2020-07-08
CN104424621A (zh) 2015-03-18
TWI637346B (zh) 2018-10-01
US9514563B2 (en) 2016-12-06
GB201415243D0 (en) 2014-10-15
TW201516953A (zh) 2015-05-01
GB2519422A (en) 2015-04-22

Similar Documents

Publication Publication Date Title
CN104424621B (zh) 基于图块的图形处理流水线和操作图形处理流水线的方法
CN104134183B (zh) 基于区块的图形处理管道及其操作方法、存储介质
KR102595713B1 (ko) 그래픽 처리 시스템
CN101604454B (zh) 图形处理系统
CN105321199B (zh) 图形处理流水线及其操作方法与介质
KR102322433B1 (ko) 그래픽 처리 시스템
US6891533B1 (en) Compositing separately-generated three-dimensional images
US9070200B2 (en) Graphics processing systems
CN110291563A (zh) 图形处理中的多个着色器进程
KR102057163B1 (ko) 그래픽 처리 시스템에서 히든 표면의 제거
US9519982B2 (en) Rasterisation in graphics processing systems
US9607356B2 (en) Graphics processing systems
GB2574361A (en) Graphics processing
CN110738593B (zh) 图形处理器及其操作方法、图形处理系统、编译器
US9916675B2 (en) Graphics processing systems
US10726610B2 (en) Efficient graphics processing using metadata
CN110276711A (zh) 图形处理
GB2603156A (en) Tile-based graphics processing systems
US11321803B2 (en) Graphics processing primitive patch testing

Legal Events

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