CN104952047A - 抗锯齿系统及方法 - Google Patents
抗锯齿系统及方法 Download PDFInfo
- Publication number
- CN104952047A CN104952047A CN201510249480.XA CN201510249480A CN104952047A CN 104952047 A CN104952047 A CN 104952047A CN 201510249480 A CN201510249480 A CN 201510249480A CN 104952047 A CN104952047 A CN 104952047A
- Authority
- CN
- China
- Prior art keywords
- vpu
- frame data
- data
- video
- antialiasing
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000012545 processing Methods 0.000 claims abstract description 75
- 238000005070 sampling Methods 0.000 claims abstract description 61
- 230000008569 process Effects 0.000 claims description 36
- 238000000605 extraction Methods 0.000 claims description 21
- 230000015572 biosynthetic process Effects 0.000 claims description 13
- 238000003786 synthesis reaction Methods 0.000 claims description 13
- 239000002131 composite material Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 27
- 238000012937 correction Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000002194 synthesizing effect Effects 0.000 description 9
- 230000003321 amplification Effects 0.000 description 8
- 238000003199 nucleic acid amplification method Methods 0.000 description 8
- 230000001681 protective effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000003032 molecular docking Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- GJWAPAVRQYYSTK-UHFFFAOYSA-N [(dimethyl-$l^{3}-silanyl)amino]-dimethylsilicon Chemical compound C[Si](C)N[Si](C)C GJWAPAVRQYYSTK-UHFFFAOYSA-N 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 229920000547 conjugated polymer Polymers 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- 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
- G06T5/00—Image enhancement or restoration
- G06T5/90—Dynamic range modification of images or parts thereof
- G06T5/92—Dynamic range modification of images or parts thereof based on global image properties
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/12—Indexing scheme for image data processing or generation, in general involving antialiasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2320/00—Control of display operating conditions
- G09G2320/02—Improving the quality of display appearance
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2320/00—Control of display operating conditions
- G09G2320/02—Improving the quality of display appearance
- G09G2320/0261—Improving the quality of display appearance in the context of movement of objects on the screen or movement of the observer relative to the screen
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Image Processing (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Generation (AREA)
Abstract
在此描述了一种用于改进在视频处理中的抗锯齿的系统和方法。实施例包括系统中的多个视频处理器(VPU)。每个VPU执行像素采样和像素中心采样(也称为多重采样以及超采样)的某种组合。每个VPU对相同的像素或像素中心执行采样,但是每个VPU都会产生的样本的位置与其他VPU的对应样本不同。每个VPU都把已经被多重采样和/或超采样的帧数据输出到合成器中,所述合成器对帧数据进行合成,以产生经过抗锯齿的渲染帧。所述经过抗锯齿的渲染帧具有有效双倍抗锯齿系数。
Description
本申请是申请日为2006年5月29日、申请号为200680018152.8的发明专利申请的分案申请。
交叉引用
与本申请同时提交的、由Philip J.Rogers、Jeffrey Cheng、DmitrySemiannokov和Raja Koduri发明的美国申请号为11/139,917的“Multiple Video Processing Unit(VPU)Memory Mapping”;
与本申请同时提交的、由Timothy M.Kelley、Jonathan L.Campbell和David A.Gotwalt发明的美国申请号为11/140,163的“ApplyNon-Homogeneous Properties to Multiple Video Processing Units(VPUs)”;
与本申请同时提交的、由Raja Koduri、Timothy M.Kelley和Dominik Behr所发明的美国申请号为11/140,114的“FrameSynchronization in Multiple Video Processing Unit(VPU)Systems”;
与本申请同时提交的、由Syed Athar Hussain、James Hunkins和Jacques Vallieres所发明的美国申请号为11/139,744的“SynchronizingMultiple Cards in Multiple Video Processing Unit(VPU)Systems”;
与本申请同时提交的、由James Hunkins和Raja Koduri所发明的美国申请号为11/140,165的“Compositing in Multiple Video ProcessingUnit(VPU)Systems”;
与本申请同时提交的、由Jonathan L.Campbell和Maurice Ribble所发明的美国申请号为11/139,893的“Dynamic Load Balancing inMultiple Video Processing Unit(VPU)Systems”;
于2005年5月27日提交的、由Yaoqiang(George)Xie和RoumenSaltchev所发明的美国申请号为11/140,040的“Computing Device withFlexibly Configurable Expansion Slots,and Method of Operation”。
在此将每个上述申请的内容全部引用以供参考。
技术领域
本发明属于图形和视频处理领域。
背景技术
图形和视频处理硬件和软件逐年继续地变得更加有能力并且更加易于获得。图形和视频处理电路典型情况下存在于计算机系统中的附加卡(add-on card)上,但是也可以位于主板本身上。图形处理器负责创建由监视器所显示的图像。在早期的基于文本的个人计算机(PC)中,这是一个相对简单的任务。然而,现代有图形能力的操作系统的复杂性已经显著地增加了要显示的信息量。实际上,现在要由系统的主处理器或中央处理器(CPU)来进行图形处理是不切实际的。结果,显示动作典型情况下已经被移交给越来越智能的图形卡,所述图形卡包括被称为图形处理单元(graphics processing units,GPU)或视频处理单元(VPU)的专用的协处理器。
在理论上,可以由计算机系统利用已知方法来生成非常高质量的复杂视频。然而,在大部分计算机系统中,质量、速度和复杂度受成本的限制。例如,当存储器需求和计算复杂度增加时,成本增加。一些系统是在远高于正常成本限制的情况下创建的,诸如用于军事飞行模拟器的显示系统。这些系统常常是非常少量生产的整体上一种类型一台(one-of-a-kind)的计算机系统。然而,以可接受的速度生成高质量的复杂视频对于相当“高端”的消费者级系统来说也可能会迅速变得价格高得惊人。因此创建还能够大量生产同时还具有不断改进的整体质量和能力的VPU和VPU系统是一个正面临的挑战。
另一挑战是创建这样一种VPU和VPU系统:其可以输送可接受的更高质量的视频、不要求过多的存储器、以所期望的速度操作、并且可与现有的计算机系统无缝兼容。
存在着一般需要在质量与性能之间做出某些折衷的视频处理的各个方面。一个例子就是校正锯齿(aliasing),通常被称作是抗锯齿(anti-aliasing)或“AA”。锯齿是由于渲染处理的人工因素出现在所显示的帧中而产生的公知的效应。渲染由VPU来执行,且包括绘制要显示的像素。锯齿包括边缘锯齿及表面锯齿。边缘锯齿会在应当看上去平滑的边缘中产生阶梯。表面锯齿包括闪现(flashing)或“弹出(poping)”非常细小的多角形,往往被称为莫尔图案(moirepatterns)。用于减轻这些效应的现有AA技术包括多重采样(multisampling)及超采样(supersampling))。多重采样通过创建像素的多个样本解决边缘锯齿,所述像素的多个样本用于产生像素之间的中间点。对所述多个样本进行平均以确定所显示像素的色值。多重采样的图像中的所显示边缘具有柔化的阶梯效应。多重采样对于表面锯齿没有效果。
超采样既解决边缘锯齿又解决表面锯齿。然而,超采样比多重采样在计算上更加耗时,很少在消费者系统中使用。像素中心携带纹理信息,而不是像素。在超采样中,利用不同的像素中心来多次渲染每一个像素以产生多个颜色值,然后对所述颜色值进行平均,以给出最终的像素颜色。这为整个图像给出一种柔化效应。
在传统系统中进行多重采样或进行超采样效率差的原因之一在于,像素数据必须不止一次地穿过在VPU中的视频处理流水线以创建对于像素或者像素中心的偏移样本。这增加了计算量并且增加了处理时间。
发明内容
根据本发明的第一方面,一种视频处理设备,包括:
多个视频处理单元(VPU),其中,每个VPU处理与一个或多个视频帧相对应的数据,所述处理包括所述对一个或多个帧的像素进行采样以产生多个样本从而使得每个VPU产生不同的样本;以及
连结模块,用于从每个VPU中接收所述多个样本,并且在输出视频帧中组合所述样本。
根据本发明的第二方面,一种系统包括:
至少一个驱动器,用于从视频应用程序接收视频数据;
多个视频处理单元(VPU),耦合于所述至少一个驱动器,且用于从所述至少一个驱动器中接收命令和数据以处理来自所述视频应用程序的所述视频数据,其中,所述命令包括向每一个所述VPU的发出的不同的抗锯齿命令,所述抗锯齿命令指导每一个所述VPU对同一组视频数据执行不同的抗锯齿操作。
根据本发明的第三方面,提出了一种用于处理视频数据的方法,该方法包括:
为多个视频处理单元(VPU)产生命令,其中,所述命令包括用于处理特定视频帧的数据和指令,并且其中,所述指令中的至少一些专用于一个或多个特定VPU,所述指令包括抗锯齿指令;
所述多个VPU中的每一个根据所述命令处理所述视频数据,所述处理包括对所述视频数据执行至少一种抗锯齿操作,以产生用于所述特定视频帧的输出数据;以及
组合来自每个所述VPU的所述输出数据,以产生输出视频帧,其中,所述输出视频帧的抗锯齿系数大于来自任何一个所述VPU的任何所述输出数据的抗锯齿系数。
根据本发明的第四方面,提出了一种用于在包括多个处理单元的系统中执行抗锯齿的方法,该方法包括:
所述多个处理单元中的每一个都对视频数据执行不同的抗锯齿操作;以及
把所述不同抗锯齿操作的结果进行组合,以产生帧数据。
根据本发明的第五方面,一种用于执行抗锯齿的设备,包括:
至少一个驱动器,用于从应用程序接收视频数据;
多个专用处理单元,耦合于所述至少一个驱动器,并且用于从所述至少一个驱动器接收命令和数据以处理来自所述应用程序的所述视频数据,其中,所述命令包括向所述多个处理单元中的每一个发出的不同的抗锯齿命令,所述命令指导所述多个处理单元中的每一个对所述视频数据执行不同的抗锯齿操作;以及
至少一个合成器,用于接收所述不同抗锯齿操作的结果,并且将其进行组合以产生帧数据。
根据本发明的第六方面,一种处理器设备,包括:
视频处理电路,用于:
接收命令和数据,所述命令和数据包括用于帧的像素数据和处理命令;
对所述像素数据执行抗锯齿操作,其中,所述抗锯齿操作可从包含以下各项的组中选出:根据可选抗锯齿系数的多重采样、根据可选抗锯齿系数的超采样、以及时间域抗锯齿;以及
将所述抗锯齿操作的结果传送给合成器,以便与由其他视频处理电路对所述像素数据执行的其他操作结果进行组合。
根据本发明的第七方面,一种用于控制抗锯齿操作的用户接口方法,包括:
接收用户输入,以配置多个视频处理单元(VPU)来允许抗锯齿;
接收用户输入,以配置多个视频处理单元(VPU)来禁止抗锯齿;以及
接收用户输入,以配置多个视频处理单元(VPU)来执行抗锯齿,包括每一个所述VPU对像素数据执行不同的抗锯齿操作。
根据本发明的第八方面,提供了视频处理单元(VPU),包括:
至少一个驱动器,用于从视频应用程序接收视频数据,以构成用于产生帧数据的命令和数据,所述命令和数据包括抗锯齿命令和数据,其中,所述抗锯齿命令和数据包括与产生像素数据的第一子集相关的第一子集,以及与产生像素数据的后续子集相关的至少一个后续子集,其中,使所述至少一个后续子集可用于由在该VPU外部的至少一个视频处理流水线进行的处理,以产生像素数据的至少一个后续子集;
视频处理流水线,用于接收所述的命令和数据的第一子集,以进行处理来产生所述的像素数据的第一子集;
至少一个合成器,用于对所述的像素数据的第一子集和所述的像素数据的至少一个第二子集进行接收及组合,以产生所述帧数据来进行显示。
根据本发明的第九方面,提供了一种视频处理单元(VPU),包括:
视频处理流水线,用于接收包含抗锯齿命令和数据在内的命令和数据的子集,以进行处理来产生像素数据的相应子集,其中,所述视频处理流水线还用于向合成器传送所述的像素数据的子集,以与像素数据的另一个子集相结合来产生帧数据。
根据本发明的第十方面,一种其上存储有指令的计算机可读介质,当被处理时,所述指令用于创建可执行以下方法的电路,所述方法包括:
接收命令和数据,所述命令和数据包括用于帧的像素数据和处理命令;
对所述像素数据执行抗锯齿操作,其中,所述抗锯齿操作可从包含以下各项的组中选出:根据可选抗锯齿系数的多重采样、根据可选抗锯齿系数的超采样、以及时间域抗锯齿;以及
将所述抗锯齿操作的结果传送给合成器,以便与其他视频处理电路对所述像素数据所执行的操作的结果进行组合。
根据本发明的第十一方面,提供了一种其上存储有指令的计算机可读介质,当被处理时所述指令用于创建能够执行下述方法的电路,所述方法包括:
对像素数据执行抗锯齿操作,其中,所述抗锯齿操作可从包含以下各项的组中选出:根据可选抗锯齿系数的多重采样、根据可选抗锯齿系数的超采样、以及时间域抗锯齿;以及
接收其他抗锯齿操作的结果,以便与所述执行的抗锯齿操作的结果进行组合。
通过参考来加以结合
这里通过在相同程度上进行参考来结合在此说明书中所提及的所有公布和专利申请,就好像每个相应公布或专利申请被专门地且分别地表明为通过参考进行结合。
附图说明
图1是根据一个实施例的视频处理系统的框图;
图2是根据一个实施例的利用抗锯齿的视频处理的示意图;
图3-8是根据各个实施例举例说明抗锯齿的几种模式的像素示意图;
图9A和9B分别显示了6XMSAA和12XMSAA的结果;
图10A显示了不采用SSAA所产生的屏幕;
图10B显示了利用2XSSAA所产生的与图10A相同的屏幕;
图11A显示了不采用SSAA所产生的屏幕;
图11B显示了利用2XSSAA所产生的与图11A相同的屏幕;
图12是根据一个实施例的包括抗锯齿的视频处理系统的框图;
图13是根据一个实施例的包括抗锯齿的视频处理系统的各个组件的框图;
图14是视频处理系统的更详细的框图,其配置与根据实施例的图13的配置相似;
图15是依照一个实施例的单卡视频处理系统的示意图;
图16是依照一个实施例的单卡视频处理系统的示意图;
图17是依照一个实施例的双卡视频处理系统的示意图;
图18是依照一个实施例的双卡视频处理系统的示意图;以及
图19是依照一个实施例的连结模块(interlink module,IM)的框图。
具体实施方式
在此描述了一种可减轻边缘锯齿效应和表面锯齿效应的抗锯齿(AA)的系统和方法。实施例包括在具有至少一个图形处理单元(GPU)或视频处理单元(VPU)的系统中应用多重采样技术与超采样技术的组合。如这里所用,GPU和VPU是可交换的术语。在一个实施例中,所述系统是可编程的,从而使得由一个或多个VPU将样本位置相对于初始位置在像素内进行可编程地偏移。初始位置例如由系统的公共视频驱动器来确定。在一个实施例中,多个VPU中的每一个都并行地处理同一视频帧,并且在每个VPU中将相同的像素内的样本偏移到不同的可编程位置。合并(或组合或合成)由多个VPU中的每一个所处理的视频帧,以便生成将要显示的帧。在要显示的帧中,AA采样系数实际上乘以VPU的数目。例如,如果每个VPU执行2X采样,则要显示的帧就包括4X采样。在各个实施例中,驱动器是可编程的,以指导VPU来执行按照可选放大系数的多重采样、按照可选放大系数的超采样、或者按照可选放大系数的多重采样与按照可选放大系数的超采样的组合。
图1是依照实施例的视频处理系统100的框图。所述系统100包括应用程序102。应用程序102是要求视频处理能力的最终用户应用程序,诸如视频游戏应用程序。应用程序102与应用程序编程接口(API)104通信。几个API可用于在视频处理环境中使用。API被开发为在诸如应用程序102之类的应用软件与运行所述应用程序的视频硬件之间的中介物。随着新的芯片组甚至全新的硬件技术不断出现,应用程序开发者很难考虑并利用最新的硬件功能。为每种可预见的硬件组专门编写应用程序也是不可能的。API防止应用程序必须过于具体到硬件。应用程序可以依照标准化格式向API而不是直接向硬件输出图形数据和命令。可用API的例子包括DirectX(来自Microsoft)和OpenGL(来自Silicon Graphics)。
API 104可以是用于运行视频应用程序的多个可用API中的任何一个。API 104与驱动器106进行通信。驱动器106典型情况下由视频硬件的制造商编写,并且驱动器106将从API接收的标准代码转换为硬件所理解的本地格式。驱动器允许来自例如应用程序、进程或用户直接设置的输入。在此处描述的实施例中,这种设置包括用于选择多重采样系数、超采样系数或其组合的设置。例如,用户可以经由用户接口(UI)来选择设置,所述用户接口包括利用如这里所描述的视频处理硬件和软件向用户所提供的UI。
在一个实施例中,视频硬件包括两个视频处理单元:VPU A 108和VPU B 110。在其它实施例中,可以有少于或多于两个的VPU。在各个实施例中,VPU A 108和VPU B 110是完全相同的。在各个其它实施例中,VPU A 108和VPU B 110不是完全相同的。下面将非常详细地描述包括视频处理系统的不同配置的各个实施例。
驱动器106向VPU A 108和VPU B 110发出命令。同时向VPU A108和VPU B 110发出的命令用于处理将要显示的同一帧。VPU A 108和VPU B 110均执行用于处理该帧的一系列命令,包括以一种可编程的方式,从API中所接收到的样本位置开始相对于像素和/或像素中心偏移样本位置。驱动器106可编程地命令VPU A 108和VPU B 110按照抗锯齿(AA)系数来多重采样和/或超采样像素和/或像素中心。在一个实施例中,VPU A和VPU B相对于相同的像素和/或像素中心偏移样本,但是把它们偏移到不同的样本位置。
当VPU A 108和VPU B 110中的任何一个完成执行用于该帧的命令时,该帧数据被发送到合成器114。合成器114选择性地包括在连结模块112中,如下面更完整地描述。在合成器114中组合或合并或合成来自VPU A 108和VPU B 110中每一个的帧数据,以产生将要被渲染到显示器116的帧。在要显示的帧中,AA采样系数实际上乘以VPU的数目。例如,如果每个VPU执行2X采样,则要显示的帧就包括4X采样。在各个实施例中,驱动器104是可编程的,以指导VPU A 108和VPU B 110来执行按照可选放大系数的多重采样、按照可选放大系数的超采样、或者按照可选放大系数的多重采样与按照可选放大系数的超采样的组合。如这里所用,术语组合、合并、合成、混合或连结指的都是如这里所描述的IM 112和/或合成器114的相同能力。
图2是依照一个实施例的利用AA的视频处理200的示意图。如参考图1所在先描述的那样,VPU A 208和VPU B 210均根据来自可编程驱动器(未示出)的指令来处理视频数据。显示了由VPU A 208所输出的采样图案213的图例。采样图案213是用于表明2X采样的12×12网格。对于每一个像素来说,在12×12网格中放入2个像素样本。12×12的尺寸仅仅是举例的目的,也可以设想任何其他可操作的尺寸。在所示例子中,黑色正方形是像素中心,而“X”是像素样本。像素样本偏离于由API(未示出)所指定的初始默认位置。偏移位置可在驱动器中进行编程,并且在从驱动器到VPU A 208的命令中对其进行指定。
在整个说明书中,为了方便起见,由VPU输出的样本图案还被称为VPU的输出。例如,样本图案213还被称为VPU A 208的输出213。本领域技术人员应当理解并明白,由VPU输出的样本图案(或此处被称为VPU的输出)在大多数实施例中不被输出到显示器中。相反地,由VPU输出的样本图案(或其一部分)用来产生最终要被输出到诸如LCD、平板CRT等等之类的显示器的帧或其一部分。也就是说,所输出的样本图案在当前实施例和大多数实施例中被用作到VPU的另一部分的输入,以产生要输出到显示器的帧(或其一部分)。
由VPU A 208在线性空间中以一种已知的方式对样本进行平均。然而,像素数据一般在伽玛(gamma)空间中,因此必须在进行平均之前用去伽玛(degamma)运算来转换到线性空间。VPU A 208执行去伽玛运算,执行平均运算,然后执行伽玛运算以便使VPU的输出处于伽玛空间中。通常这么做是为了提高所显示图像的质量。因此再次重申,在常规系统中,VPU的输出自动处于伽玛空间中。然而,在此处的各个实施例中,所需要的是具有在线性空间中的输出,以便进行如下所述的组合或合成操作。因此,VPU A 208执行额外的去伽玛运算以把输出213转换到线性空间。在一个实施例中,VPU A 208的视频流水线中的纹理单元用来执行去伽玛运算。在其他实施例中,这个去伽玛运算可在VPU外部执行,例如在合成器212中执行。
作为伽玛校正的一个例子,专利号为5,398,076、题目为“GammaCorrecting Processing of Video Signals”(授权给ATI技术公司)的美国专利中,描述了一种包括像素数据的伽玛校正的处理视频信号的方法。另外,专利号为6,020,921、题目为“Simple Gamma CorrectionCircuit for Multimedia”(授权给ATI技术公司)的美国专利中描述了一种伽玛校正电路。在一个实施例中,根据以下函数来执行伽玛校正:
If(X<=0.00304)
Y=12.92*X;
Else
Y=1.055*pow(x,1.0/2.4)-0.055
在一个实施例中,根据以下函数来执行去伽玛运算
If(X<=0.03928)
Y=X/12.92
Else
Y=pow(X+0.055)/1.055,2.4)
在一个实施例中,由合成器212执行的算法也可以如下所述:对(来自VPU A 208和VPU B 210)两个输入流上的每一个像素的三原色中的每一种进行平整(flatten);把VPU A 208与VPU B 210之间的每种相应颜色相加;除以2并转到下一步(例如,(slave_green+master_green)/2->预先输出的绿色);以及把预先输出的像素转换回经过伽玛校正的颜色值。在一个实施例中,采用了伽玛校正查找表。
类似地,显示了来自VPU B 210的输出215。输出215是用于表明2X采样的12×12网格。对于每一个像素来说,在12×12网格中放入2个像素样本。12×12的尺寸仅仅是举例的目的,也可以设想任何其他可操作的尺寸。在所示例子中,黑色正方形是像素中心,而“X”是像素样本。像素样本偏离于由API(未显示)指定的初始默认位置。偏移位置可在驱动器中进行编程,并且在从驱动器到VPU B210的命令中对其进行指定。
由VPU B 210在线性空间中以一种已知的方式对样本进行平均。然而,像素数据一般在伽玛空间中,因此必须在进行平均之前用去伽玛运算来转换到线性空间。VPU B 210执行去伽玛运算,执行平均运算,然后执行伽玛运算以便使VPU的输出处于伽玛空间中。通常这么做是为了提高所显示图像的质量。因此再次重申,在常规系统中,VPU的输出自动处于伽玛空间中。然而,在此处的各个实施例中,所需要的是具有在线性空间中的输出,以便进行如下所述的组合或合成操作。因此,VPU B 210执行额外的去伽玛运算以把输出215转换到线性空间。在一个实施例中,VPU B 210的视频流水线中的纹理单元用来执行去伽玛运算。
线性输出213和215在合成器214中组合。合成器214选择性地包括在连结模块212中,如下面更完整地描述。来自VPU A 208和VPU B 210中每一个的帧数据在合成器214中被合并、或组合、或合成以产生要渲染到显示器(未显示)的帧。合成操作是在线性空间中的。合成器214完成合成操作,并且对结果执行伽玛运算以产生要显示的经过伽玛校正的帧数据。输出217包括经过伽玛校正的像素数据,并且显示如何组合输出213和215。每个输出213和215都被2X多重采样,而输出217被4X次多重采样。因此,如视频处理实施例200中所示那样,利用一次通过视频流水线就可获得更为改进的多重采样结果。如下参考图3-8所述的那样,也可以通过编程来选择其他抗锯齿模式,以包括多重采样与超采样(对像素中心进行采样)的各种组合。
参考图3-8,举例说明了根据所描述的实施例的抗锯齿的若干模式。在图3-8的每一个中,VPU A的像素表示为星号,VPU A的像素中心表示为黑色网格方框,VPU B的像素表示为条纹网格方框,以及VPU B的像素中心表示为同心圆。图3是显示先前参考图2所描述的模式的示意图。这种模式称为具有1XSSAA的4XMSAA,或具有1X超采样AA的4X多重采样AA(其中,“4”被称为MS系数,而“1”被称为SS系数)。VPU A和VPU B每一个都分别对313和315中所示的像素进行采样。在把313与315组合或合成之后,要显示的输出是317,如所示。
图4是显示一种具有1XSSAA的8XMSAA的模式或者采用1X超采样AA的8X多重采样AA的示意图。VPU A和VPU B每一个都分别对413和415中所示的像素进行采样。在把413与415组合或合成之后,要显示的输出是417,如所示。
图5是显示一种具有1XSSAA的12XMSAA的模式或者具有1X超采样AA的12X多重采样AA的示意图。VPU A和VPU B每一个都分别对513和515中所示的像素进行采样。在把513与515组合或合成之后,要显示的输出是517,如所示。
图6是显示一种具有2XSSAA的4XMSAA的模式或者具有2X超采样AA的4X多重采样AA的示意图。VPU A和VPU B每一个都分别对613和615中所示的像素进行采样。在这种模式中,由VPUA和VPU B中的每一个对样本进行不同地偏移。在把613与615组合或合成之后,要显示的输出是617,如所示。
图7是显示一种具有2XSSAA的8XMSAA的模式或者具有2X超采样AA的8X多重采样AA的示意图。VPU A和VPU B每一个都分别对713和715中所示的像素进行采样。在这种模式中,由VPUA和VPU B中的每一个对像素样本进行不同地偏移。在把713与715组合或合成之后,要显示的输出是717,如所示。
图8是显示一种具有2XSSAA的12XMSAA的模式或者具有2X超采样AA的12X多重采样AA的示意图。VPU A和VPU B每一个都分别对813和815中所示的像素进行采样。在这种模式中,由VPUA和VPU B中的每一个对像素样本进行不同地偏移。在把813与815组合或合成之后,要显示的输出是817,如所示。
图3-8作为可被配置的AA模式的例子而被给出。也可设想任何其他的组合。例如MS系数与SS系数的不同组合、或者没有MS仅有SS也都是可能的。未明确显示的AA系数与MS系数都是可以设想的。
图9和11是AA结果的示意图。图9A和9B分别显示了6XMSAA和12XMSAA的结果。如所看到的那样,当MS系数提高时边缘锯齿效应减小。
图10A和10B是举例说明由于SS所造成的表面锯齿的降低而导致质量提高的示意图。图10A显示了在没有SSAA的情况下所产生的屏幕。图10B显示了利用2XSSAA所产生的与图10A相同的屏幕。在图10B中显著地降低了莫尔效应。
图11A和11B分别是图10A和10B的屏幕的局部放大图的示意图。图11A显示了不用SSAA所产生的屏幕。图11B显示了利用2XSSAA所产生的屏幕。
所描述的抗锯齿方法和设备还适用于未特别描述的其他类型的采样,包括二次采样和过采样(oversampling)。所描述的方法和设备还适用于时间域抗锯齿(temporal antialiasing)。例如,在一个实施例中,多个VPU中的每一个都及时处理不同的帧。然后如此处描述的那样对帧进行合成。
各个其他实施例还包括,多个VPU中的每一个以不同方式渲染同一帧。例如,一个VPU执行按照一个系数的多重采样而另一个VPU执行按照另一个系数的采样。同样,一个VPU能够对一个帧执行多重采样而另一个VPU能够对一个帧执行超采样。由每个VPU所产生的帧如在此所述的那样被合成。在又一个实施例中,一个VPU能够执行按照一个采样系数的采样(其中采样可以是任何类型的采样)而另一个VPU执行按照另一个系数的采样。由每个VPU所产生的帧如在此所述的那样被合成。每个VPU的采样系数是可配置的。在一个实施例中,每个VPU的采样行为可由用户经由UI来配置。在一个实施例中,所采用的采样配置的效率可构成由用户经由UI所进行配置或自动配置的基础。或者,相关VPU的性能可构成由用户经由UI所进行配置或自动配置的基础。
现在描述能够体现在此描述的抗锯齿方法的各个系统。
图2是依照一个实施例的系统1200的框图。系统1200包括可以存在于有视频能力的计算机系统的各个组件上的组件或元件。在一个实施例中,应用程序1202、驱动器1204和共享存储器1205存在于主机系统上,而其余组件存在于专用于视频的组件上,所述专用于视频的组件包括一个或多个视频卡,但是本发明并不局限于此。所示出的任何组件可以存在于任何地方,或者作为选择,各个组件可以经由有线或无线网络来远程访问其它组件。应用程序1202是要求视频处理能力的最终用户应用程序,诸如视频游戏应用程序。应用程序1202与应用程序编程接口(API)1204通信。API 1204可以是可用的图形或视频或3D API(包括DirectX(来自Microsoft)和OpenGL(来自Silicon Graphics))中的任何一个。
API 1204与驱动器1206通信。驱动器1206是为系统1200专门编写的,驱动器1206将从API 1204所接收的标准代码转换为VPU组件所理解的本地格式,下面将更完整地进行解释。
在一个实施例中,系统1200还包括两个VPU:VPU A 1208和VPU B 1210。本发明不局限于两个VPU。如这里所描述的本发明的各个方面可以在进行了对于本领域技术人员显而易见的修改之后采用一个VPU来实行。然而,所述系统在一个VPU的情况下将会没有采用一个以上VPU的情况高效。各个实施例还包括两个以上的VPU。在进行了对于本领域技术人员显而易见的修改后,可以实现具有两个以上VPU的系统,并且在至少一些情况下可能会比具有两个VPU的系统提供更好的效能。在各个实施例中,VPU A 1208和VPU B 1210可以是视频卡上,其每一个都包括视频处理器以及其他的相关硬件。如下面将进一步解释,本发明并不局限于此。例如,一个以上的VPU可以位于一个卡或板上。然而,如这里所提及,VPU旨在至少包含视频处理器。
VPU A 1208和VPU B 1210通过相应的环形缓冲器(ring buffer)A 1222和B 1224接收来自驱动器1206的命令和数据。所述命令指示VPU A 1208和VPU B 1210对该数据执行各种操作,以便最终生成用于显示器1230的渲染帧。
驱动器1206可以访问共享存储器1205。在一个实施例中,共享存储器1205或系统存储器1205是计算机系统上的存储器,其可由计算机系统总线上的其它组件访问,但是本发明并不局限于此。
在一个实施例中,共享存储器1205、VPU A 1208和VPU B 1210都可以访问共享通信总线1234,由此可以访问所述总线1234上的其它组件。在一个实施例中,共享通信总线1234是外围组件接口快速(peripheral component interface express,PCIE)总线,但是本发明并不局限于此。
在以下文献中具体地描述了PCIE总线,这里通过将其全部引用加以结合以供参考:
PCI ExpressTM,Base Specification,修订版1.1,2005年3月28日;
PCI ExpressTM,Card Electromechanical Specification,修订版1.1,2005年3月28日;
PCI ExpressTM,Base Specification,修订版1.a,2003年4月15日;和
PCI ExpressTM,Card Electromechanical Specification,修订版1.0a,2003年4月15日。
所有上述文献的版权为PCI-SIG所有。
在一个实施例中,VPU A 1208和VPU B 1210经由总线1234使用对等(peer-to-peer)协议来直接互相通信,但是本发明并不局限于此。在其它实施例中,在VPU A 1208和VPU B 1210之间可以有直接的专用通信机制。
VPU A 1208和VPU B 1210均分别具有可用的本地视频存储器1226和1228。在各个实施例中,其中一个VPU作为主VPU,而其它VPU作为从VPU,但是本发明并不局限于此。在其它实施例中,所述多个VPU可以是在另一组件的中央控制下的对等体。在一个实施例中,VPU A 1208充当主VPU并且VPU B 1210充当从VPU。
在一个这种实施例中,各种协调和组合功能由连结模块(interlinkmodule,IM)1212来执行,所述连结模块1212与VPU A 1208位于同一个卡上。这被示为用实线封闭的IM 1212。在这个实施例中,VPUA 1208和VPU B 1210经由总线1234相互通信,总线1234用于传送VPU之间的通信(例如,命令和控制)和数据。例如,当VPU B 1210向VPU A 1208上的IM 1212传送输出帧以便进行合成时(例如图1和2所示),该帧经由总线1234进行传送。
在各个其它实施例中,IM 1212并不位于VPU卡上,而是一个VPU A 1208和VPU B 1210均与其进行通信的独立组件。一个这种实施例包括“保护装置(dongle)”中的IM 1212,该“保护装置”易于被连接到VPU A 1208和VPU B 1210。这在图中由虚线封闭的IM1212来表示。在这个实施例中,VPU A 1208和VPU B 1210经由IM连接1232来至少执行一些通信。例如,VPU A 1208和VPU B 1210可以使用总线1234来传送命令和控制信息,并且经由IM连接1232来传送诸如帧数据之类的数据。
存在作为本发明不同实施例所设想的系统1200的许多配置。例如,如下所述的图13-17只图示了一些实施例。
图13是依照一个实施例的系统1300的各个组件的框图。系统1300包括主VPU卡1352和从VPU卡1354。主VPU卡1352包括主VPU1308,并且从VPU卡1354包括从VPU B 1310。在一个实施例中,VPU 1308和1310均经由PICE总线1334来通信。在一个实施例中,PCIE总线1334是被划分成两个X8PCIE总线1335的X16总线。VPU A 1308和B 1310中的每一个都被连接到总线1335。在一个实施例中,VPU A 1308和VPU B 1310只经由总线1335通信。在一个候选实施例中,VPU A 1308和VPU B 1310部分经由总线1335并且部分经由专用卡间连接1337来通信。在其它实施例中,VPU A 1308和VPU B 1310专门地经由连接1337来通信。
主VPU卡1352包括IM 1512。在VPU A 1308和VPU B 1310经由总线1335通信的一个实施例中,每个VPU处理一个帧,包括参考图1和2所阐述的采样。作为图13中的一个例子,显示为由系统1300执行4XMSAA。主VPU A 1308产生输出1309并且从VPU B 1310产生输出1311。输出1309和1311被输入到IM 1312以便进行如上所述的合成。在一个实施例中,从VPU B 1310经由如同点划线路径1363所示的总线1335和1334将其输出1311传送到IM 1312。在一个实施例中,从VPU B 1310经由如同点划线路径1361所示的专用卡间连接1337将其输出1311传送到IM 1312。IM 1312按照如上所述的那样组合所述输出1309和1311,以便生成用于显示的帧,其包括4XMSAA。此帧被IM 1312经由连接器1341输出到显示器1330。
主VPU卡1352包括连接器1340和1341。从VPU卡1354包括连接器1342和1343。连接器1340、1341、1342和1343是本领域中公知的用于发送所需信号的连接器。例如,在一个实施例中,连接器1341是“数字视频输入(digital video in,DVI)”连接器。可以有多于或少于在图1300中所示出的连接器数量。
在一个实施例中,这里所描述的各个配置可由用户来配置,以便使用任意数量个可用的VPU进行视频处理。例如,系统1300包括两个VPU,但是在穿越(pass-through)模式下,用户可以选择只使用一个VPU。在这种配置中,其中一个VPU可以是有效的,而另一个可能是无效的。在这种配置中,如这里所描述的抗锯齿可能是不可用的。然而,所启用的VPU可以执行常规的抗锯齿。从VPU卡B 1354到显示器1330的点划线路径1365表示在穿越模式中可以单独使用从VPU B 1310进行视频处理。类似地,在穿越模式中可以单独使用主VPU A 1308进行视频处理。
图14是系统1400的更详细的框图,所述系统1400是与依照一个实施例的图13的系统相类似的配置。所述系统1400包括两个VPU卡,主VPU卡1452和从VPU卡1454。主VPU卡1452包括主VPUA 1408,并且从VPU卡1454包括从VPU B 1410。
主VPU卡1452还包括接收器1448和发送器1450,其在一个实施例中用于接收和发送TDMS信号。在一个实施例中,双重连接器1445是DMS连接器。主卡还包括用于向显示器输出数字视频信号的DVI连接器1446,所述数字视频信号包括帧数据。主VPU卡1452还包括视频数模转换器(DAC)。如同所示,连结模块(IM)1412连接在VPU 1408和发送器以及接收器之间。VPU A 1408包括集成的收发器(被标记为“集成”)和数字视频输出(DVO)连接器。
从VPU卡1454包括两个DVI连接器1447和1448。从VPU B1454包括DVO连接器和集成收发器。作为经由PCIE总线(未示出)进行通信的候选实施例,主VPU卡1408和从VPU卡1410经由专用的卡间连接1437来通信。
图15-17是系统配置的其他实施例的图。图15是依照一个实施例的单卡系统1500的图。所述系统1500包括“超级卡(supercard)”或“巨卡(monstercard)”1558,其包括一个以上的VPU。在一个实施例中,超级卡1558包括两个VPU,主VPU A 1508和从VPU B 1510。超级卡1558还包括IM 1512,IM 1512包括如先前所述的用于组合或合成来自两个VPU的数据的合成器,。在其它实施例中还可以用专用的卡上VPU间连接来进行VPU间通信(未示出)。在一个实施例中,主VPU A 1508和从VPU B 1510均被连接到X8PCIE总线1535,所述X8PCIE总线1535源自X16PCIE总线1534。
所述系统1500包括先前所描述的多个VPU(还被称为多VPU)的功能中的全部功能。例如,主VPU A 1508对所采样的帧1509进行处理并且将其输出到IM 1512。从VPU B 1510处理并输出所采样的帧1511,其被传送到IM 1512以进行组合或合成。如前面参考图1300所述,所述传送经由PCIE总线1534或经由专用的VPU间连接(未示出)来执行。无论哪种情况,都将所合成的帧从IM 1512输出到显示器1530。
在穿越模式中,还可以禁止多VPU能力并且使用其中一个VPU来独自执行视频处理。这例如由短划线路径1565来示出,所述短划线路径1565图示了被连接到显示器1530以输出用于显示的帧数据的从VPU B 1510。在穿越模式中,主VPU A 1508还可以通过在路径1566上输出帧数据来单独工作。
图16是依照一个实施例的单卡系统1600的图。所述系统1600包括“超级卡”或“巨卡”1656,其包括一个以上的VPU。在一个实施例中,超级卡1656包括两个VPU,主VPU A 1608和从VPU B1610。超级卡1656还包括IM 1612,IM 1612包括先前所述的用于组合或合成来自两个VPU的数据的合成器。在其它实施例中,还可以用专用的卡上VPU间连接来进行VPU间通信(未示出)。在一个实施例中,主VPU A 1608和从VPU B 1610均经由卡上桥(on-cardbridge)1681连接到X16PCIE总线1634。
系统1600包括先前所述的多VPU功能中的全部功能,包括所描述的抗锯齿能力。例如,主VPU A 1608对所采样的帧1609进行处理并且将其输出到IM 1612。从VPU B 1610处理并输出所采样的帧1611,其被传送到IM 1612以进行组合或合成。如参考图1300先前所述的,经由PCIE总线1634或经由专用VPU间连接(未示出)来执行传送。无论哪种情况,都将所合成的帧从IM 1612输出到显示器(未示出)。
在穿越模式中,还可以禁止多VPU能力并且使用其中一个VPU来独自执行视频处理。这例如借助短划线路径1665来示出,所述短划路径1665图示了被连接到输出端以便传送将要显示的帧的从VPUB 1610。在穿越模式中,主VPU A 1608还可以通过在路径1666上输出帧数据来单独工作。
图17是依照一个实施例的双卡系统1700的图。所述系统1700包括两个对等的VPU卡1760和1762。VPU卡1760包括VPU A 1708,并且VPU卡1762包括VPU 1710。在一个实施例中,VPU A 1708和VPU 1710是完全相同的。在其它实施例中,VPU A 1708和VPU B1710不是完全相同的。VPU A 1708和VPU 1710均被连接到从X16PCIE总线1734划分出来的X8PCIE总线1735。VPU A 1708和VPU1710还均被连接,以便经由卡连接器向连结模块(IM)1712输出数据。在一个实施例中,IM 1712是“保护装置”中的集成电路,所述“保护装置”可被容易地连接到VPU卡1760和VPU卡1762。在一个实施例中,IM 1712是一个专门设计成包括这里所描述的所有合成功能的集成电路。IM 1712合并或合成由VPU A 1708和VPU 1710所输出的帧数据并且向显示器1730输出可显示的合成帧。
图18是依照一个实施例的双卡系统1800的图。所述系统1800类似于系统1700,但是被配置为在旁路模式下操作。系统1800包括两个对等体VPU卡1860和1862。VPU卡1860包括VPU A 1808,并且VPU卡1862包括VPU B 1810。在一个实施例中,VPU A 1808和VPU 1810是完全相同的。在其它实施例中,VPU A 1808和VPU B1810不是完全相同的。VPU A 1808和VPU B 1810均被连接到从X16PCIE总线1834划分出来的X8PCIE总线1835。VPU A 1808和VPU1810还均被经由卡连接器连接,以便向连结模块(IM)1812输出数据。在一个实施例中,IM 1812是“保护装置”中的集成电路,所述“保护装置”可被容易地连接到VPU卡1860和VPU卡1862。在一个实施例中,IM 1812是一个专门设计成包括先前所述的所有合成功能的集成电路。IM 1812还可配置为在穿越模式下操作,在所述穿越模式下,一个VPU独自操作而其它VPU未被启用。在这种配置中,如这里所描述的抗锯齿将会是不可用的。然而,启用的VPU可以执行常规的抗锯齿。在图18中,VPU A 1808被启用并且VPU B 1810被禁止,但是在旁路模式中,任何一个VPU可以工作,以便向显示器1830输出。
例如在图13-18中,如这里所示的配置目的是作为可能实施例的非限制性例子。其它配置也在如权利要求所定义的本发明的范围之内。例如,其它实施例包括在计算设备上安装或并入的第一VPU,所述计算设备诸如个人计算机(PC)、笔记本计算机、个人数字助理(PDA)、TV、游戏控制台、手持式设备等。第一VPU可以是集成VPU(也称为集成图形处理器或IGP)或者为非集成VPU。第二VPU被安装或并入到坞站(docking station)或外部封装单元。第二VPU可以是集成VPU或非集成VPU。
在一个实施例中,坞站专用于支撑第二VPU。第二VPU和第一VPU如这里所描述的进行通信,以便如所描述地协作执行视频处理并且生成输出。然而在这种实施例中,第二VPU和第一VPU经由一根或多根电缆或者易于连接和分离的其它机制来进行通信。这种实施例对于使计算设备能够通过与另一VPU协作来显著地增强其能力来说是特别有用的,所述计算设备在物理上可能很小并且具有有限的视频处理能力。
本领域普通技术人员应当理解,其他候选实施例可以包括在单片(single die)上的多个VPU(例如,单片上的两个VPU),或者在单个硅芯片上有多个核心。
图19是依照一个实施例的连结模块(IM)1912的框图。所有渲染命令都由系统中的每个VPU取出。在依照这里所描述的任何一个多VPU配置中,在VPU执行了所取出的命令之后,IM 1912合并来自多个VPU的像素和控制线路的流并且输出单个数字视频输出(DVO)流。
IM 1912包括主输入端口,用于接收来自主VPU的DVO流。在诸如在图17和18中所示出的那些配置的“保护装置”配置中,主VPU输入可以来自TDMS接收器。作为替代,在例如图13和14中所示的多卡配置中,主VPU输入可以来自主VPU卡上的主VPU。同步寄存器1902接收来自主VPU的DVO数据。
IM 1912还包括从输入端口,用于接收来自从VPU的DVO流。在“保护装置”配置中,诸如在图17和18中所示出的配置或者在图13和14中所述的卡配置中,从VPU输入可以来自TDMS接收器。作为替代,在例如图15和16中所示的“超级”VPU卡配置中,从VPU输入可以来自“超级”VPU卡结构上的从VPU。IM 1912包括从端口上的FIFO 1904,以便帮助在主VPU和从VPU之间同步输入流。
来自主VPU和从VPU的输入数据被传送给扩展模式混合器1914和多路复用器(MUX)1916。在一个实施例中,扩展模式混合器提供合成功能,以根据此处描述的实施例来执行抗锯齿。此处描述的抗锯齿功能还被称为“superAA”。IM 1912可配置为以多种合成模式来进行操作,包括此处描述的superAA抗锯齿模式。在一个实施例中,superAA模式是多个“扩展”模式之一。合成模式包括交替的帧渲染(alternate frame rendering,AFR)模式,在模式中,由不同的VPU交替地渲染帧。合成模式还包括“变黑(blacking)”模式,在该模式中,每个VPU被给予帧的不同部分以进行处理。未处理的帧的部分被指定为包含“变黑”像素。当通过扩展模式混合器1914或者通过仅选择不黑的像素而将由两个VPU处理的帧的部分组合时,显示整个帧。
控制逻辑确定IM 1912在哪种合成模式下操作,控制逻辑包括黑色寄存器1906和MUX路径逻辑与黑色比较器1908。MUX路径逻辑与黑色比较器1908的输出是对MUX 1916和扩展模式混合器1914的一个选择输入,并且决定这些组件中哪一个输出数据。数据被输出到TDMS传送器1918或DAC 1920。
在一个实施例中,在多个VPU以及IM 1912之间的组件间通信包括多种I2C总线和协议。
如表6所示,通过I2C寄存器比特1924和TMDS控制比特1922的组合,来设置包括多种合成模式在内的多种操作模式。
表1:操作模式和控制比特
依照一个实施例,存在经由IM 1912的两个独立的数据路径。来自各个VPU的两个输入像素流中任意一个通过MUX 1916(在穿越模式或“标准”连结模式中)进行处理,或者在扩展模式(包括超级AA模式)中通过混合器1214进行处理。如此处所采用的那样,“连结”或连结模式暗示了并非穿越模式的任何多VPU模式。在MUX 1916中,选择来自VPU A或VPU B中任意一个的仅一个像素通过,并且不涉及任何像素处理。在扩展模式混合器1914中,在逐个像素基础上进行处理。然而,对所述像素进行处理、平均在一起、并且再次进行处理。在一个实施例中,处理步骤包括使用一个或多个查找表来产生中间或最终结果。
由I2C寄存器比特和控制比特来确定在MUX 1916路径和混合器1914路径之间的选择。例如,如果出现以下条件则选择混合器1914路径:
ENABLE_INTERLINK=1(I2C寄存器)
并且CONTROL_BITS_2:Bit 3和Bit 4=1(ExtendedModes和SuperAA)
(否则MUX)。
本发明的上述方面可以被实现为编程到任何种类电路中的功能,所述电路包括但不局限于可编程逻辑器件(PLD),诸如现场可编程门阵列(FPGA)、可编程阵列逻辑(PAL)器件、电可编程序逻辑与存储设备、以及基于标准单元的设备、以及专用集成电路(ASIC)和完全定制的集成电路。用于实现本发明方面的其它可能选择包括:具有存储器(诸如电可擦可编程只读存储器(EEPROM))的微控制器、嵌入式微处理器、固件、软件等。此外,可以在微处理器中实现本发明的各个方面,所述微处理器具有基于软件的电路仿真、离散逻辑(顺序的和组合的)、定制器件、模糊(神经)逻辑、量子器件和以上任何器件类型的混合。当然,可以采用各种组件类型来提供基础的器件技术,例如,像互补金属氧化物半导体(CMOS)之类的金属氧化物半导体场效应晶体管(MOSFET)技术、像发射极耦合逻辑(ECL)之类的双极技术、聚合物技术(例如,硅共轭聚合物和金属共轭聚合物-金属结构)、混合的模拟与数字、等等。
除非上下文清楚地要求否则遍及说明书和权利要求,词“包括”、“包含”等将依照相容意义来解释,而不是排除或穷举意义;即在“包括但不限于”的意义上。使用单数或复数的词还分别包括复数和单数。另外,词“这里”、“在此”、“以上”、“以下”和类似输入的词当在本申请中使用时,指的是本申请的整体而不是本申请的任何特定部分。当就两个或多个项的列表使用词“或”时,该词覆盖了此词的所有以下解释:列表中的任何项、列表中的所有项和所述列表中项的任何组合。
本发明所举例说明的实施例的上述描述,并不意图对本发明进行穷举或将其限制为所公开的形式。虽然,为了说明性目的描述了本发明的具体实施例和例子,然而相关领域内分技术人员将认识到,在本发明的范围内可以进行各种等效的修改。这里所提供的本发明教导可以应用于其它系统,而不仅是用于包括如上所述的图形处理或视频处理的系统。
例如,按照在此的描述而生成的抗锯齿图像可以被输出到各种显示设备,包括用于显示运动图像的计算机显示器和用于打印静态图像的打印机。
所描述的各种操作可以在各种体系结构中实行,并且可以与所描述的内容相比不同地分布。作为一个例子,在分布式系统中,服务器可以执行一些或所有渲染处理。另外,尽管这里描述了许多配置,然而都并不意在是限制性或排他性的。例如,还可以在包括集成图形处理器(IGP)或视频处理器以及分立式图形或视频处理器的系统中实现本发明,其中,如所描述来合并或合成由集成和分立处理器中的每一个所处理的帧数据。此外,还可以在包括一个或多个IGP器件与一个或多个分立图形或视频处理器的组合的系统中实现本发明。
在未示出的其它实施例中,VPU的数量可以大于二。
在其它实施例中,这里所描述的一些或所有硬件和软件能力可以存在于打印机、照相机、电视、手持式设备、移动电话或其它设备中。这里所描述的抗锯齿技术可以被应用为从视频序列中构造动画的过程的一部分。
可以组合上述各个实施例中的元素和动作,以便提供其他实施例。按照上述详细说明,可以对本发明进行这些及其它改变。
通常在附带的权利要求中,所使用的术语不应当被解释为把抗锯齿方法及其系统限制为在说明书和权利要求中所公开的具体实施例,而是应当解释为包括根据这些权利要求进行工作以提供抗锯齿的任何处理系统。因此,抗锯齿方法和系统并不受此公开的限制,而且作为替代,所述抗锯齿方法和系统的范围将完全由权利要求来确定。
虽然在附带的权利要求中依照特定的权利要求形式给出了用于抗锯齿的方法和设备的某些方面,但是发明人意在给出采用任何数量的权利要求形式的用于抗锯齿的方法及其设备的各个方面。例如,虽然仅仅将用于抗锯齿的方法和设备的一个方面陈述为将其具体化在计算机可读介质中,然而其它方面同样也可以被具体化到计算机可读介质中。因此,发明人保留在提交本申请之后增加附加权利要求的权力,以便追求这种用于抗锯齿的方法和设备的其它方面的附加要求形式。
Claims (14)
1.一种视频处理系统,包括:
驱动器,其接收来自应用程序的视频数据;
多个视频处理单元(VPU),其从所述驱动器接收关于处理来自所述视频数据的帧数据的至少一个命令,并且通过以下操作来在单次通过中处理所述帧数据:对所述帧数据的像素进行采样以使得至少第一VPU使用第一采样来处理所述帧数据且第二VPU使用不同的第二采样来处理所述帧数据;以及
合成器,其对基于至少两个不同采样的经处理的帧数据进行合成,并产生输出帧;
其中,所述第一采样和所述第二采样是针对相同的帧数据的。
2.如权利要求1所述的系统,其中,定义所述多个VPU中一个VPU的处理,并且所述合成器被配置为在线性空间中对所述经处理的帧数据进行合成,并通过对合成的帧数据执行伽玛运算来产生所述输出帧。
3.如权利要求1所述的系统,其中,所述多个VPU中的至少一个VPU:(a)是可配置的,或(b)受到连结模块的控制。
4.如权利要求1所述的系统,其中,所述多个VPU中至少两个VPU是相同的。
5.如权利要求1所述的系统,其中,所述第一VPU和所述第二VPU的处理在采样偏移、采样率或采样系数中的一个或多个方面是不同的。
6.如权利要求1所述的系统,其中,所述多个VPU中每一个VPU包括本地视频存储器。
7.如权利要求1所述的系统,其中,所述合成器被包含在连结模块中。
8.如权利要求1所述的系统,其中,所述多个VPU中至少两个VPU通过PCIE总线,使用对等协议来直接通信。
9.如权利要求1所述的系统,其中,所述第一采样和所述第二采样是彼此独立地进行的,并且是针对所述相同的帧数据进行的作为一个整体的采样。
10.一种用于处理视频数据的方法,所述方法包括:
在多个视频处理单元(VPU)处从驱动器接收关于处理来自所接收的视频数据的帧数据的至少一个命令;
通过以下操作来在单次通过中处理所述帧数据:对所述帧数据的像素进行采样以使得至少第一VPU使用第一采样来处理所述帧数据且第二VPU使用不同的第二采样来处理所述帧数据;
对基于至少两个不同采样的经处理的帧数据进行合成;以及
从合成的帧数据中产生输出帧;
其中,所述第一采样和所述第二采样是针对相同的帧数据的。
11.如权利要求10所述的方法,还包括:在所述驱动器处从应用程序接收视频数据。
12.如权利要求10所述的方法,其中,所述第一VPU和所述第二VPU的处理在采样偏移、采样率或采样系数中的一个或多个方面是不同的,并且包括执行至少一个抗锯齿操作;对所述经处理的帧数据的所述合成是在线性空间中执行的;并且,产生所述输出帧是通过对所述合成的帧数据执行伽玛运算来进行的。
13.如权利要求12所述的方法,其中,所述抗锯齿操作包括:使用可选的抗锯齿系数的多重采样、使用可选的抗锯齿系数的超采样、以及时间域抗锯齿。
14.如权利要求12所述的方法,其中,所述命令至少包括:关于从特定像素数据产生像素数据样本的指令,其中,所述多个VPU中的不同VPU从相同的特定像素数据产生不同的样本。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/140,156 US8212838B2 (en) | 2005-05-27 | 2005-05-27 | Antialiasing system and method |
US11/140,156 | 2005-05-27 | ||
CN200680018152.8A CN101198982B (zh) | 2005-05-27 | 2006-05-29 | 抗锯齿系统及方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680018152.8A Division CN101198982B (zh) | 2005-05-27 | 2006-05-29 | 抗锯齿系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104952047A true CN104952047A (zh) | 2015-09-30 |
CN104952047B CN104952047B (zh) | 2018-11-13 |
Family
ID=36928445
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510249480.XA Active CN104952047B (zh) | 2005-05-27 | 2006-05-29 | 抗锯齿系统及方法 |
CN200680018152.8A Active CN101198982B (zh) | 2005-05-27 | 2006-05-29 | 抗锯齿系统及方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680018152.8A Active CN101198982B (zh) | 2005-05-27 | 2006-05-29 | 抗锯齿系统及方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8212838B2 (zh) |
EP (2) | EP1883901A2 (zh) |
CN (2) | CN104952047B (zh) |
WO (1) | WO2006126093A2 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8217950B2 (en) * | 2005-05-27 | 2012-07-10 | Advanced Micro Devices, Inc. | Video processing across multiple graphics processing units |
US7612783B2 (en) | 2006-05-08 | 2009-11-03 | Ati Technologies Inc. | Advanced anti-aliasing with multiple graphics processing units |
US8130227B2 (en) * | 2006-05-12 | 2012-03-06 | Nvidia Corporation | Distributed antialiasing in a multiprocessor graphics system |
US20090085928A1 (en) * | 2006-05-12 | 2009-04-02 | Nvidia Corporation | Antialiasing using multiple display heads of a graphics processor |
GB2479067B (en) * | 2006-05-12 | 2012-10-03 | Nvidia Corp | Antialiasing using multiple display heads of a graphics processor |
SG137754A1 (en) * | 2006-05-12 | 2007-12-28 | Nvidia Corp | Antialiasing using multiple display heads of a graphics processor |
US8044956B1 (en) * | 2007-08-03 | 2011-10-25 | Nvidia Corporation | Coverage adaptive multisampling |
US8547378B2 (en) * | 2008-08-28 | 2013-10-01 | Adobe Systems Incorporated | Time-based degradation of images using a GPU |
US9129441B2 (en) | 2010-06-21 | 2015-09-08 | Microsoft Technology Licensing, Llc | Lookup tables for text rendering |
GB2497302B (en) | 2011-12-05 | 2017-04-12 | Advanced Risc Mach Ltd | Methods of and apparatus for processing computer graphics |
WO2013097210A1 (zh) * | 2011-12-31 | 2013-07-04 | 华为技术有限公司 | 基于云应用的在线渲染方法和离线渲染方法及相关装置 |
US9235926B2 (en) | 2012-12-24 | 2016-01-12 | Intel Corporation | Techniques for improving MSAA rendering efficiency |
US9262797B2 (en) | 2013-03-15 | 2016-02-16 | Nvidia Corporation | Multi-sample surface processing using one sample |
US20140292774A1 (en) * | 2013-03-26 | 2014-10-02 | Nvidia Corporation | System and method for performing sample-based rendering in a parallel processor |
US9251731B2 (en) * | 2013-05-10 | 2016-02-02 | Intel Corporation | Multi-sampling anti-aliasing compression by use of unreachable bit combinations |
US9665958B2 (en) | 2013-08-26 | 2017-05-30 | Nvidia Corporation | System, method, and computer program product for redistributing a multi-sample processing workload between threads |
CN105574817A (zh) * | 2014-10-17 | 2016-05-11 | 华为技术有限公司 | 图像的抗锯齿方法和装置 |
US20190318455A1 (en) * | 2018-04-12 | 2019-10-17 | Nvidia Corporation | Adding greater realism to a computer-generated image by smoothing jagged edges within the image in an efficient manner |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1309198C (en) * | 1987-12-10 | 1992-10-20 | Carlo J. Evangelisti | Parallel rendering of smoothly shaded color triangles with anti-aliased edges for a three dimensional color display |
US5428754A (en) * | 1988-03-23 | 1995-06-27 | 3Dlabs Ltd | Computer system with clock shared between processors executing separate instruction streams |
US5459835A (en) * | 1990-06-26 | 1995-10-17 | 3D Labs Ltd. | Graphics rendering systems |
WO1992002884A1 (en) * | 1990-08-03 | 1992-02-20 | Du Pont Pixel Systems Limited | Data-array processing systems |
GB2247596B (en) | 1990-08-28 | 1995-03-01 | Avesco Plc | Video image formation |
US5434970A (en) | 1991-02-14 | 1995-07-18 | Cray Research, Inc. | System for distributed multiprocessor communication |
US5361370A (en) * | 1991-10-24 | 1994-11-01 | Intel Corporation | Single-instruction multiple-data processor having dual-ported local memory architecture for simultaneous data transmission on local memory ports and global port |
US5398076A (en) | 1993-12-16 | 1995-03-14 | Ati Technologies, Inc. | Gamma correcting processing of video signals |
US6359624B1 (en) * | 1996-02-02 | 2002-03-19 | Kabushiki Kaisha Toshiba | Apparatus having graphic processor for high speed performance |
US6278645B1 (en) * | 1997-04-11 | 2001-08-21 | 3Dlabs Inc., Ltd. | High speed video frame buffer |
US6020921A (en) | 1997-05-05 | 2000-02-01 | Ati Technologies Inc. | Simple gamma correction circuit for multimedia |
US6377266B1 (en) * | 1997-11-26 | 2002-04-23 | 3Dlabs Inc., Ltd. | Bit BLT with multiple graphics processors |
WO2000004482A2 (en) * | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Multi-processor graphics accelerator |
WO2000004494A1 (en) * | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Graphics processing system with multiple strip breakers |
US6243107B1 (en) * | 1998-08-10 | 2001-06-05 | 3D Labs Inc., Ltd. | Optimization of a graphics processor system when rendering images |
US6191800B1 (en) * | 1998-08-11 | 2001-02-20 | International Business Machines Corporation | Dynamic balancing of graphics workloads using a tiling strategy |
US6677952B1 (en) * | 1999-06-09 | 2004-01-13 | 3Dlabs Inc., Ltd. | Texture download DMA controller synching multiple independently-running rasterizers |
US6816561B1 (en) * | 1999-08-06 | 2004-11-09 | 3Dlabs, Inc., Ltd | Phase correction for multiple processors |
US6674479B2 (en) * | 2000-01-07 | 2004-01-06 | Intel Corporation | Method and apparatus for implementing 4:2:0 to 4:2:2 and 4:2:2 to 4:2:0 color space conversion |
US6574753B1 (en) * | 2000-01-10 | 2003-06-03 | Emc Corporation | Peer link fault isolation |
US6781585B2 (en) * | 2000-01-11 | 2004-08-24 | Sun Microsystems, Inc. | Graphics system having a super-sampled sample buffer and having single sample per pixel support |
US20010015753A1 (en) * | 2000-01-13 | 2001-08-23 | Myers Kenneth J. | Split image stereoscopic system and method |
EP1264281A4 (en) * | 2000-02-25 | 2007-07-11 | Univ New York State Res Found | ARRANGEMENT AND METHOD FOR PROCESSING AND PLAYING A VOLUME |
US6756989B1 (en) * | 2000-08-25 | 2004-06-29 | Microsoft Corporation | Method, system, and computer program product for filtering a texture applied to a surface of a computer generated object |
US20030158886A1 (en) * | 2001-10-09 | 2003-08-21 | Walls Jeffrey J. | System and method for configuring a plurality of computers that collectively render a display |
US6720975B1 (en) * | 2001-10-17 | 2004-04-13 | Nvidia Corporation | Super-sampling and multi-sampling system and method for antialiasing |
US6920618B2 (en) * | 2001-12-21 | 2005-07-19 | Hewlett-Packard Development Company, L.P. | System and method for configuring graphics pipelines in a computer graphical display system |
US6924799B2 (en) * | 2002-02-28 | 2005-08-02 | Hewlett-Packard Development Company, L.P. | Method, node, and network for compositing a three-dimensional stereo image from a non-stereo application |
EP1385143A3 (en) * | 2002-07-16 | 2005-09-21 | ATI Technologies Inc. | Method and apparatus for improved transform functions for non gamma corrected graphics systems |
EP1431920B1 (en) * | 2002-12-20 | 2009-03-11 | Telefonaktiebolaget LM Ericsson (publ) | Low-cost supersampling rasterization |
JP2004222236A (ja) * | 2002-12-26 | 2004-08-05 | Casio Comput Co Ltd | 撮像装置、画像編集方法及びプログラム |
US6885376B2 (en) * | 2002-12-30 | 2005-04-26 | Silicon Graphics, Inc. | System, method, and computer program product for near-real time load balancing across multiple rendering pipelines |
US7283686B2 (en) * | 2003-04-14 | 2007-10-16 | Hewlett-Packard Development Company, L.P. | Image processor |
US7120816B2 (en) | 2003-04-17 | 2006-10-10 | Nvidia Corporation | Method for testing synchronization and connection status of a graphics processing unit module |
US7119808B2 (en) | 2003-07-15 | 2006-10-10 | Alienware Labs Corp. | Multiple parallel processor computer graphics system |
US7075541B2 (en) * | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
US6956579B1 (en) | 2003-08-18 | 2005-10-18 | Nvidia Corporation | Private addressing in a multi-processor graphics processing system |
US6967663B1 (en) * | 2003-09-08 | 2005-11-22 | Nvidia Corporation | Antialiasing using hybrid supersampling-multisampling |
CN100369478C (zh) * | 2004-02-18 | 2008-02-13 | 华亚微电子(上海)有限公司 | 基于方向性插值的图像边缘平滑方法 |
CN100364328C (zh) * | 2004-02-18 | 2008-01-23 | 华亚微电子(上海)有限公司 | 一种视频图像的结构特征检测方法 |
US20050206645A1 (en) * | 2004-03-22 | 2005-09-22 | Hancock William R | Graphics processor with gamma translation |
US7505399B2 (en) * | 2004-08-13 | 2009-03-17 | Hewlett-Packard Development Company, L.P. | Receive load balancing on multiple network adapters |
-
2005
- 2005-05-27 US US11/140,156 patent/US8212838B2/en active Active
-
2006
- 2006-05-29 WO PCT/IB2006/001469 patent/WO2006126093A2/en not_active Application Discontinuation
- 2006-05-29 CN CN201510249480.XA patent/CN104952047B/zh active Active
- 2006-05-29 EP EP06755938A patent/EP1883901A2/en not_active Ceased
- 2006-05-29 EP EP10075702A patent/EP2270745A1/en not_active Withdrawn
- 2006-05-29 CN CN200680018152.8A patent/CN101198982B/zh active Active
-
2012
- 2012-07-02 US US13/540,406 patent/US20120274655A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CN101198982A (zh) | 2008-06-11 |
WO2006126093A2 (en) | 2006-11-30 |
US8212838B2 (en) | 2012-07-03 |
EP2270745A1 (en) | 2011-01-05 |
CN104952047B (zh) | 2018-11-13 |
EP1883901A2 (en) | 2008-02-06 |
US20060267991A1 (en) | 2006-11-30 |
WO2006126093A3 (en) | 2007-02-08 |
CN101198982B (zh) | 2015-06-17 |
US20120274655A1 (en) | 2012-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104952047A (zh) | 抗锯齿系统及方法 | |
CN101218562B (zh) | 一种多处理器方法和装置 | |
US8130227B2 (en) | Distributed antialiasing in a multiprocessor graphics system | |
US7973797B2 (en) | Programmable blending in a graphics processing unit | |
US6924808B2 (en) | Area pattern processing of pixels | |
US20090085928A1 (en) | Antialiasing using multiple display heads of a graphics processor | |
CA2678536A1 (en) | Efficient 2-d and 3-d graphics processing | |
US5355443A (en) | Image computing system | |
US7576746B1 (en) | Methods and systems for rendering computer graphics | |
US8619077B1 (en) | Efficient execution of color space processing functions in a graphics processing unit | |
KR100890702B1 (ko) | 그래픽 프로세서의 다중 디스플레이 헤드를 이용한안티앨리어싱 | |
AU2003204703B2 (en) | System and method for employing non-alpha channel image data in an alpha-channel-aware environment | |
US6778188B2 (en) | Reconfigurable hardware filter for texture mapping and image processing | |
JP5116125B2 (ja) | グラフィックスプロセッサの複数のディスプレイヘッドを用いたアンチエイリアシング | |
JP2005077522A (ja) | 画像処理装置および画像処理方法 | |
WO2003009236A1 (fr) | Procede de dessin | |
US20030160790A1 (en) | End point value correction when transversing an edge using a quantized slope value | |
US20030169271A1 (en) | Magnified texture-mapped pixel performance in a single-pixel pipeline | |
US20030164842A1 (en) | Slice blend extension for accumulation buffering | |
JP3642952B2 (ja) | 画像合成方法及び装置、並びに情報処理システム | |
CN117453170B (zh) | 一种显示控制方法、装置及存储介质 | |
JPH1063254A (ja) | 3dグラフィクスアクセラレータカードおよび同カードを使用したコンピュータシステム | |
JPH1125289A (ja) | 3次元画像処理装置 | |
JP2008052398A (ja) | 画像合成装置、プログラム、記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |