CN106575449A - 仅位置着色管线 - Google Patents

仅位置着色管线 Download PDF

Info

Publication number
CN106575449A
CN106575449A CN201580045196.9A CN201580045196A CN106575449A CN 106575449 A CN106575449 A CN 106575449A CN 201580045196 A CN201580045196 A CN 201580045196A CN 106575449 A CN106575449 A CN 106575449A
Authority
CN
China
Prior art keywords
pipeline
media
triangle
position attribution
instruction
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
CN201580045196.9A
Other languages
English (en)
Other versions
CN106575449B (zh
Inventor
S.沙马
S.M.麦于兰
T.A.皮亚扎
K.K.比拉瓦巴特拉
P.L.多伊尔
P.A.约翰逊
B.波达
J.N.哈泽尔格伦
C.J.蒙克贝里
T.G.阿克尼涅-默勒
H.塞尔亚
K.罗戈文
R.L.法雷尔
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN106575449A publication Critical patent/CN106575449A/zh
Application granted granted Critical
Publication of CN106575449B publication Critical patent/CN106575449B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory

Landscapes

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

Abstract

在仅位置着色中,存在两个几何管道,即,称为剔除管道的裁减版本和称为重播管道的完整版本。因此,剔除管道与主要应用并行地执行位置着色器,但是通常快得多地生成关键结果,因为它只提取顶点的位置属性并对其进行着色,并且避免光栅化以及渲染帧缓冲器的像素。此外,剔除管道利用这些关键结果来计算所有三角形的可见性信息,而不管是否剔除它们。另一方面,重播管道消耗可见性信息以便跳过剔除的三角形,并只对最终传递到光栅化阶段的可见三角形进行着色。这两个管道一起可隐藏丢弃的三角形的长剔除运行,并且在一些实施例中可更快速地完成该工作。

Description

仅位置着色管线
技术领域
本发明涉及图形处理。
背景技术
当代图形处理体系结构遵循按序处理三角形的虚拟管线。先经由着色器变换顶点,接着三角形经过设置和光栅化阶段以便产生像素,然后对像素进行着色并将它们写入到帧缓冲器。但是,只需一小部分三角形便可在任何帧缓冲器上渲染正确图像。例如,一些三角形序列不具有任何视觉影响,并且甚至在光栅化阶段之前就丢弃。这些序列要么经由视口视锥丢弃法丢弃,要么经由图形管线进行背面剔除。此外,丢弃的三角形序列遵循突发特性,其中突发的大小可经过超过10,000个三角形,从而使像素管道和计算集群供应不足。
附图说明
关于以下各图描述一些实施例:
图1是一些实施例的简化基线体系结构;
图2是一些实施例的更详细的体系结构;
图3是体系结构的一个实施例的框图;
图4是根据一个实施例具有遮挡剔除的剔除管道和重播管道的流程图;
图5是根据一个实施例的重播管道和用于记录深度表示的剔除管道的流程图;
图6是根据一个实施例的数据处理系统的框图;
图7是根据一个实施例的如图6所示的处理器的框图;
图8是根据一个实施例的图6的图形处理器的框图;
图9是根据一个实施例的图形处理引擎的框图;
图10是根据另一个实施例的图形处理器的框图;
图11示出一个实施例的线程执行逻辑;
图12是根据一个实施例的图形处理器执行单元指令格式的框图;
图13是图形处理器的另一个实施例的框图;
图14A是根据一个实施例的图形处理器命令格式的框图;
图14B是根据一个实施例的图形处理器命令序列的框图;以及
图15是一个实施例的图形软件体系结构。
具体实施方式
完全隐藏长运行丢弃序列的机制将改善性能。不幸的是,在不提取顶点的位置属性并对其进行着色(执行)的情况下,无法肯定地知道可有效地跳过任何特定三角形序列。由于位置着色在决定是否可丢弃三角形中起着关键作用,所以图形处理单元(GPU)应当优先考虑位置着色。例如,在现代GPU体系结构中,顶点计算涉及:从存储器提取顶点属性(如位置、颜色、纹理-坐标等);然后借助于顶点着色器对它们进行着色。关键指令的计算可与计算位置属性的顶点着色器(即,位置着色器)分开。如果关键结果的计算进行地快得多,那么可利用这些结果来隐藏剔除序列。简言之,可取的是“预先执行”位置着色器以便代表主要应用有效地消耗等待时间。
在仅位置着色中,存在两个几何管道,即,称为剔除管道的裁减版本和称为重播管道的完整版本。这两个管道执行相同应用的不同实例,并且每个实例具有它自己的上下文。因此,剔除管道与主要应用并行地执行位置着色器,但是通常快得多地生成关键结果,因为它只提取顶点的位置属性并对其进行着色,并且避免光栅化以及渲染帧缓冲器的像素。此外,剔除管道利用这些关键结果来计算所有三角形的可见性信息,而不管是否剔除它们。另一方面,重播管道消耗可见性信息以便跳过剔除的三角形,并只对最终传递到光栅化阶段的可见三角形进行着色。这两个管道一起可隐藏丢弃的三角形的长剔除运行,并且在一些实施例中可更快速地完成该工作。
除了潜在的性能改善之外,仅位置着色还提供节省功率并增强体系结构的可扩展性的机会。以下是一些实施例的一些贡献:
● 在一些实施例中,仅位置着色可完全隐藏嵌入在应用中的三角形的长剔除序列。这些剔除运行具有通过使存在于系统中的像素管道和计算供应不足而低效率地利用GPU资源的趋势。借助于仅位置着色,可完全抑制长剔除运行,并且在一些实施例中,瓶颈从几何管道偏移到像素管道,从而提供性能改善。
● 可经由剔除管道利用GPU内部的资源,从而使得它可更快速地完成关键工作的计算。
● 此外,在一些实施例中,仅位置着色体系结构可节省能量,即,通过提取较少属性以及对于剔除的三角形执行较少的动态指令而获得能量节省。
● 仅位置着色可为较大体积产品提供更大的可扩展性,即,通过将瓶颈从几何管道偏移到像素管道,可通过增加像素和计算吞吐量以便与体系结构要求匹配来转变可扩展性问题。
图1是与应用程序接口(API)和编程模型匹配的基线体系结构的简单化视图,而图2展现根据一个实施例的基线GPU的更详细的微体系结构。GPU是包括以下三个部分的统一着色器模型:非切片,切片和非核。
通常,3D场景开始是三角形化曲面的合集,其中三角形的顶点定义对象的形状。将这些顶点输入列表馈送到顶点提取(VF)单元12,而VF单元12又从存储器14提取与顶点相关联的属性。在顶点着色器(VS)单元16中,利用可编程着色器变换提取的顶点属性。可将这些可编程着色器视为是将顶点映射到屏幕上并通过对它们的属性执行数学运算来对3D环境中的对象增加特殊效果的子例行程序。将这些着色器分派给称为执行单元(EU)的线程处理器,在线程处理器中变换顶点的属性(如位置、颜色、纹理-坐标等),并将计算值存储在本地存储器中以便供随后的管道阶段参考。
VS单元的输出进入到接下来的管线阶段,这些管线阶段是外壳着色器17、镶嵌18、域着色器19和几何着色器20(如果适用的话),或者将VS单元的输出发送到图元装配单元22,在图元装配单元22中创建三角形。在创建三角形之后,来到裁剪阶段24,在裁剪阶段24,丢弃在视口视锥丢弃23中确定位于视口视锥外部的三角形。另一方面,接受位于视口视锥的平面内的三角形,并将它们发送到随后的管道阶段。此外,裁剪阶段也可裁剪与视锥体的平面相交的三角形。
通过简单剔除阶段26再次检查在视口视锥丢弃23中幸存的三角形,以便确认三角形是否是最终图像的一部分,并扔掉没有通过这些测试的对象。例如,在该阶段中丢弃背面、退化、零区域等的三角形。对于一些应用,通过视口视锥或简单剔除阶段丢弃超过大约80%的三角形。最后,将通过的三角形发送到设置和光栅化单元28和30。
基线体系结构的第二部分是包含光栅化30、深度32、着色和纹理33以及颜色集群34的像素管道。像素管道从光栅化单元30开始,光栅化单元30确定位于由几何管道发送的三角形的内部或边缘上的所有像素的位置。此外,它将这些三角形划分成对称像素块,将这些对称像素块发送到深度(Z)管道32以便进行深度测试。由于3D场景中的多个对象可映射到相同位置,所以深度管道确定嵌入在块中的像素是最接近观察者还是被之前观察的属于不同对象的像素隐藏了。对通过深度测试的像素进行着色(着色和纹理33)以便确定它们的颜色和与它们有关的其它属性。最后,将计算的像素值发送到颜色管道34,颜色管道34可以可选地将计算值与之前已知的状态混合或发送它们以便更新帧缓冲器。
如图2所示,体系结构40的非切片部分38中存在从VF阶段到简单剔除阶段的几何管线36。经由全局线程分派42将源于几何管道的可编程着色器分派给线程处理器,并在本地存储器44中记录计算值。来自几何管道的通过的三角形跳到切片46,在切片46,经由光栅化行走将它们划分成对称像素块。经由像素散列机制48对像素块进行散列操作以便决定是否要在切片中渲染该像素块。散列机制不仅负责负载平衡,而且还负责维持像素一致性。
如之前所描述,3D场景中的多个三角形可重叠,并且散列机制义不容辞地经由本地线程分派53将给定屏幕坐标处的像素块发送到相同切片以及相同的计算集群50。这么做是为了维持像素的深度和颜色一致性。此外,体系结构的切片部分可划分成两个功能块,即,像素管道52和计算集群50。如前所述,像素管道包含光栅化、深度和颜色集群,而计算集群包含用于执行可编程着色器的执行单元(EU)54的阵列。每个EU可支持具有不同单指令多数据(SIMD)宽度的多个线程上下文,即,在一个实施例中为8、16或32。在内部,它具有四倍泵送的两个管道。每个管道具有四流SIMD处理器,并且可执行浮点和标量指令。每个计算集群还具有可进行集中读取以及分射写入的共享纹理-采样单元56和负载/存储单元58。另外,如图2所示,这些共享功能还具有通过统一的L2高速缓存60备份的它们自己的专用高速缓存。最后,类似体系结构代试图满足各种市场细分,即,从电话/平板解决方案到高端游戏计算机。因此,相同体系结构代可能具有包含不同数量的计算集群和切片的产品。
非核62包含高速缓存/存储器接口61、最后一级高速缓存(LLC)64以及存储器66。就如同切片一样,非核配置也取决于市场细分。例如,高端配置可具有最后一级高速缓存以及嵌入式DRAM(eDRAM)68,而电话/平板的配置可具有存储器控制器和系统存储器。
如前所述,当代GPU体系结构提取顶点的所有属性并对其进行着色。但是,经由视口视锥或简单剔除丢弃法会拒绝大多数顶点。这里的目标是对于丢弃情形做更少的工作,即,只提取用于决定是否将丢弃三角形所需的属性并对其进行着色。相较于剩余属性,GPU应当优先考虑位置着色,因为只需位置便可确定是否剔除三角形。
通常,着色属性包括例如位置、法线、颜色和纹理坐标。在一些实施例中,当即将实现仅位置着色时,只需从存储器读取位置属性,而无需读取所有属性、然后选择出位置属性。在一些实施例中,这节省了时间、计算周期和存储器带宽。因此,在一些实施例中,在顶点提取期间,剔除管道只提取位置属性。
当代GPU体系结构对丢弃的三角形执行额外指令。与动态指令类似,当代GPU体系结构提取剔除的顶点的大量不必要和/或用过的属性。相较于剩余顶点属性,GPU应当优先考虑位置着色。
第一步是优先考虑嵌入在顶点着色器中的关键指令以便计算位置属性并尽可能早地在GPU管线中执行它们。首先,GPU的抖动/驱动器组合标识关键指令,其次,将几何阶段的硬件管线调整成在该管道中较早地执行这些指令。这些关键指令称为位置着色器。位置着色器用于对于丢弃的顶点提取较少属性并执行较少指令。
另一个问题是,丢弃的三角形序列具有突发特性,其中突发的大小可大于10,000个三角形。这种行为的含义是,对于较长时间周期,几何管道将忙于拒绝三角形,而像素管道则将空闲。此外,顶点着色器在动态指令方面的复杂度比像素着色器小得多,并且因此对于较长运行剔除序列也将使计算集群供应不足。在一些实施例中,可通过完全隐藏这些长运行丢弃序列来提高系统的效率。
进一步及时解耦位置着色器的计算,以使得它可有效地隐藏剔除序列。一种机制“预先执行”位置着色器,并代表主要应用有效地消耗它的等待时间,以使得可跳过长运行剔除的序列。简言之,仅位置着色器不仅可以实现性能增益,而且在一些实施例中,还通过对于丢弃的顶点做更少的工作来节省功率。
只提取丢弃对象的位置属性并对其进行着色减少了系统的能量占用。跳过浪费的工作通过使像素管道和计算集群保持忙碌而增强了系统的效率。
图3示出具有两个几何管道(即,剔除管道70和重播管道72)的体系结构的简化框图。这两个管道执行相同应用的不同实例,其中每个实例可在完全不同的绘图调用上工作。剔除管道的职责是计算三角形的可见性信息,而不管是否拒绝三角形。将该信息存储在可见性记录先进先出(FIFO)74中,而FIFO 74又供重播管道消耗以便跳过丢弃的三角形。此外,剔除管道通过只提取位置属性并对其进行着色而更快速地生成该关键信息。这样,这两个管道一起工作以便减少剔除的三角形序列所需的工作量并有效地跳过它们。
如图3所示,当与重播管道相比时,剔除管道又浅又精简。它具有用于对位置属性进行着色的仅位置VF-VS阶段76以及紧跟其后的图元装配77、视口视锥丢弃阶段78和简单剔除阶段80。换句话说,剔除管道中的指令集只包括计算位置属性所需的那些指令,而不具有用于计算其它着色器属性的指令。这个浅管线对于绘图调用的每个三角形计算可见性信息,并按时间次序将该信息记录在可见性记录FIFO中。在一些实施例中,按照逐位序列保持记录的信息,例如对于没有通过的三角形使用0,而对于通过的三角形使用1,并且记录的信息因而利用少量存储区域。剔除管道可提前运行至少一个绘图调用,以使得重播管道不会缺乏可见性信息。通常,3D帧由在给定渲染-目标上工作的不同遍数的渲染组成。帧在合成阶段中结束,在合成阶段中,将在渲染目标中记录的中间信息混合在一起以便生成最终帧缓冲器。每遍渲染具有任意数量的绘图调用,而绘图调用实际上是定义对象的形状的三角形化曲面的合集。由于剔除管道对于绘图调用避免光栅化以及像素渲染,所以它可提前运行并以及时方式计算可见性信息。但是,如果绘图调用的信息不可用,那么重播管道可能停止。类似地,如果在可见性记录FIFO中没有空间,那么剔除管道也可能停止。
在一些实施例中,剔除管道中不见了一些重要的管道阶段,如镶嵌和几何着色器。自然会问需要镶嵌、几何着色器或两者的绘图调用发生了什么。剔除管道跳过启用了这些状态的绘图调用,而重播管道将以常规方式处理它们,即,重播管道将不会预期这些绘图调用的可见性记录。为了实现此目的,驱动器在绘图调用命令中设置这样一个位,即,该命令是否进入到剔除管道的域中。类似地,存在仅顶点绘图调用需要经由之前的绘图调用的像素着色器计算的信息的情形。这在应用中很少发生,但是驱动器仍设置指示将不经由剔除管道处理这些种类的绘图调用的位。这些是为什么重播管道仍具有存在于它的管线中的丢弃逻辑23的几个原因,因为对于所有其它情形,重播管道将仅在可见三角形上工作,并且对于它们,不需要丢弃逻辑。
最后,在一个实施例中,剔除管道中不存在常规裁剪阶段,因此将把与视锥体平面相交的三角形视为是通过(即,可将它们标记为在剔除管道中可见),然后重播管道处理所有图元裁剪。
如之前所解释,可见性FIFO可对于绘图调用的每个三角形按照逐位序列记录信息,即,对于没有通过的三角形使用0,而对于通过的三角形使用1。经由剔除管道生成存在于FIFO中的该信息,并且重播管道消耗该信息以便跳过丢弃的三角形。因此,FIFO的大小制约着剔除管道可提前多远运行,并且因此可影响体系结构的性能。
在一些实施例中,可见性FIFO可记录价值256K字节的顶点信息,并可提供最佳性能。该信息受到两种场景的约束,如下文所详述:
● 条带情形:每个顶点是三角形,那么需要:256K/(8×1024)=>32KB
● 列表情形:当三个顶点形成一个三角形时:256K/(3×8×1024)=>~11KB
在一些情形中,绘图调用驱动器可选择启用或禁止可见性记录。例如,如果绘图调用中只有几个顶点,那么与可见性记录相关联的开销可能不符合可见性记录在时间、存储器带宽和计算周期方面的成本。可对于特定绘图调用禁止可见性记录的其它示例包括线条以及已知绘图调用中的所有顶点都是可见的情形。
本地存储器用于记录供几何管道中的丢弃逻辑以及用于渲染像素的像素管道参考的顶点的着色像素。回想一下,顶点可具有任意数量的属性,如位置、法线、颜色、纹理-坐标等。借助于顶点着色器对这些属性进行着色,并将结果记录在本地存储器中以便供未来参考。无论何时它不再需要,例如当通过剔除逻辑丢弃三角形时,或者当渲染给定三角形的所有像素时,解除对记录的信息的参考。该本地存储器可以是为顶点分配、然后在不需要时最终返回到池子的寄存器的自由列表。
在剔除管道的情形中,本地存储器记录计算顶点的位置所需的属性。此外,当与基本模型相比时,这些本地存储器寄存器的寿命都比较短,这是因为在剔除管道结束时会放弃所有三角形。但是,本地存储器的容量仍可影响体系结构的性能。理想容量是位置着色器的执行等待时间的函数,它不仅取决于存在于位置着色器中的动态指令的数量,而且还取决于其它资源(如像素着色器和源于重播管道的着色器)对计算集群的需要。因此,如果剔除管道的大小不合适,那么这可阻碍剔除管道的前进进度,并且因此阻碍整体性能。
在一些实施例中,剔除管道可利用价值64KB的本地存储器来用于合适地流播。
该体系结构只提取丢弃对象的位置属性并对其进行着色,其次,它可通过跳过它们而容忍长运行剔除序列。第一方面减少了工作量,而第二方面减少了渲染帧的时间量,并且因此有助于降低系统的能量占用。
另外,在一些实施例中,可禁用仅位置着色。例如,绘图调用可指示将不使用仅位置着色。这可节省存储器带宽、计算周期和/或时间。因此,系统可在逐个绘图调用的基础上选择性地禁用并且然后启用仅位置着色。
当禁用仅位置着色时,重播管道不查找该绘图调用的任何逐位信息,并且整个绘图调用不存在任何可见性信息。
剔除技术可改善图形处理器中的性能。标准技术包括背面剔除、视锥体剔除、Z-max遮挡剔除和遮挡查询。一般来说,剔除技术通过例如丢弃完全位于视场(在图形中又称为视锥体)之外的三角形来减少为了渲染图像而进行的不必要的工作量。在图形管线中越早执行剔除测试越好,这是因为可在管线中越早地丢弃数据,并且可降低成本。可利用仅位置着色(POS)管线来较早地执行Zmax遮挡剔除。
在剔除管道中对于每个图块(在一个实施例中,图块可表示矩形像素区域)记录保守深度表示。然后,对于经过剔除管道的所有三角形,可关于保守深度表示测试是否完全遮挡了三角形。如果遮挡了三角形,那么将它剔除,并且它将活不到重播管道。在一些工作负载中,这提供了功率节省和/或性能增加。
为了能够进行遮挡剔除,图形处理器需要具有某种遮挡表示。该信息可以是每个像素的深度,但是为了降低存储成本,更有意义的是具有更粗糙的保守表示。一种类型的表示是存储每个图块的最大深度(Zmax)和最小深度(Zmin)。Zmax大于或等于图块中的最大深度,而Zmin小于或等于图块中的最小深度。因此,如果例如一个三角形完全位于单个图块内,并且如果该三角形的深度大于图块的Zmax,那么该三角形被已经渲染的几何图形遮挡,并且因此,可安全地剔除该三角形。当深度测试颠倒(例如,OpenGL深度函数:GREATER或GEQUAL)时,Zmin是有用的。每个图块可具有一个深度表示,并且实现这种深度表示的一种方法是利用如上所述的Zmin和Zmax。
图4是还包括遮挡剔除84的改进POS管线82。一般来说,简单剔除(背面、退化和零覆盖)测试和视锥体剔除86技术比遮挡剔除法剔除更多三角形,因此将遮挡剔除84放在视锥体和简单剔除测试86之后。因此,对于幸存三角形(在视锥体剔除和简单剔除之后),进行关于图块的深度表示的三角形遮挡测试。如果三角形被遮挡,那么将不在重播管道中处理它。如果三角形没有被完全遮挡,那么该三角形可生成可潜在地更新图块的深度表示的遮挡信息。如框90下方的三角形上的X所指示,可剔除输入三角形(由仅位置着色器82上的三角形指示)中的一些三角形。
遮挡算法一次可在单个图块上操作。剔除管道可包含用于标识与三角形重叠的所有图块的粗糙光栅器。此外,光栅器可计算位于每个图块内部的三角形的最小和最大深度值的保守边界。这些边界称为。一旦将图块标识为与三角形重叠,便将它传递到遮挡剔除算法之一。
在该实现中,每个图块存储单个对。在一些实施例中,8×8像素图块在剔除效率和带宽之间给出良好的权衡,而这些图块可具有任意形状和大小。将包含屏幕上的所有图块的值的缓冲器表示为早期HiZ缓冲器或eHiZ缓冲器88,以便将它与现代图形处理器中的标准HiZ缓冲器进行区分。如框90所指示,逐位存储幸存的三角形。然后,在重播管道中,对于幸存三角形运行完整顶点着色器(框92),随后进行管道的剩余部分94,即,重播管线如本文中较早描述地那样工作。
可相对于LESS深度测试描述这样一种算法,但是它可推广到任何测试形式。该算法通过在三角形和eHiZ缓冲器中的图块之间执行标准保守剔除测试开始,从而使得如果,那么可在图块中剔除该三角形。因此,只有当与三角形重叠的所有图块均满足以上测试(即,三角形对于与三角形重叠的所有图块均位于深度表示之后)时,才可剔除整个三角形。
如果没有剔除图块,那么保守地更新eHiZ缓冲器。在这种情况下,将Zmin更新为。只有当完全覆盖图块时,才可更新Zmax值。这可通过在光栅器中使用保守图块-三角形重叠测试或者通过对图块中的所有样本执行内部测试来确定。如果三角形完全覆盖图块,那么将Zmax更新为
作为扩展,可将Zmin/Zmax表示缩减为称为Zcull的单个参考值。在这种情况下,只维持执行剔除测试所需的参考值(在以上LESS测试示例中为Zmax)。如果深度测试函数改变极性,例如从 LESS变为GREATER测试,那么徐缓地清除Zcull值,以确保测试总是保守的。因此,每个图块存储一个位以指示当前Zcull值表示Zmin还是Zmax值。
遮挡剔除算法的另一个可能实现是使用Zmax-掩码表示。该表示不仅可存储一个,而且可存储每个图块的值的集合。索引位的掩码选择哪些值适用于图块中的每个像素或样本。执行保守深度测试,并且如果不可剔除图块中的进入三角形,那么利用值来更新屏蔽的深度表示。但是,屏蔽的表示通常对于最小值是无益的,并且因此将它们捆绑到固定屏幕空间区域,而不是通过索引位掩码寻址。
实际上,每个图块两个值通常在存储成本和剔除效率之间给出最好的权衡。保留每个图块的值可对一些工作负载有益,但是单侧测试通常足以捕获大多数剔除可能。
索引位的掩码通常是一致的,并且因此在大多数情况下可进行压缩以便减少图块的存储器占用。一种算法通过以下方法来存储每个4×2或2×4区域:利用一个位来指示该区域是否是恒定的,然后对恒定区域使用单个位,或者如果该区域不恒定,那么使用八个位;但是,可利用任何位-掩码压缩算法。如果图块不可压缩成期望的位预算,那么可利用有损压缩。在一个实现中,总是将值排序,以便确保。因此,将索引掩码中的位从1变为0总是安全的(这将该像素或样本有效地向后推,但仍是保守的)。如果可满足期望位预算,那么可选择具有最少数量的设置位的4×2/2×4区域,并将整个区域清零。然后,过程流继续进行具有第二最少设置位的区域,直到满足位预算。
像素着色仍然是整个图形管线的最昂贵部分之一,并且减少执行单元(EU)(有时称为着色器核)上的压力极其重要,因为它将增加性能,更重要的是还将降低功率使用。
在剔除管道中,记录场景的深度表示,然后利用该深度表示来装填重播管线的HiZ缓冲器。以此方式,可利用“来自未来的”(其它)三角形的深度来剔除一些三角形的像素着色器工作。
在如图5所示的剔除管道中记录称为早期HiZ缓冲器或eHiZ 88的深度表示。该表示有许多不同的选择。剔除管道首先进行仅位置着色器,然后进行标准剔除测试。对于幸存三角形,生成深度表示,这可能将更新发送到eHiZ缓冲器。在大多数图形处理器中,存在基于深度快速剔除光栅化图块的HiZ单元。在该管线中,HiZ单元96位于重播管道内部。在重播管道开始处理渲染命令之前,利用eHiZ缓冲器88中的深度表示装填HiZ缓冲器。可将该信息从eHiZ格式转化为HiZ的格式,但是理想的是,这些单元利用兼容格式,以便去除转化步骤。在进行装填之后,在不修改重播管道的情况下处理所有未剔除的三角形,并且基于HiZ中的已经启动的信息进行剔除。
图4和图5的序列可在软件、固件和/或硬件中实现。在软件和固件实施例中,可通过存储在诸如磁、光或半导体存储设备的一个或多个非暂时性计算机可读介质中的计算机执行的指令来实现它们。
由于利用eHiZ缓冲器(已经利用该渲染目标的整个或至少一部分即将到来的渲染命令流生成)初始化HiZ缓冲器,所以甚至在它遮挡的几何图形之后提交遮挡几何图形时的情况下,仍剔除遮挡区域。因此,在一些实施例中,可避免更多像素着色器工作,从而改善整体性能。
在一些实施例中,可减少像素着色器指令,并且像素着色器剔除可因为剔除而进一步减少纹理、深度缓冲器和颜色缓冲器带宽。
由于这种像素着色器遮挡剔除算法是遮挡剔除的扩展,所以在一些实施例中,可利用相同的eHiZ数据布局和剔除算法。
完整的每个样本深度缓冲器表示可作为eHiZ缓冲器加以保存。Zmax掩码可在剔除效率和带宽之间给出最佳权衡,但是在一些实施例中,可利用每个样本深度算法。
通过在剔除管线中增加完整深度缓冲器逻辑来实现每个样本深度,其中在每个样本基础上更新深度缓冲器值。但是,一个重要的差别是,不在管线中执行像素着色器,并且因此,如果使用未提升深度,那么不在eHiZ缓冲器中更新深度值。未提升深度是在执行像素着色器之前无法进行深度测试时的情形。这可以是例如像素着色器针对每个样本计算深度值时的情形。这意味着,eHiZ缓冲器中的值实际上是该样本的边界Zmin或Zmax,并且可避免错误地剔除不可见的几何图形。这在结合未提升深度使用EQUAL深度测试时可见。
作为一个示例,假设在具有像素着色器丢弃的第一遍中渲染树叶。由于像素着色器丢弃了片段,所以可预测未提升深度和不能更新eHiZ缓冲器。但是,如果随后一遍利用EQUAL测试渲染光照,那么无法执行完全同等的测试,因为在上一遍中没有更新eHiZ缓冲器。如果eHiZ样本的深度值跟踪Zmin或Zmax并将保守EQUAL测试定义为z≤Zmax或z≥Zmin(取决于eHiZ缓冲器中存储了哪个值),那么不能进行完全同等的测试的能力可得到缓和。样本的深度值是跟踪Zmin还是Zmax取决于用于更新它的深度函数的方向。例如,LESS函数意味着,样本的深度将代表Zmax值。
只有当所有提交的渲染命令的输出(或结果)不受影响时,装填HiZ缓冲器才是可能的。在一些实施例中,所做的最显著的假设是,Z缓冲器中的值必须单调地增大或减小。否则,Z缓冲器的最终状态不代表剔除。此外,假设执行像素着色器不存在副效应。这包括无序访问视图(UAV)访问、从像素着色器输出深度、像素着色器丢弃和模板操作。以下是状况列表以及如何在一个实现中实现它们。
1. 深度测试翻转:如果在一个实施例中,将深度函数颠倒(LESS→GREATER或GREATER→LESS),那么将不装填HiZ缓冲器。只有当翻转的深度测试实际上启用了深度写入时才会如此。
2. 像素着色器丢弃/α测试:在这些情况下,不更新eHiZ缓冲器,因为完整评估剔除管线中的覆盖范围/深度不可行。但是,可针对现有几何图形进行剔除,并且如果使用两侧eHiZ格式,那么可保守地更新边界。例如,如果使用LESS测试,那么可更新Zmin,而不更新Zmax。
3. α混合:如果启用α混合,那么不更新eHiZ缓冲器,因为装填可能会错误地剔除包含在α混合操作中的几何图形。但是,可针对eHiZ缓冲器的内容剔除α混合后的几何图形。
4. 像素着色器写入深度:如果使用保守深度输出,那么更新eHiZ缓冲器,或者可对图元执行剔除(取决于保守深度是否具有与深度函数相同的“方向”)。但是,在一般情况下,可既不执行剔除,也不更新eHiZ缓冲器。
5. 多次清除:可通过禁止装填或通过促使重播管线在清除缓冲器之前执行在每次清除之间发出的命令来处理多次清除或Z缓冲器再使用。可通过创建Z缓冲器的虚拟副本来解决与该解决方案有关的管线停止。
6. 缓冲器切换:如果在不清除深度缓冲器的情况下交换颜色缓冲器或任何其它输出缓冲器,那么可在执行完重播管线中的所有命令之后再继续,或者可禁止装填。
7. 像素着色器UAV:如果任何像素着色器写入到UAV,那么不使用装填,因为这可能会错误地剔除UAV写入。
图6是根据一个实施例的数据处理系统100的框图。数据处理系统100包括一个或多个处理器102和一个或多个图形处理器108,并且可以是单处理器桌面系统、多处理器工作站系统、或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,数据处理系统100是在移动式、手持式或嵌入式装置中使用的芯片上系统集成电路(SOC)。
数据处理系统100的实施例可包括基于服务器的游戏平台或游戏控制台(包括游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台),或并入在其中。在一个实施例中,数据处理系统100是移动电话、智能电话、平板计算装置或移动互联网装置。数据处理系统100还可包括诸如智能手表可穿戴装置、智能眼镜装置、增强现实装置或虚拟现实装置的可穿戴装置,与其耦合或集成在其中。在一个实施例中,数据处理系统100是具有一个或多个处理器102和由一个或多个图形处理器108生成的图形界面的电视或机顶盒装置。
一个或多个处理器102均包括用于处理指令的一个或多个处理器核107,指令在执行时执行系统和用户软件的操作。在一个实施例中,一个或多个处理器核107中的每个处理器核107配置成处理特定指令集109。指令集109可便于复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。多个处理器核107可各自处理可包括用于便于其它指令集的仿真的指令的不同指令集109。处理器核107还可包括诸如数字信号处理器(DSP)的其它处理装置。
在一个实施例中,处理器102包括高速缓冲存储器104。取决于体系结构,处理器102可具有单个内部高速缓存或多个等级的内部高速缓存。在一个实施例中,在处理器102的各个组件中共享高速缓冲存储器。在一个实施例中,处理器102还使用可利用已知的缓存一致性技术在处理器核107中共享的外部高速缓存(例如,3级(L3)高速缓存或最后一级高速缓存(LLC))(未示出)。处理器102中另外还包括寄存器文件106,寄存器文件106可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其它寄存器可以特定于处理器102的设计。
处理器102耦合到处理器总线110,以便在处理器102与系统100中的其它组件之间传送数据信号。系统100使用示例性‘集线器’系统体系结构,它包括存储器控制器集线器116和输入/输出(I/O)控制器集线器130。存储器控制器集线器116便于存储器装置与系统100的其它组件之间的通信,而I/O控制器集线器(ICH)130经由本地I/O总线提供到I/O装置的连接。
存储器装置120可以是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪速存储器装置、或具有适合充当进程存储器的性能的某种其它存储器装置。存储器120可存储数据122和指令121以便在处理器102执行某个进程时使用。存储器控制器集线器116还与可选的外部图形处理器112耦合,可选的外部图形处理器112可与处理器102中的一个或多个图形处理器108通信以便执行图形和媒体操作。
ICH 130使得外围设备能够经由高速I/O总线连接到存储器120和处理器102。I/O外围设备包括音频控制器146、固件接口128、无线收发器126(例如,Wi-Fi、蓝牙)、数据存储装置124(例如,硬盘驱动器、闪速存储器等)和用于将传统(例如,个人系统2(PS/2))装置耦合到系统的传统I/O控制器。一个或多个通用串行总线(USB)控制器142连接输入装置,例如键盘和鼠标144组合。网络控制器134也可耦合到ICH 130。在一个实施例中,高性能网络控制器(未示出)耦合到处理器总线110。
图7是具有一个或多个处理器核202A-N、集成式存储器控制器214和集成式图形处理器208的处理器200的一个实施例的框图。处理器200可包括另外的核,最多并包括由虚线框表示的另外的核202N。核202A-N中的每个核包括一个或多个内部高速缓存单元204A-N。在一个实施例中,每个核还具有对一个或多个共享缓存的单元206的访问。
内部高速缓存单元204A-N和共享高速缓存单元206表示处理器200内的高速缓冲存储器层级。高速缓冲存储器层级可包括每个核内的至少一个指令和数据高速缓存级以及一个或多个共享中间级高速缓存级,例如2级(L2)、3级(L3)、4级(L4)、或其它高速缓存级,其中将外部存储器之前的最高高速缓存级归类为最后一级高速缓存(LLC)。在一个实施例中,高速缓存一致性逻辑维持各种高速缓存单元206和204A-N之间的一致性。
处理器200还可包括一个或多个总线控制器单元216的集合和系统代理210。一个或多个总线控制器单元管理诸如一个或多个外围组件互连总线(例如,PCI、PCI Express)的外围总线的集合。系统代理210为各个处理器组件提供管理功能性。在一个实施例中,系统代理210包括用于管理对各个外部存储器装置(未示出)的访问的一个或多个集成式存储器控制器214。
在一个实施例中,核202A-N中的一个或多个核包括对同步多线程化的支持。在该实施例中,系统代理210包括用于在多线程化处理过程中协调和操作核202A-N的组件。系统代理210另外还可包括功率控制单元(PCU),PCU包括用于调节核202A-N和图形处理器208的功率状态的逻辑和组件。
处理器200另外包括用于执行图形处理操作的图形处理器208。在一个实施例中,图形处理器208与共享高速缓存单元206的集合以及包括一个或多个集成式存储器控制器214的系统代理单元210耦合。在一个实施例中,显示器控制器211与图形处理器208耦合以便将图形处理器输出驱动到一个或多个耦合的显示器。显示器控制器211可以是经由至少一个互连与图形处理器耦合的独立模块,或者可以集成在图形处理器208或系统代理210内。
在一个实施例中,利用基于环的互连单元212来耦合处理器200的内部组件,但是也可使用备选互连单元,例如点到点互连、交换式互连、或包括本领域中已知的技术的其它技术。在一个实施例中,图形处理器208经由I/O链路213与环互连212耦合。
示例性I/O链路213表示多品种I/O互连中的至少一种,包括便于各种处理器组件与高性能嵌入式存储器模块218(例如,eDRAM模块)之间的通信的封装上I/O互连。在一个实施例中,核202A-N中的每个核和图形处理器208利用嵌入式存储器模块218作为共享最后一级高速缓存。
在一个实施例中,核202A-N是执行相同指令集体系结构的同构核。在另一个实施例中,核202A-N在指令集体系结构(ISA)方面是异构的,其中核202A-N中的一个或多个核执行第一指令集,而其它核中的至少一个核执行第一指令集的子集或不同指令集。
处理器200可以是一个或多个衬底的一部分,或者可利用多种工艺技术中的任意技术在一个或多个衬底上实现,这些工艺技术可以是例如互补金属-氧化物-半导体(CMOS)、双极/互补金属-氧化物-半导体(BiCOMS)或N型金属-氧化物-半导体逻辑(NMOS)。另外,处理器200可在一个或多个芯片上实现,或作为除了具有所示组件外还具有其它组件的芯片上系统(SOC)集成电路实现。
图8是图形处理器300的一个实施例的框图,图形处理器300可以是离散图形处理单元,或者可以是与多个处理核集成的图形处理器。在一个实施例中,该图形处理器经由到图形处理器上的寄存器的存储器映射的I/O接口并经由放到处理器存储器中的命令通信。图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存和/或到系统存储器的接口。
图形处理器300还包括用于将显示器输出数据驱动到显示器装置320的显示器控制器302。显示器控制器302包括显示器的一个或多个覆盖平面和多层视频或用户接口元件的组成的硬件。在一个实施例中,图形处理器300包括用于将媒体编码为一个或多个媒体编码格式、从一个或多个媒体编码格式解码媒体或在一个或多个媒体编码格式之间转换媒体的代码的视频编码解码器引擎306,一个或多个媒体编码格式包括但不限于移动图片专家组(MPEG)格式(例如,MPEG-2)、高级视频编码(AVC)格式(例如,H.264/MPEG-4 AVC)、以及电影和电视工程师协会(SMPTE)421M/VC-1和联合图像专家组(JPEG)格式(例如,JPEG和运动JPEG(MJPEG)格式)。
在一个实施例中,图形处理器300包括用于执行包括例如位-边界块传输的二维(2D)光栅器操作的块图像传输(BLIT)引擎304。但是,在一个实施例中,利用图形处理引擎(GPE)310的一个或多个组件来执行2D图形操作。图形处理引擎310是用于执行包括三维(3D)图形操作和媒体操作的图形操作的计算引擎。
GPE 310包括用于执行3D操作的3D管线312,3D操作可以是例如利用在3D图元形状(例如,矩形、三角形等)上作用的处理功能渲染三维图像和场景。3D管线312包括可编程和固定功能元件,这些元件在元件内执行各种任务和/或将执行线程派生到3D/媒体子系统315。虽然可利用3D管线312来执行媒体操作,但是GPE 310的实施例还包括特定用于执行诸如视频后处理和图像增强的媒体操作的媒体管线316。
在一个实施例中,媒体管线316包括用于代替或代表视频编码解码器引擎306执行诸如视频解码加速、视频去交错和视频编码加速的一个或多个专门化媒体操作的固定功能或可编程逻辑单元。在一个实施例中,媒体管线316另外包括用于派生线程以便在3D/媒体子系统315上执行的线程派生单元。派生的线程对于包含在3D/媒体子系统中的一个或多个图形执行单元上的媒体操作执行计算。
3D/媒体子系统315包括用于执行由3D管线312和媒体管线316派生的线程的逻辑。在一个实施例中,这些管线将线程执行请求发送给3D/媒体子系统315,3D/媒体子系统315包括用于仲裁各种请求并将这些请求分派给可用线程执行资源的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元的阵列。在一个实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,该子系统还包括用于在线程之间共享数据并存储输出数据的共享存储器,包括寄存器和可寻址存储器。
图9是图形处理器的图形处理引擎410的实施例的框图。在一个实施例中,图形处理引擎(GPE)410是如图8所示的GPE 310的版本。GPE 410包括3D管线412和媒体管线416,它们中的每一个均可与图8的3D管线312和媒体管线316的实现不同或类似。
在一个实施例中,GPE 410与命令流播器403耦合,命令流播器403将命令流提供给GPE 3D和媒体管线412、416。命令流播器403耦合到存储器,存储器可以是系统存储器,或者可以是内部高速缓冲存储器和共享高速缓冲存储器中的一个或多个。命令流播器403从存储器接收命令,并将命令发送给3D管线412和/或媒体管线416。3D和媒体管线通过经由相应管线内的逻辑执行操作或通过将一个或多个执行线程分派给执行单元阵列414来处理命令。在一个实施例中,执行单元阵列414是可缩放的,从而使得基于GPE 410的目标功率和性能等级,该阵列包括可变数量的执行单元。
采样引擎430与存储器(例如,高速缓冲存储器或系统存储器)和执行单元阵列414耦合。在一个实施例中,采样引擎430为可缩放执行单元阵列414提供允许执行阵列414从存储器读取图形和媒体数据的存储器访问机制。在一个实施例中,采样引擎430包括用于对媒体执行专门化图像采样操作的逻辑。
采样引擎430中的专门化媒体采样逻辑包括去噪声/去交错模块432、运动估计模块434以及图像缩放和过滤模块436。去噪声/去交错模块432包括用于对解码的视频数据执行去噪声或去交错算法中的一个或多个算法的逻辑。去交错逻辑将交错的视频内容的备选字段组合到单个视频帧中。去噪声逻辑从视频和图像数据中减少或移除数据噪声。在一个实施例中,去噪声逻辑和去交错逻辑具有运动适应性,并基于在视频数据中检测到的运动量使用空间或时间过滤。在一个实施例中,去噪声/去交错模块432包括专用运动检测逻辑(例如,位于运动估计引擎434内)。
运动估计引擎434通过对视频数据执行诸如运动向量估计和预测的视频加速功能来为视频操作提供硬件加速。运动估计引擎确定用于描述在连续视频帧之间的图像数据的变换的运动向量。在一个实施例中,图形处理器媒体编码解码器利用视频运动估计引擎434来以宏块等级对视频执行操作,否则这在利用通用处理器执行时在计算上是密集的。在一个实施例中,运动估计引擎434一般对于图形处理器组件都是可用的,以便帮助对于视频数据内的运动的方向或幅度敏感或具适应性的视频解码和处理功能。
图像缩放和过滤模块436执行图像处理操作以便增强生成的图像和视频的视觉质量。在一个实施例中,缩放和过滤模块436在采样操作期间处理图像和视频数据,然后再将数据提供给执行单元阵列414。
在一个实施例中,图形处理引擎410包括数据端口444,数据端口444提供用于图形子系统访问存储器的另外的机制。数据端口444便于包括渲染目标写入、恒定缓冲器读取、暂时存储器空间读取/写入和媒体表面访问的操作的存储器访问。在一个实施例中,数据端口444包括用于缓存对存储器的访问的高速缓冲存储器空间。该高速缓冲存储器可以是单个数据高速缓存,或者可以分割成多个高速缓存以用于经由数据端口访问存储器的多个子系统(例如,渲染缓冲器高速缓存、恒定缓冲器高速缓存等)。在一个实施例中,在执行单元阵列414中的执行单元上执行的线程通过经由耦合图形处理引擎410的每个子系统的数据分发互连交换消息而与数据端口通信。
图10是图形处理器的另一个实施例的框图。在一个实施例中,该图形处理器包括环互连502、管线前端504、媒体引擎537和图形核580A-N。环互连502将图形处理器耦合到其它处理单元,包括其它图形处理器或一个或多个通用处理器核。在一个实施例中,图形处理器是集成在多核处理系统内的许多处理器之一。
图形处理器经由环互连502接收一批批命令。通过管线前端504中的命令流播器503解译进入的命令。图形处理器包括用于经由图形核580A-N执行3D几何处理和媒体处理的可缩放执行逻辑。对于3D几何处理命令,命令流播器503将命令提供给几何管线536。对于至少一些媒体处理命令,命令流播器503将命令提供给视频前端534,视频前端534与媒体引擎537耦合。媒体引擎537包括用于视频和图像后处理的视频质量引擎(VQE)530以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)533引擎。几何管线536和媒体引擎537均为由至少一个图形核580A提供的线程执行资源生成执行线程。
图形处理器包括以可缩放的线程执行资源为特色的模块化核580A-N(有时称为核切片),每个核580A-N均具有多个子核550A-N、560A-N(有时称为核子切片)。图形处理器可具有任意数量的图形核580A-580N。在一个实施例中,图形处理器包括至少具有第一子核550A和第二核子核560A的图形核580A。在另一个实施例中,图形处理器是具有单个子核(例如,550A)的低功率处理器。在一个实施例中,图形处理器包括多个图形核580A-N,每个核均包括第一子核550A-N的集合和第二子核560A-N的集合。第一子核550A-N的集合中的每个子核均至少包括执行单元552A-N和媒体/纹理采样器554A-N的第一集合。第二子核560A-N的集合中的每个子核均至少包括执行单元562A-N和采样器564A-N的第二集合。在一个实施例中,每个子核550A-N、560A-N共享共享资源570A-N的集合。在一个实施例中,共享资源包括共享高速缓冲存储器和像素操作逻辑。图形处理器的各种实施例中还可包含其它共享资源。
图11示出包括在图形处理引擎的一个实施例中采用的处理元件的阵列的线程执行逻辑600的实施例。在一个实施例中,线程执行逻辑600包括像素着色器602、线程分派器604、指令高速缓存606、包括多个执行单元608A-N的可缩放执行单元阵列、采样器610、数据高速缓存612和数据端口614。在一个实施例中,包含的组件经由链接到每个组件的互连结构互连。线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610和执行单元阵列608A-N中的一个或多个到诸如系统存储器或高速缓冲存储器的存储器的一个或多个连接。在一个实施例中,每个执行单元(例如,608A)都是能够执行多个同步线程并且对于每个线程并行地处理多个数据元素的个别向量处理器。执行单元阵列608A-N包括任意数量的个别执行单元。
在一个实施例中,执行单元阵列608A-N主要用于执行“着色器”程序。在一个实施例中,阵列608A-N中的执行单元执行包括对许多标准3D图形着色器指令的原生支持的指令集,从而使得在最少转译的情况下执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。
执行单元阵列608A-N中的每个执行单元对数据元素的数组进行操作。数据元素的数量是指令的“执行大小”或通道数量。执行通道是在指令内执行数据元素访问、屏蔽和流控制的逻辑单元。通道数量可以独立于特定图形处理器的物理ALU或FPU的数量。执行单元608A-N支持整数和浮点数据类型。
执行单元指令集包括单指令多数据(SIMD)指令。各种数据元素可作为包装数据类型存储在寄存器中,并且执行单元将基于元素的数据大小处理各种元素。例如,当对256位宽的向量进行操作时,将向量的256个位存储在寄存器中,并且执行单元对该向量作为4个独立的64位包装数据元素(四字(QW)大小的数据元素)、8个独立的32位包装数据元素(双字(DW)大小的数据元素)、16个独立的16位包装数据元素(字(W)大小的数据元素)或32个独立的8位数据元素(字节(B)大小的数据元素)进行操作。但是,不同的向量宽度和寄存器大小也是可能的。
线程执行逻辑600中包括用于缓存执行单元的线程指令的一个或多个内部指令高速缓存(例如,606)。在一个实施例中,包括用于在线程执行期间缓存线程数据的一个或多个数据高速缓存(例如,612)。包括用于为3D操作提供纹理采样并为媒体操作提供媒体采样的采样器610。在一个实施例中,采样器610包括用于在将采样的数据提供给执行单元之前在采样过程期间处理纹理或媒体数据的专门化纹理或媒体采样功能性。
在执行过程中,图形和媒体管线经由线程派生和分派逻辑将线程启动请求发送给线程执行逻辑600。线程执行逻辑600包括用于仲裁来自图形和媒体管线的线程启动请求并在一个或多个执行单元608A-N上实例化请求的线程的本地线程分派器604。例如,几何管线(例如,图5的536)将顶点处理、镶嵌或几何处理线程分派给线程执行逻辑600。线程分派器604还可处理来自执行着色器程序的运行时线程派生请求。
一旦处理完一组图形对象并将其光栅化为像素数据,便调用像素着色器602以便进一步计算输出信息并使得将结果写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。在一个实施例中,像素着色器602计算即将跨越光栅化对象内插的各种顶点属性的值。然后,像素着色器602执行API-提供的像素着色器程序。为了执行像素着色器程序,像素着色器602经由线程分派器604将线程分派给执行单元(例如,608A)。像素着色器602利用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理图中的纹理数据。纹理数据和输入几何数据上的算术操作计算每个几何片段的像素颜色数据,或从进一步处理中丢弃一个或多个像素。
在一个实施例中,数据端口614提供存储器访问机制以便线程执行逻辑600将经过处理的数据输出到存储器以在图形处理器输出管线上处理。在一个实施例中,数据端口614包括或耦合到一个或多个高速缓冲存储器(例如,数据高速缓存612),以便缓存数据以经由数据端口进行存储器访问。
图12是示出根据一个实施例的图形处理器执行单元指令格式的框图。在一个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框示出执行单元指令中一般包含的组成,而虚线包括可选或者只包含在指令的子集中的组成。图示中描述的指令格式是宏指令,因为与在处理指令后由指令解码造成的微操作相比,它们是提供给执行单元的指令。
在一个实施例中,图形处理器执行单元原生地支持128位格式710的指令。基于所选指令、指令选项和操作数的数量,可对于一些指令使用64位压缩指令格式730。原生128位格式710提供对所有指令选项的访问,而在64位格式730中,一些选项和操作受到限制。64位格式730中可用的原生指令随实施例不同而不同。在一个实施例中,利用索引字段713中的索引值的集合部分地压缩指令。执行单元硬件基于索引值参考压缩表的集合,并利用压缩表输出来重构128位格式710的原生指令。
对于每种格式,指令操作码712定义执行单元将要执行的操作。执行单元跨越每个操作数的多个数据元素并行地执行每个指令。例如,响应于加法指令,执行单元跨越代表纹理元素或图片元素的每个颜色通道执行同步加法操作。默认地,执行单元跨越操作数的所有数据通道执行每个指令。指令控制字段712启用对诸如通道选择(例如,预测)和数据通道顺序(例如,调配)的某些执行选项的控制。对于128位指令710,执行大小字段716限制将并行执行的数据通道的数量。执行大小字段716不可在64位压缩指令格式730中使用。
一些执行单元指令最多具有三个操作数,包括两个源操作数src0 720、src1 722和一个目的地718。在一个实施例中,执行单元支持双目的地指令,其中一个目的地是隐含的。数据操纵指令可具有第三源操作数(例如,SRC2 724),其中指令操作码712确定源操作数的数量。指令的最后一个源操作数可以是与指令一起传递的中间(例如,硬编码的)值。
在一个实施例中,基于操作码位字段将指令分组以便简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。示出的精确操作码分组是示例性的。在一个实施例中,移动和逻辑操作码群组742包括数据移动和逻辑指令(例如,mov、cmp)。移动和逻辑群组742共享5个最高有效位(MSB),其中移动指令为0000xxxxb(例如,0x0x)的形式,而逻辑指令为0001xxxxb(例如,0x01)的形式。流控制指令群组744(例如,call、jmp)包括0010xxxxb(例如,0x20)形式的指令。混杂指令群组746包括指令的混合,包括0011xxxxb(例如,0x30)形式的同步指令(例如,wait、send)。并行数学指令群组748包括0100xxxxb(例如,0x40)形式的逐个分量算术指令(例如,add、mul)。并行数学群组748跨越数据通道并行执行算术操作。向量数学群组750包括0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。向量数学群组对向量操作数执行诸如点积计算的算术。
图13是图形处理器的另一个实施例的框图,该图形处理器包括图形管线820、媒体管线830、显示器引擎840、线程执行逻辑850和渲染输出管线870。在一个实施例中,该图形处理器是位于包括一个或多个通用处理核的多核处理系统内的图形处理器。该图形处理器通过到一个或多个控制寄存器(未示出)的寄存器写入或经由通过环互连802发出到图形处理器的命令进行控制。环互连802将图形处理器耦合到其它处理组件,例如其它图形处理器或通用处理器。来自环互连的命令通过命令流播器803解译,命令流播器803将指令提供给图形管线820或媒体管线830的各个组件。
命令流播器803引导从存储器读取顶点数据并执行由命令流播器803提供的顶点处理命令的顶点提取器805组件的操作。顶点提取器805将顶点数据提供给顶点着色器807,顶点着色器807对每个顶点执行坐标空间变换和光照操作。顶点提取器805和顶点着色器807通过经由线程分派器831将执行线程分派给执行单元852A、852B来执行顶点处理指令。
在一个实施例中,执行单元852A、852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。执行单元852A、852B具有对于每个阵列特定或在阵列之间共享的附连L1高速缓存851。该高速缓存可作为数据高速缓存、指令高速缓存、或分区成在不同分区中包含数据和指令的单个高速缓存进行配置。
在一个实施例中,图形管线820包括用于执行3D对象的硬件加速镶嵌的镶嵌组件。可编程外壳着色器811配置镶嵌操作。可编程域着色器817提供镶嵌输出的后端评估。镶嵌器813在外壳着色器811的方向操作,并包含用于基于作为图形管线820的输入提供的粗糙几何模型生成详细几何对象的集合的专用逻辑。如果不使用镶嵌,那么可绕过镶嵌组件811、813、817。
全部几何对象可通过几何着色器819经由分派给执行单元852A、852B的一个或多个线程进行处理,或者它们可直接进入到裁剪器829。几何着色器对全部几何对象进行操作,而不是如同图形管线的之前阶段中那样对顶点或顶点面片进行操作。如果禁用镶嵌,那么几何着色器819接收来自顶点着色器807的输入。几何着色器819可由几何着色器程序编程以便在禁用镶嵌单元时执行几何镶嵌。
在光栅化之前,通过裁剪器829处理顶点数据,裁剪器829是具有裁剪和几何着色器功能的固定功能裁剪器或可编程裁剪器。在一个实施例中,渲染输出管线870中的光栅器873分派像素着色器以便将几何对象转化为它们的每个像素表示。在一个实施例中,线程执行逻辑850中包括像素着色器逻辑。
图形引擎具有互连总线、互连结构或允许在图形引擎的主要组件中传递数据和消息的某种其它互连机制。在一个实施例中,执行单元852A、852B和相关联的高速缓存851、纹理和媒体采样器854、以及纹理/采样器高速缓存858经由数据端口856互连以便执行存储器访问并与图形引擎的渲染输出管线组件通信。在一个实施例中,采样器854、高速缓存851、858和执行单元852A、852B均具有独立的存储器访问路径。
在一个实施例中,渲染输出管线870包含用于将基于顶点的对象转化为它们的相关联的基于像素的表示的光栅器和深度测试组件873。在一个实施例中,光栅器逻辑包括用于执行固定功能三角形和线性光栅化的窗口器/屏蔽器单元。在一个实施例中,相关联的渲染和深度缓冲器高速缓存878、879也是可用的。像素操作组件877对数据执行基于像素的操作,但是在一些情况下,通过2D引擎841执行与2D操作相关联的像素操作(例如,位块图像传输和混合),或者在显示时间通过显示器控制器843利用覆盖显示器平面代替。在一个实施例中,共享L3高速缓存875对于所有图形组件均可用,从而允许在不使用主要系统存储器的情况下共享数据。
图形处理器媒体管线830包括媒体引擎837和视频前端834。在一个实施例中,视频前端834从命令流播器803接收管线命令。但是,在一个实施例中,媒体管线830包括独立的命令流播器。视频前端834先对媒体命令进行处理,然后再将命令发送给媒体引擎837。在一个实施例中,媒体引擎包括用于派生线程以便经由线程分派器831分派给线程执行逻辑850的线程派生功能性。
在一个实施例中,图形引擎包括显示器引擎840。在一个实施例中,显示器引擎840位于图形处理器的外部,并经由环互连802或某个其它互连总线或结构与图形处理器耦合。显示器引擎840包括2D引擎841和显示器控制器843。显示器引擎840包含能够独立于3D管线进行操作的专用逻辑。显示器控制器843与显示器装置(未示出)耦合,显示器装置可以如同膝上型计算机中那样是系统集成的显示器装置,或者可以是经由显示器装置连接器附连的外部显示器装置。
图形管线820和媒体管线830可配置成基于多个图形和媒体编程接口执行操作,并且对于任何一个应用编程接口(API)都不是特定的。在一个实施例中,图形处理器的驱动器软件将对于特定图形或媒体库特定的API调用转译成可通过图形处理器处理的命令。在各种实施例中,对由Khronos Group支持的开放图形库(OpenGL)和开放计算语言(OpenCL)、来自Microsoft公司的Direct3D库、或者在一个实施例中对于OpenGL和D3D两者提供支持。也可对开放源计算机视觉库(OpenCV)提供支持。如果可进行从具有兼容的3D管线的未来API的管线到图形处理器的管线的映射,那么还将支持该未来API。
图14A是示出根据一个实施例的图形处理器命令格式的框图,而图14B是示出根据一个实施例的图形处理器命令序列的框图。图14A中的实线框示出图形命令中一般包含的组成,而虚线包括可选或者只包含在图形命令的子集中的组成。图14A的示例性图形处理器命令格式900包括用于标识命令的目标客户端902、命令操作代码(操作码)904和命令的相关数据906的数据字段。在一些命令中,还包括子操作码905和命令大小908。
客户端902指定处理命令数据的图形装置的客户端单元。在一个实施例中,图形处理器命令解析器检查每个命令的客户端字段以便调节命令的进一步处理并将命令数据路由给合适的客户端单元。在一个实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户端单元具有用于处理命令的对应处理管线。一旦客户端单元接收到命令,客户端单元便读取操作码904和子操作码905(如果存在的话),以便确定要执行的操作。客户端单元利用命令的数据906字段中的信息执行命令。对于一些命令,预期显式命令大小908指定命令的大小。在一个实施例中,命令解析器基于命令操作码自动确定至少一些命令的大小。在一个实施例中,经由多个双字对准命令。
图14B中的流程图示出样本命令序列910。在一个实施例中,以图形处理器的实施例为特色的数据处理系统的软件或固件利用所示的命令序列的版本来设立、执行和终止图形操作的集合。虽然为了举例的目的示出并描述样本命令序列,但是实施例不限于这些命令或不限于该命令序列。而且,可在命令序列中按命令批发出命令,从而使得图形处理器将按照至少部分地同步的方式处理命令序列。
样本命令序列910可从管线冲洗命令912开始,以使得任何活动图形管线完成管线的当前待决命令。在一个实施例中,3D管线922和媒体管线924并没有同步操作。执行管线冲洗以使得活动图形管线完成任何待决命令。响应于管线冲洗,图形处理器的命令解析器将暂停命令处理,直到活动绘图引擎完成待决操作并且相关读取高速缓存无效为止。可选地,可将标记为“脏”的渲染高速缓存中的任何数据冲洗到存储器。为了管线同步,或者在使图形处理器处于低功率状态之前,可使用管线冲洗命令912。
当命令序列要求图形处理器在管线之间明确切换时,使用管线选择命令913。除非执行上下文是要为两个管线发出命令,否则在发出管线命令之前,在执行上下文内只需管线选择命令913一次。在一个实施例中,就在经由管线选择命令913进行管线切换之前立即需要管线冲洗命令912。
管线控制命令914为操作配置图形管线,并且它用于将3D管线922和媒体管线924编程。管线控制命令914配置活动管线的管线状态。在一个实施例中,管线控制命令914用于管线同步并在处理一批命令之前从活动管线内的一个或多个高速缓冲存储器清除数据。
返回缓冲器状态命令916用于为相应管线配置返回缓冲器的集合以便写入数据。一些管线操作需要分配、选择或配置一个或多个返回缓冲器,操作将处理期间的中间数据写入到一个或多个返回缓冲器。图形处理器还利用一个或多个返回缓冲器来存储输出数据并执行交叉线程通信。返回缓冲器状态916包括选择用于管线操作的集合的返回缓冲器的大小和数量。
命令序列中的剩余命令基于操作的活动管线而不同。基于管线确定920,从3D管线状态930开始对于3D管线922定制命令序列,或者从媒体管线状态940开始对于媒体管线924定制命令序列。
3D管线状态930的命令包括用于顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态以及在处理3D图元命令之前要配置的其它状态变量的3D状态设置命令。至少部分地基于使用中的特定3D API确定这些命令的值。如果将不使用某些管线元件,那么3D管线状态930命令还能够选择性地禁用或绕过这些管线元件。
3D图元932命令用于提交即将通过3D管线处理的3D图元。将经由3D图元932命令传递给图形处理器的命令和相关联的参数转发给图形管线中的顶点提取功能。顶点提取功能利用3D图元932命令数据生成顶点数据结构。将顶点数据结构存储在一个或多个返回缓冲器中。利用3D图元932命令来经由顶点着色器对3D图元执行顶点操作。为了处理顶点着色器,3D管线922将着色器执行线程分派给图形处理器执行单元。
经由执行934命令或事件触发3D管线922。在一个实施例中,寄存器写入触发命令执行。在一个实施例中,经由命令序列中的‘go’或‘kick’命令触发执行。在一个实施例中,通过利用管线同步命令以便通过图形管线冲洗命令序列来触发命令执行。3D管线将对3D图元执行几何处理。一旦操作完成,便对所得几何对象进行光栅化,并且像素引擎对所得像素进行上色。对于像素着色和像素后端操作,还可包括用于控制这些操作的另外的命令。
当执行媒体操作时,样本命令序列910遵循媒体管线924路径。一般来说,媒体管线924的特定使用和编程方式取决于将要执行的媒体或计算操作。在媒体解码期间,可将特定媒体解码操作卸载到媒体管线。也可绕过媒体管线,并且可利用由一个或多个通用处理核提供的资源整体或部分地执行媒体解码。在一个实施例中,媒体管线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中图形处理器用于利用与图形图元的渲染明确无关的计算着色器程序来执行SIMD向量操作。
以与3D管线922类似的方式配置媒体管线924。在媒体对象命令942之前分派媒体管线状态命令940的集合,或将它们放在命令序列中的媒体对象命令942之前。媒体管线状态命令940包括用于配置将用于处理媒体对象的媒体管线元件的数据。这包括用于配置媒体管线内的视频解码和视频编码逻辑的数据,例如编码或解码格式。媒体管线状态命令940还支持使用到包含一批状态设置的“间接”状态元素的一个或多个指针。
媒体对象命令942提供到媒体对象的指针以便通过媒体管线进行处理。媒体对象包括包含即将处理的视频数据的存储器缓冲器。在一个实施例中,在发出媒体对象命令942之前,所有媒体管线状态都必须是有效的。一旦配置了管线状态并将媒体对象命令942排队,便经由执行934命令或等效执行事件(例如,寄存器写入)触发媒体管线924。然后,可通过由3D管线922或媒体管线924提供的操作对来自媒体管线924的输出进行后处理。在一个实施例中,以与媒体操作类似的方式配置和执行GPGPU操作。
图15示出根据一个实施例的数据处理系统的示例性图形软件体系结构。该软件体系结构包括3D图形应用1010、操作系统1020和至少一个处理器1030。处理器1030包括图形处理器1032和一个或多个通用处理器核1034。图形应用1010和操作系统1020均在数据处理系统的系统存储器1050中执行。
在一个实施例中,3D图形应用1010包含包括着色器指令1012的一个或多个着色器程序。着色器语言指令可以是高级着色器语言,例如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。该应用还包括适合通过通用处理器核1034执行的机器语言的可执行指令1014。该应用还包括由顶点数据定义的图形对象1016。
操作系统1020可以是可从Microsoft Corporation of Redmond, Washington获得的WINDOWSTM操作系统、专有UNIX操作系统、或利用Linux内核的变型的开放源UNIX类操作系统。当Direct3D API在使用中时,操作系统1020利用前端着色器编译器1024将HLSL的任何着色器指令1012编译为较低级着色器语言。编译可以是即时编译,或者应用可执行共享预编译。在一个实施例中,在3D图形应用1010的编译期间,将高级着色器编译为低级着色器。
用户模式图形驱动器1026可包含用于将着色器指令1012转化为硬件特定表示的后端着色器编译器1027。当OpenGL API在使用中时,将GLSL高级语言的着色器指令1012传递给用户模式图形驱动器1026以用于编译。用户模式图形驱动器利用操作系统内核模式功能1028与内核模式图形驱动器1029通信。内核模式图形驱动器1029与图形处理器1032通信以便分派命令和指令。
就本文中描述各种操作或功能来说,可将它们描述或定义为硬件电路、软件代码、指令、配置和/或数据。内容可在硬件逻辑中实施,或者可作为可直接执行的软件(“对象”或“可执行”形式)、源代码、设计成在图形引擎上执行的高级着色器代码、或特定处理器或图形核的指令集中的低级汇编语言代码实施。本文中描述的实施例的软件内容可经由其上存储有该内容的制品、或经由操作通信接口以便经由通信接口发送数据的方法提供。
非暂时性机器可读存储介质可使得机器执行描述的功能或操作,并且包括用于存储可由机器(例如,计算装置、电子系统等)访问的形式的信息的任何机制,例如可刻录/不可刻录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储器装置等)。通信接口包括用于对接到硬接线、无线、光等介质中的任何介质以便通信到另一装置的任何机制,例如存储器总线接口、处理器总线接口、互联网连接、盘控制器等。通信接口可经由一个或多个命令或信号进行访问,并且可通过提供包括配置参数的命令或通过发送信号以便使通信接口准备好提供描述软件内容的数据信号来进行配置。可经由发送给通信接口的一个或多个命令或信号访问通信接口。
描述的各种组件可以是用于执行描述的操作或功能的部件。本文中描述的每个组件包括软件、硬件或它们的组合。这些组件可作为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬接线电路等实现。除了本文中的描述以外,在不偏离本发明的范围的情况下,可对本发明的公开实施例和实现进行各种修改。因此,本文中的图示和示例应理解为具说明性而不是限制性意义。本发明的范围和精神应当仅仅参考随附权利要求来估量。
以下条款和/或示例涉及进一步实施例。
一个示例实施例可以是一种方法,它包括:计算位置属性;以及在计算除了位置属性以外的着色属性之前剔除三角形。该方法还可包括,.其中剔除包括简单剔除测试和视椎体剔除。该方法还可包括:按照时间次序记录可见性信息;并利用该信息来跳过丢弃的三角形。该方法还可包括在逐位序列中记录所述可见性信息。该方法还可包括记录每个图块的深度表示以便在计算所述位置属性之前执行遮挡剔除。该方法还可包括在计算没有完全被遮挡的三角形的位置属性时生成遮挡信息。该方法还可包括在绘图调用命令中设置一个位以便指示是在计算期间还是在剔除期间处理该命令。该方法还可包括通过存储最大和最小深度作为每个图块的标量值来利用所述遮挡信息进行遮挡剔除。该方法还可包括通过存储屏蔽的深度表示并利用位掩码和每个图块的Zmax值的集合进行遮挡剔除。该方法还可包括通过每个图块存储一个位以便指示参考值是表示最小还是最大深度来进行剔除。该方法还可包括:作为计算位置属性的一部分执行第一深度测试;然后在确定位置属性之后在剔除期间执行第二深度测试。该方法还可包括提供来自第一深度测试的深度表示以便在第二深度测试中使用。该方法还可包括在第二深度测试管道中使用来自第一深度测试的深度表示以便装填z缓冲器以节省像素着色器执行。该方法还可包括在并行管道中进行计算和剔除。该方法还可包括,其中在一个管道中进行计算和剔除,并在另一个管道中消耗记录可见性信息的位序列。该方法还可包括对于绘图调用选择性地禁止记录可见性信息。该方法还可包括:对于至少一个绘图调用选择性地使得能够在一遍中计算所有属性,而不是在其它着色属性之前计算位置属性。该方法还可包括,其中计算位置属性包括:为了计算位置属性,只读取出位置属性,而不读取出任何其它着色属性。该方法还可包括:在三角形剔除期间裁剪图元;并在计算位置属性时将所有三角形标记为可见。该方法还可包括利用不包含用于计算非位置属性的指令的指令集计算位置属性。
另一个示例实施例可以是一种或多种非暂时性计算机可读介质,它用于存储由处理器执行以便执行包括以下步骤的序列的指令:计算位置属性;以及在计算除了位置属性以外的着色属性之前剔除三角形。该介质还可存储指令,其中剔除包括简单剔除测试和视椎体剔除。该介质还可存储所述序列,所述序列包括按时间次序记录可见性信息并利用该信息来跳过丢弃的三角形。该介质还可存储所述序列,所述序列包括在逐位序列中记录所述可见性信息。该介质可包括所述序列,所述序列包括记录每个图块的深度表示以便在计算所述位置属性之前执行遮挡剔除。该介质可包括所述序列,所述序列包括在计算没有完全被遮挡的三角形的位置属性时生成遮挡信息。该介质可包括所述序列,所述序列包括在绘图调用命令中设置一个位以便指示是在计算期间还是在剔除期间处理该命令。该介质可包括所述序列,所述序列包括通过存储最大和最小深度作为每个图块的标量值来利用所述遮挡信息以便进行遮挡剔除。该介质可包括所述序列,所述序列包括通过存储屏蔽的深度表示并利用位掩码和每个图块的Zmax值的集合来进行遮挡剔除。该介质可包括所述序列,所述序列包括通过每个图块存储一个位以便指示参考值是表示最小还是最大深度来进行剔除。该介质可包括所述序列,所述序列包括:作为计算位置属性的一部分执行第一深度测试;然后在确定位置属性之后在剔除期间执行第二深度测试。该方法可包括所述序列,所述序列包括提供来自第一深度测试的深度表示以便在第二深度测试中使用。该介质可包括所述序列,所述序列包括在第二深度测试管道中使用来自第一深度测试的深度表示以便装填z缓冲器以节省像素着色器执行。该介质可包括所述序列,所述序列包括在并行管道中进行计算和剔除。该介质可包括所述序列,其中在一个管道中进行计算和剔除,并在另一个管道中消耗记录可见性信息的位序列。该介质可包括所述序列,所述序列包括对于绘图调用选择性地禁止记录可见性信息。该介质可包括所述序列,所述序列包括:对于至少一个绘图调用选择性地使得能够一次计算所有属性,而不是在其它着色属性之前计算位置属性。该介质可包括所述序列,其中计算位置属性包括:为了计算位置属性,只读取出位置属性,而不读取出任何其它着色属性。该介质可包括所述序列,所述序列包括:在三角形剔除期间裁剪图元;并在计算位置属性时将所有三角形标记为可见。该介质可包括所述序列,所述序列包括利用不包含用于计算非位置属性的指令的指令集计算位置属性。
另一个示例实施例可以是一种设备,它包括:处理器,用于计算位置属性,并在计算除了位置属性以外的着色属性之前剔除三角形;以及耦合到所述处理器的存储设备。该设备可包括利用简单剔除测试和视椎体剔除进行剔除的所述处理器。该设备可包括按照时间次序记录可见性信息并利用该信息来跳过丢弃的三角形的所述处理器。该设备可包括用于在逐位序列中记录所述可见性信息的所述处理器。该设备可包括用于记录每个图块的深度表示以便在计算所述位置属性之前执行遮挡剔除的所述处理器。该设备可包括用于在计算没有完全被遮挡的三角形的位置属性时生成遮挡信息的所述处理器。该设备可包括用于在绘图调用命令中设置一个位以便指示是在计算期间还是在剔除期处理该命令的所述处理器。该设备可包括用于通过存储最大和最小深度作为每个图块的标量值来利用所述遮挡信息进行遮挡剔除的所述处理器。该设备可包括用于通过存储屏蔽的深度表示并利用位掩码和每个图块的Zmax-值的集合进行遮挡剔除的所述处理器。该设备可包括用于通过每个图块存储一个位以便指示参考值是表示最小还是最大深度来进行剔除的所述处理器。该设备可包括所述处理器,所述处理器作为计算位置属性的一部分执行第一深度测试,然后在确定位置属性之后在剔除期间执行第二深度测试。该设备可包括所述处理器,所述处理器提供来自第一深度测试的深度表示以便在第二深度测试中使用。该设备可包括所述处理器,所述处理器在第二深度测试管道中使用来自第一深度测试的深度表示以便装填z缓冲器以节省像素着色器执行。该设备可包括所述处理器,所述处理器在并行管道中进行计算和剔除。该设备可包括所述处理器,所述处理器在一个管道中进行计算和剔除,并在另一个管道中消耗记录可见性信息的位序列。该设备可包括操作系统、电池和固件以及用于更新所述固件的模块。
本文中描述的图形处理技术可在各种硬件体系结构中实现。例如,图形功能性可集成在芯片组内。或者,可使用离散图形处理器。作为另一个实施例,可通过包括多核处理器的通用处理器来实现图形功能。
本说明书中提到“一个实施例”或“实施例”时表示,结合该实施例描述的特定特征、结构或特性包含在本公开内所涵盖的至少一个实现中。因此,出现短语“在一个实施例中”或“在实施例中”时不一定指相同实施例。此外,可以用所示的特定实施例以外的其它合适形式取代该特定特征、结构或特性,并且所有这些形式都涵盖在本申请的权利要求书内。
尽管描述了有限数量的实施例,但是本领域技术人员将明白由此产生的众多修改和改变。预期随附权利要求覆盖落在本公开的真实精神和范围内的所有这些修改和改变。

