CN103871020A - 图形处理***中的隐藏面消除 - Google Patents

图形处理***中的隐藏面消除 Download PDF

Info

Publication number
CN103871020A
CN103871020A CN201310692576.4A CN201310692576A CN103871020A CN 103871020 A CN103871020 A CN 103871020A CN 201310692576 A CN201310692576 A CN 201310692576A CN 103871020 A CN103871020 A CN 103871020A
Authority
CN
China
Prior art keywords
fragment
sampled point
test
processing
early stage
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
CN201310692576.4A
Other languages
English (en)
Other versions
CN103871020B (zh
Inventor
F·赫格伦德
K·奥斯特比
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
Priority claimed from US13/716,952 external-priority patent/US9153070B2/en
Priority claimed from US13/909,561 external-priority patent/US9214006B2/en
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN103871020A publication Critical patent/CN103871020A/zh
Application granted granted Critical
Publication of CN103871020B publication Critical patent/CN103871020B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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
    • 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

Landscapes

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

Abstract

图形处理***中的隐藏面消除。图形处理流水线(1)的早期深度测试阶段(4、13)被配置为:将关于具有与其关联的附条件的丢弃测试并且通过那些早期深度测试的片段的信息广播(9、10、11、14)至流水线中的其它阶段(3、4、6、12)。流水线中的其它阶段随后利用早期深度测试通过信息来确定对它们当前处理的任何片段的处理是否可减慢。如果触发减慢对已在流水线中的片段的处理的片段通过所述片段要经受的所有附条件的丢弃测试,则发送触发停止其处理已预先减慢的片段的处理的信号。如果片段未通过其要经受的附条件的丢弃测试,则发送触发恢复其处理已预先减慢的片段的处理的信号。

Description

图形处理***中的隐藏面消除
技术领域
本发明涉及计算机图形处理,并且具体地说,涉及图形处理中的隐藏面消除。
背景技术
如本领域中已知的,通常通过以下步骤执行图形处理:首先将图形处理(渲染)输出(诸如要显示的帧)分为多个相似的基本组成(称为“基元”)以使得能够更加容易地执行图形处理操作。这些“基元”通常采用简单多边形(诸如三角形)的形式。
用于输出(诸如要显示的帧)的基元通常利用从需要图形处理的应用(例如游戏)接收到的图形绘制指令(请求)由用于图形处理***的应用程序接口生成。
各个基元在这个阶段通常通过一组顶点限定并由其表示。基元的各个顶点与表示所述顶点的一组数据(诸如位置、颜色、纹理和其它属性数据)关联。随后例如当对所述顶点(与所述顶点相关的基元)进行栅格化和渲染时,使用该数据,例如以用于显示。
一旦生成和限定了基元和它们的顶点,它们可通过图形处理***进行处理,以例如显示帧。
该处理基本上涉及以下步骤:确定在将要处理的覆盖输出区域的一系列采样点中哪些采样点被基元覆盖,以及随后确定各个采样点应该具有的外观(例如,就其颜色等而言)以在所述采样点表示基元。这些处理通常分别被称作栅格化和渲染。
栅格化处理确定应该用于基元的采样点(即,要用于在渲染输出(例如,要显示的帧)中表示基元的采样点的(x,y)位置)。这通常利用基元的顶点的位置来实现。
渲染处理因此导出在所述采样点表示基元所需的数据,诸如红色、绿色和蓝色(RGB)颜色值和“Alpha”(透明度)值(即,为各个采样点“着色”)。如本领域中所知的,这个过程可涉及施加纹理、混合采样点数据值等。
(在3D图形文献中,术语“栅格化”通常用于意指基元转换至采样位置和渲染这二者。然而,本文中,“栅格化”将仅用于表示将基元数据转换至采样点地址。)
这些处理通常通过以下步骤执行:测试多组一个或一个以上采样点,以及随后针对发现包括在关注的(正被测试的)基元内(或被所述基元覆盖)的采样点的各组采样点生成离散图形实体(通常称作“片段”,在其上执行图形处理操作(诸如渲染))。因此,覆盖的采样点实际上作为片段被处理,所述片段将用于在关注的采样点渲染基元。“片段”是经过渲染处理(渲染流水线)的图形实体。根据图形处理***的配置方式,生成和处理的各个片段可例如表示单个采样点或一组多个采样点。
(因此,“片段”是插值到基元的给定输出空间采样点中的有效的一组基元数据(与所述一组基元数据关联)。“片段”还可包括每基元和在关注的采样点(片段位置)处为基元着色所需要的其它状态数据。各个图形片段通常可以与输出的像素(例如,输出帧)具有相同尺寸和处于相同位置(由于像素在最终显示中是奇点,因此在图形处理器进行工作(渲染)的“片段”与显示的像素之间可一一映射)。然而,可存在片段和显示像素之间不一一对应的情况,例如在显示最终图像之前,在渲染的图像上执行具体形式的后处理,诸如缩减采样。)
(还存在这样的情况:随着在给定位置的例如来自不同交叠基元的多个片段可彼此影响(例如,由于透明度和/或混合),最终像素输出可取决于在该像素位置的多个或全部片段。)
(对应地,在采样点和显示器像素之间可一一对应,但在采样点和显示器像素之间更通常不一一对应,由于可在渲染的采样值上执行缩减采样以生成用于显示最终图像的输出像素值。类似地,随着在给定位置的例如来自不同交叠基元的多个采样点值彼此影响(例如,由于透明度和/或混合),最终像素输出将还取决于在该像素位置的多个交叠采样值。)
在通常称作“立即模式”图形处理或渲染的图形处理的一个已知技术中,基元逐个地随着生成而被处理(栅格化和渲染)。
在这种***中,基元(它们的顶点)按照先来先处理的原则被递送至图形***,并因此按照基元的接收顺序渲染基元。
还已知,在图形处理***中,使用所谓的“基于拼块的”渲染或“延迟”渲染。在基于拼块的渲染处理中,不是整个渲染输出(例如在按照立即模式进行渲染的一个***中有效地进行处理的帧),而是例如要显示的帧的渲染输出被分为多个较小的子区域,通常称作“拼块”。各个拼块(子区域)被独立地渲染(通常逐个地渲染),并且渲染的拼块(子区域)随后再组合以提供完整的渲染输出,例如,用于显示的帧。在这些布置方式中,渲染输出通常分为规则大小和形状的子区域(拼块)(它们通常为例如方形或矩形),但这不是必要的。
在立即模式和基于拼块的渲染处理这二者中,栅格化和渲染处理的输入将通常包括要由图形处理器执行的一系列图形命令。如本领域中所知的,该“命令列表”将包括指示图形处理器绘制基元的命令和指示其它图形处理的命令(诸如渲染状态变化、开始和结束拼块命令(在基于拼块的***中)等)。
在立即模式渲染中,该命令列表将简单地列出要逐个地执行的命令,而在基于拼块的渲染中,所述列表可以并且通常分为“拼块”(即,将针对各个拼块(独立于针对其它拼块的命令)列出命令)。
当前图形处理***的一个缺点在于,因为基元被按顺序处理,并且通常不是按照完美的从前向后的顺序处理,所以随着一个输出被处理(例如以用于显示),给定采样点(进而片段和像素)可多次着色。当第一个接收到和渲染的基元随后被后来的基元覆盖时,发生这种情况,从而在关注的像素(和采样点)实际上看不到渲染的第一基元。基元可按照这种方式被覆写许多次,并且这通常导致针对被渲染的各个渲染输出(例如帧)执行多个最终冗余的渲染操作。这种现象通常称作“重复渲染”。
执行这些最终冗余的操作的结果包括帧率降低和内存带宽需求增大(例如,作为针对将被后来的基元覆写的基元获取数据的结果)。这二者均是不期望的,并且降低了图形处理***的整体性能。随着渲染输出(诸如要渲染的帧)变大和变得更加复杂(如在潜在可视图中将出现更多面),并且随着可编程片段着色的使用增加(随着利用可编程片段着色为给定片段着色的开销相对更大),这些问题将往往变得严重。
通过按照从前向后顺序发送基元以用于渲染可明显减小“重复渲染”的问题。然而,其它图形处理需求(诸如针对资源(诸如纹理)的相干入口需求和最小化每帧的API调用的次数的需求)通常批准基元的其它优选的顺序需求。另外,在仍保持基元至图形处理单元的足够输送量的同时,在渲染之前,完全从前向后对基元进行排序可能不实际。这些和其它因素意味着针对给定渲染输出(例如帧)的基元的从前向后排序在实际中通常是不可能或不期望的。
因此,提出了尝试减小当处理渲染输出(诸如用于显示的帧)时执行的“重复渲染”的量(隐藏面的冗余处理量)(即,避免渲染不可见的基元和/或片段等)的其它多种技术。
例如,已知在发送基元和/或片段以进行渲染之前执行各种形式的隐藏面消除,以观察基元或片段等是否将被已被渲染的基元遮蔽(在这种情况下,不需要渲染新的片段和/或基元)。这种隐藏面消除可包括例如早期遮挡剔除,诸如本领域中所知的早期Z(深度)和/或模板测试处理。
这些布置方式尝试在后来的片段发送至渲染流水线之前识别例如将被已经处理的基元遮挡(并且因此不需要处理)的片段。在这些布置方式中,针对深度缓冲器中的片段位置,将例如要处理的新片段的深度值与当前深度值进行比较,以确定新片段是否被遮挡。这可有助于避免通过渲染流水线发送被已经处理的基元遮挡的片段。
然而,这些“早期”(在渲染之前)隐藏面消除技术仅考虑了在例如新的基元或片段(正进行“早期”测试的基元或片段)正被测试的同时已经完成它们的处理(已被渲染)的片段。这是因为相关测试数据(诸如Z-缓冲器)仅包含来自已经被处理的片段的数据。
发明内容
因此,申请人相信仍有空间来改进用于图形处理***中的隐藏面消除的技术。
根据本发明的第一方面,提供了一种操作图形处理流水线的方法,所述图形处理流水线包括多个处理阶段,其包括:栅格化器,其对输入基元进行栅格化以生成要处理的图形片段,各个图形片段具有与其关联的一个或更多个采样点;以及渲染器,其处理由栅格化器生成的片段,以生成输出片段数据,所述方法包括以下步骤:
在由栅格化器生成的片段被发送至渲染器以进行处理之前,关于与该片段关联的至少一个采样点执行早期剔除测试;以及
如果至少一个采样点通过早期剔除测试,则向前发送片段以进行处理,并响应于至少一个采样点通过早期剔除测试,确定在图形处理流水线中的另一采样点的处理是否应该减慢。
根据本发明的第二方面,提供了一种图形处理流水线,该图形处理流水线包括:
多个处理阶段,其包括:栅格化器,其对输入基元进行栅格化以生成要处理的图形片段,各个图形片段具有与其关联的一个或更多个采样点;渲染器,其处理由栅格化器生成的片段以生成输出片段数据;以及早期剔除测试阶段,在由栅格化器生成的片段被发送至渲染器以进行处理之前,关于与所述片段关联的采样点执行早期剔除测试;其中,所述图形处理流水线被配置为:
响应于与由栅格化器生成的片段关联的至少一个采样点通过早期剔除测试,向前发送片段以进行处理,并且确定在图形处理流水线中的另一采样点的处理是否应该减慢。
本发明的图形处理流水线在图形处理流水线的渲染器阶段之前包括早期剔除测试,诸如早期深度测试,以在图形实体(诸如采样点、片段和/或基元)通过渲染器处理之前尝试剔除它们,如本领域中所知的。
然而,响应于采样点通过早期剔除测试,本发明还确定图形处理流水线中正处理的另一采样点的处理是否应该减慢(例如,图形处理流水线中正处理的另一采样点的图形处理流水线的处理优先级是否可降低)。换句话说,本发明在栅格化阶段中或栅格化阶段之后延伸早期剔除测试的效果,从而使得还能够潜在地影响已被栅格化并发送至流水线的其余部分以进行处理的基元的采样点的处理速度。
如将在以下进一步讨论的,这可继而使得早期剔除测试的结果能够用于避免和/或停止处理(“终止”)已在流水线中的基元的采样点,而不是简单地停止新基元(例如,将被遮挡)的采样点以防其被渲染。这样做的优点在于,例如,针对先前已通过早期剔除测试的基元在流水线中的采样点,如果在它们的处理完成之前生成将遮挡它们的稍后的基元的片段,则对它们的处理仍可停止。
因此,例如,不同于现有技术,本发明还可在基元和/或片段实际上被渲染顺序中的稍后的基元遮挡的情况下降低或避免“重复渲染”。
这样做的效果是,与例如现有的早期深度测试技术相比,本发明可进一步降低在图形处理流水线中隐藏面被不必要地处理的程度。此外,在进行渲染之前,不需要执行昂贵的采样/片段的每采样或每片段排序。
实际上,本发明的一个重要优点在于,当设置的基元顺序最佳(即,从前向后)时,其将实际上不干涉,从而在这种情况下,在“标准的”早期深度测试布置方式上获得最小的开销增加,但当基元顺序“非最佳”时,本发明将起作用,以消除从后向前的基元使得不用处理它们。使用本发明的开销也独立于所使用的多点采样的防混叠处理的水平,从而相对便宜地使用更高等级的多点采样的防混叠处理(并且更高等级的多点采样防混叠处理的使用更加便宜)。
此外,因为本发明降低了已在流水线中的采样点通过流水线的处理速度,所以本发明仍然可用于在执行早期剔除测试时可能不能确定新的基元(片段)是否将实际上遮挡已在流水线中的采样点的情况中(而不像例如立即丢弃已在流水线中的采样点,在这种情况下,已在流水线中的采样点可仅在在执行早期剔除测试时确定新的片段将遮挡它们的情况下被丢弃)。因此,这意味着,与例如立即简单地丢弃已在流水线中的采样点或片段的测试可能出现的情况相比,本发明可用于(潜在地)影响和停止更多的采样点和片段的处理。
例如,当早期剔除测试的新片段将可导致片段在其处理中被丢弃(诸如着色器附条件的丢弃)的一个或更多个状态作为其状态的一部分,以使得不能在早期剔除(例如,深度)测试阶段获知片段是否将实际上在渲染输出中显现(使得不能在早期剔除测试时断定新片段是否将明确遮挡已在处理流水线中的其它片段)时,可使用本发明。
实际上,申请人已经发现,针对许多图形内容和处理,片段可相对普遍地具有与它们关联的附条件的丢弃状态。如将在以下进一步讨论的,本发明可用于停止处理(“终止”)流水线中的片段和/或采样点,即使早期剔除测试因为新片段具有与其关联的附条件的丢弃测试而不能立即这样做。
图形处理流水线的栅格化器可被配置为按照任何合适和期望的方式操作,例如如按照已知的栅格化布置方式。如本领域中所知的,栅格化器应该操作以生成用于处理的图形片段,基于此,通过栅格化器接收到的给定基元等(至少部分地)覆盖覆盖图形处理流水线的输出区域的一系列采样点中的采样点(或多组采样点)。栅格化器针对正被栅格化的(各个)基元覆盖的各个采样点,和/或针对包括正被栅格化的(各个)基元覆盖的采样点的各组多个采样点(例如,采样掩模)优选地生成图形片段。
由栅格化器生成的各个片段可根据需要表示单个采样点或多个采样点(与单个采样点或多个采样点关联)。在优选实施方式中,各个片段表示一组多个(优选地四个(2x2))采样点。
栅格化器可被配置为一次生成一个片段,但是在优选实施方式中,能够(同时)一次生成多个片段(例如,在基元覆盖多个空间上相邻的采样点或多组采样点的情况下)。在这种情况下,如果栅格化器同时生成一组多个片段,则所述组中的片段仍通过流水线的片段处理部分(诸如片段着色器)被优选地单独处理。栅格化器同时生成多个片段有助于形成背压,从而使渲染流水线中“充满”片段。
在尤其优选的实施方式中,栅格化器是分级栅格化器,其进行操作以相对于采样点的越来越小的补片反复地测试基元直至优选地选择的(优选地预定的)最小补片尺寸,从而丢弃不覆盖(至少部分地)基元的任何补片,并且随后生成一个或多个片段,以对应于被基元至少部分地覆盖的采样点的一个或多个补片进行渲染。优选地测试的采样点的各个补片对应于整数片段,诸如16x16、8x8、4x4和/或2x2片段。
栅格化器优选地从渲染目标区域的大补片开始并测试关注的基元是否在该补片内。如果否,则丢弃整个补片,并且测试下一补片,等等。另一方面,如果发现基元在所述补片内(以至少部分地覆盖所述补片),则将所述补片优选地再次划分为4份,并且随后按照相同方式测试各个“子补片”,等等,直至达到最小补片尺寸(在优选实施方式中,最小补片尺寸对应于2x2片段组)(但是可例如为单独的采样点、单独的片段或不同尺寸的片段组)。
在该布置方式中,最小补片尺寸包含多个采样点,在最终补片中,栅格化器优选地随后测试单独的采样点以确定它们是否被基元覆盖,并且随后对应地生成片段。
在由栅格化器生成的片段可与多组多个采样点关联(并对应于多组多个采样点并表示多组多个采样点)的情况下,各个这种图形片段优选地与指示与片段对应的所述一组采样点中的哪些采样点被覆盖(例如,优选地,被正被采样的基元覆盖)的数据关联,即,实际上,与指示与所述片段对应的所述一组采样点中的那些采样点的数据关联,所述片段正被用于渲染。
指示所述片段的哪些覆盖的采样点正被用于渲染的信息优选地与通过渲染器的片段的片段数据的一部分(诸如片段的RGB和透明值)关联。优选地,采用覆盖掩模的形式,针对与所述片段关联的一组采样点的各个采样位置,其指示采样位置是否被覆盖,即,实际上,片段是否正被用于渲染采样点(即,针对该采样点,其数据是否应该被存储)。优选地,这种覆盖掩模采用位图的形式,其表示采样位置。栅格化器优选地生成覆盖掩模。
本发明的操作使用的早期剔除测试可包括任何合适的这种测试,诸如早期遮挡测试,诸如深度(Z)测试和/或早期模板测试。在尤其优选的实施方式中,本发明的操作使用的早期剔除测试包括早期深度(Z)测试(或多个测试)。在优选实施方式中,本发明的操作使用的早期剔除测试包括早期深度和早期模板测试二者。
图形处理流水线的可用的早期剔除测试(早期剔除测试阶段)中的任一个或全部可被配置为按照本发明的方式操作(触发操作)。在图形处理流水线包括一个以上早期剔除测试(早期剔除测试阶段)时,优选地,所有的早期剔除测试阶段可触发按照本发明的方式的操作。因此,在流水线中优选地存在一个以上早期剔除测试。
早期剔除测试阶段可在(多组)多个片段的补片上操作。例如,在栅格化器可将基元栅格化为多个片段的补片时,这些补片可随后作为一个整体经受早期剔除测试。在这种情况下,早期剔除测试将因此涉及一组多个片段(即,被考虑的片段的补片),并且关于与片段关联的至少一个采样点执行早期剔除测试将包括关于由栅格化器生成的多个片段的至少一组(补片)执行早期剔除测试(确实关于与片段关联的至少一个采样点执行剔除测试,这是由于其针对与所述一组多个片段中的片段关联的所有采样点有效地执行早期剔除测试)。
因此,在优选实施方式中,流水线包括共同测试多个片段的补片(组)的早期深度(或早期深度和模板)测试器。该测试优选地仅针对完全(完整地)被关注的基元覆盖的多个片段的补片(组)执行,并且优选地使用多个片段的补片(组)的深度值范围。
优选地,通过早期“补片”剔除(例如,深度和/或模板)测试的多个片段的任何补片(组)可触发按照本发明的方式的操作。
早期剔除测试可(另外或作为替代)优选地,以及(另外)优选地在单个片段上操作。因此,流水线优选地包括测试单独的片段的早期剔除测试器,优选地,早期深度(或早期深度和模板)测试器。该测试优选地仅针对完全(完整地)被关注的基元覆盖的片段执行,并且优选地针对片段整体使用深度值范围或单个深度值。
优选地,通过该(单个片段)早期剔除(例如,深度和/或模板)测试的任何片段可触发按照本发明的方式的操作。
在优选实施方式中,早期剔除测试(存在早期剔除测试)(另外或作为替代),并且优选地(另外)在单个采样点和/或与给定片段所关联的多组采样点相比包含较少采样点的多组采样点(诸如,针对与片段关联的四个采样点中的两个)上操作(测试)。在这种情况下,早期剔除测试优选地在单个(覆盖的)采样点上操作。在这种情况下,各个采样点将具有用于剔除测试的关联的深度值,即,将针对各个采样点具有深度值(可与其它采样点共享)。
再者,优选地,通过该采样点早期剔除(例如,深度和/或模板)测试的任何采样点可触发按照本发明的方式的操作。
在尤其优选的实施方式中,流水线包括测试多组多个片段和/或单独的片段(关于此,可触发按照本发明的方式的操作)的早期剔除测试,接着是测试单独的采样点的早期剔除测试(再次,优选地,关于此,可触发按照本发明的方式的操作)。这可继而使得本发明能够从例如覆盖基元的完全拼块至单个片段和/或采样点颗粒生成隐藏面消除事件。
在尤其优选的实施方式中,所述***包括早期剔除测试,其将与采样点、片段和/或一组多个片段(的补片)关联的深度值范围与存储的与关注的采样点、片段或一组多个片段(的补片)的位置关联的深度值范围进行比较,以确定正被测试的采样点、片段或一组多个片段(的补片)是否通过早期剔除测试。
优选地针对可考虑的(剔除测试的)片段的各个补片存储深度值范围。
早期剔除测试本身可按照任何合适和期望的方式执行,例如,按照本领域中已知的正常方式和/或关注的图形处理***中所使用的方式执行。例如,它们可具体地测试所述采样点(或各个采样点),或者即使它们不具体地测试所述采样点(或各个采样点),也可为具有测试采样点的效果的测试。
在尤其优选的实施方式中,早期剔除测试(响应于该早期剔除测试,确定另一采样点的处理是否可减慢)是一种保守的早期深度测试,其优选地主要进行操作以在早期剔除测试阶段预测(确定)新的采样点和/或片段是否将通过流水线中存在的后期(在流水线的末端)深度测试。
在尤其优选的实施方式中,在渲染一组基元(例如,针对拼块或绘制调用)之前,***(和优选地栅格化器)针对各个采样位置、多组采样位置、片段、片段位置、片段的补片和/或多组片段位置生成和/或存储期望的深度值和优选地期望的深度值范围,当测试由栅格化器生成的基元和片段等时,剔除测试可以并且优选地在该深度值范围内进行。这些期望的深度值范围应该针对关注的补片等表示(涵盖)深度值的所有可能的结果,并且优选地随着继续栅格化和渲染而利用针对单独的采样位置、片段、片段的补片等的深度值和深度值范围进行更新,所述单独的采样位置、片段、片段的补片被生成并存储为采样点和片段,它们在通过图形处理流水线处理时经历早期和后期深度测试。
早期剔除测试可实现为例如栅格化器的一部分,或在栅格化器之后(但在渲染器之前),或作为它们的组合(例如,存在一个以上早期剔除测试)。在优选实施方式中,它或它们实现为栅格化处理的一部分和/或在栅格化器之后但在图形处理流水线的其余部分之前。
如果正被测试的采样点或一个或多个片段未通过早期剔除测试(例如,发现被遮挡),则该采样点或一个或多个片段优选地从流水线中的进一步处理中“剔除”,如本领域中所知的。
可按照任何期望和合适的方式实现(和提供)这种剔除。例如,在剔除测试是关于整个片段(或一组多个整个片段)的时,则优选地所述片段或一组多个片段未通过流水线向前发送以进行处理(例如,进行渲染)(即,它们“被剔除”),如本领域中所知的。
另一方面,如果剔除测试是关于比与要渲染的片段关联的所有采样点更少的采样点的,则优选地防止(停止)关注的采样点(即,未通过剔除测试)的进一步处理,例如,通过将采样点标记为“失效”(例如,通过指示它们未被与关注的片段关联的覆盖掩模覆盖),或者按照任何其它合适的方式,但是关注的片段仍然(通过流水线)向前发送,使得与片段关联的“未剔除的”采样点仍被处理。
如果正被测试的至少一个采样点通过早期剔除测试,则被测试的采样点(即,与采样点关联的片段)、片段或一组多个片段被向前发送以进行处理(例如,朝着渲染器),仍然如本领域中所知的。然而,在这种情况下,响应于采样点通过早期剔除测试(作为采样点通过早期剔除测试的结果),还确定在流水线中的另一采样点的处理是否应该减慢(并且如果响应于采样点通过早期剔除测试等(作为采样点通过早期剔除测试等的结果),确定已在流水线中的采样点的处理应该减慢,则采样点的处理优选地随后减慢)。
在这点上,处理可在采样点水平(分辨率)(而非例如关于整个片段)进行操作,并因此进行测试,并减慢与已在流水线中的片段关联的单独的采样点的处理。在早期剔除测试测试单独的采样点时,这可尤其合适,并将使得例如所述处理能够“除掉”与流水线中的片段关联的采样点(例如,使得一旦确定“减慢”与片段关联的所有(覆盖的)采样点,整个片段的处理就可随后减慢)。
同样地,处理可被配置为另外或替代性地关于整个片段操作,即,使得如果整个片段(或一组多个片段)通过早期剔除测试,则确定流水线中的任何片段的处理是否应该减慢。在早期剔除测试测试片段以及替代性地测试单独的采样点时,这可尤其合适。
因此,在优选实施方式中,早期剔除测试测试片段和/或多组多个片段,并且如果正被测试的片段或一组片段通过早期剔除测试,则作为片段或一组片段通过早期剔除测试的结果,确定已在流水线中的片段和/或一组多个片段的处理是否应该减慢。
各组多个片段优选地为一组四个片段,优选地为2x2片段组。
在优选实施方式中,以渲染流水线在其上操作的实体(诸如(优选地)片段或多组多个片段(例如2x2组片段))的分辨率执行所述确定。
作为至少一个采样点和/或片段通过早期剔除测试的结果,优选地确定已在流水线中的多个采样点和/或片段中的任一个的处理是否应该减慢。
虽然可关于通过早期剔除测试的各个片段(与通过早期剔除测试的采样点关联)执行按照本发明的方式的操作(以减慢图形流水线中的其它片段等的处理,和潜在地随后“终止”所述其它片段),但是在尤其优选的实施方式中,仅关于选择的(并通过早期剔除测试的)片段(优选地符合特定选定的(优选地预定的)标准的片段)执行按照本发明的方式的操作。
因此,在尤其优选的实施方式中,对已在流水线中的任何其它采样点和/或片段的处理是否应该减慢的确定至少部分地基于通过早期剔除测试的片段和/或采样点是否还具有特定的(优选地选择的)一个或多个属性(符合必要的(选择的)标准以(具有必要的属性以)(潜在地)减慢另一采样点的处理),并且如果所述片段等不具有所述属性,则优选地不响应于至少一个采样点通过早期剔除测试来确定图形处理流水线中的另一采样点的处理是否应该减慢)。
因此,在优选实施方式中,对采样点和/或片段的处理是否应该减慢的确定经历进一步的检查和/或标准。
类似地,在优选实施方式中,如果片段(或采样点)通过早期剔除测试,则首先检查片段(或采样点)的其它属性以在减慢流水线中的片段(或采样点)处理的之前确定其(或它们的)处理是否应该(潜在地)减慢。
通过早期剔除测试随后触发按照本发明的方式的操作的片段的标准可为任何选定和合适的标准。
在尤其优选的实施方式中,在这点上,正被早期剔除测试的片段和/或采样点的特定属性是片段和/或采样点是否将受到作为其处理的一部分的附条件的丢弃测试(即,具有与其关联的指示片段和/或采样点当其通过图形处理流水线被处理时可被稍后丢弃的状态,例如并优选地,在与其关联的着色器中具有附条件的丢弃)。(如本领域中所知的,要渲染的一些片段可受到作为渲染处理的一部分的可导致这些片段(例如)被丢弃的各种附条件的丢弃测试或状态。这可用于例如当渲染栅栏或树上的树叶时(在这种情况下,针对树叶/栅栏之间的空间使用丢弃)。这些片段是优选地应用本发明的片段。)
因此,在优选实施方式中,所述标准优选地包括受到作为其处理的一部分的一个或更多个附条件的丢弃测试的片段。在优选实施方式中,它们包括以下的一个或更多个以及优选地全部:具有全RGB写掩模的片段;不具有依赖于先前RGBA值的混合功能的片段;用于不从拼块缓冲器读取的片段的着色器程序;完全不透明的片段;以及未强制(通过应用程序员)执行后期深度更新的片段,其中基于以下原因执行后期深度更新:透明测试;透明至覆盖;着色器包含丢弃;混合着色器包含丢弃;或者着色器中具有相同位置的较早的片段强制进行后期深度更新。
换句话说,优选地,允许(使用)由于透明测试、透明至覆盖测试、着色器包含丢弃、混合着色器包含丢弃、或者着色器中的较早的片段强制进行后期深度更新而强制执行后期深度更新的片段来触发按照本发明的方式的操作,以(潜在地)减慢其它片段和/或采样点的处理,但是不允许(不使用)针对任何其它原因强制执行后期深度更新的片段触发按照本发明的方式的操作以(潜在地)减慢其它片段和/或采样点的处理。
在尤其优选的实施方式中,除了其它的以外,对已在流水线中的任何其它采样点和/或片段的处理是否应该减慢的确定基于已通过剔除测试的采样点和/或片段是否可重复渲染(并且优选地,它们是否可遮挡)已在流水线中的采样点和/或片段(由于如果稍后的采样点和/或片段通过例如早期深度测试,则可表示这些采样点和/或片段可位于表示已在流水线中的相同位置的任何采样点和/或片段之前(并且如果它们是不透明的,则(潜在地)遮挡所述任何采样点和/或片段))。
因此,优选地,通过图形处理流水线的一个或多个稍后的阶段执行在早期剔除测试“通过”事件中对其处理应该被减慢的那些采样点和/或片段的确定,所述一个或多个稍后的阶段识别(确定)其当前包含(例如,处理)的可潜在地通过通过早期剔除测试的一个或多个采样点和/或一个或多个片段(合适地)重复渲染的任何采样点和/或片段。
可按照任何合适和期望的方式执行这种处理,但是优选地通过将当前占据流水线阶段的采样点和/或片段中的一个或一些或全部的(例如,(x,y))位置与通过早期剔除测试的采样点和/或片段的(例如,(x,y))位置进行比较来实现。
在考虑采样点(相对于整个片段)时,这一点通过将关注的采样点的“实际”位置(但是在优选实施方式中,通过将表示关注的采样点的片段的位置)与片段中的采样点的相对位置进行比较来实现(例如,基于与片段关联的覆盖掩模)。
在考虑片段时,这一点优选地通过将当前占据流水线阶段的片段中的一个或一些或全部的位置与通过早期剔除测试的片段的位置进行比较来实现。
在考虑一组多个片段(即,已通过早期剔除测试)时,这优选地通过将当前占据流水线阶段的片段或多组片段的一个或一些或全部的位置与通过早期剔除测试的所述一组多个片段中的片段覆盖的位置(区域)的范围进行比较来实现。
在渲染输出(的平面)中与通过早期剔除测试的采样点和/或片段(合适地)占据相同位置(即,具有相同的(x,y)位置)的任何当前采样点和/或片段的处理因此可(并且优选地)(选择性地)减慢(例如,以同样符合的减慢采样点的处理的其它标准为准)。
在优选实施方式中,对采样点和/或片段的处理是否应该减慢的确定以其它检查和/或标准为准。优选地,首先检查已在流水线中的其处理潜在地将要减慢(例如,将潜在地被遮挡)的片段(或采样点)的其它属性,以在减慢流水线中的片段(或采样点)的处理之前,确定其(或它们的)处理是否基于任何其它原因仍应该以正常优先级(以正常速度)进行,所述其它原因例如因为其具有诸如与仍被需要的遮挡查询关联的仍被需要的副作用。这种检查优选地包括确定已在流水线中的片段(或采样点)是否因为遮挡查询(具有其附带的有效的遮挡查询)或者因为其它副作用(在这种情况下,优选地不减慢其处理)而被需要。
因此,在尤其优选的实施方式中,图形处理流水线被配置为,响应于与片段关联的至少一个采样点通过早期剔除测试,选择性地减慢已在流水线中的采样点和/或一个或多个片段的处理。
当采样点或一个或多个片段通过早期剔除测试时,可按照任何合适和期望的方式实施确定流水线中的任何采样点和/或片段的处理是否应该减慢的操作。
优选地,采样点或一个或多个片段通过早期剔除测试(并符合任何其它要求的标准以(潜在地)减慢其它片段的处理等)的事件触发了将相关信息(诸如,并且优选地通过测试的采样点或片段的位置)广播至处理流水线中的其它(例如,稍后的)阶段,那些其它(例如,稍后的)阶段优选地随后利用所述信息来估计它们当前处理的任何采样点或片段的处理是否应该减慢(例如,并且优选地,按照上面讨论的方式)。
在测试关于整个片段时,该位置信息优选地包括关注的片段的(x,y)位置,如上面的讨论。在测试关于一组多个片段时,该位置信息优选地包括由关注的所述一组多个片段中的片段覆盖的(x,y)位置的范围(仍然如上面的讨论)。在测试关于采样点时,位置信息优选地包括与采样点关联的片段的(x,y)位置,以及关于采样点是哪个用于片段的采样点位置的指示(优选地,以覆盖掩模的形式,如上面的讨论)。
因此,在尤其优选的实施方式中,图形处理***被配置为,如果与片段关联的至少一个采样点通过早期剔除测试,则将关于已通过早期剔除测试的至少一个采样点(和/或关注的片段)的信息广播至图形处理流水线的至少一个(优选地其它(以及优选地,稍后的))阶段,并且图形处理流水线的至少一个阶段被配置为利用广播的与通过早期剔除测试的至少一个采样点和/或片段关联的信息来确定与当前在该阶段中的片段关联的任何片段和/或采样点的处理是否应该减慢。根据上面的讨论,优选地,仅在通过早期剔除测试的至少一个采样点和/或片段也符合其它标准(诸如,并且优选地,以当其通过图形处理流水线处理时潜在地被丢弃为准)时将所述信息广播至图形处理流水线的其它阶段。
如上面的讨论,最优选地,早期剔除测试包括早期深度测试,和/或图形处理流水线的至少一个阶段被配置为利用广播的与通过早期剔除测试的采样点和/或片段关联的信息来确定当前在该阶段的任何采样点和/或片段是否将被通过早期剔除测试的采样点和/或片段潜在地重复渲染,并且如果存在任何这样的采样点或片段,则选择性地减慢这些潜在地重复渲染的采样点和/或片段的以后的处理。
因此,在尤其优选的实施方式中,图形处理流水线被配置为:
在通过流水线向前发送片段以进行处理之前,针对与片段关联的至少一个采样点和/或针对由栅格化器生成的至少一个片段执行早期深度测试;
如果至少一个采样点或至少一个片段通过早期深度测试(并且在优选实施方式中,如果至少一个采样点或至少一个片段当其通过图形处理流水线处理时潜在地被丢弃),则向前发送片段以进行处理,并且将关于通过早期深度测试的至少一个采样点或至少一个片段的信息广播至图形处理流水线的至少一个(优选地稍后的)阶段;以及
图形处理流水线的至少一个阶段被配置为,使用与通过早期深度测试的至少一个采样点或至少一个片段关联的广播信息来确定当前在所述阶段的任何采样点和/或片段是否将潜在地被通过早期深度测试的至少一个采样点或至少一个片段重复渲染,并且如果存在任何这样的采样点或片段,则选择性地减慢对那些潜在地重复渲染的采样点和/或片段的进一步处理。
如上面的讨论,最优选地,广播至图形处理流水线的阶段的信息包括通过早期剔除测试的采样点和/或片段的位置,和/或图形处理流水线的至少一个阶段被配置为利用广播的与通过早期剔除测试的采样点和/或片段关联的位置信息来确定当前在该阶段的任何采样点和/或片段是否与通过早期剔除测试的采样点和/或片段在渲染目标(目的地缓冲器)(例如,正被处理的拼块)中占据相同位置,并且选择性地减慢与通过早期剔除测试的采样点和/或片段在渲染目标中占据相同位置的任何采样点和/或片段的以后的处理。
在早期剔除测试“通过”事件中确定任何采样点和/或片段的处理是否可减慢的处理流水线的一个或多个阶段可包括图形处理流水线的任何期望和合适的阶段。它们优选地包括图形处理流水线的至少一个稍后的阶段(即,在早期剔除测试和/或栅格化器之后的阶段)。为此,所述处理流水线可根据需要分为许多阶段。
在一个优选实施方式中,该阶段是图形处理流水线的渲染器(该确定由渲染器实现)。可能的是,例如,渲染器作为整体按照本发明的方式操作的单个阶段处理,或者作为(并分为)彼此独立地起作用的多个分离的阶段处理。因此,在优选实施方式中,早期剔除测试“通过”事件信息被(至少)广播至图形处理流水线的渲染器和/或渲染器的一个或多个部分(渲染器或渲染器的一个或多个部分随后按照本发明的方式操作)。
在早期剔除测试“通过”事件中确定任何采样点或片段的处理是否可减慢的处理流水线的一个或多个阶段优选地另外或替代性地包括例如可以有效地剔除片段的流水线的其它阶段,诸如早期剔除测试(从而尝试减慢例如仍经历早期剔除测试的片段(例如稍后在早期剔除测试流水线中的片段)的处理,和/或栅格化器(从而尝试减慢例如仍经历栅格化的较早的片段(和/或片段的补片)的处理(未完全栅格化的))。
在尤其优选的实施方式中,多个片段(以及优选地阶段中的所有片段)和/或采样点可并行测试。这随后有利于有效地利用可一次测试例如多个片段的补片的早期剔除测试。优选地,布置方式为使得流水线阶段可以与早期剔除测试通过事件可生成潜在的“减慢”机会的速率相同的速率减慢采样点和片段的处理等。
根据上面的讨论,在确定采样点和/或片段的处理应该减慢时,优选地减慢片段和/或采样点通过流水线的处理。
“减慢的”片段等应该与正常相比更慢地被处理,但是采样点和/或片段的处理的减慢程度可根据需要选择。这里应该注意,期望的是,采样点和/或片段的处理只是相对于其通过流水线正常处理的速度而言减慢或延迟,而非采样点和/或片段此时被“减慢”丢弃(永远停止)从而不通过流水线进行进一步处理。因此,虽然片段等的处理减慢了,但所述片段等并不(在减慢时)被丢弃从而不通过流水线进行进一步处理。
在尤其优选的实施方式中,流水线中的片段和/或采样点的处理减慢包括延迟流水线中的片段和/或采样点的处理,使得触发减慢流水线中超过“减慢的”片段或采样点的关注的片段或采样点的处理的采样点或片段,以及优选地使得触发减慢关注的片段或采样点的处理的采样点或片段应该(并优选地)在完成流水线中的“减慢的”片段或采样点的处理之前在流水线中完成其一个或多个附条件的丢弃测试。如将在稍后的描述,这随后使得“触发”片段或采样点能够用于(潜在地)丢弃(“终止”)减慢的片段等,以防止通过流水线的进一步处理。
按照任何期望和合适的方式减慢确定其处理应该减慢的采样点和/或片段的处理。
在一个优选实施方式中,流水线中的片段和/或采样点的处理减慢包括暂停流水线中的片段和/或采样点的处理,(例如,并且优选地,直至“触发”片段和/或采样点已完成其一个或多个附条件的丢弃测试)。
可根据需要实现这种流水线中的片段等处理的暂停。在一个优选实施方式中,暂停的片段等布置在“僵化池”(它们的处理在这里暂停)中。
在另一优选实施方式中,流水线中的片段和/或采样点的处理减慢包括(例如并优选地)通过为“减慢的”片段赋予用于缓存区访问和/或用于通过流水线的其它处理的较低优先级(相对于未减慢的片段等)去优先(de-prioritising)流水线中的片段和/或采样点的处理(降低其优先级)。
可实现或期望这种通过流水线去优先片段等的处理。
在尤其优选的实施方式中,具有要处理的指令的片段布置在片段池中,当完成指令时,并且当存在预备用于执行的缓存命中和指令时,合适的片段随后被从片段池中取出并执行。通过当确定是否应该允许将片段从片段池中取出时增加优先级状态作为额外考虑因素,片段可随后使它们的处理优先级降低。
在优选实施方式中,片段等通过将识别出的采样点和/或片段标记为“去优先”(具有降低的处理优先级)来去优先。相关处理阶段可随后在对采样点和/或片段进行任何处理之前例如检查采样点和/或片段是否已被去优先,并且因此随后处理具有正常或降低的优先级的片段等。这将继而减慢去优先采样点和/或片段的处理。
就采样点而言,针对关注的片段,优选地通过在诸如采样点掩模的元数据中合适地设置值来将采样点标记为去优先。
当将要考虑片段整体时,各个片段可例如具有与其关联的“去优先”比特(例如作为其关联的片段数据的一部分),该比特如果被设置,则指示片段的处理已被去优先。在一个优选实施方式中就是这样做的。处理阶段可随后检查它们接收以进行处理的各个片段的“去优先”比特。如果单独采样点的测试最终去优先与片段关联的所有采样点,则可设置该比特。
另选的布置方式(诸如使具有去优先标签的像缓存区那样操作的片段队列在设置片段的去优先标签时释放队列(缓存区)行)可用作替代,或根据需要另外使用。
一旦片段和/或采样点触发了减慢已在流水线中的其它片段等,则在尤其优选的实施方式中,一旦这种触发片段完成(和通过)其可经受的所有丢弃状态(即,执行了所有附条件的丢弃测试并未被丢弃),则随后进一步确定仍在流水线中的任何较早的片段等的处理是否可停止(例如,基于已知“触发”片段等将遮挡住那些其它片段等(因为其未被丢弃并且将不被丢弃))。例如,一旦“触发”片段通过流水线完成其处理,和/或一旦其经历(并通过)其最终的附条件的丢弃测试,就可实现这个目的。
因此,在尤其优选的实施方式中,如果预先触发减慢流水线中的其它片段和/或采样点的处理的采样点和/或片段通过所有其关联的附条件的丢弃测试(即,未被丢弃),则确定图形处理流水线中正处理的另一采样点和/或片段的处理是否可停止。
因此,这意味着片段通过所有其附条件的丢弃测试的结果可用于避免和/或停止处理(“终止”)仍在流水线中的较早的基元的采样点。
这里应该注意,该操作当与本发明的操作结合以减慢或延迟可潜在地被早期剔除测试之后的片段遮挡的片段等的处理时,意味着“减慢”触发片段通过其附条件的丢弃测试的结果可随后用于在那些减慢的片段通过流水线彻底处理之前例如“终止”触发片段在流水线中超过并且将实际上被触发片段遮挡的任何“减慢的片段”。这样,即使不能在早期剔除测试(例如深度测试)阶段足够无疑地确定新的片段(例如)是否将实际上遮挡已在流水线中的片段,也随后使得稍后的片段能够用于关于在流水线中的稍后的片段之前的较早的片段执行隐藏面消除。
因此,例如,并且不像现有技术那样,可使用本发明以降低或避免在基元和/或片段实际上被在渲染顺序上稍后的基元遮挡的情况下的“重复渲染”。这样做的效果是,与例如现有的早期深度测试技术相比,本发明可进一步降低在图形处理流水线中不必要地处理隐藏面的程度。
申请人进一步认识到,对新的触发片段等在流水线中可超过的已在流水线中的片段的“减慢”更多,这种操作将更加有效。因此,根据上面的讨论,优选的是,减慢片段等的处理为诸如使得触发片段能够超过其“减慢”的一些(以及优选地全部)片段等。
据认为,使用采样点和/或片段在图形处理流水线中通过附条件的丢弃测试的结果以确定流水线中较早的片段等的处理是否可停止的想法本身可以是新颖的并且有益的。
因此,根据本发明的另一方面,提供了一种操作图形处理流水线的方法,所述图形处理流水线包括多个处理阶段,该多个处理阶段包括:栅格化器,其栅格化输入基元以生成要处理的图形片段,各个图形片段具有与其关联的一个或更多个采样点;以及渲染器,其处理由栅格化器生成的片段以生成输出片段数据,所述方法包括以下步骤:
关于与由栅格化器生成的片段关联的至少一个采样点执行附条件的丢弃测试;以及
如果至少一个采样点通过附条件的丢弃测试,则在流水线中向前发送片段,并且作为至少一个采样点通过附条件的丢弃测试的结果,确定图形处理流水线中的另一采样点的处理是否可停止。
根据本发明的另一方面,提供了一种图形处理流水线,该图形处理流水线包括:
多个处理阶段,该多个处理阶段包括:栅格化器,其栅格化输入基元以生成要处理的图形片段,各个图形片段具有与其关联的一个或更多个采样点;渲染器,处理由栅格化器生成的片段以生成输出片段数据,并且其中:
可关于与由栅格化器生成的片段关联的采样点执行附条件的丢弃测试;并且
其中,所述图形处理流水线被配置为:
响应于与由栅格化器生成的片段关联的至少一个采样点通过附条件的丢弃测试,在流水线中向前发送片段,并且作为至少一个采样点通过附条件的丢弃的结果,确定图形处理流水线中的另一采样点的处理是否可停止。
本发明的操作使用的附条件的丢弃测试包括任何合适的这种测试,诸如当渲染树叶或栅栏时使用的形式的测试。
图形处理流水线的任何或所有可用的附条件的丢弃测试(附条件的丢弃测试阶段)可被配置为按照这种方式操作(按照这种方式触发操作)。优选地,一旦片段等通过其将要经受的最终附条件的丢弃测试,就进行确定。
一个或多个附条件的丢弃测试本身可按照任何合适和期望的方式执行,例如,按照本领域中已知的正常方式执行和/或用于关注的图形处理***中。
另一方面,如果触发减慢流水线中的其它片段等的处理的一个或多个采样点或者一个或多个片段未通过其将要经受的附条件的丢弃测试(即,作为附条件的丢弃测试的结果,被丢弃),则申请人认识到将不可能安全地丢弃流水线中的由关注的片段减慢的任何片段等(这是因为触发片段已被丢弃,从而触发片段等将实际上不遮挡“减慢的”片段)。因此,在这种情况下,作为关注的片段等通过早期剔除测试的结果而减慢的任何片段等应该继续(并且优选地仍然)通过图形处理流水线被处理。
在这种情况下,“减慢的”片段等将简单地以较慢的速率继续被处理。然而,在尤其优选的实施方式中,如果触发减慢它们的处理的片段等随后被丢弃,则“减慢的”片段等复原以按照较高(并且优选地按照正常)(它们“恢复的”)优先级处理。优选地,如果触发片段等基于任何其它原因例如凭借本发明的操作被丢弃(“终止”),则可实现这一点。
因此,这些实施方式和本发明的方面优选地还包括:如果至少一个采样点未通过附条件的丢弃测试(被丢弃),则丢弃未通过附条件的丢弃测试的至少一个采样点,并且作为至少一个采样点未通过附条件的丢弃测试的结果,确定图形处理流水线中的另一采样点的处理是否应该恢复。
可根据需要实现先前减慢片段等的这种“恢复”。在优选实施方式中,通过发送将触发关注的片段等的合适的“恢复”的“恢复”信号来实现。
这些“终止”和“恢复”处理可在采样点水平(分辨率)(而非例如关于整个片段)进行操作,并因此进行测试,并停止进一步处理或恢复与在流水线中的较早的片段关联的单独的采样点。在附条件的丢弃测试测试单独的采样点时,这可尤其合适,并将使得例如所述处理能够“除掉”与仍在流水线中的片段关联的采样点(例如,直至其采样点全部“停止”(或恢复),此时可随后丢弃(或“恢复”)整个片段)。
同样地,所述处理可被配置为关于整个片段另外或替代性地操作,即,使得如果整个片段(或一组多个片段)通过(最终)附条件的丢弃测试,则确定仍在流水线中的任何片段的处理是否可停止。
在优选实施方式中,如果正被测试的片段整体通过(或未通过)附条件的测试,则作为片段通过(或未通过)附条件的丢弃测试的结果,确定流水线中的较早的片段的处理是否可停止(或分别恢复)。
在优选实施方式中,以渲染流水线在其上操作的实体(诸如(优选地)片段)的分辨率执行所述确定。
优选地,作为至少一个采样点和/或片段通过(或分别未通过)附条件的丢弃测试的结果,确定流水线中的较早的多个采样点和/或片段中的任一个的处理是否可停止(或恢复)。
对流水线中的较早的任何其它采样点和/或片段的处理是否可停止的确定可基于任何期望和合适的标准。在尤其优选的实施方式中,基于已经通过所有它们的附条件的丢弃测试的采样点和/或片段是否将重复渲染(并优选地它们是否将遮挡)流水线中的采样点和/或片段(由于如果采样点和/或片段已通过所有它们的附条件的丢弃测试(和早期深度测试),则应该指示这些采样点和/或片段将在在它们之前进入流水线的表示相同位置的任何采样点和/或片段前方(并因此遮挡(如果它们不透明)所述任何采样点和/或片段))。
因此,在附条件的丢弃测试“通过”事件中对不再需要被处理的那些采样点和/或片段的确定优选地通过图形处理流水线的一个或多个阶段来执行,所述一个或多个阶段识别出(确定)其当前包含(例如处理)的任何采样点和/或片段将被通过附条件的丢弃测试的一个或多个采样点和/或一个或多个片段(合适地)重复渲染。
对流水线中的任何其它采样点和/或片段的处理是否可恢复的确定可类似地基于任何期望和合适的标准。在尤其优选的实施方式中,这基于流水线中的减慢的采样点和/或片段是否可不再被未通过附条件的丢弃测试的采样点和/或片段重复渲染(并且优选地它们是否可不再被遮挡)(由于如果采样点和/或片段未通过附条件的丢弃测试并被丢弃,则将意味着这些采样点和/或片段将不在在它们之前进入流水线的表示相同位置的任何采样点和/或片段之前(并且因此不遮挡(如果它们不透明)所述任何采样点和/或片段))。
因此,在附条件的丢弃测试“未通过”事件中对可恢复的这些采样点和/或片段的确定优选地通过图形处理流水线的一个或多个阶段来执行,所述一个或多个阶段识别出(确定)其当前包含(例如,处理)的现在可不被未通过附条件的丢弃测试的一个或多个采样点和/或一个或多个片段(合适地)重复渲染的任何采样点和/或片段。
可按照任何合适和期望的方式执行这些处理,但是优选地通过将当前占据流水线阶段的采样点和/或片段的一个或一些或全部的(例如(x,y))位置与通过(或未通过)附条件的丢弃测试的采样点和/或片段的(例如(x,y))位置进行比较来执行。
在考虑采样点(相对于整个片段)时,通过将关注的采样点的“实际”位置(但是在优选实施方式中,通过将表示关注的采样点的片段的位置)与片段中的采样点的相对位置(例如,基于与片段关联的覆盖掩模)进行比较来执行。
在考虑片段时,优选地通过将当前占据流水线阶段的片段中的一个或一些或全部的位置与通过或未通过附条件的丢弃测试的片段的位置进行比较来执行。
在考虑(例如,通过后期剔除测试的)一组多个片段时,优选地,通过将当前占据流水线阶段的片段中的一个或一些或全部的位置与通过附条件的丢弃测试的所述一组多个片段中的片段覆盖的位置(区域)的范围进行比较来执行。
优选地关于比触发它们的减慢的片段等“更旧的”(在所述片段之前已在流水线中的)片段等执行确定片段等是否应该“终止”或“恢复”的处理。要处理的基元(进而片段和/或采样点)可与时间戳关联以有利于此。
在渲染输出(的平面)中与通过(或未通过)附条件的丢弃测试的(合适的)采样点和/或片段占据相同位置(即,具有相同(x,y)位置)的任何较旧的采样点和/或片段的处理可随后(并优选地随后)(选择性地)停止(或分别恢复)(例如,以同样符合的停止(或恢复)采样点的处理的其它标准为准)。
在优选实施方式中,对采样点和/或片段是否可丢弃以防受到进一步处理的确定以其它检查和/或标准为准。优选地,首先在停止对片段(或采样点)的处理之前检查潜在被丢弃的(例如,将被遮挡的)流水线中的片段(或采样点)的其它属性,以确定片段(或采样点)是否应该基于任何其它原因仍被处理,所述原因例如,因为其具有诸如与遮挡查询关联的仍被需要的副作用。所述检查优选地包括,确定片段(或采样点)是否因为遮挡查询(具有其附带的有效的遮挡查询)或因为其它副作用仍被需要(在这种情况下,不应该将其丢弃)。
因此,在尤其优选的实施方式中,图形处理流水线被配置为,响应于与通过附条件的丢弃测试的片段关联的至少一个采样点,选择性地停止已在流水线中的采样点和/或一个或多个片段的处理。
当采样点或一个或多个片段通过或未通过附条件的丢弃测试时,确定流水线中的任何采样点和/或片段的处理是否可停止或恢复的操作可按照任何合适和期望的方式执行。
优选地,采样点或一个或多个片段通过和/或未通过附条件的丢弃测试的事件触发了将相关信息(诸如,并优选地,通过(或未通过)测试的采样点或片段的位置)广播至处理流水线中的其它(例如,较早的)阶段,所述其它(例如,较早的)阶段优选地利用所述信息来估计它们当前处理的任何采样点或片段的处理是否可停止或恢复(例如,并且优选地,按照上面讨论的方式)。
在关于整个片段进行测试时,根据上面的讨论,该位置信息优选地包括关注的片段的(x,y)位置。在关于一组多个片段进行测试时,该位置信息优选地包括由关注的所述一组多个片段中的片段覆盖的(x,y)位置的范围(仍然根据上面的讨论)。在关于采样点进行测试时,位置信息优选地包括与采样点关联的片段的(x,y)位置,以及关于所述采样点位于所述片段哪个采样点位置的指示(优选地以覆盖掩模的形式,根据上面的讨论)。
广播信息优选地还包括指示经历附条件的丢弃测试的片段等的“新旧程度”的时间戳(并且触发信息的广播)和/或指示所述信号是“恢复”还是“终止”(“停止处理”)信号。
因此,在尤其优选的实施方式中,图形处理***被配置为,如果与预先触发减慢流水线中的采样点和/或片段的片段关联的至少一个采样点通过其最终附条件的丢弃测试,则将关于通过附条件的丢弃测试的关注的至少一个采样点(和/或片段)的信息广播至图形处理流水线的至少一个(优选地其它(并且优选地较早的))阶段,并且图形处理流水线的至少一个阶段被配置为使用与通过附条件的丢弃测试的至少一个采样点和/或片段关联的广播信息来确定与当前在所述阶段中的片段关联的任何片段和/或采样点的处理是否可停止。
类似地,在尤其优选的实施方式中,图形处理***被配置为,如果与预先触发减慢流水线中的采样点和/或片段的片段关联的至少一个采样点未通过附条件的丢弃测试,则将关于未通过附条件的丢弃测试的至少一个采样点(和/或关注的片段)的信息广播至图形处理流水线的至少一个(优选地其它(以及优选地较早的))阶段,并且图形处理流水线的至少一个阶段被配置为使用与未通过附条件的丢弃测试的至少一个采样点和/或片段关联的广播信息来确定与当前在所述阶段中的片段关联的任何片段和/或采样点的处理是否可恢复。
优选地,图形处理流水线被配置为进行这两项处理(即,预先触发减慢流水线中的采样点和/或片段的各个片段将触发广播“恢复”或“终止”信号,这取决于其经历的附条件的丢弃测试的结果)。
因此,在尤其优选的实施方式中,所述图形处理流水线被配置为:
针对与预先触发减慢流水线中的采样点和/或片段的由栅格化器生成的片段关联的至少一个采样点执行附条件的丢弃测试;
如果至少一个采样点通过附条件的丢弃测试,则将关于通过附条件的丢弃测试的至少一个采样点的信息广播至图形处理流水线的至少一个(优选地较早的)阶段;以及
图形处理流水线的至少一个阶段被配置为使用与通过附条件的丢弃测试的至少一个采样点关联的广播信息来确定当前在该阶段中的任何采样点是否将被通过附条件的丢弃测试的至少一个采样点重复渲染,并且如果存在任何这样的采样点,则选择性地停止这些重复渲染的采样点的进一步处理。
类似地,在尤其优选的实施方式中,图形处理流水线被配置为:
针对与预先触发减慢流水线中的采样点和/或片段的由栅格化器生成的片段关联的至少一个采样点执行附条件的丢弃测试;
如果至少一个采样点未通过附条件的丢弃测试,则将关于未通过附条件的丢弃测试的至少一个采样点的信息广播至图形处理流水线的至少一个(优选地较早的)阶段;以及
图形处理流水线的至少一个阶段被配置为使用与未通过附条件的丢弃测试的至少一个采样点关联的广播信息来确定当前在该阶段中的任何采样点是否将不被未通过附条件的丢弃测试的至少一个采样点重复渲染,并且如果存在任何这样的采样点,则选择性地恢复这些采样点的处理。
根据上面的讨论,最优选地,广播至图形处理流水线的阶段的信息包括通过(或未通过)附条件的丢弃测试的采样点和/或片段的位置和优选地新旧程度,和/或图形处理流水线的至少一个阶段被配置为,使用与通过或未通过附条件的丢弃测试的采样点和/或片段关联的广播的位置信息来确定当前在该阶段中的任何采样点和/或片段是否在渲染目标(目的地缓冲器)(例如,被处理的拼块)中与通过或未通过附条件的丢弃测试的采样点和/或片段占据相同位置,并且选择性地分别停止或恢复在渲染目标中与分别通过或未通过附条件的丢弃测试的采样点和/或片段占据相同位置的任何采样点和/或片段的以后的处理。
在附条件的丢弃测试“通过”或“未通过”事件中,确定任何采样点和/或片段是否不再需要被处理或应该被恢复的处理流水线的一个或多个阶段可包括图形处理流水线的任何期望和合适的阶段。它们优选地包括图形处理流水线的作为采样点通过一个或多个早期剔除测试的结果可确定片段等的处理是否应该被减慢的至少一个或多个阶段。为此,处理流水线可根据需要分为许多阶段。
在尤其优选的实施方式中,多个片段(以及优选地所述阶段中的所有片段)和/或采样点可并行地测试。这继而有利于有效地利用可一次测试例如多个片段的补片的附条件的丢弃测试。
确定其处理可停止的采样点和/或片段的处理可停止和/或按照任何期望和合适的方式省略。优选地,这通过将识别出的采样点和/或片段标记为“终止”(无效)来实现,相关处理阶段随后在对其进行任何进一步处理之前检查采样点和/或片段是否未终止(有效)。这将随后避免和/或停止这些采样点和/或片段的任何非必要的处理。
在将要考虑单独采样点时,采样点优选地通过针对关注的片段在覆盖掩模中合适地设置其值而被标记为无效。
当考虑片段整体时,各个片段可例如具有与其关联的“终止”(“无效”)比特(例如,作为其关联的片段数据的一部分),该比特被设置时,指示片段不需要被处理(并且可被丢弃)。在一个优选实施方式中是这样做的。处理阶段可随后例如检查它们接收的各个片段的无效比特以进行处理。如果单独的采样点的测试最终使与片段关联的所有采样点无效,则也可设置该比特。
另选的布置方式(诸如使具有有效标签的像缓存区那样操作的片段队列在设置片段的无效标签时释放队列(缓存区)行)可用作替代,或根据需要另外使用。
虽然任何“终止”片段可仍在流水线中(但未处理),但是在优选实施方式中,采取步骤以从流水线中去除无效片段。这一点可优选地通过在流水线中设置可操作以从流水线中去除(它们接收的)无效片段的一个或多个压缩阶段来实现。所述压缩阶段可包括例如FIFO(先进先出)队列,随着片段通过FIFO前进,队列进行操作以去除任何无效片段(以清除任何空位)。
就确定应该“恢复”其处理的采样点和/或片段而言,可按照任何期望和合适的方式执行。这可首先取决于例如片段等的处理如何减慢。
在优选实施方式中,通过(相对于其“减慢的”去优先状态)增加其处理优先级恢复片段等。优选地,片段等复原至其初始(正常)处理优先级和速度。
在其处理将被减慢的片段和/或采样点的处理通过暂停它们通过流水线的处理而减慢时,片段和/或采样点优选地通过“停止暂停”(不再暂停)它们的处理而恢复。
在一个优选实施方式中,待“恢复”的暂停的片段等从“僵化池”(它们的处理在这里暂停)取出,并返回至流水线以按照正常方式处理。
在其处理将被减慢的片段和/或采样点的处理通过通过将识别出的采样点和/或片段标记为“去优先”(如具有降低的处理优先级)去优先它们通过流水线的处理而减慢时,优选地通过不再将采样和/或片段标记为“去优先”来恢复片段和/或采样点。因此,优选地合适地更新(改变)与片段关联的合适的“去优先”元数据(诸如采样点掩模)和/或“去优先”比特。
类似地,在使用了具有去优先标签的像缓存区那样操作的片段队列释放(如果设置了片段的去优先标签)队列(缓存区)行时,当片段等将要恢复时去优先标签可被合适地更新。
从上面可以理解,在尤其优选的实施方式中,如果片段和/或采样点通过早期剔除(例如,深度)测试并发送触发减慢已在流水线中的一个或多个片段等的处理的信号,那么,如果其通过其将要经受的所有附条件的丢弃测试,则发送触发停止处理(丢弃)其处理已预先减慢的一个或多个片段等的信号;并且如果其未通过其将要经受的附条件的丢弃测试,则发送触发恢复其处理已预先减慢的一个或多个片段等的处理的信号。
从上面还可以理解,其处理已预先减慢的片段和/或采样将随后使其处理停止或恢复,这首先取决于触发减慢采样点和/或片段的片段和/或采样点的处理结果。
在尤其优选的实施方式中,仅关于完全不透明的片段执行本发明的将片段通过一个或多个早期剔除测试的事件随后用于确定处理流水线中的任何片段的处理是否应该减慢等的操作。因此,如果通过早期剔除测试的片段或一组多个片段为透明片段(即,非完全不透明的片段)或包括透明片段,则片段或一组片段优选地仍然继续进行处理,但是优选地与片段或一组片段关联的早期剔除测试通过事件不用于确定已在处理流水线中的任何片段的处理是否应该减慢等。
这直接使得用于需要经历透明测试和透明至覆盖测试的片段的本发明的潜在片段或采样点减慢和“终止”操作操作失效(并等同于直接允许较近的透明的片段和/或采样点可不防止较远的片段和/或采样点在最终输出中仍可见的事实)。
申请人进一步认识到,在片段(或至少与片段关联的采样点)经历并通过早期剔除测试,并符合以上具有全RGB写掩模的标准;片段不具有依赖于先前RGBA值的混合功能;片段的着色器程序不从拼块缓冲器读取;片段完全不透明;片段未基于任何原因强制执行后期深度更新时,针对这样的片段和/或采样点,实际上,可在早期剔除测试阶段立即确定所述采样点等将遮挡已在流水线中的具有相同位置的任何其它采样点等。
这是可能的,因为例如在早期深度测试中,具有相同位置的已在流水线中的采样点和/或片段可被假设位于通过早期剔除测试的新的采样点和/或片段的后方,并且因此可假设将被那些稍后的采样点和/或片段遮挡(如果稍后的采样点和/或片段不透明)(如果通过早期深度测试,并且不强制进行后期深度更新,则通过测试的新的采样点和/或片段必须位于具有相同位置的任何较早的采样点和/或片段前方)。
虽然在这种情况下可能仍然简单地将“减慢”信号发送至已在流水线中的片段等,但是申请人已经认识到在所述片段等通过早期剔除测试时,其将实际上可能安全地立即(此时)停止处理已在流水线中的合适的片段等,。
因此,在优选实施方式中,本发明可也(并且确实也)使用采样点通过早期剔除测试的结果来确定图形处理流水线中正处理的另一采样点的处理是否可停止(至少在可在早期剔除测试阶段中确知测试的采样点和/或片段将“重复渲染”(遮挡)已在流水线中的采样点和/或片段的情况下)。
这继而使得本发明与例如现有的早期深度测试技术相比能够进一步降低在图形处理流水线中不必要地处理隐藏面的程度。
因此,在尤其优选的实施方式中,本发明的方法包括以下步骤:
在片段被发送至渲染器以进行处理之前,关于与由栅格化器生成的片段关联的至少一个采样点执行早期剔除测试;以及
如果至少一个采样点通过早期剔除测试,则向前发送片段以进行处理;并且
针对具有选择的属性的片段,作为至少一个采样点通过早期剔除测试的结果,根据片段的属性确定图形处理流水线中的另一采样点的处理是否应该减慢,或者图形处理流水线中的另一采样点的处理是否可停止。
针对符合(潜在地)立即停止已在图形处理流水线中的其它片段等的处理的标准的那些采样点和/或片段等,该操作优选地与上述用于减慢流水线中的片段等的处理操作相似,只是作为减慢已在流水线中的片段等的处理的替代,片段等的处理(合适地)停止((立即)丢弃片段等)。这一点可以并且优选地按照与上述操作对应的方式实现并实施,以减慢流水线中的片段等的处理。
用于通过早期剔除测试的片段潜在地触发“终止”(丢弃)流水线中的另一片段等的标准优选地包括:具有全RGB写掩模的片段;不具有依赖于先前RGBA值的混合功能的片段;用于不从拼块缓冲器读取的片段的着色器程序;完全不透明的片段;以及未强制(通过应用程序员)执行后期深度更新的片段。
图形处理流水线的阶段可被配置为按照任何合适和期望的方式按照本发明的方式进行操作。在优选实施方式中,所述阶段包括组合的测试和更新逻辑,其可进行操作以执行剔除和/或附条件的丢弃测试,并且如果通过(或未通过)测试(至少针对附条件的丢弃测试)并且所述片段符合任何要求的标准,则将通过(或未通过)事件和与其关联的必要信息“广播”至图形流水线的合适的阶段。
响应于早期剔除测试和附条件的丢弃测试“通过”(或“未通过”)(至少针对附条件的丢弃测试)事件的图形处理流水线的一个或多个阶段可被配置为按照任何合适和期望的方式执行这个过程。优选地,它们具有与它们关联的代理,所述代理对关注的阶段中的片段负责并接收测试“通过”或“未通过”信息,并且随后可进行操作以在它们的“域”(阶段)中识别任何其处理可被减慢或恢复和/或不再需要被处理的片段和/或采样点,并且随后减慢或恢复(复原)那些片段和/或采样点的处理和/或防止那些片段和/或采样点的任何不必要的进一步处理。
在一些实施方式中,图形处理流水线包括存储本文所述的数据和/或存储用于执行本文所述的处理的软件的一个或更多个存储器和/或存储器装置,和/或与它们进行通信。图形处理流水线还可与主机微处理器进行通信,和/或与基于图形处理器所生成的数据显示图像的显示器进行通信。
图形处理流水线的渲染器应该可操作以渲染(着色)其接收的图形片段,以生成期望的输出图形片段数据,如本领域中所知的。图形处理流水线的渲染器可包含任何合适和期望的渲染元件,并可按照任何合适和期望的方式被构造。因此,例如,图形处理流水线的渲染器可包括固定功能渲染流水线,包括一个或更多个固定功能渲染阶段,诸如纹理映射器、混合器、雾化单元等。在优选实施方式中,渲染器包括片段着色器(着色器流水线)(即可编程流水线阶段,其可操作和可编程以在片段上执行片段着色程序,从而渲染它们)。在使用片段着色时,本发明可尤其有利,由于片段着色可为相对昂贵的处理,并且更有效的早期隐藏面消除在进行了片段着色之处尤其有利。
本领域技术人员应该理解,渲染器将处理其接收的片段,随后生成输出渲染的片段数据,其中渲染的片段数据随后优选地写至外部存储器中的输出缓冲器,诸如帧缓冲器,以进行使用(例如,在显示器上显示帧)。
不管图形处理***可提供的输出形式如何,都可使用本发明。因此,例如,在渲染输出旨在形成用于(例如,在屏幕或打印机上)显示的图像(帧)时,可使用本发明(并且在一个优选实施方式中就是这种情况)。然而,本发明还可用于渲染输出不旨在用于显示的情况,例如渲染输出是使用图形处理***生成的纹理(例如,在“渲染至纹理”操作中),或者实际上,使用图形处理***生成的输出是任何其它形式的数据阵列。
可按照任何期望和合适的方式执行本发明的各种功能。例如,本发明的功能可根据需要在硬件或软件中实现。因此,例如,本发明的各种功能性元件、处理阶段和“装置”可包括可操作以执行各种功能等的合适的一个或多个处理器,一个或多个控制器、功能性单元、电路、处理逻辑、微处理器布置方式等,诸如可编程以按照期望方式操作的合适地构造的专用硬件元件或处理电路和/或可编程硬件元件或处理电路。
在这里还应该注意,本领域技术人员应该理解,本发明的各种功能等可在给定处理器上并行地复制和/或执行。同样地,各种处理阶段可根据需要共享处理电路等。
本发明可应用于具有“流水线”布置方式的图形处理***、图形处理器和渲染器的任何合适的形式或构造。图形处理流水线可包含图形处理流水线正常包括的任何合适和期望的处理阶段等。在尤其优选的实施方式中,图形处理***是基于拼块的图形处理***。类似地,在优选实施方式中,所述图形处理***是多核***(即,包括多个图形处理核)。
因此,本发明延伸至包括根据本文描述的本发明的各方面中的任何一个或更多个的设备,或根据本文描述的本发明的各方面中的任何一个或更多个的方法操作图形处理器和图形处理平台。以上面讨论的执行特定功能所必需的任何硬件为条件,所述图形处理器可另外包括图形处理器包括的通常功能性单元等的任何一个或更多个或全部。
本领域技术人员还应该理解,本发明的所有描述的方面和实施方式可合适地包括本文所述的优选和可选特征中的任何一个或更多个或全部。
根据本发明的方法可至少部分地利用例如计算机程序的软件实施。因此,可看出,当从其它方面看时,本发明提供了当安装在数据处理装置上时特别适于执行本文所述的方法的计算机软件,和适于执行本文所述的一个或多个方法的所有步骤的包括代码装置的计算机程序(当所述程序在数据处理***上运行时)。数据处理***可为微处理器、可编程FPGA(现场可编程门阵列)等。
因此,本发明可合适地实现为用于计算机***的计算机程序产品。这种实现可包括固定在有形介质(诸如非暂时性计算机可读介质,例如,磁盘、CD ROM、ROM、RAM、闪存或硬盘)上的一系列计算机可读指令。这种实现还包括可通过调制解调器或其它接口装置通过有形介质(包括但不限于,光学或模拟通信线路)或利用无线技术(包括但不限于,微波、红外或其它传输技术)无形地传输至计算机***的一系列计算机可读指令。所述一系列计算机可读指令实现本文先前描述的功能的全部或一部分。
附图说明
现在将仅通过举例的方式并参照附图描述本发明的多个优选实施方式,附图中:
图1示意性地示出了根据本发明的图形处理***的实施方式。
具体实施方式
现在将描述本发明的多个优选实施方式。将主要参照本发明在图形处理***中的使用描述这些实施方式。然而,如上所述,本发明可应用于包括早期“数据实体”剔除测试的其它流水线数据处理***。
图1示意性地示出了可根据本发明操作的图形处理器1。
图1示出了关于本实施方式的操作的图形处理器1的主要元件和流水线阶段。本领域技术人员应该理解,可存在未在图1中示出的图形处理器的其它元件。在这里应该注意,图1仅是示意性的,并且即使示出的功能性单元和流水线阶段在图1中示意性地示出为分离的阶段,例如在实践中它们也可共享重要的硬件电路。还应该理解,图1所示的图形处理器的各个阶段、元件和单元等可根据需要实现,并且将因此包括例如用于执行必要的操作和功能的合适的电路和/或处理逻辑等。
图1所示的图形处理***是基于拼块的***。因此,如本领域中所知的,图形处理器1将生成渲染输出数据阵列(诸如要生成的输出帧)的拼块。(本发明可等同地应用于其它***,诸如上面讨论的立即模式渲染***。)如本领域中所知的,输出数据阵列可通常为旨在显示在显示装置(诸如屏幕或打印机)上的输出帧,但可还例如包括图形处理器的“渲染到纹理”输出等。
图1示意性地示出了已经生成用于输入至栅格化处理的图形基元(多边形)2之后的流水线阶段。因此,此时图形数据(顶点数据)已经历变形和光照操作(未示出),并且基元设置阶段(未示出)已响应于命令和提供至图形处理器1的顶点数据设置要被渲染的基元,如本领域中所知。
如图1所示,图形处理器1的这部分片段处理流水线包括多个处理阶段,该多个处理阶段包括:栅格化阶段3、早期分级ZS(深度和模板)测试阶段4、早期ZS(深度和模板)阶段13、片段着色阶段6形式的渲染阶段和后期ZS(深度和模板)测试阶段7。
如本领域中所知的,栅格化阶段3进行操作以将构成渲染输出(例如,要显示的图像)的基元栅格化为单独的图形片段以进行处理。因此,栅格化器3接收图形基元2以进行渲染,将基元栅格化为采样点并生成具有合适的位置(表示合适的采样位置)的图形片段,以渲染基元。在本实施方式中,通过栅格化器3生成的各个图形片段表示多个(通常4个)采样位置(与所述多个采样位置关联)。(当然,其它布置方式将是可以的)。各个图形片段与指示片段表示多个采样位置的哪个采样点的覆盖掩模关联,它实际上用于渲染(即,实际由关注的基元覆盖)。
在本实施方式中,栅格化器3是分级栅格化器,其进行操作以相对于越来越小的采样点补片(因此,相对应地,片段补片)反复地测试基元,直至对应于2x2片段组的最小补片尺寸(即,直至可被栅格化为2x2片段组的一系列采样点),丢弃不(至少部分地)覆盖基元的任何补片。测试的各个补片对应于给定的一组片段。
通过栅格化器3来实现这一点:即从渲染目标区域的大补片开始并测试关注的基元是否在该补片内。如果不是这样,则丢弃整个补片,并测试下一补片,等等。另一方面,如果发现基元位于所述补片内(以至少部分地覆盖所述补片),则将该补片再次划分为4部分,并且随后按照相同方式测试每个“子补片”,等等,直至达到最小补片尺寸。
一旦达到最小补片尺寸(即,至少部分地覆盖已被识别的基元的2x2片段的补片),栅格化器3就随后测试该最终补片中的单独的采样点以确定采样点是否被所述基元覆盖。栅格化器3随后对应于发现被基元覆盖的采样点生成和输出单独的片段,以进行渲染。
无论采样位置是否被覆盖(即,实际上,无论片段是否用于渲染该采样点(即针对该采样点,无论其数据是否应该被存储)),针对与片段关联的一组采样位置中的各个采样位置,栅格化器3还与位图形式的覆盖掩模指示的各个片段关联。
当然,其它栅格化布置方式是可以的。
如图1所示,栅格化器3还与早期“分级”深度(Z)和模板测试阶段4关联。该分级深度和模板测试阶段4在通过栅格化器3生成的补片上执行“早期”深度和模板测试以确定这些补片是否可被剔除。
因此,由栅格化器生成的采样点(实际上,片段)的各个补片被发送至早期分级深度和模板测试阶段4,其随后在采样点(片段)的补片上执行Z(深度)测试以在该阶段确定补片是否可被丢弃(剔除)。因此,早期分级深度和模板测试器4针对其从栅格化器3接收的各个补片通过在补片上进行合适的深度采样导出深度值范围,并且将该深度值范围与先前导出并存储的与补片覆盖的采样(片段)位置关联的深度值范围进行比较,以尝试确定补片是否将被要渲染的其它片段和采样点遮挡,或是否重复渲染要渲染的其它片段和采样点(例如,将随后出现在流水线上,或者已经被渲染的片段和采样点)。与此同时,执行早期模板测试。
如果正被测试的补片未通过早期深度和模板测试,则在任何进一步处理中将其丢弃(剔除)。
如果正被测试的补片通过早期深度和模板测试,则其返回至栅格化器3以进一步再次划分为更小的“子补片”,如上面的讨论。各个“子补片”随后返回至早期深度和模板测试器4以进行测试,等等,直至达到最小补片尺寸。
当在从栅格化器3接收的多个采样点的补片上执行深度和模板测试时早期分级深度和模板测试阶段4所使用的深度值范围被存储在深度和模板缓冲器5中。针对缓冲器表示的各个补片尺寸和位置,将深度值(和模板值)的范围存储在深度和模板缓冲器5中(尤其是针对栅格化器3针对正被处理的拼块可生成的各个补片尺寸和位置)。
将针对各个补片存储的深度值范围初始设置为缺省值,或设置为补片的期望深度值范围(如果可确定)。(在一些布置方式中,可预先已知用于拼块的基元可具有的可能的深度值范围。随后,其可用于为深度缓冲器5设置关注的补片的期望深度值的范围。)随后,随着通过早期分级深度和模板测试阶段4、早期深度和模板测试阶段13和后期深度和模板测试阶段7测试的补片和/或采样点通过各个深度和模板测试,存储的补片深度值范围得到更新。
即使已经在相同位置的流水线中的较早的片段还未完成任何深度或模板测试(例如,未经历早期分级深度和模板测试4和早期深度和模板测试13,并且未经历后期深度和模板测试7),针对正在深度和模板缓冲器5中渲染的拼块的多个采样点位置(因此,片段)的补片存储期望范围的深度值也意味着早期分级深度和模板测试器4可仍关于栅格化器3生成的采样点位置的补片执行深度和模板测试。这是因为即使还未执行关于较早的片段的深度测试,期望的深度值范围也可用于确定深度测试(例如)可具有何种结果。因此,这允许早期分级深度和模板测试4用于(潜在地)按照本实施方式的方式使流水线中的较早的片段的处理停止,即使这些较早的片段实际上还未经历深度或模板测试也是如此。
针对采样点位置的补片存储和测试深度值的范围意味着采样点位置的较大补片可容易受到早期深度和模板测试(由于存储的范围允许测试以确定补片是否将完全在存储的范围之外,并且因此,例如完全通过早期分级深度和模板测试)。因此,如将在以下进一步讨论的,这可有利于广播在单个处理周期中影响渲染目标的大得多的区域的早期深度和模板测试通过事件,从而其可因此能够(潜在地)在一个处理周期中使补片区域中的整个片段组的处理停止(而不用例如必须潜在地使各个片段的处理逐个地停止)。
早期分级深度和模板测试阶段4被配置为按照适当地保守的方式操作,如本领域中所知的。
一旦达到最小补片尺寸(在该实施方式中,2x2片段的补片),栅格化器3就将表示通过早期分级Z和模板测试阶段4的补片(因此,采样点)的片段发布到图形处理流水线的其余部分,以进行处理。
该处理的第一部分是在早期深度和模板测试阶段13使通过栅格化器3发布(输出)的各个片段受到早期深度和模板测试。这种早期深度和模板测试阶段13在与通过栅格化器3发布的片段关联的单独的(覆盖的)采样位置上执行深度和模板测试(即,每采样点分辨率)。
因此,早期深度和模板测试器13使用存储在深度和模板缓冲器5中的每采样位置深度和模板值。因此,除每补片深度值范围之外,深度和模板缓冲器5针对缓冲器表示的各个采样点(尤其是针对正被处理的拼块的各个采样点位置)分别存储合适的深度(Z)值和模板值。当正被早期深度和模板测试阶段13和后期深度和模板测试阶段7测试的采样点通过各个深度和模板测试时,这些值被存储在深度和模板缓冲器5中。
在该实施方式中,深度和模板缓冲器5被配置为两个不同的缓冲器(但是它们可在同一物理存储器中),一个缓冲器存储每补片深度范围,并且另一个存储每采样深度值。当然,其它布置方式是可以的。
早期深度和模板测试阶段13再次被配置为按照适当地保守的方式操作,如本领域中所知的。
因此,通过“队列”12(这种队列12的功能和目的将在下面更详细地讨论)将通过早期深度和模板测试阶段13的片段(即,具有通过早期深度和模板测试阶段13的至少一个关联的采样位置的片段)向前发送到片段着色阶段6(渲染器),如图1所示。
(未通过早期深度和模板测试阶段13的片段被早期深度和模板测试阶段13剔除,如本领域中所知的。)
片段着色阶段6在其接收的片段上执行合适的片段处理(渲染)操作,以针对渲染输出(例如,用于片段的显示)处理片段,从而生成合适的片段数据等,如本领域中所知的。
该片段处理可包括任何合适和期望的片段着色处理,诸如在片段上执行片段着色程序、对片段应用纹理、对片段应用混合、雾化或其它操作等,以生成合适的片段数据,如本领域中所知的。在本实施方式中,片段着色阶段6采用着色器流水线(可编程片段着色)的形式,但是如果需要的话,诸如另外使用或取代固定功能片段着色单元的其它布置方式也是可以的。
接着是“后期”片段Z和模板测试阶段7,除了别的以外,(如果要在例如未经历早期Z和模板测试的片段上执行该阶段7)该阶段7在着色的片段(在与着色的片段关联的覆盖的采样点上)上执行流水线深度测试的末尾,以确定渲染的片段表示的采样点是否将重复渲染其值被当前存储在拼块缓冲器5中的片段(即,确定用于从片段着色阶段6发布的片段的片段数据是否应该被存储在拼块缓冲器中(应该替代或修改已被渲染的片段的拼块缓冲器中的片段数据))。
因此,后期深度测试阶段7将从片段着色阶段6发布的片段(与该片段关联)的深度值与针对关注的采样位置的存储在深度缓冲器5中的(每采样位置)深度值进行比较。通过后期深度测试7的采样点的深度值也合适地写到Z-缓冲器5以进行更新,如本领域中所知的。
这种后期片段深度和模板测试阶段7还在片段上执行任何必要的模板测试。
通过后期片段测试阶段7的片段随后受到片段上所需的任何其余操作,诸如与帧缓冲器混合、抖动等(未示出)。
最后,输出片段数据值写到合适的拼块缓冲器8,如本领域中所知,所述拼块缓冲器8针对缓冲器表示的各个采样点(本质上针对正被处理的拼块的各个采样点)存储合适的值(例如颜色值)。
一旦已经处理了各个拼块,其数据就例如从拼块缓冲器8输出至主存储器(例如,主存储器中的帧缓冲器)(未示出)以进行存储,并且下一拼块随后被处理,等等,直至已经处理了足够多的拼块以生成整个渲染输出(例如,要显示的帧(图像))。
当然,用于片段处理流水线的其它布置方式是可以的。
上面描述了图1所示的图形处理***的基本栅格化和渲染处理。现在,将相应地描述根据本发明的实施方式的图1所示的图形处理***的操作。
根据本发明,本实施方式分别使用通过早期分级深度测试4的补片的结果,或通过早期深度测试13的片段的结果,来确定在图形处理流水线中的其它片段的处理是否应该减慢或可停止。
因此,如图1所示,早期分级深度和模板测试阶段4和早期深度和模板测试阶段13被配置为:如果片段的补片或片段分别通过对应的早期剔除测试,则不仅将补片或片段传递至处理流水线中的其下一阶段,而且还将与早期剔除测试“通过”事件相关的信息广播至流水线的各阶段(如图1中的虚线9、10、11、14所示)。它们还被配置为针对与通过早期深度测试(可在此处实现)的片段关联的采样点利用相关深度值和/或模板值更新深度和模板缓冲器5。
在本实施方式中,剔除测试“通过”事件的广播和深度缓冲器的更新等并不针对通过早期分级深度测试4和早期深度测试13的所有补片和片段执行,而是仅针对符合特定标准(具有特定属性)的补片和片段执行。这样可避免当稍后的片段通过早期深度测试时错误地减慢和丢弃流水线中的片段。
本实施方式在早期分级深度和模板测试单元4和早期深度和模板测试单元13中使用“自动检测”方案来确定早期深度测试“通过”事件是否应该广播至流水线,以及早期深度测试“通过”事件广播应该采取的形式。
针对将可触发图形处理流水线中的其它片段的处理停止的早期深度测试“通过”事件广播(发送)至流水线,这种自动检测方案具有以下需求:新的补片或片段需要已通过早期z/s测试(并通过早期z/s测试而非后期z/s测试处理);新的补片或片段需要具有全rgb写掩模(z/模板已写至其上)和不依赖于先前的rgba值的混合功能;用于新的补片或片段的着色器不能读拼块缓冲器;以及新的补片或片段不需要强制进行后期z更新。
(由于以下原因,新的补片或片段需要强制进行后期z更新:例如:透明测试;透明至覆盖;着色器包含丢弃;混合着色器包含丢弃;或者着色器中的较早的片段强制进行后期z更新。因此,这种“强制后期z更新”需求意味着:当通过早期Z测试时仅针对完全不透明的补片和片段执行立即停止流水线中的其它片段的处理的操作。这直接地允许较近的透明的补片或片段可不防止较远的片段在最终输出中仍然可见的事实。)
符合以上标准的新的补片或片段触发了将可触发图形处理流水线中的其它片段的处理的停止的早期深度测试“通过”事件广播(发送)至流水线。如果补片或片段不符合这些标准,则早期分级深度和模板测试单元4和早期深度和模板测试单元13中的“自动检测”方案随后确定通过早期深度测试的补片或片段是否应该触发将可触发图形处理流水线中的其它片段的处理的减慢的早期深度测试“通过”事件广播(发送)至流水线。
针对将可触发图形处理流水线中的其它片段的处理的减慢的早期深度测试“通过”事件广播(发送)至流水线,所述自动检测方案具有以下需求:新的补片或片段需要已通过早期z/s测试(并通过早期z/s测试而非后期z/s测试处理);新的补片或片段需要具有全rgb写掩模(z/模板已写至其上)和不依赖于先前的rgba值的混合功能;用于新的补片或片段的着色器不能读拼块缓冲器;以及新的补片或片段不需要强制进行后期z更新(后期z更新的原因有:透明测试、透明至覆盖、着色器包含丢弃、混合着色器包含丢弃、或者着色器中的具有相同位置的较早的片段强制进行后期深度更新)。
因此,在本实施方式中,允许(使用)由于以下原因而强制执行后期深度更新的片段触发操作以(潜在地)减慢其它片段和/或采样点的处理,所述原因即:透明测试、透明至覆盖测试、着色器包含丢弃;混合着色器包含丢弃;或者着色器中的较早的片段强制进行后期深度更新。
这些标准的影响主要是将受到作为其处理的一部分的任何形式的附条件的丢弃测试的片段将触发将可触发图形处理流水线中的其它片段的处理的减慢的早期深度测试“通过”事件广播至流水线,而不是将可触发图形处理流水线中的其它片段的处理的停止的早期深度测试“通过”事件广播至流水线。这是因为在片段受到附条件的丢弃状态(测试)时,即使通过早期深度测试,其也不能在早期深度测试阶段无疑地确定所述片段将最终遮挡已在流水线中的片段。
虽然本实施方式使用“自动检测”方案来触发与通过早期分级深度测试4或早期深度测试13的补片或片段有关的早期深度测试通过事件信息的广播,但是也可使用状态位作为用于此的备用布置方式。状态位可设为关闭“自动检测”方案,并且作为替代,通过另一(例如,剔除测试通过事件“激活”)状态位的设置(与否)来触发早期剔除测试通过事件信息广播。这将继而使得例如应用程序员能够设置是否将要执行剔除测试通过事件操作(通过设置合适的状态位)。
早期分级深度和模板测试阶段4和早期深度和模板测试阶段13包括组合的测试和更新逻辑,它们可进行操作以执行剔除测试,以及如果通过测试并且补片或片段符合需要的标准,则将通过事件和与其关联的必要的位置信息“广播”至图形流水线的合适阶段,并且更新例如深度缓冲器中的深度信息等。
在本实施方式中,当“合格的”采样点的补片(即,符合触发“停止处理”或“减慢处理”信号的发送的标准的采样点的补片)通过早期分级深度测试4时,早期分级深度和模板测试阶段4将通过测试的补片覆盖的(x,y)位置广播9、10、11至队列12、片段着色阶段6、栅格化器3和早期分级深度和模板测试阶段4本身(如图1中的虚线11所示)。广播信息还包括广播信号是否用于确定任何片段的处理是否应该停止(任何片段是否应该被丢弃),或确定任何片段的处理是否应该减慢的指示,即,广播信号是否为片段“终止”信号或片段“减慢”信号的指示。如将在稍后的描述,图形处理流水线的这些阶段随后利用广播信号类型指示和位置信息来估计它们当前处理的任何片段的处理是否可停止或是否应该(适当地)减慢。
在本实施方式中,早期分级深度测试通过事件被广播至分级深度和模板测试阶段4和栅格化器3,因为栅格化器3和早期分级深度和模板测试阶段4如上面讨论地按照重复方式操作,并且可存在例如仍经历栅格化和早期分级深度和模板测试处理的先前生成的采样点的补片,其中如果可确定稍后的例如采样位置的补片重复渲染它们,则可省略它们的处理。
除将早期分级深度测试通过事件广播至图形处理流水线的其它阶段之外,早期分级深度(Z)和模板测试阶段4还被配置为(当合适时)利用用于通过早期分级深度测试的采样点的补片的相关深度值范围和/或模板值更新深度和模板缓冲器5。因此,这使得这些缓冲器能够包含(例如)已经历(并通过)早期分级深度和模板测试4的补片的深度值范围的最新记录,从而使得早期分级深度和模板测试更加有效。
深度缓冲器等的这种更新按照合适地保守方式执行,以避免更新可在补片等的处理中导致错误的任何风险。
相应地,在本实施方式中,当“合格的”片段通过早期深度测试13时,早期深度和模板测试阶段13将通过测试的片段覆盖的(x,y)位置和广播信号类型指示(根据关注的片段的属性)广播14至队列12,以及至片段着色阶段6(如图1中的虚线14所示)。如将在稍后的描述,图形处理流水线的这些阶段随后利用广播信号类型指示和位置信息来估计它们当前处理的任何片段的处理是否可停止或是否应该(适当地)减慢。
再一次,除将早期深度测试通过事件广播至图形处理流水线的其它阶段之外,早期深度(Z)模板测试阶段13被配置为利用用于与通过早期深度测试的片段关联的采样点的相关深度值和/或模板值更新深度和模板缓冲器5。因此,这使得这些缓冲器能够包含(例如)已经历(并通过)早期分级深度和模板测试13的采样点的深度值范围的最新记录,从而使得早期和后期分级深度和模板测试更加有效。
响应于通过早期分级深度和模板测试阶段4和早期深度和模板测试阶段13广播早期深度测试“通过”事件片段“终止”信号(即,指示响应于广播信号应该确定任何片段的处理是否可停止),作为早期剔除测试“通过”事件的结果,接收“终止”信号广播的处理流水线的阶段随后利用广播信号中的位置信息来确定它们当前包含的任何片段是否不再需要被处理。通过将当前占据流水线阶段的所有片段的(x,y)位置与由通过早期分级深度和模板测试阶段4或早期深度和模板测试阶段13广播的广播“终止”信号指示的(x,y)位置(即,与通过早期剔除测试并触发片段“终止”信号的广播的片段和/或补片的(x,y)位置)进行比较来执行这个过程(这样,实际上,将识别将被通过早期深度和模板测试的补片或片段遮挡的当前在该阶段中的任何片段)。
以同样符合的用于使片段的处理停止的特定其它标准为准,随后停止具有与通过早期剔除测试并触发片段“终止”信号的补片或片段相同的(x,y)位置的任何当前片段的处理。具体地说,还检查潜在将要丢弃的(即,将被遮挡的)流水线中的片段是否应该基于任何其它原因而继续被处理,所述原因例如,因为其具有诸如与未解决的遮挡查询关联的仍被需要的副作用。如果被遮挡的片段不具有其附带的仍然有效的遮挡查询(并且不具有其它需要的副作用),则将其丢弃(其处理停止),当如果其确实具有其附带的有效的遮挡查询(或一些其它仍被需要的副作用),则不将其丢弃(即,继续其处理)。通过关注的图形处理流水线的阶段来执行这种检查。
在早期剔除测试片段“终止”“通过”事件中按照合适地保守的方式执行对不再需要处理的片段的确定,以降低不正确地丢弃片段使其不再接受后面的处理的风险。
图形处理流水线的各个阶段并行地测试所述阶段中的所有片段。这使得流水线阶段能够以与早期剔除测试通过事件可生成可能的剔除机会的速率相同的速率丢弃片段。
通过将识别出的片段标记为“终止”(无效)使稍后的处理阶段中的片段的处理停止。为了促进这一点,使各个片段具有与其关联的“终止”比特(例如,作为其关联的片段数据的一部分),如果对该比特进行设置,则指示该片段不需要被处理(并且可丢弃)。流水线处理阶段被配置为检查它们接收以进行处理的各个片段的终止比特(并且因此随后处理或不处理所述片段)。
另选的布置方式(诸如使具有有效标签的像缓存区那样操作的片段队列在设置片段的无效标签时释放队列(缓存区)行)可用作替代,或根据需要另外使用。
将早期剔除测试片段“终止”通过事件广播至其的图形处理流水线的各个阶段具有对在其本地域中(即,在关注的阶段或处理阶段的一部分中)的所有片段负责的对应的代理。各个代理将关于所述片段的信息保持在其本地域中,并可进行操作以响应于其接收的早期剔除测试片段“终止”通过事件将片段标记为终止(无效),从而避免和/或停止对它们的不必要的处理。代理被配置为能够并行地测试它们的本地域中的所有片段。
响应于通过早期分级深度和模板测试阶段4和早期深度和模板测试阶段13广播早期深度测试“通过”事件片段“减慢”信号(即,指示响应于广播信号应该确定任何片段的处理是否应该减慢),作为早期剔除测试“通过”事件的结果,接收“减慢”信号的处理流水线的阶段广播随后利用广播信号中的位置信息来确定它们当前包含的任何片段的处理是否应该减慢。
通过将当前占据流水线阶段的所有片段的(x,y)位置与由通过早期分级深度和模板测试阶段4或早期深度和模板测试阶段13广播的广播“减慢”信号指示的(x,y)位置(即,与通过早期剔除测试并触发片段“减慢”信号的广播的片段和/或补片的(x,y)位置)进行比较来执行该过程(这样,实际上,将识别将被通过早期深度和模板测试的补片或片段遮挡的当前在该阶段中的任何片段)。
以同样符合的用于延迟片段的处理的特定其它标准为准,随后减慢具有与通过早期剔除测试并触发片段“减慢”信号的补片或片段相同的(x,y)位置的任何当前片段的处理。具体地说,还检查潜在将被减慢的流水线中的片段是否应该基于任何其它原因而继续被处理,所述原因例如,因为其具有诸如与未解决的遮挡查询关联的仍被需要的副作用。如果将被减慢的片段不具有其附带的仍然有效的遮挡查询(并且不具有其它需要的副作用),则减慢其处理,但是如果其确实具有其附带的有效的遮挡查询(或一些其它仍被需要的副作用),则不减慢其处理。通过关注的图形处理流水线的阶段来执行这种检查。
在早期剔除测试片段“减慢”“通过”事件中按照合适地保守的方式执行对应该减慢其处理的片段的确定,以降低不正确或不合适地延迟流水线中的片段的处理的风险。
图形处理流水线的各个阶段并行地测试所述阶段中的所有片段。这使得流水线阶段能够以与早期剔除测试通过事件可生成可能的“减慢”机会的速率相同的速率延迟(减慢)片段。
将早期剔除测试片段“减慢”通过事件广播至其的图形处理流水线的各个阶段具有对在其本地域中(即,在关注的阶段或处理阶段的一部分中)的所有片段负责的对应的代理(其可为处理片段“终止”早期剔除测试通过事件的同一代理)。各个代理将关于所述片段的信息保持在其本地域中,并可进行操作以响应于其接收的早期剔除测试片段“减慢”通过事件将片段标记为去优先(减慢)以减慢它们的处理。代理被配置为能够并行地测试它们的本地域中的所有片段。
“减慢”片段的处理与正常相比更慢,但是应该注意,期望的是,片段的处理只是相对于其通过流水线正常处理的速度而言减慢或延迟,而非片段此时被“减慢”丢弃(永远停止)从而不通过流水线进行进一步处理。
在本实施方式中,布置方式是使得“减慢”片段的处理减慢至触发片段的处理减慢的片段将往往超过流水线中的“减慢”片段点的程度,使得对触发关注的“减慢”片段的处理减慢的片段的处理将往往(很可能)在“减慢”片段在流水线中的处理完成之前完成附条件的丢弃测试。如将在稍后的描述,这继而使得“触发”片段能够用于(潜在地)丢弃(“终止”)减慢片段,以防其通过流水线被进一步处理。
在本实施方式中,通过以下步骤将其处理将被减慢的片段的处理减慢:通过流水线将它们的处理去优先(即,通过降低它们流水线处理的优先级)。这通过为“减慢”片段赋予用于缓存区访问和/或用于通过流水线的其它处理的较低优先级(相对于未减慢的片段)来实现。
通过将识别出的片段标记为“去优先”(为具有降低的处理优先级)来将片段“去优先”。相关流水线处理阶段随后在对片段进行任何处理之前检查片段是否被标记为“去优先”,并且因此随后用正常优先级或降低的优先级处理所述片段。
各个片段具有与其关联的“去优先”比特(例如,作为其关联的片段数据的一部分),该比特如果被设置,则指示片段的处理已被去优先。处理阶段可随后检查它们接收以进行处理的各个片段的“去优先”比特。
可根据需要使用用于减慢和延迟片段的处理的另选的布置方式。例如,具有去优先标签的像缓存区那样操作的片段队列在设置了片段的去优先标签时释放队列(缓存区)行的布置方式可用作替代或根据需要另外使用。
另一合适的布置方式可为:将具有要处理的指令的片段布置在片段池中,当完成指令时,并且当存在预备用于执行的缓存命中和指令时,合适的片段随后被从片段池中取出并执行。通过当确定是否应该允许将片段从片段池中取出时增加优先级状态作为额外考虑因素,片段可随后使它们的处理优先级降低。
类似地,片段通过暂停它们通过流水线的处理可使它们的处理减慢(例如,并且优选地,直至“触发”片段和/或采样点完成其一个或多个附条件的丢弃测试)。可实现这种流水线中的片段处理的暂停,例如,通过将其处理将被暂停的任何片段布置在“僵化池(zombie pool)”(它们的处理在这里暂停)中。
当作为补片通过早期分级深度测试4或片段通过早期深度测试13的结果预先触发了片段“减慢”信号的发送(广播)的片段经历其附条件的丢弃测试时,本实施方式除利用附条件的丢弃测试的丢弃或继续处理与(常规的)片段关联的采样点的结果之外还使用片段通过或未通过附条件的丢弃测试的结果来确定图形处理流水线中的其它较早的片段的处理是否可停止或应该被恢复。
因此,如图1所示,将执行附条件的丢弃测试的着色器流水线6被配置为,当预先触发了片段“减慢”信号的发送(广播)的片段经历附条件的丢弃测试时,不仅丢弃片段或者使片段前进至其处理的下一阶段(取决于测试结果),而且将关于附条件的丢弃测试“通过”或“未通过”事件的信息广播至流水线的多个阶段(如图1中的虚线20、21、22和23所示)。
针对预先触发了片段“减慢”信号的发送(广播)的所有片段执行附条件的丢弃测试“通过”或“未通过”事件的广播。
在本实施方式中,着色器流水线6确定附条件的丢弃测试“通过”或“未通过”事件是否应该广播至流水线,以及附条件的丢弃测试“通过”或“未通过”事件广播应该采取的形式。广播还包括基元的“时间戳”(从而仅较早的基元(潜在地)被信号影响)。
当片段通过其将要经受的最终附条件的丢弃测试(即,通过其将要经受的所有附条件的丢弃测试)时,其触发将附条件的丢弃测试“通过”事件广播(发送)至流水线,所述附条件的丢弃测试“通过”事件可触发图形处理流水线中的和进入图形处理流水线的在触发将附条件的丢弃测试“通过”事件广播(发送)至流水线的片段之前的其它片段的处理停止。
未通过附条件的丢弃测试的片段触发将附条件的丢弃测试“未通过”事件广播(发送)至流水线,所述附条件的丢弃测试“未通过”事件可触发图形处理流水线中的和进入图形处理流水线的在触发将附条件的丢弃测试“通过”事件广播(发送)至流水线的片段之前的预先减慢片段的处理恢复(复原)。
着色器流水线阶段6包括组合的测试和更新逻辑,其可进行操作以执行附条件的丢弃测试,并且(如果片段符合要求的标准,则)将通过或未通过事件和与其关联的必要信息“广播”至图形流水线的合适阶段。
在本实施方式中,当“合格的”片段(即,符合触发“向后的”、“停止处理”或“复原(恢复)处理”信号的发送的标准的片段)经历其附条件的丢弃测试时,着色器流水线阶段6将由经历测试的片段覆盖的(x,y)位置广播20、21至片段着色阶段6和队列12(根据需要,可还广播至栅格化器3和早期分级深度和模板测试阶段4)。广播信息还包括关于广播信号是否用于确定任何片段的处理是否应该停止(任何片段是否应该被丢弃)或确定任何片段的处理是否应该恢复(复原)的指示(即,广播信号是“向后的片段终止”信号还是“向后的片段恢复”信号)和指示关注的片段的“新旧”的时间戳。如将在稍后的描述,图形处理流水线的这些阶段随后使用广播信号类型指示以及位置和“新旧”信息来估计它们当前处理的任何片段的处理是否可停止或是否应该(适当地)恢复。
响应于附条件的丢弃测试“通过”事件“向后的片段终止”信号的广播(即,指示响应于广播信号应该确定任何片段的处理是否可停止),作为附条件的丢弃测试“通过”事件的结果,处理流水线的接收“终止”信号广播的阶段随后利用广播信号中的位置信息来确定它们当前包含的任何片段是否不再需要被处理。通过将当前占据流水线阶段的所有(较旧的)片段的(x,y)位置与由通过着色器流水线阶段6广播的广播“终止”信号指示的(x,y)位置(即,通过附条件的丢弃测试并触发广播向后的片段“终止”信号的片段的(x,y)位置)进行比较来执行这个处理(这样实际上将识别出当前在所述阶段中将被通过其最终附条件的丢弃测试的片段遮挡的任何(较旧的)片段)。
以同样符合的用于使片段的处理停止的特定其它标准为准,与通过其最终附条件的丢弃测试并触发“向后的”片段“终止”信号的片段具有相同(x,y)位置的任何(较旧的)当前片段的处理随即停止。具体地说,还检查流水线中潜在地将被丢弃的(即,将被遮挡的)片段是否基于任何其它原因而继续被处理,所述其它原因例如,因为其具有诸如与未解决的遮挡查询关联的仍被需要的副作用。如果被遮挡的片段不具有其附带的仍然有效的遮挡查询(并且不具有其它需要的副作用),则将其丢弃(其处理停止),当如果其确实具有其附带的有效的遮挡查询(或一些其它仍被需要的副作用),则不将其丢弃(即,继续其处理)。通过关注的图形处理流水线的阶段来执行这种检查。
在附条件的丢弃测试片段“终止”“通过”事件中按照合适地保守的方式执行对不再需要处理的片段的确定,以降低不正确地丢弃片段使其不再接受后面的处理的风险。
图形处理流水线的各个阶段并行地测试所述阶段中的所有片段。这使得流水线阶段能够以与附条件的丢弃测试通过事件可生成可能的剔除机会的速率相同的速率丢弃片段。
通过将识别出的片段标记为“终止”(无效)使较早的处理阶段中的片段的处理停止。根据上面的讨论,因此,使各个片段具有与其关联的“终止”比特(例如,作为其关联的片段数据的一部分),如果对该比特进行设置,则指示该片段不需要被处理(并且可丢弃)。
(再一次,另选的布置方式(诸如使具有有效标签的像缓存区那样操作的片段队列在设置片段的无效标签时释放队列(缓存区)行)可用作替代,或根据需要另外使用)。)
将附条件的丢弃测试“向后的”片段“终止”通过事件广播至其的图形处理流水线的各个阶段具有对在其本地域中(即,在关注的阶段或处理阶段的一部分中)的所有片段负责的对应的代理。优选地,该代理与处理通过早期深度测试阶段发送的片段“终止”和“减慢”事件广播的代理为同一代理。各个代理将关于所述片段的信息保持在其本地域中,并可进行操作以响应于其接收的附条件的丢弃测试“向后的”片段“终止”通过事件将片段标记为终止(无效),从而避免和/或停止对它们的不必要的处理。代理被配置为能够并行地测试它们的本地域中的所有片段。
这种“向后的片段终止”信号操作允许片段(预先触发进入流水线中在所述片段之前的其它片段的处理“减慢”)通过所有其附条件的丢弃测试的结果随后被用于“终止”在流水线中被触发片段超过并且将实际上被触发片段遮挡的任何“减慢的片段”(在这些减慢的片段通过流水线被彻底处理之前)。即使在早期深度测试阶段不能足够无疑地确定新的片段是否将实际上遮挡已在流水线中的片段,这样做也允许进入流水线的稍后的片段用于关于(在它们之前)进入流水线的较早的(在流水线中在所述稍后的片段之前的)片段执行隐藏面消除。
响应于通过着色器流水线阶段6广播附条件的丢弃测试“未通过”事件“向后的片段恢复”信号(即,指示响应于广播信号应该确定任何片段的处理是否应该恢复),作为附条件的丢弃测试“未通过”事件的结果,处理流水线的接收“恢复”信号广播的阶段随后使用广播信号中的位置和“新旧”信息来确定它们当前包含的任何片段的处理是否应该恢复。通过将当前占据流水线阶段的所有预先减慢片段的(x,y)位置和“新旧程度”与由通过着色器流水线阶段6广播的广播“恢复”信号指示的(x,y)位置和“新旧程度”(即,未通过附条件的丢弃测试并触发广播片段“恢复”信号的片段的(x,y)位置和“新旧程度”)进行比较来执行这个处理(这样实际上将识别出当前在该阶段中现在已知将不被未通过附条件的丢弃测试的片段遮挡的任何(较旧的)片段)。
图形处理流水线的各个阶段再次并行地测试所述阶段中的所有片段。这使得流水线阶段能够以与附条件的丢弃测试未通过事件可生成可能的“恢复”机会的速率相同的速率恢复(减慢)片段。
在本实施方式中,通过(相对于其“减慢”、去优先状态)增加其处理优先级来恢复片段。片段复原至它们初始(正常)处理优先级和速度。通过不再将“恢复的”片段标记为“去优先”来实现这一点。因此,当片段将要“恢复”时,更新(改变)(去设置)与所述片段关联的合适的“去优先”比特。
将附条件的丢弃测试“向后的片段恢复”未通过事件广播至其的图形处理流水线的各个阶段具有对在其本地域中(即,在关注的阶段或处理阶段的一部分中)的所有片段负责的对应的代理(再一次,该代理可与处理片段“终止”通过事件等的代理为同一代理)。各个代理将关于所述片段的信息保持在其本地域中,并可进行操作以响应于其接收的附条件的丢弃测试片段“恢复”未通过事件将片段标记为不再去优先(不再减慢),从而恢复(复原)它们的处理。代理被配置为能够并行地测试它们的本地域中的所有片段。
(在其它布置方式用于减慢片段的处理时,片段应该按照合适的方式恢复。例如,在使用具有去优先标签的像缓存区那样操作的片段队列在设置片段的去优先标签时释放队列(缓存区)行的情况下,当片段将要恢复时,可合适地更新去优先标签。类似地,在片段通过暂停它们通过流水线的处理使它们的处理减慢的情况下,片段和/或采样点可通过“停止暂停”它们的处理(例如,通过将它们从“僵化池”(它们的处理在这里暂停)去除并使它们返回到流水线以按照正常方式处理)而恢复。)
这种“向后的片段恢复”信号操作允许片段(预先触发进入流水线中在所述片段之前的其它片段的处理“减慢”)未通过其附条件的丢弃测试中的一个的结果随后被用于“恢复”(复原)在流水线中被触发片段超过并且将实际上不被触发片段遮挡的任何“减慢的片段”,从而所述减慢的片段随后再次被正常地处理。
在本实施方式中,除如果触发它们的处理减慢的片段接着未通过附条件的丢弃测试则恢复(复原)任何“减慢的”片段以在正常优先级下进行处理之外,作为本实施方式的操作结果,如果凭借“向前的片段终止”信号丢弃(“终止”)触发它们的处理减慢的片段,则丢弃(“终止”)“减慢的”片段。在这种情况下,“终止”“正减慢的”片段的“向前的片段终止”信号也用于在同一操作中“终止”“已减慢的”片段。
从上面应该理解,在本实施方式中,如果一片段通过早期深度测试并发送可触发已在流水线中的一个或更多个片段的处理减慢的信号,则随后当其经历其附条件的丢弃测试时,在其通过所有其附条件的丢弃测试时发送可触发停止处理(丢弃)其处理已预先减慢的一个或多个片段的信号,或者在其未通过其附条件的丢弃测试中的一个时发送触发恢复其处理已预先减慢的一个或多个片段的处理的信号。
类似地,作为稍后的片段通过早期和深度模板测试的结果,其处理已预先减慢的片段的处理随后可停止或恢复(复原),这首先取决于触发减慢片段的处理的片段的附条件的丢弃测试的结果。
如图1所示,在本实施方式中,图形处理流水线包括片段必须经过的队列12,其布置在图形处理流水线的片段着色器6之前。队列12被配置为能够保持完整的拼块尺寸的一组片段,但是其它布置方式当然也是可以的。
队列12具有增加可在早期剔除测试阶段之后(即,在分级深度和模板测试器4和早期深度和模板测试器13之后)的流水线中的片段数量的效果,从而增加可按照本实施方式的方式受到操作的片段的数量。使用队列12可明显增大仅最终可见片段到达队列12之后的片段着色阶段6(并被片段着色阶段6处理)的可能性。这是有利的,因为片段着色通常对每片段而言是相对昂贵的处理,并且因此越少的片段进入片段着色器就越好。
进入队列12的片段按照相同的顺序退出队列,但是“终止”片段在退出队列时触发资源的解除。
从上面可以看出,至少在本发明的优选实施方式中,本发明提供了用于进一步减少可在流水线图形处理***中发生的隐藏面的(最终冗余的)处理量的机制。此外,本发明的布置方式为:当用于经典渲染流水线的渲染顺序为最佳时,其将不干涉(从而在具有最佳渲染顺序的现有渲染流水线布置方式上获得最小开销),但当渲染顺序并非最佳时,其将起作用,并且在这种情况下,至少在本发明的优选实施方式中,其可消除从后向前的片段和隐藏面,以达到在隐藏面消除方面与每采样或每片段预渲染排序处理一样有效的程度。在要渲染的内容使得排序算法不能容易地检测最佳排序方式的情况下(例如,基元交叉或具有交叠的深度范围),本发明可还能够比排序更有效地进行这种操作。
本发明的技术还独立于所使用的多点采样的防混叠处理水平,从而使得较高等级的多点采样的防混叠处理的使用明显更便宜。
利用早期剔除测试通过事件的结果来确定已在流水线中的任何片段的处理是否应该减慢尤其有利于接着停止较早进入流水线的片段的处理,但是不能在早期剔除测试阶段无疑地确定稍后的片段将对其生成遮挡,这是因为例如稍后的片段在其通过图形处理流水线的处理过程中将受到一个或更多个附条件的丢弃测试。这样,因此与其中单独使用早期剔除测试立即丢弃(“终止”)流水线中的可确定将被稍后的片段遮挡的任何片段的布置方式相比,使得更多片段的处理能够在它们达到流水线的末端之前停止。
在本文中应该注意,本实施方式(以及本发明)的这种片段减慢和后续的“终止”操作并不简单地在当前片段的几个循环中局部对片段再排序,但是将具有使片段完全脱离秩序的效果(实际上通过延迟较早进入流水线的片段的处理),并且此外,所述操作并不会持续必然处理所有片段,而是进行操作以丢弃并且不处理发现不再需要的任何片段。

Claims (17)

1.一种操作图形处理流水线的方法,所述图形处理流水线包括多个处理阶段,该多个处理阶段包括:栅格化器,其将输入基元栅格化以生成要处理的图形片段,各个图形片段具有与该图形片段关联的一个或更多个采样点;以及渲染器,其对由所述栅格化器生成的片段进行处理以生成输出片段数据,所述方法包括以下步骤:
在由所述栅格化器生成的片段被发送至所述渲染器以进行处理之前,针对与该片段关联的至少一个采样点执行早期剔除测试;以及
如果所述至少一个采样点通过所述早期剔除测试,则向前发送所述片段以进行处理,并且响应于所述至少一个采样点通过所述早期剔除测试,确定在所述图形处理流水线中的另一采样点的处理是否应该减慢。
2.根据权利要求1所述的方法,其中,对已在所述图形处理流水线中的另一采样点的处理是否应该减慢的确定是基于通过所述早期剔除测试的采样点是否还具有一个或多个特定属性的。
3.根据权利要求2所述的方法,其中,所述特定属性包括所述采样点受到作为对所述采样点的处理的一部分的一个或更多个附条件的丢弃测试。
4.根据权利要求1、2或3所述的方法,该方法包括以下步骤:
通过将流水线中的所述采样点的处理去优先来减慢流水线中的所述另一采样点的处理。
5.根据前述权利要求中的任一项所述的方法,其中,响应于所述至少一个采样点通过所述早期剔除测试来确定所述图形处理流水线中的另一采样点的处理是否能够减慢的步骤包括以下步骤:将当前占据流水线阶段的采样点和/或片段的位置与通过所述早期剔除测试的所述至少一个采样点的位置进行比较。
6.根据前述权利要求中的任一项所述的方法,其中,响应于所述至少一个采样点通过所述早期剔除测试来确定所述图形处理流水线中的另一采样点的处理是否能够减慢的步骤还包括以下步骤:在减慢所述另一采样点的处理之前,检查所述另一采样点的其它属性,以确定所述另一采样点是否应该仍然以正常优先级进行处理。
7.根据前述权利要求中的任一项所述的方法,该方法还包括以下步骤:
针对与由所述栅格化器生成的片段关联的至少一个采样点执行一个或更多个附条件的丢弃测试,由所述栅格化器生成的所述片段预先触发所述图形处理流水线中的另一采样点的处理是否应该减慢的确定;以及
如果所述至少一个采样点通过所述至少一个采样点要经受的所有附条件的丢弃测试,并且作为所述至少一个采样点通过所述早期剔除测试的结果,确定所述图形处理流水线中的另一采样点的处理应该减慢,则作为所述至少一个采样点通过所有附条件的丢弃测试的结果,确定所述另一采样点的处理是否能够停止;
或者
如果所述至少一个采样点未通过所述至少一个采样点要经受的附条件的丢弃测试,并且作为所述至少一个采样点通过所述早期剔除测试的结果,确定所述图形处理流水线中的另一采样点的处理应该减慢,则作为所述至少一个采样点未通过所述附条件的丢弃测试的结果,确定所述另一采样点的处理是否应该恢复。
8.一种操作图形处理流水线的方法,所述图形处理流水线包括多个处理阶段,该多个处理阶段包括:栅格化器,其将输入基元栅格化以生成要处理的图形片段,各个图形片段具有与该图形片段关联的一个或更多个采样点;以及渲染器,其对由所述栅格化器生成的片段进行处理以生成输出片段数据,所述方法包括以下步骤:
针对与由所述栅格化器生成的片段关联的至少一个采样点执行附条件的丢弃测试;以及
如果所述至少一个采样点通过所述附条件的丢弃测试,则在流水线中向前发送所述片段,并且作为所述至少一个采样点通过所述附条件的丢弃测试的结果,确定所述图形处理流水线中的另一采样点的处理是否能够停止。
9.一种图形处理流水线,该图形处理流水线包括:
多个处理阶段,该多个处理阶段包括:栅格化器,其将输入基元栅格化以生成要处理的图形片段,各个图形片段具有与该图形片段关联的一个或更多个采样点;渲染器,其对由所述栅格化器生成的片段进行处理以生成输出片段数据;以及早期剔除测试阶段,在由所述栅格化器生成的片段被发送至所述渲染器以进行处理之前,该早期剔除测试阶段针对与所述片段关联的采样点执行早期剔除测试;其中,所述图形处理流水线被配置为:
响应于与由所述栅格化器生成的片段关联的至少一个采样点通过所述早期剔除测试,向前发送所述片段以进行处理,并且确定在所述图形处理流水线中的另一采样点的处理是否应该减慢。
10.根据权利要求9所述的图形处理流水线,其中,对已在所述图形处理流水线中的另一采样点的处理是否应该减慢的确定是基于通过所述早期剔除测试的所述采样点是否还具有一个或多个特定属性的。
11.根据权利要求10所述的图形处理流水线,其中,所述特定属性包括所述采样点受到作为对所述采样点的处理的一部分的一个或更多个附条件的丢弃测试。
12.根据权利要求9、10或11所述的图形处理流水线,其中,流水线中的另一采样点的处理的减慢包括以下步骤:将流水线中的所述采样点的处理去优先。
13.根据权利要求9至12中的任一项所述的图形处理流水线,其中,所述图形处理流水线被配置为:通过将当前占据流水线阶段的采样点和/或片段的位置与通过所述早期剔除测试的所述至少一个采样点的位置进行比较,来响应于所述至少一个采样点通过所述早期剔除测试,确定所述图形处理流水线中的另一采样点的处理是否能够减慢。
14.根据权利要求9至13中的任一项所述的图形处理流水线,其中,所述图形处理流水线被配置为:在减慢所述另一采样点的处理之前,检查所述另一采样点的其它属性,以确定所述另一采样点是否应该仍然以正常优先级进行处理。
15.根据权利要求9至14中的任一项所述的图形处理流水线,其中,所述图形处理流水线还被配置为:
针对与由所述栅格化器生成的片段关联的至少一个采样点执行一个或更多个附条件的丢弃测试,由所述栅格化器生成的所述片段预先触发所述图形处理流水线中的另一采样点的处理是否应该减慢的确定;并且
如果所述至少一个采样点通过所述至少一个采样点要经受的所有附条件的丢弃测试,并且作为所述至少一个采样点通过所述早期剔除测试的结果,确定所述图形处理流水线中的另一采样点的处理应该减慢,则作为所述至少一个采样点通过所有附条件的丢弃测试的结果,确定所述另一采样点的处理是否能够停止;
或者
如果所述至少一个采样点未通过所述至少一个采样点要经受的附条件的丢弃测试,并且作为所述至少一个采样点通过所述早期剔除测试的结果,确定所述图形处理流水线中的另一采样点的处理应该减慢,则作为所述至少一个采样点未通过所述附条件的丢弃测试的结果,确定所述另一采样点的处理是否应该恢复。
16.一种图形处理流水线,该图形处理流水线包括:
多个处理阶段,该多个处理阶段包括:栅格化器,其将输入基元栅格化以生成要处理的图形片段,各个图形片段具有与该图形片段关联的一个或更多个采样点;以及渲染器,其对由所述栅格化器生成的片段进行处理以生成输出片段数据,并且其中,
能够执行针对与由所述栅格化器生成的片段关联的采样点的附条件的丢弃测试;并且
其中,所述图形处理流水线被配置为:
响应于与由所述栅格化器生成的片段关联的至少一个采样点通过附条件的丢弃测试,在流水线中向前发送所述片段,并且作为所述至少一个采样点通过所述附条件的丢弃测试的结果,确定所述图形处理流水线中的另一采样点的处理是否能够停止。
17.一种计算机程序,该计算机程序包括计算机软件,当所述计算机程序在数据处理装置上运行时,该计算机软件执行根据权利要求1至8中的任一项所述的方法。
CN201310692576.4A 2012-12-17 2013-12-17 图形处理***中的隐藏面消除 Active CN103871020B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/716,952 US9153070B2 (en) 2012-12-17 2012-12-17 Hidden surface removal in graphics processing systems
US13/716,952 2012-12-17
US13/909,561 US9214006B2 (en) 2013-06-04 2013-06-04 Hidden surface removal in graphics processing systems
US13/909,561 2013-06-04

