用于在视频图形适配器上渲染图像的方法和系统的制作方法

文档序号:7627162阅读:130来源:国知局
专利名称:用于在视频图形适配器上渲染图像的方法和系统的制作方法
技术领域
本发明的领域为数据处理,或更明确地说,为用于在视频图形适配器上渲染(render)图像的方法、系统和产品。
背景技术
视频图形适配器(有时简称为‘视频适配器’)是一个插入个人计算机,使其具有显示能力的电路板。但是,计算机的显示能力取决于(在视频适配器中提供的)逻辑电路和显示监视器。例如,无论视频适配器的功能多强,单色监视器都不能显示彩色。许多不同类型的视频适配器可用于计算机。多数视频适配器遵守由IBM或VESA(VideoElectronic Standard Association,视频电子标准协会)规定的视频标准中的一个。视频图形适配器也称为视频卡、视频板、视频显示板、图形卡以及图形适配器等。在本说明中,一般将任何视频图形适配器称为‘视频图形适配器’或‘视频适配器’。
视频适配器包含存储器,因此,计算机的RAM不用于显示存储。此外,多数视频适配器具有它们自己的图形处理器,用于进行图形计算,使视频适配器成为一种安装在更大的计算机内的,面向图形的子计算机。
具有它们自己的处理器的视频适配器经常被称为图形加速器。这些处理器是为了计算图形转换而专门设计的,因此它们实现了比计算机使用的通用CPU更好的效果。此外,在图形加速器处理图形计算时,图形加速器不增加计算机的CPU的负担,使其执行其他指令。图形应用程序,尤其是多媒体应用程序的流行已经使图形加速器不仅普遍增强,而且成为必要。目前,计算机制造厂将图形加速器与许多计算机系统捆绑在一起。
许多视频适配器具有它们自己的存储器,保留这种存储器是为了存储图形表示。存储器的容量决定了可以显示多高的分辨率和多少种颜色。某些加速器使用常规的DRAM(Dynamic Random AccessMemory,动态随机存取存储器),但是,其它加速器使用特殊型式的双端口视频RAM,这种存储器使视频适配器能够将图像数据渲染(render)到存储器并同时为了显示而访问存储器。
视频适配器是为特定类型的视频总线而设计的,如PCI总线或AGP总线。PCI总线是外围部件互连(Peripheral ComponentInterconnect)总线,一种由Intel公司开发的本地总线。多数现代个人计算机除了包括更基本的ISA(Industry Standard Architecture,工业标准体系结构)扩展总线以外,还包括PCI总线。PCI总线也被用在较新版本的Macintosh计算机上。PCI总线是64位总线,不过它也经常被实现为32位总线。它可以在33或66MHz的时钟速度下运行。在32位,33MHz时,它产生133MBps的吞吐率。尽管它是由Intel公司开发的,但PCI不束缚于特定的微处理器家族。
AGP总线是加速图形端口(Accelerated Graphics Port)总线,一种由Intel公司开发的接口规范。AGP基于PCI之上,但是,是为3-D图形的吞吐量需要而特殊设计的。AGP不使用用于图形数据的PCI总线,而是引入了专用的点对点通道,使得图形控制器能够直接访问主存储器。AGP通道有32位宽,以66MHz运行。这转化成总带宽266MBps,与133MBps的PCI带宽形成对比。AGP也支持具有533MBps和1.07GBps吞吐量的两种可选的更快的模式。此外,AGP允许将3-D纹理存储在主存储器中,而不是视频存储器中。
保留了称为‘帧缓冲器’的一部分存储器,用于保持要发送到用于显示的监视器的全部位图化(bit-mapped)图像。一般来说,帧缓冲器被存储在视频适配器的存储器芯片中。但是,在某些情况下,视频芯片组被集成在母板设计中,并且帧缓冲器被存储在通用主存储器中。位图化图像以数字数据表示,描述显示点的行和列,称为计算机存储器中的图形图像的画面元素或‘像素’。每个像素的值(不论是否被填充)被存储在一个或多个数据位中。对于颜色和灰度的浓淡(shade),每个点需要不止一个数据位。用于表示点的位数越多,能够表示的颜色和灰度的浓淡越多。已知为分辨率的点的密度决定了所表示的图像的清晰度如何。这一般用点每英寸(dpi)或简单地用行数和列数如640乘480来表示。位图化的图形通常称为光栅(raster)图形。
用于表示图像的另一种方法已知为矢量图形或面向对象的图形。对于矢量图形,图像被表示为规定了图像中的所有形状的数学公式。由于即使当缩放到不同尺寸时矢量图形看起来也相同,因此矢量图形比位图化图形更灵活。相比之下,当缩小或放大时,位图化图形变得粗糙。用矢量图形表示的字体称为可缩放字体,轮廓字体或矢量字体。众所周知的矢量字体系统的例子是PostScript。位图化字体,也称为光栅字体,必须针对特定的设备和特定的大小及分辨率设计。
除了帧缓冲器以外,保留了称为窗口标识(window identification,WID)缓冲器的存储器的另一个部分,用于保持每个像素的WID数据。每个WID值可以被用作对窗口属性表或‘WAT’中的像素类型的索引。像素类型的例子包括像素的颜色的不同深度、真色彩像素、颜色图化像素、立体像素以及重叠像素等。WAT可以被实施为计算机存储器硬件,如可编程只读存储器或内容可寻址存储器,被配置为索引化的或可用WID值寻址的表格,例如,如表格1所示

