CN101101667A - 使用早期z模式优化可配置的图形渲染管线 - Google Patents

使用早期z模式优化可配置的图形渲染管线 Download PDF

Info

Publication number
CN101101667A
CN101101667A CNA2007100972412A CN200710097241A CN101101667A CN 101101667 A CN101101667 A CN 101101667A CN A2007100972412 A CNA2007100972412 A CN A2007100972412A CN 200710097241 A CN200710097241 A CN 200710097241A CN 101101667 A CN101101667 A CN 101101667A
Authority
CN
China
Prior art keywords
engine
pattern
early
mode
graphics rendering
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
CNA2007100972412A
Other languages
English (en)
Other versions
CN100565577C (zh
Inventor
马克·J·弗伦奇
埃米特·M·基尔加里弗
史蒂文·E·莫尔纳
沃尔特·R·斯坦纳
道格拉斯·A·沃里斯
阿达姆·克拉克·魏特肯珀
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN101101667A publication Critical patent/CN101101667A/zh
Application granted granted Critical
Publication of CN100565577C publication Critical patent/CN100565577C/zh
Expired - Fee Related 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

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

Abstract

本发明一个实施例陈述一种用于使用早期Z模式优化可配置的图形渲染管线及通过将Z测试操作推进到着色操作之前任何可能的时间来优化图形渲染效率的结构。由设置引擎维持的当前渲染状态确定是否可能将Z测试功能推进到着色器引擎之前以便进行“早期”Z测试,或是否应将所述Z测试功能延迟到着色操作之后以便进行“晚期”Z测试。数据被路由到管线中每一处理引擎,使得如所述当前渲染状态所确定,动态地构建针对早期Z或晚期Z模式的适当数据流。在任何可能的时间通过丢弃在进入所述着色器引擎之前z值未由着色操作改变的样本来有利地免除所述着色器引擎进行不必要工作。相同功能单元用于早期Z和晚期Z配置两者中,从而使实施方案所需的任何额外硬件最小化。

Description

使用早期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模式)中的一种模式中操作。以穿过PROP 130的实线展示晚期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将由ZROP 120执行的Z测试的结果与传递通过等待时间缓冲器212的来自着色器引擎140的数据合并,以传输或丢弃每一经着色的像素。接着多路复用器222选择通过Z测试的经着色的像素并将所述像素传输到CROP 150,以便在写入到帧缓冲器160之前进行最终颜色处理。
与图1相同,以虚线展示早期Z模式的数据流路径131。在早期Z模式中,PROP 130经配置以将来自光栅引擎115的数据直接传递到多路复用器220。由多路复用器220传输的数据被路由到ZROP 120并路由到第二等待时间缓冲器212以调节ZROP 120可能展现的可变等待时间。同样,Z测试在ZROP 120内发生。Z解析引擎214将由ZROP 120执行的Z测试的结果与第二等待时间缓冲器212中的数据合并,以将通过Z测试的像素传输到着色器引擎140以进行着色。接着将经着色的像素通过第三多路复用器222从着色器引擎140路由到CROP 150,以便在写入到帧缓冲器160之前进行最终颜色处理。
对于图形渲染管线100来说,几乎在所有情况下早期Z模式都是优选的较高性能的操作模式。设置引擎110确定图形渲染管线100是否可在早期Z模式中操作或图形渲染管线100是否应在晚期Z模式中操作。一般来说,如果当前渲染状态指示与图元相关联的Z值将不会被着色器引擎140改变,那么就使用早期Z模式。如先前所述,晚期Z模式中支持所有的渲染操作。然而,如下文陈述,当遇到某些特殊的渲染模式时可实施早期Z模式。
有一种渲染状态通常排除早期Z模式操作。只要着色器程序在内部计算或修改Z值,就建立所述渲染状态,其根据在于在以下伪代码中当DepthReplaceShader==true时的情况。在其它可能的渲染状态集合内,存在两种允许早期Z模式的体制;将第一种定义为“EarlyZNoKill”,其中着色器和后着色器颜色操作不影响片断覆盖。将允许早期Z模式的第二种体制定义为“EarlyZNoUpdate”’,其中禁用了Z值写入,使得尽管可针对覆盖范围可由着色器修改的像素或样本执行Z测试,但可在图形渲染管线100中着色之前移动Z测试。如下文更详细描述,在向早期Z模式的切换发生之前,滞后计数器111应当达到特定的计数。以下的伪代码概述了在启用早期Z模式之前应满足的条件:
EarlyZGlobalOK=
     DepthReplaceShader==false;//着色器不计算或修改Z
EarlyZNoKillOK=//着色器不影响片断覆盖范围
      AlphaTestEnable==false&&
      AlphaToCovgEnable==false&&
      ShaderPixelKillEnable==false&&
      TextureColorKeyEnable==false;
EarlyZNoUpdateOK=//Z结果未被存储
      (DepthTestEnable==false‖
      DepthWriteEnable==false)&&
      (StencilTestEnable==false‖
      (StencilMask==0x0)&&
      AllowEarlyZNoUpdate== true;;
EarlyZEnable=//满足渲染状态标准以切换到早期Z模式
EarlyZGlobalOK&&
(EarlyZNoKillOK‖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:将片断α值与参考值进行比较,如果不满足指定条件就删除所述片断;
AlphaToCovgEnable:将片断α转换为样本覆盖掩码,所述样本覆盖掩码与由光栅引擎计算出的覆盖掩码求和;
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相关联的性能损失可能降低总性能。为了解决这第二个问题,使用速率限制滞后机制来控制图形渲染管线100被允许进行模式切换的速率。
滞后计数器111跟踪向设置引擎110呈现的图元的数目,且当检测到所述图元的阈值数目时,设置引擎110可起始从晚期Z模式到早期Z模式的切换。更具体来说,因为晚期Z模式通常适应于图形渲染管线100中所允许的所有渲染状态,所以将晚期Z模式视为默认的操作模式。当在晚期Z模式中操作且EarlyZEnable变为真时,设置引擎110视机会起始图形渲染管线100向早期Z模式的模式切换,其中经历了执行冲洗且假定设置引擎110已遇到了图元的阈值数目。因此,在启用向早期Z模式的切换之前,图形渲染管线100保持在晚期Z模式中历时最小数目的图元的持续时间,从而减小了模式切换的速率。
在一个实施例中,用传输到设置引擎110且可由滞后计数器111使用的状态束中陈述的计数值来编程滞后计数器111。只要设置引擎110起始向晚期Z模式的模式变化(或当图形渲染管线100初始地经配置以用于晚期Z模式时),就将滞后计数器111维持的滞后计数设定为所述计数值。一旦将滞后值设定为所述计数值,在每次图元被接收到设置引擎110中时,例如通过减量或增量操作来推进滞后计数。此过程持续进行,直到滞后计数达到触发值(例如,零)为止。达到触发值的滞后计数指示预定阈值数目的图元已被呈现到设置引擎110,其将使图形渲染管线100保持在晚期Z模式以处理所述最小阈值数目的图元。此时,设置引擎110可在图形渲染管线100中起始向早期Z模式的模式变化(如果这样做是适当的)。
在替代实施例中,当在早期Z模式与晚期Z模式之间进行切换时,通过仅选择性地排出改变图形渲染管线100中的处理位置的那些管线元件,可部分减轻与切换Z模式相关联的损失。在此实施例中,称为“Z模式令牌”的状态束命令由设置引擎110产生且用于将图形渲染管线100的配置从早期Z模式改变为晚期Z模式,反之亦然。设置引擎110通过图形渲染管线100传输Z模式令牌,使得Z模式令牌被传递通过管线中的每一处理元件。当管线经重新配置时改变图形渲染管线100中的处理位置的每一处理元件均包括当遇到Z模式令牌时实施局部的选择性冲洗所必需的功能性。
当在早期Z模式中操作时,如果新的渲染状态与早期Z模式不兼容,那么设置引擎110通过首先执行冲洗且随后指示PROP 130修改数据流路径(如上所述)来使图形渲染管线100转变回晚期Z模式。在此情形下,设置引擎110通常不会受到阈值数目的图元已被呈现到设置引擎110的限制。
除了以上特性之外,滞后计数器111可经配置以在若干不同模式中操作,所述若干不同模式包括(但不限于)迫使图形渲染管线100始终在晚期Z模式中操作或始终允许图形渲染管线100在不考虑滞后计数值的情况下切换模式的模式。另外,滞后计数器111可响应于某些重设条件,从而导致将滞后计数设定为(例如)上文所述的计数值。
图3是根据本发明一个实施例用于切换图1的图形渲染管线100中的操作模式的方法步骤的流程图。尽管结合图1、2、4A和4B描述所述方法步骤,但所属领域的技术人员将了解,以任何次序执行所述方法步骤的任何系统均在本发明的范围内。
切换操作模式的方法开始于步骤310,在步骤310中设置引擎110接收将进行操作的图元。在步骤312中,设置引擎110确定当前操作模式是早期Z模式还是晚期Z模式。如果当前操作模式为晚期Z模式,那么所述方法进行到步骤311,在步骤311中更新滞后计数。如上所述,当进入晚期Z模式时或当图形渲染管线100初始地经配置以用于晚期Z模式时将滞后计数设定为传输到设置引擎110的状态束中陈述的计数值。在晚期Z模式操作期间,在每次设置引擎110接收到新图元时,例如通过增量或减量操作来推进滞后计数。在更新滞后计数器111之后,所述方法进行到步骤320,在步骤320中设置引擎110确定是否应进行模式变化,如由渲染状态变量EarlyZEnable为真所指示。如果EarlyZEnable为假,那么不应进行模式变化,且所述方法进行到步骤340,在步骤340中设置引擎110等待图元流中的下一图元。然而,如果EarlyZEnable为真,那么应进行模式变化,且所述方法进行到步骤321。在步骤321中,设置引擎110起始冲洗操作以冲洗图形渲染管线100,从而允许完成处于进行中的工作。所述方法接着进行到步骤322,在步骤322中设置引擎110指示PROP 130重新配置图形渲染管线100的数据流以用于早期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模式中操作时图1的图形渲染管线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测试。因此,本发明的范围由所附权利要求书确定。

Claims (12)

1.一种用于处理图形图元的可配置图形渲染管线,所述图形渲染管线包括:
设置引擎,其经配置以确定应在早期Z模式还是晚期Z模式中进行处理;
光栅引擎,其经配置以从所述设置引擎接收几何图元并将所述几何图元转换为一个或一个以上像素图元;
着色器引擎,其经配置以对与像素图元关联的一个或一个以上样本执行着色操作;
Z光栅操作(ZROP)单元,其经配置以对所述样本的每一者执行Z测试;
Z解析引擎,其经配置以针对每一样本、基于与所述样本关联的Z测试结果来确定应保留还是丢弃所述样本;和
预光栅操作(PROP)单元,其经配置以修改所述着色器引擎与所述ZROP单元之间的数据流路径以支持早期Z模式和晚期Z模式两者,
其中当所述图形渲染管线经配置以用于早期Z模式时,与所述像素图元关联的所述样本首先由所述ZROP单元和所述Z解析引擎处理且接着由所述着色器引擎处理,且当所述图形渲染管线经配置以用于晚期Z模式时,所述样本首先由所述着色器引擎处理且接着由所述ZROP单元和所述Z解析引擎处理。
2.根据权利要求1所述的图形渲染管线,其中所述设置引擎经配置以估计与所述几何图元相关联的渲染状态,以确定应进行从早期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.根据权利要求1所述的图形渲染管线,其中所述样本是像素。
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.根据权利要求10所述的计算机系统,其中所述设置引擎经配置以在从早期Z模式切换为晚期Z模式或从晚期Z模式切换为早期Z模式之前执行冲洗操作。
CNB2007100972412A 2006-05-08 2007-04-28 使用早期z模式优化可配置的图形渲染管线 Expired - Fee Related CN100565577C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/430,635 US8933933B2 (en) 2006-05-08 2006-05-08 Optimizing a graphics rendering pipeline using early Z-mode
US11/430,635 2006-05-08

Publications (2)

Publication Number Publication Date
CN101101667A true CN101101667A (zh) 2008-01-09
CN100565577C CN100565577C (zh) 2009-12-02

Family

ID=38660786

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100972412A Expired - Fee Related CN100565577C (zh) 2006-05-08 2007-04-28 使用早期z模式优化可配置的图形渲染管线

Country Status (5)

Country Link
US (1) US8933933B2 (zh)
JP (1) JP4513108B2 (zh)
KR (1) KR100899488B1 (zh)
CN (1) CN100565577C (zh)
TW (1) TWI378398B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104050705A (zh) * 2013-03-13 2014-09-17 辉达公司 处置光栅操作中的post-z覆盖数据
CN106067186A (zh) * 2015-04-15 2016-11-02 联发科技(新加坡)私人有限公司 图形处理单元及其方法
CN107169916A (zh) * 2016-03-07 2017-09-15 想象技术有限公司 用于simd处理的任务组合
CN108711133A (zh) * 2017-04-01 2018-10-26 英特尔公司 带有早期分层的z的基于图块的立即模式渲染
CN109564700A (zh) * 2016-09-16 2019-04-02 英特尔公司 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化
CN109564695A (zh) * 2016-09-16 2019-04-02 英特尔公司 用于高效3d图形流水线的装置和方法

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8933933B2 (en) * 2006-05-08 2015-01-13 Nvidia Corporation Optimizing a graphics rendering pipeline using early Z-mode
US8207975B1 (en) * 2006-05-08 2012-06-26 Nvidia Corporation Graphics rendering pipeline that supports early-Z and late-Z virtual machines
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US20080284780A1 (en) * 2007-05-15 2008-11-20 R-Ming Hsu Method for enabling alpha-to-coverage transformation
JP5536760B2 (ja) * 2008-05-30 2014-07-02 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド シェーダ列のための冗長方法及び装置
US9093040B2 (en) 2008-05-30 2015-07-28 Advanced Micro Devices, Inc. Redundancy method and apparatus for shader column repair
GB2475375B (en) * 2008-06-04 2011-12-14 Advanced Risc Mach Ltd Graphics processing systems
US9367487B1 (en) * 2009-06-10 2016-06-14 Nvidia Corporation Mitigating main crossbar load using dedicated connections for certain traffic types
AU2009202377A1 (en) * 2009-06-15 2011-01-06 Canon Kabushiki Kaisha Combining overlapping objects
US9142057B2 (en) * 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
KR101719485B1 (ko) * 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US9019292B2 (en) * 2011-09-12 2015-04-28 Microsoft Technology Licensing Llc Reordering graph execution for processing optimization
US10008029B2 (en) 2013-05-31 2018-06-26 Nvidia Corporation Updating depth related graphics data
KR20150042095A (ko) 2013-10-10 2015-04-20 삼성전자주식회사 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법
US9697580B2 (en) * 2014-11-10 2017-07-04 Qualcomm Incorporated Dynamic pipeline for graphics processing
KR102472131B1 (ko) * 2015-09-03 2022-11-29 삼성전자주식회사 쉐이더 프로그램을 생성하는 방법 및 장치
US9824458B2 (en) * 2015-09-23 2017-11-21 Qualcomm Incorporated Dynamically switching between late depth testing and conservative depth testing
US10943389B2 (en) * 2016-12-09 2021-03-09 Advanced Micro Devices, Inc. Removing or identifying overlapping fragments after z-culling
US11170555B2 (en) 2019-11-27 2021-11-09 Arm Limited Graphics processing systems
US11210821B2 (en) * 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
US11216993B2 (en) 2019-11-27 2022-01-04 Arm Limited Graphics processing systems
US11210847B2 (en) 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
CN116703689B (zh) * 2022-09-06 2024-03-29 荣耀终端有限公司 一种着色器程序的生成方法、装置和电子设备
GB2624430A (en) * 2022-11-17 2024-05-22 Advanced Risc Mach Ltd Graphics processors

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5798770A (en) * 1995-03-24 1998-08-25 3Dlabs Inc. Ltd. Graphics rendering system with reconfigurable pipeline sequence
JPH0950533A (ja) 1995-08-08 1997-02-18 Kubota Corp グラフィックス表示装置
US7068272B1 (en) * 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
US6222550B1 (en) * 1998-12-17 2001-04-24 Neomagic Corp. Multiple triangle pixel-pipelines with span-range pixel interlock for processing separate non-overlapping triangles for superscalar 3D graphics engine
US7034828B1 (en) * 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6999076B2 (en) * 2001-10-29 2006-02-14 Ati Technologies, Inc. System, method, and apparatus for early culling
JP3761085B2 (ja) * 2001-11-27 2006-03-29 株式会社ソニー・コンピュータエンタテインメント 画像処理装置及びその構成部品、レンダリング処理方法
US6828978B2 (en) * 2002-02-28 2004-12-07 David B. Buehler Bucket-sorting graphical rendering apparatus and method
US6930684B2 (en) * 2002-09-27 2005-08-16 Broadizon, Inc. Method and apparatus for accelerating occlusion culling in a graphics computer
US7633506B1 (en) * 2002-11-27 2009-12-15 Ati Technologies Ulc Parallel pipeline graphics system
US7268779B2 (en) * 2002-12-24 2007-09-11 Intel Corporation Z-buffering techniques for graphics rendering
KR100510131B1 (ko) * 2003-01-29 2005-08-26 삼성전자주식회사 픽셀 캐쉬 및 이를 이용한 3차원 그래픽 가속 장치 및 방법
US7978194B2 (en) 2004-03-02 2011-07-12 Ati Technologies Ulc Method and apparatus for hierarchical Z buffering and stenciling
US20050195198A1 (en) * 2004-03-03 2005-09-08 Anderson Michael H. Graphics pipeline and method having early depth detection
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
JP4684749B2 (ja) * 2005-06-03 2011-05-18 三菱電機株式会社 グラフィック装置
US8860721B2 (en) * 2006-03-28 2014-10-14 Ati Technologies Ulc Method and apparatus for processing pixel depth information
US8933933B2 (en) * 2006-05-08 2015-01-13 Nvidia Corporation Optimizing a graphics rendering pipeline using early Z-mode
US8207975B1 (en) * 2006-05-08 2012-06-26 Nvidia Corporation Graphics rendering pipeline that supports early-Z and late-Z virtual machines
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104050705A (zh) * 2013-03-13 2014-09-17 辉达公司 处置光栅操作中的post-z覆盖数据
CN106067186A (zh) * 2015-04-15 2016-11-02 联发科技(新加坡)私人有限公司 图形处理单元及其方法
CN107169916A (zh) * 2016-03-07 2017-09-15 想象技术有限公司 用于simd处理的任务组合
CN107169916B (zh) * 2016-03-07 2023-01-13 想象技术有限公司 用于simd处理的任务组合
CN109564700A (zh) * 2016-09-16 2019-04-02 英特尔公司 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化
CN109564695A (zh) * 2016-09-16 2019-04-02 英特尔公司 用于高效3d图形流水线的装置和方法
CN109564700B (zh) * 2016-09-16 2024-01-02 英特尔公司 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化
CN109564695B (zh) * 2016-09-16 2024-01-02 英特尔公司 用于高效3d图形流水线的装置和方法
CN108711133A (zh) * 2017-04-01 2018-10-26 英特尔公司 带有早期分层的z的基于图块的立即模式渲染

Also Published As

Publication number Publication date
TWI378398B (en) 2012-12-01
US20070257905A1 (en) 2007-11-08
CN100565577C (zh) 2009-12-02
US8933933B2 (en) 2015-01-13
JP2007328774A (ja) 2007-12-20
TW200821985A (en) 2008-05-16
KR20070108823A (ko) 2007-11-13
JP4513108B2 (ja) 2010-07-28
KR100899488B1 (ko) 2009-05-27

Similar Documents

Publication Publication Date Title
CN100565577C (zh) 使用早期z模式优化可配置的图形渲染管线
US9632779B2 (en) Instruction predication using instruction filtering
US10776117B2 (en) Instruction predication using unused datapath facilities
CN101194245B (zh) 具有宽寄存器组体系结构的分组处理器
CN102648450B (zh) 用于并行命令列表生成的硬件
US9619234B2 (en) Indirect instruction predication
US7809925B2 (en) Processing unit incorporating vectorizable execution unit
US6996709B2 (en) Method for configuring a configurable hardware block by configuring configurable connections provided around a given type of subunit
US9195463B2 (en) Processing core with speculative register preprocessing in unused execution unit cycles
CN109684087B (zh) 运算方法、装置及相关产品
US20130145128A1 (en) Processing core with programmable microcode unit
WO2012103148A2 (en) Unrolling quantifications to control in-degree and/or out degree of automaton
US20030182376A1 (en) Distributed processing multi-processor computer
US20190079803A1 (en) Directed and interconnected grid dataflow architecture
CN103942083B (zh) 一种面向可变参函数的编译实现方法
US6851046B1 (en) Jumping to a recombine target address which is encoded in a ternary branch instruction
CN106462432A (zh) 数据相关控制流简化
CN107851007A (zh) 宽数据类型的比较
US20060031644A1 (en) Storage device flow control
CN105912459A (zh) 一种基于符号执行的数组越界检测方法
CN103282876B (zh) 数据元素的条件选择
CN100492341C (zh) 用于处理流水线化数据的设备和方法
CN117155422B (zh) 一种can信号收发方法及系统
US9525760B1 (en) Dynamic processing context
CN118262545A (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091202

CF01 Termination of patent right due to non-payment of annual fee