映射多速率着色到单片程序的制作方法

文档序号:18707433发布日期:2019-09-17 23:54阅读:278来源:国知局
映射多速率着色到单片程序的制作方法



背景技术:

3d管线中的功率消耗的很大一部分是由于像素着色。特别是在手持设备中,更高的显示分辨率和图形质量与最小化功率耗散的需求不一致。因此,更有效地运行像素着色器将尤其有利。

粗像素着色利用如下事实:与表面着色相比,几何遮蔽(occlusion)通常引入更高频率细节,并且以比可见性测试更低的速率执行着色。粗像素着色很适合高像素密度显示,其中减小着色速率的效果从正常的观看距离几乎不可辨别。可以在对用户而言模糊的或者以其它方式不太可感知的屏幕区域中进一步降低着色速率,例如受运动或散焦模糊影响的区域,或者在用户的中央窝视觉之外的区域。

在着色器以每像素或者每样本速率执行的当前图形架构上,难于利用这些机会。通过改变帧缓冲器分辨率,可以粗糙地控制着色速率,但是这不允许着色速率更细粒度的变化,例如仍然耦合到可见性采样速率的每对象、每三角形、或者每图像区域。

粗像素着色(cps)是用于在保持可见性采样速率恒定的同时改变光栅化管线中的着色速率的架构。

已经提出了通过以比可见性采样速率更低的速率对着色进行采样来改善着色效率的许多方法。多重采样抗锯齿(msaa)是经常由图形处理器硬件支持的一种这样的技术。利用msaa,每像素地存储多个覆盖样本(也被称为可见性样本),但是针对由基元覆盖的每一个像素,仅执行一次像素着色器。这与超采样形成对比,在超采样中,每被覆盖的样本执行一次着色器。

附图说明

关于以下附图描述了一些实施例:

图1描绘了根据一个实施例的粗四元组像素布局及其4宽度simd执行序列;

图2描绘了根据一个实施例的另一粗像素布局及其4宽度simd执行序列;

图3a是根据一个实施例用于内核处理粗速率着色和像素速率着色的流程图;

图3b是根据一个实施例用于固定功能加速器的流程图;

图4是后光栅化级的管线抽象;

图5描绘了用于粗像素着色的一部分图形管线;

图6描绘了利用在4宽度simd处理器上的单个线程中调度的粗像素四元组的多速率着色;

图7是根据一个实施例的数据处理系统的框图;

图8是根据一个实施例在图7中示出的处理器的框图;

图9是根据一个实施例的图7的图形处理器的框图。

图10是根据一个实施例的图形处理引擎的框图;

图11是根据另一实施例的图形处理器的框图;

图12说明了用于一个实施例的线程执行逻辑;

图13是根据一个实施例的图形处理器执行单元指令格式的框图;以及

图14是用于一个实施例的图形软件架构。

具体实施方式

在粗像素着色(cps)中,以去耦合的方式对着色和可见性进行采样。像素着色在图像空间着色网格上被怠惰地评估并且被暂时存储在记忆高速缓存中以重用于规则的或者随机的光栅化(sr)。在另一粗像素采样方案中,在优化的雷耶斯架构中在参数块空间中对着色进行均匀采样。这些技术允许具有任意栅格间距的着色网格,这在一些实施例中使能着色速率的更灵活的控制。

在一些实施例中,在多速率着色中,将粗速率着色阶段添加到现有的像素速率阶段的顶部以便显著地改善性能,同时对图像质量具有最小影响。可以将以不同的速率评估的两个着色阶段映射到在处理器图形单指令多数据(simd)引擎上运行的一个单片程序。单片程序是单层软件,该单层软件的执行不依赖于另一个程序。在一个实施例中,多速率着色允许单个渲染通路(pass)以一个或多个不同的速率执行着色代码:每像素组、每像素、以及每样本。

新的汇编指令(到固定功能硬件加速器的接口)使程序执行能够从粗速率快速切换到在simd机器上运行的相同内核程序内的像素速率。

在一些实施例中,新的固定功能逻辑加速了粗到像素映射,与管理单独程序所要求的逻辑相比,该新的固定功能逻辑具有低得多的复杂性/成本。同时,使用新逻辑的软件开销最小;因而,在一些实施例中,其不妨碍单片程序的性能。

图1说明了针对粗像素的不同布局映射到一个simd程序的1x2像素的粗像素四元组布局的多速率着色器执行的示例。粗像素是共享单个粗像素着色器评估的结果的像素组。图2说明了针对2x2粗像素四元组布局的多速率着色器执行的示例。为了简单起见,上述图仅示出了一个4宽度simd四元组,但是这一解决方案适用于映射到更宽simd机器的任何数量的四元组。数字(0、1、2、3)表示粗像素,而大写字母(a、b、c…)表示像素。每一幅图的左侧说明了像素在光栅化之后的2维视图,其中颜色较浅的文本中的数字/字母表示未点亮的像素。右侧示出了在simd机器上在单片程序中阶段的执行顺序。

在第一阶段(“粗阶段”)中,所有四个simd通道执行针对粗像素四元组的粗速率指令。在下一个阶段(像素阶段﹟1)中,相同的simd通道用于执行由粗四元组覆盖的像素四元组的随后组。像素着色器四元组及其到粗像素的映射的集合取决于粗像素布局(例如,1x1、1x2、2x1、2x2、2x4、4x2、4x4)和光栅化掩码(一些四元组可能完全未被点亮)二者。而且,对于每一个组,simd执行掩码可以都不相同。

在第一阶段中,前三个像素点亮并且第四个像素未点亮,执行掩码是(1、1、1、0),使得不执行未点亮的像素。针对阶段﹟1的粗到像素映射是(0、1、0、1),或者粗像素0映射到像素a、粗像素1映射到像素b、像素c也映射到粗像素0并且像素d映射到粗像素1。对于阶段﹟2,粗到像素映射是2、3、2、3。所有这些条信息在着色器编译时都是未知的,如果在使用现有的汇编指令集的软件中实现粗到像素转换,则这将导致显著的软件开销。

图1和图2中右侧的执行序列说明了使用新的汇编指令的单片程序(粗到像素速率切换)以减小与阶段转换相关联的软件开销。该新的指令将pixelgroup_id作为输入,并且针对每一个像素组,其返回:

pixel_mask-指示在每一个组中哪些像素被点亮

pixel_to_coarse_mapping-指示针对每一个像素的父粗像素,

(用于调和来自粗阶段输出的阶段间数据),

pixel_rate_bary-用于评估输入属性的质心空间中的像素位置

next_group_id-要处理的下一个像素组的标识符

该新的指令是到固定功能硬件加速器的接口。当要处理的像素四元组的数量随着粗四元组布局和光栅化掩码变化时,加速器确定粗四元组到像素四元组的2维映射并且管理这一映射的其可变扩展。具体地说,如果全部像素未被点亮,则加速器抑制整个四元组。利用这一方案,单片着色器程序从特定的粗四元组布局和映射进行抽象,并且处理回路中的像素组,直到硬件加速器通知处理完成(next_group_id=0)。

根据一些实施例,单个内核运行针对粗速率着色和像素速率着色二者的程序。在一些实施例中,可以使用simd机器,在该simd机器中,相同的通道用于粗四元组和由该粗四元组覆盖的像素四元组。

图3a中示出的序列可以在软件、固件和/或硬件中实现。在软件和固件实施例中,它可以由存储在诸如磁性的、光学的或者半导体存储装置的一个或多个非暂态计算机可读介质中的计算机执行指令实现。

对于图3a中的序列,如在框10中指示的,针对所有的组或四元组实现粗阶段。其后是在框12中,使用粗到像素映射和执行掩码来针对每一个组实现像素阶段,使得相同的simd通道能够用于执行粗四元组和由该粗四元组覆盖的像素四元组二者。

接着,该序列接收像素组标识符(pixelgroup_id)(框14)以标识诸如四元组的特定像素组。基于由在图3b中描绘的固定功能加速器确定的像素点亮掩码来针对当前的像素组设置执行掩码(框16)。接着,如在框18中指示的,粗到像素映射用于在相对应的粗阶段和像素阶段之间传递用户定义的级间数据。在框20,确定每像素输入属性值并且针对每一个组执行像素速率着色阶段。在框22,识别要处理的下一个组。

根据一些实施例,可以在软件、固件和/或硬件中实现固定功能加速器。在软件和固件实施例中,可以通过存储在诸如磁性的、光学的或半导体存储装置的一个或多个非暂态计算机可读介质中的计算机可读指令来实现加速器。

如在图3b中示出的,序列30可以开始于接收新像素组的标识符,如在框32中指示的。它确定二维粗到像素映射。在该基础上,它确定新像素组、管理可变的扩展和抑制。如在框34中指示的,针对该四元组确定点亮哪些像素。接着,在框36中,针对该组定义粗到像素映射并且确定像素位置和质心形状。如在框38中指示的,可以确定粗像素到像素四元组的2d映射。接着,如在框40中指示的,管理该映射的可变扩展。最后,如在框42中指示的,如果所有像素都未被点亮,则抑制整个四元组。当接收到新的像素组时,该流程继续循环。加速器返回该新的像素组、它们的执行掩码(图3a的框16)以及针对这一组的粗到像素映射(图3a的框18)。

在一个实施例中,软件(simd程序)和硬件(固定功能加速器)之间的唯一接口和功能划分能够实现多速率着色阶段到一个单片simd程序的有效映射。在一个实施例中,这一方案显著降低了硬件复杂性(逻辑、缓冲)并且不影响性能。

为了允许以低于每像素一次的速率进行着色,引入了粗像素(cp)的概念。cp是一组nx×ny个像素,其将共享单个粗像素着色器(cps)评估的结果。这与多个可见性样本如何共享利用msaa的单个像素着色器评估类似,其差别在于着色速率可以通过改变cp的大小来改变。被称为粗四元组(cq)的2x2个cp的组同时被着色,以便促进使用有限差值来计算微分。

许多应用可以得益于跨屏幕的不同区域改变着色速率的能力。为了能够实现着色速率的这样的变化,可以将屏幕划分为tx×ty大小的块,同时允许针对每一个块的cp大小的不同值。每一个块以选定的cp大小映射到cq的着色网格。

简化的去耦合采样技术可以通过避免重叠着色网格来实现,这确保了每一个像素不含糊地仅属于一个cq。这可以通过将cp大小限制到确保着色网格与块边界完美对齐的值的有限集来实现。利用这一假设,可以将着色技术概括如下:

为了确保在块内完美对齐的cq网格,可以限制cp大小,使得块大小是所有允许的cq大小的公倍数(例如,最小公倍数(lcm))。

容易使用的小数量的模式可以控制cp大小,这些模式仍然有力地足够支持一系列的应用。在每一种情况下,用户不直接指定cp大小,而是指定一对cp参数(sx,sy),该对cp参数(sx,sy)指定期望的cp大小。接着,将cp参数量化到满足或超过所请求的着色速率的最接近的可用cp大小。基于选定的模式,cp参数(sx,sy)可以是:

·从每顶点着色器输出进行内插,

·使用渲染状态设置到常数值,或者

·表示为屏幕坐标的径向函数。

利用着色器输出控制cp参数是非常灵活的,并且允许表达多个用例。

为了简单起见,可以启用恒定的cp参数。其是用于将cps添加到现有应用的最小侵入性方法。包括使用径向函数的能力以特别地用于漏斗渲染(foveatedrendering)。由于径向函数不能够使用每顶点属性的线性内插来稳健地表达,因此针对这一特殊情况可以使用单独的模式。

为了总是满足所要求的着色速率,通过计算针对块内的|sx|和|sy|的保守下界并且四舍五入到最近可用的cp大小来确定cp大小nx×ny。这里使用绝对值使得能够使用负cp参数用于运动或散焦模糊。

存在cp大小的量化的两个源。首先,仅每块一次地评估cp大小。其次,cp大小被量化到有限的可用cp大小中的一个。这两个源都导致cp大小从块移动到块的不连续性,这会导致可见的块转换。为了补偿这些不连续性,纹理采样器详细级别(lod)计算被增强以反映所请求的(未量化的)cp大小。这能够通过调整用于计算纹理lod的纹理坐标的有限差值来完成:

其中,δx和δy是分别沿x轴和y轴的纹理坐标的有限差值。针对每一个cp来评估δx和δy的值,与每块一次地进行评估的cp大小不同。补偿纹理lod创建了图像细节的平滑变化,其遮蔽了cp大小中的不连续性。

