使用三维流水线伸拉位闪的方法和装置的制作方法

文档序号:6601278
专利名称:使用三维流水线伸拉位闪的方法和装置的制作方法
技术领域
本发明涉及电子装置的图形显示。更具体地说,本发明涉及对由电子装置显示的 图形的伸拉位闪(stretch blitting)操作。
背景技术
经过二十多年个人计算机已经走入了日常家用。用于教育和娱乐的游戏已经有用 于PC的强大的应用软件并且由于三维(3D)图示技术的引入而得以增强。特定纹理的实时 图片3D图示技术将提供对具有全视点自由度、可见到的真实世界位置的准确模拟。高质量实时3D图示技术的关键是,要具有支持杂乱场景的着色的系统结构和存 储器访问方案,在所述杂乱场景中有抬高了像素存储器访问次数的多层对象。相关的处理 负荷必须不会把系统刷新率降低到我们所认为的实时(30Hz)以下。一些提出的解决方案 把处理卸载给应用程序(application’ s shoulders),因而在对简单场景进行实时着色时 有困难。更好的加速器将加速那些处理器增强的硬件功能,留着处理器用于高级功能。一 般,定制的加速硬件(专用集成电路ASIC-硅)执行着色功能更快,为软件应用程序留有更 多时间。这种图形3D着色引擎,即3D流水线,使用大量的乘法和加法电路。电视会议和其他视频图像处理也提到日程中。一个期望用在可视电信会议中的特 征是在传输前把视频图像缩放到各种大小的能力。图像越小、同时提供的细节越少,则需要 的通信带宽越小并且能被接收者计算机越快地再现。一般,摄相机将产生其最大尺寸由摄 相机图像传感器限定的视频图像。然后可由缩放装置把该图像缩放成更小或更大的图像。采用对源像素的进行数字滤波来提供缩放的输出的现有的视频摄相机被设计成 在源像素时钟的单个周期内产生每个输出像素。换言之,多抽头滤波器的抽头中的每个必 须用在同一个时钟周期中。因此,需要大量乘法和加法电路来并行处理每个单独的滤波器 抽头。随着乘法和加法电路的数量增加,滤波器传播延迟和功耗也增加。而且,当缩放装置 是用集成电路(IC)来实现时,加法和乘法电路的增加的数量转变为增加的实现IC的芯片 尺寸。最终结果是更昂贵的缩放引擎。如果计算机系统包括3D着色以及视频成像系统,则用于辅助加速计算的硬件就 面积和门而论变得昂贵。因而,如果减少用于包括三维着色和视频缩放的成像系统的门数 量,则会有好处。

发明内容
本发明提供用于图像缩放的方法和装置。3D流水线包括启动矩形模式的命令流控 制器。所述3D流水线包括产生由各顶点定义的矩形的地址的窗口器(windower)。滤波器 在基于相对位置的相邻点之间进行内插,以产生每个像素的属性。色彩计算器调整输出数据并且把输出数据写到目标表面。


