著录项信息
专利名称 | 使用三维流水线伸拉位闪的方法和装置 |
申请号 | CN00802788.9 | 申请日期 | 2000-01-12 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2002-02-20 | 公开/公告号 | CN1337033 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06T3/40 | IPC分类号 | G;0;6;T;3;/;4;0查看分类表>
|
申请人 | 英特尔公司 | 申请人地址 | 美国加利福尼亚州
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 英特尔公司 | 当前权利人 | 英特尔公司 |
发明人 | V·G·库克;S·W·詹森 |
代理机构 | 中国专利代理(香港)有限公司 | 代理人 | 吴增勇;傅康 |
摘要
提供一种用于图像缩放的方法和装置。3D流水线包括命令流控制器以启动矩形方式。所述3D流水线包括窗口器以产生用于由顶点定义的矩形的地址。滤波器内插在基于相对位置的相邻点之间,以产生每个像素的属性。色彩计算器调整输出数据并把输出数据写到目标表面。
技术领域\n本发明涉及电子装置的图形显示。更具体地说,本发明涉及对由电子装置显示的图形的伸拉位闪(stretch blitting)操作。\n背景技术\n经过二十多年个人计算机已经走入了日常家用。用于教育和娱乐的游戏已经有用于PC的强大的应用软件并且由于三维(3D)图示技术的引入而得以增强。特定纹理的实时图片3D图示技术将提供对具有全视点自由度、可见到的真实世界位置的准确模拟。\n高质量实时3D图示技术的关键是,要具有支持杂乱场景的着色的系统结构和存储器访问方案,在所述杂乱场景中有抬高了像素存储器访问次数的多层对象。相关的处理负荷必须不会把系统刷新率降低到我们所认为的实时(30Hz)以下。一些提出的解决方案把处理卸载给应用程序(application’s shoulders),因而在对简单场景进行实时着色时有困难。更好的加速器将加速那些处理器增强的硬件功能,留着处理器用于高级功能。一般,定制的加速硬件(专用集成电路ASIC-硅)执行着色功能更快,为软件应用程序留有更多时间。这种图形3D着色引擎,即3D流水线,使用大量的乘法和加法电路。\n电视会议和其他视频图像处理也提到日程中。一个期望用在可视电信会议中的特征是在传输前把视频图像缩放到各种大小的能力。图像越小、同时提供的细节越少,则需要的通信带宽越小并且能被接收者计算机越快地再现。一般,摄相机将产生其最大尺寸由摄相机图像传感器限定的视频图像。然后可由缩放装置把该图像缩放成更小或更大的图像。\n采用对源像素的进行数字滤波来提供缩放的输出的现有的视频摄相机被设计成在源像素时钟的单个周期内产生每个输出像素。换言之,多抽头滤波器的抽头中的每个必须用在同一个时钟周期中。因此,需要大量乘法和加法电路来并行处理每个单独的滤波器抽头。随着乘法和加法电路的数量增加,滤波器传播延迟和功耗也增加。而且,当缩放装置是用集成电路(IC)来实现时,加法和乘法电路的增加的数量转变为增加的实现IC的芯片尺寸。最终结果是更昂贵的缩放引擎。\n如果计算机系统包括3D着色以及视频成像系统,则用于辅助加速计算的硬件就面积和门而论变得昂贵。因而,如果减少用于包括三维着色和视频缩放的成像系统的门数量,则会有好处。\n发明内容\n本发明提供用于图像缩放的方法和装置。3D流水线包括启动矩形模式的命令流控制器。所述3D流水线包括产生由各顶点定义的矩形的地址的窗口器(windower)。滤波器在基于相对位置的相邻点之间进行内插,以产生每个像素的属性。色彩计算器调整输出数据并且把输出数据写到目标表面。\n根据本发明的一个方面,一种用于三维着色和伸拉位闪的三维流水线的装置,所述装置包括:\n用于启动矩形方式的命令流控制器;\n耦合到所述命令流控制器的、用于在所述矩形模式内产生由顶点定义的一个矩形的地址的窗口器;\n耦合到所述窗口器、在基于以所述地址为依据的相对位置的相邻点之间内插的、用于每个像素以产生每个像素的属性的滤波器;以及\n耦合到所述滤波器的、用于校准输出数据并且把所述输出数据写到目标表面的色彩计算器。\n根据本发明的另一个方面,一种在三维流水线中的着色和伸拉位闪的方法,所述方法包括:\n接收信号;\n接收定义一个区域的两个或两个以上坐标点;\n基于所述信号及所述两个或两个以上坐标点确定所述区域是三角形还是矩形;\n如果所述区域是三角形则基于关于所述区域的数据而产生三维图像;和\n如果所述区域是矩形,则对关于所述区域的数据执行伸拉位闪操作。\n根据本发明的又一个方面,一种在三维流水线中对数字视频数据进行伸拉位闪的方法,所述方法包括:\n接收矩形命令;\n接收定义直角三角形的左上顶点、右下顶点和左下顶点;\n根据所述矩形命令及所述左上顶点、右下顶点和左下顶点标识定义矩形的有边界框;\n计算图像目标表面;\n计算图像源表面;\n抽取和缓存像素值;\n内插所述像素值以产生在所述目标表面中的像素;和\n显示所述目标表面。\n根据本发明的再一个方面,一种计算机系统,包括:\n一个处理器;\n一个耦合到所述处理器的存储器;\n一个耦合到所述处理器和所述存储器的、用于三维着色和伸拉位闪的三维流水线引擎,所述三维流水线引擎包括:\n用于接收信号的指令流控制器;\n耦合到所述命令流控制器的、用于接收限定一个区域的两个或者更多个座标点和根据所述信号确定所述区域是三角形还是矩形的一个窗口器;以及\n如果所述区域是三角形则所述三维流水线引擎根据用于所述区域的数据产生一个三维图象,而且,如果所述区域是矩形则所述三维流水线引擎对用于所述区域的数据执行伸拉位闪的操作。\n附图说明\n在附图中,以举例的方式、而不是以限定的方式说明本发明,并且在附图中类似的标号表示类似的元件,其中:\n图1是本发明可以在其中实现的计算机系统的方框图;\n图2是用于处理视频图像的3D流水线的一个实施例的方框图;\n图3是视频图像伸拉处理的一个实施例的流程图;\n图4说明用于16比12的矩形的目标数据;\n图5A说明由用于3D着色和用于伸拉位闪的窗口器执行的边缘测试;\n图5B说明由用于3D着色和用于伸拉位闪的窗口器执行的边缘测试。\n具体实施方式\n现在描述用于以纹理映射引擎进行图示技术的伸拉位闪的方法和装置。在以下描述中,为说明起见,给出大量特定细节以便提供对本发明的全面理解。但是显然,对于本专业的技术人员,可以不用这些特定的细节来实践本发明。另外,以方框图的形式表示结构和装置以避免使本发明模糊不清。\n在说明书中提到“一个实施例”或“实施例”指的是联系实施例描述的具体特征、结构或特性是被包括在本发明的至少一个实施例中的。“在一个实施例中”这个短语在说明书中各个位置的出现不一定都指的是同一实施例。\n在包括三维着色和视频的计算机系统中,实现重复使用辅助3D着色和伸拉位闪的硬件所用的门的系统。用于伸拉位闪和3D着色的计算是类似的。因而,可以使用带有修改的、用于对三维图像着色的3D流水线来对视频图像放大和缩小、滤波、改变表面格式,以及改变彩色空间。如下所述,在3D流水线中用纹理映射引擎来进行图像处理。这是有好处的,因为用于修改3D流水线以允许图像处理的门数量,与单独地实现这些功能相比,大大地减少了。\n采用3D流水线来执行伸拉位闪导致性能改善、并且节省了孤立的伸拉位闪引擎所需要的门。还通过利用3D流水线的功能性由于具有更好缩放和滤波而改进了伸拉位闪引擎。而且,3D流水线的高度流水格式被有利地用来提高伸拉位闪引擎的性能。\n实现对标准3D流水线的很多变化。修改设置引擎和窗口器以使3D流水线能处理除三角形之外的矩形。另外,修改映射地址产生器以便能够在4:2:2和4:2:0数据中寻址。另外,修改高速缓存以便能够对这些类型的数据寻址。下面将更详细地讨论所有这些变化。\n图1是本发明可以在其中实现的计算机系统的方框图。该系统可包括一个或一个以上的处理器110。可把所述处理器110耦合到主机总线115。可把所述主机总线115耦合到主机桥接器120,以便把图形卡或图形子系统130耦合到处理器110。也可把存储器125耦合到主机桥接器120。可进一步把所述主机桥接器120耦合到系统总线150上,如PCI总线150。可把PCI总线150耦合到PCI至ISA桥接器160。可把端口以及扩展ISA总线耦合到PCI至ISA桥接器160。\n图形加速器130包括用于对三维图像着色的3D引擎140。正如下面将要描述的,3D引擎140还可用于伸拉位闪。可把各种输入和输出装置耦合到图形卡130,如视频输入、显示器、电视机等。图形卡130还可包括用于加速图形操作的局部内存147。另外,中央单元140、145可包括局部高速缓冲存储器,如下所述。可把图形卡130经总线135或类似的连接装置耦合到主机桥接器120上。\n图2是3D流水线的方框图。3D引擎210包括纹理流水线215。如本领域中众所周知的,可把这种3D引擎用于三维着色。如下面将要描述的,还可把3D流水线用于伸拉位闪。在一个实施例中,响应指定了矩形基元类型的、在这里称为GFXPRIMITIVE的具体命令(以下称为GFX矩形命令)而执行伸拉位闪解码;但是,也可以使用其他命令名称和格式。\n命令流控制器220连接成从外部信源例如处理器或缓冲器接收命令。命令流控制器220对命令分析和解码以执行适当的控制功能。如果收到的命令不是GFX矩形命令,命令流控制器220把控制信号和数据传递给设置引擎225。命令流控制器220还控制关于非GFX矩形命令的内存管理、状态变量管理、二维操作等等。\n在一个实施例中,当命令流控制器220收到GFX矩形命令时,把顶点信息送到设置引擎225。在一个实施例中,命令流控制器220为设置引擎225提供矩形的左上顶点、右下顶点和左下顶点。设置引擎225用这些顶点来计算平面方程的三项:关于X、关于Y以及原点的属性变化率。\n另外,当执行纹理映射时,设置引擎225确定包含由顶点定义的三角形的有边界框。\n设置引擎225从命令流控制器220接收目标位置的左上顶点、右下顶点和左下顶点。设置引擎225还接收定义原始尺寸、在每个顶点处的第二组坐标。设置引擎225计算两组坐标的比值以确定伸拉的比例,在尺寸上或者扩展或者缩小。目标坐标是相对窗口的,而源的坐标是相对于源图像的左上角、即左上角坐标总是(0,0)。注意,设置引擎方程是为用于3D着色的三角形所做计算的子集。因而,不需要附加的硬件。设置引擎225还产生边缘,定义矩形基元的有边界框。设置引擎225向窗口器230提供有边界框信息。\n窗口器230产生目标平面的地址。窗口器230一般通过划出经过每对顶点的线来产生这些地址。顶端线510以上的区域被标为负的,而顶端线510以下的区域被赋予正值。底线520以下区域被标为负的,而底线520以上区域被赋予正值。在边缘线530以内的区域被赋予正值,而在边缘线530以外的区域被标为负的。这称为边缘测试。这确定了显示的三角形540。在图5A和5B中说明了这些。\n对于伸拉位闪,使用了窗口器230的另一方面。窗口器230永远不显示在由设置引擎225传递给窗口器230的有边界框590以外的区域。因而,迫使边缘测试总为正,由此把该区域定义为有边界框590的整个区域。窗口器230在有边界框内迭代像素以产生由GFX矩形命令写入的数据的读和写地址。换言之,总是传递三角形边缘方程,这使窗口器230能处理整个矩形而不是停留在三角形边界上。这些读和写地址被传递给映射地址发生器。\n窗口器230产生像素读写地址以把数据接入高速缓冲存储器,在图2中未示出。窗口器230还向色彩计算器280提供用于阿尔法(α)混合步骤的目标项。窗口器230从帧缓冲器获得目标信息。\n窗口器230利用在3D流水线中可获得的深层流水线作业.当窗口器230从设置引擎225接收了有边界框和顶点时,窗口器230开始产生地址.用于这些地址的数据是从存储器中取出的.存储器具有相对长的延迟.因而,当窗口器230产生地址时,请求对数据进行流水作业,以FIFO(先进先出)方式设置每个请求的控制部分.因而,对用于每个产生的地址的数据的请求随着地址产生而连续地被送往存储器.因而,存储器延迟仅影响所请求的第一像素数据.通过流水线作业,消除了存储器延迟对随后的像素数据的影响,并且可以按每一个时钟脉冲产生像素,维持通过量.流水线作业就面积而论是昂贵的,而把现有的流水线作业再用于3D引擎是有利的.\n映射地址产生器240产生实际地址以在纹理映射中提取特定的像素。在一个实施例中,映射地址发生器240按照以下方程计算目\n\n标区域;\n这个方程对于那些熟悉3D着色的人是众所周知的。\n通过使用下表中的值,复杂的纹理映射方程可以被简化以用于伸拉位闪计算,由此使硬件能用于两个目的。Cxs和Cos被直接发送给映射地址产生器240作为平面系数。\n 变量 说明 值 Cxs S(源平面中的水平尺寸)相对于x的 变化率 由设置引擎计算 Cos 对S的偏移 由设置引擎计算 Cys S相对于y的变化率 由设置引擎计算 CxT T相对于x的变化率 由设置引擎计算 Cos 对T的偏移 由设置引擎计算 CyT T相对于y的变化率 由设置引擎计算 Cxiw 1/W相对于x的变化率 设置为0.0 Coiw 对1/W的偏移 设置为1.0 Cyiw 1/W相对于y的变化率 设置为0.0 Pou 对u的偏移 由设置引擎计算,但 通常设置为0.0 Pov 对v的偏移 由设置引擎计算,但 通常设置为0.0\n这迫使在上述方程中的分母为1。这产生简化的方程:\nu(x,y)=CxS·x+CyX·y+COS\n这个方程定义了一个简单平面Ax+By+C。进一步修改映射地址产生器240以接受对于顶点的非归一化值。视频地址一般都不是归一化的,而3D着色坐标组一般是归一化的。通过修改映射地址产生器240可操作的值,使3D流水线可用于伸拉位闪。\n读取单元245执行存储器管理和串行化。读取单元245请求存储在高速缓存260或存储器中的源映射。读取单元245把由映射地址产生器240提供的读取地址转换成高速缓存地址。由读取单元245产生的高速缓存地址被送往高速缓存260。如果在高速缓存260中未发现数据,读取单元245向存储器请求数据,并且当数据到达时把它放入高速缓存。\n存储在高速缓存地址中的像素数据被送往滤波器250。映射地址产生器240把部分像素定位数据和关于相邻像素的高速缓存地址发送到滤波器250。在本领域中滤波技术是众所周知的,这里不再进一步讨论。\n内插器270可用于产生用于混合的内插α值。α混合使部分已经在帧缓冲器中的图像和部分源图像能被看到。术语α定义源的不透明度。对于一个实施例,α值对于伸拉位闪是固定的,并且未使用内插器270。如果α值不固定,则使用如上所述关于映射地址产生器240的同样方程。对于另一个实施例,指定所有三个顶点的α值,并且内插器270产生在各顶点的α值之间的光滑混合。α值被传递到色彩计算器280。\n在下表中说明彩色空间转换和通道分配格式的一个实施例。\n 源→目标 表面 操作 源表面 目标表面 4:2:0→4:2:0 动作补偿和 算法伸拉位 闪 分开处理4:2:0 表面的每个通 道,需要3遍 4:2:0 4:2:0→4:2:2 算法伸拉位 闪 4:2:2 分开处理4:2:0 表面的每个通 道,需要3遍 4:2:2→4:2:2 算法伸拉位 闪 4:2:2 4:2:2 4:2:2→4:2:0 算法伸拉位 闪 4:2:2 分开处理4:2:0 表面的每个通 道,需要3遍 4:2:2→16bpp RGB 算法伸拉位 闪 4:2:2带有彩色 空间转换 16bpp表面\n 源→目标 表面 操作 源表面 目标表面 8bptY→16bpp RGB 利用纹理合 成的3D着 色 亮度纹理映射 调制另一映射 16bpp反向缓冲 16bpt AI→16bpp RGB 利用纹理合 成的3D着 色 α及强度纹理 映射混合和/或 调制另一映射 16bpp反向缓冲 8bpt索引RGB →16bpp RGB 3D着色 8比特索引用于 调色纹理映射 16bpp反向缓冲 16bpt RGB→ 16bpp RGB 3D着色 16bpt纹理映射 16bpp反向缓冲\n注:bpp-每像素位数,bpt-\n对于另一个实施例,可从支持的源表面和输出方式中产生其他目标表面。\n通道操作单元255执行颜色通道分配操作(Y、U和V通道)。它还执行从YUV到RGB的彩色空间转换。对于另一个实施例,通道操作单元255可以既进行通道分配、又进行彩色空间转换。对于一个实施例,对YUV通道转换要用三遍。首先,每个像素被上抽样(upsampled)4:4:4格式,对中间像素内插U和V值。然后,可能发生三遍表面格式转换。在第一遍中,写入Y值,在第二遍中写入U值,而在第三遍中写入V值。这提供了从平面到打包格式的便宜转换,并且不需要三个地址流式磁带机。这些转换可能用于电视会议和其他用途。\n对于一个实施例,在色彩计算器280的数据校准寄存器中进行从4:2:0到4:2:2的通道转换。\n对于一个实施例,色彩计算器280尤其是使用以下混合方程:\n色彩=α*源+(1-α)*目标\n色彩计算器280接收三个输入值:来自通道操作单元255的源色彩;由窗口器230取出的、来自存储器的目标色彩;以及来自内插器270的α值(它可能是固定的)。在色彩计算器280中的打包逻辑(packing logic)对数据进行校准并且把它写到目标平面。\n图3是图像伸拉过程的流程图。在块310中,启动矩形基元类型。矩形基元类型使3D引擎能识别由三个点描述为矩形的对象。所述矩形是由按照与启动的淘汰顺序(culling order)一致的正确提升顺序(winding order)的三个顶点描述的轴校准的矩形。这些顶点描述了一个直角三角形,其中三角形的底边与X轴平行而三角形的垂直边与Y轴平行。基于这三个顶点而知道第四点。对于一个实施例,如果当开始伸拉位闪时已经启动矩形基元类型,这个步骤可以删去。\n在块320,矩形命令被送到3D引擎,矩形命令向3D引擎指出以下信息将被伸拉位闪,而不是三维着色信息.\n在块330,该过程测试3D流水线是否被刷新。对于一个实施例,因为3D流水线允许并行操作,所以,在开始视频伸拉之前它被刷新。对于一个实施例,这一步骤和步骤335可被删去。如果3D流水线未被刷新,则过程继续到块335,其中过程等待直到3D流水线被刷新。然后该过程继续到块340。如果3D流水线已被刷新,则过程直接继续到块340。\n在块340,矩形数据被送到3D流水线210中的设置引擎225。矩形数据定义所操作的数据的矩形。\n在块345,在窗口器中计算XY坐标。XY坐标定义图象目标表面。\n在块350,在映射地址产生器(MAG)中计算UV坐标。U和V坐标定义图像源平面。\n在块360,提取像素数据并将其高速缓存。对于一个实施例,这在产生像素地址后发生。对于一个实施例,像素数据以4×4数据块被高速缓存。\n在块370,内插像素值。这产生在目标表面上每个像素的属性。\n在块380,执行通道分配和彩色空间转换步骤。对于一个实施例,仅在被请求时才执行这些步骤。对于另一实施例,总是执行这些步骤。\n在块390,色彩计算器对数据进行α混合、校准数据并把它写到目标表面。这产生目标图像。在这个过程的结尾,在目标图像中的每个像素都是已知的,并且显示出目标图像。\n在前述的说明书中,已经参照其特定的示例性实施例描述了本发明。但是,显然,只要不违背如所附权利要求书中所陈述的本发明的更广的精神和范围,可以做各种修改和变化。因此,说明书和附图是为了说明而非为了限定。
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |