首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】光线追踪期间的详细级别选择_英特尔公司_201680075908.6 

申请/专利权人:英特尔公司

申请日:2016-12-08

公开(公告)日:2024-04-09

公开(公告)号:CN108475441B

主分类号:G06T15/06

分类号:G06T15/06;G06T15/00;G06T17/00

优先权:["20160122 US 15/004,191"]

专利状态码:有效-授权

法律状态:2024.04.09#授权;2019.02.19#实质审查的生效;2018.08.31#公开

摘要:详细级别节点可以保存层次包围体、对象标识符、在其处发生详细级别之间的转换的距离以及偏置。当遇到该层次中的详细级别节点时,可以使用距离值来选择详细级别。有时,因为优选的级别不可用,所以不同的详细级别被加载。可以在寄存器中对不同的级别进行标记。然后,对于后续的帧使用正确的级别。在有些情况下,可以使用节点偏置来覆盖详细级别。

主权项:1.一种方法,包括:在光线追踪期间使用硬件处理器来遍历加速结构,所述加速结构包括内部节点、叶子节点和详细级别节点,其中,所述详细级别节点是指向具有不同的详细级别的多个节点的节点;使用所述详细级别节点来选择详细级别;使用不同的详细级别来代替所选择的详细级别;以及对数据结构进行标记,以指示所述不同的详细级别代替了所选择的详细级别而被用于第一帧中。