在附图中,以举例的方式、而不是以限定的方式说明本发明,并且在附图中类似的 标号表示类似的元件,其中图1是本发明可以在其中实现的计算机系统的方框图;图2是用于处理视频图像的3D流水线的一个实施例的方框图;图3是视频图像伸拉处理的一个实施例的流程图;图4说明用于16比12的矩形的目标数据;图5A说明由用于3D着色和用于伸拉位闪的窗口器执行的边缘测试;图5B说明由用于3D着色和用于伸拉位闪的窗口器执行的边缘测试。
具体实施例方式现在描述用于以纹理映射引擎进行图示技术的伸拉位闪的方法和装置。在以下描 述中,为说明起见,给出大量特定细节以便提供对本发明的全面理解。但是显然,对于本专 业的技术人员,可以不用这些特定的细节来实践本发明。另外,以方框图的形式表示结构和 装置以避免使本发明模糊不清。在说明书中提到“一个实施例”或“实施例”指的是联系实施例描述的具体特征、 结构或特性是被包括在本发明的至少一个实施例中的。“在一个实施例中”这个短语在说明 书中各个位置的出现不一定都指的是同一实施例。在包括三维着色和视频的计算机系统中,实现重复使用辅助3D着色和伸拉位闪 的硬件所用的门的系统。用于伸拉位闪和3D着色的计算是类似的。因而,可以使用带有修 改的、用于对三维图像着色的3D流水线来对视频图像放大和缩小、滤波、改变表面格式,以 及改变彩色空间。如下所述,在3D流水线中用纹理映射引擎来进行图像处理。这是有好处 的,因为用于修改3D流水线以允许图像处理的门数量,与单独地实现这些功能相比,大大 地减少了。采用3D流水线来执行伸拉位闪导致性能改善、并且节省了孤立的伸拉位闪引擎 所需要的门。还通过利用3D流水线的功能性由于具有更好缩放和滤波而改进了伸拉位闪 引擎。而且,3D流水线的高度流水格式被有利地用来提高伸拉位闪引擎的性能。实现对标准3D流水线的很多变化。修改设置引擎和窗口器以使3D流水线能处理 除三角形之外的矩形。另外,修改映射地址产生器以便能够在4:2:2和4:2:0数据中寻址。 另外,修改高速缓存以便能够对这些类型的数据寻址。下面将更详细地讨论所有这些变化。图1是本发明可以在其中实现的计算机系统的方框图。该系统可包括一个或一个 以上的处理器110。可把所述处理器110耦合到主机总线115。可把所述主机总线115耦合 到主机桥接器120,以便把图形卡或图形子系统130耦合到处理器110。也可把存储器125 耦合到主机桥接器120。可进一步把所述主机桥接器120耦合到系统总线150上,如PCI总 线150。可把PCI总线150耦合到PCI至ISA桥接器160。可把端口以及扩展ISA总线耦 合到PCI至ISA桥接器160。图形加速器130包括用于对三维图像着色的3D引擎140。正如下面将要描述的,3D引擎140还可用于伸拉位闪。可把各种输入和输出装置耦合到图形卡130,如视频输入、 显示器、电视机等。图形卡130还可包括用于加速图形操作的局部内存147。另外,中央单 元140、145可包括局部高速缓冲存储器,如下所述。可把图形卡130经总线135或类似的 连接装置耦合到主机桥接器120上。图2是3D流水线的方框图。3D引擎210包括纹理流水线215。如本领域中众所 周知的,可把这种3D引擎用于三维着色。如下面将要描述的,还可把3D流水线用于伸拉位 闪。在一个实施例中,响应指定了矩形基元类型的、在这里称为GFXPRIMITIVE的具体命令 (以下称为GFX矩形命令)而执行伸拉位闪解码;但是,也可以使用其他命令名称和格式。命令流控制器220连接成从外部信源例如处理器或缓冲器接收命令。命令流控制 器220对命令分析和解码以执行适当的控制功能。如果收到的命令不是GFX矩形命令,命 令流控制器220把控制信号和数据传递给设置引擎225。命令流控制器220还控制关于非 GFX矩形命令的内存管理、状态变量管理、二维操作等等。在一个实施例中,当命令流控制器220收到GFX矩形命令时,把顶点信息送到设置 引擎225。在一个实施例中,命令流控制器220为设置引擎225提供矩形的左上顶点、右下 顶点和左下顶点。设置引擎225用这些顶点来计算平面方程的三项关于X、关于Y以及原 点的属性变化率。另外,当执行纹理映射时,设置引擎225确定包含由顶点定义的三角形的有边界 框。设置引擎225从命令流控制器220接收目标位置的左上顶点、右下顶点和左下顶 点。设置引擎225还接收定义原始尺寸、在每个顶点处的第二组坐标。设置引擎225计算 两组坐标的比值以确定伸拉的比例,在尺寸上或者扩展或者缩小。目标坐标是相对窗口的, 而源的坐标是相对于源图像的左上角、即左上角坐标总是(0,0)。注意,设置引擎方程是为 用于3D着色的三角形所做计算的子集。因而,不需要附加的硬件。设置引擎225还产生边 缘,定义矩形基元的有边界框。设置引擎225向窗口器230提供有边界框信息。窗口器230产生目标平面的地址。窗口器230 —般通过划出经过每对顶点的线来 产生这些地址。顶端线510以上的区域被标为负的,而顶端线510以下的区域被赋予正值。 底线520以下区域被标为负的,而底线520以上区域被赋予正值。在边缘线530以内的区 域被赋予正值,而在边缘线530以外的区域被标为负的。这称为边缘测试。这确定了显示 的三角形540。在图5A和5B中说明了这些。对于伸拉位闪,使用了窗口器230的另一方面。窗口器230永远不显示在由设置引 擎225传递给窗口器230的有边界框590以外的区域。因而,迫使边缘测试总为正,由此把 该区域定义为有边界框590的整个区域。窗口器230在有边界框内迭代像素以产生由GFX 矩形命令写入的数据的读和写地址。换言之,总是传递三角形边缘方程,这使窗口器230能 处理整个矩形而不是停留在三角形边界上。这些读和写地址被传递给映射地址发生器。窗口器230产生像素读写地址以把数据接入高速缓冲存储器,在图2中未示出。窗 口器230还向色彩计算器280提供用于阿尔法(a)混合步骤的目标项。窗口器230从帧 缓冲器获得目标信息。窗口器230利用在3D流水线中可获得的深层流水线作业。当窗口器230从设置 引擎225接收了有边界框和顶点时,窗口器230开始产生地址。用于这些地址的数据是从存储器中取出的。存储器具有相对长的延迟。因而,当窗口器230产生地址时,请求对数据 进行流水作业,以FIFO(先进先出)方式设置每个请求的控制部分。因而,对用于每个产生 的地址的数据的请求随着地址产生而连续地被送往存储器。因而,存储器延迟仅影响所请 求的第一像素数据。通过流水线作业,消除了存储器延迟对随后的像素数据的影响,并且可 以按每一个时钟脉冲产生像素,维持通过量。流水线作业就面积而论是昂贵的,而把现有的 流水线作业再用于3D引擎是有利的。映射地址产生器240产生实际地址以在纹理映射中提取特定的像素。在一个实施 例中,映射地址发生器240按照以下方程计算目标区 域这个方程对于那些熟悉3D着色的人是众所周知的。通过使用下表中的值,复杂的纹理映射方程可以被简化以用于伸拉位闪计算,由 此使硬件能用于两个目的。cxs和C。s被直接发送给映射地址产生器240作为平面系数。
这迫使在上述方程中的分母为1。这产生简化的方程u (x,y) = CxS x+CyX y+C0S这个方程定义了一个简单平面Ax+By+C。进一步修改映射地址产生器240以接受 对于顶点的非归一化值。视频地址一般都不是归一化的,而3D着色坐标组一般是归一化 的。通过修改映射地址产生器240可操作的值,使3D流水线可用于伸拉位闪。读取单元245执行存储器管理和串行化。读取单元245请求存储在高速缓存260 或存储器中的源映射。读取单元245把由映射地址产生器240提供的读取地址转换成高速 缓存地址。由读取单元245产生的高速缓存地址被送往高速缓存260。如果在高速缓存260 中未发现数据,读取单元245向存储器请求数据,并且当数据到达时把它放入高速缓存。存储在高速缓存地址中的像素数据被送往滤波器250。映射地址产生器240把部 分像素定位数据和关于相邻像素的高速缓存地址发送到滤波器250。在本领域中滤波技术 是众所周知的,这里不再进一步讨论。内插器270可用于产生用于混合的内插a值。a混合使部分已经在帧缓冲器中 的图像和部分源图像能被看到。术语a定义源的不透明度。对于一个实施例,a值对于 伸拉位闪是固定的,并且未使用内插器270。如果a值不固定,则使用如上所述关于映射 地址产生器240的同样方程。对于另一个实施例,指定所有三个顶点的a值,并且内插器 270产生在各顶点的a值之间的光滑混合。a值被传递到色彩计算器280。在下表中说明彩色空间转换和通道分配格式的一个实施例。
注bpp_每像素位数,bpt-对于另一个实施例,可从支持的源表面和输出方式中产生其他目标表面。通道操作单元255执行颜色通道分配操作(Y、U和V通道)。它还执行从YUV到 RGB的彩色空间转换。对于另一个实施例,通道操作单元255可以既进行通道分配、又进行 彩色空间转换。对于一个实施例,对YUV通道转换要用三遍。首先,每个像素被上抽样(up sampled)为4:4:4格式,对中间像素内插U和V值。然后,可能发生三遍表面格式转换。在 第一遍中,写入Y值,在第二遍中写入U值,而在第三遍中写入V值。这提供了从平面到打 包格式的便宜转换,并且不需要三个地址流式磁带机。这些转换可能用于电视会议和其他 用途。对于一个实施例,在色彩计算器280的数据校准寄存器中进行从4 2 0到4 2 2 的通道转换。对于一个实施例,色彩计算器280尤其是使用以下混合方程色彩=a*源+(l-a)* 目标色彩计算器280接收三个输入值来自通道操作单元255的源色彩;由窗口器230 取出的、来自存储器的目标色彩;以及来自内插器270的a值(它可能是固定的)。在色 彩计算器280中的打包逻辑(packing logic)对数据进行校准并且把它写到目标平面。图3是图像伸拉过程的流程图。在块310中,启动矩形基元类型。矩形基元类型使 3D引擎能识别由三个点描述为矩形的对象。所述矩形是由按照与启动的淘汰顺序(culling order) 一致的正确提升顺序(winding order)的三个顶点描述的轴校准的矩形。这些顶点描述了一个直角三角形,其中三角形的底边与X轴平行而三角形的垂直边与Y轴平行。基 于这三个顶点而知道第四点。对于一个实施例,如果当开始伸拉位闪时已经启动矩形基元 类型,这个步骤可以删去。在块320,矩形命令被送到3D引擎,矩形命令向3D引擎指出以下信息将被伸拉位 闪,而不是三维着色信息。在块330,该过程测试3D流水线是否被刷新。对于一个实施例,因为3D流水线允 许并行操作,所以,在开始视频伸拉之前它被刷新。对于一个实施例,这一步骤和步骤335 可被删去。如果3D流水线未被刷新,则过程继续到块335,其中过程等待直到3D流水线被 刷新。然后该过程继续到块340。如果3D流水线已被刷新,则过程直接继续到块340。在块340,矩形数据被送到3D流水线210中的设置引擎225。矩形数据定义所操 作的数据的矩形。在块345,在窗口器中计算XY坐标。XY坐标定义图象目标表面。在块350,在映射地址产生器(MAG)中计算UV坐标。U和V坐标定义图像源平面。在块360,提取像素数据并将其高速缓存。对于一个实施例,这在产生像素地址后 发生。对于一个实施例,像素数据以4 X 4数据块被高速缓存。在块370,内插像素值。这产生在目标表面上每个像素的属性。在块380,执行通道分配和彩色空间转换步骤。对于一个实施例,仅在被请求时才 执行这些步骤。对于另一实施例,总是执行这些步骤。在块390,色彩计算器对数据进行a混合、校准数据并把它写到目标表面。这产 生目标图像。在这个过程的结尾,在目标图像中的每个像素都是已知的,并且显示出目标图像。在前述的说明书中,已经参照其特定的示例性实施例描述了本发明。但是,显然, 只要不违背如所附权利要求书中所陈述的本发明的更广的精神和范围,可以做各种修改和 变化。因此,说明书和附图是为了说明而非为了限定。
10
权利要求
一种用于三维着色和伸拉位图的3D流水线,所述用于伸拉位图的3D流水线包括用于启动矩形方式的命令流控制器;用于产生由顶点定义的矩形的地址的窗口器;在基于相对位置的相邻点之间插入的、用于每个像素以产生每个像素的属性的滤波器;用于校准输出数据并且把所述输出数据写到目标表面的色彩计算器。
2.权利要求1的3D流水线,其特征在于还包括设置引擎,它计算关于X和Y及原点的属性变化率、产生源和目标地址的坐标比、并产 生由传递给所述窗口器的所述矩形定义的有边界框的。
3.权利要求1的3D流水线,其特征在于还包括产生在像素映射中提取特定像素的实际地址的映射地址产生器。
4.权利要求3的3D流水线,其特征在于,所述映射地址产生器利用顶点的非归一化值。
5.权利要求1的3D流水线,其特征在于还包括 用于提供存储管理和缓存处理的读取单元。
6.权利要求1的3D流水线,其特征在于还包括 用于执行YUV空间中的通道转换的通道操作单元。
7.权利要求6的3D流水线,其特征在于所述转换是从4 2 2YUV空间到 4:2: OYUV 空间。
8.权利要求1的3D流水线,其特征在于所述色彩计算器还要执行彩色空间转换。
9.权利要求8的3D流水线,其特征在于所述彩色空间转换是从YUV到RGB。
10.权利要求1的3D流水线,其特征在于还包括 用于产生α混合的α值的内插器。
11.权利要求10的3D流水线,其特征在于所述色彩计算器还用于使用由所述内插器 提供的所述α值对所述输出数据进行α混合。
12.权利要求1的3D流水线,其特征在于所述窗口器产生用于目标表面的地址。
13.权利要求12的3D流水线,其特征在于所述目标表面是强制通过对整个有边界框 的边缘测试而产生的。
14.权利要求1的3D流水线,其特征在于所述窗口器用深层流水线作业以持续产生 地址、并且随着产生地址而把所述地址持续地发送到存储器,由此减小存储器延迟的影响。
15.一种在三维(3D)流水线中的方法,它包括 接收信号;接收定义一个区域的两个或两个以上坐标点; 基于所述信号确定所述区域是三角形还是矩形; 如果所述区域是三角形则基于关于所述区域的数据而产生3D图像;和 如果所述区域是矩形,则对关于所述区域的数据执行伸拉位图操作。
16.权利要求15的方法,其特征在于还包括基于所述信号设置所述3D流水线的状态,所述状态表示所述坐标点是定义视频图像 还是定义用于着色的三维图像。
17.权利要求15的方法,其特征在于还包括如果所述区域是矩形,则在处理所述数据之前刷新所述3D流水线。
18.权利要求15的方法,其特征在于所述信号是矩形命令。
19.权利要求15的方法,其特征在于所述多个坐标点包括定义直角三角形的左上顶 点、右下顶点和左下顶点的三个点,通过确定右上顶点来定义所述矩形。
20.一种在三维(3D)流水线中对数字视频数据进行伸拉位图的方法,所述方法包括 接收矩形命令;接收定义直角三角形的左上顶点、右下顶点和左下顶点; 标识定义矩形的有边界框; 计算图像目标表面; 计算图像源表面; 抽取和缓存像素值;内插所述像素值以产生在所述目标表面中的像素;和 显示所述目标表面。
全文摘要
提供一种用于图像缩放的方法和装置。3D流水线包括命令流控制器以启动矩形方式。所述3D流水线包括窗口器以产生用于由顶点定义的矩形的地址。滤波器内插在基于相对位置的相邻点之间,以产生每个像素的属性。色彩计算器调整输出数据并把输出数据写到目标表面。
文档编号G06F17/10GK101853487SQ20101015564
公开日2010年10月6日 申请日期2000年1月12日 优先权日1999年1月15日
发明者S·W·詹森, V·G·库克 申请人:英特尔公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1