尽管lod补偿在许多情况下能够是有效的,但是存在其可能不可适用的一些场景,例如,在程序上生成的纹理。在这样的情况下,基于可用作着色器输入的cp大小和cp参数,lod补偿技术可能能够在用户空间中应用。

可以在相同的渲染路径中以三种不同的速率来执行着色。着色器计算中的一些可以被移到比每像素一次更低的速率,而某些高频率效果可以每像素地进行评估,或者甚至每可见性样本地进行评估,以减小混淆。由于像素着色器能够被配置为以像素或采样速率来运行,但是这两个是相互排斥的,因此这在当前的图形应用程序接口(api)中是不可能的。

在概念上,图形管线的单个像素着色器级被划分为三个不同的阶段,每速率一个(参见图2)。因而,在将块划分为粗四元组之后,每一个四元组以一个或多个不同的速率:每cp、每像素以及每样本,来对每一个四元组进行着色。

图4说明了cps能够被如何集成到现有的图形管线中。针对屏幕上的每一个块,光栅化器41测试输入基元以生成四元组片段,该四元组图元接受早期深度测试(框43)并且接着被缓冲在块缓冲器44中。基于粗像素大小(框50),在框46中将缓冲的片段映射到粗像素和粗四元组,接着该缓冲的片段在框48中被着色并且被映射到输出缓冲器中。利用简化的去耦合采样技术,可以将针对给定块和基元的光栅化的采样缓冲在块缓冲器44中,并且接着在完整的cq中调用像素着色器48。块缓冲器保持屏幕坐标以及用于解析可见性的所有必要信息,例如深度值和覆盖信息。当新的块或者新的基元被光栅化时,缓冲器被刷新,即仅需要缓冲单个块的有价值数据。

图5说明了如何将cps和多速率着色集成到类似direct3d11的现有图形架构的管线抽象中以产生渲染目标66。每一个着色阶段访问内插的每顶点属性ia,并且小数量的数据可以经过用户定义的着色器输出而被从一个阶段传送到下一个阶段;所允许的数据量是特定于实现的限制。这些阶段(cp60、像素62、样本64)中的任何一个也可以写入将在后面的管线级(例如,帧缓冲器融合)中消耗的输出。

在多速率着色中,每粗像素地计算低频漫射项并且每像素地计算高频镜面反射项。经过顶点着色器来控制cp大小。在一个实施例中,单个概念性管线级可以运行从多达三个不同的入口点编译的单个着色器,如下所示,每一个入口点用于一个速率:

这一方案为程序员提供了对什么代码以每一个速率运行以及什么数据在阶段之间流动的高度可见性和控制。在能够为了方便使用牺牲控制的情况下,上面描述的更简单模型可以仍然被实现为分层抽象。

当cp大小正在由着色器代码控制时,使附加的系统解释值,sv_coarsepixelsize,可用于在光栅化器之前的最后着色级。这一输出是两个分量的向量,并且与cp参数(δx,δy)相对应。典型地,将在顶点着色器中设置该输出,但是如果使用外壳、域、或者几何着色器,则也可以在该外壳、域、或者几何着色器中定义该输出。

此外,以cp速率运行的着色器代码能够访问针对量化之前的cp参数的内插值以及实际的粗像素大小:分别是sv_requestedcoarsepixelsize和sv_coarsepixelsize,二者的输入。这两个值一起足够用于着色器计算其自身的lod补偿,用于在不涉及纹理采样器的计算(例如,对过程纹理进行预滤波)中使用。

存在几种重要的用例,其中cps能够用于显著地减少像素着色的工作量。由于存在许多更多的用例,因此这绝不是详尽的列表。

渲染到高dpi显示器的原始分辨率经常是对于图形处理单元(gpu)要求太高的任务。典型的补偿是降低渲染的分辨率并且对图像进行上采样,这导致沿着对象轮廓的可察觉的质量降低,同时表面内部的变化不那么明显。取而代之的是,通过使用cps并且将cp参数设置到常数值,例如2x2个像素,我们能够在保持最多细节的同时实现着色速率的大幅减小。

利用对着色速率的更灵活的控制,能够实现更宽范围的应用,如在下文讨论的。

一些材料具有许多表面细节,而其它材料则没有。通过取决于材料类型来选择cp参数,在视觉冲击最小的情况下,可以节省计算。例如,用于渲染烟雾的粒子系统可以是相当同构的并且以低速率进行着色,而具有文本的标记可以确保高分辨率着色。类似地,在完全阴影中的对象可能以低于在明亮阳光中的对象的速率被着色。

cps使得利用漏斗渲染进行有效着色更加容易,这避免了在多个渲染通路上重新发送几何形状。可配置的径向函数使用少量的参数来控制着色速率:与注视的中心相对应的点c、宽高比a、内部和外部小半径ri和ro;以及内部和外部cp参数smin和smax。对于漏斗渲染,可以将ri设置到表示大约5°的视角的大小,并且对于循环下降函数,a=1。

尽管在一些实施例中着色系统支持任意位置用于高分辨率区域,但是仅将c固定在屏幕的中心处并且使用更宽的方面也产生好的结果,最为显著的是当从第一个人的角度渲染时。这一技术可以被称为外围cps渲染,与仅在利用视线跟踪时是可能的正确漏斗渲染形成对比。

屏幕中具有运动或散焦模糊的区域典型地具有窄的频率响应并且其能够以较低的速率进行着色。利用cps,人们能够通过设置顶点着色器中与屏幕空间速度或该顶点处的模糊圆形成比例的cp参数来控制在这样的区域中的着色速率。由于在修剪之前评估顶点着色器,因此在照相机之后或者在零深度处可以存在顶点。对于这样的情况,不降低着色速率以便确保稳健性。

可以针对x轴和y轴单独地确定cp参数,以便针对运动模糊生成各向异性的着色速率。通过为在焦平面前面的顶点分配负的cp参数并且为那些在后面的顶点分配正的cp参数,cp参数将在焦平面处内插到零。类似地,针对速度分配带符号的cp参数确保了在移动的基元内部的静态点处的零值。由于具有模糊半径的屏幕空间圆形和速度在屏幕空间中是线性函数,因此在这样的情况下,针对cp参数,应该禁用透视校正的内插。