Publications (2)

Publication Number Publication Date
CN103871020A true CN103871020A (zh) 2014-06-18
CN103871020B CN103871020B (zh) 2018-10-16

Family

ID=50031027

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310693216.6A Active CN103871095B (zh) 2012-12-17 2013-12-17 图形处理***中的隐藏面消除
CN201310692576.4A Active CN103871020B (zh) 2012-12-17 2013-12-17 图形处理***中的隐藏面消除

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201310693216.6A Active CN103871095B (zh) 2012-12-17 2013-12-17 图形处理***中的隐藏面消除

Country Status (3)

Country Link
KR (2) KR102057166B1 (zh)
CN (2) CN103871095B (zh)
GB (2) GB2511177B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106204519A (zh) * 2014-07-03 2016-12-07 联发科技股份有限公司 一种控制早期深度处理和后期深度处理的装置和方法
CN106897143A (zh) * 2015-12-21 2017-06-27 想象技术有限公司 对图形处理***中的处理引擎的区片分配
CN110192225A (zh) * 2017-01-27 2019-08-30 超威半导体公司 无序像素着色器导出
CN110276711A (zh) * 2018-03-15 2019-09-24 Arm有限公司 图形处理
CN112116519A (zh) * 2019-06-19 2020-12-22 畅想科技有限公司 图形处理***中的粗略深度测试
CN116894906A (zh) * 2023-09-11 2023-10-17 瀚博半导体(上海)有限公司 图形渲染方法和处理器硬件架构

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9292898B2 (en) * 2013-03-15 2016-03-22 Intel Corporation Conditional end of thread mechanism
KR200491938Y1 (ko) 2020-05-06 2020-07-03 조현근 기능성 멀티 스카프
GB2608094A (en) * 2021-01-27 2022-12-28 Advanced Risc Mach Ltd Graphics processing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020196251A1 (en) * 1998-08-20 2002-12-26 Apple Computer, Inc. Method and apparatus for culling in a graphics processor with deferred shading
US6646639B1 (en) * 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
CN1512454A (zh) * 2002-12-24 2004-07-14 ض� 用于图形渲染的z-缓冲技术
CN101563712A (zh) * 2006-12-22 2009-10-21 高通股份有限公司 快速像素渲染处理
CN102822870A (zh) * 2010-03-19 2012-12-12 想象技术有限公司 多个阴影化引擎上3d计算机图形数据的处理

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8711155B2 (en) 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8072451B2 (en) * 2004-12-29 2011-12-06 Intel Corporation Efficient Z testing
JP4116648B2 (ja) 2006-05-22 2008-07-09 株式会社ソニー・コンピュータエンタテインメント オクルージョンカリング方法および描画処理装置
GB0801812D0 (en) * 2008-01-31 2008-03-05 Arm Noway As Methods of and apparatus for processing computer graphics
GB201116438D0 (en) * 2011-09-22 2011-11-02 Advanced Risc Mach Ltd Occlusion queries in graphics processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6646639B1 (en) * 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US20020196251A1 (en) * 1998-08-20 2002-12-26 Apple Computer, Inc. Method and apparatus for culling in a graphics processor with deferred shading
CN1512454A (zh) * 2002-12-24 2004-07-14 ض� 用于图形渲染的z-缓冲技术
CN101563712A (zh) * 2006-12-22 2009-10-21 高通股份有限公司 快速像素渲染处理
CN102822870A (zh) * 2010-03-19 2012-12-12 想象技术有限公司 多个阴影化引擎上3d计算机图形数据的处理

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106204519A (zh) * 2014-07-03 2016-12-07 联发科技股份有限公司 一种控制早期深度处理和后期深度处理的装置和方法
CN106897143A (zh) * 2015-12-21 2017-06-27 想象技术有限公司 对图形处理***中的处理引擎的区片分配
CN106897143B (zh) * 2015-12-21 2022-02-25 想象技术有限公司 图形处理***和在图形处理***中处理基元片段的方法
CN110192225A (zh) * 2017-01-27 2019-08-30 超威半导体公司 无序像素着色器导出
CN110192225B (zh) * 2017-01-27 2020-12-29 超威半导体公司 无序像素着色器导出
CN110276711A (zh) * 2018-03-15 2019-09-24 Arm有限公司 图形处理
CN110276711B (zh) * 2018-03-15 2024-03-22 Arm有限公司 处理图形片段的方法、图形处理流水线
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
CN116894906A (zh) * 2023-09-11 2023-10-17 瀚博半导体(上海)有限公司 图形渲染方法和处理器硬件架构

