CN104134183B - 基于区块的图形处理管道及其操作方法、存储介质 - Google Patents

基于区块的图形处理管道及其操作方法、存储介质 Download PDF

Info

Publication number
CN104134183B
CN104134183B CN201410181969.3A CN201410181969A CN104134183B CN 104134183 B CN104134183 B CN 104134183B CN 201410181969 A CN201410181969 A CN 201410181969A CN 104134183 B CN104134183 B CN 104134183B
Authority
CN
China
Prior art keywords
block
rendering
data
graphics
block buffer
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
CN201410181969.3A
Other languages
English (en)
Other versions
CN104134183A (zh
Inventor
J·尼斯塔德
A·D·恩格-哈斯特韦德
S·卡卡尔拉普迪
M·斯托克斯
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 CN104134183A publication Critical patent/CN104134183A/zh
Application granted granted Critical
Publication of CN104134183B publication Critical patent/CN104134183B/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
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

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

Abstract

基于区块的图形处理管道及其操作方法、存储介质。本发明提供了一种图形处理系统。基于区块的图形处理管道(1)包括光栅器(3)、渲染器(6)、区块缓冲器(10)、写出级(13)和可编程处理级(14)。区块缓冲器(10)存储用于延迟着色操作的多个渲染对象并且可编程处理级(14)可操作以在图形程序指令的控制下从区块缓冲器(10)中存储的延迟着色操作的一组多个渲染对象中的两个或更多个读取数据,使用读取的数据执行延迟着色处理操作,并且将处理操作的结果写入到区块缓冲器(10)中的输出渲染对象或者写入到外部存储器。

Description

基于区块的图形处理管道及其操作方法、存储介质
技术领域
本发明涉及一种图形处理系统,并且具体地,涉及一种基于区块的图形处理系统。
背景技术
如本领域中所公知的,通常通过首先将诸如将要显示的帧的将要生成的输出划分为多个类似的基本分量(所谓的图元)来允许更容易地执行图形处理操作。这些“图元”通常是诸如三角形的简单的多边形的形式。
通常使用从要求图形输出的应用(例如,游戏)接收的图形绘图指令(请求)利用用于图形处理系统的应用程序接口来生成图形图元。
每个图元在该级通常由一组顶点来限定和表示。用于图元的每个顶点具有与其关联的表示顶点的一组数据(例如,位置、颜色、纹理和其它属性数据)。该数据然后例如在光栅化和渲染顶点(顶点相关的图元)以便于生成图形处理系统的想要的输出时使用该数据。
一旦已经生成和限定了图元及其顶点,则能够由图形处理系统来进行处理,以便于例如显示该帧。
该处理基本上涉及确定覆盖将要处理的输出区域的采样点的阵列的哪些采样点被图元覆盖,并且然后确定每个采样点应具有的表示该采样点处的图元的外观(例如,其颜色等等方面)。这些处理被分别统称为光栅化和渲染。
光栅化处理确定应该图元的采样位置(即,将要用于表示输出(例如将要显示的场景)中的图元的采样点的(x,y)位置)。这通常使用图元的顶点的位置来进行。
渲染处理然后获得表示采样点处的图元所需的数据(例如,红色、绿色和蓝色(RGB)颜色值以及“阿尔法”(透明度)值)(即,对每个采样点进行“着色”)。如本领域中公知的那样,这能够包括应用纹理、混合采样点数据值等等。
(在图形文献中,术语“光栅化”有时用于表示针对采样位置的图元转换和渲染。然而,这里的“光栅化”将用于表示将图元数据转换为仅采样点地址。)
这些处理通常通过下述方式来执行:测试一个采样点的组或者多于一个采样点的组并且然后对于发现包括有问题的(被测试的)采样点内(覆盖)的采样点的每组采样点,生成对其执行图形处理操作(例如,渲染)的通常被称为“片段”的分立图形实体。所覆盖的采样点因此在实际上被作为将用于在有问题的采样点处渲染图元的片段来处理。“片段”是渲染处理(渲染管道)的图形实体。被生成和处理的每个片段可以根据如何构造图形处理系统而例如表示单个采样点或一组多个采样点。
(“片段”因此有效地(与其关联)为插值到图元的给定输出空间采样点而获得的一组图元。其还可以包括对有问题的采样点(片段位置)进行着色所要求的图元和其它状态数据。每个图形片段可以通常与输出(例如,输出帧)的“像素”)是相同大小和位置(这是由于,当在最终显示时像素是奇异点,在图形处理器对其进行操作(渲染)的“片段”与显示的像素之间可以存在一一对应)。然而,能够是下述情况,在片段与显示像素之间不存在一一对应关系,例如,在该情况下,在显示最终图像之前对渲染图像进行诸如下采样的特定形式的后处理。)
(还可以是下述情况,当例如给定位置的来自不同重叠图元的多个片段可以彼此影响(例如,由于透明度和/或混合),最终像素输出可以根据像素位置处的多个或片段)。
(因此,在采样点与显示器的像素之间可以存在一一对应关系,但是更常见的是,在采样点与显示像素之间没有存在一一对应关系,这是因为可以对渲染的采样值执行下采样以生成用于显示最终图像的输出像素值。类似地,在给定位置处的例如来自不同交叠的图元的多个采样点值彼此影响(例如,由于透明度和/或混合)的情况下,最终的像素输出也将依赖于该像素位置处的多个交叠的采样值)。
如本领域中公知的,图形处理系统和图形处理器通常被提供为具有用于执行生成想要的输出图形数据组(例如,其可以表示将要生成的帧的全部或一部分)所需要的图形处理功能(例如,获取输入数据、几何处理、顶点着色、光栅化、渲染等等)的多个处理级的图形处理管道的形式。
图形处理管道的处理级可以例如为固定功能单元(硬件)的形式,或者一些或全部功能单元可以是可编程的(借助于能够被编程以执行想要的操作的可编程电路来提供)。例如,图形处理管道可以包括可编程顶点和/或片段着色器,以执行想要的顶点和/或片段着色操作。
基于区块的图形处理管道也将包括一个或多个所谓的区块缓冲器,其存储管道的末端处的渲染片段数据直到完成了给定的区块并且将其写入到诸如帧缓冲器的外部存储器中以便于使用。该本地的管道存储器用于在数据被最终输出到外部存储器之前本地地保持片段数据。
区块缓冲器中的数据通常存储为采样值的阵列,其中,不同组的采样值对应于输出像素的阵列的各输出像素并且与其关联。例如每个像素位置可以存在一个采样,但是更常见的是,对于每个像素存在多个(例如,4个)采样,例如,以多采样方式生成渲染输出的情况。区块缓冲器可以存储例如包含针对有问题的区块的颜色值的颜色缓冲器和存储有问题的区块的深度值的深度缓冲器。
为了方便将来自区块缓冲器的渲染图形数据写回到诸如帧缓冲器的外部存储器,图形处理管道将通常包括耦接到为此目的的区块缓冲器管道存储器的写入电路。图形处理管道也可以设置有固定功能下采样电路,用于在需要时(例如为了反锯齿目的而以超采样或多采样方式渲染将要显示的帧的情况)写入到外部存储器之前对本地存储的数据进行下采样。
当执行图形处理以执行所谓的“延迟着色”时,对这样的处理的需求变得更加强烈。当进行延迟着色时,应用程序执行多个渲染通道,通常在第一渲染同打扫中使用多个渲染对象以输出颜色、深度、表面法线以及可能的其它属性以分离渲染对象。然后在第一渲染通道的输出中读取以进行复杂的光计算和组成以在第二渲染通道中产生最终结果。这要求大量的带宽来读取和写入所有渲染对象(由于应用程序将通常例如在第一通道中写入多个渲染对象,并且然后在第二通道中使用渲染对象作为纹理以生成最终结果)。
在低功率和便携装置中的图形处理器中,将数据从图形处理管道写入到外部存储器以及将输出从外部存储器读取到图形处理管道的本地存储器的反向操作以进行延迟着色的带宽开销会变成严重的问题。带宽消耗能够是热和电力消耗的主要原因,并且因此,通常希望在嵌入式图形处理系统中减少外部存储器读取和写入的带宽消耗。
已经提出了各种技术来减少图形处理系统中外部存储器读取和写入的带宽消耗。这些技术包括例如使用问题和帧缓冲器压缩来减少必须写入/读取的数据量和/或消除不必要的外部存储器(例如,帧存储器)读取和写入操作。
对于上述已知技术,申请人相信,仍然存在对用于在图形处理管道中(特别地,在基于区块的图形处理管道中)执行延迟着色的技术进行改进的可能性。
发明内容
根据本发明的第一方面,提供了一种操作基于区块的图形处理管道的方法,该图形处理管道包括:
多个处理级,所述多个处理级至少包括光栅器,其对输入图元进行光栅化以生成待处理的图形片段,每个图形片段具有与其关联的一个或更多个采样点;以及渲染器,其对由光栅器生成的片段进行处理以生成渲染片段数据;
区块缓冲器,其被构造为在渲染片段数据被写入到外部存储器之前相对于图形处理管道本地地存储渲染片段数据;
写入级,其被构造为将区块缓冲器中存储的数据写入到外部存储器;以及
可编程处理级,其可操作以响应于一个或更多个图形程序指令,读取区块缓冲器中存储的数据,使用读取的数据执行处理操作,并且将处理操作的结果写入到区块缓冲器或外部存储器;
该方法包括:
渲染包括将在延迟着色操作中使用的数据的多个渲染对象并且将所述多个渲染对象作为独特渲染对象存储在区块缓冲器中;
使用可编程处理级来从区块缓冲器中所存储的多个渲染对象中的两个或更多个读取数据,使用读取的数据执行延迟着色处理操作,并且将处理操作的结果写入到区块缓冲器中的输出渲染对象,或者写入到外部存储器。
根据本发明的第二方面,提供了一种基于区块的图形处理管道,其包括:
多个处理级,所述多个处理级至少包括光栅器,其对输入图元进行光栅化以生成待处理的图形片段,每个图形片段具有与其关联的一个或更多个采样点;以及渲染器,其对由光栅器生成的片段进行处理以生成渲染片段数据;
区块缓冲器,其被构造为在渲染片段数据被写入到外部存储器之前相对于图形处理管道本地地存储渲染片段数据;
写入级,其被构造为将区块缓冲器中存储的数据写入到外部存储器;以及
可编程处理级,其可操作以在图形程序指令的控制下,从区块缓冲器中存储的用于延迟着色操作的一组多个着色对象中的两个或更多个读取数据,使用读取的数据执行延迟着色处理操作,并且将处理操作的结果写入到区块缓冲器中的输出渲染对象或外部存储器;
本发明的图形处理管道包括可编程处理级,其能够直接读取和处理来自区块缓冲器中存储的多个渲染对象的数据。通过将多个渲染对象存储在区块缓冲器中,使用可编程处理级从区块缓冲器直接读取和处理这些缓冲器的内容并且然后将从可编程处理级获得的图像写入到例如区块缓冲器中的另外的渲染对象,能够节省从外部存储器读取多个渲染对象的整个读取带宽。
这使得能够对于区块缓冲器中存储的片段数据进行延迟着色操作而不需要例如外部存储器(例如,帧存储器)中的片段数据的存储和接下来的再存储。事实上,本发明能够用于以零外部带宽开销执行在芯片上进行的这样的操作,来替代写入和读取大的G缓冲器,从而使得能够在嵌入式空间中应用这些技术。这相应地能够使得系统性能增大并且功耗降低。
如本领域中已知的,图形处理管道的光栅器将生成待渲染以生成用于想要的图形输出(例如,将要显示的帧)的采样点的渲染图形数据的图形片段。由光栅器生成的每个图形片段具有与其关联的一组图形输出的采样点并且将用于生成针对与该片段关联的一组采样点中的一个或更多个采样点的渲染图形数据。
光栅器可以被构造为以任何想要的适合的方式生成用于渲染的片段。如本领域中已知的,其将接收例如待光栅化的图元,针对多组采样点位置对这些图元进行测试,并且因此生成表示图元的片段。
渲染器应该对由光栅器生成的片段进行处理以生成用于片段所表示的(覆盖的)采样点的渲染片段数据,如本领域已知的那样。这些渲染处理可以包括例如片段着色、混合、纹理映射等等。在优选实施方式中,渲染器为可编程片段着色器的形式或者包括可编程片段着色器。
如本领域中已知的,区块缓冲器将存储有问题的区块的采样值的阵列。区块缓冲器将存储采样位置的阵列的数据值,并且采样位置的各组与渲染片段数据所涉及的输出数据阵列的各像素对应并关联。
这些采样值通常并且在优选实施方式中被分组为均与有问题的区块中的各(例如,显示)像素关联的多组采样值(例如,多组2×2采样值)。采样值可以例如包括颜色值(颜色缓冲器)、深度值(深度缓冲器)等等。
区块缓冲器被构造为能够(并且可被构造为)同时存储多个渲染对象。这能够根据需要来实现。例如,区块缓冲器的尺寸可以调整为容纳多个颜色缓冲器(能够均用于存储渲染对象)。
如本领域中公知的,写入单元用于将区块缓冲器中的数据(一旦区块缓冲器中的数据完成)写入到外部(主)存储器(例如,帧缓冲器)。如本领域中公知的,这可以包括以固定或可变的方式将区块缓冲器中的采样值下采样(平均)到将写入到主存储器(例如,帧缓冲器)的最终输出(像素)值和/或其它输出(根据需要)。
对区块缓冲器中的数据进行处理的可编程处理级可以包括诸如可编程处理电路的任何适合的可编程硬件元件。该可编程处理级可以作为单独的电路元件提供给诸如片段着色器的处理管道的其它可编程级。然而,其也可以至少部分地由共享的可编程图形处理电路形成。在优选实施方式中,渲染器和可编程处理级共享可编程处理电路并且优选地包括相同的物理电路块(被不同地编程以用作片段着色器(渲染器)和可编程处理级)。
可编程处理级响应于并且在图形程序指令的控制下操作。因此,可编程处理级优选地可操作以响应于并且在图形程序指令的控制下从用于有问题的区块的所存储的输入数据只渲染对象中的至少两个(优选地全部)读取数据值,对于这些数据值执行处理操作,并且然后将输出结果写入到区块缓冲器中的另外的渲染对象或者外部存储器。
类似地,在优选实施方式中,本发明的方法包括向可编程处理级下达图形程序指令以使得可编程处理级,对于其数据存储在区块缓冲器中的多个渲染对象,对于每个渲染对象读取区块缓冲器中存储的数据,使用读取的数据执行延迟着色处理操作并且将处理操作的结果写入到区块缓冲器中或者写入到外部存储器;并且可编程处理级响应于图形程序指令,对于其数据存储在区块缓冲器中的各渲染对象,对于每个渲染对象读取区块缓冲器中存储的数据,使用读取的数据执行延迟着色处理操作,并且将处理操作的结果写入到区块缓冲器中或者写入到外部存储器。
优选地在输出值被写入到帧缓冲存储器之前,通过使用可编程图形处理级,执行一个或更多个图形处理线程来优选地实现可编程处理级的延迟着色处理操作。因此,在图形处理管道内生成并且存储在区块缓冲器内的片段数据值由可编程处理级进行进一步的处理以使用由对于区块缓冲器内的数据值进行操作的可编程处理级执行的图形处理线程提供输出结果,而没有要求写入到任何外部存储器。
因此,可编程处理级优选地包括执行各图形处理线程(在图形程序指令的控制下)的可编程图形处理电路。每个线程优选地处理区块缓冲器内的各像素(像素位置)。对于给定的区块,可以根据需要处理像素位置中的一些或全部。
从区块缓冲器读取值的可编程处理级优选地以与诸如片段着色器的处理管道的其它可编程级类似的方式操作,但是能够读取并且优选地写入到区块缓冲器(以直接的方式)。
可编程处理电路可以读取与正在处理的区块的每个渲染对象中的同一像素位置关联的采样值。这可以在例如延迟着色操作是延迟光照操作的情况下是适合的。
替选地或额外地,可编程处理级可以读取与每个渲染对象中的不同像素关联的采样值(即,高效地可以构造为能够使用针对区块缓冲器中存储的多个渲染对象的随机访问)。这在正在执行更复杂的延迟着色操作的情况下可以是适合的。
因此,在优选实施方式中,可编程处理级能够从区块缓冲器读取值,以对于存储在区块缓冲器中的数据所表示的各像素位置,对于没有与有问题的像素位置关联的一个或更多个采样位置读取区块缓冲器中存储的数据,并且使用读取的采样位置数据执行处理操作(在适合的图形程序指令的控制下)。这意味着当执行针对给定像素位置的处理操作时(当执行针对给定像素位置的线程时)的可编程处理级没有被约束为仅读取(使用)与该像素位置关联的渲染对象中的采样值,而是能够读取(和使用)与其它像素位置关联的采样值。换言之,可编程处理级以“随机访问”的方式高效地访问区块缓冲器,而不是例如仅对于当前像素的数据进行非常受限的访问。
因此,当执行图形处理线程以生成针对给定像素位置的结果时,可编程处理级优选地读取和使用至少一个存储在与不同像素(像素位置)关联的每个渲染对象中的采样值。在优选实施方式中,读取并使用来自多个不同像素(像素位置)的采样值。
可编程处理级能够对于各处理操作从各渲染对象读取单个采样值,或者能够从每个输入数据渲染对象读取多个采样值作为其处理操作的输入(这些可以都针对同一像素位置,但是优选地针对多个不同像素位置)。因此,可编程处理级能够优选地读取与一个渲染对象的多个像素关联的采样值,以及读取与多个渲染对象的像素关联的采样值。由可编程处理级执行的处理操作可以生成单个或多个输出值。
可编程处理级能够将其处理操作的结果写回到区块缓冲器和/或外部存储器。在优选实施方式中,在可编程处理级能够将其处理的结果直接写入到外部存储器的情况下,其能够使用从可编程处理级到存储器的通用加载/存储来进行。
在特别优选的实施方式中,可编程处理级将其对于区块缓冲器中的数据值的延迟着色操作的结果写入到已经分配用于接收和存储延迟着色操作的区块缓冲器中的另外的渲染对象。这另外的渲染对象然后优选地接下来写入到外部存储器,但是可以根据需要由可编程处理级读回以进行进一步的处理操作。该获得的渲染对象能够通过触发从区块缓冲器写出的固定功能来写出到外部存储器。
在结果被写回到区块缓冲器的情况下,可编程处理级能够优选地将结果写入到区块缓冲器中输出渲染对象中多于一个的采样和/或像素位置,并且优选地写入到输出渲染对象中的各和/或一个或更多个不同像素位置(在适合的图形程序指令的控制下)。因此,可编程处理级能够优选地将结果写入到渲染对象中的任何位置(并且不仅是当前位置(像素位置)或读取数据的位置(像素位置))。还可以将结果根据需要写入到区块缓冲器中多于一个的“输出”渲染对象。因此,在优选实施方式中,可编程处理级支持多个渲染对象输入和多个渲染对象输出中的至少一个,并且优选地支持这两者。
因此,可编程处理级优选地被构造为能够对于区块缓冲器中的每个像素和采样具有完全的读取访问(没有生成对于外部存储器的带宽流量)。还优选的是因此能够具有对于区块缓冲器中的像素和采样具有完全的写入访问而没有产生对于外部存储器的带宽流量。
类似地,在优选实施方式中,可编程处理级可操作以响应于图形程序指令,从有问题的区块的存储的渲染对象内的多个不同像素读取采样值作为对于其处理的输入和/或将其输出结果写入到与区块缓冲器中输出渲染对象中多个不同像素关联的采样值。
可编程处理级优选地从已经为延迟着色操作生成的多个输入数据渲染对象中的全部读取数据值作为其处理操作的输入值,但是也能够使用来自输入数据渲染对象中的一些而不是全部的输入值。
在优选实施方式中,可操作以从区块缓冲器读取值的可编程处理级被构造为还能够从外部存储器读取值(并且具有对于外部存储器的完全随机访问)。这可以例如通过向可编程处理级提供适合的程序指令来实现。
在优选实施方式中,能够防止区块缓冲器的特定区块和/或渲染对象的固定功能写出。这可以在下述情况下是有用的,例如区块和/或渲染对象中存储的数据实际不需要位于图形处理管道外部或者数据可以借助于其它方式(例如,使用外部存储器访问进行写出的可编程处理级的其它手段)来写出。能够以静态(即,预先确定禁止写出)的方式来执行区块和/或渲染对象的固定功能写出的防止,或者能够以动态的方式(在使用中)防止。类似地,区块和/或渲染对象的固定功能写出能够例如公共地在所有区块上防止,或者对于每个区块动态地进行选择。
在优选实施方式中,可编程处理级能够操作以防止区块缓冲器的特定区块和/或渲染对象的固定功能写出。这优选地响应于针对可编程处理级的特定图形程序指令。这将然后允许应用编程器例如可选地和动态地对于每个区块防止区块缓冲器的特定区块和/或渲染对象的固定功能写出。
可编程处理级的操作优选地通过对其将要执行处理操作的区块的区块列表中包括适合的命令来触发。响应于该命令,图形处理管道优选地首先等待直到进行的所有片段处理操作(片段着色器)被托付给区块缓冲器(即,直到区块的所有输入数据渲染对象的片段的渲染已经完成-这确保了区块缓冲器中的数据在开始延迟着色区块缓冲数据处理操作之前完成)。可编程处理级然后对于区块缓冲器中的渲染对象的值执行延迟着色处理操作。这优选地通过大量生成给定数目的线程并且利用输入向量将其区分(输入向量能够例如表示区块(渲染对象)的线程将要工作的区域)来进行。然后,一旦所有区块缓冲渲染对象数据处理线程已经完成,则能够正常地恢复“正常”渲染。
在优选实施方式中,编程器还能够在管道上信令可编程处理级进行的区块缓冲器中的值的处理已经完成,使得然后能够执行进一步的渲染操作。
在优选实施方式中,使用API(应用程序接口;应用能够使用该特征所通过的接口)机制来触发和控制可编程处理级的操作。例如,应用API调用和命令能够被配置为触发各自的区块缓冲数据处理操作,并且例如对于有问题的区块将适合的命令添加到区块列表。
例如,“开始区块处理”命令能够响应于涉及区块缓冲数据处理操作(并且在优选实施方式中,这是进行的操作)的特定API调用添加到影响的区块的区块(命令)列表。该API调用优选地还指定区块缓冲数据处理操作将要操作的画面的区域。
延迟着色操作能够是任何适合的想要的延迟着色操作。
包含用于延迟着色操作的数据的多个输入数据渲染对象的渲染能够根据需要触发和执行,例如并且优选地通过对于有问题的图形处理管道以正常的方式触发适合的渲染操作。如本领域中公知的,针对延迟着色操作的输入数据渲染对象可以包括颜色数据、深度数据、表面法线、其它属性等等。
用于多个渲染对象的区块可以以任何适合的想要的方式存储在区块缓冲器中。例如,可以在对于各渲染对象在旁边设置的区块缓冲器中存在固定分配。
一旦给定组的输入数据渲染对象已经存储在区块缓冲器中,可编程处理级然后使用该数据来执行延迟着色操作。该操作优选地通过在针对有问题的区块的区块列表中包括适合的命令来触发,如上所述。可编程处理级将然后从多个渲染对象中的一些或全部读取数据,对该数据进行处理并且将结果写入到区块缓冲器中的另外的渲染对象或直接写入到外部存储器。
如本领域技术人员所了解的,该处理将对于将要生成的整个渲染输出(例如,帧)的每个区块重复,直到最终的输出(例如,帧)已经完成(并且写入到外部存储器)。
在特别优选实施方式中,本发明的方法进一步包括防止(并且本发明的管道被构造为防止)区块缓冲器的初始输入数据渲染对象的写出,从而只有最终输出渲染对象在数据被从区块缓冲器写出到外部存储器时从区块缓冲器写出(即,被布置为只有最终(输出结果)渲染对象被写入到外部存储器)。这也节省了用于那些渲染对象的写入带宽以及外部存储器中那些渲染对象的存储器的内存占用。这将允许以特定的带宽高效方式执行延迟着色和光照,这是因为其能够允许整个延迟着色处理以逐个区块的方式在管道上进行并且具有零外部带宽开销。
在该情况下,如上所述,能够以静态的方式执行渲染对象的固定功能写出(即,预定禁止写出),或者能够以动态的方式(在使用中)防止。
在特别优选实施方式中,可编程处理级操作以禁止并且防止渲染对象的输入数据组到外部存储器的固定功能写出(例如,并且优选地,以上述方式)。
图形处理管道还可以包含图形处理管道可以包含的任何其它适合且想要的处理级,例如,早期深度(或早期深度和模板)测试器、后期深度(或深度和模板)测试器、混合器等等。
本发明能够用于图形处理管道可以用于生成例如用于显示的帧、渲染至纹理输出等等的所有形式的输出。
在特别优选的实施方式中,本发明的各种功能在单个图形处理平台上执行,其生成并输出例如写入到用于显示装置的帧缓冲器的渲染片段数据。
本发明能够在任何适合的系统中实施,例如,适当地配置的微处理器系统。在优选实施方式中,本发明在计算机和/或微处理器系统中。
本发明的各种功能能够以任何想要的适合的方式执行。例如,本发明的功能能够根据需要以硬件或软件来实施。因此,例如,除非另有所述,否则,本发明的各种功能元件和“装置”可以包括适合的处理器、控制器、功能单元、电路、处理逻辑、微处理器布置等等,其可操作来执行各种功能等等,例如适当的专用硬件元件和/或能够被编程来以想要的方式操作的可编程硬件元件。
这里还应注意的是,如本领域技术人员所了解的,本发明的各种功能等等可以在给定处理器上复用和/或并行地执行。同样地,各种处理级可以根据需要共享处理电路等等。
执行上述特定功能所需的任何硬件,图形处理管道能够包括图形处理管道包括的通常功能单元等等中的任意一个或更多个或全部。
本领域技术人员还将了解的是,本发明的上述方面和实施方式中的全部能够并且优选地适当地进行这里描述的优选的可选的特征中的任意一个或更多个或全部。
根据本发明的方法可以至少部分地使用软件(例如,计算机程序)来实施。因此将看到的是,当从进一步的方面看时,本发明提供了在安装在数据处理装置上时专用于执行这里描述的方法的计算机软件、包括用于在程序元素运行在数据处理装置上时执行这里描述的方法的计算机软件代码部分的计算机程序元素以及包括用于在程序运行在数据处理系统上时执行这里描述的方法的所有步骤的代码装置的计算机程序。数据处理器可以是微处理器系统、可编程FPGA(场可编程门阵列)等等。
本发明还扩展到计算机软件载体,其包括当用于操作图形处理器、渲染器或包括数据处理装置的微处理器系统时与所述数据处理装置结合地使得所述处理器、渲染器或系统执行本发明的方法的步骤的软件。这样的计算机软件载体能够是诸如ROM芯片、CD ROM、RAM、闪存或盘的物理存储介质,或者能够是诸如通过电线的电信号、例如针对卫星等等的无线电信号或光学信号。
进一步了解的是,不是本发明的方法的所有步骤都需要由计算机软件来执行,并且因此根据更广泛的方面,本发明提供了计算机软件和安装在计算机软件载体上的这样的软件,用于执行这里阐述的方法的步骤中的至少一个。
本发明可以因此适合地实施为计算机程序产品以与计算机系统一起使用。这样的实施方式可以包括固定在有形的非瞬时性的介质(例如,计算机可读介质(例如,磁盘、CD-ROM、ROM、RAM、闪存或硬盘))上的一系列计算机可读指令。还能够包括可经由调制解调器或其它接口装置经由有形介质(包括但不限于光学或模拟通信线路)或者无形地使用无线技术(包括但不限于微波、红外或其它传输技术)发送到计算机系统的一系列计算机可读指令。该一系列计算机可读指令实施这里描述的功能的全部或一部分。
本领域技术人员将了解的是,这样的计算机可读指令能够以多种编程语言来编写以与很多计算机架构或操作系统一起使用。此外,这样的指令可以使用任何存储技术(当前或将来的,包括但不限于半导体、磁性或光学)来存储,或者使用任何通信技术(当前或将来的,包括但不限于光学、红外或微波)来发送。可想到的是,这样的计算机程序产品可以作为具有随附的打印或电子文档的可移除介质(例如,拆封软件)来分发,利用计算机系统例如预先加载在系统ROM或固定盘上,或者在网络(例如,因特网或万维网)上从服务器或电子公告板分发。
附图说明
现在将参考附图借助于示例来描述本发明的多个优选实施方式,其中:
图1示意性地示出了能够以本发明的方式操作的图形处理管道;以及
图2和图3示意性地示出了图1的图形处理管道的操作的优选实施方式。
具体实施方式
在附图中,在适当的情况下,使用相同的附图标记用于相同的组件。
现在将在用于显示的计算机图形的处理的背景下描述本发明的优选实施方式。
如本领域中了解的,如上所述,当将要显示计算机图形图像时,通常首先定义为一系列图元(多边形),其图元然后被划分(光栅化)为用于图形渲染的图形片段。在正常图形渲染操作期间,渲染器将修改(例如)与每个片段关联的颜色(红色、绿色和蓝色,RGB)和透明度(阿尔法,α)数据,从而能够正确地显示片段。一旦片段被完全地经过了渲染器,则其关联数据值被存储在存储器中,以便于输出用于显示。
图1示意性地示出了可以根据本发明操作的图形处理管道1。图1中所示的图形处理管道是基于区块的渲染器并且因此如本领域中已知的,将产生渲染输出数据阵列的区块,例如,将生成的输出帧。
(如本领域中已知的,在基于区块的渲染(而不是整个渲染输出(例如,帧))中,高效地一次进行处理,如立即模式渲染中那样,渲染输出(例如,将要显示的帧)被分为多个较小的子区域(通常称为“区块”)。每个区块(子区域)被单独地(通常是一个接一个渲染),并且渲染区块(子区域)然后重组以提供完整的渲染输出(例如,用于显示的帧)。在这样的方案中,渲染输出通常被分为常规大小和形状的子区域(区块)(其通常例如为方形或矩形),但是这不重要)。
渲染输出数据阵列可以(如本领域中已知的)通常是用于显示在显示装置(例如,屏幕或打印机)上的输出真,但是也可以例如包括用于在以后的渲染处理(也已知为“渲染至纹理”输出)的中使用的中间数据。
图1示出了与本实施方式的操作相关的图形处理管道1的主要元件和管道级。如本领域技术人员所了解的是,可以存在图形处理管道的图1中未示出的其它元件。还应注意的是,图1仅是示意性的,并且例如,在实际中,所使出的功能元件和管道级可以共享硬件电路,即使在图1中示意性地示出为单独的级。还将了解的是,如图1中所示的图形处理管道的级、元件和单元等等中的每一个可以根据需要来实施,并且因此将包括适当的用于执行所需操作和功能的电路和/或处理逻辑。
图1示意性地示出了已经生成了用于光栅化处理的输入的图形图元(多边形)2之后的管道级。因此,这时,图形数据(顶点数据)进行了片段前端操作8(例如,变形和光照操作(未示出)),并且图元建立级(未示出)响应于提供给图形处理器的命令和顶点数据建立将要渲染的图元,如本领域中公知的那样。
如图1中所示,图形处理管道1的该部分包括多个级,包括光栅化级3、早期Z(深度)和模板测试级4、片段着色级6的形式的渲染器、后期Z(深度)和模板测试级7、混合级9、区块缓冲器10和下采样和写出(多采样调色)级13。
如本领域中已知的,图形处理管道1的光栅化级3操作以将构成渲染输出(例如,将要显示的图像)的图元光栅化为用于处理的各图形片段。为此,光栅化3接收用于渲染的图形图元2,将图元光栅化为采样点并且生成具有适合的位置的图形片段(表示适合的采样位置)以渲染图元。
由光栅器生成的片段然后被继续发送给管道的其余部分以进行处理。
早期Z/模板级4对其从光栅器3接收的片段执行本领域中已知的Z(深度)测试,以查看在该级是否能够丢弃任何片段。为此,其将从光栅器3发出的片段(关联的)深度值与已经渲染的片段的深度值(存储在作为区块缓冲器10的一部分的深度(Z)缓冲器中存储的深度值),以确定新的片段是否将被已经渲染的片段堵塞。这时,执行早期模板测试。
经过片段早期Z和模板测试级4的片段然后被发送给片段着色级6。片段着色级6对于经过早期Z和模板测试的片段执行适合的片段执行操作,以对片段进行处理以生成适合的渲染片段数据,如本领域中公知的。
该片段处理可以包括任何适合的想要的片段着色处理,例如,对于片段执行片段着色器程序,将纹理应用于片段,向片段应用雾化或其它操作等等以生成适合的片段数据,如本领域中所公知的。在本实施方式中,片段着色级6处于着色器管道(可编程片段着色器)的形式,但是可以根据需要除了固定功能片段着色单元之外或替代固定功能片段着色单元来使用其它方案。
然后,“后期”片段Z和模板测试级7对于共享片段执行管道深度测试的末端以确定渲染片段将在最终图像中实际看见。该深度测试使用区块缓冲器10中Z缓冲器中存储的针对片段的位置的Z缓冲器值以通过(如本领域中公知的那样)比较从片段着色级6发出的片段的(关联的)深度值与已经渲染的片段的深度值(深度缓冲器中存储的)进行比较来确定用于新片段的片段数据是否应替换已经渲染的片段的片段数据。该后期片段深度和模板测试级7还对于片段执行任何需要的“后期”阿尔法和/或模板测试。
经过后期片段测试级7的片段然后根据需要利用已经存储在混合器9中的区块缓冲器10中的片段进行任何需要的混合操作。对于片段的任何需要的其它操作(例如,递色,等等(未示出))也在该级执行。
最终,(混合后的)输出片段数据(值)被从他们能够输出到帧缓冲器用于显示的地方写入到区块缓冲器10。用于输出片段的深度值也适当地写入到区块缓冲器10内的Z缓冲器。(区块缓冲器将如本领域中公知的那样存储颜色并且存储适当的颜色等等或Z值的深度缓冲器存储分别用于缓冲表示(对于正在处理的区块的每个采样点来说是重要的)的每个采样点的深度缓冲器)。这些缓冲器如本领域中公知的那样存储表示整个渲染输出(例如将要显示的图像)的部分(区块)的片段数据的阵列,缓冲器中的各组采样值对应于整个渲染输出的各像素(例如,每个2×2组的采样值可以对应于输出像素,其中,使用4的倍数)。
在本实施方式中,区块缓冲器将其片段数据存储为32×32阵列(即,对应于将要生成的输出中(例如,将要显示的图像中)的采样位置的32×32阵列)。区块缓冲器中的每个32×32数据位置阵列能够因此对应于(并且将“自然地”支持)例如将以4倍抗锯齿(即,当每个像素取4个采样时)显示的帧的16×16像素“区块”。
区块缓冲器被设置为位于图形处理管道(芯片)上的RAM的一部分。
来自区块缓冲器10的数据被输入到下采样(多采样调色)写出单元13,并且因此输出(写回)到诸如显示装置(未示出)的帧缓冲器的外部存储器输出缓冲器。(显示装置能够包括例如包括像素的阵列的显示器(例如,计算机监视器或打印机))。
下采样和写出单元13将区块缓冲器10中存储的片段数据下采样到适合的分辨率用于输出缓冲器(装置)(即,使得生成对应于输出装置的像素的像素数据的阵列),以生成用于输出到输出缓冲器的输出值(像素)。
一旦已经处理了渲染输出的区块并且其数据输出到主存储器(例如,主存储器(未示出)中的帧缓冲器)以进行存储,然后对下一区块进行处理,以此类推,直到已经处理了足够的区块,以生成整个渲染输出(例如,将显示帧(图像))。然后对于下一渲染输出(例如,帧)重复该处理,以此类推。
用于图形处理管道1的其它布置将当然也是可能的。
上面描述了图1中所示的图形处理系统的操作的特征。现在将描述根据本发明的实施方式的图1中所示的图形处理系统的操作的进一步的特征。
如图1中所示,图形处理管道1还包括能够读取区块缓冲器10中的存储值的区块着色器14的形式的可编程处理级以对于这些值执行处理操作,并且然后将其处理操作的结果写回到区块缓冲器10或经由区块写出单元13输出到主存储器。该区块着色操作因此利用由片段着色器等等产生的存储在区块缓冲器10中作为其输入的渲染片段之而不要求那些片段值写出到外部存储器并且然后通过图形处理管道1读回以便于执行区块着色器处理操作。这允许以更少的存储器带宽和能耗执行更多种的处理操作。
本实施方式中的区块着色器级14与片段着色器6共享处理电路。因此,区块着色器14和片段着色器6由可编程硬件级形式的共享硬件来提供,该可编程硬件级能够执行一系列图形处理线程以首先生成并且然后在区块缓冲器10中存储片段数据值,并且然后执行第二系列的图形处理线程以处理区块缓冲器10内的片段数据值。
(换言之,存在可编程硬件元件(电路),其能够由适合的图形程序指令配置为执行片段着色操作(从而用作片段着色器6)或者执行区块着色操作(从而用作区块着色器14)。该可编程硬件元件支持多线程处理并且因此能够进行这些功能和其它功能)。
在本实施方式中,区块着色器14通过利用新的着色器类型的OpenGL ES着色语言GL_TILE_SHADER和新的内置变量来实施。这允许支持区块着色器级14以嵌入在现有的着色器编程模型内。该新的着色器类型没有附于程序对象,而是附于帧缓冲器对象。在本实施方式中,区块着色器14如常规的OpenGL ES着色器那样工作,但是允许针对通用存储器的读取和写入的功能、使用图像写入功能的随机写入-访问至纹理和用于针对区块缓冲器的读取和写入的功能。
区块着色器14能够读取区块缓冲器10中的区块内的任何位置作为针对任何给定的处理操作(例如,线程)的输入,并且还能够将数据写入到存储在区块缓冲器10中的区块内的任何位置。这在本实施方式中借助于下述API函数来实施:
gl_ReadTilePixelColor(int2loc,cb,ms)
gl_ReadTilePixelDepth(int2loc,ms)
gl_WriteTilePixelColor(int2loc,cb,ms,color)
gl_WriteTilePixelDepth(ing2loc,ms,color)
其中
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中。这可以根据需要来实现。例如,可以是能够容纳的足够大小的区块缓冲器(实际上在任何情况下用于多个区块的颜色缓冲器)。在该情况下,每个区块颜色缓冲器能够被指定为适合的渲染对象。
在该处理中,图形处理管道1首先被控制为对于各单独的渲染对象渲染延迟着色操作所要求的渲染几何形状(G缓冲器)。该处理可以生成例如包括然后对于将要生成的整个渲染输出(例如,帧)的各区块单独存储在区块缓冲器10中的颜色、深度、表面法线和其它属性的渲染对象。(如本领域中公知的,当执行延迟着色时,这些值然后用于进行复杂的光计算和构成以产生最终的想要的输出结果。)
一旦已经对于有问题的区块生成了这些渲染对象,则区块着色器14操作能通过将适合的调色命令包括在区块命令列表中来触发,区块着色器14被适当地控制以从区块缓冲器10中的多个渲染对象读取数据,对这些数据进行处理,并且然后将处理结果写入到区块缓冲器10中的单独的输出颜色缓冲器渲染对象。
在该操作中,区块着色器14将因此从区块缓冲器10中存储的生成的渲染对象中的一些或全部读取存储的采样值作为输入值,使用这些值进行延迟着色操作并且然后将该操作的结果存储在已经为此分配的单独的输出颜色缓冲器中。根据正在进行的延迟着色操作,对于给定像素执行延迟着色操作时的区块着色器14可以仅读取与各渲染对象中的像素关联的采样值和/或可以读取与每个渲染对象中一个或更多个其它(不同)像素关联的采样值。区块着色器14被构造为能够在适合的图形程序指令的控制下执行这些任务中的任一个。
一旦该操作已经完成,则区块着色器14优选地触发输出结果渲染对象到外部存储器的写出,但是禁止将包含G缓冲器的渲染对象写入到存储器,从而只有用于帧缓冲器的最终区块被写入到存储器。这能够使用上述适合的区块写入功能来实现。这节省了在用于延迟着色操作的第一处理中生成的多个渲染对象要求的针对外部存储器的读取和写入带宽。
处理应对于将要生成的输出的每个区块进行重复,使得能够生成最终的延迟着色输出(例如,帧)。
图2和图3示出了该处理。图2示出了该处理,并且图3示意性地示出了区块缓冲器10中的渲染对象的布置。
如图2中所示,图形处理管道(可以例如运行在主处理器上)的驱动器将接收API调用以渲染用于延迟着色操作的多个渲染对象,并且然后执行区块着色器“调色”操作以对于多个渲染对象执行延迟着色操作(步骤20)。响应于此,驱动器将生成适合的区块命令列表,包括用于渲染多个输入渲染对象的命令,之后是触发区块着色操作的“调色”命令,以及使得区块着色器执行延迟着色操作的命令(步骤21)。
这些命令列表然后被提供给图形处理管道(步骤22),其然后响应于这些命令,渲染用于整个渲染输出的每个区块的多个输入数据渲染对象(步骤23)以将多个输入数据渲染对象30逐个区块地存储在区块存储器10中。由于渲染了针对每个区块的多个渲染对象,因此,当图形处理管道看到区块“调色”命令(步骤24)时,其等待直到进行的所有渲染操作已经完成并且然后执行适合的区块着色器程序以使用存储的多个渲染对象执行延迟着色操作31(步骤25)。延迟着色操作的结果被写入到区块缓冲器10中的另外的“输出”渲染对象32(步骤26)。一旦已经处理了有问题的区块,“输出”渲染对象区块32被写出到外部存储器,同时防止写出多个输入数据值渲染对象30(步骤27)。处理然后移动到下一区块(步骤28)直到处理了用于渲染输出的所有区块(步骤29)。
从上面能够看到的是,本发明,在其优选实施方式中,至少提供了下述机制:能够在图形处理管道内对于旋绕区块数据执行延迟着色操作,从而避免了针对外部存储的数据的存储和接下来的再存储。在本发明的优选实施方式中,这至少通过提供可编程处理级来实现,该可编程处理级能够读取区块缓冲器中的数据,对该数据进行处理并且然后将数据写入到区块缓冲器或者写出到外部存储器,而不许将区块缓冲器中的数据写入到外部存储器或从外部存储器进行读取。