Claims (25)

1.一种方法,包括:
计算位置属性;以及
在计算除了位置属性以外的着色属性之前剔除三角形。
2.如权利要求1所述的方法,其中剔除包括简单剔除测试和视椎体剔除。
3.如权利要求1所述的方法,包括按照时间次序记录可见性信息并利用该信息来跳过丢弃的三角形。
4.如权利要求3所述的方法,包括在逐位序列中记录所述可见性信息。
5.如权利要求1所述的方法,包括在并行管道中进行计算和剔除。
6.如权利要求5所述的方法,其中在一个管道中进行计算和剔除,并在另一个管道中消耗记录可见性信息的位序列。
7.如权利要求1所述的方法,包括对于绘图调用选择性地禁止记录可见性信息。
8.如权利要求1所述的方法,包括对于至少一个绘图调用选择性地使得能够在一遍中计算所有属性,而不是在其它着色属性之前计算位置属性。
9.如权利要求1所述的方法,其中计算位置属性包括:为了计算位置属性,只读取出位置属性而不读取出任何其它着色属性。
10.如权利要求1所述的方法,包括:在三角形剔除期间裁剪图元,并在计算位置属性时将所有三角形标记为可见。
11.如权利要求1所述的方法,包括利用不包含用于计算非位置属性的指令的指令集计算位置属性。
12.一种或多种非暂时性计算机可读介质,用于存储由处理器执行以便执行包括以下步骤的序列的指令:
计算位置属性;以及
在计算除了位置属性以外的着色属性之前剔除三角形。
13.如权利要求12所述的介质,其中剔除包括简单剔除测试和视椎体剔除。
14.如权利要求12所述的介质,所述序列包括在并行管道中进行计算和剔除。
15.如权利要求12所述的介质,其中在一个管道中进行计算和剔除,并在另一个管道中消耗记录可见性信息的位序列。
16.如权利要求12所述的介质,所述序列包括对于绘图调用选择性地禁止记录可见性信息。
17.如权利要求12所述的介质,所述序列包括:对于至少一个绘图调用选择性地使得能够一次计算所有属性,而不是在其它着色属性之前计算位置属性。
18.如权利要求12所述的介质,其中计算位置属性包括:为了计算位置属性,只读取出位置属性而不读取出任何其它着色属性。
19.如权利要求12所述的介质,所述序列包括:在三角形剔除期间裁剪图元;并在计算位置属性时将所有三角形标记为可见。
20.如权利要求12所述的介质,所述序列包括利用不包含用于计算非位置属性的指令的指令集计算位置属性。
21.一种设备,包括:
处理器,用于计算位置属性,并在计算除了位置属性以外的着色属性之前剔除三角形;以及
耦合到所述处理器的存储设备。
22.如权利要求21所述的设备,所述处理器利用简单剔除测试和视锥体剔除进行剔除。
23.如权利要求21所述的设备,所述处理器按时间次序记录可见性信息并利用该信息来跳过丢弃的三角形。
24.如权利要求23所述的设备,所述处理器在逐位序列中记录所述可见性信息。
25.如权利要求21所述的设备,所述处理器作为计算位置属性的一部分执行第一深度测试,然后在确定位置属性之后在剔除期间执行第二深度测试。
CN201580045196.9A 2014-09-24 2015-08-25 仅位置着色管线 Expired - Fee Related CN106575449B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/494653 2014-09-24
US14/494,653 US9824412B2 (en) 2014-09-24 2014-09-24 Position-only shading pipeline
PCT/US2015/046669 WO2016048521A1 (en) 2014-09-24 2015-08-25 Position-only shading pipeline

