使用早期z模式优化可配置的图形渲染管线的制作方法

文档序号:6608616阅读:227来源:国知局
专利名称:使用早期z模式优化可配置的图形渲染管线的制作方法
技术领域
本发明实施例大体上涉及计算机图形,且更明确地说涉及使用早期z模式优化图形 渲染管线。
背景技术
图形渲染引擎通常由组织在数据流型式管线中的一组专门的处理引擎组成。在任何 数据提取引擎之后,设置引擎通常处于图形渲染引擎顶部。设置引擎对例如三角形的几 何图元操作,并将经变换或简化的几何图元表示发出到光栅引擎。光栅引擎确定与每一 几何图元关联的像素覆盖范围,从而产生具有关联的深度值(z值)的未着色像素图元
的连续流。着色器引擎对来自光栅引擎的未着色像素的连续流进行操作,从而产生经着
色像素流。除了计算给定像素的颜色外, 一些着色器引擎还视情况产生或修改像素的z
值。Z光栅操作(ZROP)引擎确定是否应通过称为Z测试的操作来保留或丢弃新像素。 Z测试将新像素的深度和模板数据与在所述新像素的位置处的当前深度缓冲器中的先前 存储的深度和模板数据进行比较。如果像素通过了Z测试,那么ZROP引擎视情况将新 像素的深度和模板数据写入到当前深度缓冲器。Z解析引擎将Z测试的结果与和相关像 素相关联的等待时间缓冲数据合并。Z解析引擎将己通过Z测试的像素传输到颜色光栅 操作(CROP)引擎,并丢弃未通过Z测试的像素。颜色光栅操作(CROP)引擎更新新 像素的颜色数据,并将其写入到当前颜色缓冲器。
图形渲染管线中处理步骤的精确次序通常经设计以适应渲染过程中连续数据依赖性 的最简单减少。举例来说,应在对由三角形覆盖的像素集合进行像素操作之前,将三角 形图元光栅化为像素图元。另外,像素的Z值应在与深度缓冲器中的先前计算出的Z值 进行比较之前计算出。通常在着色之后进行Z测试,从而给予着色器引擎在Z测试之前 结束任何深度或模板计算的机会。
如众所周知,着色器引擎是图形渲染管线的耗费最大的元件,其消耗最多的逻辑资 源和最多的功率。此外,着色器引擎中通常执行的复杂的着色算法促使着色器引擎变为 图形渲染管线中最主要的性能瓶颈。光栅引擎中的早期Z剔除通过丢弃已知将在着色器 引擎内触发与图元有关的工作之前被闭塞的这些图元来实现某一程度的性能增益。然而,
早期Z剔除仅是微不足道的丢弃机制且不是较精确的Z测试的替代。即使当使用早期Z 剔除时,Z测试步骤也可能丢弃着色器引擎处理的像素中的一半或更多像素。更重要的 是,着色器引擎在着色操作期间通常甚至不修改被丢弃像素中许多像素的Z值,从而使 这些像素多余地通过着色器引擎。因此,标准结构的结果是,作为图形渲染管线中单一 耗费最大资源的着色器引擎以实质上低效的水平操作。
如上文所说明,此项技术中需要一种用于改进图形渲染管线中着色器引擎效率的技术。

发明内容
本发明一个实施例陈述一种用于处理图形图元的可配置的图形渲染管线。所述图形 渲染管线包含设置引擎,其经配置以确定应在早期Z模式还是晚期Z模式中进行处理; 光栅引擎,其经配置以从设置引擎接收几何图元并将几何图元转换为一个或一个以上像 素图元;着色器引擎,其经配置以对与像素图元相关联的一个或一个以上样本执行着色
操作;Z光栅操作(ZROP)单元,其经配置以对样本的每一者执行Z测试;Z解析引擎, 其经配置以针对每一样本、基于与样本关联的Z测试结果来确定应保留还是丢弃所述样 本;和预光栅操作(PROP)单元,其经配置以修改着色器引擎与ZROP单元之间的数据 流路径,以支持早期Z模式和晚期Z模式两者。当图形渲染管线经配置以用于早期Z模 式时,与像素图元相关联的样本首先由ZROP单元和Z解析引擎处理且接着由着色器引 擎处理,且当图形渲染管线经配置以用于晚期Z模式时,样本首先由着色器引擎处理且 接着由ZROP单元和Z解析引擎处理。
所揭示的图形渲染管线的一个优点在于,在适当情况下,可在将样本传输到着色器 引擎之前实施Z测试,藉此相对于现有技术结构而增加图形渲染管线的处理效率。


