MSAA中使用索引位进行压缩的制作方法

文档序号:12513291阅读:273来源:国知局
MSAA中使用索引位进行压缩的制作方法与工艺
多采样抗混叠(MSAA)使用图形处理器提升了所渲染的图像的视觉质量。在MSAA中,每像素使用多个可见性样本、色彩、和深度样本。然而,在对三角形进行渲染期间,每像素仅执行一次像素着色器。常用情况是4xMSAA,其中,与每像素一个样本的通常情况相比,每像素具有四倍之多的样本。针对采用朴素设置的NxMSAA,色彩缓冲器带宽可能会按照的因子N而增加。因此,压缩了MSAA色彩缓冲器。一种用于压缩MSAA色彩缓冲器的方式是针对NxMSAA将色彩分成N个不同平面,并且通常首先填充平面0并且在此之后继续填充其他平面。每个像素还需要log2(N)个位(称作索引位),用于“指”向N个不同平面中的色彩。例如,在4xMSAA中,每个样本需要2个索引位来指向位于所述4个平面之一中的色彩。对于每像素具有4个样本(并且每样本两个位)的8x4像素的图块,需要256个索引位(2*4*8*4)。如果像素完全位于正被渲染的三角形内部,则所有样本将得到相同的色彩,并且然后对于所有样本索引位将全部为零(因为它们将都指向色彩平面0),并且在剩余平面中将不存储任何东西。在许多情况下,仅将使用平面0,并且取决于正被渲染成图块(例如,8x4像素)的几何结构的复杂度,将会越来越多地使用剩余平面。如果对于某个图块来说色彩平面是空的,则不需要在高速缓存驱逐上将那个内容写入到存储器,并且在请求图块的色彩内容时也不需要对其进行读取。所以,这是一种压缩类型。然而,人们还可以在色彩平面被从色彩高速缓存驱逐时将压缩应用到所述色彩平面。对于每个图块,存储了少量位(例如,4个)来指示图块处于哪个状态。这些位可以被用于表明:清除了图块,或者平面0被压缩,而平面1未被压缩等。对于一个渲染目标,所有这些位被称作控制表面。附图说明关于以下附图对一些实施例进行描述:图1是一个实施例的色彩缓冲器的描绘;图2是一个实施例的流程图;图3是根据一个实施例的图形渲染系统的示意性描绘;图4是根据一个实施例的数据处理系统的框图;图5是根据一个实施例在图4中所示的处理器的框图;图6是根据一个实施例图4的图形处理器的框图;图7是根据一个实施例的图形处理引擎的框图;图8是根据另一个实施例的图形处理器的框图;图9展示了一个实施例的线程执行逻辑;图10是根据一个实施例的图形处理器执行单元指令格式的框图;图11是图形处理器的另一个实施例的框图;图12A是根据一个实施例的图形处理器命令格式的框图;图12B是根据一个实施例的图形处理器命令序列的框图;以及图13是一个实施例的图形软件架构。具体实施方式假设8x4像素图块(每像素4个样本),并且覆盖整个图块首先渲染蓝色三角形。然后渲染绿色三角形,并且其穿透图块,从而使得图块的三分之一是绿色而其余是蓝色。在以上的MSAA方法下,将需要两个色彩平面,因为某些像素将包含至少一个绿色样本以及至少一个蓝色样本。对于具有4xMSAA的8x4图块,索引位的数目共计256位(每样本2位乘以每像素4个样本乘以8x4个像素),并且一个平面针对RGBA8存储1024个位(每个RGBA像素32个位乘以8x4)。两个平面占用了2048位的存储设备。在50%压缩的情况下,压缩版本将针对两个平面使用1024个位,即,总成本是1280(1024+256)个位。假设某种压缩算法(如差量(delta)压缩方法),其中,每个图块存储最小的色彩值,并且每个通道使用尽可能少的位来编码与最小色彩的差异。可以将这种方法与基于调色板的方法相结合,从而使得对于每个图块,尝试使用这两种方法进行压缩,然后挑选压缩到最小的可用大小的方法。这使得可以高效处理具有值非常不同的几种色彩(例如,8)的图块。然而,简单的情况(如以上的情况)将仍使用1280个位。基于调色板的压缩方法(palette-basedcompressionmethod)存储了M种色彩(称作调色板),并且然后每个样本存储用于指向调色板中的色彩之一的上限(log2(M))个位。基于调色板的压缩方法在处理迥然不同的色彩时(相比差量压缩方法)表现得更好,因为调色板中的色彩可以取任何值。基于差量的压缩方法(delta-basedcompressionmethod)通常存储基色,并且然后存储关于基色的差异。然而,这意味着差异必须较的,这反过来表明图块中的所有色彩必须相当相似。这就是为什么基于差量和基于调色板的压缩方法组合在一起很好的原因。参考图1,根据一个实施例的色彩缓冲器的描绘包括控制表面50、索引位48以及在这种情况下的4个平面,分别被标识为40、42、44和46的平面0、平面1、平面2和平面3。控制表面的位可以在特殊模式下用于表明没有使用这些平面,并且压缩色彩表示驻留在图块的索引位内部。图块的压缩色彩表示可以存储在图块的索引位中,并且这被标记在图块的控制表面位中。然后,在4xMSAA的情况下,仅需要访问这256个索引位(除了控制表面位)。假设每个图块4个位用于控制表面,并且如果这些位是1111(所有这些),则在一个实施例中图块处于此特殊模式下。在图1中,这些位52可以被用于所述特殊模式。在4xMSAA、以及R8G8B8A8格式下,存储了两个32位色彩,其将共计64位,并且存在128个索引位,也就是说,针对8x4个像素,每样本1个位,每像素具有4个样本。这共计192位。此2色彩调色板可以存储在索引位(每图块256个位,并且所以192个位)中,从而使得可以处理如以上所述的绿色/蓝色图块的情况,并且节约了大量的存储器流量。总体来说,调色板中具有M种色彩,并且每个样本需要能够指向M种色彩中的任何色彩。每个样本需要M种组合。如果M是2的幂数,则每个样本对于其组合需要log2(M)个位。当可能时,调色板压缩表示可以被存储在索引位中。在某些实施例中节约了很多。在未压缩模式下,数据使用2304(2048+256)比特,并且在压缩模式下,数据使用1280个位。然而,在此技术下,数据仅使用索引位(例如,256位),比所述已经压缩的表达具有5:1压缩改进,并且对于未压缩的表达,为9:1压缩率。另一种变体(称作方法B)首先使用每像素三个位来指示以下情况:位位所指示的情况000像素点中所有样本指向色彩0001像素点中所有样本指向色彩1010像素点中所有样本指向色彩2011像素点中的样本指向色彩0或色彩1100像素点中的样本指向色彩0或色彩2101像素点中的样本指向色彩1或色彩2110像素点中的样本指向色彩0、色彩1、或色彩3111未使用-或者表明像素中的所有样本被清除。指向仅一种色彩的“简单像素”对应于组合000、001、和010。指向两种色彩的“中等像素”对应于位组合011、100、和101,而位组合110被称作“复杂像素”,因为其指向三种色彩。然后,针对调色板为这三种色彩存储96(32*3)个位,并且然后还存储了每像素三个位(3*32=96bits)。这留下了64(256-96*2)个剩余位。简单像素不需要任何更多的存储设备,但是中等和复杂像素需要。中等像素需要每样本一个位,在本示例中,每个中等像素量达4位。如果不需要复杂像素,则可以存储16(64/4)个中等像素。鉴于图块中具有32个像素,这很多了。复杂像素需要能够指向三种不同的色彩。可以将64个未使用的位花在中等和复杂像素上,并且如果这些位对于当前图块是足够的,则压缩成功,否则,压缩失败,并且然后使用某种其他压缩方法,或可以发送未压缩数据。所以,利用4xMSAA,像素具有4个样本,并且每个样本需要三种组合。所以,对于复杂像素,一个可以存储每样本2个位。复杂像素则将需要额外的2x4=8位。然而,由于每个样本仅需要3种组合,这实际上有点浪费。接下来描述一种用于存储每像素这些位的更紧凑方式。所需要的组合的数目是3x3x3x3=81,并且所以7个位(而不是8个位)就足够了,即,每个样本需要三种组合来指向调色板里。在一个实施例中,可以使用64个位来存储中等和复杂像素。如果对于当前图块的那个位数目是不足的,则压缩成功。如果不是,则压缩失败,并且使用另一种压缩技术或可以发送未压缩数据。替代性地,以上表格中的色彩2可以是清楚的色彩,并且在那种情况下,不需要存储色彩2,这节约了32个位,并且这些所节约的位可以被用于存储更多的中等和复杂像素。根据另一个实施例,对于8xMSAA,针对8x4像素的图块大小,存在每样本3个索引位,并且对于图块的所有索引位存在8*4*24=768个位。所以,对于8xMSAA(每像素4个位用于指示状态),共计4*8*4=128个位。6色彩调色板花费6*32=192个位。可以用任何方式来选择每像素四个位,只要为像素中的样本可以指向调色板中的所有色彩的情况留下一种组合即可。所以,在调色板具有2n种色彩并且每个样本使用n个调色板索引位来指向调色板里时,图块中所有样本的调色板索引位的数目小于或等于图块的所述索引位的总和。一种实施例可以如下:0000=像素中的样本仅使用色彩0,并且所以,对于那个像素不再需要存储任何东西0001=同样但是针对调色板中的色彩10010=同样但是针对调色板中的色彩20011=同样但是针对调色板中的色彩30100=同样但是针对调色板中的色彩40101=同样但是针对调色板中的色彩50110=像素中的样本仅指的是色彩0或色彩1,这意味着每个样本需要1个调色板索引位,所以这些位被附加到压缩输出流(即,到图块的768个索引位中)。0111=同上,但指的是色彩0和色彩21000=同上,但指的是色彩0和色彩31001=同上,但指的是色彩0和色彩41010=同上,但指的是色彩0和色彩51011=同上,但指的是色彩1和色彩21100=同上,但指的是色彩1和色彩31101=同上,但指的是色彩1和色彩31110=同上,但指的是色彩1和色彩41111=复杂像素,存储了每像素到色彩调色板的3位索引(或6*6*6*6=1296,但这对于前4个调色板索引需要11个位,并且也可以使用11个位来存储像素中接下来的4个样本,所以这个数量达11+11个位,其小于3*8=24个位。24位的解决方案在硬件中更简单,但是22位的解决方案在存储上更高效)。另一个示例是对于8xMSAA使用8色彩调色板,并且仍然使用每像素4个状态位,具有以上相同的表格,除了最后的复杂像素被变为1111=复杂像素,其中,复杂像素中的每个样本存储3个调色板索引位。然后,调色板具有2n=8种色彩,但是每个样本使用小于n个调色板索引位来指向调色板里。根据一个实施例,可以在软件、固件和/或硬件中实现图2中所示的序列10。在软件和固件实施例中,可以由存储在一个或多个非瞬态计算机可读介质(如磁性、光学或半导体存储设备)上的计算机执行指令来实现。在一个实施例中,存储设备可以是图形处理器的一部分。序列以选择用于从色彩缓冲器高速缓存中驱逐的图块开始,如框12中所示。对这些索引位进行考察来看使用了多少个平面,如框14中所示。然后,在菱形16处的检查判定是否所有的平面都在高速缓存中。如果是,则使用三种色彩的调色板来尝试压缩图块,如框18中所示的一个示例。然后,在菱形20的检查判定所尝试的压缩是否满足了所期望的位预算。如果是,则在控制表面中存储预算内成功压缩的指示,如框22中所示。然后,在索引位中存储压缩表示,如框24中所示。最终,将相应的高速缓存行标记为(框26)被驱逐。现在被驱逐的位可以被用于任何事情。然而,没有东西被写回到存储器,因为压缩表示在索引位中。然而,如果所有平面都已经在高速缓存中,则必须使用另一种压缩方法,如框28中所示。如果如在菱形20中所判定的没有满足位预算,则可以继续进行到接下来所描述的替代压缩方法中的步骤2(框30)。一种替代压缩方法如下工作:1.选择色彩缓冲器高速缓存中的高速缓存行来进行驱逐——可能会选择多于一条高速缓存行来进行驱逐,即,8x4图块中存储左边4x4像素和右边4x4像素的高速缓存行二者。2.使用某种算法尝试压缩8x4色彩平面,包括如上所呈现的基于调色板的压缩方法。3.如果基于调色板的压缩方法成功,则在图块的控制表面位中对此进行指示,并且在索引位中存储压缩表示。否则如果另一种压缩方法成功,则通过总线以压缩形式发送数据。在图块的控制表面位中对此进行指示。4.否则,以未压缩形式发送。这也在图块的控制表面位中进行了指示。对于解压缩:1.首先检查控制位,是否图块被标记为在索引位中使用了调色板压缩表示(图1,框22)。如果是,则不从存储器中读取任何东西,仅使用索引位对数据解压缩,并且填充色彩高速缓存。2.否则,如常继续。以上示例是关于4xMSAA(即,每像素四个样本)而给出的。然而,延伸到其他比率也是直截了当的,例如,8xMSAA、16xMSAA等,并且甚至如CSAA的模式。例如,在8xMSAA下,每个样本存储3个索引位,并且每个像素存储24(3*8)个索引位。在8x4图块下,这个数量达768个位。然后,128(32*4)个位被用于4种色彩,每种32个位。一个图块中具有256(8*8*4)个样本。然后,存储每样本2个位:256*2=512以及512+128=640个位。所以,在此情况下,可以容易地存储4色彩调色板。方法B还可以被增加到8xMSAA,在这种情况下,采用与在方法B中3色彩调色板对于4xMSAA是可能的同样方式,6色彩调色板是可能的。相对简单的图块可以用非常少的位进行压缩,并且这个模式可以在例如用户界面中触发很多。节约存储器流量极端重要。图3根据一个实施例描绘了图形渲染系统50。渲染器52向两个压缩器/解压缩器单元54和56提供数据。单元54可以实现算法62(同样示出在图2中),并且单元56可以将上述算法64实现为替代算法。两个压缩器然后与存储器接口58相接,这反过来与图形存储器60进行通信。可以在处理MSAA的色彩压缩器单元62中实现算法。色彩高速缓存66可以在渲染器52和压缩器/解压缩器54和56之间(在此情况下,在数据被插入到例如高速缓存中之前对其进行压缩),或者在高速缓存68(如虚线所示)和压缩器/解压缩器和存储器60之间,并且在此情况下,数据以压缩形式被存储在高速缓存中。图4是根据实施例的数据处理系统100的框图。数据处理系统100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单个处理器台式系统、多处理器工作站系统、或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,数据处理系统100是用于移动设备、手持式设备、或嵌入式设备的片上系统(SOC)集成电路。数据处理系统100的实施例可包括或并入基于服务器的游戏平台、游戏控制台,包括游戏与媒体控制台、移动游戏控制台、手持式游戏控制台、或在线游戏控制台。在一个实施例中,数据处理系统100是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统100还可包括可穿戴设备(诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备、或虚拟现实设备)、与所述可穿戴设备耦合、或者集成在所述可穿戴设备中。在一个实施例中,数据处理系统100是电视机或机顶盒设备,所述电视机或机顶盒设备具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。所述一个或多个处理器102各自包括用于处理指令的一个或多个处理器核107,所述指令当被执行时执行系统和用户软件的操作。在一个实施例中,所述一个或多个处理器核107中的每个处理器核被配置成用于处理特定的指令集109。所述指令集109可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。多个处理器核107可以各自处理不同的指令集109,所述指令集可以包括用于促进对其他指令集进行仿真的指令。处理器核107还可以包括其他处理设备,诸如数字信号处理器(DSP)。在一个实施例中,所述处理器102包括高速缓存存储器104。取决于架构,所述处理器102可具有单个内部高速缓存或多级内部高速缓存。在一个实施例中,在所述处理器102的各个部件之中共享所述高速缓存存储器。在一个实施例中,所述处理器102还使用外部高速缓存(例如,3级(L3)高速缓存或末级高速缓存(LLC))(未示出),可以使用已知的高速缓存一致性技术在所述处理器核107之中共享所述外部高速缓存。寄存器组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耦合,所述外部图形处理器可以在处理器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。图5是处理器200的实施例的框图,所述处理器具有一个或多个处理器核202A-N、集成存储器控制器214、以及集成图形处理器208。处理器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快速总线)。系统代理210为各处理器部件提供管理功能。在一个实施例中,系统代理210包括一个或多个集成存储器控制器214以便管理对各外部存储器设备(未示出)的访问。在一个实施例中,核202A-N中的一个或多个核包括对同步多线程的支持。在这种实施例中,系统代理210包括用于在多线程处理过程中协调并操作核202A-N的部件。系统代理210可以附加地包括功率控制单元(PCU),所述功率控制单元包括用于调节核202A-N的功率状态的逻辑和部件以及图形处理器208。处理器200附加地包括用于执行图形处理操作的图形处理器208。在一个实施例中,图形处理器208与共享高速缓存单元206集以及系统代理单元210耦合,所述系统代理单元包括所述一个或多个集成存储器控制器214。在一个实施例中,显示控制器211与图形处理器208耦合以便将图形处理器输出驱动到一个或多个耦合的显示器。显示控制器211可以是经由至少一个互连与图形处理器耦合的单独模块,或者可以集成在图形处理器208或系统代理210内。在一个实施例中,基于环形的互连单元212用于耦合处理器200的内部部件,然而,可以使用可替代的互连单元,诸如点对点互连、开关互连、或其他技术(包括本领域众所周知的技术)。在一个实施例中,图形处理器208经由I/O链路213与环形互连212耦合。示例性I/O链路213表示多个I/O互连中的至少一个I/O互连,包括封装体I/O互连,所述封装体I/O互连促进各处理器部件与高性能嵌入式存储器模块218(诸如eDRAM模块)之间的通信。在一个实施例中,核202-N中的每个核以及图形处理器208将嵌入式存储器模块218用作共享末级高速缓存。在一个实施例中,核202A-N是执行相同指令集架构的均质核。在另一个实施例中,核202A-N就指令集架构(ISA)而言是同质的,其中,核202A-N中的一个或多个核执行第一指令集,而其他核中的至少一个核执行所述第一指令集的子集或不同的指令集。处理器200可以是使用多种处理技术(例如,互补型金属氧化物半导体(CMOS)、双极结型/互补型金属氧化物半导体(BiCMOS)、或N型金属氧化物半导体逻辑(NMOS))中的任何处理技术的一个或多个衬底的一部分或者实现在所述一个或多个衬底上。另外,处理器200可以实现在一个或多个芯片上或者被实现为具有除其他部件之外的所展示的部件的片上系统(SOC)集成电路。图6是图形处理器300的一个实施例的框图,所述图形处理器可以是分立的图形处理单元、或者可以是与多个处理核集成的图形处理器。在一个实施例中,图形处理器经由到图形处理器上的寄存器的映射I/O接口并且经由被放置在处理器中的命令与存储器进行通信。图形处理器300包括存储器接口314以便访问存储器。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和/或到系统存储器的接口。图形处理器300还包括显示控制器302以便将显示输出数据驱动到显示设备320。显示控制器302包括用于显示器的一个或多个重叠平面的硬件以及多层视频或用户接口元件的组成。在一个实施例中,图形处理器300包括用于编码、解码媒体、或者向一个或多个媒体编码格式、从一个或多个媒体编码格式或在一个或多个媒体编码格式之间对媒体进行转码的视频编解码器引擎306,所述媒体编码格式包括但不限于:运动图像专家组(MPEG)(诸如MPEG-2)、高级视频编码(AVC)格式(诸如H.264/MPEG-4AVC)、以及电影&电视工程师协会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式(诸如JPEG、以及运动JPEG(MJPEG)格式)。在一个实施例中,图形处理器300包括块图像转移(BLIT)引擎304以便执行二维(2D)光栅化器操作,包括例如,位边界块转移。然而,在一个实施例中,使用图形处理引擎(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管线和媒体管线。在一个实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,所述子系统还包括共享存储器(包括寄存器和可寻址存储器)以便共享线程之间的数据并且存储输出数据。图7是用于图形处理器的图形处理引擎410的实施例的框图。在一个实施例中,图形处理引擎(GPE)410是图5中示出的GPE310的版本。所述GPE410包括3D管线412和媒体管线416,其中每个管线可以与图5的3D管线312和媒体管线316的实现方式不同或者类似。在一个实施例中,GPE410与命令流送器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的所述子系统中的每个子系统。图8是图形处理器的另一个实施例的框图。在一个实施例中,所述图形处理器包括环形互连502、管线前端504、媒体引擎537、以及图形核580A-N。所述环形互连502将所述图形处理器耦合至其他处理单元,包括其他图形处理器或者一个或多个通用处理器核。在一个实施例中,图形处理器是集成在多核处理系统内的多个处理器之一。图形处理器经由所述环形互连502接收多批命令。传入命令由管线前端504中的命令流送器503来解译。图形处理器包括用于经由所述(多个)图形核580A-N来执行3D几何处理和媒体处理的可扩展执行逻辑。针对3D几何处理命令,命令流送器503将所述命令供应至几何管线536。针对至少一些媒体处理命令,命令流送器503将所述命令供应至视频前端534,所述视频前端与媒体引擎537耦合。媒体引擎537包括用于视频和图像后处理的视频质量引擎(VQE)530以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)引擎533。几何管线536和媒体引擎537各自生成执行线程,所述执行线程用于由至少一个图形核580A提供的线程执行资源。图形处理器包括可扩展线程执行资源表征模块核580A-N(有时被称为核分片),各个可扩展线程执行资源表征模块核具有多个子核550A-N、560A-N(有时被称为核子分片)。图形处理器可具有任何数量的图形核580A到580N。在一个实施例中,图形处理器包括图形核580A,所述图形核具有至少第一子核550A以及第二核子核560A。在另一个实施例中,图形处理器是具有单子核(例如,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的集合。在一个实施例中,所述共享资源包括共享缓存存储器和像素操作逻辑。其他共享资源还可以包括在图形处理器的各实施例中。图9展示了线程执行逻辑600,所述线程执行逻辑包括在图形处理引擎的一个实施例中采用的处理元件阵列。在一个实施例中,线程执行逻辑600包括像素着色器602、线程分派器604、指令缓存606、可扩展执行单元阵列(包括多个执行单元608A-N)、采样器610、数据缓存612、以及数据端口614。在一个实施例中,所包括的部件经由互连结构而互连,所述互连结构链接至所述部件中的每个部件。线程执行逻辑600包括通过指令缓存606、述数据端口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位打包数据元素(字长(W)大小的数据元素)、或三十二个单独8位数据元素(字节(B)大小的数据元素)在所述向量上进行操作。然而,不同的向量宽度和寄存器大小是可能的。一个或多个内部指令缓存(例如,606)包括在所述线程执行逻辑600中以便缓存所述执行单元的线程指令。在一个实施例中,一个或多个数据缓存(例如,612)被包括用于缓存在线程执行过程中的线程数据。采样器610被包括用于为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一个实施例中,采样器610包括专门的纹理或媒体采样功能以便在向执行单元提供采样数据之前在采样处理过程中处理纹理或媒体数据。在执行过程中,所述图形和媒体管线经由线程生成和分派逻辑向线程执行逻辑600发送线程发起请求。线程执行逻辑600包括本地线程分派器604,所述本地线程分派器对来自所述图形和媒体管线的线程发起请求进行仲裁并且在一个或多个执行单元608A-N上实例化所述请求的线程。例如,所述几何管线(例如,图6的536)将顶点处理、镶嵌或几何处理线程分派至所述线程执行逻辑600。线程分派器604还可处理来自执行着色器程序的运行时间线程生成请求。一旦一组几何对象已经被处理并且被光栅化为像素数据,则像素着色器602被调用以便进一步计算输出信息并且使得结果被写入到输出表面(例如,色彩缓冲器、深度缓冲器、模板缓冲器等)。在一个实施例中,像素着色器602计算各顶点属性的值,所述各顶点属性跨光栅化对象被内插。像素着色器602然后执行API供应的像素着色器程序。为了执行所述像素着色器程序,所述像素着色器602经由所述线程分派器604将线程分派至执行单元(例如,608A)。像素着色器602使用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理图中的纹理数据。对纹理数据和输入几何数据的算术运算计算每个几何碎片的像素色彩数据、或者丢弃来自进一步处理的一个或多个像素。在一个实施例中,数据端口614针对线程执行逻辑600提供存储器访问机制,以将经处理的数据输出至存储器以用于在图形处理器输出管线上进行处理。在一个实施例中,数据端口614包括或耦合至一个或多个缓存存储器(例如,数据缓存612),所述一个或多个缓存存储器用于经由所述数据端口缓存用于存储器访问的数据。图10是根据实施例的框图,展示了图形处理器执行单元的指令格式。在一个实施例中,图形处理器执行单元支持具有采用多种格式的指令的指令集。实线框展示了通常包括在执行单元指令中的部件,而虚线包括是可选的或者仅包括在指令子集中的部件。如所展示,所描述的指令格式是宏指令,因为它们是供应至所述执行单元的指令,这与从指令解码产生的微操作相反(一旦所述指令被处理)。在一个实施例中,图形处理器执行单元本地地支持采用128位格式710的指令。64位紧凑指令格式730可用于基于所选择的指令、指令选项、以及操作数量的一些指令。所述本地128位格式710提供对所有指令选项的访问,而一些选项和操作限制在所述64位格式730中。在所述64位格式730中可用的本地指令随实施例而改变。在一个实施例中,使用索引字段713中的索引值的集合来部分地压缩所述指令。所述执行单元硬件基于所述索引值来参考压缩表集合并且使用所述压缩表输出来重构采用128位格式710的本地指令。针对每个格式,指令操作码712限定了所述执行单元要执行的操作。所述执行单元跨每个操作数的所述多个数据元素来并行地执行每个指令。例如,响应于添加指令,所述执行单元跨每个色彩通道执行同步添加操作,所述色彩通道表示纹理元素或图片元素。默认地,所述执行单元跨所述操作数的所有数据通道执行每个指令。指令控制字段712使能控制某些执行选项,诸如通道选择(例如,预测)以及数据通道排序(例如,重排)。针对128位指令710,执行大小字段716限制了将被并行执行的数据通道的数量。所述执行大小字段716不可用于所述64位紧凑指令格式730。一些执行单元指令具有多达三个操作数,包括两个源操作数(src0720、src1722)以及一个目的地操作数718。在一个实施例中,所述执行单元支持双目的地指令,其中,隐含了所述目的地之一。数据操纵指令可具有第三源操作数(例如,SRC2724),其中,所述指令操作码JJ12确定源操作数的数量。指令的最后的源操作数可以是利用所述指令传递的即时(例如,硬编码)值。在一个实施例中,指令基于操作码位字段被分组在一起以便简化操作码解码740。针对8位操作码,位4、5和6允许所述执行单元确定操作码类型。示出的精确操作码分组是示例性的。在一个实施例中,移动和逻辑操作码分组742包括数据移动和逻辑指令(例如,mov、cmp)。所述移动和逻辑分组742共享所述第五最高有效位(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)。所述向量数学分组对向量操作数执行算术运算,诸如点积运算。图11是图形处理器的另一个实施例的框图,所述图形处理器包括图形管线820、媒体管线830、显示引擎840、线程执行逻辑850、以及渲染输出管线870。在一个实施例中,图形处理器是多核处理系统内的图形处理器,所述多核处理系统包括一个或多个通用处理核。图形处理器受到至一个或多个控制寄存器(未示出)的寄存器写入的控制或者经由环形互连802经由下发至所述图形处理器的命令被控制。环形互连802将图形处理器耦合至其他处理部件,诸如其他图形处理器或通用处理器。来自所述环形互连的命令通过命令流送器803被解译,所述命令流送器将指令供应至所述图形管线820或媒体管线830的单独部件。所述命令流送器803引导顶点拾取器805部件的操作,所述顶点拾取器部件从存储器读取顶点数据并且执行由所述命令流送器803提供的顶点处理命令。所述顶点拾取器805向顶点着色器807提供顶点数据,所述顶点着色器对每个顶点执行坐标空间变换和照明操作。所述顶点拾取器805和顶点着色器807通过经由线程分派器831将执行线程分派至所述执行单元852A、852B来执行顶点处理指令。在一个实施例中,所述执行单元852A、852B是向量处理器阵列,所述向量处理器阵列具有用于执行图形和媒体操作的指令集。所述执行单元852A、852B具有附接的L1缓存851,所述L1缓存对每个阵列是特定的或者在所述阵列之间被共享。所述缓存可被配置为数据缓存、指令缓存、或单个缓存,所述单个缓存被分区为包含不同分区中的数据和指令。在一个实施例中,图形管线820包括用于执行3D对象的硬件加速镶嵌的镶嵌部件。可编程外壳着色器(hullshader)811配置镶嵌操作。可编程域着色器817提供对镶嵌输出的后端估计。镶嵌器813在所述外壳着色器811的方向上进行操作并且包含专用逻辑,所述专用逻辑用于基于粗糙几何模型来生成详细的几何对象集合,所述粗糙几何模型作为输入被提供至所述图形管线820。如果未使用镶嵌,则所述镶嵌部件811、813、817可以被旁路掉。所述完整的几何对象可由几何着色器819经由被分派至所述执行单元852A、852B的一个或多个线程被处理、或者可以直接行进至剪裁器829。所述几何着色器在整个几何对象(而非顶点或者如所述图形管线的先前级中的顶点分片)上进行操作。如果禁用所述镶嵌,则所述几何着色器819从所述顶点着色器807接收输入。几何着色器819可由几何着色器程序编程以便在镶嵌单元被禁用时执行几何镶嵌。在光栅化之前,顶点数据由剪裁器829来处理,所述剪裁器是固定功能剪裁器或者是具有剪裁和几何着色器功能的可编程剪裁器。在一个实施例中,渲染输出管线870中的光栅化器873分派像素着色器以便将几何对象转换成其每像素表示。在一个实施例中,像素着色器逻辑包括在线程执行逻辑850中。所述图形引擎具有互连总线、互连结构、或某个其他的互连机制,所述互连机制允许数据和消息在所述图形引擎的主要部件之中传递。在一个实施例中,执行单元852A、852B和(多个)相关联的缓存851、纹理和媒体采样器854、以及纹理/采样器缓存858经由数据端口856进行互连,以便执行存储器访问并且与所述图形引擎的渲染输出管线部件进行通信。在一个实施例中,采样器854、缓存851、858以及执行单元852A、852B各自具有单独的存储器访问路径。在一个实施例中,渲染输出管线870包含光栅化器和深度测试部件873,所述光栅化器和深度测试部件将基于顶点的对象转换为其相关联的基于像素的表示。在一个实施例中,所述光栅化器逻辑包括用于执行固定功能三角形和线光栅化的窗口器/掩蔽器单元。相关联的渲染和深度缓冲器缓存878、879在一个实施例中也是可用的。像素操作部件877对所述数据执行基于像素的操作,尽管在一些实例中,与2D操作(例如,利用混合的位块图像转移)相关联的像素操作由所述2D引擎841来执行、或者在显示时间由所述显示控制器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)集团所支持的开放图形库(OpenGL)和开放计算语言(OpenCL)、来自微软公司的Direct3D库、或者在一个实施例中的OpenGL和D3D两者提供支持。还可以为开源计算机视觉库(OpenCV)提供支持。如果可进行从未来API的管线到所述图形处理器的管线的映射,则具有兼容3D管线的未来API也将受到支持。图12A是根据实施例的展示了图形处理器命令格式的框图,并且图12B是根据实施例的展示了图形处理器命令序列的框图。图12A中的实线框展示了通常包括在图形命令中的部件,而虚线包括是可选的或者仅包括在所述图形命令的子集中的部件。图12A的示例性图形处理器命令格式900包括用于标识所述命令的目标客户端902的数据字段、命令操作码(opcode)904、以及用于所述命令的相关数据906。子操作码905和命令大小908也包括在一些命令中。客户端902规定了处理命令数据的图形设备的客户端单元。在一个实施例中,图形处理器命令解析器检查每个命令的客户端字段以便调整所述命令的进一步处理并且将命令数据路由至适当的客户端单元。在一个实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元、以及媒体单元。每个客户端单元具有处理所述命令的相应处理管线。一旦所述命令由客户端单元接收,则所述客户端单元读取操作码904和子操作码905(如果存在的话)以便确定待执行的操作。客户端单元使用所述命令的数据906字段中的信息来执行所述命令。针对一些命令,明确的命令大小908被期望限定所述命令的大小。在一个实施例中,命令解析器基于命令操作码自动确定所述命令中的至少一些命令的大小。在一个实施例中,命令经由双倍字长的倍数被对齐。图12B中流程图示出了样本命令序列910。在一个实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示出的命令序列的版本来设置、执行并终止图形操作集合。出于示例性目的示出和描述了样本命令序列,然而,实施例不限于这些命令或者此命令序列。而且,所述命令可以作为一批命令以命令序列被下发,从而使得所述图形处理器将以至少部分同时的方式处理所述命令序列。样本命令序列910可以以管线转储清除(Flush)命令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状态设置命令。至少部分地基于使用中的特定3DAPI来确定这些命令的值。3D管线状态930命令还能够选择性地禁用或旁路掉特定管线元件(如果将不使用那些元件的话)。所述3D图元932命令用于提交待由所述3D管线处理的3D图元。经由3D图元932命令被传递至图形处理器的命令和相关联的参数被转发至所述图形管线中的顶点拾取函数中。所述顶点拾取函数使用3D图元932命令数据来生成顶点数据结构。所述顶点数据结构存储在一个或多个返回缓冲器中。所述3D图元932命令用于经由顶点着色器对3D图元执行顶点操作。为了处理顶点着色器,所述3D管线922将着色器执行线程分派至图形处理器执行单元。所述3D管线922经由执行934命令或事件被触发。在一个实施例中,寄存器写入触发命令执行。在一个实施例中,经由所述命令序列中的‘go’或‘kick’命令来触发执行。在一个实施例中,使用管线同步命令来触发命令执行以便通过所述图形管线转储清除所述命令序列。所述3D管线将针对所述3D图元来执行几何处理。一旦完成操作,则对所产生的几何对象进行光栅化并且所述像素引擎对所产生的像素进行着色。针对那些操作,还可以包括用于控制像素着色和像素后端操作的附加命令。当执行媒体操作时,所述样本命令序列910跟随在媒体管线924路径之后。通常,针对媒体管线924进行编程的具体用途和方式取决于待执行的媒体或计算操作。在媒体解码过程中,具体的媒体解码操作可以卸载至所述媒体管线。所述媒体管线还可以被旁路掉,并且可以使用由一个或多个通用处理核提供的资源来整体地或部分地执行媒体解码。在一个实施例中,所述媒体管线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中,所述图形处理器用于使用计算着色器程序来执行SIMD向量运算,所述计算着色器程序与渲染图形图元不是明确相关的。以与所述3D管线922相似的方式对媒体管线924进行配置。媒体管线状态命令940的集合在所述媒体对象命令942之前被分派或放置于命令队列中。媒体管线状态命令940包括用于配置所述媒体管线元件的数据,所述媒体管线元件将用于处理媒体对象。这包括用于在所述媒体管线内配置视频解码和视频编码逻辑的数据,诸如编码或解码格式。媒体管线状态命令940还支持将一个或多个指针用于包含一批状态设置的“间接”状态元件。媒体对象命令942将指针供应至媒体对象以用于由所述媒体管线进行处理。所述媒体对象包括存储器缓冲器,所述存储器缓冲器包含待处理的视频数据。在一个实施例中,在下发媒体对象命令942之前,所有的媒体管线状态必须是有效的。一旦管线状态被配置并且媒体对象命令942进入排队,则经由执行934命令或等效的执行事件(例如,寄存器写入)来触发所述媒体管线924。然后可以通过由所述3D管线922或所述媒体管线924提供的操作对来自所述媒体管线924的输出进行后处理。在一个实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。图13展示了根据实施例的数据处理系统的示例性图形软件架构。所述软件架构包括3D图形应用1010、操作系统1020、以及至少一个处理器1030。所述处理器1030包括图形处理器1032以及一个或多个通用处理器核1034。所述图形应用1010和操作系统1020各自在所述数据处理系统的系统存储器1050中执行。在一个实施例中,所述3D图形应用1010包含一个或多个着色器程序,所述一个或多个着色器程序包括着色器指令1012。着色器语言指令可以采用高级着色器语言,诸如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。所述应用还包括可执行指令1014,所述可执行指令采用适合用于由所述通用处理器核1034执行的机器语言。所述应用还包括由顶点数据限定的图形对象1016。所述操作系统1020可以是来自微软公司的操作系统、专用UNIX式操作系统、或使用Linux内核变体的开源UNIX式操作系统。当在使用Direct3DAPI时,所述操作系统1020使用前端着色器编译器1024以便将采用HLSL的任何着色器指令1012编译成低级着色器语言。所述编译可以是即时编译,或者所述应用可执行共享预编译。在一个实施例中,在对所述3D图形应用1010进行编译的过程中,高级着色器被编译成低级着色器。用户模式图形驱动器1026可以包含用于将所述着色器指令1012变换成硬件专用的表示的后端着色器编译器1027。当在使用OpenGLAPI时,将采用GLSL高级语言的着色器指令1012传递至用户模式图形驱动器1026以用于编译。所述用户模式图形驱动器使用操作系统内核模式功能1028来与内核模式图形驱动器1029进行通信。所述内核模式图形驱动器1029与所述图形处理器1032进行通信以便分派命令和指令。在本文所描述的各操作或功能程度上,它们可以被描述或定义为硬件电路、软件代码、指令、配置和/或数据。所述内容可以在硬件逻辑中被具体化、或者具体化为直接可执行软件(“对象”或“可执行”形式)、源代码、被设计成用于在图形引擎上执行的高级着色器代码、或者针对具体处理器或图形核的指令集中的低级组件语言代码。本文中所描述的实施例的软件内容可以经由一种其上存储有内容的制品或经由一种操作通信接口经由通信接口发送数据的方法被提供。一种非瞬态机器可读存储介质可以使机器执行所描述的功能或操作,并且包括存储具有机器(例如,计算设备、电子系统等)可存取形式的信息的任何机制,如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。通信接口包括与硬件的、无线的、光学的等介质进行接口的任何机制用于通信到另一个设备,如存储器总线接口、处理器总线接口、互联网连接、盘控制器等。通信接口通过提供配置参数或发送信号被配置来准备通信接口从而提供描述软件内容的数据信号。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。所描述的各部件可以是用于执行所描述的操作或功能的装置。本文所描述的每个部件包括软件、硬件或它们的组合。部件可以被实现为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬件电路等。除了本文所描述的内容,还可以对所披露的实施例和发明的实现方式做各种修改,而不背离其范围。因此,本文的说明和示例应在说明性的而非限制性意义上被解释。本发明的范围应当仅参照以下权利要求书来衡量。下面的条款和/或示例涉及另外的实施例:一个示例实施例可以是一种方法,所述方法包括:使用色彩调色板来尝试压缩高速缓存行;检查所述调色板压缩是否满足位预算;以及如果满足,则在控制表面中存储指示使用了调色板压缩器的指示符,将经压缩的表示存储在色彩缓冲器中的索引位中,并且将所述高速缓存行标记为被驱逐。所述方法还可以包括:其中,所述调色板是N种色彩的集合,并且每个样本使用N个组合来指向所述调色板里,其中,所述调色板的存储的总和与所有样本的组合的总和可以被存储在图块的索引位中。所述方法还可以包括:其中,所述调色板具有2n种色彩,并且每个样本使用n个调色板索引位来指向所述调色板里,并且其中,所述调色板的存储设备与所述图块中所有样本的调色板索引位的数目的总和小于或等于所述图块的所述索引位的总和。所述方法还可以包括:其中,所述调色板是2n种色彩,并且每个样本使用少于n个调色板索引位来指向所述调色板里。所述方法还可以包括:选择用于从色彩缓冲器高速缓存中驱逐的图块,所述图块包括高速缓存行;以及检查所述色彩高速缓存中的索引位以确定所述色彩缓冲器中平面的数量;以及进行检查以判定是否所有所述平面都在色彩缓冲器高速缓存中。所述方法还可以包括:如果所有所述平面都在所述色彩缓冲器高速缓存中,则仅尝试进行压缩。所述方法还可以包括:如果不是所有所述平面都在所述高速缓存中,则使用不同的压缩。所述方法还可以包括:如果没有满足所述位预算,则使用不同的压缩。所述方法还可以包括:对于4xMSAA,存储2色彩调色板、以及每样本1个调色板索引位。所述方法还可以包括:对于4xMSAA,存储每像素3个状态位,所述每像素3个状态位指示如何对所述调色板索引进行编码。所述方法还可以包括:对于8xMSAA,存储4色彩调色板、以及每样本2个调色板索引位。所述方法还可以包括:对于8xMSAA,存储每像素4个状态位,所述每像素4个状态位指示如何对所述调色板索引进行编码。在另一个示例实施例中,可以是一种或多种非瞬态计算机可读介质,所述介质存储有指令,所述指令用于执行包括以下各项的序列:使用色彩调色板来尝试压缩高速缓存行;检查所述调色板压缩是否满足位预算;以及如果满足,则在控制表面中存储指示使用了调色板压缩器的指示符,将经压缩的表示存储在色彩缓冲器中的索引位中,并且将所述高速缓存行标记为被驱逐。所述介质可以进一步存储指令,所述指令用于执行包括以下各项的序列:其中,所述调色板是N种色彩的集合,并且每个样本使用N个组合来指向所述调色板里,其中,所述调色板的存储的总和与所有样本的组合的总和可以被存储在图块的索引位中。所述介质可以进一步存储指令,所述指令用于执行包括以下各项的序列:选择用于从色彩缓冲器高速缓存中驱逐的图块,所述图块包括高速缓存行;以及检查所述色彩高速缓存中的索引位以确定所述色彩缓冲器中平面的数量。所述介质可以进一步存储指令,所述指令用于执行包括以下各项的序列:进行检查以判定是否所有所述平面都在色彩缓冲器高速缓存中。所述介质可以进一步存储指令,所述指令用于执行包括以下各项的序列:如果所有所述平面都在所述色彩缓冲器高速缓存中,则仅尝试进行压缩。所述介质可以进一步存储指令,所述指令用于执行包括以下各项的序列:如果不是所有所述平面都在所述高速缓存中,则使用不同的压缩。所述介质可以进一步存储指令,所述指令用于执行包括以下各项的序列:如果没有满足所述位预算,则使用不同的压缩。所述介质可以进一步存储指令,所述指令用于执行包括以下各项的序列:使用三个索引位来指示所有样本点指向哪个单个色彩、所有样本点指向哪对色彩以及所述样本点指向所有三种色彩。所述介质可以进一步存储指令,所述指令用于执行包括以下各项的序列:使用64个位来存储像素;以及如果这些位不够,则使用不同的压缩方法或者不使用压缩。在一个示例实施例中,可以是一种装置,所述装置包括:硬件处理器,所述硬件处理器用于:使用色彩调色板来尝试压缩高速缓存行,检查所述调色板压缩是否满足位预算,并且如果满足,则在控制表面中存储指示使用了调色板压缩器的指示符,将经压缩的表示存储在色彩缓冲器中的索引位中,并且将所述高速缓存行标记为被驱逐;以及存储设备,所述存储设备被耦合到所述处理器。所述装置可以包括所述处理器,所述处理器用于:其中,所述调色板是N种色彩的集合,并且每个样本使用N个组合来指向所述调色板里,其中,所述调色板的存储的总和与所有样本的组合的总和可以被存储在图块的索引位中。所述装置可以包括所述处理器,所述处理器用于:选择用于从色彩缓冲器高速缓存中驱逐的图块,所述图块包括高速缓存行;并且检查所述色彩高速缓存中的索引位以确定所述色彩缓冲器中平面的数量。所述装置可以包括所述处理器,所述处理器用于进行检查以判定是否所有所述平面都在色彩缓冲器高速缓存中。所述装置可以包括所述处理器,所述处理器用于:如果所有所述平面都在所述色彩缓冲器高速缓存中,则仅尝试压缩。所述装置可以包括所述处理器,所述处理器用于:如果不是所有所述平面都在所述高速缓存中,则使用不同的压缩。所述装置可以包括所述处理器,所述处理器用于:如果没有满足所述位预算,则使用不同的压缩。所述装置可以包括所述处理器,所述处理器用于使用三个索引位来指示所有样本点指向哪个单个色彩、所有样本点指向哪对色彩以及所述样本点指向所有三种色彩。所述装置可以包括所述处理器,所述处理器用于:使用64个位来存储像素,并且如果这些位不够,则使用不同的压缩方法或者不使用压缩。所述装置可以包括所述处理器,所述处理器用于使用四色调色板。本文描述的图形处理技术可以采用各种硬件架构来实现。例如,可以将图形功能集成到芯片组内。替代性地,可以使用分立的图形处理器。作为又一实施例,图形功能可以通过通用处理器(包括多核处理器)来实现。本说明书中通篇提到“一个实施例”或“实施例”表示结合该实施例所述的具体特征、结构或特性包含在本披露所包含的至少一个实现中。因此,短语“一个实施例”或“在一实施例中”的出现不一定都表示同一个实施例。此外,除了所示的特定实施例以外,可以以其他适当的形式来实现所述特定特征、结构或特性,并且所有这样的形式都可以涵盖在本申请的权利要求内。尽管有限数量的实施例已经被描述,但是本领域技术人员将理解大量的其修改和变型。意向的是,从属权利要求覆盖所有这种修改和变型就如落入本公开的真实的精神和范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1