Also Published As

Publication number Publication date
GB2511176A (en) 2014-08-27
CN103871095B (zh) 2018-07-17
GB201322278D0 (en) 2014-01-29
KR20140078569A (ko) 2014-06-25
KR102057163B1 (ko) 2019-12-18
GB2511177B (en) 2015-04-15
KR20140078568A (ko) 2014-06-25
GB201322284D0 (en) 2014-01-29
CN103871020B (zh) 2018-10-16
CN103871095A (zh) 2014-06-18
GB2511177A (en) 2014-08-27
KR102057166B1 (ko) 2019-12-18
GB2511176B (en) 2015-04-15

Similar Documents

Publication Publication Date Title
CN103871020A (zh) 图形处理***中的隐藏面消除
US11069024B2 (en) Primitive processing in a graphics processing system with tag buffer storage of primitive identifiers
US11748941B1 (en) Primitive processing in a graphics processing system
US10311016B2 (en) Hidden surface removal in graphics processing systems
CN101620724A (zh) 图形处理***
US9552665B2 (en) Hidden surface removal in graphics processing systems
WO2005101322A1 (en) Scalable shader architecture
JP2009295166A (ja) グラフィックス処理システム
CN107038742A (zh) 屏幕空间管线中的多通道渲染
GB2566487A (en) Forward killing of threads corresponding to graphics fragments obscured by later graphics fragments
US10606595B2 (en) Data processing systems
US11900522B2 (en) Graphics processing
US11734869B2 (en) Graphics processing
US20240169465A1 (en) Graphics processing systems
US11972503B2 (en) Graphics processing
CN118052690A (zh) 图形处理器

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