当前位置: 首页 > 专利查询>英特尔公司专利>正文

映射多速率着色到单片程序制造技术

技术编号:22136273 阅读:48 留言:0更新日期:2019-09-18 09:50
在多速率着色中,粗速率着色阶段被添加到现有的像素速率阶段顶上以显著提高性能而最小地影响图像质量。可以将以不同速率评估的两个着色阶段映射到在处理器图像单指令多数据(SIMD)引擎上运行的一个单片程序。在一个实施例中,多速率着色允许单个渲染通路以一个或多个不同的速率执行着色代码:每像素组、每像素、以及每采样。

Mapping multirate shading to monolithic programs

【技术实现步骤摘要】
映射多速率着色到单片程序本申请是申请日为2015年3月3日、申请号为201510094383.8的同名专利申请的分案申请。
技术介绍
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通道能够用于执行粗四元组和由该粗四元组覆盖的像素四元组二者。接着,该本文档来自技高网...

【技术保护点】
1.一种方法,包括:定义针对一组像素的粗到像素映射;使用内插的属性执行粗像素着色;以及使用来自粗像素着色的数据以及所述内插的属性针对所述组在硬件处理器中执行像素着色。

【技术特征摘要】
2014.04.03 US 61/974,602;2014.09.22 US 14/492,4711.一种方法,包括:定义针对一组像素的粗到像素映射;使用内插的属性执行粗像素着色;以及使用来自粗像素着色的数据以及所述内插的属性针对所述组在硬件处理器中执行像素着色。2.根据权利要求1所述的方法,包括确定所述组中的哪些像素被点亮。3.根据权利要求1所述的方法,包括针对粗着色和像素着色使用相同的内核。4.根据权利要求3所述的方法,包括使用单指令多数据着色器。5.根据权利要求4所述的方法,包括针对粗着色和像素着色使用相同的通道。6.根据权利要求1所述的方法,包括在执行针对所述组的粗着色之后执行针对所述组的像素着色。7.根据权利要求1所述的方法,包括使用用于在运行单指令多数据机器的相同的内核程序中将程序执行从粗速率切换到像素速率的指令。8.根据权利要求1所述的方法,包括同时对多个四元组进行粗着色,并且接着依次对所述四元组中的每一个进行像素着色。9.一种装置,包括:硬件...

【专利技术属性】
技术研发人员:T·扬恰克P·苏提
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1