存在几种不同的应用,在这些应用中,多速率着色提供有价值的工具用于调整质量和性能。使用体素锥跟踪来每2x2个像素地计算高质量环境光遮蔽项,同时以像素速率评估漫射纹理查找以保持大多数表面细节。类似地,也能够以较低的速率评估诸如间接点亮的复杂低频率点亮计算。

另一示例正在本地地增加困难区域中的着色速率。这可以完成以便仅围绕镜面反射特征来以像素速率或样本速率计算着色。对于今天的实时工作负载而言,使用双通路方案实现一种类型的多速率着色是相当普通的。在这一情况下,第一通路以像素速率运行(msaa),但是丢弃在模板缓冲器中标记的困难像素。接着,第二通路运行每样本着色,但是仅针对在模板缓冲器中标记的像素。使用cps,这样的算法能够被转换到单个通路,其选择性地计算在像素速率着色器和样本速率着色器中的结果,在可能的情况下,以甚至更低的速率执行结果。

cps多速率着色也能够用于以每cp(例如,4x4个像素)为基础来执行捡选(culling)。

一个cps软件实现是在基于中央处理器的功能性direct3d11仿真器中的管线。对于这一实现,可以使用16x16个像素的块大小和1、2或4的cp大小宽度和高度。为了支持cps程序员抽象,扩展directx高级着色语言并且可以引入新的api功能。为了给出着色成本的指示,可以对仿真器进行仪表化以便测量动态指令计数。可以跟踪对颜色缓冲器的所有存储器存取,用于测量颜色带宽。

除了像素着色之外,可以在管线中引入粗像素(cp)速率着色阶段和样本速率着色阶段。取决于如何跨多个处理器和线程来调度这些附加的阶段,存在用于多速率着色的集中潜在的实现战略。在调度战略中,cp、像素和样本速率着色阶段在相同的线程上被连续执行。按照这一方式限制调度使得能够进行简单的实现,这对于管线要求显著减少的改变。由于数据能够驻留在相同的寄存器中,因此这消除了跨阶段传输数据的需要。这也避免了用于节流阶段间数据的复杂的流控制机制。

图6示出了在具有通道70的4宽度simd处理器上调度的具有2x2cp大小的粗四元组。首先,粗四元组中的四个cp(例如,0123,4567,…12131415)跨simd线路在72处被同时执行,这便于计算有限差值。在粗阶段之后,处理器在74处在粗四元组内侧同时调度2x2个像素四元组,在所有覆盖的四元组上循环。由于当跨阶段转换时这一调度方案要求跨simd通路移动数据,因此我们假定处理器指令的可用性以按照有效的方式来便于实现此。

对于大于4(例如8或12)的simd宽度,可以同时调度多个粗四元组。然而,由于每一个粗四元组能够具有不同数量的被覆盖的像素,因此随着一些像素阶段循环较早地终止,更高的simd宽度也能够导致一些simd通道的减少利用。为了利用大simd宽度的改善的效率,人们可以选择跨simd通道或甚至单独的线程更均匀地分配像素阶段工作的更优化的调度方案。

以比每像素一次更低的速率进行着色暗示了颜色缓冲器压缩如何工作以减小存储器带宽。在2x2或更大像素块内较高的颜色值均匀度通常减小了熵并且使压缩更加有效。存在能够得益于cps的用于颜色压缩的许多现有方法。为了说明其在实践中起作用,可以使用pool等人的方案,这一方案计算像素之间的颜色差值并且接着使用斐波那契编码器对该差值应用熵编码的方案。pool等人的“losslesscompressionofvariableprecisionfloating-pointbuffersongpus”,关于交互式3d图形和游戏(2012)的研讨会,pp.47-54。

可以修改pool等人的方案,使得总是使用预定义的希尔伯特曲线以分层的方式来访问像素。结果,将首先在2x2四元组内计算差值,并且接着是在4x4区域内计算差值,以此类推。当cps被启用时,这些区域中的一些内的几种颜色可能相同,产生零差值,这使用斐波纳契编码器进行有效编码。我们使用128字节的高速缓存行大小,等于针对rgba8渲染目标的8x4个像素。当将行从颜色高速缓存中逐出时,其被压缩,并且如果所产生的大小小于或等于64字节,则压缩是成功的,并且将该行标记为在单独的控制缓冲器中被压缩且仅将一个64字节的事务发送到存储器。否则,在两个64字节的事务中将未压缩的数据发送到存储器。利用最近最少使用(lru)的替换政策来为64kb颜色高速缓存建模。

粗像素着色(cps)能够显著地降低着色成本,而对图像质量仅有很少的或几乎没有可觉察的影响。当cps经过可编程着色速率引入新的灵活度时,在仍然解决针对手持设备的快速增长市场的能量效率的真正需求的同时,该cps自然地适应实时图形管线的进化。

图7是根据实施例的数据处理系统100的框图。数据处理系统100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单个处理器桌面系统、多处理器工作站系统、或者具有较大数量的处理器102或处理器核心107的服务器系统。在一个实施例中,数据处理系统100是位于用于在移动的、手持的、或嵌入式设备中使用的片上系统集成电路(soc)上的系统。

数据处理系统100的实施例可以包括或者被并入到基于服务器的游戏平台、包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持游戏控制台、或者在线游戏控制台。在一个实施例中,数据处理系统100是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统100也可以包括诸如智能手表可佩戴设备、智能耳机设备、增强现实设备、或虚拟现实设备的可佩戴设备,与上述可佩戴设备耦合,或者被集成在上述可佩戴设备内。

一个或多个处理器102中的每一个包括用于处理指令的一个或多个处理器核心107,上述指令当被执行时执行针对系统和用户软件的操作。在一个实施例中,一个或多个处理器核心107中的每一个被配置为处理特定的指令集109。指令集109可以便于实现复杂指令集计算(cisc)、精简指令集计算(risc)、或者经由非常长的指令字(vliw)的计算。多个处理器核心107中的每一个可以处理不同的指令集109,其可以包括用于方便实现对其它指令集进行仿真的指令。处理器核心107也可以包括其它处理设备,例如数字信号处理器(dsp)。

在一个实施例中,处理器102包括高速缓存存储器104。取决于该架构,处理器102能够具有单个内部高速缓存或者内部高速缓存的多个级别。在一个实施例中,高速缓存存储器在处理器102的多个组件之间共享。在一个实施例中,处理器102也使用外部高速缓存(例如,级3(l3)高速缓存或最后级高速缓存(llc))(未示出),该高速缓存可以使用已知的高速缓存一致性技术而在处理器核心107之间共享。在处理器102中额外地包括寄存器文件106,该处理器102可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器、以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其它寄存器可以专用于处理器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通信以便执行图形和媒体操作。