全文数据:光线追踪期间的详细级别选择背景技术[0001]—般而言,本申请涉及图形处理,以使得图像能够被生成在计算机显示器上。[0002]作为图形处理的一部分,确定光线是否与表示场景的三角形相交是必要的。在由三角形组成的场景中针对每一个单个三角形来实际地测试光线,将花费太长的时间。当光线仅与场景中的几个三角形相交时,尤其是这种情况。从而,在真正需要考虑的三角形上深入并且避免不必要地针对许多三角形来测试光线是有利的。能够使用层次包围体boundingvolumehierarchy,BVH来更迅速地识别场景中的哪些三角形能够与光线相交。[0003]使用针对层次包围体的场景图,人们可以将场景迭代地划分成逐级更小的三角形组。如果最高级别的三角形组未与光线相交,则较小的三角形组中没有一个将与光线相交。从而,在一种情况下,定义场景的层次包围体可以被分成两个,以便两部分中的一个大致包含场景的一半三角形且另一部分包含剩余的三角形。然后,可以针对场景的每一个划分的部分来检测光线,以确定该部分三角形组是否将与光线相交。[0004]场景图包括支持整个三角形场景的根节点。从该根节点分开的两个孩子节点可以各自负责该场景的一半三角形,现在每一个三角形支持整组三角形的一部分。[0005]然后,在每一个连续的级别,每一个节点负责较少的三角形。在节点中保存的信息是在其三角形驻留在其内的空间中的区域的包围体。每次该三角形组被分成至少两个孩子节点时,层次包围体的体积被减小。通过以此方式重复地缩小包围体直到其仅包含几个三角形,可以仅根据需要针对光线交叉进行更广泛的测试。例如,如果针对根节点包围体来测试光线且其未命中,则其将不会命中该场景中的每一个三角形。[0006]如果光线命中根节点,则针对两个孩子节点进行检查。理想地,光线仅命中两个孩子节点中的一个,这意味着,针对未明中的孩子节点,可以忽略其拥有的所有三角形。然后,针对光线命中的孩子节点的两个孙子节点来测试光线,并且以此类推。二叉剖分继续向下进行到仅包含针对其测试光线的几个三角形的所谓的叶子节点。如果光线命中两个孩子节点,贝lJ一个孩子节点被推送到节点堆栈上以便于后来的遍历并且遍历继续通过另一个孩子节点。[0007]在一些情况下,每一个节点可以具有多于两个的孩子节点。此外,因为通常在场景的一部分中存在比另一部分中更多的三角形,所以层次树很少是平衡的。附图说明[0008]针对以下附图描述了一些实施例:[0009]图1是根据一个实施例部分开发的场景图的示例;[0010]图2是针对一个实施例的流程图;[0011]图3是针对另一个实施例的流程图;[0012]图4是根据一个实施例的处理系统的框图;[0013]图5是根据一个实施例的处理器的框图;[0014]图6是根据一个实施例的图形处理器的框图;[0015]图7是根据一个实施例的图形处理引擎的框图;[0016]图8是图形处理器的另一实施例的框图;[0017]图9描绘了根据一个实施例的线程执行逻辑;[0018]图10是根据一些实施例的图形处理器指令格式的框图;[0019]图11是图形处理器的另一实施例的框图;[0020]图12A是根据一些实施例的图形处理器命令格式的框图;[0021]图12B是说明根据一些实施例的图形处理器命令序列的框图;[0022]图13描绘了根据一些实施例的示例性图形软件架构;[0023]图14是说明根据一些实施例的IP核心开发系统的框图;以及[0024]图15是示出根据一些实施例的示例性片上系统集成电路的框图。具体实施方式[0025]详细级别节点可以保存holdin层次包围体、对象标识符、在其处发生详细级别之间的转换的距离。当在层次中遇到详细节点级别时,可以使用距离值来选择详细级别。有时,因为不能获得优选的级别,所以不同的详细级别被加载。可以在寄存器中标记不同的级另IJ。然后,针对后续的帧使用正确的级别。在一些情况下,可以对光线提供偏置以覆盖详细级别选择。[0026]基于对象到观察者的距离,详细级别LOD管理替代不同的模型。更远的对象可以由具有更简单的几何形状和更简单的材料的版本来代替,从而加速其渲染。利用传统的光栅化,应用基于观察距离来确定针对对象的适当的详细级别,并且然后仅渲染这一版本的对象。[0027]当照相机移动时,不同版本的对象被显示,并且这会导致突然跳出,在该情况下,详细级别的级别之间的转换是可视的。当在转换区域中时,通过渲染两个对象且在其之间进行混合以使得改变逐渐发生,这一突然跳出可以被减轻到一定程度。在使用镂空掩模或区域点画模式来控制来自能够被看见的对象的每一个版本的像素百分比的同时,使用屏幕门透明度可以最好地完成这一混合。[0028]然而,在光线追踪的情况下,能够渲染广泛范围的效果,例如阴影、折射和反射,其中当光线从照相机经过到光源时,该光线会弹跳横跨多个对象。在这些场景下,针对该对象的详细级别取决于从照相机到对象的光线长度,以及沿着该路径的相交表面的本质。例如,与源自单向反射表面的光线相比,来自漫反射表面的光线可以选择更粗糙的详细级别。因此,利用光线追踪,可以在每光线的基础上选择详细级别。[0029]在一些实施例中,利用光线追踪的这样的详细级别技术可以使得能够修改诸如层次包围体的光线追踪加速结构以及光线遍历算法。沿着该光线的距离用于选择详细级别的级别,以便其在像素或子像素级别如果抗锯齿)自然地发生并且也用于阴影、折射和反射。针对具有与其相关联的详细级别的实例化对象,也自然地起作用。[0030]在光线追踪中,加速结构可以加速发现与光线相交的三角形的过程。常见的加速结构是层次包围体。针对层次包围体的包围盒来测试光线,并且其或者未命中或者与一个或多个孩子节点相交。光线被针对层次包围体节点递归地遍历和测试,直到发现了保存三角形子集的叶子节点或者没有另外的节点需要被测试。[0031]针对包围盒的测试使用光线的参数表示,并且“t”值是从光线的源到包围盒的交叉点的距离。[0032]详细级别LOD节点类型被引入到层次包围体中,其具有与不同的详细级别相对应的若干孩子节点。详细级别节点的包围盒是所有其孩子的组合包围盒。详细级别节点保存对象标识符和短距离表格,该短距离表格保存在其处发生详细级别的级别之间的转换的光线距离值“t”。可以从近到远对这些进行排序,并且条目0覆盖0.0到表示详细级别[0]的范围[0]的范围间隔,条目1覆盖范围[0]到范围[1]的范围间隔等等,并且针对每一个间隔,存在到要使用的子层次包围体的孩子指针。用户设置这些范围值,并且当光线被从着色器引出时,还可以向“t”值添加偏置。[0033]根据需要,经偏置的“t”值偏置详细级别。例如,当光线被从漫反射表面引出时,可以使用较大的偏置值。[0034]当光线与详细级别节点相交时,与该相交相对应的“t”值用于选择孩子节点中的一个以用于继续遍历。可选地,如果对象太远,则可以终止该遍历。通过将“t”值与范围表格进行比较来选择将使用哪一个详细级别(如果存在的话并且因此要使用哪一个孩子节点,来完成对用于遍历的孩子节点的选择。[0035]源自相邻像素或样本的光线可能在不同的范围与详细级别对象相交,并且如果这些范围横跨详细级别转换级别,则所渲染的对象是详细级别的两个或更多个级别的混合。详细级别偏置可以被随机地改动jitter以跨转换区域添加更多的可变性。[0036]图1示出了仅仅是示例性的场景图10。其包括根节点12,根节点12包含三角形的整个层次包围体。根节点12可以被分成孩子节点14a和14b,其每一个仅包括在根节点12内包括的三角形的一部分。然后,孩子节点14a可以被分成孩子节点16c和16d,且孩子节点14b可以被分成孩子节点16a和16b。[0037]孩子节点16c还可以与详细级别的多个级别18、20等相关联。因而,详细级别的级别20指向孩子节点16。实际上,该详细级别实际上被加载,这是因为,期望被加载的LOD级另IJ,例如详细级别的级别18,例如因为其不可用而可能尚未被加载。[0038]然后,孩子节点16c可以被分成子孩子节点22a和22b,根据常规,一直向下到叶子节点24。[0039]如果对象远离观察者,则观察者将看不见同样多的细节。因此,更简单的表示可以用于描绘远离观察者的对象,包括其形状和材料。使用这样的简化的描绘,更迅速地进行渲染。[0040]层次包围体空间中的内部节点,例如矩形形状的内部节点,包含针对其空间的包围体坐标以及指向其两个孩子节点的指针。叶子节点具有指向该叶子节点包含的三角形列表的指针。[0041]然后,常规地,存在内部节点和叶子节点。在此添加新的节点,被称为详细级别节点。当遇到详细级别节点时,检查确定该节点体距离观察者有多远,其被表示为沿着光线的“t”。然后,“t”用于选择在选中的节点之下的可供替换的节点组中的一组中的一个,以便距离对象越远,其表示就越粗糙。范围表格保存“t”,其告诉何时在详细级别值之间发生转换。[0042]每一个详细级别节点指向针对该光线的详细级别的多个不同的可能级别。然后,选择这些可能的详细级别中的一个并且该序列按照该方式继续进行。指针的另一端仅仅是层次包围体的另一部分。[0043]不是基于光线是否与该节点表示的包围体相交来选择光线与其相交的孩子,硬件实际上检查对象离眼睛多远并基于该范围来选择适当的详细级别。因此,场景图包括内部、叶子以及详细级别节点。[0044]然后,定义如何计算该范围是令人期望的,并且存在着色器可以对范围进行偏置的方式,以创建不同的效果。可以在每光线的基础上测试该范围。范围值可以包括如同直接视线的反射路径长度。在一些情况下,可以记录哪一个详细级别实际上已经被使用。在一些实施例中,可以覆盖对详细级别的自然选择,以获得实际上被选择的详细级别。[0045]当加载详细级别时,存在若干选项。在渲染开始之前,人们可以充分定义场景,在该情况下,每一个详细级别作为场景的一部分存在于存储器中。因为对遥远对象的高度详细的表示会不必要地增加存储器使用,并且虽然这样,该对象甚至会以不可见结束,所以这消耗了许多存储器印记。[0046]用户将范围表格设置为说明如果从眼睛到对象的包围体的距离在该值的范围之内,则使用该对象表示。[0047]用户决定何时在表示之间转换。有时,所使用的详细级别是当前可用的详细级别,而不是所选择的详细级别。[0048]软件可以确定在每帧之后,使用特定级别通常较低分辨率而不是比所选择的更优选通常更高分辨率)。因此,然后软件可以将正确的级别通常更好的分辨率加载到下一帧中。这允许更优雅的转换。[0049]另一选项是仅当实际上需要时才加载详细级别的情况。这依赖于虚拟存储器系统。当光线命中详细级别节点并且所选择的详细级别不在物理存储器中时,在产生页面故障的虚拟存储器中对其进行存取。然后,该节点被立即加载并且该节点变为在物理上存在。该方式的代价在于延迟会在视觉描绘中引起扫描残迹。[0050]在慵懒加载中,当硬件到达其想要存取的详细级别并且硬件不等待其被加载时,在数据结构中做出期望的详细级别不可用的标记。如果该节点不可用,则该流会去到与优选的但是没有扫描残迹的详细级别相比不同的且通常更低或更差质量的详细级别。但是,在下一帧中,使用数据结构中的标记加载本应该使用的新的详细级别,因为需要更多的时间将其准备好。[0051]根据另一实施例,可以使用模式比特用于光线优化。从观察者的眼部中射出光线到场景中以找到可以看见的最近的交叉。还向外发送光线以进行反射、折射和阴影。[0052]以阴影光线为例,如果对象的一部分在阴影中,则将不会有太多的细节明显。从而,通过从该光线的交叉点向场景中的每一个光源发送光线来实现阴影光线。如果阴影光线在其到光源的路上与某一东西相交,则没有来自该源的光可以到达该交叉点且从而该交叉点位于阴影中。[0053]如果阴影光线在其命中光源之前没有命中场景中的任何东西,则这意味着在来自该光的交叉点处没有阴影。[0054]利用详细级别节点,人们可以选择适合该范围的详细级别。人们可以针对模型内所选择的详细级别的该范围来测试任何阴影光线,或者人们可以简单地说其是阴影并且因此将使用具有较少三角形的较低的详细级别。从而,对于类似阴影、反射和折射的事物,检测可以被加速。[0055]具有不同类型的阴影光线也是可能的。针对每一光线类型说明的模式覆盖正常的详细级别选择并且代而使用该特定的详细级别选择。[0056]典型地,针对对象存在较少数量的范围间隔,例如四个范围间隔,给出5个不同的间隔,其中第5个是范围[3]到无穷大,并且意味着丢弃。可以向另外的寄存器提供针对每一个范围间隔和针对场景中的每一个唯一对象的比特。每次光线遍历到孩子时,在该寄存器中设置相对应的详细级别的级别比特。[0057]例如,如果在场景中存在256个对象,针对其正在针对四个详细级别进行详细级别选择,则该寄存器将存储1024个比特。然而,可以根据要支持的详细级别的数目和具有详细级别的唯一对象的数目来调整该比特的数目。[0058]图2中示出的针对详细级别节点的序列30可以以软件、固件和或硬件实现。在软件和固件实施例中,其可以通过在诸如磁、光学或半导体存储装置的一个或多个非暂时性计算机可读介质中存储的计算机执行指令来实现。例如,该序列可以以硬件实现,举几个例子,使用处理器、控制器、图形处理单元、加速器、或片上系统。[0059]序列30通过设置r或范围等于t或从观察者的距离加上详细级别(LOD偏置来开始,如在框32中所指示的。[0060]在菱形框34处的检查确定r是否小于该范围。如果为否,则在菱形框36处的检查确定这是否是详细级别的最后一级。如果为否,则读取下一个详细级别节点,如在框38中所指示的。[0061]回到菱形框34,如果r小于该范围,则记录实际上使用的详细级别的级别,如在框40中所指示的。读取详细级别孩子,如在框42中所指示的,并且然后遍历在该孩子之下的层次包围体BVH,如在框44中所指示的。[0062]在菱形框46处的检查确定节点堆栈是否为空。如果为是,则该流完成,如在框48中所指示的。否则,该节点从该堆栈弹出,如在框50中所指示的,并且从该节点起遍历该层次包围体,如在框52中所指示的。[0063]参考图3,用于实现模式比特的序列5可以使用软件、固件和或硬件来实现。在软件和固件实施例中,其可以通过在诸如磁、光学或半导体存储装置的一个或多个非暂时性计算机可读介质中存储的计算机执行指令实现。[0064]序列53通过识别光线类型开始,如在框54中所指示的。在菱形框56处的检查确定该类型是否等于覆盖LOD选择。如果为否,则该流终止。[0065]如果存在要求覆盖LOD选择的光线类型,则基于范围而忽略该LOD选择,如在框58中所指示的。然后,选择针对该光线类型的详细级别,如在框60中所指示的。在框62中,该流继续使用新的详细级别进行层次包围体遍历。[0066]图4是根据实施例的处理系统100的框图。在各种实施例中,系统100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单个处理器桌面系统、多处理器工作站系统、或具有大量处理器102或处理器核心107的服务器系统。在一个实施例中,系统100是被并入到片上系统(SoC集成电路的处理平台,用于在移动、手持或嵌入式设备中使用。[0067]系统100的实施例可以包括或被并入到基于服务器的游戏平台、游戏操作台中,包括游戏和媒体操作台、移动游戏操作台、手持游戏操作台、或在线游戏操作台。在一些实施例中,系统100是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统100还可以包括可佩戴设备、与可佩戴设备耦合、或被集成到可佩戴设备中,例如智能手表可佩戴设备、智能眼镜设备、增强现实设备、或虚拟现实设备。在一些实施例中,数据处理系统100是具有一个或多个处理器102和由一个或多个图形处理器108生成的图形接口的电视或机顶盒设备。[0068]在一些实施例中,一个或多个处理器102各自包括一个或多个处理器核心107,用于处理指令,所述指令在被执行时,执行针对系统和用户软件的操作。在一些实施例中,一个或多个处理器核心107中的每一个被配置成处理特定指令集109。在一些实施例中,指令集109可以便于实现复杂指令集计算CISC、精简指令集计算RISC、或经由非常长指令字VLIW的计算。多个处理器核心107可以各自处理不同的指令集109,其可以包括便于实现对其他指令集的仿真的指令。处理器核心107还可以包括其他处理设备,例如数字信号处理器DSP。[0069]在一些实施例中,处理器102包括高速缓存存储器104。根据架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,高速缓存存储器在处理器102的各种组件之间共享。在一些实施例中,处理器102还使用外部高速缓存例如,级别3L3高速缓存或最后一级高速缓存LLC未示出),使用已知的高速缓存一致性技术可以在处理器核心107之间共享该外部高速缓存。寄存器文件106被另外包含在处理器102中,其可以包括不同类型的寄存器,以存储不同类型的数据例如,整数寄存器、浮点寄存器、状态寄存器、以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器102的设计。[0070]在一些实施例中,处理器102耦合到处理器总线110以在处理器102与系统100中的其他组件之间发送诸如地址、数据、或控制信号的通信信号。在一个实施例中,系统100使用示例性的“集线器”系统架构,包括存储器控制器集线器116和输入输出(IO控制器集线器130。存储器控制器集线器116便于实现在存储器设备和系统100的其他组件之间的通信,而IO控制器集线器ICH130经由本地IO总线提供到IO设备的连接。在一个实施例中,存储器控制器集线器116的逻辑被集成在处理器中。[0071]存储器设备120可以是动态随机存取存储器DRAM、静态随机存取存储器SRAM设备、闪存设备、相变存储器设备、或具有适当性能以用作过程存储器的的某一其他存储器设备。在一个实施例中,存储器设备120可以操作为系统100的系统存储器,以存储数据122和指令121,用于在一个或多个处理器102执行应用或过程时使用。存储器控制器集线器116还与可选的外部图形处理器112耦合,其可以与处理器102中的一个或多个图形处理器108通信,以执行图形和媒体操作。[0072]在一些实施例中,ICH130使得外围设备能够经由高速IO总线连接到存储器设备120和处理器102。10外围设备包括但不限于音频控制器146、固件接口128、无线收发机126例如,Wi-Fi、蓝牙)、数据存储设备124例如,硬盘驱动、闪存等)、以及用于将传统例如,个人系统2PS2设备连接到系统的传统IO控制器140。一个或多个通用串行总线USB控制器142连接输入设备,例如键盘和鼠标144组合。网络控制器134还可以耦合到ICH130。在一些实施例中,高性能网络控制器未示出)耦合到处理器总线110。将明白的是,所示出的系统100是示例性的且不进行限制,还可以使用被不同配置的其他类型的数据处理系统。例如,IO控制器集线器130可以被集成到一个或多个处理器102中,或者存储器控制器集线器116和IO控制器集线器130可以被集成到分立的外部图形处理器中,例如外部图形处理器112。[0073]图5是具有一个或多个处理器核心202A-202N、集成存储器控制器214、以及集成图形处理器208的处理器200的实施例的框图。具有与本申请中的任何其他附图的元件相同的附图标记或名称的图5的这些元件可以以与本申请中的任何其他地方描述的方式类似的任何方式运行或工作,但是并不限于此。处理器200可以包括一直到且包含由虚线框表示的另外的核心202N的另外的核心。处理器核心202A-202N中的每一个包括一个或多个内部高速缓存单元204A-204N。在一些实施例中,每一个处理器核心还可以存取一个或多个共享高速缓存单元206。[0074]内部高速缓存单元204A-204N和共享高速缓存单元206表示处理器200中的高速缓存存储器层次。高速缓存存储器层次可以包括每一个处理器核心中的至少一级指令和数据高速缓存以及一级或多级共享的中间级高速缓存,例如级2L2、级3L3、级4L4、或其他级的高速缓存,其中在外部存储器之前的最高级高速缓存被分类为LLC。在一些实施例中,高速缓存一致性逻辑维持在各种高速缓存单元206与204A-204N之间的一致性。[0075]在一些实施例中,处理器200还可以包括一组一个或多个总线控制器单元216以及系统代理核心210。一个或多个总线控制器单元216管理一组外围设备总线,例如一个或多个外围组件互连总线(例如,PCI、PCI快速)。系统代理核心210为各种处理器组件提供管理功能。在一些实施例中,系统代理核心210包括一个或多个集成存储器控制器214,以管理对各种外部存储设备未示出)的存取。[0076]在一些实施例中,处理器核心202A-202N中的一个或多个包括对同时多线程的支持。在这样的实施例中,系统代理核心210包括用于在多线程处理期间协调和操作核心202A-202N的组件。系统代理核心210可以另外包括功率控制单元PCU,其包括用于调整处理器核心202A-202N和图形处理器208的功率状态的逻辑和组件。[0077]在一些实施例中,处理器200另外包括用于执行图形处理操作的图形处理器208。在一些实施例中,图形处理器208与该组共享高速缓存单元206以及系统代理核心210耦合,包括一个或多个集成存储器控制器214。在一些实施例中,显示控制器211与图形处理器208耦合,以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器211可以是通过至少一个互连件与图形处理器耦合的单独的模块,或者可以集成在图形处理器208或系统代理核心210中。[0078]在一些实施例中,基于环的互连单元212用于耦合处理器200的内部组件。但是,可以使用可供替换的互连单元,例如点对点互连件、交换互连件、或其他技术,包括本领域公知的技术。在一些实施例中,图形处理器208经由IO链路213与环形互连件212耦合。[0079]示例性IO链路213表示多个种类的IO互连件中的至少一个,包括便于实现在各种处理器组件和诸如eDRAM模块的高性能嵌入式存储器模块218之间的通信的封装上IO互连件。在一些实施例中,处理器核心202A-202N中的每一个和图形处理器208使用嵌入式存储器模块218作为共享的最后一级高速缓存。[0080]在一些实施例中,处理器核心202A-202N是执行相同指令集架构的同构核心。在另一实施例中,处理器核心202A-202N在指令集架构(ISA方面是异构的,其中处理器核心202A-N中的一个或多个执行第一指令集,而其他核心中的至少一个执行第一指令集的子集或另一指令集。在一个实施例中,处理器核心202A-202N在微架构方面是异构的,其中具有相对较高功耗的一个或多个核心与具有较低功耗的一个或多个功率核心耦合。此外,处理器200可以被在一个或多个芯片上或者被实现为除了其他组件之外具有所描绘的组件的SoC集成电路。[0081]图6是图形处理器300的框图,其可以是分立的图形处理单元,或者可以是与多个处理核心集成的图形处理器。在一些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射的IO接口并且使用被放置在处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于存取存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和或系统存储器的接□〇[0082]在一些实施例中,图形处理器300还包括用于将显示输出数据驱动到显示设备320的显示控制器302。显示控制器302包括用于一个或多个重叠平面的硬件,以显示并组合多层视频或用户接口单元。在一些实施例中,图形处理器300包括视频编解码引擎306,用于对媒体进行编码、解码、或者从一个或多个媒体编码格式或者在一个或多个媒体编码格式之间对媒体进行转码,上述媒体编码格式包括但不限于诸如MPEG-2的运动图像专家组MPEG格式、诸如H.264MPEG-4AVC的高级视频编码AVC格式,以及电影电视工程师协会SMPTE421MVC-1,诸如JPEG和运动JPEGMJPEG格式的联合图像专家组JPEG格式。[0083]在一些实施例中,图形处理器300包括用于执行二维(2D光栅化操作的块图像传输BLIT引擎304,例如包括比特边界块传输。然而,在一个实施例中,使用图形处理引擎GPE310的一个或多个组件来执行2D图形操作。在一些实施例中,图形处理引擎310是用于执行图形操作的计算引擎,包括三维3D图形操作和媒体操作。[0084]在一些实施例中,GPE310包括用于执行3D操作的3D管线312,例如使用对3D基本形状例如,矩形、三角形等起作用的处理功能来渲染三维图像和场景。3D管线312包括在元件内执行各种任务和或产生到3D媒体子系统315的执行线程的可编程和固定功能元件。虽然3D管线312可以用于执行媒体操作,但是GPE310的实施例还包括特别用于执行媒体操作的媒体管线316,例如视频后处理和图像增强。[0085]在一些实施例中,媒体管线316包括用于代替或代表视频编解码引擎306执行一个或多个专门媒体操作的固定功能或可编程逻辑单元,例如视频解码加速、视频去交织、以及视频编码加速。在一些实施例中,媒体管线316另外包括线程产生单元,用于产生用于在3D媒体子系统315上执行的线程。所产生的线程执行针对在3D媒体子系统315中包含的一个或多个图形执行单元上的媒体操作的计算。[0086]在一些实施例中,3D媒体子系统315包括用于执行由3D管线312和媒体管线316产生的线程的逻辑。在一个实施例中,管线向3D媒体子系统315发送线程执行请求,其包括用于向可用的线程执行资源仲裁和分派各种请求的线程分派。执行资源包括用于处理3D和媒体线程的图形执行单元的阵列。在一些实施例中,3D媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括共享存储器,包括寄存器和可寻址存储器,以在线程之间共享数据并且存储输出数据。[0087]图7是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,GPE410是图6中示出的GPE310的版本。图7中具有与本申请中的任何其他附图的元件相同的附图标记或名称)的元件可以以与在本申请中的别处描述的类似的任何方式操作或起作用,但不限于此。[0088]在一些实施例中,GPE410与命令流转化器403耦合,命令流转换器403向GPE3D管线412和媒体管线416提供命令流。在一些实施例中,命令流转化器403耦合到存储器,该存储器可以是系统存储器、或一个或多个内部高速缓存存储器和共享高速缓存存储器。在一些实施例中,命令流转化器403从存储器接收命令并且向3D管线412和或媒体管线416发送命令。命令是从环形缓冲器获取的指示,其存储用于3D管线412和媒体管线416的命令。在一个实施例中,环形缓冲器可以另外包括存储多个命令批次的批次命令缓冲器。3D管线412和媒体管线416通过经由相应管线中的逻辑执行操作或者通过向执行单元阵列414分派一个或多个执行线程来处理命令。在一些实施例中,执行单元阵列414是可调节的,使得该阵列基于GPE410的目标功率和性能等级而包括可变数目的执行单元。[0089]在一些实施例中,采样引擎430与存储器例如,高速缓存存储器或系统存储器和执行单元阵列414耦合。在一些实施例中,采样引擎430提供针对执行单元阵列414的存储器存取机制,其允许执行阵列414从存储器读取图形和媒体数据。在一些实施例中,采样引擎430包括用于针对媒体执行专门化图像采样操作的采样引擎430。[0090]在一些实施例中,采样引擎430中的专门化媒体采样逻辑包括去噪声去交织模块432、运动估计模块434、以及图像缩放和过滤模块436。在一些实施例中,去噪声去交织模块432包括用于对解码的视频数据执行一个或多个去噪声或去交织算法的逻辑。去交织逻辑将交织的视频内容的交变场组合到单个视频帧中。去噪声逻辑减小数据噪声或者将数据噪声从视频和图像数据中移除。在一些实施例中,去噪声逻辑和去交织逻辑是运动自适应的并且基于在视频数据中检测的运动量而使用空间或时间滤波。在一些实施例中,去噪声去交织模块432包括专用运动检测逻辑例如,在运动估计引擎434中)。[0091]在一些实施例中,运动估计引擎434通过执行诸如运动向量估计和对视频数据的预测的视频加速功能来针对视频操作提供硬件加速。运动估计引擎确定描述在连续视频帧之间的图像数据的变换的运动向量。在一些实施例中,图形处理器媒体编解码器使用视频运动估计引擎434来在宏块级别对视频执行操作,否则利用通用处理器执行时可能在计算上过于密集。在一些实施例中,一般而言,运动估计引擎434对于图形处理器组件是可用的以辅助对视频数据中的运动的方向或幅度敏感或自适应的视频解码和处理功能。[0092]在一些实施例中,图像缩放和过滤模块436执行图像处理操作以增强所生成的图像和视频的视觉质量。在一些实施例中,在向执行单元阵列414提供数据之前的采样操作期间,缩放和过滤模块436处理图像和视频数据。[0093]在一些实施例中,GPE410包括数据端口444,其向图形子系统提供另外的机制以存取存储器。在一些实施例中,数据端口444便于实现针对操作的存储器存取,包括渲染目标写入、常数缓冲器读取、中间结果存储器空间读取写入、以及媒体表面存取。在一些实施例中,数据端口444包括用于高速缓存对存储器的存取的高速缓存存储器空间。高速缓存存储器可以是单个数据高速缓存或被分成用于经由数据端口存取存储器的多个子系统的多个高速缓存例如,渲染缓冲器高速缓存、常数缓冲器高速缓存等)。在一些实施例中,在执行单元阵列414中的执行单元上执行的线程经由耦合GPE410的每一个子系统的数据分配互连件交换消息来与数据端口进行通信。[0094]图8是图形处理器500的另一实施例的框图。图8中具有与本申请中的任何其他附图的元件相同的附图标记或名称)的元件可以以与在本申请中的别处描述的类似的任何方式操作或起作用,但不限于此。[0095]在一些实施例中,图形处理器500包括环形互连件502、管线前端504、媒体引擎537、以及图形核心580A-580N。在一些实施例中,环形互连件502将图形处理器耦合到其他处理单元,包括其他图形处理器或一个或多个通用处理器核心。在一些实施例中,图形处理器是在多核心处理系统中集成的许多处理器中的一个。[0096]在一些实施例中,图形处理器500经由环形互连件502接收一批命令。进来的命令由在管线前端504中的命令流转化器503解释。在一些实施例中,图形处理器500包括用于经由图形核心580A-580N执行3D几何处理和媒体处理的可调整执行逻辑。对于3D几何处理命令,命令流转化器503向几何管线536供应命令。针对至少一些媒体处理命令,命令流转化器503向视频前端534供应命令,视频前端534与媒体引擎537耦合。在一些实施例中,媒体引擎537包括用于视频和图像后处理的视频质量引擎VQE和用于提供硬件加速媒体数据编码和解码的多格式编码解码MFX533引擎。在一些实施例中,几何管线536和媒体引擎537各自针对由至少一个图形核心580A提供的线程执行资源来生成执行线程。[0097]在一些实施例中,图形处理器500包括以模块化核心580A-580N有时被称为核心切片为特征的可调整线程执行资源,各自具有多个子核心550A-550N、560A-560N有时被称为核心子切片)。在一些实施例中,图形处理器500可以具有任何数目的图形核心580A至580N。在一些实施例中,图形处理器500包括具有至少第一子核心550A和第二核心子核心560A的图形核心580A。在其他实施例中,图形处理器是具有单个子核心例如,550A的低功率处理器。在一些实施例中,图形处理器500包括多个图形核心580A-580N,各自包括一组第一子核心550A-550N以及一组第二子核心560A-560N。该组第一子核心550A-550N中的每一子核心包括至少第一组执行单元552A-552N以及媒体纹理采样器554A-554N。该组第二子核心560A-560N中的每一子核心包括至少第二组执行单元562A-562N以及采样器564A-564N。在一些实施例中,每一个子核心550A-550N、560A-560N共享一组共享资源570A-570N。在一些实施例中,共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源还可以被包含在图形处理器的各个实施例中。[0098]图9说明了包含在GPE的一些实施例中使用的处理器单元阵列的线程执行逻辑600。图9中具有与本申请中的任何其他附图的元件相同的附图标记或名称的元件可以以与在本申请中的别处描述的类似的任何方式操作或起作用,但不限于此。[0099]在一些实施例中,线程执行逻辑600包括像素着色器602、线程分派器604、指令高速缓存606、包含多个执行单元608A-608N的可调整执行单元阵列、采样器610、数据高速缓存612、以及数据端口614。在一个实施例中,所包含的组件经由链接到组件中的每一个的互连结构进行互连。在一些实施例中,线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610、以及执行单元阵列608A-608N中的一个或多个到存储器的一个或多个连接,例如系统存储器或高速缓存存储器。在一些实施例中,每一个执行单元例如,608A是能够执行多个同时线程并且针对每一个线程并行处理多个数据单元的单独的向量处理器。在一些实施例中,执行单元阵列608A-608N包括任何数目的单独的执行单元。[0100]在一些实施例中,执行单元阵列608A-608N主要用于执行“着色器”程序。在一些实施例中,阵列608A-608N中的执行单元执行包括对许多标准3D图形着色器指令的本地支持的指令集,使得利用最小转换来执行来自图形库例如,直接3D和OpenGL的着色器程序。执行单元支持顶点和几何处理例如,顶点程序、几何程序、顶点着色器)、像素处理例如,像素着色器、片段着色器和通用处理例如,计算和媒体着色器)。[0101]执行单元阵列608A-608N中的每一个执行单元对数据元素的阵列进行操作。数据元素的数目是“执行大小”、或针对指令的信道数目。执行信道是用于数据元素存取、掩码、指令中的流控制的执行逻辑单元。信道的数目可以独立于针对特定图形处理器的物理算术逻辑单元ALU或浮点单元FPU的数目。在一些实施例中,执行单元608A-608N支持整数和浮点数据类型。[0102]执行单元指令集包括单指令多数据SMD指令。各种数据元素可以作为封装数据类型被存储在寄存器中并且执行单元将基于元素的数据大小来处理各种元素。例如,当对256比特宽的向量操作时,256比特的向量被存储在寄存器中并且执行单元将该向量操作为四个单独的64比特封装数据元素(四倍长字QW大小数据元素)、8个单独的32比特封装数据元素双字DW大小数据元素)、16个单独的16比特封装数据元素字⑼大小数据元素)、或32个单独的8比特数据元素字节⑻大小数据元素)。但是,不同的向量宽度和寄存器大小是可能的。[0103]在线程执行逻辑600中包括一个或多个内部指令高速缓存例如,606以高速缓存用于执行单元的线程指令。在一些实施例中,包含一个或多个数据高速缓存例如,612以在线程执行期间高速缓存线程数据。在一些实施例中,包含采样器610以提供用于3D操作的纹理采样和用于媒体操作的媒体采样。在一些实施例中,采样器610包括在向执行单元提供采样数据之前在采样过程期间处理纹理或媒体数据的专门化纹理或媒体采样功能。[0104]在执行期间,图形和媒体管线经由线程产生和分派逻辑向线程执行逻辑600发送线程发起请求。在一些实施例中,线程执行逻辑600包括仲裁来自图形和媒体管线的线程发起请求以及在一个或多个执行单元608A-608N上实例化所请求的线程的本地线程分派器604。例如,几何管线(例如,图8的536向线程执行逻辑600图9分派顶点处理、细分、或几何处理线程。在一些实施例中,线程分派器604还可以处理来自执行着色器程序的运行时线程产生请求。[0105]一旦一组几何对象已经被处理并被光栅化成像素数据,则调用像素着色器602以进一步计算输出信息并使得结果被写入到输出表面例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。在一些实施例中,像素着色器602计算要跨光栅化对象并入的各种顶点插入的值。在一些实施例中,然后,像素着色器602执行应用程序接口(API供应的像素着色器程序。为了执行该像素着色器程序,像素着色器602经由线程分派器604向执行单元(例如,608A分派线程。在一些实施例中,像素着色器602使用采样器610中的纹理采样逻辑来存取存储在存储器中的纹理地图中的纹理数据。对纹理数据和输入几何数据的算术运算针对每一个几何片段来计算像素颜色数据,或丢弃来自进一步处理的一个或多个像素。[0106]在一些实施例中,数据端口614提供存储器存取机制,以供线程执行逻辑600向存储器输出经处理的数据以在图形处理器输出管线上进行处理。在一些实施例中,数据端口614包括或耦合到一个或多个高速缓存存储器例如,数据高速缓存612以高速缓存用于经由数据端口的存储器存取的数据。[0107]图10是说明根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框说明了一般在执行单元指令中包含的分量,而虚线包括可选的或仅在指令的子集中包含的分量。在一些实施例中,所描述和说明的指令格式700是宏指令,因为他们是向执行单元供应的指令,与一旦被处理才从指令解码产生宏操作的指令形成对比。[0108]在一些实施例中,图形处理器执行单元在本地支持128比特格式710的指令。基于所选择的指令、指令选项、以及操作数数目,64比特的压缩指令格式730可以用于一些指令。本地128比特格式710提供了到所有指令选项的存取,而一些选项和操作被限制在64比特格式730。在64比特格式730中可用的本地指令根据实施例变化。在一些实施例中,使用索引字段713中的一组索引值来部分地压缩指令。执行单元硬件基于索引值来引用一组压缩表格并且使用压缩表格输出来以128比特格式710重构本地指令。[0109]针对每一种格式,指令操作码712定义执行单元要执行的操作。执行单元跨各操作数的多个数据元素并行地执行每一个指令。例如,响应于加法指令,执行单元跨表示纹理元件或图片元件的每一个颜色信道执行同时的加法运算。缺省地,执行单元跨操作数的所有数据信道执行每一个指令。在一些实施例中,指令控制字段714使能控制某些执行选项,例如信道选择例如,预测)和数据信道顺序例如,调配)。对于128比特指令710,执行大小字段716限制将被并行执行的数据信道的数目。在一些实施例中,执行大小字段716不能够在64比特压缩指令格式730中使用。[0110]一些执行单元指令具有多达三个操作数,包括两个源操作数,srcO720和srcl722,以及一个目的地718。在一些实施例中,执行单元支持双目的地指令,其中目的地中的一个被隐含。数据操纵指令可以具有第三源操作数例如,SRC2724,其中指令操作码712确定源操作数的数目。指令的最后一个源操作数可以是利用指令传递的中间(例如,硬编码值。[0111]在一些实施例中,128比特指令格式710包括指定例如是使用直接寄存器寻址模式还是使用间接寄存器寻址模式的存取地址模式信息726。当使用直接寄存器寻址模式时,一个或多个操作数的寄存器地址由指令710中的比特直接提供。[0112]在一些实施例中,128比特指令格式710包括存取地址模式字段726,其指定针对指令的地址模式和或存取模式。在一个实施例中,存取模式用于定义针对指令的数据存取对齐。一些实施例支持包括16字节对齐的存取模式和1字节对齐的存取模式的存取模式,其中存取模式的字节对齐确定指令操作数的存取对齐。例如,当在第一模式中时,指令710可以使用针对源和目的地操作数的字节对齐寻址,且当在第二模式下时,指令710可以针对所有的源和目的地操作数使用16字节对齐寻址。[0113]在一个实施例中,存取地址模式字段726的地址模式部分确定指令是使用直接寻址还是使用间接寻址。当使用直接寄存器寻址模式时,指令710中的比特直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可以基于指令中的地址寄存器值和地址立即数字段来计算一个或多个操作数的寄存器地址。[0114]在一些实施例中,基于操作码712比特字段来对指令进行分组以简化操作码解码740。对于8比特操作码,比特4、5和6允许执行单元确定操作码的类型。所示出的精确操作码分组仅仅是示例。在一些实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令例如,移动moV、比较cmp。在一些实施例中,移动和逻辑组742共享5个最重要比特MSB,其中移动mov指令为OOOOxxxxb形式且逻辑指令为OOOlxxxxb形式。流控制指令组744例如,调用、跳转(jmp包括00IOxxxxb例如,0x20形式的指令。混杂的指令组746包括指令的混合,包括OOllxxxxb例如,0x30形式的同步指令例如,等待、发送)。并行数学指令组748包括OlOOxxxxb例如0x40形式的分量方式算术指令例如,加法、乘法mul。并行数学组748跨数据信道并行地执行算术运算。向量数学组750包括OlOlxxxxb例如,0x50形式的算术指令例如,dp4。向量数学组对向量操作数执行诸如点乘计算的算术运算。[0115]图11是图形处理器800的另一实施例的框图。图11中具有与本申请中的任何其他附图的元件相同的附图标记或名称)的元件可以以与在本申请中的别处描述的类似的任何方式操作或起作用,但不限于此。[0116]在一些实施例中,图形处理器800包括图形管线820、媒体管线830、显示引擎840、线程执行逻辑850、以及渲染输出管线870。在一些实施例中,图形处理器800是包括一个或多个通用处理核心的多核心处理系统中的图形处理器。图形处理器由到一个或多个控制寄存器未示出)的寄存器写入或通过经由环形互连件802向图形处理器800发布的命令进行控制。在一些实施例中,环形互连件802将图形处理器800耦合到其他处理组件,例如其他图形处理器或通用处理器。来自环形互连件802的命令由命令流转化器803解释,其向图形管线820或媒体管线830的单独组件供应指令。[0117]在一些实施例中,命令流转化器803指导从存储器读取顶点数据并执行由命令流转化器803提供的顶点处理命令的顶点获取器805的操作。在一些实施例中,顶点获取器805向顶点着色器807提供顶点数据,其执行坐标空间转换以及对每一个顶点的照明操作。在一些实施例中,顶点获取器805和顶点着色器807通过经由线程分派器831向执行单元852A、852B分派执行线程来执行顶点处理指令。[0118]在一些实施例中,执行单元852A、852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。在一些实施例中,执行单元852A、852B具有特定于每一个阵列或在阵列之间共享的附接的Ll高速缓存851。高速缓存可以被配置为数据高速缓存、指令高速缓存、或被划分以在不同的分区中包含数据和指令的单个高速缓存。[0119]在一些实施例中,图形管线820包括用于执行3D对象的硬件加速曲面细分的曲面细分组件。在一些实施例中,可编程外壳着色器811配置曲面细分操作。可编程域着色器817提供对曲面细分输出的后端评估。曲面细分器813在外壳着色器811的指示下操作且包含用于基于被提供为到图形管线820的粗糙几何模型来生成一组详细几何对象的专用逻辑。在一些实施例中,如果未使用曲面细分,则可以绕过曲面细分组件811、813、817。[0120]在一些实施例中,完整的几何对象可以经由被分派给执行单元852A、852B的一个或多个线程由几何着色器819处理或可以直接继续到限幅器829。在一些实施例中,几何着色器对整个几何对象进行操作,而不是如在图形管线的先前阶段中对顶点或顶点的补块进行操作。如果曲面细分被禁用,则几何着色器819从顶点着色器807接收输入。在一些实施例中,几何着色器819可以由几何着色器程序编程以在曲面细分单元被禁用的情况下执行几何曲面细分。[0121]在光栅化之前,限幅器829处理顶点数据。限幅器829可以是固定功能限幅器或具有限幅和几何着色器功能的可编程限幅器。在一些实施例中,渲染输出管线870中的光栅化器深度873分派像素着色器,以将几何对象转换成其每像素表示。在一些实施例中,像素着色器逻辑被包含在线程执行逻辑850中。在一些实施例中,应用可以绕过光栅化器873并经由流输出单元823存取未被光栅化的顶点数据。[0122]图形处理器800具有互连总线、互连结构、或允许数据和消息在处理器的主要组件之间传递的某一其他互连机制。在一些实施例中,执行单元852A、852B和相关联的高速缓存851、纹理和媒体采样器854、以及纹理采样器高速缓存858经由数据端口856互连,以执行存储器存取并且与处理器的渲染输出管线组件进行通信。在一些实施例中,采样器854,高速缓存851、858和执行单元852A、852B各自具有单独的存储器存取路径。[0123]在一些实施例中,渲染输出管线870包含将基于顶点的对象转换成相关联的基于像素的表示的光栅化器和深度检测组件873。在一些实施例中,光栅化器逻辑包括用于执行固定功能三角形和直线光栅化的开窗器掩蔽器单元。在一些实施例中,相关联的渲染高速缓存878和深度高速缓存879也是可用的。像素操作组件877对数据执行基于像素的操作,虽然在一些实例中,与2D操作相关联的像素操作(例如,具有混合的比特块图像传输)由2D引擎841执行,或者在显示时间由使用重叠显示平面的显示控制器843替代。在一些实施例中,共享L3高速缓存875对所有图形组件可用,这允许在不使用主系统存储器的情况下共享数据。[0124]在一些实施例中,图形处理器媒体管线830包括媒体引擎837和视频前端834。在一些实施例中,视频前端834从命令流转化器803接收管线命令。在一些实施例中,媒体管线830包括单独的命令流转化器。在一些实施例中,视频前端834在向媒体引擎837发送媒体命令之前处理该命令。在一些实施例中,媒体引擎837包括线程产生功能,用于产生线程以经由线程分派器831向线程执行逻辑850进行分派。[0125]在一些实施例中,图形处理器800包括显示引擎840。在一些实施例中,显示引擎840在处理器800外部且经由环形互连件802或某一其他互连总线或结构与图形处理器耦合。在一些实施例中,显示引擎840包括2D引擎841和显示控制器843。在一些实施例中,显示引擎840包含能够独立于3D管线操作的专用逻辑。在一些实施例中,显示控制器843与显示设备未示出)耦合,其可以是系统集成显示设备,如在膝上型计算机中,或经由显示设备连接器附接的外部显示设备。[0126]在一些实施例中,图形管线820和媒体管线830可配置成基于多个图形和媒体编程接口来执行操作并且不专用于任何一个应用编程接口(API。在一些实施例中,用于图形处理器的驱动器软件将特定于具体图形或媒体库的API调用转换成能够由图形处理器处理的命令。在一些实施例中,针对来自科纳斯组织的开放图形库(OpenGL以及开放计算语言OpenCL、来自微软公司的直接3D库提供支持,或者可以向OpenGL和D3D二者提供支持。还可以针对开源计算机视觉库OpenCV提供支持。如果可以从未来API的管线向图形处理器的管线做出映射,则也可以支持具有可兼容3D管线的未来API。[0127]图12A是说明根据一些实施例的图形处理器命令格式900的框图。图12B是说明根据实施例的图形处理器命令序列910的框图。图12A中的实线框说明了在图形命令中一般包含的分量而虚线框包含可选的或仅在图形命令的子集中包含的分量。图12A中的示例性图形处理器命令格式900包括用于标识命令的目标客户端902的数据字段、命令操作码操作码904、以及针对命令的相关数据906。子操作码905和命令大小908也被包含在一些命令中。[0128]在一些实施例中,客户端902指定了处理命令数据的图形设备的客户端单元。在一些实施例中,图形处理器命令解析器检查每一个命令的客户端字段以调节对命令的进一步处理并且将命令数据路由到适当的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、植染单元、2D单元、以及媒体单元。每一个客户端单元具有处理命令的相对应的处理管线。一旦命令由客户端单元接收,则客户端单元读取操作码904,并且如果存在的话,则读取子操作码905,以确定要执行的操作。客户端单元使用在数据字段906中的信息执行命令。对于一些命令,预期明确的命令大小908以指定命令的大小。在一些实施例中,命令解析器基于命令操作码自动地确定至少一些命令的大小。在一些实施例中,经由多个双字来对齐命令。[0129]图12B中的流程图示出了示例性的图形处理器命令序列910。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用被示出为建立、执行、以及终止一组图形操作的命令序列版本。因为实施例不限于这些特定命令或该命令序列,所以仅为了示例的目的示出并描述了采样命令序列。此外,命令可以作为命令序列中的一批命令被发布,使得图形处理器将至少部分地同时处理该命令序列。[0130]在一些实施例中,图形处理器命令序列910可以以管线平齐命令912开始,以使得任何活动的图形管线完成针对管线的当前待决的命令。在一些实施例中,3D管线922和媒体管线924不同时操作。执行管线平齐以使得活动的图形管线完成任何待决的命令。响应于管线平齐,针对图形处理器的命令解析器将暂停命令处理,直到活动的绘画引擎完成待决的操作并且相关的读取高速缓存被无效。可选地,被标记为“脏”的渲染高速缓存中的任何数据能够被涌出(flush到存储器。在一些实施例中,管线平齐命令912可以用于管线同步或在将图形处理器放置到低功率状态之前使用。[0131]在一些实施例中,当命令序列要求图形处理器显式地在管线之间进行切换时,使用管线选择命令913。在一些实施例中,在发布管线命令之前,在执行上下文中仅要求管线选择命令913—次,除非该上下文是针对两个管线都发布命令。在一些实施例中,就在经由管线选择命令913进行管线切换之前需要管线平齐命令912。[0132]在一些实施例中,管线控制命令914配置用于操作的图形管线并且用于对3D管线922和媒体管线924进行编程。在一些实施例中,管线控制命令914针对活动的管线配置管线状态。在一个实施例中,管线控制命令914用于管线同步并且用于在处理一批命令之前将数据从活动的管线中的一个或多个高速缓存存储器中清除。[0133]在一些实施例中,返回缓冲器状态命令916用于配置针对相对应的管线的一组返回缓冲器以写入数据。一些管线操作要求分配、选择、或配置一个或多个返回缓冲器,在处理期间,操作将中间数据写入到这些返回缓冲器中。在一些实施例中,图形处理器还使用一个或多个返回缓冲器以存储输出数据并且执行跨线程通信。在一些实施例中,返回缓冲器状态916包括选择返回缓冲器的大小和数目以用于一组管线操作。[0134]基于用于操作的活动的管线,命令序列中的剩余命令不同。基于管线确定920,命令序列被裁剪成以3D管线状态930开始的3D管线922或在媒体管线状态940处开始的媒体管线924。[0135]用于3D管线状态930的命令包括针对顶点缓冲器状态、顶点元素状态、不变颜色状态、深度缓冲器状态、以及在3D原语命令被处理之前要配置的其他状态变量的3D状态设置命令。至少部分地基于使用中的特定3DAPI来确定这些命令的值。在一些实施例中,3D管线状态930命令还能够选择性地禁用或绕过某些管线元件,如果这些元件将不被使用。[0136]在一些实施例中,3D原语932命令用于提交3D原语以由3D管线处理。经由3D原语932命令被传递到图形处理器的命令和相关联的参数被转发至图形管线中的顶点获取功能。顶点获取功能使用3D原语932命令数据来生成顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。在一些实施例中,3D原语932命令用于经由顶点着色器对3D原语执行顶点操作。为了处理顶点着色器,3D管线922向图形处理器执行单元分派着色器执行线程。[0137]在一些实施例中,3D管线922经由执行934命令或事件被触发。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的“前进”或“踢”命令来触发执行。在一个实施例中,使用管线同步命令来触发命令执行,以通过图形管线涌出命令序列。3D管线将针对3D原语执行几何处理。一旦操作完成,则所产生的几何对象被光栅化并且像素引擎对所产生的像素上色。针对这些操作,还可以包括用于控制像素着色和像素后端操作的另外的命令。[0138]在一些实施例中,当执行媒体操作时,图形处理器命令序列910遵循媒体管线924路径。一般而言,针对媒体管线924的特定使用和编程方式取决于媒体或要执行的计算操作。在媒体解码期间,特定的媒体解码操作可以被卸载到媒体管线。在一些实施例中,媒体管线还可以被绕过并且媒体解码可以使用由一个或多个通用处理核心提供的资源而被整体地或部分地执行。在一个实施例中,媒体管线还包括用于通用图形处理器单元GPGPU操作的元件,其中图形处理器用于使用与图形原语的渲染不明确相关的计算着色器程序来执行SIMD向量操作。[0139]在一些实施例中,媒体管线924以与3D管线922类似的方式被配置。一组媒体管线状态命令940被分派或放置在位于媒体对象命令942之前的命令队列中。在一些实施例中,媒体管线状态命令940包括用于配置将用于处理媒体对象的媒体管线元件的数据。这包括用于配置媒体管线中的视频解码和视频编码逻辑的数据,例如编码或解码格式。在一些实施例中,媒体管线状态命令940还支持使用指向包含一批状态设置的“间接”状态元素的一个或多个指针。[0140]在一些实施例中,媒体对象命令942向媒体对象供应指针以通过媒体管线进行处理。媒体对象包括包含要被处理的视频数据的存储器缓冲器。在一些实施例中,所有的媒体管线状态必须在发布媒体对象命令942之前是有效的。一旦管线状态被配置且媒体对象命令942被排成队列,媒体管线924就经由执行命令944或等同的执行事件例如,寄存器写入)被触发。然后,来自媒体管线924的输出可以被由3D管线922或媒体管线924提供的操作进行后处理。在一些实施例中,GPGPU操作被以与媒体操作类似的方式进行配置和执行。[0141]图13说明了根据一些实施例针对数据处理系统1000的示例性图形软件架构。在一些实施例中,软件架构包括图形应用1010、操作系统1020、以及至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器1032和一个或多个通用处理器核心1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。[0142]在一些实施例中,3D图形应用1010包含包括着色器指令1012的一个或多个着色器程序。着色器语言指令可以是高级着色器语言,例如高级着色器语言HLSL或OpenGL着色器语言(GLSL。应用还包括适合由通用处理器核心1034执行的机器语言的可执行指令1014。应用还包括由顶点数据定义的图形对象1016。[0143]在一些实施例中,操作系统1020是来自微软公司的微软⑧视窗⑧操作系统、专有的类UNIX操作系统、或使用Linux内核的变形的开源类UNIX操作系统。当直接3DAPI处于使用中时,操作系统1020使用前端着色器编译器1024来将HLSL中的任何着色器指令1012编译成较低级别的着色器语言。编译可以是即时JIT编译或应用可以执行着色器预编译。在一些实施例中,在3D图形应用1010的编译期间,高级着色器被编译成低级着色器。[0144]在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器1027,用于将着色器指令1012转换成硬件特定表示。当OpenGLAPI在使用中时,GLSL高级语言的着色器指令1012被传递至用户模式图形驱动器1026以进行编译。在一些实施例中,用户模式图形驱动器1026使用操作系统内核模式功能1028来与内核模式图形驱动器1029进行通信。在一些实施例中,内核模式图形驱动器1029与图形处理器1032通信以分派命令和指令。[0145]至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示码实现,其表示和或定义在诸如处理器的集成电路中的逻辑。例如,机器可读介质可以包括表示在处理器内的各种逻辑的指令。当由机器读取时,指令可以使得该机器制造逻辑以执行本申请中描述的技术。这样的表示,被称为“IP核”,是针对可以在有形的、机器可读介质上被存储为描述集成电路的结构的硬件模型的集成电路的可重用逻辑单元。可以向各种客户或生产设施供应硬件模型,其将硬件模型加载到生产集成电路的制造机器上。可以制造集成电路,使得该电路执行结合本申请中描述的任何实施例所描述的操作。[0M6]图14是说明可以用于生产用于执行根据实施例的操作的集成电路的IP核开发系统1100的框图。IP核开发系统1100可以用于生成可以被并入到较大设计的模块化的可重用设计,或者用于构造整个集成电路例如,SOC集成电路)。设计设施1130可以生成高级编程语言例如,CC++的IP核设计的软件仿真1110。软件仿真1110可以用于使用仿真模型1112来设计、测试和验证IP核的行为。仿真模型1112可以包括功能的、行为的、和或时序的仿真。然后,寄存器传输级®TL设计可以从仿真模型1112创建或合成。RTL设计1115是对硬件寄存器之间的数字信号流建模的集成电路的行为的抽象,包括使用建模的数字信号执行的相关联的逻辑。除了RTL设计1115之外,还可以创建、设计或合成在逻辑级别或晶体管级别的较低级别设计。从而,初始设计和仿真的特定细节可以改变。[0147]RTL设计1115或等同物可以进一步由设计设施合成到硬件模型1120中,其可以为硬件描述语言HDL,或物理设计数据的某一其他表示。可以进一步仿真或测试HDL,以验证IP核设计。可以使用非易失性存储器1140例如,硬盘、闪存、或任何非易失性存储介质)来存储IP核设计,以向第三方制造部门1165递送。可供替换地,可以通过有线连接1150或无线连接1160发送IP核设计。然后,制造部门1165可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可以被配置成执行根据本申请中描述的至少一个实施例的操作。[0148]图15是说明根据实施例的可以使用一个或多个IP核制造的示例性片上系统集成电路1200的框图。示例性集成电路包括一个或多个应用处理器1205例如,CPU、至少一个图形处理器1210,并且可以另外包括图像处理器1215和或视频处理器1220,其中的任何一个可以是来自相同的或多个不同的设计设施的模块化IP核。集成电路包括外围设备或总线逻辑,包括USB控制器1225、UART控制器1230、SPISDI0控制器1235、以及I2SI2C控制器1240。此外,集成电路可以包括耦合到一个或多个高分辨率多媒体接口(HDMI控制器1250和移动工业处理器接口(MIPI显示接口1255的显示设备1245。可以由包含闪存和闪存控制器的闪存子系统1260来提供存储装置。可以经由存储器控制器1265提供存储器接口以存取SDRAM或SRAM存储器设备。一些集成电路另外包括嵌入式安全引擎1270。[0149]此外,其他的逻辑或电路可以被包含在集成电路1200的处理器中,包括另外的图形处理器核心、外围设备接口控制器、或通用处理器核心。[0150]以下的条款和或示例涉及另外的实施例:[0151]—个示例性实施例可以是一种方法,包括在光线追踪期间使用硬件处理器来遍历加速结构,所述加速结构包括内部节点、叶子节点、和详细级别节点,并使用所述详细级别节点选择详细级别。该方法还可以包括:其中所述详细级别节点包括一距离,在该距离处在详细级别之间发生转换,并且所述详细级别节点指向多个不同的详细级别。该方法还可以包括:其中光线包括用于说明反射、折射或阴影的偏置值。该方法还可以包括:其中所述详细级别包括对象标识符。该方法还可以包括使用不同的详细级别而不是所选择的详细级另IJ。该方法还可以包括标记数据结构以指示在第一帧中使用不同的详细级别。该方法还可以包括在数据结构中使用标记,以在第二帧中选择所选择的详细级别。该方法还可以包括检测光线遍历用于阴影检测并且选择可供替换的详细级别。该方法还可以包括检测反射或折射并且基于光线是被反射还是被折射来选择详细级别。该方法还可以包括选择专用于每一光线的详细级别。[0152]另一示例性实施例可以是存储指令的至少一个非暂时性计算机可读介质,所述指令被执行以执行包括在光线追踪期间使用硬件处理器来遍历加速结构的序列,所述加速结构包括内部节点、叶子节点、和详细级别节点,并且使用所述详细级别节点来选择详细级另IJ。该介质可以包括:其中所述详细级别节点包括一距离,在该距离处在详细级别之间发生转换,并且所述详细级别节点指向多个不同的详细级别。该介质可以包括:其中光线包括用于说明反射、折射或阴影的偏置值。该介质可以包括:其中所述详细级别包括对象标识符。该介质可以包括:所述序列包括使用不同的详细级别而不是所选择的详细级别。该介质可以包括:所述序列包括标记数据结构以指示在第一帧中使用不同的详细级别。该介质可以包括:所述序列包括在数据结构中使用标记,以在第二帧中选择所选择的详细级别。该介质可以包括:所述序列包括检测光线遍历用于阴影检测并且选择可供替换的详细级别。该介质可以包括:所述序列包括检测反射或折射并且基于光线是被反射还是被折射来选择详细级别。该介质可以包括:所述序列包括选择专用于每一光线的详细级别。[0153]在另一示例中,实施例可以是在一种装置,包括在光线追踪期间用于遍历加速结构的硬件处理器,所述加速结构包括内部节点、叶子节点、和详细级别节点,使用所述详细级别节点来选择详细级别,以及耦合到所述处理器的存储器。该装置可以包括:其中所述详细级别节点包括一距离,在该距离处在详细级别之间发生转换,并且所述详细级别节点指向多个不同的详细级别。该装置可以包括:其中光线包括用于说明反射、折射或阴影的偏置值。该装置可以包括:其中所述详细级别包括对象标识符。该装置可以包括用于使用不同的详细级别而不是所选择的详细级别的处理器。该装置可以包括用于标记数据结构以指示在第一帧中使用不同的详细级别的处理器。该装置可以包括用于在数据结构中使用标记,以在第二帧中选择所选择的详细级别的处理器。该装置可以包括用于检测光线遍历用于阴影检测并且选择可供替换的详细级别的处理器。该装置可以包括用于检测反射或折射并且基于光线是被反射还是被折射来选择详细级别的处理器。该装置可以包括用于选择专用于每一光线的详细级别的处理器。[0154]本申请中描述的图形处理技术可以在各种硬件架构中实现。例如,图形功能可以被集成在芯片集中。可供替换地,可以使用分立的图形处理器。作为又一实施例,可以通过通用处理器,包括多核处理器,来实现图形功能。[0155]贯穿本说明书提及的“一个实施例”或“实施例”指的是结合在本公开中包含的至少一个实现中包含的实施例所描述的特定特征、结构或特性。从而,短语“一个实施例”或“在实施例中”的出现未必指代相同的实施例。此外,可以以不同于所描述的特定实施例的其他适当形式来创立具体的特征、结构或特性并且所有这样的形式可以被包含在本申请的权利要求书中。[0156]虽然已经描述了有限数目的实施例,但是本领域的熟练技术人员将明白对其的许多修改和变形。意在当落入本公开的真正精神和范围中时,所附权利要求书覆盖所有这样的修改和变形。

权利要求:1.一种方法,包括:在光线追踪期间使用硬件处理器来遍历加速结构,所述加速结构包括内部节点、叶子节点和详细级别节点;以及使用所述详细级别节点来选择详细级别。2.根据权利要求1所述的方法,其中,所述详细级别节点包括一距离,在所述距离处发生在详细级别之间的转换,并且所述详细级别节点指向多个不同的详细级别。3.根据权利要求2所述的方法,其中,光线包括用于说明反射、折射或阴影的偏置值。4.根据权利要求2所述的方法,其中,所述详细级别包括对象标识符。5.根据权利要求1所述的方法,包括使用不同的详细级别而不是选定的详细级别。6.根据权利要求5所述的方法,包括对数据结构做出标记以指示所述不同的详细级别被用在第一桢中。7.根据权利要求6所述的方法,包括在所述数据结构中使用标记以在第二帧中选择所述选定的详细级别。8.根据权利要求1所述的方法,包括检测光线遍历是用于阴影检测的并且选择可供替换的详细级别。9.根据权利要求7所述的方法,包括检测反射或折射并且基于光线是被反射还是被折射来选择详细级别。10.根据权利要求1所述的方法,包括选择专用于每一光线的详细级别。11.至少一种非暂时性计算机可读介质,其上存储有指令,所述指令被执行以执行包括下面的序列:在光线追踪期间使用硬件处理器来遍历加速结构,所述加速结构包括内部节点、叶子节点和详细级别节点;以及使用所述详细级别节点来选择详细级别。12.根据权利要求11所述的介质,其中,所述详细级别节点包括一距离,在所述距离处发生在详细级别之间的转换,并且所述详细级别节点指向多个不同的详细级别。13.根据权利要求12所述的介质,其中,光线包括用于说明反射、折射或阴影的偏置值。14.根据权利要求12所述的介质,其中,所述详细级别包括对象标识符。15.根据权利要求11所述的介质,所述序列包括使用不同的详细级别而不是选定的详细级别。16.根据权利要求15所述的介质,所述序列包括对数据结构做出标记以指示所述不同的详细级别被用在第一帧中。17.根据权利要求16所述的介质,所述序列包括在所述数据结构中使用标记以在第二桢中选择所述选定的详细级别。18.根据权利要求11所述的介质,所述序列包括检测光线遍历是用于阴影检测的并且选择可供替换的详细级别。19.根据权利要求17所述的介质,所述序列包括检测反射或折射并且基于光线是被反射还是被折射来选择详细级别。20.根据权利要求11所述的介质,所述序列包括选择专用于每一光线的详细级别。21.—种装置,包括:硬件处理器,用于在光线追踪期间遍历加速结构,所述加速结构包括内部节点、叶子节点和详细级别节点,使用所述详细级别节点来选择详细级别;以及耦合到所述处理器的存储器。22.根据权利要求21所述的装置,其中,所述详细级别节点包括一距离,在所述距离处发生在详细级别之间的转换,并且所述详细级别节点指向多个不同的详细级别。23.根据权利要求22所述的装置,其中,光线包括用于说明反射、折射或阴影的偏置值。24.根据权利要求22所述的装置,其中,所述详细级别包括对象标识符。25.根据权利要求21所述的装置,可以包括用于使用不同的详细级别而不是选定的详细级别的处理器。

百度查询: 英特尔公司 光线追踪期间的详细级别选择

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。