Claims (19)

1.一种操作基于区块的图形处理管道的方法,所述基于区块的图形处理管道包括:
多个处理级,所述多个处理级至少包括光栅器,该光栅器对输入图元进行光栅化以生成待处理的图形片段,每个图形片段具有与其关联的一个或更多个采样点;以及渲染器,所述渲染器对由所述光栅器生成的片段进行处理以生成渲染后的片段数据;
区块缓冲器,所述区块缓冲器被构造为在渲染后的片段数据被写出到外部存储器之前相对于所述图形处理管道本地地存储所述渲染后的片段数据;
写出级,所述写出级被构造为将所述区块缓冲器中存储的数据写入到外部存储器;以及
可编程处理级,所述可编程处理级能够操作以响应于一个或更多个图形程序指令读取所述区块缓冲器中存储的数据,使用所读取的数据执行处理操作,以及将所述处理操作的结果写入到所述区块缓冲器中或者写入到外部存储器;
所述方法包括:
对包含将在延迟着色操作中使用的数据的多个渲染对象进行渲染并且将所述多个渲染对象作为不同的渲染对象存储在所述区块缓冲器中;以及
使用所述可编程处理级来从所述区块缓冲器中的所存储的多个渲染对象中的两个或更多个读取数据,使用所读取的数据执行延迟着色处理操作,以及将所述处理操作的结果写入到所述区块缓冲器中的输出渲染对象或者写入到外部存储器。
2.根据权利要求1所述的方法,其中,所述可编程处理级读取用于正在处理的区块的每个渲染对象中与同一像素位置关联的采样值。
3.根据权利要求1或2所述的方法,其中,所述可编程处理级读取每个渲染对象中与不同像素位置关联的采样值。
4.根据权利要求1或2所述的方法,其中,所述可编程处理级将其对所述区块缓冲器中的数据值的延迟着色操作的结果写入到已经分配用于接收和存储所述延迟着色操作的结果的所述区块缓冲器中的另外的渲染对象。
5.根据权利要求1或2所述的方法,所述方法进一步包括防止从所述区块缓冲器的初始的输入数据渲染对象的写出。
6.根据权利要求1或2所述的方法,其中,所述可编程处理级操作以防止从所述区块缓冲器的所述渲染对象中的一个或更多个的固定功能写出。
7.根据权利要求1或2所述的方法,其中,所述可编程处理级的操作是通过将命令包括在将要对其执行所述处理操作的区块的区块列表中来触发的。
8.根据权利要求7所述的方法,其中,响应于所述命令,所述图形处理管道首先等待直到用于所述区块的输入数据渲染对象的渲染已经完成并且所述可编程处理级然后对于所述区块缓冲器中的数据值执行其处理操作。
9.根据权利要求1或2所述的方法,其中,使用API机制来触发和控制所述可编程处理级的操作。
10.一种基于区块的图形处理管道,所述基于区块的图形处理管道包括:
多个处理级,所述多个处理级至少包括光栅器,该光栅器对输入图元进行光栅化以生成待处理的图形片段,每个图形片段具有与其关联的一个或更多个采样点;以及渲染器,所述渲染器对由所述光栅器生成的片段进行处理以生成渲染后的片段数据;
区块缓冲器,所述区块缓冲器被构造为在渲染后的片段数据被写出到外部存储器之前相对于所述图形处理管道本地地存储所述渲染后的片段数据;
写出级,所述写出级被构造为将所述区块缓冲器中存储的数据写入到外部存储器;以及
可编程处理级,所述可编程处理级能够操作以在图形程序指令的控制下,从所述区块缓冲器中存储的用于延迟着色操作的一组多个渲染对象中的两个或更多个读取数据,使用所读取的数据执行延迟着色处理操作,以及将所述处理操作的结果写入到所述区块缓冲器中的输出渲染对象或者写入到外部存储器。
11.根据权利要求10所述的图形处理管道,其中,所述可编程处理级读取用于正在处理的区块的每个渲染对象中与同一像素位置关联的采样值。
12.根据权利要求10或11所述的图形处理管道,其中,所述可编程处理级读取每个渲染对象中与不同像素位置关联的采样值。
13.根据权利要求10或11所述的图形处理管道,其中,所述可编程处理级将其对所述区块缓冲器中的数据值的延迟着色操作的结果写入到已经分配用于接收和存储所述延迟着色操作的结果的所述区块缓冲器中的另外的渲染对象。
14.根据权利要求10或11所述的图形处理管道,所述图形处理管道进一步被构造为防止从所述区块缓冲器的初始的输入数据渲染对象的写出。
15.根据权利要求10或11所述的图形处理管道,其中,所述可编程处理级操作以防止从所述区块缓冲器的所述渲染对象中的一个或更多个的固定功能写出。
16.根据权利要求10或11所述的图形处理管道,其中,所述可编程处理级的操作是通过将命令包括在将要对其执行所述处理操作的区块的区块列表中来触发的。
17.根据权利要求16所述的图形处理管道,其中,响应于所述命令,所述图形处理管道首先等待直到用于所述区块的输入数据渲染对象的渲染已经完成并且所述可编程处理级然后对于所述区块缓冲器中的数据值执行其处理操作。
18.根据权利要求10或11所述的图形处理管道,其中,使用API机制来触发和控制所述可编程处理级的操作。
19.一种计算机可读存储介质,该计算机可读存储介质存储计算机软件代码,当所述计算机软件代码在一个或更多个数据处理器上执行时执行根据权利要求1至9中的任一项所述的方法。
CN201410181969.3A 2013-05-02 2014-04-30 基于区块的图形处理管道及其操作方法、存储介质 Active CN104134183B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/875,822 2013-05-02
US13/875,822 US9767595B2 (en) 2013-05-02 2013-05-02 Graphics processing systems