ich130使得外围设备能够经由高速i/o总线连接到存储器120和处理器102。i/o外围设备包括音频控制器146、固件接口128、无线收发机126(例如,wi-fi,蓝牙)、数据存储设备124(例如,硬盘驱动、闪存等等)、以及用于将传统(例如,个人系统2(ps/2))设备耦合到系统的传统i/o控制器。一个或多个通用串行总线(usb)控制器142连接输入设备,例如键盘和鼠标144组合。网络控制器134也可以耦合到ich130。在一个实施例中,高性能网络控制器(未示出)耦合到处理器总线110。

图8是具有一个或多个处理器核心202a-n、集成的存储器控制器214、以及集成的图形处理器208的处理器200的实施例的框图。处理器200能够包括多达由虚线框表示的额外的核心202n或者包括该额外的核心202n的额外的核心。核心202a-n中的每一个包括一个或多个内部高速缓存单元204a-n。在一个实施例中,每一个核心还能够存取一个或多个共享高速缓存单元206。

内部高速缓存单元204a-n和共享高速缓存单元206表示处理器200内的高速缓存存储器层级。高速缓存存储器层级可以包括每一个核心内的指令和数据高速缓存的至少一个级以及共享中间级高速缓存的一个或多个级,例如级2(l2)、级3(l3)、级4(l4)、或高速缓存的其它级,其中将位于外部存储器之前的高速缓存的最高级分类为最后级高速缓存(llc)。在一个实施例中,高速缓存一致性逻辑维持各个高速缓存单元206与204a-n之间的一致性。

处理器200也可以包括一个或多个总线控制器单元216和系统代理210的集合。一个或多个总线控制器单元管理外围总线的集合,例如一个或多个外围组件互连总线(例如,pci、pciexpress)。系统代理210针对各种处理器组件提供管理功能。在一个实施例中,系统代理210包括一个或多个集成的存储器控制器214以管理对各种外部存储器设备(未示出)的存取。

