CN104715502A - 图形处理***中的基元处理 - Google Patents

图形处理***中的基元处理 Download PDF

Info

Publication number
CN104715502A
CN104715502A CN201410773381.7A CN201410773381A CN104715502A CN 104715502 A CN104715502 A CN 104715502A CN 201410773381 A CN201410773381 A CN 201410773381A CN 104715502 A CN104715502 A CN 104715502A
Authority
CN
China
Prior art keywords
primitive
tile
buffer
tags buffer
tags
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
CN201410773381.7A
Other languages
English (en)
Other versions
CN104715502B (zh
Inventor
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
Priority to CN201910328773.5A priority Critical patent/CN110097621B/zh
Publication of CN104715502A publication Critical patent/CN104715502A/zh
Application granted granted Critical
Publication of CN104715502B publication Critical patent/CN104715502B/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/10Geometric effects
    • G06T15/40Hidden part removal
    • 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/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/40Analysis of texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明的实施方式涉及图形处理***中的基元处理。一种图形处理***,其具有包括一个或多个瓦片的渲染空间。该***包括处理模块,其被配置为针对瓦片的基元执行隐藏面消除以确定标识在该瓦片的中的多个样本位置中的每一个样本位置处可见的基元的基元标识符。两个或更多标签缓冲器的集合存储针对瓦片中的样本位置中的每个样本位置所确定的基元标识符,由此表示基元的重叠的层。标签控制模块控制:(i)对用于根据标签缓冲器中所存储的基元标识符的分层而存储的基元标识符中的每个基元标识符的标签缓冲器的选择,和(ii)从标签缓冲器冲刷基元标识符。纹理化引擎对所冲刷的基元标识符所标识的基元应用纹理化。

Description

图形处理***中的基元处理
背景技术
在3D图形处理***中,场景的对象利用基元(primitive)的群组进行表示,它们通常在场景的渲染期间被投射、扫描转换、纹理化和阴影化。基元具有经常由能够对其应用纹理的一个或多个顶点(例如,在基元为三角形的情况下的三个顶点)所定义的简单的几何形状,其经常为三角形。3D场景处理的渲染对基元进行处理以形成包括图像像素阵列的图像。该渲染处理中的一个步骤是针对图像的多个样本位置中的每一个确定哪个/哪些基元是可见的。该处理被称作隐藏面消除(HSR)。被其它基元所隐藏的基元或者基元的部分未来在渲染中并不需要被考虑。为了执行HSR,针对每个样本位置考虑场景中的基元的深度(即,距视点的距离)以便确定哪些基元在每个像素位置是可见的。基元可以是非透明或透明的。使用纹理在本来为非透明的基元中创建孔洞的渲染技术被称作“穿通(punch through)”。针对非透明基元,在像素位置(其可以对应于样本位置中的一个或多个样本位置)最终所渲染的像素值可以由在该像素位置具有最小深度值的带纹理基元所给出。对于透明基元而言,在像素位置最终渲染的像素值可以由在该像素位置具有最小深度值的多于一个的带纹理基元的混合所给出。当场景包含其纹理包括穿通的基元时,在像素位置最终渲染的像素值可以由在该像素位置具有最小深度值的基元以外的基元所确定。
图1示出了图形处理***100,其包括可以被称作图像合成处理器(ISP)的处理模块102、可以被称作Z缓冲器的深度缓冲器104、标签分类器模块106、可以被称作统一阴影聚类器(USC)的纹理和阴影引擎108,以及像素缓冲器110、在操作中,在ISP 102接收基元(例如,顶点坐标和基元标识符),并且该ISP对基元执行HSR以确定哪些基元在所要渲染的图像的多个样本位置中的每一个处是可见的。为了针对典型渲染实施HSR,ISP被编程为针对每个样本位置在深度缓冲器104中存储表示ISP 102截止目前已经处理过的最接近基元的深度的深度值,而使得ISP 102能够将当前正在处理的基元的深度与深度缓冲器104中所存储的深度值进行比较以确定当前基元是否可见。ISP 102所执行的HSR的结果被用来相应地更新深度缓冲器104中所存储的深度值。所要注意的是,在一些***中,深度缓冲器104和标签分类器模块106可以被描述为ISP 102的组件。
标签分类器模块106包括标签缓冲器,其被配置为针对每个样本位置存储由ISP 102执行的HSP所确定的该样本位置处的可见基元的基元标识符(ID)。标签分类器模块106还包括控制器以对标签缓冲器的更新和冲刷进行控制。基元标识符被冲刷到USC 108。响应于接收到被冲刷的基元标识符,USC 108将获取所标识的基元并且将获取纹理数据以便对被冲刷的基元ID所标识基元应用纹理和阴影。标签分类器模块106中的控制器控制基元标识符何时被冲刷到USC 108。例如,基元标识符可以在图像的基元已经全部被ISP 102处理时被冲刷到USC 108。基元标识符也可以在透明基元或者具有包括穿通的纹理的基元的基元标识符被存储到标签缓冲器中时被冲刷到USC 108。这是为了这些基元能够被正确混合。
发明内容
提供该发明内容而以简化形式对随后在具体实施方式中进一步进行描述的概念的选择进行介绍。该发明内容并非意在标识出所请求保护主题的关键特征或必要特征,也并非意在被用来对所请求保护主题的范围加以限制。
提供了一种图形处理***,其具有包括一个或多个瓦片的渲染空间,该图形处理***包括:处理模块,其被配置为接收要针对瓦片进行处理的基元,其中该处理模块被配置为针对该瓦片的基元执行隐藏面消除以确定标识在该瓦片的中的多个样本位置中的每个样本位置可见的基元的基元标识符;两个或更多标签缓冲器的集合,其被配置为存储针对该瓦片中的该样本位置中的每个样本位置所确定的基元标识符,其中在该集合的标签缓冲器中相对应的样本位置所存储的基元标识符表示基元的重叠的层;标签控制模块,其被配置为控制:(i)对用于存储标识通过所述隐藏面消除而被确定为可见的基元的基元标识符中的每个基元标识符的标签缓冲器的选择,其中对标签缓冲器的选择根据存储于所述标签缓冲器中的、一个或多个样本位置的块中的一个或多个样本位置处的基元标识符所标识的基元的分层而针对该块进行;以及(ii)从该标签缓冲器的集合中的一个或多个标签缓冲器冲刷基元标识符;以及纹理化引擎,其被配置为接收所冲刷的基元标识符并且由对所冲刷的基元标识符所标识的基元应用纹理化。
还提供了一种在图形处理***中处理基元的方法,该图形处理***具有包括一个或多个瓦片的渲染空间,该方法包括:针对该瓦片的基元执行隐藏面消除以确定标识在该瓦片的中的多个样本位置中的每个样本位置可见的基元的基元标识符;从两个或更多标签缓冲器的集合中选择用于存储标识通过该隐藏面消除而被确定为可见的基元的基元标识符中的每个基元标识符的标签缓冲器,其中在该集合的标签缓冲器中相对应的样本位置处所存储的基元标识符表示基元的重叠的层,并且其中对标签缓冲器的选择根据在一个或多个样本位置的块中的一个或多个样本位置处、存储于标签缓冲器中的基元标识符所标识的基元的分层而针对该块进行;将通过该隐藏面消除针对该样本位置中的每个样本位置确定为可见的基元标识符存储在相对应的所选择的标签缓冲器中;从该标签缓冲器集合中的一个或多个标签缓冲器冲刷基元标识符;以及从冲刷的基元标识符所标识的基元应用纹理化。
还提供了一种计算机可读代码,当该代码在计算机上运行时其适于执行这里所描述的示例的任意方法的步骤。此外,可以提供一种用于生成这里所描述的示例的任意图形处理***的计算机可读代码。该计算机可读代码可以被编码在计算机可读存储介质上。
如对本领域技术人员而言明显的,以上特征可以被适当组合并且可以与这里所描述示例的任意方面进行组合。
附图说明
现在将参考附图对实施例进行详细描述,其中:
图1是图形处理***的示意图;
图2表示了渲染空间的四个瓦片;
图3是实施多个深度缓冲器的图形处理***的示意图;
图4是在图3所示的图形处理***中处理基元的方法的流程图;
图5a是示出在第一示例的瓦片中可见的基元的示图;
图5b示出了存储图5a所示的基元的基元标识符的多个标签缓冲器的相对应列;
图5c是示出在第二示例的瓦片中可见的基元的示图;
图5d示出了存储图5c所示的基元的基元标识符的多个标签缓冲器的相对应列;
图6是实施多个标签缓冲器的图形处理***的示意图;
图7是在图6所示的图形处理***中处理基元的方法的流程图;
图8是实施多个深度缓冲器和多个标签缓冲器的图形处理***的示意图;以及
图9a和9b示出了对标签缓冲器的选择和对标签缓冲器的冲刷进行控制的方法的流程图。
本领域技术人员将会意识到的是,附图中所图示的要素划界(例如,方框、方框群组或者其它形状)表示划界的一个示例。在一些示例中,一个要素可以被设计为多个要素或者多个要素可以被设计为一个要素。在适当的情况下,贯穿附图使用同样的参考标号来指示相似的特征。
具体实施方式
以上背景技术部分中所描述的图形处理***100之所以有效的原因在于,隐藏面消除是在ISP 102中执行并且仅发送可见表面以便在USC 108进行纹理化和阴影化。在隐藏面消除之前执行纹理化和阴影化可能较不有效,因为在对对象进行纹理化和阴影化时所做的工作在该对象随后被场景中的其它对象所隐藏的情况下被浪费。
当可以在纹理化和阴影化开始之前对整个场景或部分场景完成隐藏面消除时,图1的***在仅处理非透明基元时最为有效。非透明对象的基元ID由标签分类器106所收集,而使得当每个非透明基元已经被ISP 102所处理时,标签缓冲器存储每个样本位置处可见的基元的标识符。标签缓冲器随后可以被冲刷,将基元ID发送至USC108而使得相对应的所标识基元可以被纹理化和阴影化。标签分类器106被如此称谓是因为基元ID可以在他们从缓冲器冲刷时进行分组或分类,而使得在任何可能的情况下,USC 108都能够对来自单个基元的ID进行处理,或者将来自作为群组的具有相似纹理化和阴影化要求的基元的ID进行处理。对基元ID进行分类因此使得USC 108中的高速缓存性能有所提高。当场景仅由非透明基元组成时,标签缓冲器仅需要被冲刷一次。
图1的***在一些情况下会遇到问题,诸如在场景包含透明或穿通基元时。
透明性(translucency)意味着光线能够通过对象。当渲染透明对象时,仅渲染具有最小深度值的基元是不够的,因为可能必须要通过那些基元看到后面的基元。所渲染图像中的像素的颜色可以通过将透明基元的颜色与一个或多个其它基元的颜色进行混合而形成。通常,所渲染图像通过将以具有最大深度值的基元开始并且以具有最小深度值的基元结束的多层透明对象进行混合而构建。并非所有渲染***都能够对透明对象进行分类,从而经常需要软件应用(例如,游戏)来渲染预先排序为从后往前的顺序的基元。在透明性处理的一个示例中,透明基元在ISP 102中进行处理(例如为了确定它们是否被隐藏在任意样本位置的现有非透明对象之后),并且标签缓冲器在每个透明基元之后被冲刷而使得基元能够被纹理化和阴影化,并且与像素缓冲器中之前被纹理化和阴影化的基元进行混合。如果应用在透明基元之后发送了另外的非透明基元,则混合的结果可以被隐藏。
穿通是指其中可以使用纹理向本来非透明的基元增加孔洞的渲染技术。基元中的孔洞应当使得ISP 102对深度缓冲器104进行更新,但是图1的***仅对纹理进行评估,并且因此确定孔洞在USC 108中位于何处。图1的***因此必须采用一些附加步骤来渲染穿通对象。在穿通处理的示例中,到达ISP 102的穿通基元被采样,并且可以相对深度缓冲器104进行测试以确定隐藏在现有非透明对象之后的任意部分。穿通对象中并未被隐藏的任意部分被发送至标签分类器106,但是深度缓冲器104并不进行更新。标签缓冲器被立即冲刷,这可以涉及冲刷标签缓冲器的任意现有内容,随后将穿通基元发送至USC 108。USC 108至少执行所需的纹理化和阴影化操作以确定是否有基元的任何部分具有孔洞,并且将非透明部分通过被标记为“PT反馈”的路径返回至ISP 102,上述路径在图1中以虚线示出。ISP 102执行另一深度测试,这是因为深度缓冲器104的状态可能在用来对穿通基元进行纹理化和阴影化的时间中发生变化,并且基元中保持可见的任意部分作为基元ID而存储在标签缓冲器中。当基元ID最终第二次被冲刷至USC 108时,执行其余的纹理化和阴影化,并且图像像素被存储在像素缓冲器110中。
如之前所描述的,针对透明或穿通基元冲刷基元标识符可能是低效的,因为一些被冲刷的基元标识符可能与随后被ISP 102还要处理的其它基元所隐藏。此外,无论透明基元或具有穿通纹理的基元何时被处理都冲刷基元标识符可能导致要执行许多消除(例如,其中每次消除包括少量的基元标识符)。与针对USC 108执行较少的较大规模消除相比,执行大量的小规模消除的效率经常较低。
此外,在渲染空间被细分为多个被单独处理的分区或“瓦片”的图形处理***中,ISP 102在图1所示的图形处理***100中每次处理一个瓦片的基元。当ISP 102已经针对一个瓦片对基元进行了处理时(例如,通过对该瓦片的基元执行HSR),其随后能够开始对下一个瓦片的基元进行处理。深度缓冲器104针对ISP 102当前所处理的瓦片内的每个样本位置存储深度值;并且标签分类器模块106中的标签缓冲器针对ISP 102当前正在处理的瓦片内的每个样本位置存储基元标识符。图1所示的图形处理***100因此被约束为每次一个瓦片地处理瓦片的基元,而使得一个瓦片的所有基元在处理下一个瓦片的基元之前得到处理。也就是说,瓦片以串行方式(即顺序地)进行处理,。
现在仅通过示例对实施例进行描述。
如之前所指出的,图形处理***可以具有被细分为被单独处理的多个瓦片的渲染空间。图2示出了被用于渲染图像的渲染空间200的四个瓦片2021至2024。虽然图2中为了清楚起见示出了四个瓦片,但渲染空间200可以包括多于四个的瓦片(或少于四个的瓦片)。如图2中所指示的,该示例中的瓦片中的每个瓦片具有32×32个样本位置。样本位置表示所渲染图像的位置,并且可以或者可以不对应于最终图像的实际像素位置,由此该像素位置是像素值针对其被确定并且被存储在像素缓冲器中以便表示图像的位置。在每个样本位置对基元进行采样以创建“片段”,该片段随后在渲染***的其余部分中例如通过隐藏面消除、纹理化和阴影化而被处理。在一些示例中,可能存在比像素位置更多的样本位置,这允许以比最终图像的像素粒度更为精细的力度执行基元的处理。这对于使用抗锯齿技术来减少所渲染图像中出现的锯齿状边缘是有用的。如图2所示,每个瓦片被进一步细分为微型瓦片204,该微型瓦片204在该示例中具有4×4个样本位置的大小。微型瓦片的使用在以下所描述的示例中进一步进行解释。注意到,在其它示例中,瓦片和微型瓦片可以具有与它们在图2所示的示例中相比有所不同的大小和/或形状。
图3示出了图形处理***300,其被配置为允许在特定瓦片的所有基元已经完成处理之前对基元进行处理以在不同瓦片的基元之间进行切换。就该意义而言,图形处理***300可以具有“多个处理中瓦片”,即多个在给定时间其基元被部分处理的瓦片。为了实现这点,图形处理***300包括处理模块302、深度缓冲器模块304、标签分类器模块306、纹理化单元308、像素缓冲器310和控制模块316。该示例还包括队列模块312。在图3所示的示例中,队列模块312包括四个队列3141至3144;深度缓冲器模块304包括四个深度缓冲器3181至3184;标签分类器模块306包括四个标签缓冲器3201至3204以及标签控制模块322;并且纹理化单元308包括四个纹理化引擎3241至3244。图3所示的图形处理***300的部件可以以硬件、软件或者其组合来实施。
参考图4所示的流程图对图形处理***300的操作进行描述。不同瓦片的基元在图形处理***300的队列模块312进行接收。基元可以涉及所要渲染的场景的对象,并且例如可以从在与图形处理***300相同的设备(例如,移动用户设备)上运行的应用(例如,游戏)而被发送至图形处理***300。基元与瓦片数据相关联,该瓦片数据指示将在其中对基元进行处理的一个或多个瓦片202。该瓦片数据可能已经在之前确定渲染哪些瓦片的操作中被确定,该步骤在这里并未详细描述。该基元中的每个基元由基元数据所描述,该基元数据包括基元的顶点位置的指示,并且包括诸如要对基元应用的纹理的指示之类的其它信息。队列3141至3144中的每一个被配置为每次存储一个相应瓦片的基元。在这里所描述的示例中,瓦片数据指示每个基元所针对的是哪个瓦片。在以上所描述的示例中,由于队列每次与一个瓦片相关联,所以与基元相关联的瓦片数据并不需要且并不存储在队列中以指示每个基元针对哪个瓦片。然而,在一些其他示例中,瓦片数据可以与基元一起存储在队列中。队列314例如可以被实现为先进先出(FIFO)缓冲器。图3所示的图形处理***300在给定时间可以具有多达四个的处理中瓦片。在一些示例中,块312中可以有不同数量的队列,并且在一些示例中,可能没有任何队列并且可以直接在处理模块302接收基元和瓦片数据而并不首先将基元和瓦片数据存储在如图3所示的任何队列中。
在步骤S402,处理模块302接收基元以及相关联的瓦片数据。该瓦片数据指示将在其中对基元进行处理的一个或多个瓦片,并且应当标识处理模块302的资源(例如,深度和标签缓冲器)当前针对其被分配的至少一个瓦片。在图3所示的示例中,基元和瓦片数据从队列3141至3144之一在处理模块302被接收。由于队列3141至3144中的每一个被配置为每次存储一个相应瓦片的基元,所以瓦片数据可以简单地包括从其接收到该基元的队列的标识。
在步骤404,处理模块302针对瓦片的一个基元通过将该基元的深度值与关联于该瓦片的深度缓冲器中所存储的深度值进行比较而执行隐藏面消除(HSR)。深度缓冲器3181至3184中的每一个被配置为每次与一个瓦片相关联并且被配置为针对相应的相关联瓦片内的每个样本位置存储深度值。例如,四个深度缓冲器3181至3184可以分别与四个瓦片(瓦片A至瓦片D)相关联。深度缓冲器与之相关联的四个瓦片可以从渲染表面上的任意位置进行选择。并不要求瓦片彼此相邻。在一些示例中,瓦片可以从多于一个的渲染表面中的位置进行选择。
处理模块302针对基元所执行的HSR包括(基于基元的顶点位置)确定哪些样本位置处于基元之内,并且基于相关深度缓冲器318中所存储的深度值在这些样本位置执行深度测试。
作为步骤404的一部分,处理模块302可以对与当前所处理的瓦片相关联的深度缓冲器318中所存储的一个或多个深度值进行更新。
处理模块302具有每次对一个基元进行操作的处理单元。然而,由于图形处理***300包括多个深度缓冲器3181至3184,所以其能够在完成一个瓦片内的所有基元的处理之前在处理来自不同瓦片的基元之间进行切换。也就是说,处理模块302能够针对一个瓦片的基元执行HSR,同时另一个深度缓冲器318存储被部分处理的瓦片的深度值。在这种情况下,该被部分处理的瓦片是与处理模块302当前针对其处理基元的瓦片不同的瓦片。这允许处理模块302所处理的基元顺序有更大的灵活性,并且能够使得图形处理***300对基元所进行的处理与图形处理***100所执行的处理相比更为有效,在图形处理***100中,一个瓦片的所有基元都在处理模块102对下一个瓦片的基元进行处理之前被处理模块102所处理。例如,如果对一个瓦片的处理由于一些特定于所处理瓦片的原因而停止,则图形处理***300的处理模块302能够继续处理来自其它瓦片的基元,而图形处理***100的处理模块102则可能被停止直至能够继续针对所停止的瓦片进行处理。此外,如以下所描述的,能够实施多个纹理化引擎324以提高***的纹理化和阴影化能力。在之前的***中,具有单个深度缓冲器的处理单元已经被耦合至多个纹理化引擎。因此,有必要设计一种以纹理化引擎的负载合理地保持适当平衡并且因此高速缓存等的效率得以保持的方式为每个纹理化引擎供应片段的***。而实际上这是难以实现的。
在具有多个处理中的瓦片的当前***中,使用相同纹理化引擎324为特定瓦片内的所有可见基元应用纹理化会是有效的。也就是说,每个纹理化引擎324能够与相应瓦片相关联。
该关联可能是有利的,因为瓦片中的每个基元导致该基元的纹理化数据被加载到纹理化引擎324的本地高速缓存中。通过对单个纹理化引擎324中的基元的片段进行处理,基元的纹理化数据仅被加载到该纹理化引擎的高速缓存中。与之相比,如果基元的片段被分布到若干个纹理化引擎,则相同的纹理化数据将在若干个高速缓存中被复制。通过避免数据的复制,高速缓存的效率有所提高。该布置的有利之处还在于纹理引擎324的负载能够更易于平衡,例如通过将每个纹理化引擎324与多个处理中瓦片之一相关联,而不是试图将来自一个瓦片的片段均匀分布至若干纹理化引擎。负载平衡在下文中更为详细地进行描述。
在步骤S406,在步骤S404的隐藏面消除中留存的片段的基元标识符被存储在标签缓冲器320中,而使得在每个基元被处理之后,标签缓冲器包含在每个样本位置可见的基元的标识。在图3所示的示例中,标签分类器模块306中有四个标签缓冲器(3201至3204),这与深度缓冲器318的数量相同,而使得标签缓冲器3201至3204中的每一个动态地与相应的特定瓦片相关联。也就是说,每个标签缓冲器320存储标识被HSR确定为在相应瓦片内的每个样本位置可见的基元的基元标识符。一般而言,针对“处理中”的每个瓦片,存在被配置为存储该瓦片的可见基元的基元标识符的至少一个标签缓冲器320的相关联集合。在图3所示的示例中,与特定瓦片相关联的“标签缓冲器的集合”中的所有集合仅包括一个标签缓冲器320,但是如以下参考图6和8更为详细描述的,这些集合可以包括多于一个的标签缓冲器。
标签分类器模块306的标签控制模块322控制对标签缓冲器320之一的选择以便存储在标签分类器模块306作为处理模块302所执行的HSR的输出而接收的基元标识符中的每个基元标识符。标签控制模块322还控制来自标签缓冲器3201至3204的基元标识符的冲刷。被冲刷的基元标识符被送至纹理化单元308。标签分类器模块306的操作在下文中关于图5a至9b进行更为详细的描述。
在步骤S408,纹理化引擎3241至3244之一对所冲刷的基元标识符所标识的基元应用纹理化和阴影化。纹理化引擎324(例如,从存储器)获取纹理数据和所标识的基元并且将该纹理数据应用于所冲刷基元标识符所标识的基元。在图3所示的示例中有四个纹理化引擎3241至3244,即存在与深度缓冲器318的数量相同的纹理化引擎324。在这种情况下,纹理化引擎中的每个纹理化引擎与相应瓦片相关联,而使得被应用于特定瓦片的基元的所有纹理化都由相同的纹理化引擎308所执行。也就是说,与特定瓦片相关联的(多个)标签缓冲器320中的基元标识符全部被发送至纹理化引擎324中的相同的纹理化引擎,而使得被应用于该特定瓦片的可见基元的所有纹理化都是由相同的纹理化引擎324所应用。如以上所描述的,这在存在多个处理中瓦片的情况下可以提高对基元进行纹理化的效率。用于对基元应用纹理化的方法是本领域已知的,并且因此在这里并不对纹理化处理进行更为详细的描述。
在纹理化单元308处对基元应用纹理化的结果是图像的像素值的集合。纹理化单元308可以包括一些用于将样本值转换为像素值的逻辑,其中该样本并不确切对应于像素(例如,在样本多于像素的情况下)。像素值从纹理化单元308输出并且存储在像素缓冲器310中。像素缓冲器310存储图像中能够随后以任意适当方式所使用的像素值,例如被输出至显示器或者存储在存储器中或者传送至另一个设备,等等。
控制模块316控制哪些像素由处理模块302进行处理以由此控制处理模块302在处理针对不同瓦片的基元之间的切换。为了控制处理模块302的切换,控制模块316能够向队列模块312发送控制信号由此选择队列314之一。备选地,控制模块316可以向后处理模块302发送控制信号,其指示处理模块302应当从队列314中的哪些进行读取。控制模块316可以以不同方式对流程控制进行管理,并且以上所建议的两种方法仅是作为示例被给出。来自所选择队列314的基元被发送至处理模块302基元的相关联的瓦片化数据(tilingdata)也被发送至处理模块302,而使得该基元能够如以上所描述地被处理。如图3中所示出的,控制模块316可以接收描述图形处理***300的状态的状态信息。控制模块316对队列314之一的选择可以基于该状态信息。该状态信息可以是与图形处理***300的状态相关的任意适当信息,其在控制模块316确定是否切换处理模块302的处理以便对不同瓦片的基元进行处理时可能是有用的。
例如,控制模块316可以从纹理化单元308接收指示纹理化引擎324之一空闲或者将要变为空闲的状态信息。在这种情况下,控制模块316可以使得当前与所指示的纹理化引擎324相关联的瓦片的基元处理优先化。这对于使得跨不同纹理化引擎324的平衡处理负载是有用的,例如由此在适当情况下避免一个纹理化引擎324无法被最大程度地加以利用的情形。在一个示例中,控制模块316所接收的状态信息包括与标签缓冲器320和纹理化引擎324之间的接口处的缓冲器(例如,FIFO)的状态相关的信息。标签缓冲器320可以一次性地冲刷许多基元标识符,并且纹理化引擎324可以一次一个地对它们进行处理,或者以小组进行处理。纹理化引擎因此可以缓冲多个基元标识符直至它们能够被安排由纹理化引擎所执行。当所缓冲的基元标识符的数量下降至零时,纹理化引擎没有更多工作可做并且变为空闲。控制模块316可以在尝试确保缓冲器永不或者很少为空时对基元的处理进行优先化。针对一个瓦片而使得基元的处理“优先化”可以意味着增加针对该瓦片的基元被选择由处理模块302进行处理的频率,或者如以下所描述的,在必须执行冲刷时优先选择与该瓦片相关联的标签缓冲器。
作为另一个示例,控制模块316例如可以从瓦片处理接收指示瓦片中由大量数据(例如,许多层基元)要进行处理的状态信息。在这种情况下,控制模块316可以被配置为通过确保队列314在较早时机被分配给该瓦片而使得针对该瓦片的基元处理优先化。通过如此,该***确保了其它瓦片能够被同时处理,由此提高了纹理化引擎的利用。
作为另一个示例,控制模块316例如可以从纹理化单元308或标签分类器模块306接收指示瓦片的处理已经停止的状态信息,例如由于等待对针对片外存储器的存储器访问请求进行响应。在这种情况下,控制模块316被配置为对所停止瓦片的基元处理去优先化。对瓦片的基元处理“去优先化”可以意味着降低该瓦片的基元被选择由处理模块302进行处理的频率。该状态信息可以包括多于一个的以上所描述的指示,并且在这种情况下,不同的优先化/去优先化的效果能够进行组合以便确定瓦片中的哪些应当被选择。
其它示例图形处理***可能并不包括控制模块316,并且可以以不同方式来确定选择基元中的哪些基元应当由处理模块302进行处理。例如,应当在处理模块302准备接收新的基元时随机定期选择队列314之一以向处理模块302提供基元。备选地,队列314应当均以一些模式轮流选择,例如根据循环方案。
因此能够意识到的是,图形处理***300允许多个瓦片处于“处理中”,其中处理模块302能够使用深度缓冲器318之一针对一个瓦片的基元执行HSR,同时不同的部分处理的瓦片的深度值被存储在深度缓冲器318中的不同深度缓冲器中。
可能出现许多基元处于瓦片内的特定样本位置而使得基元发生重叠的情形。这样的情形的示例在图5a中示出,为了清楚起见,其示出了小型瓦片500,其被划分为8×8的网格。在该示例中,每个网格方块对应于一个屏幕像素并且具有通常处于其中心的样本位置。如以上所描述的,不同的瓦片配置和采样模式都是可能的。图5a示出了存在覆盖整个瓦片500并且例如可以表示图像中的背景的基元502。在基元502之前(即,更接近于视点,并且因此在该示例中由更小的“深度”值所表示),有两个并不互相重叠的另外的基元504和506。在图5a中能够看到,基元504并不延伸至瓦片500之外,而基元506则延伸至瓦片500之外,例如延伸到位于瓦片500下方的另一个瓦片(图5a中未示出)中。在基元502、504和506之前是另一个基元508。另外,在基元508之前是另一个基元510。如果基元是完全非透明的,则最终的样本值将有每个样本位置处最接近的基元所确定。如果一些基元并非是完全非透明的(例如,它们具有一定透明度或者具有包括穿通纹理),则最终的样本值可以由该样本位置处的多于一个的基元的混合所确定。
如以上所描述的,如果仅使用一个标签缓冲器来存储瓦片内的基元的基元标识符,则当针对并非完全非透明的基元执行隐藏面消除时,已经处于标签缓冲器中的基元标识符将被冲刷以允许新处理的基元标识符被存储在标签缓冲器中。这导致了大量单独的冲刷操作,这与执行较少但是更大规模的冲刷操作相比效率较低,该执行较少但是更大规模的冲刷操作为非透明基元提供了更大的机会以隐藏之前所处理的基元,由此避免了对之前所处理的最终将在最终图像中被隐藏的基元执行不必要的进一步处理。图6示出了图形处理***600,其能够减少所执行的单独冲刷操作的数量。图形处理***600包括处理模块602、深度缓冲器604、标签分类器模块606、纹理化引擎608和像素缓冲器610。在图6所示的示例中,标签分类器模块606包括三个标签缓冲器6201至6203以及标签控制模块622。图6所示的图形处理***600的部件可以以硬件、软件或者其组合来实施。
图形处理***600的操作参考图7所示的流程图进行描述。在步骤S702中,处理模块602接收基元,该基元与所要渲染的场景的对象相关,并且例如可以从在与图形处理***600相同的设备(例如,移动用户设备)上运行的应用(例如,游戏)被发送至图形处理***600。在该示例中,基元涉及将在其中对基元进行处理的单个瓦片(例如,瓦片500)。与图3的***不同,图6的***并不支持“多个处理中瓦片”。因此,处理模块602必须接收指示应当对若干瓦片中的哪一个中的基元进行处理的瓦片数据。虽然图形处理***600被描述为具有被细分为多个瓦片的渲染空间,但是注意到,能够在并不具有被细分为多个瓦片—即仅具有一个瓦片—的渲染空间的其它示例中使用多个标签缓冲器以允许在标签分类器模块606中存储基元标识符的重叠的层。
在步骤S704,处理模块602通过将该基元的深度值与深度缓冲器604中所存储的深度值进行比较而针对瓦片500的基元执行隐藏面消除(HSR)。处理模块602针对基元所执行的HSR例如可以包括确定哪些样本位置处于基元内(基于基元的顶点位置),并且基于深度缓冲器604中所存储的深度值在这些样本位置执行深度测试。以这种方式,HSR确定标识出在瓦片500中的样本位置中的每个样本位置可见的基元的基元标识符。作为步骤S704的一部分,处理模块602可以对深度缓冲器604中所存储的一个或多个深度值进行更新。
三个标签缓冲器6201至6203形成被配置为针对瓦片中的样本位置中的每个样本位置存储基元标识符的标签缓冲器集合,由此存储在该集合中的标签缓冲器620中的相对应样本位置的基元标识符表示基元的重叠的层。
在步骤S706,标签控制模块622选择标签缓冲器620之一以便存储从处理模块602所输出的每个基元标识符,其标识出通过隐藏面消除而被确定为可见的基元。在一个示例中,根据已经存储在每个样本位置的标签缓冲器620中的基元标识符而针对基元在那里被确定为可见的每个样本位置来独立选择标签缓冲器620。在另一个示例中,处理模块602针对微型瓦片中的每个样本位置处的基元执行隐藏面消除。微型瓦片是可以针对其对基元并行执行隐藏面消除的通常为4×4个样本位置的群组。在这种情况下,可以意识到选择一个标签缓冲器存储微型瓦片中被确定为可见的基元片段的所有基元标识符。在第三示例中,选择一个标签缓冲器来存储瓦片中被确定为可见的基元的所有片段的基元标识符,而另一个标签缓冲器则可以被选择以存储该瓦片中被确定为可见的另一个基元的所有片段的基元标识符。因此,在第三示例中,用于存储基元的基元标识符的标签缓冲器的选择以整个瓦片的规模来执行,而不是以微型瓦片的规模或者个体样本的规模来执行。
在步骤S708,被HSR针对样本位置中的每个样本位置确定为可见的片段的基元标识符被存储在相对应的(多个)所选择标签缓冲器中。
图5a和5b图示了针对每个样本位置独立选择标签缓冲器的示例。参考图5a,样本位置的一个列由箭头512所指示。作为示例,基元502是非透明的,而瓦片500中的其它基元(基元504、506、508和510)则全部是透明的。图5b示出了标签缓冲器6201的列5141,标签缓冲器6202的列5142,以及标签缓冲器6203的列5143。5141至5143中的每一列被配置为针对图5a中所示的列512中所示的基元存储基元标识符。能够意识到的是,基元502至510在列512内的一些样本位置有所重叠。图5b示出了处于附图左侧的视点,而使得能够看到在图5b所示的示例中,针对每个样本位置,标签缓冲器6201的列5141被配置为存储比标签缓冲器6202的列5142被配置为针对其存储基元标识符的重叠基元更远的基元的基元标识符,上述重叠基元自身又比签缓冲器6203的列5143被配置为针对其存储基元标识符的重叠基元更远。以这种方式,标签缓冲器620表示不同样本位置处的基元的重叠层。
在一个示例中,基元502的基元标识符在图5a中所示的其它基元的基元标识符之前在标签分类器模块606处被接收。基元502是非透明的并且覆盖了瓦片500的所有样本位置。因此,其将会隐藏之前已经针对瓦片502而接收的比基元502更远(例如,具有比基元502更大的深度值)的任意基元(注意到,在其它示例中,深度值可以被定义为使得较远的基元具有较小的深度值)。基元502的基元标识符因此可以在所有样本位置被存储在标签标识符6201中。因此,标签控制模块622选择标签缓冲器6201,标签缓冲器6201在该示例中是存储基元的最远分层的基元标识符的标签缓冲器620之一。这在图5b中示出,其中基元标识符针对基元502被存储在标签缓冲器6201的列5141中。标签分类器模块606随后可以针对下一个基元504(其是透明的)接收基元标识符并且将确定标签缓冲器6201在基元504所覆盖的样本位置是满的,并且将因此选择下一个层(即缓冲器6202)来存储基元504的基元标识符。这在图5b中示出,其中基元标识符针对基元504被存储在标签缓冲器6202的列5142中。
标签分类器模块606随后可以针对下一个基元506(其是透明的)接收基元标识符并且其将确定标签缓冲器6201在基元506所覆盖的瓦片500中的样本位置是满的,并且因此将选择下一个层(即缓冲器6202)来存储瓦片500中的基元506的基元标识符。注意到,基元506并不与基元504重叠并且因此基元504和506的基元标识符能够被存储在相同的标签缓冲器6202中。这在图5b中示出,其中基元标识符针对基元506被存储在标签缓冲器6202的列5142中。
标签分类器模块606随后可以针对下一个基元508(其是透明的)接收基元标识符并且其将确定标签缓冲器6201在基元508所覆盖的样本位置是满的。标签缓冲器6202可用于基元508的一些样本位置,但是标签缓冲器6202并不可用于基元508的一些其它样本位置。在图5b所示的示例中,基元标识符5082在空间可用的位置被存储在标签缓冲器6202的列5142中。在标签缓冲器6202中的空间不可用的位置,基元标识符5081和5083被存储在标签缓冲器6203的列5143中。也就是说,标签控制模块622以每个样本位置为基础来选择用于存储基元标识符的标签缓冲器620。
标签分类器模块606随后可以针对下一个基元510(其是透明的)接收基元标识符并且其将确定标签缓冲器6201、6202和6203在基元510所覆盖的样本位置都不可用于列512。这在图5b中进行表示。因此,为了在标签缓冲器中存储基元510的基元标识符,对一个标签缓冲器进行冲刷。也就是说,在步骤S710,基元标识符从一个或多个标签缓冲器620被冲刷。标签控制模块622控制标签缓冲器620的冲刷。当基元标识符从标签缓冲器620被冲刷时,它们在纹理化引擎608处被接收。标签缓冲器620的冲刷将使得该标签缓冲器620可用从而基元510的基元标识符随后能够被存储在可用标签缓冲器620中。
在另一个示例中,标签控制模块622选择标签缓冲器620来存储与特定微型瓦片相关的基元的所有基元标识符,而使得针对微型瓦片中的每个微型瓦片而言,如果该微型瓦片内的所有样本位置都在一层中可用,则该基元的基元标识符被存储在对应于该层的标签缓冲器中。然而,如果并非微型瓦片内的所有样本位置都在该层中可用的情形,则该基元的基元标识符被存储在下一层中。图5c示出了与图5a中相同的瓦片500、样本位置512的列以及非透明的背景基元502。图5d分别示出了标签缓冲器6201、6202和6203的列5141、5142和5143,其中列5141包含对应于基元502的基元标识符。线条530和532将瓦片500划分为四个微型瓦片,每个均包含16个样本位置。类似地,线条532将列514划分为对应于样本位置512的列所相交的两个微型瓦片的上和下部分。
在该示例中,标签分类器模块606可以接收基元520(其是透明的)基元标识符。标签缓冲器6201已经包含了非透明基元502的基元标识符,因此标签控制模块622选择标签缓冲器6202来存储基元520的基元标识符。这在图5d中示出,其中基元标识符针对基元520被存储在标签缓冲器6202的列5142中。
标签分类器模块606随后可以接收下一个基元522(其是透明的)的基元标识符。在这种情况下,基元522的基元标识符的一部分5221被存储在标签缓冲器6202的列5142中,因为相关微型瓦片内的所有样本位置在标签缓冲器6202中都是可用的,而基元522的基元标识符的部分5222则被存储在标签缓冲器6203的列5143中,因为并非是相关微型瓦片内的所有样本位置在标签缓冲器6202中都可用的情形。一般而言,针对每个微型瓦片,微型瓦片内的样本位置的基元标识符被存储在可用于该微型瓦片内的所有样本位置的标签缓冲器所表示的最远层中。也就是说,步骤S706中的选择包括针对一个或多个样本位置(即,针对微型瓦片)的块选择对应于重叠层的最远可用层的一个标签缓冲器620。在其它示例中,针对每个微型瓦片,该微型瓦片内的样本位置的基元标识符被存储在可用于该微型瓦片内的基元标识符所覆盖的样本位置中的所有样本位置的标签缓冲器所表示的最远层中。也就是说,步骤S706中的选择可以包括针对一个或多个样本位置(即,针对微型瓦片)的块内的基元标识符选择对应于重叠层的最远可用层的标签缓冲器620中的一个标签缓冲器。
在步骤S712,纹理化引擎608对被冲刷的基元标识符所标识的基元应用纹理化和阴影化。纹理化以以上关于步骤S408所描述的相对应的方式来执行。也就是说,纹理化引擎608(例如,从存储器)获取纹理数据和所标识的基元并且将该纹理数据应用于被冲刷的基元标识符所标识的基元。如以上所描述的,在纹理化单元608向基元应用纹理化的结果是图像的像素值的集合。该像素值从纹理化单元608输出并且被存储在像素缓冲器610中。像素缓冲器610存储图像的像素值,该像素值随后能够以任意的方式被使用,例如输出至显示器或者存储在存储器中或者被传送至另一个设备,等等。
在以上详细描述的示例中,针对基元标识符选择标签缓冲器是针对每个个体样本位置执行,或者以微型瓦片的规模来执行,例如针对对应于一个微型瓦片的4×4的样本位置块执行。然而,在其它示例中,对标签缓冲器的选择可以以其它规模执行,例如针对不同大小和/或形状的样本位置块执行。选择更大的规模可能有助于减少多个阶段中出现的冲刷基元,而这在基元标识符的不同部分被存储在不同层中的时候可能发生。然而,选择更大的规模减少了对标签缓冲器的层内的间隙进行填充的机会。因此,在设置块的规模时要考虑权衡。
当标签缓冲器620之一要被冲刷时,标签控制模块622基于冲刷策略确定要冲刷标签缓冲器中的哪个标签缓冲器。例如,该冲刷策略可以是在冲刷另一个标签缓冲器620之前冲刷包含最远层的基元标识符的标签缓冲器620(例如,以上所描述示例中的标签缓冲器6201)。作为另一个示例,冲刷策略可以是在冲刷另一个标签缓冲器620之前冲刷包含最多基元标识符的标签缓冲器(即,最满的标签缓冲器)。标签控制模块622可以对从标签缓冲器620冲刷基元标识符进行控制而使得每次仅从一个标签缓冲器620冲刷基元标识符。可替换地,标签控制模块622可以对从标签缓冲器620冲刷基元标识符进行控制而使得同时从多个标签缓冲器620冲刷基元标识符。在渲染的正确表现取决于基元被渲染的顺序的情况下,冲刷策略应当被选择为对此加以保留。注意到,当基元标识符如图5b和5d中所示被存储在多个标签缓冲器中时,分层反映了基元标识符被标签分类器模块606所接收的顺序而不是基元的深度。因此,多个标签缓冲器能够保留顺序。
图6示出了在存在三个标签缓冲器620的情况下可以如何布置图形处理***的示例。在其它示例中,图形处理***中可以有两个或者多于三个的标签控制器,它们被配置为存储瓦片内的基元的不同分层的基元标识符。
使用多个标签缓冲器620来表示基元的重叠的层的优势在于有时被写入到标签缓冲器的基元标识符可能标识出随后被发现由于处理模块602所执行的HSR而被其它基元所隐藏的基元。在这种情况下,使用多个标签缓冲器能够减少被冲刷到纹理化引擎608的基元标识符的数量。例如,如果在图5a所示的示例中仅使用了一个标签缓冲器,则基元502的基元标识符本来将会响应于针对透明基元504的基元标识符到达而被冲刷到纹理化引擎。如果所要处理的下一个基元是非透明的并且处于基元502和504之前,则基元502和504可能被完全或部分隐藏并且因此基元502和504的被隐藏部分将无需被纹理化。通过使用多个标签缓冲器620,基元502的基元标识符将不会响应于基元504的基元标识符到达标签分类器模块606而被冲刷到纹理化引擎608中,因为基元504的基元标识符能够被写入到第二标签缓冲器6202。因此,在标签分类器模块606接收到覆盖基元502和504的非透明基元的基元标识符时不会进行冲刷。在这种情况下,基元502和504的基元标识符能够被分别在标签缓冲器6201和6202中进行重写,其中它们无需被纹理化。以这种方式,能够减少对最终被其它基元所隐藏的基元片段进行不必要的纹理化。
以上所描述的两种思想允许通过使用多个深度缓冲器而允许给定时间有多个瓦片处于处理之中,并且允许要存储在多个标签缓冲器中的基元标识符的重叠层能够进行合并以提供非常灵活的图形处理***。
图8示出了图形处理***800,其组合了以上所描述并且分别在图3和6中示出的图形处理***300和600的特征。特别地,图形处理***800包括与图形处理***300相同的一些部件并且这些部件在图8中利用相同的参考标号示出。也就是说,图形处理***800包括队列模块312,其包括四个队列3141至3144;处理模块302;深度缓冲器3181至3144的模块304;包括四个纹理化引擎3241至3244以及像素缓冲器310的纹理化单元308。这些部件如以上关于图形处理***300所描述的那样进行操作。图8中所示的图形处理***800的所有部件可以以硬件、软件或者其组合来实现。
如以下更为详细描述的,图形处理***800包括控制模块816,类似于图形处理***300的控制模块316但并非与之完全相同。此外,图形处理***800包括标签分类器模块806,其与图形处理***300的标签分类器模块306并不相同。标签分类器模块806包括便签控制模块822以及八个标签缓冲器8201至8208。以这种方式,存在比深度缓冲器318更多的标签缓冲器820,如以上参考图形处理***600关于一个瓦片所描述的,因此有多于一个的标签缓冲器820能够被用来存储特定瓦片的基元的基元标识符的重叠的层。因此能够看到,八个标签缓冲器820的群组以及图形处理***800(特别是标签控制模块822)被配置为将八个标签缓冲器820中的一个或多个的相应集合动态地与每个深度缓冲器318相关联。就其能够被改变以适应图形处理***800的当前要求的意义而言,标签缓冲器与深度缓冲器的关联(其对应于标签缓冲器与被处理瓦片的关联)被动态执行。
例如,当覆盖样本位置的基元的基元标识符在标签分类器模块806被接收时,如果当前与特定瓦片相关联的集合中没有标签缓冲器820在该样本位置可用,则标签控制模块822能够将可用标签缓冲器添加至与该瓦片相关联的标签缓冲器的集合。集合中的附加标签缓冲器820表示该瓦片新的基元分层,并且基元标识符能够存储在表示新的分层的附加标签缓冲器中。
如果(以与以上所给出的示例中相同的方式)基元标识符要在样本位置被存储到与特定瓦片相关联的标签缓冲器集合中的标签缓冲器,但是该集合中没有标签缓冲器在该样本位置可用,并且如果(不同于以上所给出的示例)标签缓冲器的群组(8201至8208)中没有可用的标签缓冲器,则标签控制模块822可以从标签缓冲器8201至8208之一冲刷基元标识符由此使得该标签缓冲器可用,而使得基元标识符能够存储在该可用标签缓冲器中。被选择进行冲刷的标签缓冲器可以是当前是与该瓦片相关联的标签缓冲器集合的成员的标签缓冲器。通过冲刷与一个瓦片相关联的标签缓冲器,并且随后将所冲刷的标签缓冲器重新与不同瓦片相关联,该标签缓冲器被移动至不同的集合。
可能存在能够包括在与瓦片相关联的标签缓冲器820的一个集合之中的标签缓冲器820的最大数量。例如,标签控制模块822可能不会将多与四个的标签缓冲器820与任何给定瓦片相关联。
对象在场景内的分布可能为一些瓦片包含透明对象而其它则并非如此。在包含透明对象的那些瓦片中,场景的复杂度即透明层的数量可能在相当程度上有所变化。标签缓冲器820和瓦片之间的关联的灵活性允许标签缓冲器820被用来最佳地适应图形处理***800的当前需求。
如在以上所描述的图形处理***300中,被冲刷的基元标识符被送至纹理化单元308。纹理化引擎3241至3244之一对所冲刷的基元标识符所标识的基元应用纹理化和阴影化。如以上所描述的,纹理化引擎324取回纹理数据和所标识的基元(例如,从存储器)并且将该纹理数据应用于所冲刷的基元标识符所标识的基元。在图8所示的示例中有四个纹理化引擎3241至3244,即存在与深度缓冲器318相同数量的纹理化引擎,并且在这种情况下,每个纹理化引擎与相应瓦片相关联而使得应用于特定瓦片的基元的所有纹理化都由相同的纹理化引擎308所执行。如以上所描述的,这可以在有多个处理中瓦片的情况下提高对基元进行纹理化的效率。如以上所描述的,纹理化单元308输出图像的像素值的集合,其随后被存储在像素缓冲器310中。在其它示例中,纹理化引擎324的数量可能与深度缓冲器的数量不同,并且在这种情况下,每个纹理化引擎可能并不与相应瓦片相关联。
如以上所提到的,控制模块816类似于图形处理***300的控制模块316。然而,控制模块816可以进一步基于标签缓冲器802的集合中与不同瓦片相关联的标签缓冲器的数量来控制哪些基元由处理模块302进行处理,以由此控制处理模块302在处理针对不同瓦片的基元之间进行切换。例如,如果大量标签缓冲器820与特定瓦片相关联,则控制模块916可以控制队列模块312以对该瓦片的基元的输出进行优先化。拥有与瓦片相关联的大量标签缓冲器820可以允许图形处理***800更为有效地针对该瓦片处理基元,并且因此控制模块816可以控制处理模块302以优先处理来自该瓦片的基元。
图9a和9b示出了在一个示例中标签控制模块822可以通过其对标签缓冲器的选择进行控制以便存储传入的瓦片的基元标识符以及冲刷标签缓冲器的方法的流程图。
最初,并没有标签缓冲器与瓦片相关联。在步骤904,接收基元ID的集合。这些基元ID对应于单个基元,并且根据基元已经被确定为可见的位置而对应于瓦片内的样本位置。基元可以是非透明的或透明的。在步骤906,根据基元是非透明的还是透明的进行决策,并且如果该基元并不是透明的(即,如果是非透明的),则在步骤908进行清空处理。步骤908将在下文中进一步进行描述。在初始情况下,没有分配标签缓冲器,步骤908就没有效果。在步骤910,标签控制模块822搜索要在其中存储基元ID的标签缓冲器。框910内的处理随后在图9b中更为详细的进行描述。在步骤912,对搜索处理910的结果进行测试。如果搜索成功并且找到了标签缓冲器,则流程进行至步骤914,并且基元ID被存储在所找到的标签缓冲器中。然而,在初始情况下与瓦片相关联的集合中并没有标签缓冲器,并且因此搜索910将无法找到适当的标签缓冲器。在这种情况下,该流程进行至将尝试将新的标签缓冲器添加至与该瓦片相关联的集合的系列步骤。步骤918测试标签缓冲器的集合是否已经为预定的最大大小,并且步骤920进行检查以查看是否存在当前并未与瓦片相关联的可用缓冲器。在初始情况下,流程将进行至步骤922,其中空闲的标签缓冲器将被添加到与瓦片相关联的集合。基元ID随后在步骤914中被存储在标签缓冲器中。在步骤916,进行测试以确定是否还有基元有待处理。相应地,流程或者进行至步骤904以便接收另外的基元ID,或者进行至其中所有缓冲器都被冲刷(以从后往前的顺序)的步骤926,并且该处理结束。
步骤910的子处理在图9b中示出。注意到,为了便于解释,图9a和9b图示了其中以整个瓦片的规模而不是以微型瓦片的规模或者个体样本的规模来执行对用于存储基元的基元标识符的标签缓冲器的选择的***。如本领域技术人员将会显而易见的,标签缓冲器以每个像素或者每个微型瓦片进行选择的示例可以使用对这里所描述的技术的直接修改来实施。该处理在952开始,并且在954进行测试以确定分配给瓦片的标签缓冲器的集合是否为空。如果该集合为空,则该子处理在964结束并且报告没有找到缓冲器。当集合包含至少一个缓冲器时,该处理根据基元是非透明的还是透明的而有所不同。这在956进行测试,并且在非透明基元的简单情况下,该子处理在966结束并且报告尾端缓冲器—即表示距观看者最远的层的标签缓冲器—可用于存储基元ID。其余步骤在步骤956标识该基元为透明的时使用。在这种情况下,该子处理的目标是以从前往后的顺序搜索标签缓冲器并且报告可能在其中存储基元ID的最后面的层。在958,变量P和C分别表示之前和当前的标签缓冲器。C被初始化以指示最前方的缓冲器。P将指示比C更接近前方一层的缓冲器,然而,由于没有更接近的缓冲器,则P以指示没有缓冲器的值进行初始化。在960,进行测试以确定是否所有基元ID都能够被存储在C所指示的缓冲器中。该处理在发现基元ID无法存储在C中时结束,因为此时认为P所指示的缓冲器必然是可能在其中存储基元ID的最为靠后的层。步骤962返回缓冲器P的标识。在针对最前方的层的测试失败的情况下,P的值将由于在步骤958中对P进行初始化的方式而直接指示没有找到缓冲器。如果该处理并未结束,即基元ID能够被存储在缓冲器C中,则该处理继续进行至步骤968,其确定是否有另一个表示比当前缓冲器C更深的层的缓冲器。如果没有,则C是最后面的缓冲器,并且基元ID可以被存储在其中,从而在970返回缓冲器C的标识。如果存在另一个缓冲器,则步骤972通过后退一个步骤而对P和C进行调节,而使得C存储当前缓冲器的标识,而C存储紧接在当前缓冲器之后的缓冲器的标识。流程返回至步骤960的测试,其中执行测试以查看基元ID是否能够被存储在C目前所表示的缓冲器中。
返回图9a,子处理910的结果在912进行测试以确定是否找到了适当的缓冲器。如果找到了缓冲器,则基元ID在步骤914中被存储于其中。当没有找到缓冲器时,使用步骤918-922来向集合分配新的标签缓冲器,并且步骤914随后将基元ID存储在新的缓冲器中。通常,新的缓冲器从空闲缓冲器的池进行分配。然而,可能并不期望与一个瓦片相关联的缓冲器集合没有限制地进行增长,特别是在例如图8所示的与若干其它瓦片共享缓冲器池的情况下。步骤918中的测试可以被用来限制集合中的缓冲器数量,并且通过将流程指向步骤924而使得最后面的缓冲器被冲刷(即,该缓冲器的内容被发送至纹理化和阴影化单元308)。被冲刷的缓冲器随后可以进行循环并且作为新的缓冲器在步骤922中被添加至该集合。在另一种情况中,空闲缓冲器的池可以为空,例如缓冲器已经被分配给与其它瓦片相关联的集合。这由步骤920中的测试所检测。同样,流程在缓冲器被冲刷以创建新的空闲缓冲器时被指向步骤924。在流程从步骤920而不是步骤918到达步骤924时,被选择进行冲刷的缓冲器可能是与关联于当前瓦片的集合不同的集合的成员。也就是说,假设允许对集合进行扩展,则集合可以通过冲刷以及从另一集合转移缓冲器而被扩展。以这种方式,在控制模块816和/或标签分类器控制模块822的控制下,标签缓冲器可以根据***的要求进行灵活分配。
当在步骤906标识到非透明基元时,步骤908执行清空操作。标签分类器仅接收已经通过深度测试的片段的基元ID。因此得知非透明基元ID必然处于已经处理过的任何其它非透明或透明基元之前、并且因此将挡住它们。非透明对象的基元ID因此可以始终被存储在最后面的标签缓冲器中。子处理910的步骤956和966将标识出非透明对象并且返回最后面的缓冲器的标识。步骤908在对应于非透明基元ID的位置针对已经存储在任意缓冲器层中的任何透明对象冲刷基元ID。这具有使得层结果扁平化的效果,确保了透明片段不会不必要或不正确地被渲染。可选地,步骤308可以确定清理过程留下了完全为空的标签缓冲器,并且将空的层返回空闲缓冲器的池。
如以上所描述的,穿通基元以两个环节进行渲染。在第一环节中,在已经对透明度进行评估之前,穿通基元的基元ID可以向针对透明基元那样进行处理。在第二环节中,穿通基元ID对应于对象中已知为非透明的部分。因此,在第二环节中,穿通基元的基元ID可以向针对非透明基元那样进行处理。
以上详细描述的示例涉及到在标签分类器模块接收透明基元的基元标识符。相同的原则可以在接收到具有包括穿通的纹理的基元的基元ID时使用。
这里所描述的方法可以通过运行适于执行方法的步骤的适当计算机可读代码来实施。此外,这里所描述的图形处理***可以通过运行适当的计算机可读代码而生成。该计算机可读代码可以在计算机可读存储介质上进行编码。
通常,以上所描述、任意功能、方法、技术或组件能够使用软件、固件、硬件(固定逻辑电路)或者这些实施方式的任意组合以模块来实施。术语“模块”、“功能”、“组件”、“块”、“单元”和“逻辑”在这里被用来总体上表示软件、固件、硬件或者其任意组合。
在软件实施方式的情况下,模块、功能、组件、块、单元或逻辑表示当在处理器(例如,一个或多个CPU)上执行时实施具体任务的程序代码。在一个示例中,所描述的方法可以由利用存储在计算机可读介质上的机器可读形式的软件进行配置的计算机来执行。一种这样的计算机可读介质的配置是信号承载介质,并且因此被配置为诸如经由网络而向计算设备传送指令(例如,作为载波)。计算机可读介质还可以被配置为计算机可读存储介质并且因此并不是信号承载介质。计算机可读存储介质的示例包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令和其它数据并且能够被机器访问的其它存储器设备。
软件可以为包括用于对计算机进行配置以执行所描述的方法的组成部分的计算机程序代码的计算机程序的形式,或者为包括适于在程序在计算机上运行时并且在计算机程序可以体现于计算机可读介质上的情况下执行这里所描述的任意方法的所有步骤的计算机程序代码工具的计算机程序的形式。程序代码可以存储在一个或多个计算机可读媒体上。这里所描述的特征是独立于平台的,这意味着该技术可以在具有各种处理器的各种计算平台上实施。
本领域技术人员还将意识到的是,所有或部分的功能、技术或方法可以由专用电路、应用特定集成电路、可编程逻辑阵列、现场可编程门阵列等来实施。例如,模块、功能、组件或逻辑可以包括电路形式的硬件、这样的电路可以包括晶体管和/或制造过程中可用的其它硬件部件。这样的晶体管和/或其它部件可以被用来形成实施和/或包含存储器的电路或结构,作为示例,诸如寄存器、触发电路或锁存器、逻辑运算器,诸如布尔运算、数学运算器、诸如加法器、乘法器或移位器。这样的部件可以作为定制电路或标准单元库、宏或者其它抽象级别来提供。这样的部件可以以具体部署形式进行互连。模块、功能、组件或逻辑可以包括固定功能的电路以及能够进行编程而执行一种或多种功能的电路;这样的编程可以通过固件或软件更新来提供或者通过控制机制来提供。在一个示例中,硬件逻辑具有实施固定功能操作、状态机或处理的电路。
还意在涵盖“描述”或定义实施以上所描述的模块、功能、组件或逻辑的硬件的配置的软件,诸如用于设计集成电路或者用于配置可编程芯片以执行所期望功能的HDL(硬件描述语言)软件。也就是说,可以提供具有在其上进行编码的计算机可读程序代码以便生成被配置为执行这里所描述的任意方法的处理单元或者生成包括这里所描述的任意装置的处理单元的计算机可读存储介质。
术语“处理器”和“计算机”在这里被用来指代具有处理能力而使得其能够执行指令的任意设备或其部分,或者能够执行全部或部分功能或方法或者它们的任意组合的专用电路。
虽然已经以特定于结构特征和/方法逻辑动作的语言对主题进行了描述,但是所要理解的是,所附权利要求中所限定的主题并非必然被局限于以上所描述的具体特征或动作。相反,以上所描述的具体特征和动作作为实施权利要求的示例形式被公开。将要理解的是,以上所描述的益处和优势可能涉及到一个示例并且可以涉及到若干示例。
如本领域技术人员将会显而易见的,这里所给出的任意范围或值可以进行扩展或改变而并不失所寻求的效果。例如,以上所描述的示例中所给出的具体数字(类如,标签缓冲器、深度缓冲器、队列、纹理化引擎、瓦片、瓦片内的微型瓦片,以及微型瓦片内的样本位置)仅是作为示例被给出。这里所描述的啊犯法的步骤可以以任意适当顺序执行或者在适当的情况下同时执行。以上所描述的任意示例的各方面可以与所描述的任意其它示例的方面进行组合以形成另外的示例而并不失所寻求的效果。

Claims (20)

1.一种图形处理***,其具有包括一个或多个瓦片的渲染空间,所述图形处理***包括:
处理模块,其被配置为接收要针对瓦片进行处理的基元,其中所述处理模块被配置为针对所述瓦片的基元执行隐藏面消除以确定标识在所述瓦片中的多个样本位置中的每个样本位置可见的基元的基元标识符;
两个或更多标签缓冲器的集合,其被配置为存储针对所述瓦片中的所述样本位置中的每个样本位置所确定的所述基元标识符,其中在所述集合的所述标签缓冲器中相对应的样本位置处所存储的基元标识符表示基元的重叠的层;
标签控制模块,其被配置为控制:(i)对用于存储标识通过所述隐藏面消除而被确定为可见的基元的所述基元标识符中的每个基元标识符的标签缓冲器的选择,其中对标签缓冲器的所述选择根据存储于所述标签缓冲器中的、一个或多个样本位置的块中的所述一个或多个样本位置处的所述基元标识符所标识的所述基元的分层而针对该块进行;以及(ii)从所述标签缓冲器的集合中的一个或多个标签缓冲器冲刷基元标识符;以及
纹理化引擎,其被配置为接收所冲刷的基元标识符并且对由所冲刷的基元标识符所标识的所述基元应用纹理化。
2.根据权利要求1的图形处理***,其中所述标签控制模块被配置为针对一个或多个样本位置的所述块来控制对标签缓冲器的所述选择,以由此针对一个或多个样本位置的所述块来选择对应于所述重叠的层的最远可用层的所述标签缓冲器。
3.根据权利要求1或2的图形处理***,其中所述标签控制模块被配置为基于冲刷策略而确定哪些标签缓冲器被冲刷。
4.根据权利要求3的图形处理***,其中依据所述冲刷策略,所述标签控制模块被配置为:(i)确定包含所述最远层的基元标识符的所述标签缓冲器将在冲刷另一个标签缓冲器之前被冲刷,或者(ii)确定最满的标签缓冲器将在冲刷另一个标签缓冲器之前被冲刷。
5.根据之前任一项权利要求的图形处理***,其中所述标签控制模块被配置为控制基元标识符从所述标签缓冲器的所述冲刷,而使得(i)每次仅来自一个标签缓冲器的基元标识符被冲刷,或者(ii)来自多个标签缓冲器的基元标识符被同时冲刷。
6.根据之前任一项权利要求的图形处理***,进一步包括深度缓冲器,其被配置为针对所述瓦片内的每个样本位置存储深度值,其中所述处理模块被配置为通过将所述瓦片的所述基元的深度值与所述深度缓冲器中所存储的深度值相比较而针对所述瓦片的所述基元执行所述隐藏面消除。
7.根据之前任一项权利要求的图形处理***,其中所述渲染空间被细分为多个瓦片,并且其中所述图形处理***包括多个深度缓冲器,所述深度缓冲器中的不同的深度缓冲器被配置为针对不同的瓦片存储深度值,
并且其中所述图形处理***包括三个或更多标签缓冲器的群组,并且其中所述图形处理***被配置为动态地将来自所述群组的一个或多个所述标签缓冲器的相应集合与所述瓦片中的每个瓦片相关联。
8.根据权利要求7的图形处理***,其中所述标签控制模块被配置为使得如果基元标识符将要被存储在与特定瓦片相关联的标签缓冲器的所述集合中的标签缓冲器中的样本位置处、但是所述集合中没有所述标签缓冲器在所述样本位置处可用,则所述标签控制模块将来自标签缓冲器的所述群组的可用标签缓冲器添加到与所述特定瓦片相关联的标签缓冲器的所述集合。
9.根据权利要求7的图形处理***,其中一个或多个样本位置的所述块包括多个样本位置,并且其中所述标签控制模块被配置为使得如果基元标识符将要在特定块的一个或多个样本位置被存储在与特定瓦片相关联的标签缓冲器的所述集合中的标签缓冲器中、但是所述集合中没有所述标签缓冲器在所述特定块内的所述一个或多个样本位置的所有样本位置处可用,则所述标签控制模块将来自标签缓冲器的所述群组的可用标签缓冲器添加到与所述特定瓦片相关联的标签缓冲器的所述集合。
10.根据权利要求7的图形处理***,其中所述标签控制模块被配置为使得如果基元标识符将要被存储在与特定瓦片相关联的标签缓冲器的所述集合中的标签缓冲器中的样本位置处、但是所述集合中没有所述标签缓冲器在所述样本位置处可用,并且如果在标签缓冲器的所述群组中没有可用的标签缓冲器,则所述标签控制模块从所述群组中的所述标签缓冲器之一冲刷所述基元标识符,由此使得该标签缓冲器可用,从而所述基元标识符能够被存储在所述可用的标签缓冲器中。
11.根据权利要求7的图形处理***,其中一个或多个样本位置的所述块包括多个样本位置,并且其中所述标签控制模块被配置为使得如果基元标识符将要在特定块的一个或多个样本位置处被存储在与特定瓦片相关联的标签缓冲器的所述集合中的标签缓冲器中、但是所述集合中没有所述标签缓冲器在所述特定块内的所述一个或多个样本位置中的所有样本位置处可用,并且如果在标签缓冲器的所述群组中没有可用的标签缓冲器,则所述标签控制模块从所述群组中的所述标签缓冲器之一冲刷所述基元标识符,由此使得该标签缓冲器可用,从而所述基元标识符能够被存储在所述可用的标签缓冲器中。
12.根据权利要求7至11中任一项的图形处理***,其中存在能够被包括在与瓦片相关联的标签缓冲器的所述集合中的一个集合之中的标签缓冲器的预定最大数量。
13.根据权利要求7至12中任一项的图形处理***,包括多个纹理化引擎,所述纹理化引擎中的每个纹理化引擎被配置为向从与所述瓦片相关联的一个或多个标签缓冲器的所述集合冲刷的基元标识符所标识的瓦片的所述基元应用纹理化。
14.根据权利要求13的图形处理***,其中所述图形处理***被配置为将与特定瓦片相关联的标签缓冲器的集合中的所述基元标识符中的所有基元标识符发送至相同的纹理化引擎,而使得被应用于所述特定瓦片的所述基元的所有所述纹理化都由所述相同的纹理化引擎所应用。
15.根据权利要求7至14中任一项的图形处理***,其被配置为控制哪些基元由所述处理模块进行处理以由此控制所述处理模块在针对不同瓦片而处理基元之间进行切换。
16.一种在图形处理***中处理基元的方法,所述图形处理***具有包括一个或多个瓦片的渲染空间,所述方法包括:
针对瓦片的基元执行隐藏面消除以确定标识在所述瓦片中的多个样本位置中的每个样本位置可见的基元的基元标识符;
从两个或更多标签缓冲器的集合中选择用于存储标识通过所述隐藏面消除而被确定为可见的基元的所述基元标识符中的每个基元标识符的标签缓冲器,其中在所述集合的所述标签缓冲器中相对应的样本位置处所存储的基元标识符表示基元的重叠的层,并且其中对标签缓冲器的所述选择根据在一个或多个样本位置的块中的所述一个或多个样本位置处、存储于所述标签缓冲器中的所述基元标识符所标识的所述基元的分层而针对所述块进行;
将通过所述隐藏面消除针对所述样本位置中的每个样本位置确定为可见的所述基元标识符存储在相对应的所选择的标签缓冲器中;
从标签缓冲器的所述集合中的一个或多个标签缓冲器冲刷基元标识符;以及
对冲刷的所述基元标识符所标识的所述基元应用纹理化。
17.根据权利要求16的方法,其中所述选择标签缓冲器包括针对一个或多个样本位置的所述块来选择对应于所述重叠的层的最远可用层的所述标签缓冲器。
18.根据权利要求16或17的方法,进一步包括基于冲刷策略而确定哪些标签缓冲器被冲刷,其中所述基于冲刷策略确定哪些标签缓冲器被冲刷包括(i)确定包含所述最远层的基元标识符的所述标签缓冲器将在冲刷另一个标签缓冲器之前被冲刷,或者(ii)确定最满标签缓冲器将在冲刷另一个标签缓冲器之前被冲刷。
19.根据权利要求16至18中任一项的方法,其中所述渲染空间被细分为多个瓦片,并且其中存在多个深度缓冲器,所述深度缓冲器中的不同的深度缓冲器被配置为针对不同的瓦片存储深度值,并且其中存在三个或更多标签缓冲器的群组,所述方法进一步包括动态地将来自所述群组的一个或多个所述标签缓冲器的相应集合与所述瓦片中的每个瓦片相关联。
20.一种计算机可读存储介质,其具有编码在其上的以下至少一项:(i)用于生成根据权利要求1至15中任一项的图形处理***的计算机可读代码,和(ii)计算机可读代码,其适于在所述代码在计算机上运行时执行根据权利要求16至19中任一项的方法的步骤。
CN201410773381.7A 2013-12-13 2014-12-12 图形处理***中的基元处理 Active CN104715502B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910328773.5A CN110097621B (zh) 2013-12-13 2014-12-12 图形处理***和在图形处理***中处理基元的方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1322042.1 2013-12-13
GB1322042.1A GB2520366B (en) 2013-12-13 2013-12-13 Primitive processing in a graphics processing system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201910328773.5A Division CN110097621B (zh) 2013-12-13 2014-12-12 图形处理***和在图形处理***中处理基元的方法

Publications (2)

Publication Number Publication Date
CN104715502A true CN104715502A (zh) 2015-06-17
CN104715502B CN104715502B (zh) 2019-06-28

Family

ID=50030864

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201410773381.7A Active CN104715502B (zh) 2013-12-13 2014-12-12 图形处理***中的基元处理
CN201910328773.5A Active CN110097621B (zh) 2013-12-13 2014-12-12 图形处理***和在图形处理***中处理基元的方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910328773.5A Active CN110097621B (zh) 2013-12-13 2014-12-12 图形处理***和在图形处理***中处理基元的方法

Country Status (4)

Country Link
US (4) US9747660B2 (zh)
CN (2) CN104715502B (zh)
DE (1) DE102014018565A1 (zh)
GB (1) GB2520366B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112116519A (zh) * 2019-06-19 2020-12-22 畅想科技有限公司 图形处理***中的粗略深度测试
CN113744121A (zh) * 2020-05-28 2021-12-03 想象技术有限公司 任务合并

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2520366B (en) 2013-12-13 2015-12-09 Imagination Tech Ltd Primitive processing in a graphics processing system
GB2520365B (en) 2013-12-13 2015-12-09 Imagination Tech Ltd Primitive processing in a graphics processing system
GB2526598B (en) 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
GB2540227B (en) 2015-12-21 2018-01-17 Imagination Tech Ltd Allocation of tiles to processing engines in a graphics processing system
US10235735B2 (en) * 2017-04-10 2019-03-19 Intel Corporation Graphics processor with tiled compute kernels
CN111354065A (zh) 2018-12-21 2020-06-30 畅想科技有限公司 用于图形处理***的基元块生成器
GB2610919B (en) * 2018-12-21 2023-09-27 Imagination Tech Ltd Tag buffer for graphics processing systems
CN110765891B (zh) * 2019-09-30 2022-05-17 万翼科技有限公司 工程图纸识别方法、电子设备及相关产品
CN110796016A (zh) * 2019-09-30 2020-02-14 万翼科技有限公司 工程图纸识别方法、电子设备及相关产品
US11132831B1 (en) * 2020-03-02 2021-09-28 Qualcomm Incorporated Methods and apparatus for efficient multi-view rasterization
EP4094815A3 (en) * 2021-05-28 2022-12-07 Bidstack Group PLC Viewability testing in a computer-generated environment
US20220410002A1 (en) * 2021-06-29 2022-12-29 Bidstack Group PLC Mesh processing for viewability testing

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581234A (zh) * 2003-12-05 2005-02-16 旭上绘图股份有限公司 使用多遍形成方式的图形基元成形装置及方法
GB2404316B (en) * 2003-07-25 2005-11-30 Imagination Tech Ltd Three-Dimensional computer graphics system
CN101091203A (zh) * 2004-05-14 2007-12-19 辉达公司 图形处理***和方法
US20080007560A1 (en) * 2006-06-12 2008-01-10 John Howson Parameter compaction in tile based rendering device
US7505036B1 (en) * 2004-07-30 2009-03-17 3Dlabs Inc. Ltd. Order-independent 3D graphics binning architecture
CN102822871A (zh) * 2010-03-19 2012-12-12 想象技术有限公司 基于图块的渲染***中基于需求的纹理渲染
CN102822870A (zh) * 2010-03-19 2012-12-12 想象技术有限公司 多个阴影化引擎上3d计算机图形数据的处理
US20130241938A1 (en) * 2012-03-15 2013-09-19 Qualcomm Incorporated Visibility-based state updates in graphical processing units

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1306810A1 (en) * 2001-10-25 2003-05-02 STMicroelectronics Limited Triangle identification buffer
CN100339869C (zh) 2002-12-20 2007-09-26 Lm爱立信电话有限公司 使用最小深度遮挡剔除和z字形遍历的图形处理设备及方法
US20050057573A1 (en) 2003-09-12 2005-03-17 Jeff Andrews Methods and systems for transparent depth sorting
US7030887B2 (en) 2003-09-12 2006-04-18 Microsoft Corporation Methods and systems for transparent depth sorting
US20050162435A1 (en) 2004-01-22 2005-07-28 Electronic Arts Inc. Image rendering with multi-level Z-buffers
US7030878B2 (en) 2004-03-19 2006-04-18 Via Technologies, Inc. Method and apparatus for generating a shadow effect using shadow volumes
US7724263B2 (en) * 2004-05-14 2010-05-25 Nvidia Corporation System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories
US8089486B2 (en) * 2005-03-21 2012-01-03 Qualcomm Incorporated Tiled prefetched and cached depth buffer
US7659893B1 (en) 2006-10-02 2010-02-09 Nvidia Corporation Method and apparatus to ensure consistency of depth values computed in different sections of a graphics processor
ITMI20070038A1 (it) 2007-01-12 2008-07-13 St Microelectronics Srl Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle.
US7973803B1 (en) 2007-05-17 2011-07-05 Adobe Systems Incorporated Simultaneous occluding transparency graphics processing
GB0810311D0 (en) 2008-06-05 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
CN102096897B (zh) 2011-03-17 2012-05-02 长沙景嘉微电子有限公司 基于分块渲染的gpu中块存储策略的实现
US9214006B2 (en) 2013-06-04 2015-12-15 Arm Limited Hidden surface removal in graphics processing systems
US10204391B2 (en) 2013-06-04 2019-02-12 Arm Limited Method of and apparatus for processing graphics
CN103310409B (zh) 2013-06-26 2016-09-28 济南大学 一种Tile-based渲染架构GPU的三角形快速分块方法
GB2520365B (en) 2013-12-13 2015-12-09 Imagination Tech Ltd Primitive processing in a graphics processing system
GB2520366B (en) 2013-12-13 2015-12-09 Imagination Tech Ltd Primitive processing in a graphics processing system

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2404316B (en) * 2003-07-25 2005-11-30 Imagination Tech Ltd Three-Dimensional computer graphics system
CN1581234A (zh) * 2003-12-05 2005-02-16 旭上绘图股份有限公司 使用多遍形成方式的图形基元成形装置及方法
CN101091203A (zh) * 2004-05-14 2007-12-19 辉达公司 图形处理***和方法
US7505036B1 (en) * 2004-07-30 2009-03-17 3Dlabs Inc. Ltd. Order-independent 3D graphics binning architecture
US20080007560A1 (en) * 2006-06-12 2008-01-10 John Howson Parameter compaction in tile based rendering device
CN102822871A (zh) * 2010-03-19 2012-12-12 想象技术有限公司 基于图块的渲染***中基于需求的纹理渲染
CN102822870A (zh) * 2010-03-19 2012-12-12 想象技术有限公司 多个阴影化引擎上3d计算机图形数据的处理
US20130241938A1 (en) * 2012-03-15 2013-09-19 Qualcomm Incorporated Visibility-based state updates in graphical processing units

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112116519A (zh) * 2019-06-19 2020-12-22 畅想科技有限公司 图形处理***中的粗略深度测试
CN112116519B (zh) * 2019-06-19 2022-12-27 畅想科技有限公司 图形处理***中的粗略深度测试
US11922566B2 (en) 2019-06-19 2024-03-05 Imagination Technologies Limited Coarse depth test in graphics processing systems
CN113744121A (zh) * 2020-05-28 2021-12-03 想象技术有限公司 任务合并
CN113744121B (zh) * 2020-05-28 2024-06-11 想象技术有限公司 任务合并

Also Published As

Publication number Publication date
US11069024B2 (en) 2021-07-20
CN104715502B (zh) 2019-06-28
US10210596B2 (en) 2019-02-19
CN110097621A (zh) 2019-08-06
GB2520366A (en) 2015-05-20
US20200265547A1 (en) 2020-08-20
CN110097621B (zh) 2023-07-18
US20150170328A1 (en) 2015-06-18
DE102014018565A1 (de) 2015-06-18
US10679322B2 (en) 2020-06-09
US9747660B2 (en) 2017-08-29
GB201322042D0 (en) 2014-01-29
GB2520366B (en) 2015-12-09
US20190139187A1 (en) 2019-05-09
US20170323421A1 (en) 2017-11-09

Similar Documents

Publication Publication Date Title
CN104715502A (zh) 图形处理***中的基元处理
CN104715503A (zh) 图形处理***中的基元处理
EP3185217B1 (en) Allocation of tiles to processing engines in a graphics processing system
CN106575228B (zh) 图形处理中的渲染目标命令重新排序
CN111052149B (zh) 用于确定网络中的内存需求的方法和装置
EP3048582B1 (en) Rendering views of a scene in a graphics processing unit
CN108305313B (zh) 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法
CN106575431A (zh) 用于高度高效的图形处理单元(gpu)执行模型的方法和装置
US20130141448A1 (en) Graphics Command Generation Device and Graphics Command Generation Method
CN108701368A (zh) 用于经实施例化的几何结构的更有效的光线跟踪方法和装置
EP3594905B1 (en) Scalable parallel tessellation
CN104025185A (zh) 用于使用gpu控制器来预加载缓存的机制
CN110036414A (zh) 在z-剔除之后去除或识别重叠片段
US11030005B2 (en) Configuration of application software on multi-core image processor
CN114723598B (zh) 图形处理***和方法
AU2012258437A1 (en) Method, apparatus and system for determining a merged intermediate representation of a page
CN113744121A (zh) 任务合并
CN115375821A (zh) 一种图像渲染方法、装置及服务器
US20240193719A1 (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