Publications (2)

Publication Number Publication Date
CN104134183A CN104134183A (zh) 2014-11-05
CN104134183B true CN104134183B (zh) 2019-06-04

Family

ID=50980482

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410181969.3A Active CN104134183B (zh) 2013-05-02 2014-04-30 基于区块的图形处理管道及其操作方法、存储介质

Country Status (4)

Country Link
US (1) US9767595B2 (zh)
KR (1) KR102245347B1 (zh)
CN (1) CN104134183B (zh)
GB (1) GB2516344B (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9792722B2 (en) * 2014-12-18 2017-10-17 Mediatek Inc. Depth processing method and associated graphic processing circuit
GB2534567B (en) 2015-01-27 2017-04-19 Imagination Tech Ltd Processing primitives which have unresolved fragments in a graphics processing system
KR102370617B1 (ko) * 2015-04-23 2022-03-04 삼성전자주식회사 적응적 샘플링을 수행하여 영상을 처리하는 방법 및 장치.
US10089775B2 (en) 2015-06-04 2018-10-02 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
EP3101650A1 (en) * 2015-06-04 2016-12-07 Samsung Electronics Co., Ltd. Method and apparatus for performing interleaving
US10403025B2 (en) 2015-06-04 2019-09-03 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
US9916682B2 (en) * 2015-10-28 2018-03-13 Intel Corporation Variable precision shading
GB2543866B (en) * 2016-03-07 2017-11-01 Imagination Tech Ltd Task assembly for SIMD processing
GB2553744B (en) * 2016-04-29 2018-09-05 Advanced Risc Mach Ltd Graphics processing systems
US10733695B2 (en) * 2016-09-16 2020-08-04 Intel Corporation Priming hierarchical depth logic within a graphics processor
GB2556634B (en) * 2016-11-18 2020-05-27 Advanced Risc Mach Ltd Graphics processing systems
KR102637736B1 (ko) 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
GB2564466B (en) * 2017-07-13 2020-01-08 Advanced Risc Mach Ltd Storing YUV texture data in a cache in a graphics processing system
US10074210B1 (en) * 2017-07-25 2018-09-11 Apple Inc. Punch-through techniques for graphics processing
GB2571979B8 (en) * 2018-03-15 2023-07-12 Advanced Risc Mach Ltd Graphics processing
GB2574052B (en) * 2018-05-24 2021-11-03 Advanced Risc Mach Ltd Image processing
GB2575689B (en) * 2018-07-20 2021-04-28 Advanced Risc Mach Ltd Using textures in graphics processing systems
KR102589969B1 (ko) * 2018-11-05 2023-10-16 삼성전자주식회사 지연 쉐이딩에서 보간을 수행하는 그래픽스 처리 장치, 그래픽스 처리 시스템 및 그래픽스 처리 방법
US11200636B2 (en) * 2018-11-30 2021-12-14 Mediatek Inc. Method and apparatus for generating a series of frames with aid of synthesizer to offload graphics processing unit rendering in electronic device
CN110415161B (zh) * 2019-07-19 2023-06-27 龙芯中科(合肥)技术有限公司 图形处理方法、装置、设备及存储介质
US11373268B2 (en) * 2020-09-30 2022-06-28 Qualcomm Incorporated Apparatus and method for graphics processing unit hybrid rendering
CN113205580A (zh) * 2021-05-10 2021-08-03 万翼科技有限公司 图元渲染方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7170515B1 (en) * 1997-11-25 2007-01-30 Nvidia Corporation Rendering pipeline
CN101533522A (zh) * 2008-01-31 2009-09-16 Arm挪威股份有限公司 用于处理计算机图形的方法和设备
CN101639929A (zh) * 2008-06-05 2010-02-03 Arm有限公司 图形处理系统
CN101866476A (zh) * 2009-04-17 2010-10-20 Arm有限公司 生成和解析图形处理流水线内的像素值
CN102103499A (zh) * 2009-12-17 2011-06-22 Arm有限公司 在帧缓冲器中形成开窗显示
CN102402794A (zh) * 2004-11-29 2012-04-04 Arm挪威股份有限公司 计算机图形处理

Family Cites Families (32)

* 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
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
US7154502B2 (en) 2002-03-19 2006-12-26 3D Labs, Inc. Ltd. 3D graphics with optional memory write before texturing
WO2004107736A1 (ja) 2003-05-27 2004-12-09 Nikon Corporation 画像処理装置、および画像処理プログラム
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
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
US7948500B2 (en) 2007-06-07 2011-05-24 Nvidia Corporation Extrapolation of nonresident mipmap data using resident mipmap data
US8325203B1 (en) 2007-08-15 2012-12-04 Nvidia Corporation Optimal caching for virtual coverage antialiasing
US8988443B2 (en) 2009-09-25 2015-03-24 Arm Limited Methods of and apparatus for controlling the reading of arrays of data from memory
GB0916924D0 (en) 2009-09-25 2009-11-11 Advanced Risc Mach Ltd Graphics processing systems
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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7170515B1 (en) * 1997-11-25 2007-01-30 Nvidia Corporation Rendering pipeline
CN102402794A (zh) * 2004-11-29 2012-04-04 Arm挪威股份有限公司 计算机图形处理
CN101533522A (zh) * 2008-01-31 2009-09-16 Arm挪威股份有限公司 用于处理计算机图形的方法和设备
CN101639929A (zh) * 2008-06-05 2010-02-03 Arm有限公司 图形处理系统
CN101866476A (zh) * 2009-04-17 2010-10-20 Arm有限公司 生成和解析图形处理流水线内的像素值
CN102103499A (zh) * 2009-12-17 2011-06-22 Arm有限公司 在帧缓冲器中形成开窗显示

Also Published As

Publication number Publication date
GB2516344A (en) 2015-01-21
KR102245347B1 (ko) 2021-04-29
CN104134183A (zh) 2014-11-05
US9767595B2 (en) 2017-09-19
GB201407756D0 (en) 2014-06-18
GB2516344B (en) 2016-09-14
US20140327671A1 (en) 2014-11-06
KR20140131270A (ko) 2014-11-12

Similar Documents

Publication Publication Date Title
CN104134183B (zh) 基于区块的图形处理管道及其操作方法、存储介质
CN104424621B (zh) 基于图块的图形处理流水线和操作图形处理流水线的方法
US9070200B2 (en) Graphics processing systems
KR102360519B1 (ko) 그래픽 처리
CN101604454B (zh) 图形处理系统
KR101687520B1 (ko) 그래픽 프로세싱에서의 타겟 독립적 스텐실링
KR102322433B1 (ko) 그래픽 처리 시스템
US9741089B2 (en) Graphics processing systems
GB2514465A (en) Hidden surface removal in graphics processing systems
US9607356B2 (en) Graphics processing systems
GB2580740A (en) Graphics processing systems
GB2595326A (en) Graphics Processing Systems
US10943385B2 (en) Using textures in graphics processing systems
US9916675B2 (en) Graphics processing systems
US10559055B2 (en) Graphics processing systems
US11250611B1 (en) Graphics processing
GB2603156A (en) Tile-based graphics processing systems
US20220067871A1 (en) Graphics processing

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