在一个实施例中,核心202a-n中的一个或多个包括对于同时多线程的支持。在这样的实施例中,系统代理210包括用于在多线程处理期间协调并操作核心202a-n的组件。系统代理210可以额外地包括功率控制单元(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互连中的至少一个,包括便于在各种处理器组件和诸如edram模块的高性能嵌入式存储器模块218之间实现通信的封装上i/o互连。在一个实施例中,核心202-n中的每一个以及图形处理器208使用嵌入式存储器模块218作为共享的最后级高速缓存。

在一个实施例中,核心202a-n是执行相同的指令集架构的同构核心。在另一个实施例中,核心202a-n在指令集架构(isa)方面是异构的,其中核心202a-n中的一个或多个执行第一指令集,而其它核心中的至少一个执行第一指令集的子集或者不同的指令集。

处理器200可以是使用多种处理技术中的任何一种的一个或多个基底的一部分或者在该一个或多个基底上实现,该多种处理技术例如是互补金属氧化物半导体(cmos)、双极结型/互补金属氧化物半导体(bicmos)或者n型金属氧化物半导体逻辑(nmos)。此外,处理器200可以被实现在一个或多个芯片上或者被实现为除了其它组件之外具有所说明的组件的片上系统(soc)集成电路。

图9是图形处理器300的一个实施例的框图,图形处理器300可以是分立的图形处理单元,或者可以是与多个处理核心集成的图形处理器。在一个实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射的i/o接口并且经由在处理器存储器中放置的命令进行通信。图形处理器300包括存储器接口314以便对存储器进行存取。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和/或到系统存储器的接口。

图形处理器300也包括用于将显示输出数据驱动到显示设备320的显示控制器302。显示控制器302包括用于显示和合成多层视频的一个或多个覆盖平面的硬件或者用户接口元件。在一个实施例中,图形处理器300包括视频编解码器引擎306以将媒体编码到一个或多个媒体编码格式,从一个或多个媒体编码格式进行解码,或者在一个或多个媒体编码格式之间进行转码,上述一个或多个媒体编码格式包括但不限于诸如mpeg-2的运动图像专家组(mpeg)格式、诸如h.264/mpeg-4avc的高级视频编码(avc)格式,以及电影与电视工程师协会(smpte)421m/vc-1,以及诸如jpeg、和运动jpeg(mjpeg)格式的联合摄影专家组(jpeg)格式。

在一个实施例中,图形处理器300包括用于执行例如包括比特边界块传输的二维(2d)光栅化器操作的块图像传输(blit)引擎304。然而,在一个实施例中,使用图形处理引擎(gpe)310的一个或多个组件来执行2d图形操作。图形处理引擎310是用于执行图形操作的计算引擎,包括三维(3d)图形操作和媒体操作。

gpe310包括用于执行3d操作的3d管线312,例如使用对3d基元形状(例如,长方形、三角形等等)起作用的处理函数来渲染三维图像和场景。3d管线312包括在元件内执行各种任务和/或向3d/媒体子系统315生成执行线程的可编程功能元件和固定功能元件。尽管3d管线312能够用于执行媒体操作,但是gpe310的实施例也包括特别地用于执行诸如视频后处理和图像增强的媒体操作的媒体管线316。

在一个实施例中,媒体管线316包括用于执行诸如视频解码加速、视频解交错、以及代替或代表视频编解码器引擎306的视频编码加速的一个或多个专门的媒体操作的固定功能逻辑单元或者可编程逻辑单元。在一个实施例中,媒体管线316额外地包括用于生成用于在3d/媒体子系统315上执行的线程的线程生成单元。所生成的线程执行针对在3d/媒体子系统中包括的一个或多个图形执行单元上的媒体操作的计算。

3d/媒体子系统315包括用于执行由3d管线312和媒体管线316生成的线程的逻辑。在一个实施例中,管线向3d/媒体子系统315发送线程执行请求,其包括用于向可用的线程执行资源仲裁和分配各种请求的线程分配逻辑。执行资源包括用于处理3d和媒体线程的图形执行单元的阵列。在一个实施例中,3d/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,子系统也包括共享存储器以便在线程之间共享数据并且用于存储输出数据,该共享存储器包括寄存器和可寻址的存储器。

图10是用于图形处理器的图形处理引擎410的实施例的框图。在一个实施例中,图形处理单元(gpe)410是图9中示出的gpe310的版本。gpe410包括3d管线412和媒体管线416,其中的每一个可以与图9的3d管线312和媒体管线316的实现不同或相似。

在一个实施例中,gpe410与命令流器403耦合,该命令流器403向gpe3d管线和媒体管线412、416提供命令流。命令流器403耦合到存储器,该存储器可以是系统存储器、或者内部高速缓存存储器和共享高速缓存存储器中的一个或多个。命令流器403从存储器接收命令并且向3d管线412和/或媒体管线416发送命令。3d管线和媒体管线通过经由各自管线内的逻辑执行操作或者通过向执行单元阵列414分配一个或多个执行线程来处理命令。在一个实施例中,执行单元阵列414是可调整的,使得该阵列包括基于gpe410的目标功率和性能级别的可变数量的执行单元。

采样引擎430与存储器(例如,高速缓存存储器或系统存储器)和执行单元阵列414耦合。在一个实施例中,采样引擎430为可调整执行单元阵列414提供存储器存取机制,该机制允许执行阵列414从存储器读取图形和媒体数据。在一个实施例中,采样引擎430包括用于执行针对媒体的专门的图像采样操作的逻辑。

采样引擎430中的专门的媒体采样逻辑包括去噪/去交错模块432、运动估计模块434以及图像调整和滤波模块436。去噪/去交错模块432包括用于对解码的视频数据执行去噪或去交错算法中的一个或多个的逻辑。去交错逻辑将交错的视频内容的交替字段组合到单个视频帧中。去噪逻辑从视频和图像数据减少或移除数据噪声。在一个实施例中,去噪逻辑和去交错逻辑是运动自适应的并且基于在视频数据中检测到的运动量来使用空间或时间滤波。在一个实施例中,去噪/去交错模块432包括专用运动检测逻辑(例如,在运动估计引擎434内)。

运动估计引擎434通过执行对视频数据的诸如运动向量估计和预测的视频加速功能来提供对于视频操作的硬件加速。运动估计引擎确定描述图像数据在连续的视频帧之间的转换的运动向量。在一个实施例中,图形处理器媒体编解码器使用视频运动估计引擎434,以便在宏块级上对视频执行操作,该操作否则可能是使用通用处理器执行的计算密集型操作。在一个实施例中,运动估计引擎434通常可用于图形处理器组件以便辅助对视频数据内运动的方向和幅度敏感或适应的视频解码和处理功能。

图像调整和滤波模块436执行图像处理操作以增强所生成的图像和视频的视觉质量。在一个实施例中,调整和滤波模块436在向执行单元阵列414提供图像和视频数据之前在采样操作期间处理该图像和视频数据。

在一个实施例中,图形处理引擎410包括数据端口444,其为图形子系统提供额外的机制以便对存储器进行存取。数据端口444便于存储器存取,用于包括渲染目标写入、常数缓冲器读取、暂时存储器空间读取/写入、以及媒体表面存取的操作。在一个实施例中,数据端口444包括用于高速缓存对存储器的存取的高速缓存存储器空间。高速缓存存储器可以是单个数据高速缓存或者被分为用于经由数据端口存取存储器的多个子系统的多个高速缓存(例如,渲染缓冲器高速缓存、常数缓冲器高速缓存等等)。在一个实施例中,在执行单元阵列414中的执行单元上执行的线程通过经由数据分配互连交换消息来与数据端口进行通信,该数据分配互连耦合图形处理引擎410的子系统中的每一个。

图11是图形处理器的另一个实施例的框图。在一个实施例中,图形处理器包括环形互连502、管线前端504、媒体引擎537、以及图形核心580a-n。环形互连502将图形处理器耦合到其它处理单元,包括其它图形处理器或者一个或多个通用处理器核心。在一个实施例中,图形处理器是集成到多核心处理系统中的许多处理器中的一个。

图形处理器经由环形互连502接收批量的命令。进来的命令由管线前端504中的命令流器503解释。图形处理器包括用于经由图形核心580a-n执行3d几何处理和媒体处理的可调整执行逻辑。对于3d几何处理命令,命令流器503向几何管线536供应命令。对于至少一些媒体处理命令,命令流器503向与媒体引擎537耦合的视频前端534供应命令。媒体引擎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的集合。在一个实施例中,该共享的资源包括共享高速缓存存储器和像素操作逻辑。在图形处理器的各个实施例中还可以包括其它共享资源。

图12说明了在图形处理引擎的一个实施例中采用的包括处理单元的阵列的线程执行逻辑600。在一个实施例中,线程执行逻辑600包括线程分配器604、指令高速缓存602、包括多个执行单元608a-n的可调整执行单元阵列、采样器610、数据高速缓存612、以及数据端口614。在一个实施例中,所包括的组件经由链接到所述组件中的每一个的互连架构进行互连。线程执行逻辑600包括经过指令高速缓存602、数据端口614、采样器610、以及执行单元阵列608a-n中的一个或多个到诸如系统存储器或高速缓存存储器的存储器的一个或多个连接。在一个实施例中,每一个执行单元(例如,608a)是能够执行多个同时线程并且针对每一个线程并行处理多个数据单元的单独的向量处理器。执行单元阵列608a-n包括任何数量的单独的执行单元。

在一个实施例中,执行单元阵列608a-n主要用于执行“着色器”程序。在一个实施例中,阵列608a-n中的执行单元执行包括对于许多标准3d图形着色器指令的本地支持的指令集,使得以最小的转换来执行来自图形库(例如,direct3d和opengl)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。

执行单元阵列608a-n中的每一个执行单元对数据单元的阵列进行操作。数据单元的数量是“执行大小”或者针对该指令的信道数量。执行信道是针对数据单元存取、掩码、以及在指令内流控制的执行的逻辑单元。针对特定的图形处理器,信道的数量可以独立于物理alu或fpu的数量。执行单元608a-n支持整数和浮点数据类型。

执行单元指令集包括单指令多数据(simd)指令。可以将各种数据单元存储在寄存器中作为压缩数据类型,并且该执行单元将基于数据单元中的数据大小来处理各个数据单元。例如,当对256比特宽度的向量进行操作时,将256比特的向量存储在寄存器中,并且执行单元对作为四个单独的64比特压缩数据单元(四字(qw)大小数据单元)、八个单独的32比特压缩数据单元(双字(dw)大小数据单元)、16个单独的16比特压缩数据单元(字(w)大小数据单元)、或者32个单独的8比特压缩数据单元(字节(b)大小数据单元)的向量进行操作。然而,不同的向量宽度和寄存器大小是可能的。

线程执行逻辑600中包括一个或多个内部指令高速缓存(例如,602)以对用于执行单元的线程指令进行高速缓存。在一个实施例中,包括一个或多个数据高速缓存(例如,612)以在线程执行期间对线程数据进行高速缓存。包括采样器610以便对3d操作提供纹理采样并且对媒体操作提供媒体采样。在一个实施例中,采样器610包括专用的纹理或媒体采样功能以在向执行单元提供采样数据之前在采样过程期间处理纹理或媒体数据。

在执行期间,图形和媒体管线经由线程生成和分配逻辑向线程执行逻辑600发送线程发起请求。线程执行逻辑600包括本地线程分配器604,其仲裁来自图形和媒体管线的线程发起请求并且在一个或多个执行单元608a-n上实例化所请求的线程。例如,几何管线(例如,图10的536)向线程执行逻辑600分配顶点处理、镶嵌、或者几何处理线程。线程分配器604也能够处理来自执行的着色器程序的运行时间线程生成请求。

一旦一组几何对象已经被处理并且被光栅化为像素数据,则调用像素着色器602以便进一步计算输出信息并且使结果写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等等)。在一个实施例中,像素着色器602计算要被内插到光栅化的对象之间的各个顶点属性的值。接着,像素着色器602执行供应api的像素着色器程序。为了执行像素着色器程序,像素着色器602经由线程分配器604向执行单元(例如,608a)分配线程。像素着色器602使用采样器610中的纹理采样逻辑来存取在存储器中存储的纹理图中的纹理数据。对纹理数据和输入几何数据的算术操作计算针对每一个几何片段的像素颜色数据,或者丢弃一个或多个像素来避免进一步的处理。