因此,为了具体理解本发明的上述特征,可参照实施例对上文简要概述的本发明进 行更特定描述,附图中说明了其中一些实施例。然而,应注意,附图仅说明本发明的典 型实施例,且因此不应认为限定本发明的范围,因为本发明可认同其它同等有效的实施 例。
图1是根据本发明一个实施例的通过图形渲染管线的数据流的概念图; 图2是根据本发明一个实施例的通过图1的PROP的数据流的概念图3是根据本发明一个实施例的用于切换图1的图形渲染管线中的操作模式的方法 步骤的流程图4a说明根据本发明一个实施例,当在晚期Z模式下操作时图1的图形渲染管线的 逻辑配置;
图4b说明根据本发明一个实施例,当在早期Z模式下操作时图1的图形渲染管线的 逻辑配置;且
图5是经配置以实施本发明的一个或一个以上方面的计算装置的概念图。
具体实施例方式
本发明通过减小着色器引擎上的工作负荷(大多数图形渲染管线的众所周知的性能 瓶颈)来改进图形渲染管线的总效率。通过动态地重新配置图形渲染管线以允许在某些 情形下的早期Z测试,允许在着色之前丢弃闭塞的像素,为着色器引擎解除了传统图形 渲染管线中常见的多余工作。
图1是根据本发明一个实施例通过图形渲染管线100的数据流的概念图。如图所示, 设置引擎110从在处理器(未图示)上执行的驱动程序接收几何图元。设置引擎110对 传入的图元进行操作,并发出经变换和处理的适于向光栅引擎115呈现的几何图元。设 置引擎110还对传入的含有"状态束(state bundle)"的命令进行操作。状态束含有对 (不限于)在图形渲染管线100的各个处理单元中将如何处理后续的图像图元进行定义 的数据。来自状态束的数据可保留在那些处理单元中以便稍后的参考。设置引擎110跟 踪图形渲染管线100中的渲染状态并协调其中的某些变化。渲染状态包含(不限于)与 图形渲染管线100内各点处的渲染过程相关联的不同变量、模式和设定。某些渲染状态 变量、模式或设定是在对给定图元起始渲染过程之前建立的,而某些渲染状态在图元前 进通过图形渲染管线100时被动态更新。如下文更详细描述,滞后计数是设置引擎110 内管理的渲染状态的一个要素。滞后计数保持在滞后计数器111中。
光栅引擎115计算几何图元的覆盖范围并发出像素图元以用于进一步处理。另外, 光栅引擎115还针对每一像素计算相关联的Z值。
Z光栅操作单元(ZROP) 120将当前像素图元的Z值与相应像素位置的先前存储的 Z值进行比较。来自ZROP 120的结果确定保持还是丢弃各个像素图元。更具体来说, ZROP引擎120将每一当前像素的Z值与先前存储在深度缓冲器(未图示)中的相应像 素位置的Z值进行比较。同样,所述过程称为"Z测试"。如果当前像素通过了Z测试, 那么ZROP 120视需要将像素的Z值写入到通常驻存在帧缓冲器160中的深度缓冲器。 如果像素未通过Z测试,那么驻存在预光栅操作(PROP) 130单元中的Z解析引擎(未 图示)将所述像素丢弃,且ZROP 120不会将任何Z值信息写入到深度缓冲器。所属领 域的技术人员了解,除了确定像素可见度的Z值以外,还可视需要与Z值结合而使用模 板值来最终确定特定的像素通过还是未通过Z测试。因此,本文对Z值的任何参考在适 当时都可适用于模板值。
着色器引擎140对像素图元进行操作以计算(不限于)像素的颜色和Z值,如着色 器引擎140的程序设计所确定。如ZROP 120中的Z测试结果所确定,颜色光栅操作单 元(CROP) 150将每一通过的像素的颜色值写入到帧缓冲器160。
PROP 130单元管理像素图元在ZROP 120、CROP 150和着色器引擎140之间的流动, 从而根据每一像素图元的当前渲染状态对操作次序进行排序。如本文所述,PROP 130在 两种模式("晚期"Z模式和"早期"Z模式)中的一种模式中操作。以穿过PROP130 的实线展示晚期Z模式的数据流路径132。在晚期Z模式中,着色器引擎140首先对像 素图元进行操作以计算(不限于)相关像素的颜色和Z值。着色器引擎140将结果引导 至ZROP 120以用于Z测试。如上所述,ZROP 120针对通过Z测试的所有像素而更新深 度缓冲器中的Z值,并将此信息沿路传递到PROP 130内的Z解析引擎,所述Z解析引 擎随后丢弃未通过Z测试的所有像素,并将通过的像素传输到CROP 150以用于任何剩 余的颜色和帧缓冲器更新。
如先前所述,在许多情况下,着色器引擎140不改变Z值。因此,在早期Z模式中, 在着色之前进行Z测试,借此为着色器引擎140解除了与处理(i) Z值未被着色操作改 变和(ii)经由Z测试一定会丢弃的像素相关联的多余工作。以穿过PROP 130的虚线展 示早期Z模式的数据流路径131。这里,来自光栅引擎115的像素图元在被路由到着色 器引擎140之前被路由到ZROP 120以用于Z测试且路由到PROP 130内的Z解析引擎。 同样,通过使用Z测试的结果,解析引擎丢弃未通过Z测试的所有像素,并将通过的像 素传输到着色器引擎140以用于着色操作。由于着色器引擎140仅处理通过Z测试的像 素,因此在早期Z模式中处理的像素的数目可能实质上少于在晚期Z模式中处理的像素 的数目。在着色之后,着色器引擎140将经着色的像素传输到CROP 150。
无论图形渲染管线100处于早期Z模式还是处于晚期Z模式,通常都需要对所有像 素进行Z测试。如所描述,在早期Z模式的情况下,为着色器引擎140解除了与由于Z 测试而被丢弃的像素相关联的计算量,从而获得改进的系统性能。在晚期Z模式的情况
下,着色器引擎140着色所有像素而不考虑每一像素的最终处置。晚期Z模式是一般情 况,且适应于图形渲染管线100中可用的所有渲染状态;而早期Z模式限于某些经常遇 到的渲染状态,且当将要渲染合格的图元时视机会实施早期Z模式。
图2是根据本发明一个实施例通过图1的PROP 130的数据流的概念图。以实线展示 晚期Z模式的数据流路径132。在晚期Z模式中,PROP 130将来自光栅引擎115的像素 数据通过多路复用器221路由到着色器引擎140。接着通过多路复用器220路由来自着 色器引擎140的返回数据。将多路复用器220的输出路由到ZROP 120以用于Z测试, 且路由到等待时间缓冲器212以调节ZROP 120可能展现的可变等待时间。Z解析引擎 214将由ZROP120执行的Z测试的结果与传递通过等待时间缓冲器212的来自着色器引 擎140的数据合并,以传输或丢弃每一经着色的像素。接着多路复用器222选择通过Z 测试的经着色的像素并将所述像素传输到CROP 150,以便在写入到帧缓冲器160之前进 行最终颜色处理。
与图1相同,以虚线展示早期Z模式的数据流路径131。在早期Z模式中,PROP 130 经配置以将来自光栅引擎115的数据直接传递到多路复用器220。由多路复用器220传输 的数据被路由到ZROP 120并路由到第二等待时间缓冲器212以调节ZROP 120可能展现 的可变等待时间。同样,Z测试在ZROP120内发生。Z解析引擎214将由ZROP120执 行的Z测试的结果与第二等待时间缓冲器212中的数据合并,以将通过Z测试的像素传 输到着色器引擎140以进行着色。接着将经着色的像素通过第三多路复用器222从着色 器引擎140路由到CROP 150,以便在写入到帧缓冲器160之前进行最终颜色处理。
对于图形渲染管线IOO来说,几乎在所有情况下早期Z模式都是优选的较高性能的 操作模式。设置引擎110确定图形渲染管线100是否可在早期Z模式中操作或图形渲染 管线IOO是否应在晚期Z模式中操作。 一般来说,如果当前渲染状态指示与图元相关联 的Z值将不会被着色器引擎140改变,那么就使用早期Z模式。如先前所述,晚期Z模 式中支持所有的渲染操作。然而,如下文陈述,当遇到某些特殊的渲染模式时可实施早 期Z模式。
有一种渲染状态通常排除早期Z模式操作。只要着色器程序在内部计算或修改Z值, 就建立所述渲染状态,其根据在于在以下伪代码中当DepthReplaceShader == true时的情 况。在其它可能的渲染状态集合内,存在两种允许早期Z模式的体制;将第一种定义为 "EarlyZNoKill",其中着色器和后着色器颜色操作不影响片断覆盖。将允许早期Z模式 的第二种体制定义为"EarlyZNoUpdate",其中禁用了 Z值写入,使得尽管可针对覆盖
范围可由着色器修改的像素或样本执行Z测试,但可在图形渲染管线100中着色之前移 动Z测试。如下文更详细描述,在向早期Z模式的切换发生之前,滞后计数器lll应当 达到特定的计数。以下的伪代码概述了在启用早期Z模式之前应满足的条件 EarlyZGlobalOK =
DepthReplaceShader == false; 〃着色器不计算或修改Z EarlyZNoKillOK = 〃着色器不影响片断覆盖范围 AlphaTestEnable == false && AIphaToCovgEnable == false && ShaderPixelKillEnable == false && TextureColorKeyEnable == false; EarlyZNoUpdateOK = 〃 Z结果未被存储 (DepthTestEnable == false II DepthWriteEnable== false) && (StencilTestEnable== false II (Stenc腹ask == 0x0) && AllowEarlyZNoUpdate == true;; EarlyZEnable = 〃满足渲染状态标准以切换到早期Z模式 EarlyZGlobalOK &&
(EarlyZNoKillOK II EarlyZNoUpdateOK) && (EarlyZHysteresisFSM.AIIowEarlyZ == true); 因此,如果以上伪代码在EarlyZEnable变量中产生真条件,那么设置引擎110就可 指示PROP 130—旦图形渲染管线100已完成在晚期Z模式中处于进行中的工作,就切 换图形渲染管线100以在早期Z模式中操作。如先前所述,当着色器引擎140不修改或 计算Z值(DepthReplaceShader == false)、图形渲染管线100处于两种特殊渲染模式中的 一种(EarlyZNoKillOK == true或EarlyZNoUpdateOK == true)且滞后计数器111处于允 许向早期Z模式转变的状态中(EarlyZHysteresisFSM.AIIowEarlyZ == true)时, EarlyZEnable为真。下文陈述以上列出的渲染状态变量中每一者的定义。所属领域的技 术人员容易辨识和理解这些渲染状态变量及其各自的函数。
DepthReplaceShader:着色器引擎计算或修改Z值(与通常对顶点Z值进行插值相反); AlphaTestEnable:将片断a值与参考值进行比较,如果不满足指定条件就删除所述 片断;
AIphaToCovgEnable:将片断a转换为样本覆盖掩码,所述样本覆盖掩码与由光栅引
擎计算出的覆盖掩码求和;
ShaderPixelKillEnable:片断着色器可删除片断; TextureColorKeyEnable:纹理值与参考的色键比较可删除片断; DepthTestEnable:启用深度测试(Z缓冲); DepthWriteEnable:将通过深度测试的深度值写入到存储器; StencilTestEnable:启用模板测试;和
StencilMask:指示可将哪些模板位写入到存储器的位掩码。
AllowEarlyZNoUpdate:允许EarlyZNoUpdate模式。不同于EarlyZNoKill模式,此
模式可能不会始终具有性能优势,因为可针对将由着色器删除的片断执行Z测试。
当从晚期Z模式切换到早期Z模式或从早期Z模式切换到晚期Z模式时,存在两个 可能的问题。第一,如果在图形渲染管线100中仍然有图元数据,那么切换模式可能导 致像素数据丢失或不准确或处理效率降低。举例来说,在图形渲染管线100中仍然有晚
期z模式图元的情况下切换到早期z模式可能导致过早的z测试,这可能接着导致像素 数据丢失或不准确,因为z测试可能不是基于最终的z值。另一方面,在图形渲染管线 100中仍然有早期z模式图元的情况下切换到晚期z模式可能导致处理的低效率,因为 原本在早期Z测试期间将被丢弃的像素可能最终被着色器引擎140处理。为了克服当图 形渲染管线100中仍然有图元数据时与切换模式相关联的问题,在切换模式之前对图形 渲染管线100执行"冲洗(flush)"。管线冲洗技术在此项技术中是众所周知的,且可 以技术上可行的任何方式来实施。执行冲洗允许在图形渲染管线100中处于进行中的工 作在切换模式之前排出而达到某个预定的完成度。然而,当执行冲洗时,在排出的工作 负荷之后通常引入称为"气泡"的管线无活动的跨度。所述气泡降低了总性能,因为可 能的计算循环实际上空闲。因此,切换模式的第二个问题是,如果过于频繁地执行冲洗, 那么与冲洗图形渲染管线100相关联的性能损失可能降低总性能。为了解决这第二个问
题,使用速率限制滞后机制来控制图形渲染管线ioo被允许进行模式切换的速率。
滞后计数器111跟踪向设置引擎110呈现的图元的数目,且当检测到所述图元的阈
值数目时,设置引擎iio可起始从晚期z模式到早期z模式的切换。更具体来说,因为 晚期Z模式通常适应于图形渲染管线100中所允许的所有渲染状态,所以将晚期z模式 视为默认的操作模式。当在晚期Z模式中操作且EariyZEnable变为真时,设置引擎110 视机会起始图形渲染管线100向早期Z模式的模式切换,其中经历了执行冲洗且假定设 置引擎110已遇到了图元的阈值数目。面此,在启用向早期Z模式的切换之前,图形渲 染管线IOO保持在晚期Z模式中历时最小数目的图元的持续时间,从而减小了模式切换 的速率。
在一个实施例中,用传输到设置引擎110且可由滞后计数器111使用的状态束中陈 述的计数值来编程滞后计数器111。只要设置引擎IIO起始向晚期Z模式的模式变化(或 当图形渲染管线IOO初始地经配置以用于晚期Z模式时),就将滞后计数器111维持的滞 后计数设定为所述计数值。 一旦将滞后值设定为所述计数值,在每次图元被接收到设置 引擎110中时,例如通过减量或增量操作来推进滞后计数。此过程持续进行,直到滞后 计数达到触发值(例如,零)为止。达到触发值的滞后计数指示预定阈值数目的图元己 被呈现到设置引擎110,其将使图形渲染管线IOO保持在晚期Z模式以处理所述最小阈 值数目的图元。此时,设置引擎IIO可在图形渲染管线IOO中起始向早期Z模式的模式 变化(如果这样做是适当的)。
在替代实施例中,当在早期Z模式与晚期Z模式之间进行切换时,通过仅选择性地 排出改变图形渲染管线100中的处理位置的那些管线元件,可部分减轻与切换Z模式相 关联的损失。在此实施例中,称为"Z模式令牌"的状态束命令由设置引擎110产生且
用于将图形渲染管线ioo的配置从早期z模式改变为晚期z模式,反之亦然。设置引擎 IIO通过图形渲染管线IOO传输Z模式令牌,使得z模式令牌被传递通过管线中的每一 处理元件。当管线经重新配置时改变图形渲染管线100中的处理位置的每一处理元件均
包括当遇到z模式令牌时实施局部的选择性冲洗所必需的功能性。
当在早期z模式中操作时,如果新的渲染状态与早期z模式不兼容,那么设置引擎
110通过首先执行冲洗且随后指示PROP 130修改数据流路径(如上所述)来使图形渲染 管线IOO转变回晚期Z模式。在此情形下,设置引擎110通常不会受到阈值数目的图元 已被呈现到设置引擎110的限制。
除了以上特性之外,滞后计数器111可经配置以在若干不同模式中操作,所述若干
不同模式包括(但不限于)迫使图形渲染管线ioo始终在晚期z模式中操作或始终允许
图形渲染管线IOO在不考虑滞后计数值的情况下切换模式的模式。另外,滞后计数器111
可响应于某些重设条件,从而导致将滞后计数设定为(例如)上文所述的计数值。
图3是根据本发明一个实施例用于切换图1的图形渲染管线100中的操作模式的方 法步骤的流程图。尽管结合图l、 2、 4A和4B描述所述方法步骤,但所属领域的技术人 员将了解,以任何次序执行所述方法步骤的任何系统均在本发明的范围内。
切换操作模式的方法开始于步骤310,在步骤310中设置引擎110接收将进行操作的
图元。在步骤312中,设置引擎IIO确定当前操作模式是早期Z模式还是晚期Z模式。 如果当前操作模式为晚期Z模式,那么所述方法进行到步骤311,在步骤311中更新滞 后计数。如上所述,当进入晚期Z模式时或当图形渲染管线IOO初始地经配置以用于晚 期Z模式时将滞后计数设定为传输到设置引擎110的状态束中陈述的计数值。在晚期Z 模式操作期间,在每次设置引擎110接收到新图元时,例如通过增量或减量操作来推进 滞后计数。在更新滞后计数器111之后,所述方法进行到步骤320,在步骤320中设置引 擎110确定是否应进行模式变化,如由渲染状态变量EarlyZEnabk为真所指示。如果 EarlyZEnable为假,那么不应进行模式变化,且所述方法进行到步骤340,在步骤340中 设置引擎110等待图元流中的下一图元。然而,如果EarlyZEnable为真,那么应进行模 式变化,且所述方法进行到步骤321。在步骤321中,设置引擎110起始冲洗操作以冲洗 图形渲染管线100,从而允许完成处于进行中的工作。所述方法接着进行到步骤322,在 步骤322中设置引擎110指示PROP 130重新配置图形渲染管线IOO的数据流以用于早期 Z模式操作,如图2所说明。 一旦步骤322完成,图形渲染管线100就经配置以用于早 期Z模式,且所述方法进行到步骤340,在步骤340中设置引擎等待图元流中的下一图 元。所述方法接着返回到步骤310。
回到参看步骤312,如果当前操作模式为早期Z模式,那么所述方法进行到步骤330, 其中设置引擎110基于待处理的下一图元来确定是否应进行模式变化。如果应在早期Z 模式中处理下一图元,如由EarlyZEnable为真所指示,那么不需要进行模式变化,且所 述方法进行到步骤340。另一方面,如果应在晚期Z模式中处理下一图元,那么需要进 行模式变化,且所述方法进行到步骤331。在步骤331中,设置引擎110起始冲洗操作以 冲洗图形渲染管线100,从而允许完成处于进行中的工作。所述方法接着进行到步骤332, 其中设置引擎110指示PROP 130重新配置图形渲染管线100的数据流以用于晚期Z模 式操作,如图2所说明。 一旦步骤332完成,图形渲染管线100就经配置以用于晚期Z 模式,且所述方法进行到步骤340,在步骤340中设置引擎110等待图元流中的下一图元。 所述方法接着返回到步骤310。
图4a说明根据本发明一个实施例,当在晚期Z模式中操作时图1的图形渲染管线 100的逻辑配置。设置引擎110对传入的图元进行操作并发出经变换和处理的适合于向光 栅引擎115呈现的几何图元。光栅引擎115计算几何图元的覆盖范围并将像素图元发出 到着色器引擎140。光栅引擎115计算每一像素的Z值。着色器引擎140计算(不限于) 像素颜色值和(视需要)Z值,从而将颜色数据432与Z数据431之间的结果分裂以用
于进一步处理。ZROP 120实施Z测试并将结果传递到Z解析引擎214, Z解析引擎214 丢弃未通过Z测试的任何像素并将通过Z测试的像素传输到CROP 150。 CROP 150将由 Z解析引'擎214传输的像素的颜色值保存到帧缓冲器160。
图4b说明根据本发明一个实施例,在早期Z模式中操作时图l的图形渲染管线100 的逻辑配置。如同晚期Z模式,设置引擎110对传入的图元进行操作并发出经变换和处 理的适合于向光栅引擎115呈现的几何图元。然而不同于晚期Z模式,光栅引擎115计 算几何图元的覆盖范围并将像素图元直接发出到ZROP 120以用于Z测试。ZROP 120将 结果传递到Z解析引擎214, Z解析引擎214仅将通过Z测试的像素传输到着色器引擎 140。此时由Z解析引擎214丢弃的像素不需要额外的处理。着色器引擎140计算像素颜 色值,且CROP 150将像素颜色值保存到帧缓冲器160。
图4a和4b描绘的流动由对通过图形渲染管线100的数据流进行配置的PROP 130 产生(如图1和2所述)。PROP 130原本对图形渲染管线100在早期Z模式和晚期Z模 式中的操作是透明的,且因此在图4a和4b中未图示。
在替代实施例中,每一几何图元可包含状态位("Z模式标志"),其指示将在早期 Z模式还是晚期Z模式中处理所述图元。根据上文陈述的用于计算几何图元和任何相关 联像素的EarlyZEnable状态的规则来确定此Z模式标志。根据每一几何图元的相应的Z 模式标志来路由和处理每一几何图元。适当时,图形渲染管线100中的每一处理元件包 含用于早期Z模式和晚期Z模式两者的独立状态存储器。通过提供处理元件中Z模式的 每一者的独立状态,需要晚期Z模式处理的图元可能与需要早期Z模式处理的图元交错, 而不需要冲洗图形渲染管线100的任何部分。
图5是经配置以实施本发明的一个或一个以上方面的计算装置的概念图。计算装置 500包含(但不限于)处理器510、系统存储器515、图形处理单元(GPU) 520和连接 到GPU 520的局部存储器525。 GPU 520包含至少一个用于处理数据的渲染引擎521。渲 染引擎521包含至少一个用于处理数据的图形渲染管线100,如上所述。所属领域的技 术人员将了解,具有经配置以实施本文揭示的教示的一个或一个以上处理单元的任何系 统均在本发明的范围内。因此,计算装置500的结构决不会限制本发明的范围。
尽管以上内容针对本发明的实施例,但在不脱离本发明基本范围的情况下可设计出 本发明的其它和另外的实施例。举例来说,尽管以上描述内容关注于像素z测试,但本 发明的教示恰当地适用于对任何形式的样本(像素、片段、子像素或任何其它形式的颜 色值表示)进行z测试。因此,本发明的范围由所附权利要求书确定。
权利要求
1.一种用于处理图形图元的可配置图形渲染管线,所述图形渲染管线包括设置引擎,其经配置以确定应在早期Z模式还是晚期Z模式中进行处理;光栅引擎,其经配置以从所述设置引擎接收几何图元并将所述几何图元转换为一个或一个以上像素图元;着色器引擎,其经配置以对与像素图元关联的一个或一个以上样本执行着色操作;Z光栅操作(ZROP)单元,其经配置以对所述样本的每一者执行Z测试;Z解析引擎,其经配置以针对每一样本、基于与所述样本关联的Z测试结果来确定应保留还是丢弃所述样本;和预光栅操作(PROP)单元,其经配置以修改所述着色器引擎与所述ZROP单元之间的数据流路径以支持早期Z模式和晚期Z模式两者,其中当所述图形渲染管线经配置以用于早期Z模式时,与所述像素图元关联的所述样本首先由所述ZROP单元和所述Z解析引擎处理且接着由所述着色器引擎处理,且当所述图形渲染管线经配置以用于晚期Z模式时,所述样本首先由所述着色器引擎处理且接着由所述ZROP单元和所述Z解析引擎处理。
2. 根据权利要求l所述的图形渲染管线,其中所述设置引擎经配置以估计与所述几何 图元相关联的渲染状态,以确定应进行从早期Z模式向晚期Z模式还是从晚期Z模 式向早期Z模式的改变。
3. 根据权利要求2所述的图形渲染管线,其中所述设置引擎包含滞后计数器,当所述 图形渲染管线经配置以用于晚期Z模式时所述滞后计数器周期性地推进,且其中当 滞后计数等于触发值时,允许所述设置引擎将所述图形渲染管线切换为早期Z模式。
4. 根据权利要求2所述的图形渲染管线,其中所述设置引擎经配置以在从早期Z模式 切换为晚期Z模式或从晚期Z模式切换为早期Z模式之前执行冲洗操作。
5. 根据权利要求2所述的图形渲染管线,其中所述设置引擎经配置以在确定应进行从 早期Z模式向晚期Z模式或从晚期Z模式向早期Z模式的切换时产生Z模式令牌, 且其中当遇到所述Z模式令牌时,所述Z模式令牌被传输通过所述图形渲染管线并 促使一个或一个以上数据流路径控制单元切换模式。
6. 根据权利要求5所述的图形渲染管线,其中所述Z模式令牌促使一个或一个以上数 据流路径控制单元在切换模式之前起始局部冲洗操作。
7. 根据权利要求l所述的图形渲染管线,其中所述样本是像素。
8. 根据权利要求1所述的图形渲染管线,其中所述设置引擎经配置以指示所述PROP 单元修改所述着色器引擎与所述ZROP单元之间的所述数据流路径,以从早期Z模 式切换为晚期Z模式或从晚期Z模式切换为早期Z模式。
9. 一种经配置以处理图形图元的计算机系统,所述计算机系统包括存储器;和处理单元,其包含可配置的图形渲染管线,所述可配置的图形渲染管线具有设置引擎,其经配置以确定应在早期Z模式还是晚期Z模式中进行处理;光栅引擎,其经配置以从所述设置引擎接收几何图元并将所述几何图元转换为 一个或一个以上像素图元;着色器引擎,其经配置以对与像素图元相关联的一个或一个以上样本执行着色 操作;Z光栅操作(ZROP)单元,其经配置以对所述样本的每一者执行Z测试;Z解析引擎,其经配置以针对每一样本、基于与所述样本相关联的Z测试结果 来确定应保留还是丢弃所述样本;和预光栅操作(PROP)单元,其经配置以修改所述着色器引擎与所述ZROP单 元之间的数据流路径以支持早期Z模式和晚期Z模式两者,其中当所述图形渲染管线经配置以用于早期Z模式时,与所述像素图元相关联 的所述样本首先由所述ZROP单元和所述Z解析引擎处理且接着由所述着色器引 擎处理,且当所述图形渲染管线经配置以用于晚期Z模式时,所述样本首先由所 述着色器引擎处理且接着由所述ZROP单元和所述Z解析引擎处理。
10. 根据权利要求9所述的计算机系统,其中所述设置引擎经配置以估计与所述几何图 元相关联的渲染状态,以确定应进行从早期Z模式向晚期Z模式还是从晚期Z模式 向早期Z模式的改变。
11. 根据权利要求10所述的计算机系统,其中所述设置引擎包含滞后计数器,当所述 图形渲染管线经配置以用于晚期Z模式时所述滞后计数器周期性地推进,且其中当 滞后计数等于触发值时,允许所述设置引擎将所述图形渲染管线切换为早期Z模式。
12. 根据权利要求IO所述的计算机系统,其中所述设置引擎经配置以在从早期Z模式 切换为晚期Z模式或从晚期Z模式切换为早期Z模式之前执行冲洗操作。
全文摘要
本发明一个实施例陈述一种用于使用早期Z模式优化可配置的图形渲染管线及通过将Z测试操作推进到着色操作之前任何可能的时间来优化图形渲染效率的结构。由设置引擎维持的当前渲染状态确定是否可能将Z测试功能推进到着色器引擎之前以便进行“早期”Z测试,或是否应将所述Z测试功能延迟到着色操作之后以便进行“晚期”Z测试。数据被路由到管线中每一处理引擎,使得如所述当前渲染状态所确定,动态地构建针对早期Z或晚期Z模式的适当数据流。在任何可能的时间通过丢弃在进入所述着色器引擎之前z值未由着色操作改变的样本来有利地免除所述着色器引擎进行不必要工作。相同功能单元用于早期Z和晚期Z配置两者中,从而使实施方案所需的任何额外硬件最小化。
文档编号G06T15/00GK101101667SQ20071009724
公开日2008年1月9日 申请日期2007年4月28日 优先权日2006年5月8日
发明者史蒂文·E·莫尔纳, 埃米特·M·基尔加里弗, 沃尔特·R·斯坦纳, 道格拉斯·A·沃里斯, 阿达姆·克拉克·魏特肯珀, 马克·J·弗伦奇 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1