Publications (2)

Publication Number Publication Date
CN106575449A true CN106575449A (zh) 2017-04-19
CN106575449B CN106575449B (zh) 2020-10-30

Family

ID=55526184

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580045196.9A Expired - Fee Related CN106575449B (zh) 2014-09-24 2015-08-25 仅位置着色管线

Country Status (6)

Country Link
US (1) US9824412B2 (zh)
EP (1) EP3198553A4 (zh)
JP (1) JP6377842B2 (zh)
KR (1) KR102339581B1 (zh)
CN (1) CN106575449B (zh)
WO (1) WO2016048521A1 (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
JP6421920B2 (ja) * 2014-09-03 2018-11-14 カシオ計算機株式会社 表示装置及びその表示制御方法、制御プログラム
US10238973B2 (en) * 2014-10-24 2019-03-26 Electronic Arts Inc. Generating digital elements using non-deterministic selection
US9959590B2 (en) 2016-03-30 2018-05-01 Intel Corporation System and method of caching for pixel synchronization-based graphics techniques
US10032308B2 (en) * 2016-06-22 2018-07-24 Advanced Micro Devices, Inc. Culling objects from a 3-D graphics pipeline using hierarchical Z buffers
KR102337931B1 (ko) * 2016-06-27 2021-12-13 로베르트 보쉬 게엠베하 동적 가림 핸들링을 위한 시스템들 및 방법들
US10127707B2 (en) * 2016-06-27 2018-11-13 Intel Corporation Discard mechanism for tile-based rendering
US10380789B2 (en) 2016-09-16 2019-08-13 Intel Corporation Method and apparatus for efficient depth prepass
US10540808B2 (en) 2016-09-16 2020-01-21 Intel Corporation Hierarchical Z-culling (HiZ) optimization for texture-dependent discard operations
US10733695B2 (en) * 2016-09-16 2020-08-04 Intel Corporation Priming hierarchical depth logic within a graphics processor
US20180082464A1 (en) * 2016-09-16 2018-03-22 Tomas G. Akenine-Moller Apparatus and method for an efficient 3d graphics pipeline
US20180082468A1 (en) * 2016-09-16 2018-03-22 Intel Corporation Hierarchical Z-Culling (HiZ) Optimized Shadow Mapping
US11379941B2 (en) 2016-09-22 2022-07-05 Advanced Micro Devices, Inc. Primitive shader
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10235811B2 (en) * 2016-12-29 2019-03-19 Intel Corporation Replicating primitives across multiple viewports
US10417815B2 (en) * 2017-01-27 2019-09-17 Advanced Micro Devices, Inc. Out of order pixel shader exports
US10748332B2 (en) 2017-03-15 2020-08-18 Nvidia Corporation Hybrid frustum traced shadows systems and methods
US10521875B2 (en) * 2017-04-01 2019-12-31 Intel Corporation Thread scheduling over compute blocks for power optimization
US10242494B2 (en) * 2017-04-01 2019-03-26 Intel Corporation Conditional shader for graphics
US10706612B2 (en) * 2017-04-01 2020-07-07 Intel Corporation Tile-based immediate mode rendering with early hierarchical-z
US10719971B2 (en) 2018-05-25 2020-07-21 Microsoft Technology Licensing, Llc Low resolution depth pre-pass
US10997771B2 (en) 2018-08-29 2021-05-04 Intel Corporation Position-based rendering apparatus and method for multi-die/GPU graphics processing
US10628910B2 (en) 2018-09-24 2020-04-21 Intel Corporation Vertex shader with primitive replication
US11715262B2 (en) * 2018-12-17 2023-08-01 Advanced Micro Devices, Inc. Optimizing primitive shaders
US11004255B2 (en) * 2019-04-24 2021-05-11 Microsoft Technology Licensing, Llc Efficient rendering of high-density meshes
KR20200145665A (ko) * 2019-06-19 2020-12-30 삼성전자주식회사 최적화된 픽셀 셰이더 속성 관리
US11227430B2 (en) 2019-06-19 2022-01-18 Samsung Electronics Co., Ltd. Optimized pixel shader attribute management
US11631187B2 (en) 2020-09-24 2023-04-18 Advanced Micro Devices, Inc. Depth buffer pre-pass
US11176734B1 (en) * 2020-10-06 2021-11-16 Qualcomm Incorporated GPU hardware-based depth buffer direction tracking
GB2616628B (en) * 2022-03-15 2024-03-20 Advanced Risc Mach Ltd Graphics processing
WO2024050188A1 (en) * 2022-09-01 2024-03-07 Qualcomm Incorporated Sliced graphics processing unit (gpu) architecture in processor-based devices

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6734861B1 (en) * 2000-05-31 2004-05-11 Nvidia Corporation System, method and article of manufacture for an interlock module in a computer graphics processing pipeline
US7468726B1 (en) * 2005-12-01 2008-12-23 Nvidia Corporation Culling in a vertex processing unit
US8542247B1 (en) * 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8564616B1 (en) * 2009-07-17 2013-10-22 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US20130300754A1 (en) * 2012-05-14 2013-11-14 Cass W. Everitt Cull streams for fine-grained rendering predication
CN103608850A (zh) * 2011-06-23 2014-02-26 英特尔公司 带选择性剔除的随机光栅化

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912293B1 (en) * 1998-06-26 2005-06-28 Carl P. Korobkin Photogrammetry engine for model construction
WO2000011603A2 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
JP3350473B2 (ja) * 1999-03-17 2002-11-25 富士通株式会社 オクルージョンカリングを行う3次元グラフィックス描画装置および方法
US20050195186A1 (en) * 2004-03-02 2005-09-08 Ati Technologies Inc. Method and apparatus for object based visibility culling
US7746355B1 (en) * 2007-01-24 2010-06-29 Vivante Corporation Method for distributed clipping outside of view volume
JP5004650B2 (ja) * 2007-05-09 2012-08-22 株式会社ソニー・コンピュータエンタテインメント グラフィックスプロセッサ、描画処理装置および描画処理方法
WO2009058845A1 (en) 2007-10-30 2009-05-07 Advanced Micro Devices Real-time mesh simplification using the graphics-processing unit
US8102393B1 (en) * 2007-12-13 2012-01-24 Nvidia Corporation Cull streams for fine-grained rendering predication
US8933943B2 (en) * 2008-04-30 2015-01-13 Intel Corporation Technique for performing load balancing for parallel rendering
US20100097377A1 (en) * 2008-10-20 2010-04-22 Jon Hasselgren Graphics Processing Using Culling on Groups of Vertices
US8436854B2 (en) * 2009-05-29 2013-05-07 Qualcomm Incorporated Graphics processing unit with deferred vertex shading
US9390539B2 (en) * 2009-11-04 2016-07-12 Intel Corporation Performing parallel shading operations
EP2517169A4 (en) * 2009-12-23 2017-10-18 Intel Corporation Image processing techniques
US8854365B2 (en) 2010-01-15 2014-10-07 Microsoft Corporation Rendering parametric surface patches
GB201007348D0 (en) * 2010-04-30 2010-06-16 Imagination Tech Ltd Programmable tessellation in a tile based rendering system
US8593466B2 (en) * 2010-06-08 2013-11-26 Intel Corporation Tile rendering for image processing
KR101719485B1 (ko) * 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
KR101681056B1 (ko) 2010-10-01 2016-12-01 삼성전자주식회사 정점 처리 방법 및 장치
KR101782044B1 (ko) * 2011-02-22 2017-09-26 삼성전자주식회사 그래픽 프로세서 및 조기 가시성 테스트 방법
US8666145B2 (en) * 2011-09-07 2014-03-04 Superfish Ltd. System and method for identifying a region of interest in a digital image
US10089774B2 (en) * 2011-11-16 2018-10-02 Qualcomm Incorporated Tessellation in tile-based rendering
US9299182B2 (en) * 2012-12-04 2016-03-29 Panasonic Intellectual Property Management Co., Ltd. Divided-area-based rendering device and divided-area-based rendering method
US9342857B2 (en) * 2013-03-29 2016-05-17 Nvidia Corporation Techniques for locally modifying draw calls
US20150179142A1 (en) * 2013-12-20 2015-06-25 Nvidia Corporation System, method, and computer program product for reduced-rate calculation of low-frequency pixel shader intermediate values
US9934604B2 (en) * 2013-12-27 2018-04-03 Intel Corporation Culling using masked depths for MSAA
US9418471B2 (en) * 2014-03-18 2016-08-16 Intel Corporation Compact depth plane representation for sort last architectures
US9552620B2 (en) * 2014-06-30 2017-01-24 Intel Corporation Depth offset compression

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6734861B1 (en) * 2000-05-31 2004-05-11 Nvidia Corporation System, method and article of manufacture for an interlock module in a computer graphics processing pipeline
US7468726B1 (en) * 2005-12-01 2008-12-23 Nvidia Corporation Culling in a vertex processing unit
US8542247B1 (en) * 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8564616B1 (en) * 2009-07-17 2013-10-22 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
CN103608850A (zh) * 2011-06-23 2014-02-26 英特尔公司 带选择性剔除的随机光栅化
US20130300754A1 (en) * 2012-05-14 2013-11-14 Cass W. Everitt Cull streams for fine-grained rendering predication

Also Published As

Publication number Publication date
KR102339581B1 (ko) 2021-12-14
JP6377842B2 (ja) 2018-08-22
JP2017531254A (ja) 2017-10-19
US20160086299A1 (en) 2016-03-24
EP3198553A4 (en) 2018-04-04
WO2016048521A1 (en) 2016-03-31
CN106575449B (zh) 2020-10-30
EP3198553A1 (en) 2017-08-02
KR20170034414A (ko) 2017-03-28
US9824412B2 (en) 2017-11-21

Similar Documents

Publication Publication Date Title
CN106575449A (zh) 仅位置着色管线
US11790490B2 (en) Super-resolution apparatus and method for virtual and mixed reality
US10354432B2 (en) Texture space shading and reconstruction for ray tracing
US9990758B2 (en) Bounding volume hierarchy generation using a heterogeneous architecture
TWI731871B (zh) 用於最佳化在唯位置著色圖磚延遲渲染器中的剪裁操作的方法、裝置及非暫態電腦可讀取媒體
CN107430523A (zh) 图形处理器的高效抢占
CN106575431A (zh) 用于高度高效的图形处理单元(gpu)执行模型的方法和装置
CN110390625B (zh) 在计算机环境中对视觉场景中的对象的智能点云重构
CN106537447A (zh) 图形处理器执行资源的动态缩放
CN107077833B (zh) 用于最后排序架构的高效的帧到帧相干性利用的装置和方法
CN110136223A (zh) 使用三角形的属性的加权平均来合并粗像素着色的片段
CN106575451B (zh) 用于对像素区域进行着色的方法、装置、设备及存储介质
CN107077828A (zh) 对颜色查找表的大小进行压缩
WO2018063582A1 (en) Method and apparatus for the proper ordering and enumeration of multiple successive ray-surface intersections within a ray tracing architecture
CN107004293B (zh) 仅位置流水线中的宽松拣分
CN106796713A (zh) Msaa中使用索引位进行压缩
TW201719571A (zh) 經由渲染命令串流器之僅關於位置的著色器背景提交
US9805498B2 (en) Method and apparatus for direct and interactive ray tracing of a subdivision surface
CN107077758A (zh) 零覆盖光栅化剔除
CN108694376A (zh) 包括静态场景确定、阻塞检测、帧率变换和调整压缩率的视频运动处理
CN107004294A (zh) 用于高吞吐量栅格器的方法和装置
WO2017172307A1 (en) Method and apparatus for sampling pattern generation for a ray tracing architecture
US20160171751A1 (en) Decoupling Visibility Bins and Render Tile Dimensions for Tiled Rendering
WO2017112146A1 (en) Apparatus and method for triangle-pair merging
US20160093102A1 (en) Efficient tessellation cache

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20201030

Termination date: 20210825

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