在一个实施例中,数据端口614提供用于线程执行逻辑600将处理的数据输出到存储器的存储器存取机制,用于对图形处理器输出管线进行处理。在一个实施例中,数据端口614包括或耦合到一个或多个高速缓存存储器(例如,数据高速缓存612)以便对数据进行高速缓存,用于经由该数据端口进行存储器存取。

图13是说明根据实施例的图形处理器执行单元指令格式的框图。可以将到先前描述的固定功能加速器的访问映射到这里描述的指令(发送消息)。在一个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框说明了在执行单元指令中通常包括的组件,而虚线则包括可选的或者仅在指令的子集中包括的组件。所描述和说明的指令格式是宏指令,因为它们是供应到执行单元的指令,与一旦指令被处理就由指令解码产生的微操作相对。

在一个实施例中,图形处理器执行单元在本地支持128比特格式710的指令。基于选定的指令、指令选项以及操作数的数量,64比特压缩指令格式730可用于一些指令。本地128比特格式710提供了对所有指令选项的访问,而一些选项和操作被限制在64比特格式730。在64比特格式730中可用的本地指令随着实施例而不同。在一个实施例中,使用索引字段713中的索引值的集合来部分地压缩该指令。执行单元硬件基于索引值引用压缩表的集合并且使用压缩表输出来重构128比特格式710的本地指令。

对于每一种格式,指令操作码712定义执行单元要执行的操作。执行单元在每一个操作数的多个数据单元之间并行地执行每一条指令。例如,响应于添加指令,执行单元在表示纹理单元或图片单元的每一颜色信道之间执行同时的添加操作。在缺省的情况下,执行单元在操作数的所有数据信道之间执行每一条指令。指令控制字段714能够实现对某些执行选项的控制,例如信道选择(例如,预测)和数据信道顺序(例如,调和)。对于128比特指令710,执行大小字段716限制将被并行执行的数据信道的数量。执行大小字段不可用于在64比特压缩指令格式730中使用。

一些执行单元指令具有多达三个操作数,包括两个源操作数,src0720、src1722和一个目的地718。在一个实施例中,执行单元支持双目的地指令,其中目的地中的一个被隐含。数据操控指令可以具有第三个源操作数(例如,src2724),其中指令操作码jj12确定源操作数的数量。指令的最后的源操作数可以是随着指令传递的立即(例如,硬编码)值。

在一个实施例中,基于操作码比特字段对指令进行分组以便简化操作码解码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)。向量数学组对向量操作数执行诸如点积计算的算术运算。

图14说明了根据实施例用于数据处理系统的示例性图形软件架构。该软件架构包括3d图形应用1010、操作系统1020、以及至少一个处理器1030。处理器1030包括图形处理器1032以及一个或多个通用处理器核心1034。图形应用1010和操作系统1020中的每一个在数据处理系统的系统存储器1050中执行。

在一个实施例中,3d图形应用1010包含一个或多个着色器程序,该一个或多个着色器程序包括着色器指令1012。着色器语言指令可以是诸如高级着色器语言(hlsl)或opengl着色器语言(glsl)的高级着色器语言。该应用也包括适合由通用处理器核心1034执行的机器语言的可执行指令1014。该应用也包括由顶点数据定义的图形对象1016。

操作系统1020可以是来自微软公司的操作系统、专有的类似unix的操作系统、或者使用linux内核的变形的开源的类似unix的操作系统。当使用direct3dapi时,操作系统1020使用前端着色器编译器1024将hlsl的任何着色器指令1012编译成低级着色器语言。该编译可以是即时编译或者该应用能够执行共享预编译。在一个实施例中,高级着色器在3d图形应用1010的编译期间被编译成低级着色器。

用户模式图形驱动器1026可以包含后端着色器编译器1027,以便将着色器指令1012转换为硬件特定的表示。着色器编译器将粗速率阶段和像素速率阶段融合为一个单片程序并且如结合先前的单片程序描述所描述的添加“粘合代码”。当使用openglapi时,glsl高级语言的着色器指令1012被传递到用户模式图形驱动器1026用于编译。用户模式图形驱动器使用操作系统内核模式功能1028来与内核模式图形驱动器1029进行通信。内核模式图形驱动器1029与图形处理器1032进行通信以便分配命令和指令。

就本文描述了各种操作或功能来说,可以将它们描述或定义为硬件电路、软件代码、指令、配置、和/或数据。上述内容可以被体现在硬件逻辑中,或者被体现为直接可执行的软件(“对象”或“可执行”形式)、源代码、被设计用于在图形引擎上执行的高级着色器代码、或者针对特定处理器或图形核心的指令集中的低级汇编语言代码。可以经由具有存储在其上的所述内容的制品或者经由操作通信接口以便经由该通信接口发送数据的方法来提供本文描述的实施例的软件内容。

非暂态机器可读存储介质可以使机器执行所描述的功能或操作,并且包括以机器(例如,计算设备、电子系统等等)可存取的形式存储信息的任何机制,例如,可记录/不可记录介质(例如,只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光学存储介质、闪存设备等等)。通信接口包括接口到硬接线、无线、光学等等的介质中的任何一个的任何机制,例如存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等等。通信接口通过提供配置参数或者发送信号来配置,以便准备该通信接口来提供描述软件内容的数据信号。可以经过发送到通信接口的一个或多个命令或者信号来访问通信接口。

下面的条款和/或示例与进一步的实施例有关:

一个示例实施例可以是一种方法,包括定义针对一组像素的粗到像素映射,执行粗像素着色,并且使用所述粗到像素映射针对所述组在硬件处理器中执行像素着色。所述方法还可以包括确定所述组中的哪些像素被点亮。所述方法还可以包括使用针对粗着色和像素着色的相同的内核。所述方法还可以包括使用单指令多数据着色器。所述方法还可以包括使用针对粗着色和像素着色的相同的通道。所述方法还可以包括在执行针对所述组的粗着色之后执行针对所述组的像素着色。所述方法还可以包括使用用于在运行单指令多数据机器的相同的内核程序中将程序执行从粗速率切换到像素速率的指令。所述方法还可以包括同时对多个四元组进行粗着色并且接着依次对所述四元组中的每一个进行像素着色。

另一示例实施例可以是一种方法,包括将具有阶段的粗着色和像素着色映射到一个单片的单指令多数据程序,确定像素在质心空间中的位置,并且如果一组像素中的所有像素都未被点亮,则抑制该组像素。所述方法可以包括编译粗到像素映射、像素点亮掩码、像素组、以及在固定功能加速器中的质心。所述方法可以包括将像素速率阶段实现为在由固定功能加速器确定的像素组上的循环。所述方法可以包括在每一循环中设置执行掩码,使用粗到像素映射来调和位于粗到像素速率阶段之间的级间数据,并且使用质心来在每一循环通路中内插每像素属性。

在另一示例实施例中,一个或多个存储指令的非暂态计算机可读介质,所述指令由处理器执行以便执行包括下面的序列:定义针对一组像素的粗到像素映射,执行粗像素着色,并且使用所述粗到像素映射针对所述组在硬件处理器中执行像素着色。所述接着可以包括所述序列,所述序列包括确定所述组中的哪些像素被点亮。所述接着可以包括所述序列,所述序列包括使用针对粗着色和像素着色的相同的内核。所述介质可以包括所述序列,所述序列包括使用单指令多数据着色器。所述介质可以包括所述序列,所述序列包括使用针对粗着色和像素着色的相同的通道。所述介质可以包括序列,所述序列包括在执行针对所述组的粗着色之后执行针对所述组的像素着色。所述介质可以包括所述序列,所述序列包括使用用于在运行单指令多数据机器的相同的内核程序中将程序执行从粗速率切换到像素速率的指令。所述介质可以包括所述序列,所述序列包括同时对多个四元组进行粗着色并且接着依次对所述四元组中的每一个进行像素着色。

另一示例实施例可以是一种装置,包括硬件处理器,用于定义针对一组像素的粗到像素映射,执行粗像素着色,并且使用所述粗到像素映射针对所述组在硬件处理器中执行像素着色;以及耦合到所述处理器的存储装置。所述装置可以包括所述处理器,所述处理器用于确定所述组中的哪些像素被点亮。所述装置可以包括所述处理器,所述处理器用于使用针对粗着色和像素着色的相同的内核。所述装置可以包括所述处理器,所述处理器用于使用单指令多数据着色器。所述装置可以包括所述处理器,所述处理器用于使用针对粗着色和像素着色二者的相同的通道。所述装置可以包括所述处理器,所述处理器用于在执行针对所述组的粗着色之后执行针对所述组的像素着色。所述装置可以包括所述处理器,所述处理器用于使用用于在运行单指令多数据机器的相同的内核程序中将程序执行从粗速率切换到像素速率的指令。所述装置可以包括所述处理器,所述处理器用于同时对多个四元组进行粗着色并且接着依次对所述四元组中的每一个进行像素着色。所述装置可以包括存储器控制器集线器。所述装置可以包括无线收发机。

所描述的各种组件可以是用于执行所描述的操作或功能的模块。本文描述的每一个组件包括软件、硬件、或这些的组合。上述组件可以被实现为软件模块、硬件模块、特殊用途的硬件(例如,专用硬件、专用集成电路(asic)、数字信号处理器(dsp)等等)、嵌入式控制器、硬接线电路等等。除了本文描述的之外,在不偏离本本发明所公开的实施例和实现的保护范围的情况下,能够对这些实施例和实现做出各种修改。因此,应该在说明性的而不是限制性的意义上解释本文中的说明和示例。本发明的保护范围应该仅通过参考随后的权利要求书来衡量。

本文描述的图形处理技术可以被实现在各种硬件架构中。例如,图形功能可以被集成到芯片集中。可选地,可以使用分立的图形处理器。作为又一实施例,可以由包括多核处理器的通用处理器实现图形功能。

贯穿本说明书提及的“一个实施例”或“实施例”指的是结合实施例描述的特定的特征、结构、或特性被包括在本公开中包含的至少一个实现中。因而,短语“一个实施例”或“在实施例中”的出现不必指代相同的实施例。而且,可以以与所说明的特定实施例不同的其它适当形式来设置该特定的特征、结构或特性,并且所有这样的形式可以被包含在本申请的权利要求书内。

尽管已经描述了有限数量的实施例,但是本领域的技术人员将理解根据其的许多修改和变化。所附权利要求书意在覆盖落入本公开的真实精神和保护范围内的所有这样的修改和变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1