表格1的左列包含若干个WID值,每个WID值索引或识别窗口属性列中的特定的对应像素类型。为了说明,表格1中仅示出了9个WID值,但事实上,可以有任意数量的WID值,一个值用于由任何具体的图形适配器支持的每个像素类型。WID数据的每个元素对应于显示屏幕上的一个特定像素。当将图形数据渲染到视频存储器时,视频适配器为每个像素将位图数据写入帧缓冲器并且将WID数据写入WID缓冲器,并且这两者必须对应。如果帧缓冲器数据的对应WID数据将帧数据作为8位颜色索引引入颜色图(color map),则不能正确显示包含24位颜色代码的帧缓冲器数据。在现有技术中,一般对帧数据和WID数据进行异步更新,先更新一个,然后更新另一个。这种情况很普遍,这是由于相同的硬件寄存器被用于保持视频适配器指令和参数值,因而不可能同时更新帧数据和WID数据。
为了进一步说明将视频数据异步渲染到帧和WID缓冲器,图6列出了说明在视频图形适配器上渲染图像的现有技术的方法的伪代码的程序列表。图6的例子使用了以C程序语言编写的基本形式的源代码,在列表的列的左侧添加了行号,但图6的列表被称为‘伪代码’是因为它以代码的形式而不是以实际程序列表的形式进行说明。在图6的例子的第1行中01 unsigned int*commandRegister=0x0A13CD01;视频适配器的输入寄存器被映射到指定地址的存储器‘commandRegister’。图6的例子的第2和第3行02#define WRITE_TO_ADAPTER(data)\03{*commandRegister=(unsigned int)(data);}以宏的形式定义了名为WRITE_TO_ADAPTER的C函数,以便将视频指令和参数数据写入视频适配器的输入寄存器。第5-第12行定义了8个WID值,第14行定义了代表红色的位掩码。第17和第18行共同起作用,将视频适配器的前景颜色寄存器设置为红色。第17行17 WRITE_TO_ADAPTER(SET_FG_COLOR);告诉视频适配器它接收的下一个视频数据是前景颜色值,而第18行18 WRITE_TO_ADAPTER(RED);提供用于红色的位掩码,视频适配器通过其渲染引擎(renderingengine)将所述掩码放置在用于前景颜色的渲染寄存器(renderingregister)。第21行21 WRITE_TO_ADAPTER(FB_WE);通过指令‘FB_WE,’或‘Frame Buffer Write Enable,’指示适配器的渲染引擎将视频数据渲染到其帧缓冲器。第24-26行共同起作用,命令视频适配器对用于图形图元(graphics primitive)的帧数据进行渲染,在这种情况下,图形图元为矩形24 WRITE_TO_ADAPTER(DRAW_RECT);25 WRITE_TO_ADAPTER(0x00000000);/*x1,y1*/26 WRITE_TO_ADAPTER(0x00640064);/*x2,y2*/第24行告诉视频适配器它接收的下两个视频数据元素将提供像素坐标,即行和列坐标,分别用于矩形的左下角和矩形的右上角。现在,视频适配器通过其渲染引擎将所有用于红色矩形的视频颜色数据渲染到视频存储器,并渲染到帧缓冲器,不仅是在适配器指令中识别的两个像素,而且是帧缓冲器中的用于矩形中的所有像素的颜色数据。
如刚刚说明的,图6的列表的第17-26行一起有效地使用于绘制图元的视频颜色数据渲染到帧缓冲器,第29-38行使用于相同矩形的WID数据被渲染到WID缓冲器中的对应地址。第29行29 WRITE_TO_ADAPTER(SET_FG_COLOR);告诉视频适配器它接收的下一个视频数据为前景颜色,第30行30 WRITE_TO_ADAPTER(WID_VALUE_1);提供用于0x00000001的WID值,即在窗口属性表中索引第二个窗口属性值的值。视频适配器通过其渲染引擎将值0x00000001放在其前景颜色寄存器中,利用颜色寄存器存储工作WID值。
第33行
32/*Set adapter to render into WID buffer*/33 WRITE_TO_ADAPTER(WIDBUF_WE);通过指令‘WIDBUF_WE,’或‘WID buffer write enable,’命令视频适配器的渲染引擎将WID数据渲染到其WID缓冲器。第36-38行一起进行读取,命令视频适配器对用于图形图元的WID数据进行渲染,在这种情况下,图形图元为矩形36 WRITE_TO_ADAPTER(DRAW_RECT);37 WRITE_TO_ADAPTER(0x00000000);/*x1,y1*/38 WRITE_TO_ADAPTER(0x00640064);/*x2,y2*/第36行告诉视频适配器它接收的下两个视频数据元素将提供像素坐标,即行和列坐标,分别用于矩形的左下角和矩形的右上角。
现在,视频适配器通过其渲染引擎将用于具有由被WID_VALUE_1索引的WAT值识别的像素类型的矩形的所有WID数据渲染到视频存储器并渲染到WID缓冲器,不仅是在适配器指令中识别的两个像素,而且是WID缓冲器中用于矩形中的所有像素的WID数据。如果如图6的列表的第17-26行提供的用于RED的颜色值是与由当前在WID缓冲器中的对应地址中存储的WID数据索引的像素类型不同的像素类型,则在新的颜色数据被写到帧缓冲器中的时刻与由第29-38行的代码渲染或更新对应的WID数据的时刻之间将出现显示异常。
当为其本身还没有被渲染的像素类型渲染帧数据时,或者,当为其颜色数据还没有被渲染到帧缓冲器的像素类型渲染WID数据时,出现显示异常。一屏接一屏上的所有像素都是相同类型例如24位真色彩的情况并不罕见。在这样的情况下,可以在完全不需要更新WID数据的情况下,显示许多像素和许多屏幕图像。但是,对视频适配器的软件要求迅速提高,越来越可能的是,像素类型将快速改变,并且,要求不止一个像素类型被同时显示在同一个屏幕上。在这样要求的视频环境中,需要改进视频图形适配器,以便减少由与其对应的WID数据不同步的帧数据引起的显示异常的风险。

