CN106575440B - 恒定缓冲器大小多采样抗混叠深度压缩 - Google Patents
恒定缓冲器大小多采样抗混叠深度压缩 Download PDFInfo
- Publication number
- CN106575440B CN106575440B CN201580044693.7A CN201580044693A CN106575440B CN 106575440 B CN106575440 B CN 106575440B CN 201580044693 A CN201580044693 A CN 201580044693A CN 106575440 B CN106575440 B CN 106575440B
- Authority
- CN
- China
- Prior art keywords
- samples
- group
- depth
- pixel
- data
- 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.)
- Expired - Fee Related
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 72
- 230000006835 compression Effects 0.000 title description 10
- 238000007906 compression Methods 0.000 title description 10
- 238000000034 method Methods 0.000 claims description 36
- 238000005070 sampling Methods 0.000 claims description 17
- 238000003860 storage Methods 0.000 claims description 12
- 230000015654 memory Effects 0.000 abstract description 69
- 238000012360 testing method Methods 0.000 abstract description 22
- 230000002411 adverse Effects 0.000 abstract description 2
- 238000012856 packing Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 64
- 238000010586 diagram Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 14
- 239000013598 vector Substances 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 229910003460 diamond Inorganic materials 0.000 description 9
- 239000010432 diamond Substances 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000000873 masking effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 208000019300 CLIPPERS Diseases 0.000 description 5
- 208000021930 chronic lymphocytic inflammation with pontine perivascular enhancement responsive to steroids Diseases 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 229910044991 metal oxide Inorganic materials 0.000 description 3
- 150000004706 metal oxides Chemical class 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Multimedia (AREA)
- Image Generation (AREA)
Abstract
通过采用独立于样本数量这样的方式对深度数据打包,使得存储器带宽相同而与样本数量无关,可每像素使用较高数量样本而未不利影响缓冲器成本。在一些实施例中,第一级深度测试中每时钟的像素数量可通过在像素域中操作而增加,而之前的技术方案在样本级别操作。
Description
技术领域
本申请大体涉及图形处理。
背景技术
在图形处理中,画面内的物体的深度可被编码。有利地,用于深度信息的编码被压缩使得深度缓冲器大小减少,从而节省成本。
在一些情况下,单个深度值用于每个像素。在其他情况下(叫作多采样抗混叠),多个深度值用于每个像素。在该情况下,每像素可存在一定数量的样本并且可存在与那些样本中的每个关联的深度值。
对于多采样抗混叠来说,深度压缩出现的问题是深度缓冲器的大小随样本数量增加而增加。因为更多样本一般是可期望的,并且因为深度缓冲器的成本随大小增加而增加,需要有随着样本数量增加来存储信息而深度缓冲器成本不过度增加的方式。
附图说明
关于下列图描述一些实施例:
图1是根据一个实施例对于最小/最大方案的深度数据存储格式的描绘;
图2是根据一个实施例对于平面方程方案的深度数据存储格式的描绘;
图3是示出一个三角形可如何使用两个不同方案存储它的深度数据的图;
图4是根据一个实施例的深度缓冲装置的示意描绘;
图5是根据一些实施例基于输入范围中的条件的输出光栅化的描绘;
图6是根据一个实施例对于较高级深度测试的流程图;
图7是根据一个实施例对于最小/最大深度编码的流程图;
图8是根据一个实施例的数据处理系统的框图;
图9是根据一个实施例、图8中示出的处理器的框图;
图10是根据一个实施例、图8的图形处理器的框图;
图11是根据一个实施例的图形处理引擎的框图;
图12是根据另一个实施例的图形处理器的框图;
图13图示对于一个实施例的线程执行逻辑;
图14是根据一个实施例的图形处理器执行单元指令格式的框图;
图15是图形处理器的另一个实施例的框图;
图16A是根据一个实施例的图形处理器命令格式的框图;
图16B是根据一个实施例的图形处理器命令序列的框图;以及
图17是对于一个实施例的图形软件架构。
具体实施例
牵涉的样本越多,传统上用于处理单个像素的深度值越多。每个样本具有个体深度值,其存储在深度缓冲器中。通过采用独立于样本数量这一方式打包数据,使得存储器带宽相同而与样本数量无关,可每像素使用更高数量的样本而并未不利影响缓冲器成本。在一些实施例中,在第一级深度测试中每时钟的像素数量可以通过在像素域中操作而增加,而之前的技术方案在样本级别操作。
深度值可以采用两个方式中的一个来存储,而在两个情况下,深度缓冲器存储的大小独立于样本数量。具体地,深度值可以存储为平面方程或通过存储一组像素(每个像素具有多个样本)的最小和最大值来存储。在相同压缩深度缓冲器内可以使用两个存储方法(平面方程,以及对于一组像素的最小和最大值),这取决于深度数据的连续性。如本文使用的,深度数据的“连续性”指示对于指定数据组或块的所有像素和所有样本是否被点亮。术语“点亮”意指所有像素具有带规定颜色值的样本并且实际上在描绘的图像中使用所有样本和所有像素。例如在一些描绘中,描绘的线可以通过像素的仅仅一部分使得与该像素关联的样本中的一些被点亮而其他未被点亮。
如本文使用的,包括大量像素的帧的部分被视为“组”。例如,在一个实施例中,4×8像素组可以视为一组,其能细分成两个4×4像素的子组。像素组可以作为整体来操纵。然而,该组和任何子组的大小与本文提到的那些可以不同。
深度缓冲器分成像素组,便于通过封闭的矩形区域的像素来定义,并且这些组中的每个使用平面方程或该组的最小和最大值来存储,这取决于该组的连续性。这些区域在像素域中可以具有恒定大小并且在一个实施例中在每像素的样本数量增加时不改变。在第一级深度测试执行的工作量确切映射为存储块的大小并且因此在样本数量增加时在像素域中是恒定的。
集成图形的使用模型转向高端游戏而不是办公和商业应用。游戏应用推动多采样和提高的图像质量。实现每像素样本数量增加而不使存储器大小或带宽增加在一些情况下可以提供更加经济的技术方案。
在一些实施例中,压缩深度缓冲器存储使用两个编码格式中的一个所压缩的深度值。压缩深度缓冲器用于较高级深度测试。在一个实施例中,该较高级深度测试可以在一个时钟中测试一组像素。数据可以设置成遮蔽未压缩的常规深度缓冲器。在不能对组中的所有像素返回相同测试结果时,较高级深度测试有时需要顺从较低级深度测试。
压缩深度缓冲器中的数据可以使用所谓的平面位来组织以指示它在深度缓冲器中的平面以及像素掩蔽信息。在较高级深度测试未返回相同结果的情况下,则可以使用较低级深度测试并且数据可以存储在未压缩的深度缓冲器中。这一般是不可取的,因为在压缩深度缓冲器中存储深度值(如可能的话)更高效。
第一编码格式(叫作最小/最大格式)牵涉存储对应于指定区的一组像素(例如4×4或8×4像素组)的最小和最大深度值。这些像素每个可以由多个样本组成。然而存储量并不依赖于使用多少样本。然而,因为无法恢复每样本数据的所有原始数据,压缩表示是有损的。
像素掩蔽可以是压缩深度缓冲器中每个条目的一部分。像素掩蔽用于将作为最小/最大范围的一部分的像素与未使用最小/最大方法存储的像素区分开。最小/最大范围中未包括的像素的深度被认为等于深度缓冲器清空值。深度缓冲器清空值是在渲染过程开始时缓冲器中所有像素的起始或默认值。深度缓冲器中的深度值在每个新帧开始时被清空为该清空值。清空值可以是在0到1范围内的任何值。它“另外”存储为整个z缓冲器的一个全局浮点值。
每当具有至少一个样本的任何像素被点亮时设置像素掩蔽。当在清空缓冲器顶部存在有绘制的部分点亮像素(即,其中不是所有样本都被点亮的像素)时,在最小和最大范围内包括清空值。当在图像之前渲染的部分的顶部绘制部分点亮的像素时,旧范围并入新范围并且写回到压缩深度缓冲器。
在一个实施例中,部分点亮的像素掩蔽取组中样本的逻辑OR并且完全点亮的像素掩蔽使用样本的逻辑AND。
从而,对于由它们的最小值和最大值所表示的组,在一个实施例中基本上有六个情况。在一个实施例中,在从压缩深度缓冲器读取的原始或旧的分层深度(HZ)掩蔽全部为一并且对于新数据的部分点亮源掩蔽全部为一时,则源(即,新的帧)范围代替旧范围。如果两个子组(例如4×4区域)的像素被完全点亮,则像素组可以由它的平面方程表示。
下一个情况是从压缩缓冲器读取的旧HZ掩蔽对于组全部为一但完全点亮的掩蔽具有至少一个零的时候。这将意指至少一个像素具有至少一个未被点亮的样本。在该情况下,新的范围与旧的范围组合。
下一个情况同样是从压缩缓冲器读取的旧掩蔽全部为一并且完全点亮和部分点亮的源掩蔽都具有为零的至少一个像素的时候。在该情况下,源范围与旧范围组合。
接着的三个情况是从压缩缓冲器读取的旧HZ掩蔽全部为零的所有情况。在这三个情况中的第一个中,完全点亮和部分点亮的源掩蔽都全部为一。则源范围代替清空值。如果两个4×4像素组都被完全点亮,则像素组可以由它的平面方程表示。
下一个对于具有全零的旧掩蔽的实例是完全点亮的源掩蔽具有为零的至少一个像素并且部分点亮的源掩蔽具有全一的情况。在该情况下,源范围与清空值组合。
原始掩蔽为全零的最后且第三个实例是完全点亮的源掩蔽和部分点亮的源掩蔽具有零的情况。在该情况下,源范围代替旧范围。
平面方程可以用于在整组像素被点亮时表示该组像素。然后,所有样本的确切深度数据可以通过评估平面方程而得到,其中深度值Z等于,其中CX是深度值的x坐标并且CY是它的y坐标。给出每个像素内样本的确切深度的情况下,xy坐标可以是分数。
该平面方程还使用不依赖于样本数量的固定存储量。每当整组像素通过深度测试时它被写回压缩缓冲器。所有像素的所有样本被点亮并且管线中不再有像素测试可以丢弃任何像素。
在一个实施例中,两个格式包括相同的最高有效位位置中的平面位。平面位告知硬件如何解释跟随的数据。每当输入采用平面格式时,较高级深度测试更准确。在输入格式采用最小和最大格式时,较高级深度测试有时需要退到较低级深度测试。
参考图1,描绘由8×4数据块(其由两个4×4数据块组成)组成的组。在该示例中,在深度数据不连续并且因此不能由单个平面方程表示时使用最小/最大格式。在该情况下,最小/最大格式占据64个数据位而与样本数量无关。在一个实施例中,前16个位用于像素掩蔽,接着的24个位可以用于最大深度值,接着的23个位可以用于最小深度值并且最后的位可以是每个4×4块的平面位。
与如图2中示出的相比之下,8×4像素块采用平面方程格式存储,其在该示例中占据128位的存储。这对应于与4×4大小的两个最小/最大格式槽相同的数据量。在该情况下,前32个位用于CY系数,接着的32个位用于CX系数,接着的31个位用于CO系数并且最后的位用于平面位。还可以使用位的其他组织。在数据连续并且占据与两个最小/最大格式4×4槽相同的空间时使用平面格式。
图3示出使用两个不同存储格式的三角形的光栅化的示例。字母m表示最小/最大格式并且单词‘平面’指示使用平面方程对数据编码。
压缩深度缓冲器的存储要求相对于用于渲染每个像素的样本量保持恒定。
参考图4,深度缓冲方案可以从光栅器10接收数据用于深度缓冲测试。来自光栅器的数据首先在12处经受较高级深度测试。数据可以采用压缩格式存储在压缩深度缓冲器14中。如果较高级深度测试行不通,则必须使用较低级深度测试16并且数据存储在常规的未压缩深度缓冲器18中。
图5是在存在完全点亮源掩蔽(第二列)和部分点亮源掩蔽(第三列)的情况下基于从压缩深度缓冲器(左列)读取的旧HZ掩蔽的深度缓冲的策略的描绘。在未启用其他像素的情况下输出范围动作在最右列中描绘。
图6和7描绘可以在软件、固件和/或硬件中实现的序列。在软件和固件实施例中,序列可以由一个或多个非暂时性计算机可读介质(例如磁、光或半导体存储)中存储的计算机可执行指令实现。
图6的序列可以用于较高级深度测试。在框20处接收一组像素的深度值。每个像素由多个样本组成。在菱形22处的检查确定数据是否连续。如果是这样的话,数据可以表示为平面方程并且如在框24中指示的那样存储在压缩深度缓冲器中。否则数据可以存储为两个最小/最大块,如在框26中指示的。
参考图7,根据一个实施例描绘最小/最大存储技术的序列。初始在菱形30处的检查确定源掩蔽是否被点亮。如果是这样的话,维持旧的最小和最大范围,如在框32中指示的。
如果源掩蔽未被点亮,则在菱形34处的检查确定源掩蔽是否被完全点亮。如果是这样的话,用源的最小和最大范围代替旧范围,如在框36中指示的。如果否的话,菱形38处的检查确定源掩蔽是否具有部分点亮的像素。
如果是这样的话,菱形40处的检查确定任何部分像素是否与目标掩蔽中的零重叠。如果否的话,旧范围与源范围组合,如在框42中指示的。
如果菱形38处的检查确定源掩蔽没有部分点亮的像素,则菱形44处的检查确定任何未点亮源像素是否与点亮的目标像素重叠。如果是这样的话,流程转到框42,从而使旧范围与源范围组合。否则,在框36中用源最小最大范围代替旧范围。
如果菱形40处的检查确定任何像素并未与目标掩蔽中的零重叠,则菱形46处的检查确定任何部分像素是否与点亮的目标像素重叠。如果是这样的话,在框48处旧范围清空值和源范围组合。否则,在框50处用源范围和清空范围的组合代替旧范围。
然后在任何情况下,新HZ掩蔽是旧掩蔽和源掩蔽的逻辑“OR”。掩蔽是每像素一个位。在多采样抗混叠模式中,部分点亮的像素被视为点亮,如在框52中指示的。
图8是根据实施例的数据处理系统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耦合,可选的外部图形处理器112可以与处理器102中的一个或多个图形处理器108耦合来执行图形和媒体操作。
ICH 130使外设能够经由高速I/O总线连接到存储器120和处理器102。I/O外设包括音频控制器146、固件接口128、无线收发器126(例如,Wi-Fi、Bluetooth)、数据存储设备124(例如,硬盘驱动器、闪速存储器等)和用于使遗留(例如,个人系统2(PS/2))设备耦合于系统的遗留I/O控制器。一个或多个通用串行总线(USB)控制器142连接输入设备,例如键盘和鼠标144组合。网络控制器134还可以耦合于ICH 130。在一个实施例中,高性能网络控制器(未示出)耦合于处理器总线110。
图9是具有一个或多个处理器核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),其包括逻辑和部件,用于调节核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互连中的至少一个,其包括促进各种处理器部件与高性能嵌入式存储器模块218(例如eDRAM模块)之间的通信的封装上I/O互连。在一个实施例中,核202-N中的每个和图形处理器208使用嵌入式存储器模块218作为共享末级高速缓存。
在一个实施例中,核202A-N是执行相同指令集架构的同质核。在另一个实施例中,核202A-N从指令集架构(ISA)方面是多类型的,其中核202A-N中的一个或多个执行第一指令集,而其他核中的至少一个执行第一指令集的子集或不同指令集。
处理器200可以是使用许多过程技术中的任一个的一个或多个衬底的一部分或可以使用许多过程技术中的任一个在一个或多个衬底上实现,例如互补金属氧化物半导体(CMOS)、双极结/互补金属氧化物半导体(BiCMOS)或N型金属氧化物半导体逻辑(NMOS)。另外,处理器200可以在一个或多个芯片上实现或实现为芯片上系统(SOC)集成电路,其除其他部件外还具有图示的部件。
图10是图形处理器300的一个实施例的框图,该图形处理器300可以是离散图形处理单元,或可以是与多个处理核集成的图形处理器。在一个实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射I/O接口并且经由置入处理器存储器内的命令来通信。图形处理器300包括访问存储器的存储器接口314。该存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存和/或到系统存储器的接口。
图形处理器300还包括显示控制器302,用于驱动显示输出数据到显示设备320。显示控制器302包括用于一个或多个叠加平面的硬件,用于多层视频或用户界面要素的显示和组成。在一个实施例中,图形处理器300包括视频编解码引擎306,用于将媒体编码到一个或多个媒体编码格式、将媒体从一个或多个媒体编码格式解码或将媒体在这些媒体编码格式之间转码,这些媒体编码格式包括但不限于,移动图片专家组(MPEG)格式(例如MPEG-2)、高级视频编码(AVC)格式(例如H.264/MPEG-4 AVC)以及电影&电视工程师协会(SMPTE)421M/VC-1,和联合摄影专家组(JPEG)格式(例如JPEG)和运动JPEG(MJPEG)格式。
在一个实施例中,图形处理器300包括块图像传输(BLIT)引擎304,用于执行二维(2D)光栅器操作,其包括例如位边界块传输。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个部件执行2D图形操作。图形处理引擎310是用于执行图形操作(其包括三维(3D)图形操作和媒体操作)的计算引擎。
GPE 310包括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包括对于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,子系统还包括共享存储器,其包括寄存器和可寻址存储器,用于在线程之间共享数据并且存储输出数据。
图11是用于图形处理器的图形处理引擎410的实施例的框图。在一个实施例中,图形处理引擎(GPE)410是图10中示出的GPE 310的版本。GPE 410包括3D管线412和媒体管线416,其中的每个可以与图10的3D管线312和媒体管线316的实现不同或相似。
在一个实施例中,GPE 410与命令流播器(command streamer)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包括高速缓存存储器空间,用于高速缓存对存储器的访问。高速缓存存储器可以是单个数据高速缓存或对于经由数据端口访问存储器的多个子系统分成多个高速缓存(例如,渲染缓冲器高速缓存、恒定缓冲器高速缓存,等)。在一个实施例中,在执行单元阵列414中的执行单元上执行的线程通过经由数据分布互连(其耦合图形处理引擎410的子系统中的每个)交换消息而与数据端口通信。
图12是图形处理器的另一个实施例的框图。在一个实施例中,图形处理器包括环互连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(有时称为核片)为特征的可缩放线程执行资源,每个具有多个子核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。在一个实施例中,共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源也可以被包括在图形处理器的各种实施例中。
图13图示线程执行逻辑600,其包括在图形处理引擎的一个实施例中采用的处理元件阵列。在一个实施例中,线程执行逻辑600包括像素调色器(pixel shader) 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个位存储在寄存器中并且执行单元对作为四个单独64位打包数据元素(四字(QW)大小数据元素)、八个单独32位打包数据元素(双字(DW)大小数据元素)、十六个单独16位打包数据元素(字(W)大小数据元素)或三十二个单独8位数据元素(字节(B)大小数据元素)的矢量操作。然而,不同的矢量宽度和寄存器大小是可能的。
在线程执行逻辑600中包括一个或多个内部指令高速缓存(例如,606)来高速缓存执行单元的线程指令。在一个实施例中,包括一个或多个数据高速缓存(例如,612)以在线程执行期间高速缓存线程数据。包括采样器610来为3D操作提供纹理采样和为媒体操作提供媒体采样。在一个实施例中,采样器610包括专门纹理或媒体采样功能性,用于在向执行单元提供采样数据之前在采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体管线经由线程产生和调度逻辑向线程执行逻辑600发送线程发起请求。线程执行逻辑600包括本地线程调度器604,其仲裁来自图形和媒体管线的线程发起请求并且在一个或多个执行单元608A-N上例示请求的线程。例如,几何形状管线(例如,图8的536)向线程执行逻辑600调度顶点处理、铺装(tessellation)或几何形状处理线程。线程调度器604还可以处理来自执行调色器程序的运行时线程产生请求。
一旦一组几何对象已被处理并且光栅化为像素数据,调用像素调色器 602以进一步计算输出信息并且促使将结果写入输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器,等)。在一个实施例中,像素调色器 602计算待跨光栅化对象内插的各种顶点属性的值。像素调色器 602然后执行API供应的像素调色器程序。为了执行像素调色器程序,像素调色器 602经由线程调度器604向执行单元(例如,608A)调度线程。像素调色器 602使用采样器610中的纹理采样逻辑来访问存储器中存储的纹理图中的纹理数据。对纹理数据和输入几何形状数据的算术运算计算每个几何片段的像素颜色数据,或丢弃一个或多个像素以免进一步处理。
在一个实施例中,数据端口614为向存储器输出处理数据以用于在图形处理器输出管线上处理的线程执行逻辑600提供存储器访问机制。在一个实施例中,数据端口614包括或耦合于一个或多个高速缓存存储器(例如,数据高速缓存612)用于经由数据端口高速缓存数据用于存储器访问。
图14是图示根据实施例的图形处理器执行单元指令格式的框图。在一个实施例中,图形处理器执行单元支持指令集,其具有采用多个格式的指令。实线框图示执行单元指令中一般包括的部件,而虚线包括可选或仅包括在指令的子集中的部件。描述或图示的指令格式是宏指令,因为它们是供应给执行单元的指令,如与一旦处理指令则由指令解码产生的微操作不同。
在一个实施例中,图形处理器执行单元本机支持采用128位格式710的指令。64位压紧指令格式730可用于基于所选指令、指令选项和操作数数量的一些指令。本机128位格式710提供对所有指令选项的访问,而一些选项和操作被限制在64位格式730。64位格式730中可用的本机指令随实施例而变化。在一个实施例中,指令部分使用索引字段713中的索引值集来压紧。执行单元硬件基于索引值来引用压缩表集并且使用压缩表输出来重建采用128位格式710的本机指令。
对于每个格式,指令操作码712定义执行单元要执行的操作。执行单元跨每个操作数的多个数据元素并行执行每个指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道执行同步加法运算。执行单元默认跨操作数的所有数据通道执行每个指令。指令控制字段712实现对例如通道选择(例如,预测)和数据通道排序(例如,搅拌(swizzle))等某些执行选项的控制。对于128位指令710,执行大小字段716限制并行执行的数据通道的数量。执行大小字段716对于在64位紧凑指令格式730中的使用不可用。
一些执行单元指令具有多至三个操作数,其包括两个源操作数src0 720、src1722和一个目标718。在一个实施例中,执行单元支持双目标指令,其中暗示目标中的一个。数据操纵指令可以具有第三个源操作数(例如,SRC2 724),其中指令操作码JJ12确定源操作数的数量。指令的最后的源操作数可以是随指令传递的立即(例如,硬编码)值。
在一个实施例中,指令基于操作码位字段来分组以简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。示出的精确的操作码分组是示范性的。在一个实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,mov、cmp)。移动和逻辑组742共享五个最高有效位(MSB),其中移动指令采用0000xxxxb(例如,0x0x)的形式并且逻辑指令采用0001xxxxb(例如,0x01)的形式。流程控制指令组744(例如,call、jmp)包括采用0010xxxxb(例如,0x20)的形式的指令。混杂指令组746包括指令混合,其包括采用0011xxxxb(例如,0x30)形式的同步指令(例如,等待、发送)。并行数学指令组748包括采用0100xxxxb(例如,0x40)形式的逐部件的算术指令(例如,add、mul)。并行数学组748跨数据通道并行执行算术运算。矢量数学组750包括采用0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。矢量数学组对矢量操作数执行算术,例如点积计算。
图15是图形处理器的另一个实施例的框图,该图形处理器包括图形管线820、媒体管线830、显示引擎840、线程执行逻辑850和渲染输出管线870。在一个实施例中,图形处理器是多核处理系统(其包括一个或多个通用处理核)内的图形处理器。图形处理器由到一个或多个控制寄存器(未示出)的寄存器写所控制或经由向图形处理器发出(经由环互连802)的命令来控制。环互连802使图形处理器耦合于其他处理部件,例如其他图形处理器或通用处理器。来自环互连的命令通过命令流播器803来解释,该命令流播器803向图形管线820或媒体管线830的个体部件供应指令。
命令流播器803指示顶点拾取器805部件的操作,该顶点拾取器805部件从存储器读取顶点数据并且执行由命令流播器803提供的顶点处理命令。顶点拾取器805向顶点调色器 807提供顶点数据,该顶点调色器 807对每个顶点执行坐标空间变换和点亮操作。顶点拾取器805和顶点调色器 807通过经由线程调度器831向执行单元852A、852B调度执行线程来执行顶点处理指令。
在一个实施例中,执行单元852A、852B是矢量处理器阵列,其具有用于执行图形和媒体操作的指令集。执行单元852A、852B具有附连L1高速缓存851,其对于每个阵列是特定的或在阵列之间共享。高速缓存可以配置为数据高速缓存、指令高速缓存或被分区以在不同分区中包含数据和指令的单个高速缓存。
在一个实施例中,图形管线820包括铺装部件,用于执行3D对象的硬件加速铺装。可编程外壳调色器 811配置铺装操作。可编程域调色器 817提供铺装输出的后端评估。铺装器813在外壳调色器811指引下操作并且包含专用逻辑用于基于作为到图形管线820的输入而提供的粗糙几何模型来生成详细几何对象集。如果未使用铺装,可以绕过铺装部件811、813、817。
完整的几何对象可以经由调度给执行单元852A、852B的一个或多个线程由几何形状调色器 819处理,或可以直接行进到剪辑器 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操作(例如,带有混合的位块图像传输)关联的像素操作由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)、来自Microsoft Corporation的Direct3D库或在一个实施例中为OpenGL和D3D两者提供支持。还可以为开源计算机视觉库(OpenCV)提供支持。如果可以进行从未来API的管线到图形处理器的管线的映射,还可以支持具有兼容3D管线的未来API。
图16A是图示根据实施例的图形处理器命令格式的框图并且图16B是图示根据实施例的图形处理器命令序列的框图。图16A中的实线框图示图形命令中一般包括的部件,而虚线包括可选或仅在图形命令的子集中包括的部件。图16A的示范性图形处理器命令格式900包括用于识别命令的目标客户端902的数据字段、命令操作代码(操作码)904和对于命令的相关数据906。在一些命令中还包括子操作码905和命令大小908。
客户端902规定处理命令数据的图形设备的客户端单元。在一个实施例中,图形处理器命令解析器检查每个命令的客户端字段来调节命令的进一步处理并且将命令数据路由到合适的客户端单元。在一个实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户端单元具有对应的处理命令的处理管线。一旦命令被客户端单元接收,客户端单元读取操作码904,并且如存在的话,读取子操作码905来确定要执行的操作。客户端单元使用命令的数据906字段中的信息来执行命令。对于一些命令,显式命令大小908预期成规定命令的大小。在一个实施例中,命令解析器基于命令操作码自动确定命令中的至少一些的大小。在一个实施例中,命令经由多个双字而对齐。
图16B中的流程图示出样本命令序列910。在一个实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用示出为设置、执行和终止图形操作集的命令序列的版本。样本命令序列为了示范性目的而示出和描述,然而实施例不限于这些命令或该命令序列。此外,命令可以作为命令序列中的批量命令而发出,使得图形处理器将采用至少部分并发方式处理命令序列。
样本命令序列910可以管线刷新命令912开始以促使任何活动图形管线完成对于管线的当前未决命令。在一个实施例中,3D管线922和媒体管线924并未并发地操作。执行管线刷新以促使活动图形管线完成任何未决命令。响应于管线刷新,对于图形处理器的命令解析器将暂停命令处理直到活动绘图引擎完成未决操作并且相关读高速缓存无效。可选地,标记为‘dirty’的渲染高速缓存中的任何数据可以刷新到存储器。管线刷新命令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矢量操作。
媒体管线924采用与3D管线922相似的方式配置。媒体管线状态命令940的集在媒体对象命令942之前被调度到或置入命令序列。媒体管线状态命令940包括用于配置将用于处理媒体对象的媒体管线元件的数据。这包括用于在媒体管线内配置视频解码和视频编码逻辑的数据,例如编码或解码格式。媒体管线状态命令940还支持到包含批量状态设定值的“间接”状态元素的一个或多个指针的使用。
媒体对象命令942向媒体对象供应指针以供媒体管线处理。媒体对象包括存储器缓冲器,其包含待处理的视频数据。在一个实施例中,所有媒体管线状态在发出媒体对象命令942之前必须有效。一旦配置管线状态并且媒体对象命令942成队列,经由执行934命令或等效执行事件(例如,寄存器写)触发媒体管线924。来自媒体管线924的输出然后可以被3D管线922或媒体管线924所提供的操作后处理。在一个实施例中,采用与媒体操作相似的方式配置和执行GPGPU操作。
图17图示根据实施例用于数据处理系统的示范性图形软件架构。该软件架构包括3D图形应用1010、操作系统1020和至少一个处理器1030。处理器1030包括图形处理器1032和一个或多个通用处理器核1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。
在一个实施例中,3D图形应用1010包含一个或多个调色器程序,其包括调色器指令1012。调色器语言指令可以采用高级调色器语言,例如High Level Shader Language(HLSL)或OpenGL Shader Language(GLSL)。应用还包括采用适合于被通用处理器核1034执行的机器语言的可执行指令1014。应用还包括由顶点数据定义的图形对象1016。
操作系统1020可以是来自Microsoft Corporation的Microsoft® Windows®操作系统、专用UNIX类操作系统,或使用Linux内核的变化形式的开源UNIX类操作系统。当Direct3D API在使用中时,操作系统1020使用前端调色器编译器1024来将采用HLSL的任何调色器指令1012编译成较低级调色器语言。编译可以是即时编译或应用可以执行共享预编译。在一个实施例中,高级调色器在3D图形应用1010的编译期间编译成低级调色器。
用户模式图形驱动器1026可以包含后端调色器编译器1027,用于将调色器指令1012转换成硬件特定表示。当OpenGL API在使用中时,采用GLSL高级语言的调色器指令1012被传递到用户模式图形驱动器1026用于编译。用户模式图形驱动器使用操作系统内核模式功能1028来与内核模式图形驱动器1029通信。内核模式图形驱动器1029与图形处理器1032通信来调度命令和指令。
就本文描述各种操作或功能这方面来说,它们可以描述或定义为硬件电路、软件代码、指令、配置和/或数据。内容可以在硬件逻辑中体现,或体现为针对在图形引擎上执行所设计的直接可执行软件(“对象”或“可执行”形式)、源代码、高级调色器代码,或对于特定处理器或图形核的指令集中的低级汇编语言代码。本文描述的实施例的软件内容可以经由制造物品(其上具有存储的内容)或经由操作通信接口来经由通信接口发送数据的方法而提供。
非暂时性机器可读存储介质可以促使机器执行描述的功能或操作,并且包括采用机器(例如,计算设备、电子系统等)可访问形式存储信息的任何机构,例如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储器设备,等)。通信接口包括接口到硬接线、无线、光等介质中的任一个的任何机构,用于与例如存储器总线接口、处理器总线接口、互联网连接、盘控制器等另一个设备通信。通信接口通过提供配置参数或发送信号而配置来使通信接口准备提供描述软件内容的数据信号。通信接口可以经由发送到通信接口的一个或多个命令或信号来访问。
描述的各种部件可以是用于执行描述的操作或功能的部件。本文描述的每个部件包括软件、硬件或这些的组合。部件可以实现为软件模块、硬件模块、专用硬件(例如,应用特定硬件、应用特定集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬接线电路等。除本文描述的外,可以对本发明的公开实施例和实现做出各种修改而不偏离它们的范围。因此,本文的图示和示例应在说明性而非限制性意义上解释。本发明的范围仅仅通过参考随附的权利要求来度量。
下列条款和/或示例关于另外的实施例:
一个示例实施例可以是一种方法,其包括:将深度值存储在深度缓冲器中以用于多采样抗混叠,所述缓冲器每像素具有若干样本;以及对深度值编码使得深度缓冲器的大小相同而与每像素的样本数量无关。方法还可以包括将帧分成具有预定大小的像素组。方法还可以包括确定一组的所有样本是否被点亮。方法还可以包括其中如果该组的所有样本未被点亮则对最小/最大深度值编码来表示该组。方法还可以包括其中如果该组的所有像素被点亮则使用它的平面方程来对该组编码。方法还可以包括根据该组的所有样本是否被点亮而不同地对该组像素的深度值编码。方法还可以包括如果不是一组的所有样本都被点亮则对该组像素的平面位、像素掩蔽和最小和最大深度编码、如果该组的所有样本都被点亮则对该组像素的平面位、像素掩蔽和平面方程编码。
另一个示例实施例可以是一个或多个非暂时性计算机可读介质,其存储由处理器执行来执行序列的指令,该序列包括:将深度值存储在深度缓冲器中以用于多采样抗混叠,所述缓冲器每像素具有若干样本;以及对深度值编码使得深度缓冲器的大小相同而与每像素的样本数量无关。介质可以包括所述序列,其包括将帧分成具有预定大小的像素组。介质可以包括所述序列,其包括确定一组的所有样本是否被点亮。介质可以包括所述序列,其包括其中如果该组的所有样本未被点亮则对最小/最大深度值编码来表示该组。介质还可以包括其中如果该组的所有像素被点亮则使用它的平面方程来对该组编码。介质可以包括所述序列,其包括根据该组的所有样本是否被点亮而不同地对该组像素的深度值编码。介质可以包括所述序列,其包括,如果不是一组的所有样本都被点亮则对该组像素的平面位、像素掩蔽和最小和最大深度编码,如果该组的所有样本都被点亮则对该组像素的平面位、像素掩蔽和平面方程编码。
在另一个示例实施例中,可以是装置,其包括硬件处理器,用于将深度值存储在深度缓冲器中以用于多采样抗混叠,所述缓冲器每像素具有若干样本;以及对深度值编码使得深度缓冲器的大小相同而与每像素的样本数量无关,以及存储设备,耦合于所述处理器。装置可以包括所述处理器,用于将帧分成具有预定大小的像素组。装置可以包括所述处理器,用于确定一组的所有样本是否被点亮。装置可以包括,其中如果该组的所有样本未被点亮则对最小/最大深度值编码来表示该组。装置可以包括,其中如果该组的所有像素被点亮则所述处理器使用它的平面方程来对该组编码。装置可以包括所述处理器,用于根据该组的所有样本是否被点亮而不同地对该组像素的深度值编码。装置可以包括所述处理器,用于如果不是一组的所有样本都被点亮则对该组像素的平面位、像素掩蔽和最小和最大深度编码,如果该组的所有样本都被点亮则对该组像素的平面位、像素掩蔽和平面方程编码。
本文描述的图形处理技术可以在各种硬件架构中实现。例如,图形功能性可以在芯片集内集成。备选地,可以使用离散图形处理器。作为再另一个实施例,图形功能可以由通用处理器(其包括多核处理器)实现。
在该整个说明书中对“一个实施例”或“实施例”的引用意指连同该实施例描述的特定特征、结构或特性包括在本公开所包含的至少一个实现内。从而,短语“一个实施例”或“在实施例中”的出现不一定都指相同实施例。此外,可以采用除图示的特定实施例以外的其他适合形式设立特定特征、结构或特性并且所有这样的形式可以包含在本申请的权利要求内。
尽管已描述有限数量的实施例,本领域内技术人员将意识到从其中的许多修改和变化。规定附上的权利要求涵盖所有这样的修改和变化,它们落入本公开的真正精神和范围内。
Claims (7)
1.一种方法,其包括:
将深度值存储在深度缓冲器中以用于多采样抗混叠,所述缓冲器每像素具有若干样本;以及
对所述深度值编码使得所述深度缓冲器的大小相同而与每像素的样本数量无关;
将帧分成具有预定大小的像素组;
确定一组的所有样本是否被点亮;
如果该组的所有样本未被点亮则对最小/最大深度值编码来表示该组;
如果该组的所有像素被点亮则使用它的平面方程来对该组编码。
2.如权利要求1所述的方法,其包括如果不是一组的所有样本都被点亮则对该组像素的平面位、像素掩蔽以及最小和最大深度编码,如果该组的所有样本都被点亮则对该组像素的平面位、像素掩蔽和平面方程编码。
3.一种装置,其包括:
硬件处理器,用于将深度值存储在深度缓冲器中以用于多采样抗混叠,所述缓冲器每像素具有若干样本;以及对所述深度值编码使得所述深度缓冲器的大小相同而与每像素的样本数量无关;以及
存储设备,其耦合于所述处理器;
其中所述处理器用于将帧分成具有预定大小的像素组,确定一组的所有样本是否被点亮,如果该组的所有样本未被点亮则对最小/最大深度值编码来表示该组,并且如果该组的所有像素被点亮则所述处理器使用它的平面方程来对该组编码。
4.如权利要求3所述的装置,所述处理器用于如果不是一组的所有样本都被点亮则对该组像素的平面位、像素掩蔽以及最小和最大深度编码,如果该组的所有样本都被点亮则对该组像素的平面位、像素掩蔽和平面方程编码。
5.一种装置,其包括:
用于将深度值存储在深度缓冲器中以用于多采样抗混叠的部件,所述缓冲器每像素具有若干样本;以及
用于对所述深度值编码使得所述深度缓冲器的大小相同而与每像素的样本数量无关的部件;
用于将帧分成具有预定大小的像素组的部件;
用于确定一组的所有样本是否被点亮的部件;
用于如果该组的所有样本未被点亮则对最小/最大深度值编码来表示该组的部件;
用于如果该组的所有像素被点亮则使用它的平面方程来对该组编码的部件。
6.如权利要求5所述的装置,其包括用于如果不是一组的所有样本都被点亮则对该组像素的平面位、像素掩蔽以及最小和最大深度编码的部件,用于如果该组的所有样本都被点亮则对该组像素的平面位、像素掩蔽和平面方程编码的部件。
7.一种计算机可读介质,具有存储在其上的指令,所述指令在执行时促使计算机执行如权利要求1-2中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/492,173 US9412195B2 (en) | 2014-09-22 | 2014-09-22 | Constant buffer size multi-sampled anti-aliasing depth compression |
US14/492173 | 2014-09-22 | ||
PCT/US2015/046064 WO2016048499A1 (en) | 2014-09-22 | 2015-08-20 | Constant buffer size multi-sampled anti-aliasing depth compression |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106575440A CN106575440A (zh) | 2017-04-19 |
CN106575440B true CN106575440B (zh) | 2020-06-16 |
Family
ID=55526214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580044693.7A Expired - Fee Related CN106575440B (zh) | 2014-09-22 | 2015-08-20 | 恒定缓冲器大小多采样抗混叠深度压缩 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9412195B2 (zh) |
EP (1) | EP3198562A4 (zh) |
CN (1) | CN106575440B (zh) |
WO (1) | WO2016048499A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10238973B2 (en) * | 2014-10-24 | 2019-03-26 | Electronic Arts Inc. | Generating digital elements using non-deterministic selection |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
US10319138B2 (en) | 2017-04-01 | 2019-06-11 | Intel Corporation | Graphics with early stencil test |
US10102609B1 (en) | 2017-04-01 | 2018-10-16 | Intel Corporation | Low granularity coarse depth test efficiency enhancement |
US10242494B2 (en) | 2017-04-01 | 2019-03-26 | Intel Corporation | Conditional shader for graphics |
CN111192351B (zh) * | 2018-11-14 | 2023-06-02 | 芯原微电子(上海)股份有限公司 | 边缘抗锯齿的图形处理方法、系统、存储介质及装置 |
CN110113614B (zh) * | 2019-05-13 | 2022-04-12 | 格兰菲智能科技有限公司 | 图像处理方法及图像处理装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1591478A (zh) * | 2003-09-03 | 2005-03-09 | 矽统科技股份有限公司 | 改善计算机绘图系统中深度信息传输频宽的方法及装置 |
US7460131B2 (en) * | 2003-09-30 | 2008-12-02 | Sharp Laboratories Of America, Inc. | Methods and systems for processing image data for display on LC displays |
CN101802872A (zh) * | 2007-09-12 | 2010-08-11 | 爱立信电话股份有限公司 | 深度缓冲器压缩 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9518530D0 (en) * | 1995-09-11 | 1995-11-08 | Informatix Inc | Image processing |
US6246415B1 (en) * | 1998-04-30 | 2001-06-12 | Silicon Graphics, Inc. | Method and apparatus for culling polygons |
US6549203B2 (en) * | 1999-03-12 | 2003-04-15 | Terminal Reality, Inc. | Lighting and shadowing methods and arrangements for use in computer graphic simulations |
US6577307B1 (en) * | 1999-09-20 | 2003-06-10 | Silicon Integrated Systems Corp. | Anti-aliasing for three-dimensional image without sorting polygons in depth order |
US6411295B1 (en) * | 1999-11-29 | 2002-06-25 | S3 Graphics Co., Ltd. | Apparatus and method for Z-buffer compression |
US7242400B2 (en) * | 2002-11-13 | 2007-07-10 | Ati Technologies Ulc | Compression and decompression of data using plane equations |
US8654135B1 (en) * | 2008-09-10 | 2014-02-18 | Nvidia Corporation | A-Buffer compression for different compression formats |
US9330475B2 (en) * | 2012-05-01 | 2016-05-03 | Qualcomm Incorporated | Color buffer and depth buffer compression |
US9454843B2 (en) * | 2013-02-05 | 2016-09-27 | Nvidia Corporation | Modulated and blended anti-aliasing |
US9569882B2 (en) * | 2013-12-20 | 2017-02-14 | Intel Corporation | Four corner high performance depth test |
-
2014
- 2014-09-22 US US14/492,173 patent/US9412195B2/en active Active
-
2015
- 2015-08-20 EP EP15844458.8A patent/EP3198562A4/en not_active Withdrawn
- 2015-08-20 CN CN201580044693.7A patent/CN106575440B/zh not_active Expired - Fee Related
- 2015-08-20 WO PCT/US2015/046064 patent/WO2016048499A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1591478A (zh) * | 2003-09-03 | 2005-03-09 | 矽统科技股份有限公司 | 改善计算机绘图系统中深度信息传输频宽的方法及装置 |
US7460131B2 (en) * | 2003-09-30 | 2008-12-02 | Sharp Laboratories Of America, Inc. | Methods and systems for processing image data for display on LC displays |
CN101802872A (zh) * | 2007-09-12 | 2010-08-11 | 爱立信电话股份有限公司 | 深度缓冲器压缩 |
Non-Patent Citations (1)
Title |
---|
Efficient Depth Buffer Compression;Hasselgren J;《Acm Siggraph/eurographics Symposium on Graphics Hardware. ACM》;20060903;第1-8页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3198562A4 (en) | 2018-05-23 |
US20160086374A1 (en) | 2016-03-24 |
US9412195B2 (en) | 2016-08-09 |
WO2016048499A1 (en) | 2016-03-31 |
EP3198562A1 (en) | 2017-08-02 |
CN106575440A (zh) | 2017-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10152764B2 (en) | Hardware based free lists for multi-rate shader | |
CN106575431B (zh) | 用于高度高效的图形处理单元(gpu)执行模型的方法和装置 | |
CN110136223B (zh) | 使用三角形的属性的加权平均来合并粗像素着色的片段 | |
US20180082464A1 (en) | Apparatus and method for an efficient 3d graphics pipeline | |
US10354434B1 (en) | Level of detail selection during ray tracing | |
US9916682B2 (en) | Variable precision shading | |
CN106575440B (zh) | 恒定缓冲器大小多采样抗混叠深度压缩 | |
CN106796713B (zh) | Msaa中使用索引位进行压缩 | |
CN106575430B (zh) | 用于像素哈希的方法和装置 | |
CN107408210B (zh) | 基于边缘的覆盖掩码压缩 | |
WO2018052617A1 (en) | Hierarchical z-culling (hiz) optimization for texture-dependent discard operations | |
CN106662999B (zh) | 用于simd结构化分支的方法和装置 | |
CN106575451B (zh) | 用于对像素区域进行着色的方法、装置、设备及存储介质 | |
CN107077758B (zh) | 零覆盖光栅化剔除 | |
CN106575443B (zh) | 用于存储多点采样图形保真的分层索引位的方法及其装置 | |
US20160379403A1 (en) | Filtering Multi-Sample Surfaces | |
WO2016126400A1 (en) | Method and apparatus for direct and interactive ray tracing of a subdivision surface | |
WO2017171568A1 (en) | Apparatus and method for asynchronous texel shading | |
US10089779B2 (en) | Apparatus and method for conservative rasterization of polygons | |
US9600926B2 (en) | Apparatus and method decoupling visibility bins and render tile dimensions for tiled rendering | |
US9633452B2 (en) | Resolving multi-sampled anti-aliasing buffers into single sampled buffers | |
CN108292426B (zh) | 基于部分跨度的光栅化 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200616 Termination date: 20210820 |