CN104103084A - 基于图块的图形 - Google Patents

基于图块的图形 Download PDF

Info

Publication number
CN104103084A
CN104103084A CN201410132510.4A CN201410132510A CN104103084A CN 104103084 A CN104103084 A CN 104103084A CN 201410132510 A CN201410132510 A CN 201410132510A CN 104103084 A CN104103084 A CN 104103084A
Authority
CN
China
Prior art keywords
data item
graph data
segment
parameter
buffer memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410132510.4A
Other languages
English (en)
Other versions
CN104103084B (zh
Inventor
S·J·费什维克
J·豪森
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies 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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN104103084A publication Critical patent/CN104103084A/zh
Application granted granted Critical
Publication of CN104103084B publication Critical patent/CN104103084B/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/60Memory management
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Landscapes

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

Abstract

本发明的各实施方式总体上涉及基于图块的图形。具体地,基于图块的图形系统具有被细分成待处理的多个图块的渲染空间。图形数据项(诸如参数或纹素)被提取到缓存中以用于处理图块中的一个图块。确定图形数据项的指示符,据此图形数据项的指示符指示该图形数据项与之关联的图块的数目。依据图形数据项的指示符从缓存逐出图形数据项。例如,图形数据项的指示符可以是该图形数据项与之关联的图块的数目的计数,据此具有最低计数的图形数据项从缓存被逐出。

Description

基于图块的图形
技术领域
背景技术
基于图块(tile-based)的图形系统使用基于图块的渲染来渲染2D或3D计算机图形图像。作为基于图块的渲染技术的一部分,渲染空间被细分成称为图块或块(本文称为图块)的多个区域,其各自包括多个像素。图块经常是矩形的,但它们可以是诸如三角形或六角形之类的其它形状。渲染空间可以对应于用于在屏幕上显示的图像,但其它渲染目标(诸如存储器中的纹理数据)也是可能的。图块可以是各种尺寸,例如图块可以是16×16个像素。在高屏幕分辨率图像的一个示例中,存在1280×1024个像素。因此,作为示例,高屏幕分辨率图像可以被细分成5120个图块(每个图块包括16×16个像素)。
基于图块的渲染器可以存储原始数据(或“参数”),其表示存储器块中被称为参数块的几何对象或其它几何体。每个参数块包含描述可以位于多个图块中的一个或多个图元(primitive)的参数。图元经常是多边形(通常是三角形),但可以具有其它形式(诸如点、线或补丁(patch))。参数块的参数表示图元的位置(例如形成例如屏幕空间坐标系中的图元的顶点的位置)。参数块的参数还可以指示对象或几何体的其它特征(或“属性”),诸如颜色和纹理。场景的参数块存储在存储器中的参数缓冲器中。参数被分析以确定将需要哪个参数来处理每个图块。特别是,针对每个图块,导出显示列表,其指示描述部分或全部位于图块内的图元的参数(如果有的话)。这样,图块的显示列表通过提供对存储在参数缓冲器中的相关参数数据的参考来确认处理图块所需要的每个参数。
使用其显示列表来渲染每个图块。对象被栅格化以确定哪些对象存在于图块的每个片段中。作为术语,“像素”是显示在最终图像中的个别图像点,而“片段”是被处理以便生成用于在最终图像中显示的像素的个别图像点。在图块中的对象的栅格化期间,在该图块的显示列表中指示的参数从它们各自的来自参数缓冲器的参数块被提取到被称为参数缓存(cache)的较小本地存储器(例如其是片上存储器)中。该参数缓存通常比存储所有参数块的参数所需的缓存小,需要该所有参数块的参数以便渲染场景中的所有图块。因此,当图块已经被处理并且新参数被提取到参数缓存中用于处理新图块时,存储在参数缓存中的一些参数被逐出参数缓存。
为了确定参数缓存中的哪些参数被逐出,在一些系统中使用最近最少使用(LRU)逐出策略。根据LRU逐出策略,最近最少使用的项(即参数)是第一个要从参数缓存被丢弃的。
发明内容
该“发明内容”部分被提供用于以简化形式介绍以下在“具体实施方式”部分进一步描述的各种概念。该“发明内容”部分并非旨在标识所要求保护的技术方案的关键特征或必要特征,也并非旨在被用来限制所要求保护的技术方案的范围。
基于图块的图形系统具有被细分成要被处理的多个图块的渲染空间。图形数据项(诸如参数或纹素(texel))被提取到缓存中以用于处理图块中的一个图块。确定图形数据项的指示符,据此图形数据项的指示符指示该图形数据项与之关联的图块的数目。依据图形数据项的指示符从缓存逐出图形数据项。例如,图形数据项的指示符可以是该图形数据项与之关联的图块的数目的计数,据此具有最低计数的图形数据项从缓存被逐出。
特别是,提供了一种处理基于图块的图形系统中的数据的方法,该基于图块的图形系统具有被细分成图形数据项与之关联的多个图块的渲染空间,该方法包括:从图形数据存储器提取要被用于处理图块中的一个图块的图形数据项到缓存中;以及从缓存读取图形数据项以用于处理所述图块中的所述一个图块,其中该方法还包括:确定图形数据项的指示符,其中,对于每个图形数据项,该图形数据项的指示符指示该图形数据项与之关联的图块的数目;基于所确定的指示符,确定逐出缓存中的哪些图形数据项;以及从缓存逐出所确定的图形数据项。
图形数据项可以存储在图形数据存储器中的图形数据集合中,每个图形数据集合包括一个或多个图形数据项。作为示例,如果包括特定图形数据项的图形数据集合中的图形数据项要被用于处理特定图块,则特定图形数据项可以与特定图块关联,并且对于每个图形数据项,该图形数据项的指示符可以指示图块的数目,使用包括该图形数据项的图形数据集合中的图形数据项处理该图块。作为另一示例,如果特定图形数据项要被用于处理特定图块,则特定图形数据项可以与特定图块关联,并且对于每个图形数据项,该图形数据项的指示符可以指示图块的数目,使用该图形数据项处理该图块。
该方法还可以包括确定图形数据项的边界区域,其中如果该图形数据项的边界区域与特定图块至少部分重叠,则特定图形数据项可以与特定图块关联,并且对于每个图形数据项,该图形数据项的指示符可以指示图块的数目,该图块与该图形数据项的边界区域至少部分重叠。对于每个图形数据项,该图形数据项的边界区域可以包含该图形数据项的图形数据集合中的所有图形数据项。
对于每个图形数据项,该图形数据项与之关联的图块的数目可以在确定哪些图形数据项存在于每个图块中的步骤期间被确定。此外,该方法还可以包括基于缓存中的图形数据项的指示符并且基于确定哪些图形数据项存在于每个图块中的步骤,确定图块要被处理的顺序。
图形数据项可以是定义包含在图块中的几何体的参数。例如,图形数据集合可以是参数块并且图形数据存储器可以是参数缓冲器。
图形数据项可以是包含在图块中的纹理的纹素。例如,图形数据集合可以是纹理并且图形数据存储器可以是纹理存储器。
对于每个图形数据项,指示符可以是该图形数据项与之关联的图块的数目的计数。该方法还可以包括当特定图形数据项与之关联的图块已经被处理时,使特定图形数据项的计数递减。确定逐出缓存中的哪些图形数据项的步骤可以包括确定缓存中的哪个图形数据项具有最低的计数。此外,确定逐出缓存中的哪些图形数据项的步骤可以包括确定任何图形数据项是否具有等于零的计数。此外,如果当特定图形数据项与之关联的图块已经被处理时,特定图形数据项的计数为1,则该方法可以包括使对应于特定图形数据项的缓存入口无效。计数可以被限制,以使得对于每个图形数据项,如果该图形数据项与之关联的图块的数目大于预定最大值,则计数可以被确定为等于预定最大值。可能是这样的情况,即计数仅在其小于预定最大值的情况下递减。
在示例中,对于每个图形数据项,该图形数据项的指示符指示两个条件之一,该两个条件是:(i)该图形数据项与之关联的图块的数目等于1,以及(ii)该图形数据项与之关联的图块的数目大于1。
在另一示例中,对于每个图形数据项,该图形数据项的指示符指示四个条件之一,该四个条件是:(i)该图形数据项与之关联的图块的数目等于1,(ii)该图形数据项与之关联的图块的数目等于2,(iii)该图形数据项与之关联的图块的数目等于3或4,以及(iv)该图形数据项与之关联的图块的数目大于4。
该方法还可以包括确定另外的图形数据项要被提取到缓存中,并且确定在不从缓存逐出一些图形数据项的情况下,缓存中没有足够空间来存储另外的图形数据项,其中所述确定逐出缓存中的哪些图形数据项和所述从缓存逐出所确定的图形数据项可以响应于所述确定缓存中没有足够空间来存储另外的图形数据项而执行。
如果所确定的指示符对于多个图形数据项是相同的,则确定逐出缓存中的哪些图形数据项的步骤还可以基于缓存中的图形数据项最后被使用的各自的时间。
图形数据项的指示符可以存储在缓存中,并且还可以存储在图形数据存储器中。备选地,图形数据项的指示符可以存储在图形数据存储器中,并且可以通过存储在缓存中的参考(reference)引用存储在图形数据存储器中的指示符来访问。在简单的示例中,参考可以是指向参数块的指针。缓存可以将指向参数块的指针仅存储为数据的地址(或“标签”)(或者它的小函数(trivial function))。
还提供了一种基于图块的图形系统,其具有被细分成图形数据项与之关联的多个图块的渲染空间,该基于图块的图形系统包括被如下配置的处理单元:从图形数据存储器提取要被用于处理图块中的一个图块的图形数据项到缓存中;从缓存读取图形数据项以用于处理所述图块中的所述一个图块;确定图形数据项的指示符,其中,对于每个图形数据项,该图形数据项的指示符指示该图形数据项与之关联的图块的数目;基于所确定的指示符,确定逐出缓存中的哪些图形数据项;以及从缓存逐出所确定的图形数据项。
如对于技术人员将是显而易见的,以上特征可以酌情组合,并且可以与示例的任何方面组合。
附图说明
现在将通过参考附图详细描述示例,其中:
图1示出基于图块的图形系统;
图2表示包括在基于图块的图形系统的渲染空间中的对象;
图3a示出第一参数块;
图3b示出第二参数块;
图4是处理基于图块的图形系统中的数据的方法的流程图;
图5示出参数缓存;
图6表示包括在基于图块的图形系统的渲染空间中的另一对象;以及
图7表示包括在基于图块的图形系统的渲染空间中的另外的对象。
贯穿整个附图,共同的附图标记被用来指示相似的特征。
具体实施方式
现在将仅通过示例来描述实施例。
图1是示出基于图块的图形系统100的原理图。系统100可以在设备(诸如智能电话、平板电脑、膝上型电脑、个人计算机(PC)、电视机或者任何其它合适的设备,其中图形数据要被处理)上实现。基于图块的图形系统100被配置为接收例如来自应用的数据、处理数据并且提供经处理的数据的输出。系统100包括被配置为处理数据的处理单元102。处理单元102可以以硬件或软件或其组合来实现。例如,处理单元102可以以固定功能的硬件来实现,其包括被配置为如本文所述相应地处理数据的电路。例如,处理单元102可以是图形处理单元(GPU)或者可以被实现为在可编程设备(诸如GPU或中央处理单元(CPU))上运行的计算机程序。
处理单元102包括用于处理数据的多个功能块,其中处理单元102的一些(但非所有,为清晰起见)功能块示于图1中。特别是,处理单元102包括平铺单元106、图像合成处理器(ISP)块108以及纹理和渐变(shading)处理器(TSP)块110。系统100还包括存储器112,其被布置为与处理单元102通信。存储器112包括参数缓冲器114和纹理存储器116。存储器112还将包括其它存储器块(为清晰起见,其未示于图1中)。处理单元102还包括第一参数缓存118、第二参数缓存120和纹理缓存122。
平铺单元106的输入被布置为接收图形数据。平铺单元106的输出耦合到参数缓冲器114的输入。参数缓冲器114的第一输出耦合到ISP块108的第一输入。ISP块108的输出耦合到TSP块110的第一输入。参数缓冲器114的第二输出耦合到第一参数缓存118的输入以及第二参数缓存120的输入。第一参数缓存118的输出耦合到ISP块108的第二输入。第二参数缓存120的输出耦合到TSP块110的第二输入。纹理存储器116的输出耦合到纹理缓存122的输入。纹理缓存122的输出耦合到TSP缓存110的第三输入。
在操作中,处理单元102被布置为接收例如来自应用程序的图形数据,该应用程序当前正在其上实现系统100的设备上运行。图形数据包括定义用于显示的对象的几何数据。平铺单元106包括用于实现处理单元102中的若干功能的逻辑。特别是,平铺单元106接收几何数据并且从几何数据导出多个图元。在平铺单元106接收几何数据之前,一些对于几何数据的处理可以(或者可以不)由处理单元102(在未图示在图1中的功能块中)来执行。图元表示几何对象或其它几何体。描述图元的参数存储在被称为参数块的存储器块中的参数缓冲器114中。每个参数块包含描述可能位于多个图块中的多个图元的参数。图元经常是多边形,诸如三角形,但可以具有其它形式(诸如线、点或补丁)。参数块的参数表示图元的位置(例如形成例如屏幕空间坐标系中的图元的顶点的位置)。参数块的参数还可以指示对象或几何体的其它特征,诸如颜色和纹理。
平铺单元106将渲染空间分成多个图块,每个图块包括多个片段。图块可以是矩形的(包括方形的),但它们可以是诸如三角形或六角形之类的其它形状。渲染空间可以对应于用于在屏幕上显示的图像,但其它渲染目标(诸如存储器中的纹理数据)也是可能的。
对于每个图块,平铺单元106确定每个图元是否至少部分位于该图块内。即,平铺单元106确定图元的至少一部分是否位于图块的可视区域内。这可以使用若干公知技术来完成。这样,对于每个图块,平铺单元106导出显示列表,该显示列表包括标识参数(例如图元的位置、颜色和纹理)的标识符,如果有的话,该参数描述部分或整体位于图块内的图元。即,图块的显示列表包括对包含与图块至少部分重叠的几何体的参数块的一组参考。每个参考可以与掩码关联,该掩码指示来自该参数块的参数的子集,该参数表示存在于图块中的图元。这样,图块的显示列表通过提供对存储在参数缓冲器114中的相关参数的参考来标识处理图块所需的每个参数。
从平铺单元106提供显示列表到参数缓冲器114以存储在其中。当ISP块108处理图块时,其从参数缓冲器114取回图块的显示列表并且使用显示列表确定哪些图元正与图块至少部分重叠。当ISP块108处理图块时,其可以例如实现隐藏面消除(HSR),从而在TSP块110处理图块之前确定哪些图元隐藏在每个片段位置处并且去除将不影响经渲染的图像的参数。为了实现图块的HSR,ISP块108处理图块的显示列表中指示的参数,以确定哪些图元是可见的并且哪些隐藏在图块内的每个片段位置处。为使ISP块108可以处理图块内的参数,包括在图块的显示列表中的参数从参数缓冲器114被提取到参数缓存118中。ISP块108然后从参数缓存118读取参数,以用于处理图块,例如用于实现HSR。
TSP块110处理图块以将纹理化和渐变(texturing and shading)应用到存在于图块内的对象。来自ISP块108的输出被提供到TSP块110,其指示TSP块110将需要哪些参数以便处理图块。为使TSP块110可以处理图块内的参数,来自ISP块108的输出中指示的参数从参数缓冲器114被提取到参数缓存120中。TSP块110所使用的用于处理图块的一些或所有参数可以不同于ISP块108所使用的用于处理相同图块的那些参数。例如,ISP块108所使用的参数可以与图元的位置有关,而TSP块110所使用的参数可以(附加地或备选地)与要被应用到图元的纹理和渐变数据有关。TSP块110然后从参数缓存120读取参数以用于处理图块,例如用于实现纹理化和渐变。参数可以包括要被TSP块110应用到对象的纹理(或者来自纹理的具体纹素)的指示。所指示的纹理(或纹素)从纹理存储器116被提取到纹理缓存122中,以由TSP块110用于处理图块,例如用于实现纹理化和渐变。
在从处理单元102被输出到例如显示缓冲器以显示在其上实现系统100的设备的屏幕上之前,来自TSP块110的输出可以被传递到处理单元102内另外的处理块(图1中未示出)。
在图1中所示的示例中,缓存存储器(118、120和122)是片上存储器,其小于存储在存储器112(其可以例如是系统存储器)中的对应的参数缓冲器114和纹理存储器116。在其它示例中,缓存存储器中的至少一个缓存存储器(118、120和/或122)可以不被实现为片上存储器,即,可以不被实现在与处理单元102相同的芯片上。参数缓存118和120通常小于存储被存储在参数缓冲器114中的所有参数块所需的缓存,需要该所有参数块以便渲染场景中的所有图块(尽管参数缓存118和120通常大到足以存储所有参数,需要该所有参数以便渲染图块之一,但是这可能取决于包括在图块中的对象的数量和复杂度)。类似地,纹理缓存122通常小于存储被存储在纹理存储器116中的所有纹理所需的缓存,需要该所有纹理以便渲染场景中的所有图块。为使ISP块108能够处理所有图块,随着另外的参数从参数缓冲器114被提取到参数缓存118中,参数缓存118中的至少一些参数被逐出。类似地,随着另外的参数/纹素被提取到各自的缓存中,参数缓存120中的至少一些参数以及纹理缓存122中的至少一些纹素被逐出,以使得TSP块110可以处理所有图块。
本文描述了逐出策略,其可以比上述LRU逐出策略表现得更好。逐出策略的表现可以由导致缓存命中的缓存读取请求的比例(即,缓存的命中率)来指示。以下参考参数缓存118中的参数详细描述逐出策略,但是相同的原理可以被应用到参数缓存120中的参数以及纹理缓存122中的纹素。此外,本文所述的逐出策略的相同原理可以被应用到存储在缓存中以用于处理图块的任何合适的图形数据项。
图2是包括20个图块(以5×4阵列布置)的基于图块的图形系统的渲染空间202的简化表示。在渲染空间202内示出了两个对象204和206。两个对象中的第一对象包括被标记为2041、2042、2043和2044的四个图元。能够看出,第一对象与渲染空间202的图块中的六个图块重叠。这六个图块处于渲染空间202的5×4阵列的中部,并且在图2中被表示为图块A至F。在没有明确表述的情况下,本文所使用的术语“重叠”要被理解为意思是“至少部分重叠”。从图2可以理解到,图元2041与三个图块(图块A、D和E)重叠,图元2042与四个图块(图块A、B、D和E)重叠,图元2043与两个图块(图块B和E)重叠,并且图元2044与四个图块(图块B、C、E和F)重叠。两个对象中的第二对象包括被标记为2061和2062的两个图元。能够看出,第二对象仅与渲染空间202的图块中的一个图块重叠。特别是,从图2可以理解到,图元2061和2062两者仅与一个图块(该图块是图块A)重叠。场景中通常将存在其它对象,可能包括比图2中所示的对象多的图元,但是为清晰起见,这些在图2中未示出。
如上所述,每个对象存储在参数缓冲器114中的一个或多个参数块中。每个参数块包括描述至少一个对象的图元的参数。图3a是第一参数块(“参数块1”)的简化图,其包括描述第一对象204的图元的参数。特别是,在图3a所示的示例中,参数块1存储:描述图元2041的参数PB11;描述图元2042的参数PB12;描述图元2043的参数PB13;以及描述图元2044的参数PB14
类似地,图3b是第二参数块(“参数块2”)的简化图,其包括描述第二对象206的图元的参数。特别是,在图3b所示的示例中,参数块2存储:描述图元2061的参数PB21;以及描述图元2062的参数PB22
存储在参数缓冲器114中的参数的精确形式可以不同并且可以比图3a和图3b所示的形式更复杂。例如,参数块可以存储对象内不同顶点的顶点数据,据此图元的参数包括一组顶点(例如形成三角形的三个顶点)的数据,从而描述图元的位置。在那样的情况下,图元的参数实际上是一组参数,其可以包括与一组顶点有关的数据。参数块还可以将除图元的位置数据之外的数据(例如颜色或纹理数据)存储为与位置数据分开的数据项,以使得图元的参数可以包括与图元的其它数据组合的位置数据的集合。因此,应当意识到,在图3a和图3b示出与图元有关的参数(例如PB11)的情况下,参数实际上可以包括来自参数块的多个数据项,其可以被组合以描述图元。此外,如图3a和图3b所示,每个参数块包括杂项数据字段,杂项数据字段包括与该参数块有关的数据。杂项数据字段中的数据可以包括用于指示参数块中的数据应当如何解读的状态数据。
图4示出了处理基于图块的图形系统中的数据的方法的流程图,实现了用于从参数缓存118逐出参数的新逐出策略。
在步骤S402,对于每个参数块,确定与参数块的至少一个参数重叠的图块的数目的计数。因此,这些计数提供参数块的参数与之关联的图块的数目的指示。换言之,参数块的计数指示将使用来自参数块的至少一个参数处理多少图块。例如,参数块1的计数将是6,因为如图2所示,6个图块(图块A至F)与由参数块1的参数描述的至少一个图元(即,图元2041、2042、2043和2044)重叠。类似地,参数块2的计数将是1,因为如图2所示,仅1个图块(图块A)与由参数块2的参数描述的至少一个图元(即,图元2061和2062)重叠。
在一个示例中,正是平铺单元106在步骤S402中确定参数块的计数。这可以作为平铺过程的一部分来执行,其中针对图块导出显示列表。图块的显示列表指示要被用来处理图块的参数。备选地,在步骤S402,对于每个参数块,图块的显示列表中的信息可以被用来确定与至少一个图元重叠的图块的数目的计数,该至少一个图元由参数块的参数来描述。对于每个参数块,在步骤S402中确定的计数存储在参数缓冲器110中的该参数块的杂项数据字段中。如何可以从平铺过程确定计数的两个示例是:(i)每次在该图块中发现参数块中的任何图元时设置对应于每个图块位置的标志,并且然后在平铺过程结束时对标志的数目求和;或者(ii)每当参考参数块时,解析每个图块的显示列表并且使参数块计数器递增。
在步骤S404,ISP块108从参数缓冲器114提取参数到参数缓存118中,如上所述。被提取到参数缓存118中的参数是在当前图块的显示列表中被指示为被需要以处理ISP块108正在处理的当前图块。如上所述,显示列表提供对参数缓冲器114中的参数块的参考,具有用于指示来自参数块的所需参数的子集的掩码。
例如,图5示出了被ISP块108提取到参数缓存118中以便处理图2中所示的图块A的参数。图块A与图元2041和2042重叠,图元2041和2042被存储在参数缓冲器114中的参数块1的参数PB11和PB12所描述。图块A还与图元2061和2062重叠,图元2061和2062被存储在参数缓冲器114中的参数块2的参数PB21和PB22所描述。因此,为了ISP块108处理图块A,在步骤S404,这四个参数(PB11、PB12、PB21和PB22)从参数缓冲器114被提取到参数缓存118中。参数缓存118可以包括除图5中所示的那些参数的其它参数。例如,参数缓存118可以包括先前已经被ISP块108提取用于处理先前的图块的参数。
当参数被提取到参数缓存118中时,参数的参数块的计数的指示也存储在参数缓存118中。这示于图5中,据此存储参数缓存118中的参数的计数。如上所述,来自参数块1的参数PB11和PB12的计数是6,并且来自参数块2的参数PB21和PB22的计数是1。
在步骤S406中,ISP块108从参数缓存118读取在图块A的显示列表中被指示的参数。
在步骤S408中,ISP块108使用在图块A的显示列表中被指示的参数处理图块A。因此,在图2中所示的示例中,参数PB11、PB12、PB21和PB22将被ISP块108用来处理图块A。如上所述,ISP块108可以通过确定哪些图元在每个片段位置处是可见的并且然后从图像去除将不影响经渲染的图像的参数来实现隐藏面消除(HSR)。由ISP块108处理的图块被输出,以例如由TSP块110在处理单元102中进一步处理。来自相同渲染空间的不同图块可以在处理单元102中的不同处理块(例如ISP块108和TSP块110)中并行地(即同时地)进行处理。
当ISP块108已经处理完图块A时,然后在步骤S410,具有描述与图块A重叠的图元的至少一个参数的参数块的计数可以递减。因此,一旦ISP块108已经处理完图块A,则参数块1的计数(存储在参数块1的杂项数据字段中)从6递减到5,并且参数块2的计数(存储在参数块2的杂项数据字段中)从1递减到0。此外,参数缓存118中、包括在其计数递减的参数块中的任何参数的计数也递减。因此,当ISP块108已经处理完图块A时,存储在参数缓存118中、来自参数块1和2的参数的计数将递减,以使得参数缓存118中的参数PB11和PB12的计数将从6递减到5,并且参数缓存118中的参数PB21和PB22的计数将从1递减到0。
因此,参数块的参数的计数指示图块的数目,该图块仍要被处理,其与参数块的至少一个参数重叠。
在步骤S412中,确定(例如通过ISP块108)是否存在要ISP块108处理的另一图块。如果不存在要ISP块108处理的另一图块,则ISP块108已经完成对渲染空间中的图块的处理,如图4中的附图标记S414所指出的。在该情况下,图块的处理将在处理单元102中的后续处理块(例如TSP块110)中继续。
然而,如果ISP块108确实有另一图块要处理,则该方法从步骤S412传递到步骤S416。例如,当ISP块108已经处理完图块A时,然后可以确定图块B要被处理。ISP块108需要读取一些参数以便处理下一个图块(例如图块B)。ISP块108将试图从参数缓存118读取参数。在步骤S416,确定(例如通过参数缓存118的控制逻辑)参数缓存118是否具有供ISP块108处理下一个图块所需的参数。即,确定是否需要将任何另外的参数提取到参数缓存118中供ISP块108处理下一个图块。
如果在步骤S416中确定参数缓存118具有处理下一个图块所需的所有参数(即不需要从参数缓冲器114提取另外的参数到参数缓存118中),则该方法从步骤S416传回到步骤S406,其中ISP块108从参数缓存118读取适当参数,并且在步骤S408以与有关图块A的上述方式类似的方式处理下一个图块。
然而,如果确定参数缓存118中需要另外的参数以便ISP块108处理下一个图块(例如图块B),则该方法从步骤S416传递到步骤S418。在要由ISP块108处理的下一个图块是图块B的示例中,则如可以从图2领会到的,ISP块108将需要使用参数PB12、PB13和PB14来处理图块。参数PB12由于处理图块A而已经处于参数缓存118中,但是参数PB13和PB14是不在参数缓存118中并且将需要从参数缓冲器114提取的另外的参数。在步骤S418,确定(例如通过参数缓存118的控制逻辑)参数缓存118中是否有足够的空间来存储另外的参数。如果确定参数缓存118中有足够的空间来存储另外的参数,则该方法传回到步骤S404,并且另外的参数从参数缓冲器114被提取到参数缓存118中。另外的参数然后在步骤S406中被ISP块108从参数缓存118读取,并且下一个图块(例如图块B)在步骤S408中以与有关图块A的上述方式类似的方式被处理。
然而,如果在步骤S418中确定参数缓存118中没有足够的空间来存储另外的参数(例如用于处理图块B的参数PB13和PB14),则当另外的参数被提取到参数缓存118中时,存在于参数缓存118中的一个或多个参数将需要从参数缓存118逐出。在这种情况下,该方法传递到步骤S420,其中确定(例如通过参数缓存118的控制逻辑)哪个参数应该被逐出参数缓存118。关于哪个参数要从参数缓存118逐出的决定是基于参数缓存118中的参数的计数。例如,可以确定参数缓存118中具有最低计数的参数要从参数缓存118逐出。
如上所述,参数块的参数的计数指示与至少一个图元重叠的图块的数目,该至少一个图元被参数块的参数所描述。此外,由于计数随着图块被处理而递减,参数块的参数的计数指示图块的数目,该图块仍要被处理,其与被参数块的参数所描述的至少一个图元重叠。因此,参数缓存118中的参数的计数提供该参数用于被处理的下一个图块的可能性的指示。因此,逐出具有最低计数的参数是一种有用的逐出策略,因为在参数缓存118中更可能用于处理下一个图块的参数(即具有较高计数的参数)之前逐出在参数缓存118中不太可能用于处理下一个图块的参数(即具有较低计数的参数)。
在步骤S422中,在步骤S420中被确定适于逐出参数缓存118的参数(例如参数缓存118中具有最低计数的那些参数)被逐出参数缓存118。该方法然后传回到步骤S404,并且另外的参数从参数缓冲器114被提取到参数缓存118中。步骤S420中的逐出可以通过提取新参数以取代被逐出的参数来执行。备选地,在提取新参数以取代被逐出的参数的步骤之前,可以执行主动逐出步骤,据此逐出参数(例如通过针对参数缓存118中的相关缓存行(cache line)将标志设为“无效”)。在步骤S406,另外的参数然后由ISP块108从参数缓存118读取,并且在步骤S408,下一个图块(例如图块B)以与有关图块A的上述方式类似的方式被处理。
在图2和图5所示的示例中,当图块A已经被处理时,参数PB11、PB12、PB21和PB22处于参数缓存118中。PB21和PB22的计数低于PB11和PB12的计数,因此参数PB21和PB22被逐出参数缓存118。这为另外的参数在参数缓存118中腾出空间。如果图块B是要被处理的下一个图块,则参数PB13和PB14从参数缓冲器114被提取到参数缓存118中,以使得参数缓存118将包括来自参数块1的四个参数PB11、PB12、PB13和PB14。从图2可以看出,ISP块108需要参数PB12、PB13和PB14来处理图块B。将参数PB21和PB22从参数缓存118逐出是好的决定,因为不需要那些参数来处理图块B。不将参数PB12从参数缓存118逐出也是好的决定,因为需要该参数来处理图块B。
如本文所述基于参数的计数的逐出策略可以比图2和图5所示示例中的LRU逐出策略表现得更好。如果参数被ISP块108用于以它们在参数缓存118中、在图5中示出的顺序处理图块A,则使用LRU逐出策略可以导致参数PB11和PB12在图块A已经被处理时被逐出参数缓存118,而参数PB21和PB22在那时可以未被逐出缓存118。可以从图2领会到,将不再需要参数PB21和PB22(描述图元2061和2062)来处理除图块A外的任何图块,并且因此将这些参数保留在参数缓存118中不是有用的。相反,参数PB11、PB12、PB13和PB14(描述图元2041、2042、2043和2044)将再次被需要以处理其它图块,并且因此将这些参数保留在参数缓存118中可能是有用的。本文描述的逐出策略基于图块覆盖范围对来自参数缓存118的参数的逐出进行加权。如以上给出的示例中可以看到的,这些逐出策略可以导致相比于LRU逐出策略更高的缓存命中率。这意味着需要对于存储器112中的参数缓冲器114的较少调用来提取参数到参数缓存118中。相比于由处理单元102执行的其它过程,访问存储器112可能是缓慢的过程,因此,减少存储器访问的数量允许处理单元102的更快处理。
以上给出的参数块2的示例是本文所述的逐出策略表现得比LRU逐出策略好的好示例。参数块2的每个成员图元完全位于一个图块(图块A)内。一旦该图块已经被处理,就没有理由将参数块2的参数PB21和PB22保留在参数缓存118中。然而在LRU策略下,参数块2的参数通常将长时间驻留在参数缓存118中,降低了参数缓存118的效率。随着场景复杂度增加,几何体变得更小并且其中参数块的每个成员图元完全位于一个图块内的情况变得越来越常见。
本文所述的逐出策略考虑参数块与多少图块重叠。来自包含仅与一个或少数图块重叠的图元的参数块的参数比来自包含与许多图块重叠的图元的参数块的参数更不太可能被再次需要以处理另一图块。该实现导致基于图块覆盖范围对来自参数缓存118的参数块的参数的逐出进行加权的逐出策略。
如上所述,对于图块的数目的每个参数块保持计数,该图块与该参数块中的图元重叠。当需要逐出参数缓存时,来自参数块、具有最低计数器的参数被选择用于逐出。如果多个参数存在于参数缓存118中并且具有相同的计数值,则常规的逐出策略(诸如LRU)可以用来确定那些参数中的哪些参数要被逐出。由于输入数据的局域性,在一个图块中发现的参数(例如定义对象)很可能在相邻图块中被再次使用,以使得当图块被以顺序次序处理时,在具有相同计数值的多个参数存在于参数缓存118中的情况下,LRU逐出策略是用于确定哪些参数要逐出参数缓存的好的默认选择。
在上述示例中,如果参数块内的任何参数用来处理图块,则对于该参数块的参数使计数递减。因此,参数缓存118中的参数的计数可以到零,其指示那些参数将不再用于处理渲染空间202中的另外的图块。正因如此,参数缓存118中将不需要那些参数。因此,如果参数缓存118中的参数的计数到零,则该参数可以被逐出参数缓存118。逐出具有零计数值的参数有助于使参数缓存的使用最大化,从而减少所需的对存储器112的调用的数目。
如上所述,与参数块中的图元重叠的图块的数目可以以本领域技术人员所熟知的若干方式来确定。例如,在由平铺单元106进行的图元的平铺期间,重叠图块的列表可以存储在参数块中。
在另一示例中,如图6所图示的,传统包围盒(conservativebounding box)606可以构建在参数块的渲染空间602中。在图6所示的简单示例中,三个图元的参数6041、6042和6043包括在参数块中,并且包围盒606是图块(在图6中标记为G至P)的最小矩形阵列,其包括与参数块的图元中的至少一个图元重叠的所有图块。如图6所图示的,图元6041与图块L和M重叠;图元6042与图块M重叠;以及图元6043与图块I、J、K、M、N和O重叠。包括在包围盒606中的图块的数目可以用作参数块的参数的计数。可以容易地看出,图6中所示的图元中没有图元重叠图块G、H或P,但是该图块G、H和P包括在包围盒606中。因此,如果包围盒方法用于确定图6中所示的参数块中的参数的计数,则计数将被确定为10,即使实际上图块中的仅7个图块(图块I、J、K、L、M、N和O)与参数块的图元中的至少一个图元重叠。参数块的参数的计数因此不必严格等于图块的数目,该图块与被参数块的参数所描述的至少一个图元重叠。
在本文所给出的示例中,使用矩形包围盒,其实现简单并且与矩形图块很好匹配。然而,矩形包围盒仅是可以被使用的包围区域的一个示例。可以使用其它包围区域。例如,诸如球形包围盒和多项式之类的较紧边界可以以如本文所述用于矩形包围盒的方式类似的方式使用。还存在用于优化矩形包围盒的方法。在图6的示例中,这样的方法可以排除未重叠的图块G、H和P,来产生与参数块的图元重叠的七个图块的最小集合以用作边界区域。
一般而言,参数的计数可以被认为是与参数关联的图块的数目的指示符。可以使用任何合适的指示符。计数被用作要被用来确定哪些参数要被逐出参数缓存118的加权。正因如此,计数不需要在指定与参数关联的图块的数目中完全正确,只要其给出与参数关联的图块的数目的近似指示。这样,计数允许将与第一参数关联的图块的数目同与第二参数关联的图块的数目比较(近似地,即使不是精确地),以确定关联的哪个参数是较少的图块,并且因此是用于逐出参数缓存118的合适候选。如果包括特定参数的参数块中的参数要被用来处理特定图块(即,参数块的图元之一与特定图块重叠),则特定参数可以认为与特定图块关联。当使用包围盒方法时,如果包括特定参数的包围盒与特定图块重叠,则特定参数可以被认为与特定图块关联。
在上述示例中,每个参数块具有其自己的计数。然而,在其它示例中,计数的粒度可以不同。例如,每个参数可以具有其自己的计数,其可以不同于相同参数块的其它参数的计数,并且其指示与该参数关联的图块的数目,例如要使用参数被处理的图块的数目。确定与参数关联的图块的数目可以包括使用在平铺场景中的图元期间由平铺单元106生成的显示列表。备选地,每个参数可以具有其自己的传统包围盒,该传统包围盒被用来确定与该参数关联的图块的数目。作为另一示例,可以被加载到参数缓存118的缓存行中的每个数据块(例如包括多个参数)可以具有其自己的计数,该计数指示要使用数据块中的至少一个参数来处理的图块的数目。在所有这些示例中,无论计数的粒度,针对每个参数确定计数。例如,当计数处于参数块的粒度时,确定参数块的计数的步骤将确定该参数块的每个参数的计数,即,参数块中的每个参数具有与已经针对参数块确定的计数相等的计数。
当图块被处理并且计数递减时,应该是如下的情况:与被处理的图块关联的每个参数的计数递减。关于哪些参数出于递减计数的目的与被处理的图块关联的确定应当匹配关于当确定计数时与参数关联的图块的数目的确定。例如,如果包围盒方法被用来确定计数(例如,以使得图6中所示的所有参数被确定与所有十个图块G至P关联,从而将参数的计数设为10),则当处理包围盒中的任何图块时,包围盒内的参数的计数应该递减。即使对于处理包围盒中不与参数块中的任何图元重叠的图块(例如对于处理图块G、H和P),这也是真的。
在以上给出的示例中,参数的计数随着与参数关联的图块被处理而递减。然而,在其它示例中,计数并不递减,即从参考图4描述的示例中的方法省去步骤S410。在计数不递减的示例中,参数块的参数的计数指示渲染空间202中与参数块的至少一个参数重叠的图块的数目,无论图块是否已经被处理。诸如此的逐出策略(其中计数不递减)可能仍然比LRU逐出策略表现得更好(在缓存命中率方面),尽管其可能表现得不如本文所述的确实实现递减计数器的逐出策略一样好(在缓存命中率方面)。然而,包括需要实现递减计数器的处理的成本在一些场景中可能超过了通过递减计数器获得的好处,以使得在一些场景中,实现不递减计数器的逐出策略可能是有益的。
在以上示例中,未描述存在计数值的上限。然而,在实际的系统中,很可能所分配的用于计数的比特数是有限的。例如,可以使用N比特来表示每个计数,计数的可能值(表示为C)是在0≤C≤2N-1的范围内的整数。因此,存在计数可以取的预定最大值Cmax,其由2N-1给出。例如,三比特可以被用来表示每个计数,以使得Cmax的值为7。因此,在该示例中,计数值C可以在0≤C≤7的范围中。限制用于表示每个计数的比特数是有用的,以使得限制了用于存储计数的存储器的数量。这当计数存储在两个地方(例如在参数缓冲器114中的参数块中的杂项域中以及在如图5所示的参数缓存118中)时尤其是真的。参数缓存118的存储器需求大,所以限制被用于计数的比特数可能是有用的,因为计数存储在参数缓存118中。
当与参数关联的图块的数目被确定时,如上所述,如果与参数关联的图块的数目大于预定最大值(Cmax),则计数值被设为等于预定最大值(Cmax)。换言之,如果参数的计数值被设在Cmax,则这表明与该参数关联的图块的数目大于或等于Cmax。当存在对于计数值的限制时,则对于所有小于最大值的计数值(即,对于C<Cmax),则随着图块被处理,计数值可以以如上所述相同的方式递减。然而,当计数值被设为最大值(即,对于C=Cmax)时,则随着图块被处理,计数值不递减。换言之,计数值仅在计数小于预定最大值(Cmax)的情况下递减。这是因为参数的Cmax的计数值并非唯一地指示与该参数关联的图块的数目。Cmax的计数值表明与该参数关联的图块的数目大于或等于Cmax。因此,当计数值被设为Cmax时,递减计数值可能不是有用的。
然而,在一些示例中,Cmax的计数值可以递减。通过减少具有Cmax的计数值的参数在ISP块108需要它们用于处理图块之后留在参数缓存118中的可能性,这可能是有益的。在一些示例中,其中参数的计数值存储在参数缓存118中和参数缓冲器114中,如在上述示例中,参数缓存118中的参数的Cmax的计数值可以递减,但是参数缓冲器114中的(例如参数块的)参数的Cmax的对应计数值不可以递减。这样,随着计数值递减,参数可以被逐出参数缓存118,但是如果参数随后被重新装载到参数缓存118中,则其将被重新装载,具有Cmax的计数值。在一些其它示例中,基于诸如参数缓存118的占用或者参数缓存118中具有Cmax的计数值的其它参数的数目之类的条件,可以做出关于是否递减具有Cmax的计数值的参数的计数值的判定。
以上描述了计数值(表示为C)是在0≤C≤2N-1的范围内的整数。然而,计数值可以反而处于1≤C≤2N的范围内,从而允许表示额外的计数值,其代价是不能表示0的计数值。然而,能够表示0的计数值可能并非必要。例如,没有将1的计数值递减到0的计数值,计数值可以保持在1,并且对应于该参数的缓存入口可以被无效。缓存入口可以通过在参数缓存118中设置标志以指示参数无效而被无效。备选地,缓存入口可以通过将标签或地址设为预定义值(例如所有比特设为0或者所有比特设为1)而被无效。使缓存中的缓存入口无效以指示缓存中的数据是公知的,当新数据被提取到缓存中时,该缓存可以被重写。因此,不需要0的计数值,并且可以表示的最大计数值(Cmax可以在不增加用来表示计数值的比特数的情况下增加1。注意到,“无效”状态(例如,使用“无效标志”或者通过将标签或地址设为预定义值(例如所有比特设为0或者所有比特设为1)来指示)在大多数缓存中被实现,以指示缓存的行是否为空或者它们是否保持有真实数据。因此,如上所述,使缓存入口无效(例如通过设置无效标志,或者通过将标签或地址设为预定义值)以扩展可以表示的计数值的范围的过程,可以不涉及使用已经不被缓存使用的任何额外比特。这是因为缓存可能已经实现了用于使缓存入口无效的方法(例如使用“无效标志”或者将标签或地址设为预定义值(例如所有比特设为0或者所有比特设为1))。
在一个示例使用案例中,仅使用1比特来表示每个计数。关于以上给出的示例,这可以被认为是将N设为1,以使得1≤C≤Cmax,其中Cmax等于2。该示例中的计数因此是1比特标志,其可以取第一值或第二值。参数的计数值因此可以用来指示两个条件之一。如果参数的计数具有第一值(本文表示为C1),则这表明该参数与之关联的图块的数目等于1。如果计数具有第二值(本文表示为C>1),则这表明该参数与之关联的图块的数目大于1。
该使用案例具有一些特别的益处。因为仅1比特用于计数值,所以存储计数并且在处理单元102和系统存储器112之间传输计数所需的数据与多于1个比特用于计数值的示例相比是小的。此外,已经观察到,参数块可以具有仅与一个图块关联的参数。此外,随着场景复杂度增加,几何体变得较小,并且一件几何体(例如对象)的参数块具有仅与一个图块关联的参数变得更加可能。
在仅1比特用于计数的示例中,计数值不随图块被处理而递减。相反,逐出策略向下压缩到确定参数缓存中哪些参数具有具有第一值C1的计数,该第一值指示参数仅存在于一个图块中,据此这些参数是用于逐出参数缓存118的好的候选。具有具有值C>1的计数的参数不是用于逐出参数缓存118的好的候选并且被加权,以相对于具有C1的计数的参数被逐出参数缓存118的可能性,减小逐出参数缓存118的可能性。如上所述,如果我们需要区别参数以确定当参数的计数具有相同值时从缓存逐出哪个参数,则可以使用诸如LRU逐出策略之类的另一逐出策略。应当认识到,参数缓存118中已经被用来处理图块并且具有C1的计数值(指示参数仅与一个图块关联)的任何参数将不再用来处理另一图块,并且因此可以被逐出参数缓存118。
在另一示例使用案例中,使用2比特来表示每个计数。该示例中的计数因此是2比特标志,其可以取四种可能值之一。参数的计数值因此可以用来指示四个条件之一。如果参数的计数具有第一值(本文表示为C1),则这表明该参数与之关联的图块的数目等于1。如果计数具有第二值(本文表示为C2),则这表明该参数与之关联的图块的数目等于2。如果计数具有第三值(本文表示为C34),则这表明该参数与之关联的图块的数目等于3或4。如果计数具有第四值(本文表示为C>4),则这表明该参数与之关联的图块的数目大于4。
该使用案例是有用的,因为虽然小对象可以包含适合在单个图块内的图元,但是那些对象通常通过图块边界相交。通过单个图块边缘相交的小对象的通常情况将导致仅位于两个图块中的参数块。类似地,对象可以通过水平图块边缘和垂直图块边缘两者相交,导致位于3或4个图块中的参数块。因此,对于与对象有关的参数块,具有与1个、2个、3个或4个图块关联的参数并非是不同寻常的,并且当确定哪些参数要逐出参数缓存118以及从具有与多于四个图块关联的参数的参数块区分这些情况时,能够区分这些情形可能是有用的。图7示出渲染空间702的四个图块(表示为Q、R、S和T)。三个对象(表示为704、706和708)示于渲染空间702中。可以看出,对象704仅与图块之一(图块Q)重叠;对象706与图块之二(图块R和T)重叠;以及对象708与所有四个图块(图块Q、R、S和T)重叠。对象的重叠图块的数目的差异是由于对象对渲染空间702的平铺的对齐的差异造成的。根据正在被描述的示例使用案例,参数块中用于对象704的参数将具有值为C1的计数,因为对象704仅与一个图块重叠;参数块中用于对象706的参数将具有值为C2的计数,因为对象706与两个图块重叠;以及参数块中用于对象708的参数将具有值为C34的计数,因为对象708与四个图块重叠。参数块中用于覆盖多于四个图块的对象的参数被给予C>4的计数值。
参数基于它们的计数值被逐出参数缓存118。特别是,具有C1的计数值的参数将优先地在具有C2的计数值的参数(其自己将优先地在具有C34的计数值的参数(其自己将优先地在具有C>4的计数值的参数之前被逐出参数缓存118)之前被逐出参数缓存118)之前被逐出参数缓存118。能够认识到,当图块Q已经被处理时,不需要与对象704有关的参数以处理任何其它图块,并且由于那些参数的计数值为C1,所以那些参数将在与对象708有关的参数(其具有C34的计数值并且需要其以处理图7中所示的其它图块(图块R、S和T))之前被逐出参数缓存118。
使用2比特用于计数值是特别有用的,因为它区分四种常见场景,并且因此将在缓存命中率方面相比于LRU逐出策略提供显著的提高。此外,这当仅需要每个计数值的数据的2比特时被实现。这在存储计数值并且在存储器112上的参数缓冲器114与处理单元102上的参数缓存118之间传输计数值方面是有利的。
当2比特被用于计数时,C1、C34和C>4的计数值可以不随图块被处理而递减。C1的计数值不具有用于被递减到的更低值。C34和C 4的计数值不唯一地定义与参数关联的图块的数目,并且正因如此不随图块被处理而递减。然而C2的计数值确实指示参数与两个图块关联并且C2的计数值可以递减到计数值C1。因此,参数的具有C2的计数的计数值可以或者不可以当与该参数关联的图块被处理时被递减为C1的计数。在其它示例中,C>4的计数值可以被递减到C34的计数值。此外,C34的计数值可以被递减到C2的计数值。如上所述,与Cmax的计数值的递减相关,计数值C34和C>4可以在参数缓存118中被递减,而在参数缓冲器114中不被递减。此外,没有使C1的计数值递减,当与具有C1的计数值的参数关联的图块被处理时,参数的计数值可以保持为C1,但是缓存无效标志可以针对参数设置,以指示当另外的参数被提取到参数缓存118中时,可以在参数缓存118中重写(即逐出)该参数。
在上述示例中,计数存储在参数缓存118中和参数缓冲器114中。然而,在其它示例中,计数可以仅存储在参数缓冲器114中,并且对于参数缓存118中的每个参数,存在存储在参数缓存118中的用于参考来自参数缓冲器114的参数的计数的参考。在该情况下,当确定哪个参数要逐出参数缓存118时,通过参考存储在参数缓冲器114中的计数,参数缓存118中的参数的参考被用来确定参数缓存118中的参数的计数,并且然后计数被用来确定逐出哪个参数(例如具有最低计数值的参数)。该示例可以节省参数缓存118中的一些存储器空间,因为计数值不需要存储在参数缓存118中。参考存储在参数缓存118中,其可以使用比在参数缓存118中存储计数本身更少的存储器的比特。这可能是有用的,因为参数缓存118中的存储器空间是有限的。然而,延迟可以被增加到图块的处理,以允许从参数缓冲器114取回用于计数的时间,以便确定哪个参数被逐出参数缓存118。
以上描述的示例涉及从参数缓存118逐出参数。逐出策略的相同原理可以被应用到处理单元102中的其它缓存。即,对于任何图形数据项,其用来处理图块并且从存储器112中的图形数据存储器被提取到处理单元102上的缓存中,可以确定用于图形数据项的指示符,以使得对于每个图形数据项,用于该图形数据项的指示符指示该图形数据项与之关联的图块的数目。指示符然后可以用来确定哪个图形数据项从缓存逐出,以使得逐出策略基于图形数据项的图块覆盖范围。图形数据项例如可以是参数或纹素,其可以存储在诸如存储器112中的参数块或纹理之类的图形数据集合中。
例如,TSP块110所使用的参数缓存120可以使用对应于上述关于ISP块108所使用的参数缓存118的逐出策略的逐出策略。即,每个参数可以被提取到具有关联计数的参数缓存120中。参数缓存118中使用的计数与参数缓存120中使用的计数分开。如上所述,ISP块108所使用(并且存储在参数缓存118中)的计数根据平铺单元106执行的平铺来确定。那些相同的计数值可以被TSP块110使用(并且存储在参数缓存120中),或者不同的计数可以被TSP块110使用(并且存储在参数缓存120中),其可以例如基于ISP块108所执行的隐藏面消除(HSR)的结果来确定(例如,以使得TSP块110的计数可以低于ISP块108的计数)。类似于在有关ISP块108所使用的计数的上述示例中,在一些示例中,每个参数块具有(以供TSP块110使用)与该参数块的至少一个参数关联的图块的数目的单独计数。以如上述有关ISP块108的计数相同的方式使用TSP块110的计数,以便确定哪个参数逐出参数缓存120,并且可以以相同方式递减。
在上述示例中,存在两个分开的参数缓存:ISP块108所使用的参数缓存118以及TSP块110所使用的参数缓存120。在其它示例中,可能存在单个(“统一”)参数缓存,其可以由ISP块108和TSP块110两者使用。甚至当使用单个缓存时,分开的计数将用于ISP块108和TSP块110。然而,当使用单一参数缓存时,处理块中的一个处理块(ISP块108或TSP块110)可以逐出处理块中的另一处理块(TSP块110或ISP块108)所需的参数,反之亦然。这将导致参数缓存的“颠簸(thrashing)”。因此,使用单个参数缓存供ISP块108和TSP块110两者使用,可以降低处理单元102中参数的缓存的效果。然而,使用单个参数缓存可能是有益的。
作为另一示例,TSP块110所使用的纹理缓存120可以使用对应于有关参数缓存118和120的上述逐出策略的逐出策略。纹理存储器116驻留在存储器112中并且存储纹理。每个纹理包括一个或多个纹素,其可以应用于对象的图元。对象的参数可以指示纹理的一部分,当在TSP块110中处理图块时,该纹理要被应用于对象的图元。当TSP块110处理图块时,来自所指示的纹理的合适的纹素从纹理存储器116被提取到纹理缓存122中。以与如上所述的可以针对参数确定计数的方式相同的方式,可以针对纹素确定计数以指示纹素与之关联的图块的数目。例如,可以在纹理的粒度上确定计数(以与如上所述的在参数块的粒度上确定计数的方式相同的方式),据此纹理内的每个纹素被给予相同计数值,其指示来自该纹理的纹素与之关联的图块的数目。当纹素需要被逐出纹理缓存122时,纹理缓存122中的纹素的计数可以用来确定哪个纹素要逐出纹理缓存122。即,基于纹素与之关联的图块的数目对从纹理缓存122逐出纹素进行加权。
可以确定处理渲染空间内的图块的顺序。许多因素可能有助于确定图块要被处理的顺序。例如,简单的排序方案包括光栅扫描,其中一次一行图块、从上到下来处理图块,并且在每行图块内,顺序是从左到右。诸如Boustrophedon排序和Morton排序之类的其它排序方案是常用的。可以以多线程的方式来实现图块的处理,并且将要在一个线程中处理的图块组合在一起可能或者不可能是有益的。作为另一示例,可以使用负载平衡技术来确定图块被处理的顺序,这样的技术的细节超过了本说明书的范围。
上述示例涉及实现用于从缓存逐出图形数据项(例如参数或纹素)的逐出策略。作为该逐出策略的实现的一部分,指示符(或“计数”)包括在图形数据项的缓存中,以指示每个图形数据项与之关联的图块的数目。这些指示符可以用于确定图块要被处理的顺序。指示符对确定图块要被处理的顺序的影响可能比在确定中考虑的其它因素小,但是在其它因素相等的情况下,缓存中的指示符可以确定图块被处理的顺序。使用已经在缓存中的图形数据项而不是需要将图形数据项提取到缓存中来处理要被处理的图块,可能是有益的。在指示符是如上所述的递减计数的示例中,则对于具有相对低的计数值的图形数据项,优选地朝零驱动计数以使得它们将被逐出缓存(从而为其它图形数据项释放缓存中的空间)并且将不需要它们用于处理其它图块,可能是有益的。这可以通过选择处理与那些图形数据项关联的图块来完成。图块的显示列表可以用来确定哪个图块与哪个图形数据项关联。这可能是因为在其它场景中,图块被选择进行处理,从而减小缓存中具有相对高的计数值的图形数据项的计数。
一般来说,上述任何功能、方法、技术或组件可以在使用软件、固件、硬件(例如固定逻辑电路)或者这些实施方式的任何组合的模块中实现。本文使用术语“模块”、“功能”、“组件”和“逻辑”来一般地表示软件、固件、硬件或其任何组合。
在软件实现的情况下,模块、功能、组件或逻辑表示程序代码,该程序代码当在处理器(例如一个或多个CPU)上执行时完成指定任务。在一个示例中,所述方法可以由计算机来执行,该计算机配置有具有机器可读形式、存储在计算机可读介质上的软件。计算机可读介质的一个这样的配置是信号承载介质,并且因此被配置为诸如通过网络传输指令(例如载波)到计算设备。计算机可读介质还可以被配置为计算机可读存储介质,并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或其它数据并且可以通过机器访问的其它存储器设备。
当程序在计算机上运行时并且在计算机程序可以包含在计算机可读介质上的地方,软件可以是包括用于配置计算机以执行所述方法的组成部分的计算机程序代码的计算机程序的形式,或者包括适于执行本文所述任一方法的所有步骤的计算机程序代码装置的计算机程序的形式。程序代码可以存储在一个或多个计算机可读介质中。本文所述技术的特征是独立于平台的,这意味着该技术可以在具有各种各样的处理器的各种各样的计算平台上实现。
本领域技术人员还会意识到,可以通过专用电路、专用集成电路、可编程逻辑阵列、现场可编程门阵列等来执行所有或部分功能、技术或方法。例如,模块、功能、组件或逻辑可以包括电路形式的硬件。这些电路可以包括晶体管和/或生产过程中可得的其它硬件元件。通过示例,这样的晶体管和/或其它元件可以用来形成实现和/或包含存储器(诸如寄存器、触发器或锁存器)、逻辑算子(诸如布尔运算)、数学算子(诸如加法器、乘法器或移位器)和互连的电路或结构。这样的元件可以被提供为定制电路或标准单元库、宏或者在其它的抽象水平。这样的元件可以以特定布局相互连接。模块、功能、组件或逻辑可以包括为固定功能的电路以及可以被编程为执行一个功能或多个功能的电路;这样的编程可以从固件或软件更新或控制机制提供。在示例中,硬件逻辑具有实现固定功能操作、状态机或过程的电路。
还旨在包括“描述”或定义实现上述模块、功能、组件或逻辑的硬件的配置的软件,诸如HDL(硬件描述语言)软件,如用于设计集成电路,或者用于配置可编程芯片,以执行期望的功能。即,可以提供一种计算机可读存储介质,其具有在其上编码的计算机可读程序代码,该计算机可读程序代码用于生成被配置为执行本文所述任何方法的处理单元,或者用于生成包括本文所述任何装置的处理单元。
本文使用术语“处理器”和“计算机”指代具有处理能力以使得其可以执行指令的任何设备或其部分,或者能够执行全部或部分功能或方法的专用电路,或其任何组合。
虽然已经以特定于结构特征和/或方法动作的语言描述了本技术方案,但要理解的是,所附权利要求中限定的本技术方案不一定限于上述特定特征或动作。相反,上述特定特征和动作被公开为实现权利要求的示例形式。将理解的是,上述益处和优点可以与一个示例有关或者可以与若干示例有关。
如将对于技术人员显而易见的,本文给出的任何范围或数值可以被扩展或变更而不失去所寻求的效果。本文描述的方法的步骤可以以任何合适的顺序或者同时(在合适的情况下)执行。上述任何示例的方面可以与所述任何其它示例的方面组合以形成另外的示例而不失去所寻求的效果。

Claims (20)

1.一种处理基于图块的图形系统中的数据的方法,所述基于图块的图形系统具有被细分成图形数据项与之关联的多个图块的渲染空间,所述方法包括:
从图形数据存储器提取要被用于处理所述图块中的一个图块的图形数据项到缓存中;以及
从所述缓存读取所述图形数据项以用于处理所述图块中的所述一个图块,其中所述方法还包括:
确定所述图形数据项的指示符,其中,对于每个所述图形数据项,所述图形数据项的所述指示符指示所述图形数据项与之关联的图块的数目;
基于确定的所述指示符,确定逐出所述缓存中的哪些图形数据项;以及
从所述缓存逐出确定的所述图形数据项。
2.根据权利要求1所述的方法,还包括确定所述图形数据项的边界区域,其中如果特定图形数据项的边界区域与特定图块至少部分重叠,则所述特定图形数据项与所述特定图块关联,
并且其中对于每个所述图形数据项,所述图形数据项的所述指示符指示图块的数目,所述图块与所述图形数据项的所述边界区域至少部分重叠。
3.根据前述任一权利要求所述的方法,其中对于每个所述图形数据项,所述图形数据项与之关联的图块的数目在确定哪些图形数据项存在于每个所述图块中的步骤期间被确定,并且其中所述方法还包括基于所述缓存中的所述图形数据项的所述指示符并且基于确定哪些图形数据项存在于每个所述图块中的步骤,来确定图块要被处理的顺序。
4.根据前述任一权利要求所述的方法,其中所述图形数据项是定义包含在所述图块中的几何体的参数,其中所述图形数据集合是参数块并且所述图形数据存储器是参数缓冲器。
5.根据前述任一权利要求所述的方法,其中所述图形数据项是包含在所述图块中的纹理的纹素,其中所述图形数据集合是纹理并且所述图形数据存储器是纹理存储器。
6.根据前述任一权利要求所述的方法,还包括:
确定另外的图形数据项要被提取到所述缓存中;并且
确定在不从所述缓存逐出一些图形数据项的情况下,所述缓存中没有足够空间来存储所述另外的图形数据项,
其中所述确定逐出所述缓存中的哪些图形数据项和所述从所述缓存逐出确定的所述图形数据项响应于所述确定所述缓存中没有足够空间来存储所述另外的图形数据项而被执行。
7.一种基于图块的图形系统,所述基于图块的图形系统具有被细分成图形数据项与之关联的多个图块的渲染空间,所述基于图块的图形系统包括处理单元,所述处理单元被配置为:
从图形数据存储器提取要被用于处理所述图块中的一个图块的图形数据项到缓存中;
从所述缓存读取所述图形数据项以用于处理所述图块中的所述一个图块;
确定所述图形数据项的指示符,其中,对于每个所述图形数据项,所述图形数据项的所述指示符指示所述图形数据项与之关联的图块的数目;
基于确定的所述指示符,确定逐出所述缓存中的哪些图形数据项;以及
从所述缓存逐出确定的所述图形数据项。
8.根据权利要求7所述的系统,其中所述图形数据项存储在所述图形数据存储器中的图形数据集合中,每个所述图形数据集合包括一个或多个所述图形数据项,并且其中如果包括特定图形数据项的所述图形数据集合中的图形数据项要被用于处理特定图块,则所述特定图形数据项与所述特定图块关联,
并且其中对于每个所述图形数据项,所述图形数据项的所述指示符指示图块的数目,使用包括所述图形数据项的所述图形数据集合中的图形数据项处理所述图块。
9.根据权利要求7或8所述的系统,其中如果特定图形数据项要被用于处理特定图块,则所述特定图形数据项与所述特定图块关联,
并且其中对于每个所述图形数据项,所述图形数据项的所述指示符指示图块的数目,使用所述图形数据项处理所述图块。
10.根据权利要求7至9中任一项所述的系统,其中所述处理单元被配置为确定哪些图形数据项存在于每个所述图块中,从而对于每个所述图形数据项,确定所述图形数据项与之关联的图块的数目。
11.根据权利要求7至10中任一项所述的系统,其中所述图形数据项是定义包含在所述图块中的几何体的参数,或者其中所述图形数据项是包含在所述图块中的纹理的纹素。
12.根据权利要求7至11中任一项所述的系统,其中对于每个所述图形数据项,所述指示符是所述图形数据项与之关联的图块的数目的计数。
13.根据权利要求12所述的系统,其中所述处理单元还被配置为当特定图形数据项与之关联的图块已经被处理时,使所述特定图形数据项的计数递减。
14.根据权利要求12或13所述的系统,其中所述处理单元被配置为通过(i)确定所述缓存中的哪个图形数据项具有最低的计数或者(ii)确定任何所述图形数据项是否具有等于零的计数,来确定逐出所述缓存中的哪些图形数据项。
15.根据权利要求12至14中任一项所述的系统,其中所述处理单元被配置为为所述计数设定限度,以使得对于每个所述图形数据项,如果所述图形数据项与之关联的图块的数目大于预定最大值,则所述计数被确定为等于所述预定最大值,其中所述处理单元被配置为仅在所述计数小于所述预定最大值的情况下使所述计数递减。
16.根据权利要求7至11中任一项所述的系统,其中对于每个所述图形数据项,所述图形数据项的所述指示符指示两个条件之一,所述两个条件是:
(i)所述图形数据项与之关联的图块的数目等于1,以及
(ii)所述图形数据项与之关联的图块的数目大于1。
17.根据权利要求7至11中任一项所述的系统,其中对于每个所述图形数据项,所述图形数据项的所述指示符指示四个条件之一,所述四个条件是:
(i)所述图形数据项与之关联的图块的数目等于1,
(ii)所述图形数据项与之关联的图块的数目等于2,
(iii)所述图形数据项与之关联的图块的数目等于3或4,以及
(iv)所述图形数据项与之关联的图块的数目大于4。
18.根据权利要求7至17中任一项所述的系统,其中所述处理单元还被配置为:
确定另外的图形数据项要被提取到所述缓存中;并且
确定在不从所述缓存逐出一些图形数据项的情况下,所述缓存中没有足够空间来存储所述另外的图形数据项,
其中所述处理单元被配置为响应于确定所述缓存中没有足够空间来存储所述另外的图形数据项,确定逐出所述缓存中的哪些图形数据项并且从所述缓存逐出确定的所述图形数据项。
19.一种基于图块的图形系统的处理块,所述基于图块的图形系统具有被细分成图形数据项与之关联的多个图块的渲染空间,所述处理块包括:
提取逻辑,被配置为从图形数据存储器提取要被用于处理所述图块中的一个图块的图形数据项到缓存中;
确定逻辑,被配置为确定所述图形数据项的指示符,以使得对于每个所述图形数据项,所述图形数据项的所述指示符指示所述图形数据项与之关联的图块的数目;
读取逻辑,被配置为从所述缓存读取所述图形数据项以用于处理所述图块中的所述一个图块;以及
逐出逻辑,被配置为:
基于确定的所述指示符,确定逐出所述缓存中的哪些图形数据项;以及
从所述缓存逐出确定的所述图形数据项。
20.一种计算机可读存储介质,具有在其上编码的、用于生成被配置为执行权利要求1至6中任一项所述的方法的处理单元的计算机可读程序代码。
CN201410132510.4A 2013-04-02 2014-04-02 基于图块的图形系统以及其中的处理方法、装置和介质 Active CN104103084B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1305921.7A GB2506706B (en) 2013-04-02 2013-04-02 Tile-based graphics
GB1305921.7 2013-04-02

Publications (2)

Publication Number Publication Date
CN104103084A true CN104103084A (zh) 2014-10-15
CN104103084B CN104103084B (zh) 2019-09-06

Family

ID=48445124

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410132510.4A Active CN104103084B (zh) 2013-04-02 2014-04-02 基于图块的图形系统以及其中的处理方法、装置和介质

Country Status (4)

Country Link
US (4) US9928563B2 (zh)
CN (1) CN104103084B (zh)
DE (1) DE102014004841B4 (zh)
GB (1) GB2506706B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105825469A (zh) * 2015-01-27 2016-08-03 想象技术有限公司 在图形处理系统中处理具有未解析片段的基元
CN107169916A (zh) * 2016-03-07 2017-09-15 想象技术有限公司 用于simd处理的任务组合
CN107341283A (zh) * 2016-04-29 2017-11-10 想象技术有限公司 用于图块的控制流的生成
CN108305313A (zh) * 2017-01-12 2018-07-20 想象技术有限公司 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法
CN110058807A (zh) * 2018-01-10 2019-07-26 Arm有限公司 存储管理方法和系统
CN115719301A (zh) * 2018-12-21 2023-02-28 想象技术有限公司 基于图块的调度

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2526598B (en) * 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
CN106537446B (zh) * 2014-06-30 2019-08-20 英特尔公司 具有任意块形状的自适应划分机制以用于基于块的渲染gpu架构
US9607352B2 (en) * 2014-12-03 2017-03-28 Intel Corporation Prediction based primitive sorting for tile based rendering
GB2542131B (en) * 2015-09-08 2019-09-11 Imagination Tech Ltd Graphics processing method and system for processing sub-primitives
GB2546810B (en) * 2016-02-01 2019-10-16 Imagination Tech Ltd Sparse rendering
GB2560709B (en) * 2017-03-14 2021-02-24 Imagination Tech Ltd Graphics processing method and system for processing sub-primitives
CN111354065A (zh) 2018-12-21 2020-06-30 畅想科技有限公司 用于图形处理系统的基元块生成器
GB2580170B (en) * 2018-12-21 2021-11-24 Imagination Tech Ltd Transformed geometry data cache for graphics processing systems
EP3671650A1 (en) * 2018-12-21 2020-06-24 Imagination Technologies Limited Primitive block-based rasterization in graphics processing systems
EP3690798A1 (en) * 2019-01-29 2020-08-05 Imagination Technologies Limited Memory for storing untransformed primitive blocks
US11514549B2 (en) 2020-02-03 2022-11-29 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase
US11508110B2 (en) * 2020-02-03 2022-11-22 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering
CN113256478A (zh) 2020-02-13 2021-08-13 畅想科技有限公司 用于在图形处理系统中存储图元的方法和图元块生成器
US20220051467A1 (en) * 2020-08-17 2022-02-17 Intel Corpoation Apparatus and method for efficient graphics processing including ray tracing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6204856B1 (en) * 1997-08-01 2001-03-20 U.S. Philips Corporation Attribute interpolation in 3D graphics
US6396503B1 (en) * 1999-12-31 2002-05-28 Hewlett-Packard Company Dynamic texture loading based on texture tile visibility
CN1610927A (zh) * 2001-12-31 2005-04-27 英特尔公司 用于区域渲染的深度写禁止
CN102822871A (zh) * 2010-03-19 2012-12-12 想象技术有限公司 基于图块的渲染系统中基于需求的纹理渲染

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5566324A (en) * 1992-12-24 1996-10-15 Ncr Corporation Computer apparatus including a main memory prefetch cache and method of operation thereof
US5729672A (en) 1993-07-30 1998-03-17 Videologic Limited Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces
US5577243A (en) 1994-03-31 1996-11-19 Lexmark International, Inc. Reallocation of returned memory blocks sorted in predetermined sizes and addressed by pointer addresses in a free memory list
US5867166A (en) 1995-08-04 1999-02-02 Microsoft Corporation Method and system for generating images using Gsprites
US6331856B1 (en) 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US6348919B1 (en) 1995-12-18 2002-02-19 3Dlabs Inc, Ltd. Graphics system with optimized use of unified local and frame buffers
US6697063B1 (en) 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
US6856320B1 (en) 1997-11-25 2005-02-15 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US6480205B1 (en) 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
AU5688199A (en) 1998-08-20 2000-03-14 Raycer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
GB2343603B (en) * 1998-11-06 2003-04-02 Videologic Ltd Shading 3-dimensional computer generated images
TW451132B (en) * 1998-12-15 2001-08-21 Nippon Electric Co System and method for cache processing
US6380935B1 (en) * 1999-03-17 2002-04-30 Nvidia Corporation circuit and method for processing render commands in a tile-based graphics system
US6407736B1 (en) 1999-06-18 2002-06-18 Interval Research Corporation Deferred scanline conversion architecture
US6577679B1 (en) * 1999-09-30 2003-06-10 Hewlett-Packard Development Company Lp Method and apparatus for transcoding coded picture signals from object-based coding to block-based coding
US6801203B1 (en) * 1999-12-22 2004-10-05 Microsoft Corporation Efficient graphics pipeline with a pixel cache and data pre-fetching
US20020039100A1 (en) 2000-06-08 2002-04-04 Stephen Morphet Memory management for systems for generating 3-dimensional computer images
US7405734B2 (en) 2000-07-18 2008-07-29 Silicon Graphics, Inc. Method and system for presenting three-dimensional computer graphics images using multiple graphics processing units
US6671424B1 (en) * 2000-07-25 2003-12-30 Chipworks Predictive image caching algorithm
US6636212B1 (en) 2000-11-14 2003-10-21 Nvidia Corporation Method and apparatus for determining visibility of groups of pixels
GB2378108B (en) 2001-07-24 2005-08-17 Imagination Tech Ltd Three dimensional graphics system
US7200272B2 (en) * 2002-01-31 2007-04-03 Canon Kabushiki Kaisha Image processing method storing input encoded data into a memory
GB2416100B (en) 2002-03-26 2006-04-12 Imagination Tech Ltd 3D computer graphics rendering system
GB0524804D0 (en) * 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
GB2439129B (en) * 2006-06-12 2008-11-12 Imagination Tech Ltd Parameter compaction in a tile based rendering system
US7626588B1 (en) * 2006-06-16 2009-12-01 Nvidia Corporation Prescient cache management
GB2449398B (en) 2006-09-29 2009-02-11 Imagination Tech Ltd Improvements in memory management for systems for generating 3-dimensional computer images
GB2452731B (en) 2007-09-12 2010-01-13 Imagination Tech Ltd Methods and systems for generating 3-dimensional computer images
US8689027B2 (en) * 2008-11-13 2014-04-01 International Business Machines Corporation Tiled memory power management
GB0823468D0 (en) * 2008-12-23 2009-01-28 Imagination Tech Ltd Display list control stream grouping in tile based 3D computer graphics systems
JP5573255B2 (ja) 2010-03-11 2014-08-20 富士ゼロックス株式会社 定着装置及び画像形成装置
GB201004675D0 (en) 2010-03-19 2010-05-05 Imagination Tech Ltd Memory management system
GB2505608B (en) * 2011-08-05 2018-02-14 Imagination Tech Ltd Systems and methods for a 3-D scene acceleration structure creation and updating
GB201116438D0 (en) 2011-09-22 2011-11-02 Advanced Risc Mach Ltd Occlusion queries in graphics processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6204856B1 (en) * 1997-08-01 2001-03-20 U.S. Philips Corporation Attribute interpolation in 3D graphics
US6396503B1 (en) * 1999-12-31 2002-05-28 Hewlett-Packard Company Dynamic texture loading based on texture tile visibility
CN1610927A (zh) * 2001-12-31 2005-04-27 英特尔公司 用于区域渲染的深度写禁止
CN102822871A (zh) * 2010-03-19 2012-12-12 想象技术有限公司 基于图块的渲染系统中基于需求的纹理渲染

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105825469A (zh) * 2015-01-27 2016-08-03 想象技术有限公司 在图形处理系统中处理具有未解析片段的基元
US11176733B2 (en) 2015-01-27 2021-11-16 Imagination Technologies Limited Processing primitives which have unresolved fragments in a graphics processing system
US11928776B2 (en) 2015-01-27 2024-03-12 Imagination Technologies Limited Processing primitives which have unresolved fragments in a graphics processing system
CN107169916A (zh) * 2016-03-07 2017-09-15 想象技术有限公司 用于simd处理的任务组合
CN107169916B (zh) * 2016-03-07 2023-01-13 想象技术有限公司 用于simd处理的任务组合
CN107341283A (zh) * 2016-04-29 2017-11-10 想象技术有限公司 用于图块的控制流的生成
CN107341283B (zh) * 2016-04-29 2022-11-29 想象技术有限公司 用于图块的控制流的生成
CN115828828A (zh) * 2016-04-29 2023-03-21 想象技术有限公司 用于图块的控制流的生成
CN108305313A (zh) * 2017-01-12 2018-07-20 想象技术有限公司 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法
CN110058807A (zh) * 2018-01-10 2019-07-26 Arm有限公司 存储管理方法和系统
CN115719301A (zh) * 2018-12-21 2023-02-28 想象技术有限公司 基于图块的调度

Also Published As

Publication number Publication date
DE102014004841A1 (de) 2014-10-02
GB2506706B (en) 2014-09-03
US20140292782A1 (en) 2014-10-02
GB201305921D0 (en) 2013-05-15
US20180174269A1 (en) 2018-06-21
US20170148130A1 (en) 2017-05-25
DE102014004841B4 (de) 2022-06-09
US11954759B2 (en) 2024-04-09
US9928563B2 (en) 2018-03-27
CN104103084B (zh) 2019-09-06
US9934549B2 (en) 2018-04-03
GB2506706A (en) 2014-04-09
US11551326B2 (en) 2023-01-10
US20230102320A1 (en) 2023-03-30

Similar Documents

Publication Publication Date Title
CN104103084A (zh) 基于图块的图形
US11481952B2 (en) Allocation of primitives to primitive blocks
US20180365885A1 (en) Assigning primitives to tiles in a graphics processing system
CN105321140B (zh) 向图形处理系统中的区片分配图元
EP3671651B1 (en) Primitive block generator for graphics processing systems
CN111429556B (zh) 图形处理系统中的基于基元块的光栅化
CN105809728A (zh) 在图形处理单元中渲染场景的视图
CN106504184B (zh) 用于处理子图元的图形处理方法和系统
CN112116519B (zh) 图形处理系统中的粗略深度测试
US6369828B1 (en) Method and system for efficiently using fewer blending units for antialiasing
CN101639929A (zh) 图形处理系统
EP3333806B1 (en) Tiling a primitive in a graphics processing system
KR20190093579A (ko) z-컬링 후 중첩 단편들 식별 또는 제거
US20220375145A1 (en) Tile-Based Scheduling Using Per-Tile Hash Values
US20050052459A1 (en) Method and system for rendering macropixels in a graphical image
US20230377263A1 (en) Multi-Viewport Transformation Module for use in 3D Rendering System
US6795072B1 (en) Method and system for rendering macropixels in a graphical image

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