发明内容
本发明披露了用于在视频图形适配器上渲染图像的方法、系统和产品,包括在视频图形适配器中接收包括窗口标识(‘WID’)值的视频图形指令;并且,同时地按照视频图形指令并根据WID值,将视频帧数据渲染到帧缓冲器并同时将WID数据渲染到WID缓冲器。典型实施例包括将视频图形指令配置成包括WID值。在典型实施例中,WID值代表对窗口属性表中的像素类型的索引。
在典型实施例中,视频图形指令包括逻辑WID标志,并且,将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器还包括如果WID标志关闭,则在不根据WID值同时对WID数据进行渲染的情况下,将视频帧数据渲染到帧缓冲器;并且如果WID标志打开,则按照视频图形指令并根据WID值,将视频帧数据渲染到帧缓冲器并同时将WID数据渲染到WID缓冲器。
在典型实施例中,将视频帧数据渲染到帧缓冲器并同时将WID数据渲染到WID缓冲器还包括按照视频图形指令并根据WID值,对视频帧数据和WID数据进行渲染;并且将视频帧数据存储在帧缓冲器中并同时将WID数据存储在WID缓冲器中。在典型实施例中,将视频帧数据渲染到帧缓冲器并同时将WID数据渲染到WID缓冲器还包括将视频帧数据和WID数据置于连接到帧缓冲器和WID缓冲器的数据总线上;并且在同一个时钟变换,将视频帧数据选通到帧缓冲器中并将WID数据选通到WID缓冲器中。
在典型实施例中,帧缓冲器包括在映射到计算机显示屏幕的所有像素的存储器单元中承载像素颜色数据的视频存储器,WID缓冲器包括在映射到计算机显示屏幕的所有像素的存储器单元中承载像素的WID数据的视频存储器,WID数据包括对窗口属性表中的像素类型的索引,并且,用于每个像素的像素颜色数据和WID数据被分别存储在帧缓冲器和WID缓冲器中的相同的存储器地址。在典型实施例中,视频图形指令包括使视频图形适配器对绘制图元进行渲染的指令,并且将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器还包括对视频帧数据和用于绘制图元的WID数据进行渲染。
根据以下对如附图中示出的本发明的典型实施例的更具体的描述,本发明的上述以及其他目的、特性和优点将变得更加清楚,在附图中,相同的标号一般代表本发明典型实施例的相同部分。


图1示出了在视频图形适配器上渲染图像的过程中使用的自动计算机制的框图。
图2示出了用于渲染图像的示例性视频适配器的框图。
图3示出了说明示例性时序的时序图。
图4示出了用于在视频图形适配器上渲染图像的示例性视频图形指令。
图5示出了用于在视频图形适配器上渲染图像的示例性方法的流程图。
图6示出了说明用于在视频图形适配器上渲染图像的现有技术的方法的伪代码的程序列表。
图7示出了说明用于在视频图形适配器上渲染图像的方法的伪代码的程序列表。
具体实施例方式
引言在本说明书中,在很大程度上关于用于在视频图形适配器上渲染图像的方法对本发明进行了描述。但是,本领域技术人员应该明白,包括用于按照所披露的方法运行的适当的编程装置的任何计算机系统也属于本发明的范围。适当的编程装置包括用于命令计算机系统执行本发明的方法的步骤的任何装置,例如包括由处理单元和耦合到计算机存储器的算术-逻辑电路组成的系统,这个系统具有在计算机存储器中进行存储的能力,这个计算机存储器包括被配置用来存储数据和程序指令以及用于利用处理单元执行本发明的方法的经过编程的步骤的电子电路。
本发明还可以包含在计算机程序产品中,如软盘或其它记录介质,用于与任何适当的数据处理系统一起使用。可以利用用于机器可读信息的任何记录介质实现计算机程序产品的实施例,包括磁性介质、光介质或其它合适的介质。本领域的技术人员很容易明白,具有适当的编程装置的计算机系统应该能够执行包含在程序产品中的本发明的方法的步骤。本领域的技术人员很容易明白,尽管在本说明中描述的典型实施例是针对安装在计算机硬件上并且在计算机硬件上执行的软件,但是,实现为固件或实现为硬件的其它实施例也在本发明的范围内。
在视频图形适配器上渲染图像一般利用计算机,即,利用自动计算机器实现按照本发明的视频图形适配器上渲染图像。为了进一步说明,图1示出了包括在按照本发明的实施例的视频图形适配器上渲染图像的过程中使用的计算机(102)的自动计算机器的框图。图1的计算机(102)包括至少一个计算机处理器(156)或‘CPU’以及随机存取存储器(168)(“RAM”)。存储在RAM(168)中的是视频图形应用程序(150),即,一种用视频图形应用程序编程接口(API)来给视频图形适配器提供视频指令和视频数据的软件程序。如本领域技术人员所想到的,视频图形应用程序可以是在计算机显示屏幕上显示图像的任何软件程序,例如,包括字处理程序、电子表格程序、电子邮件程序、浏览器程序等。用于在按照本发明实施例的视频图形适配器上渲染图像并且记录在记录介质上的视频图形API是按照本发明实施例的计算机程序产品的具体例子。
用于在按照本发明实施例的视频图形适配器上渲染图像的,可以被执行和改进的视频图形API的例子包括OpenGL、Direct3D和graPHIGS。OpenGL是由Silicon Graphics开发的一种图形语言。有两种重要的工具由Microsoft开发的Microsoft OpenGL;和由SiliconGraphics开发的CosmoTMOpenGL。Microsoft OpenGL内置于Microsot的操作系统Windows NTTM中,并且被设计为提高支持OpenGL标准的硬件的性能。另一方面,CosmoTMOpenGL是为具有视频适配器的机器专门设计的纯软件工具,它对视频图形提供很少或不提供高级支持。
Direct3D是由Microsoft开发的用于操作和显示三维对象的API。Direct3D给程序员提供了开发可以利用安装在特定计算机中的任何视频适配器装置的程序的途径。实际上,所有用于个人计算机的3-D加速器卡都支持Direct3D。
graPHIGS API基于美国国家标准学会(ANSI)和称为程序员层次交互式图形系统(PHIGS)的国际标准化组织(ISO)标准。graPHIGSAPI给程序员提供了对利用高端图形装置,即具有高级视频加速性能的图形应用程序,进行设计和编码的的能力。graPHIGS API本身决定是否使用关于视频适配器的本地视频处理,或者,是否使计算机的CPU为具有较低功能的视频适配器的较小的工作站进行视频处理。
另外存储在RAM(168)中的是操作系统(154)。操作系统提供了由应用程序和图形API使用的用于访问计算机资源的接口,包括通过视频适配器驱动器(106)提供的调用接口,用于访问具有指令和参数数据的视频图形适配器。可以在按照本发明实施例的计算机中使用的操作系统包括UnixTM、LinuxTM、AIXTM、Microsoft Windows NTTM以及如本领域技术人员所想到的许多其他操作系统。图1的例子中的操作系统(154)被在RAM(154)中示出,但是操作系统的许多部件也可以被存储在非易失存储器(166)中。
图1的计算机(102)包括非易失计算机存储器(166),它通过系统总线(160)耦合到处理器(156)和该计算机的其它部件,用于存储多种可用浏览器(405)。系统总线(160)可以是PCI总线、AGP总线、ISA总线或者本领域技术人员所想到的其他总线。非易失计算机存储器(166)可以被实现为硬盘驱动器(170)、光盘驱动器(172)、电可擦除可编程只读存储器空间(所谓的‘EEPROM’或‘Flash’存储器)(174)、RAM驱动器(没有示出)或者如本领域技术人员所想到的任何其他类型的计算机存储器。
图1的典型计算机(102)包括用于实现用于数据通信的连接的通信适配器(167),包括通过网络连接到其它计算机(182),其它计算机(182)包括服务器、客户机以及如本领域技术人员所想到的其它计算机。通信适配器实现用于数据通信的硬件级的连接,通过它,本地设备与远程设备或服务器相互直接或通过网络发送数据通信。可用于在按照本发明实施例的视频图形适配器上渲染图像的通信适配器的例子包括用于有线拨号连接的调制解调器、用于有线LAN连接的以太网(IEEE 802.3)适配器以及用于无线LAN连接的802.11b适配器等。
图1的示例计算机包括一个或多个输入/输出接口适配器(178,182)。计算机中的输入/输出接口适配器通过例如软件驱动器和计算机硬件如视频图形适配器(182)实现面向用户的输入/输出,用于对向显示设备(180)如计算机显示屏幕的输出以及来自用户输入设备(181)如键盘和鼠标的用户输入进行控制。
在图1的例子中,按照本发明的实施例,视频图形适配器(182)被配置为通过在视频图形适配器(182)中接收包括WID值的视频图形指令,按照视频图形指令并根据WID值,同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器来对图像进行渲染。
视频图形指令被配置为包括WID值,因此,视频图形适配器中的渲染引擎能够利用它将WID数据渲染到WID缓冲器。为了进一步说明视频图形指令,图4示出了用于在按照本发明实施例的视频图形适配器上渲染图像的典型视频图形指令。图4的示范视频图形指令包括三个指令行(550,552,554)。每个指令行为数字数据,即一个32位的二进制字,用从左到右被编号为0到31的位来表示(560)。指令行(552,554)被配置为用于参数数据。例如,它们可以包含像素位置数据,为图形适配器定义绘制图元,如矩形的两个角点。指令行(550)在其最左侧的位示出了指令代码,命令视频图形适配器采取某些用于渲染图像的操作。例如,某些代码可以命令视频适配器对左下角和右上角位于指令行(552,554)中指定的像素位置的矩形进行渲染。
指令行(550),在其最右侧的位中,即,位23-31,编入了在位24-31中的8位的WID值(556),以及在位23的一位WID标志(558)。如所提到的,WID值是对窗口属性表中的像素类型的索引。由视频图形适配器中的渲染引擎对WID标志进行处理,以表示渲染引擎是否利用WID值,与帧数据同时对WID数据进行渲染。即,如果WID标志为关闭,即0,或逻辑假(FALSE),则视频适配器将视频帧数据渲染到帧缓冲器而不同时渲染WID数据;WID数据仍然被渲染,但不是同时,而是在帧数据之前或之后被渲染。
如果WID标志为打开,即,包含1,或逻辑上被设置为真(TRUE),则视频图形适配器同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器。在按照本发明实施例的用于渲染图像的视频适配器中(图1中的182),帧缓冲器可以被实现为这样一个视频存储器,其载有映射到计算机显示屏幕的所有像素的存储器单元中的像素颜色数据,WID缓冲器可以被实现为这样一个视频存储器,其载有映射到计算机显示屏幕的所有像素的存储器单元中的像素的WID数据。在这样的视频适配器中,通过按照在视频图形指令中的命令对视频帧数据进行渲染,利用在图形指令中提供的WID值对WID数据进行渲染,并且,同时地将视频帧数据存储在帧缓冲器中并将WID数据存储在WID缓冲器中,可以实现同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器。即,在同一个时钟变换中,通过将视频帧数据和WID数据放在连接到帧缓冲器和WID缓冲器的数据总线上,并且将视频帧数据选中到帧缓冲器中并将WID数据选中到WID缓冲器中,可以实现同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器。
不是花费时间使系统通过视频适配器驱动器(图1中的106)将指令和视频数据提供给视频图形适配器(182),视频图形API(106)可以将视频指令和数据直接写到映射到视频图形适配器(182)上的一个或多个输入寄存器的存储器地址,这是一种快得多的处理。为了进一步说明将视频数据同时渲染到帧缓冲器和WID缓冲器,图7示出了说明用于在按照本发明实施例的视频图形适配器上渲染图像的方法的伪代码的程序列表。图7的例子使用了用C编程语言写成的一般形式的源代码,在列表的左列添加了行号,但图7的列表被称为‘伪代码’是因为它以代码的形式而不是以实际程序列表的形式进行说明。在图7的例子的第1行中01 unsigned int*commandRegister=0x0A13CD01;视频适配器的输入寄存器被映射到存储器地址‘commandRegister’。图7的例子第2和第3行02 #define WRITE_TO_ADAPTER(data)\03 {*commandRegister=(unsigned int)(data);}以宏的形式定义了名为WRITE_TO_ADAPTER的C函数,以便将视频指令和参数数据写入视频适配器的输入寄存器。第5-第12行定义了8个WID值,第14行定义了表示红色的位掩码。第16行定义了名为WID_FLAG_ON的用于视频指令中的位23中的WID标志的位掩码。在逻辑上,WID标志WID_FLAG_ON可以与视频指令相或,以将WID标志打开,即,将WID标志设置为1或逻辑真。
第19和第20行共同起作用,将视频适配器上的前景颜色寄存器设置为红色。第19行19 WRITE_TO_ADAPTER(SET_FG_COLOR);告诉视频适配器它接收的下一个视频数据是前景颜色值,而第20行20 WRITE_TO_ADAPTER(RED);提供用于红色的位掩码,视频适配器通过其渲染引擎将其放置在用于前景颜色的其渲染寄存器中。第23行23 WRITE_TO_ADAPTER(FB_WE);通过指令‘FB_WE,’或‘Frame Buffer Write Enable,’指示适配器的渲染引擎将视频数据渲染到其帧缓冲器。第27-29行一起命令视频适配器对图形图元(primitive),在这种情况下,为矩形,的帧数据进行渲染,同时,用于相同矩形的WID数据被渲染到WID缓冲器中的相同地址27 WRITE_TO_ADAPTER\(DRAW_RECT|WID_FLAG_ON|WID_VALUE_2);28 WRITE_TO_ADAPTER(0x00000000);/*x1,y1*/29 WRITE_TO_ADAPTER(0x00640064);/*x2,y2*/在第27行中,DRAW_RECT指令代码命令视频适配器对矩形进行渲染,并且告诉视频适配器它接收的下两个视频数据元素将提供像素坐标,即行和列坐标,分别用于矩形的左下角和矩形的右上角。在逻辑上,DRAW_RECT与WID_FLAG_ON并且与WID_VALUE_2相或,告诉视频适配器,要对该矩形的帧数据和WID数据同时进行渲染,并且WID值2将被用于渲染WID数据。视频适配器通过其渲染引擎将用于红色矩形的所有视频颜色数据,不仅是在适配器指令中识别的两个像素,而且是在用于矩形中的所有像素的帧缓冲器中的颜色数据,渲染到视频存储器中和帧缓冲器中。
在不需要单独的或附加的进行该操作的指令的情况下,视频适配器通过其渲染引擎,还将用于矩形的所有WID数据,不仅是在适配器指令中识别的两个像素,而且是在用于矩形中的所有像素的WID缓冲器中的WID数据,渲染到WID缓冲器中。在本例中,前景颜色寄存器已经被用于红色的前景颜色代码占据。因此,视频适配器将WID_VALUE_2存储在单独的寄存器中。通过计算用于一像素的颜色值,将WID_VALUE_2值作为WID值分配给同一像素,将颜色值放在连接到帧缓冲器的数据总线上,将WID值放在连接到WID缓冲器的数据总线上,并且在相同的时刻,在存储器地址线上为两个缓冲器选中完全相同的存储器地址,从而在同一个时钟变换中,将帧数据和WID数据存储在两个缓冲器的相同的存储器地址,视频适配器可以对帧数据和WID数据同时进行渲染。
为了进一步说明,图2示出了按照本发明实施例的,用于渲染图像的典型视频适配器的框图。图2的视频适配器包括渲染引擎。对本领域技术人员来说,渲染引擎是一个计算机模块,即,计算机硬件和软件的组合,它可以被实现为视频处理器,按照本发明的实施例,这个视频处理器可以是一个被编程为对图像进行渲染的通用计算机处理器,或者,这个计算机模块可以是纯硬件的专用视频处理器或在其间的某种装置。在图2的例子中,按照本发明的实施例,渲染引擎包括从系统总线(160)接收的视频图形指令(204),用于命令渲染引擎对像素或图形图元进行渲染。系统总线(160)可以是PCI总线、AGP总线、ISA总线或者本领域技术人员所想到的其它总线。如上所述,视频图形指令(204)可以实现为包括WID值和WID标志。渲染引擎(202)将帧数据和WID数据的输出(256)驱动到数据总线(214)上,将存储器地址数据的输出(254)驱动到地址总线(212)上。
渲染引擎(202)还给存储器控制线Write Enable(230)、RowAddress Strobe(232)以及Column Address Strobe(234)提供控制信号。这些和其它控制线与指令总线有关,并且,可以由系统时钟(没有示出)对视频适配器上的所有装置进行驱动。图2的视频适配器包括具有由16位的存储器地址总线,即两组分别连接到帧缓冲器(218)和WID缓冲器(220)的相同的16根存储器地址线(226,228),提供的32位存储器地址空间的视频存储器模块(216)。在本例中,缓冲器(218,220)被解释为DRAM,并且一般按照行和列对DRAM进行寻址,不与像素在屏幕上的行和列位置混淆。渲染引擎(202)将像素位置映射到DRAM地址。行和列DRAM地址可以被单独地选通并被计时到存储器模块,首先是行地址,然后是列地址,在本例中,每个地址被限制为不多于16位。作为一种实际情况,DRAM利用行地址刷新存储器内容,因此,一般用比列少的行实现DRAM,以使刷新更有效。因此实际上,可以利用少于16个可用地址总线位作为其行地址来实现存储器模块(216)。
图2的视频适配器包括视频存储器模块(216),它包括帧缓冲器(218)和WID缓冲器(220)。这些缓冲器可以是双端口的(238,242,240,244),并且可以用两个或多个视频DRAM(VDRAM)或WindowsDRAM(WDRAM)集成电路,或者用如本领域技术人员所想到的其它DRAM芯片实现。在本例中使用双端口DRAM是为了便于说明,而不是对本发明进行限制。例如,在按照本发明实施例的视频适配器中,用于渲染图像的视频存储器模块也可以用单端口DRAM芯片或者用如本领域技术人员所想到的其它存储器芯片实现。
在图2的例子中,视频存储器模块(216)是双端口的(236,248)。实际上,视频存储器(216)包括四个内部端口(238,242,240,244)。但是,使这四个内部端口面向适配器总线,使得它们对视频适配器上的其它器件呈现出两个端口。即,端口(238,240)都连接在渲染侧上,例如,连接到相同的16根地址线(226,228),并且都从相同组的数据总线的线(214)中获得数据输入,尽管不是从完全相同的数据线。端口(238)连接到一组包含来自渲染引擎(202)的帧数据的数据线(222),而端口(240)连接到来自相同数据总线(214)的另一组包含来自渲染引擎的WID数据的数据线(224)。
图2的视频适配器还包括显示引擎(206)。显示引擎(206)通过16位的地址总线(252)、32位的帧数据总线(248)、8位的WID数据总线以及用于RAS、CAS等的控制线(没有示出)连接到视频存储器。如图所示,帧数据和WID数据按照时钟,作为并行字从存储器模块输出到数据总线上。或者,可以利用内部端口(242,244)对外部端口(246)进行配置,以便提供来自帧缓冲器(218)和WID缓冲器(220)的数字数据的串行流。显示引擎(206)包括颜色图(416),用于为索引的像素颜色将帧数据值转换为颜色值;WAT表(414),用于将窗口属性值索引为WID值;以及RAMDAC或随机存取存储器数字模拟转换器,用于接受来自帧数据的数字颜色值,根据WID数据得到的窗口属性,并且,产生输出到显示屏幕(418)的视频信号。
为了对同步地将视频帧数据渲染到帧缓冲器并将WID渲染到WID缓冲器进行进一步说明,图3示出了说明在按照本发明实施例的用于渲染图像的视频适配器中,在视频存储器模块,如在图2的参考(216)示出的模块的地址总线、数据总线和控制线之间的典型时序的时序图。图3的时序图用于DRAM,这个DRAM接受来自视频适配器上的时钟线的时钟信号(502),并且,在时钟信号的上升变换时(514,516,518,520)改变状态。在时钟变换时(514),行地址(526)被置于地址总线(508)上,并且,Row Address Strobe(行地址选通)(504)被激活(522)。在上升时钟变换时(514),行地址(626)被选入视频存储器。列地址(528)被置于地址总线(508)上,并且,Column Address Strobe(列地址选通)(506)被激活(524)。在上升时钟变换时(516),列地址(528)被选入视频存储器。
在视频存储器内,给帧缓冲器和WID缓冲器提供相同的行和列地址。当行地址和列地址被选入时,则视频存储器具有用于DRAM的一个单元的完整的存储器地址,在这种情况下,实际上是两个单元,一个在帧缓冲器中,一个在WID缓冲器中。DRAM的单元可以包含一个或多个存储器位,一般多于一个。可以并行地对几个DRAM进行寻址,以建立任何希望的单元规模。帧缓冲器的单元规模不必与WID缓冲器相同。例如,帧缓冲器可以适当地使用32位单元,用于存储32位的颜色代码,而WID缓冲器适合使用8位DRAM单元,用于每单元存储8位的WID数据。总之,帧缓冲器和WID缓冲器现在具有在两个缓冲器中的完全相同的地址的被激活的单元。所讨论的地址是存储器地址,不是像素显示位置。通过渲染引擎和显示引擎,将存储器地址映射到像素显示位置。
在时钟变换(516)之前,帧数据(532)被置于帧数据总线(512)上,并且,WID数据(538)被置于WID数据总线(546)上。如上所述,帧数据总线(512)和WID数据总线(546)可以被实现为与同样更大的数据总线分离的数据线。Write Enable(510)被激活(530)。在时钟变换时(516),本视频存储器模块具有完整的地址数据、有源的Write Enable信号以及在其数据总线上的有效数据。因此,在时钟变换时(516),按照图3的示范时序运行的视频存储器对帧数据总线(512)上的帧数据(532)和WID数据总线(546)上的WID数据(538)同时进行存储,由此将帧数据渲染到帧缓冲器并同时将WID数据渲染到WID缓冲器。此外,按照图3所示运行的视频存储器模块还可以在单个写周期期间的突发(burst)中接受额外帧数据(534,536)和额外WID数据(540,542),由此在每个存储器写周期中,存储不止一组帧数据和不止一组WID数据,在写周期期间,保持行地址(526)不变,并且,在这个写周期期间,在内部使其列地址(528)为每个写入的额外数据突发自动递增。每个这样的额外数据突发代表一次额外的将视频帧数据渲染到帧缓冲器并同时将WID数据渲染到WID缓冲器。
为了进一步说明,图5示出了用于在按照本发明实施例的视频图形适配器上渲染图像的典型方法的流程图。图5的方法包括在视频图形适配器中接收(402)包括WID值(406)的视频图形指令(404)。图5的方法还包括按照视频图形指令并根据WID值,将帧数据(410)渲染(408)到帧缓冲器并同时将WID数据(412)渲染到WID缓冲器。在图3的方法中,视频图形指令可以是使视频图形适配器对绘制图元进行渲染的指令,并且,将帧数据渲染(408)到帧缓冲器并将WID数据渲染到WID缓冲器还包括渲染用于绘制图元的视频帧数据和WID数据。即,对帧数据和WID数据进行渲染可以包括响应于单个视频图形指令,对用于一个像素或不止一个像素的帧数据和WID数据进行渲染。
在图3的方法中,视频图形指令(404)包括逻辑WID标志(405),并且,如果WID标志关闭(420),则通过在不根据WID值同时对WID数据进行渲染的情况下,将视频帧数据渲染(409)到帧缓冲器,完成将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器。所示的方法还包括,只有当WID标志打开时(422),按照视频图形指令并根据WID值,将视频帧数据渲染(408)到帧缓冲器并同时将WID数据渲染(408)到WID缓冲器。
在图3的方法中,可以通过按照视频图形指令并根据WID值对视频帧数据和WID数据进行渲染,并且将视频帧数据存储在帧缓冲器中并同时将WID数据存储在WID缓冲器中,进行将视频帧数据渲染(408)到帧缓冲器并同时将WID数据渲染(408)到WID缓冲器。在图3的方法中,可以通过将视频帧数据和WID数据置于连接到帧缓冲器和WID缓冲器的数据总线上,并且,在同一个时钟变换中,将视频帧数据存储在帧缓冲器中并将WID数据存储在WID缓冲器中,进行将视频帧数据渲染(408)到帧缓冲器并同时将WID数据渲染(408)到WID缓冲器。帧缓冲器可以是映射到计算机显示屏幕的所有像素的存储器单元中承载像素颜色数据的视频存储器。WID缓冲器可以是在映射到计算机显示屏幕的所有像素的存储器单元中承载像素的WID数据的视频存储器,其中,WID数据代表对存储在窗口属性表中的像素类型或‘窗口属性’的索引。在图3的例子中,像素颜色数据,即用于每个像素的帧数据(410)和WID数据(412)被分别存储在帧缓冲器和WID缓冲器中的相同存储器地址。
根据以上描述应该理解,在不脱离本发明的真实精神的情况下,可以在本发明的各种实施例中进行修改和改变。在本说明中的描述仅出于说明的目的,并且不要理解为限制性的。本发明的范围仅由以下权利要求的文字加以限定。
权利要求
1.一种用于在视频图形适配器上渲染图像的方法,该方法包括如下步骤在所述视频图形适配器中接收包括窗口标识(‘WID’)值的视频图形指令;并且按照所述视频图形指令并根据所述WID值,同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器。
2.如权利要求1所述的方法,还包括将所述视频图形指令配置为包括所述WID值。
3.如权利要求1所述的方法,其中,所述WID值包括对窗口属性表中的像素类型的索引。
4.如权利要求1所述的方法,其中,所述视频图形指令包括逻辑WID标志,并且,将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器的步骤还包括如果所述WID标志关闭,则将所述视频帧数据渲染到所述帧缓冲器而不同时根据所述WID值渲染所述WID数据;并且仅当所述WID标志打开时,按照所述视频图形指令并根据所述WID值,同时地将所述视频帧数据渲染到所述帧缓冲器并将所述WID数据渲染到所述WID缓冲器。
5.如权利要求1所述的方法,其中,同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器的步骤还包括按照所述视频图形指令并根据所述WID值渲染视频帧数据和WID数据;并且同时地将所述视频帧数据存储在所述帧缓冲器中并将所述WID数据存储在所述WID缓冲器中。
6.如权利要求1所述的方法,其中,同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器的步骤还包括将视频帧数据和WID数据置于连接到所述帧缓冲器和所述WID缓冲器的数据总线上;以及在同一个时钟变换中,将所述视频帧数据选通到所述帧缓冲器中并将所述WID数据选通到所述WID缓冲器中。
7.如权利要求1所述的方法,其中所述帧缓冲器包括一个视频存储器,该视频存储器在映射到计算机显示屏幕的所有像素的存储器单元中承载像素颜色数据,所述WID缓冲器包括一个视频存储器,该视频存储器在映射到所述计算机显示屏幕的所有像素的存储器单元中承载像素的WID数据,其中,所述WID数据包括对窗口属性表中的像素类型的索引;并且每个像素的所述像素颜色数据和所述WID数据被分别存储在所述帧缓冲器和所述WID缓冲器中的相同的存储器地址。
8.如权利要求1所述的方法,其中所述视频图形指令包括使所述视频图形适配器渲染绘制图元的指令,并且将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器的步骤还包括为所述绘制图元渲染所述视频帧数据和所述WID数据。
9.一种用于在视频图形适配器上渲染图像的系统,该系统包括用于在所述视频图形适配器中接收包括窗口标识(‘WID’)值的视频图形指令的装置;以及用于按照所述视频图形指令并根据所述WID值,同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器的装置。
10.如权利要求9所述的系统,还包括用于将所述视频图形指令配置为包括所述WID值的装置。
11.如权利要求9所述的系统,其中,所述WID值包括对窗口属性表中的像素类型的索引。
12.如权利要求9所述的系统,其中,所述视频图形指令包括逻辑WID标志,并且,用于同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器的装置还包括如果所述WID标志关闭,则将所述视频帧数据渲染到所述帧缓冲器而不同时渲染WID数据的装置;以及仅当所述WID标志打开时,按照所述视频图形指令并根据所述WID值,同时地将所述视频帧数据渲染到所述帧缓冲器并将所述WID数据渲染到所述WID缓冲器的装置。
13.如权利要求9所述的系统,其中,用于同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器的装置还包括用于将视频帧数据和WID数据置于连接到所述帧缓冲器和所述WID缓冲器的数据总线上的装置;以及用于在同一个时钟变换中,将所述视频帧数据选通到所述帧缓冲器中并将所述WID数据选通到所述WID缓冲器中的装置。
14.如权利要求9所述的系统,其中所述帧缓冲器包括一个视频存储器,该视频存储器在映射到计算机显示屏幕的所有像素的存储器单元中承载像素颜色数据,所述WID缓冲器包括一个视频存储器,该视频存储器在映射到所述计算机显示屏幕的所有像素的存储器单元中承载像素的WID数据,所述WID数据包括对窗口属性表中的像素类型的索引;并且每个像素的所述像素颜色数据和所述WID数据被分别存储在所述帧缓冲器和所述WID缓冲器中的相同的存储器地址。
15.一种计算机程序产品,用于在视频图形适配器上渲染图像,该计算机程序产品包括记录介质;记录在所述记录介质上的,用于在所述视频图形适配器中接收包括窗口标识(‘WID’)值的视频图形指令的装置;以及记录在所述记录介质上的,用于按照所述视频图形指令并根据所述WID值,同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器的装置。
16.如权利要求15所述的计算机程序产品,还包括记录在所述记录介质上的,用于将视频图形指令配置为包括所述WID值的装置。
17.如权利要求15所述的计算机程序产品,其中,所述WID值包括对窗口属性表中的像素类型的索引。
18.如权利要求15所述的计算机程序产品,其中,所述视频图形指令包括逻辑WID标志,并且,记录在所述记录介质上的,用于同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器的装置还包括记录在所述记录介质上的装置,用于如果所述WID标志关闭,则将所述视频帧数据渲染到所述帧缓冲器而不同时根据所述WID值渲染所述WID数据;以及记录在所述记录介质上的装置,用于仅当所述WID标志打开时,按照所述视频图形指令并根据所述WID值,同时地将所述视频帧数据渲染到所述帧缓冲器并将所述WID数据渲染到所述WID缓冲器。
19.如权利要求15所述的计算机程序产品,其中,记录在所述记录介质上的,用于同时地将视频帧数据渲染到帧缓冲器并将WID数据渲染到WID缓冲器的装置还包括记录在所述记录介质上的装置,用于将视频帧数据和WID数据置于连接到所述帧缓冲器和所述WID缓冲器的数据总线上;以及记录在所述记录介质上的装置,用于在同一个时钟变换中,将所述视频帧数据选通到所述帧缓冲器中并将所述WID数据选通到所述WID缓冲器中。
20.如权利要求15所述的计算机程序产品,其中所述帧缓冲器包括一个视频存储器,该视频存储器在映射到计算机显示屏幕的所有像素的存储器单元中承载像素颜色数据,所述WID缓冲器包括一个视频存储器,该视频存储器在映射到所述计算机显示屏幕的所有像素的存储器单元中承载像素的WID数据,所述WID数据包括对窗口属性表中的像素类型的索引;并且每个像素的所述像素颜色数据和所述WID数据被分别存储在所述帧缓冲器和所述WID缓冲器中的相同的存储器地址。
全文摘要
在视频图形适配器上渲染图像,该方法包括在所述视频图形适配器中接收包括窗口标识(‘WID’)值的视频图形指令;并且按照视频图形指令并根据WID值,将视频帧数据渲染到帧缓冲器中并同时将WID数据渲染到WID缓冲器中。典型实施例包括将视频图形指令配置为包括WID值。在典型实施例中,WID值代表对在窗口属性表中的像素类型的索引。
文档编号H04N5/14GK1794342SQ20051011930
公开日2006年6月28日 申请日期2005年11月3日 优先权日2004年11月4日
发明者国维, 尼尔·理查德·马里昂, 乔治·弗郎西斯·拉姆塞伊三世, 詹姆斯·斯坦利·特苏罗 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1