技术领域\n本发明一般地涉及多个图像的渲染(render)。更具体而言,本发明涉及 在一个或多个显示设备上渲染多个图像。\n背景技术\n图像渲染是将基于对象的高级描述转换为用于在某个显示设备上显示 的图形化图像。例如,在将一个三维对象或场景的数学模型转换为一个位 图图像期间就会发生图像渲染的动作。图像渲染的另一个例子是将一个 HTML文档转换为一个用于在计算机监视器上显示的图像。一般地,称为 图形渲染引擎的硬件设备会加速这些图形处理任务。\n当在互联网上冲浪时经常会在一个计算机监视器上看多个图像。例 如,当在互联网上冲浪时在一个计算机监视器上可能显示了一个网页和叠 加在网页上的两个广告条。图形渲染引擎一般渲染和例如所述网页的第一 图像相关联的所有指令。在处理完第一图像的指令后,图形渲染引擎开始 处理和例如一个广告条的第二图像相关联的指令。但是,一般而言,图形 渲染引擎在开始处理和第二图像相关联的指令之前必须完成对和第一图像 相关联的指令的渲染。于是,如果图形渲染引擎处理指令比图形应用程序 生成指令更快,那么图形渲染引擎在那段时间就一直空闲。而且,如果图 像指令在执行下一指令之前要求真实世界的事件的发生,那么图形渲染引 擎在那段时间就一直空闲。一般地,图形渲染引擎顺序地服务于指令流。 于是,和第一指令流相关联的指令在图形渲染引擎开始处理和第二指令流 相关联的指令之前被处理。\n另一个例子是在三维环境中对两个独立图像的渲染。单个显示屏幕显 示第一窗口和第二窗口,第一窗口包含3D图像,第二窗口包含控制2D图 形用户接口的显示图像。注意到在现有技术中,第一窗口中图像的指令在 图形渲染引擎开始处理第二窗口中图像的指令之前被处理。\n现有技术已经在多个设备上显示多个图像。一般地,有两个或多个图 形渲染引擎来处理和多个图像相关联的指令。每个图形渲染引擎服务一个 显示设备。但是,实际上,多个图形渲染引擎比单个图形渲染引擎占用更 多的物理空间、消耗更多的能量并且制造成本更高。于是,减少图形渲染 引擎的数量是有益的。而且,试图用两个或多个图形渲染引擎在同一显示 屏幕上渲染不同图像的现有技术遇到了严重的仲裁冲突。\n每个图形渲染引擎经由一组渲染状态变量来控制。这些状态变量统一 称为渲染上下文。渲染状态变量控制图形渲染过程的特定方面,如对象颜 色、纹理和纹理应用模式等等。\n每个图像的特定的渲染上下文当该图像被渲染时就与该图像一起存在 了。现有技术使用一种低效率的方法来设置和图像相关联的渲染上下文。 图形驱动程序从应用程序接收指令并将包含指令的指令流发送到图形渲染 引擎,所述指令中包括当前和图像相关联的状态变量设置。图形渲染引擎 在执行其他渲染指令之前就处理执行渲染上下文指令。当图形渲染引擎在 处理与第一图像相关联的指令和与第二图像相关联的指令之间切换时,图 形应用程序需要发送渲染上下文指令并且图形渲染引擎需要处理那些渲染 上下文指令。\n以前,和图形渲染引擎相关联的渲染上下文仅经由软件生成的指令流 来修改,从主CPU不能直接访问。因此从例如当前渲染上下文的第一渲染 上下文变到例如新渲染上下文的第二渲染上下文,需要应用软件生成指令 来为第二渲染上下文给定状态变量设置。假如不能读第一渲染上下文,就 需要应用软件保留第一渲染上下文的一份影子备份以在以后某个时刻恢复 该第一渲染上下文。\n附图说明\n本发明参考附图如下:\n图1图示了图形设备的一个实施例的方框图,所述图形设备使用单个 图形渲染引擎来渲染一个或多个图像以在多个显示设备上显示所述一个或 多个图像。\n图2图示了计算机系统的一个实施例的方框图,所述计算机系统包含 中央处理单元(CPU)、高速缓存、存储器、显示设备与图形设备,所述 图形设备具有指令传输器的实施例和图形上下文管理器的实施例。\n图3图示了环形缓冲存储器区域的一个实施例的方框图。\n图4图示了在每个正被渲染的独立图像之间分配图形渲染引擎的使用 的时间分配器的实施例的方框图。\n图5和图6图示了使用单个图形渲染引擎在多个显示设备上渲染多个 图像的过程的一个实施例的流程图。\n尽管本发明可以有各种修改和替换形式,但其具体实施例已经通过附 图中的例子示出了并将在其中详细描述。本发明应不限于所公开的具体显 示来理解,相反,本发明将覆盖落在本发明的精神和范围之内的所有修 改、等价物和替换。\n具体实施方式\n在以下说明中,给出了大量的具体细节,如具体指令、命名元件和连 接等等的例子,以提供对本发明的充分理解。但是很清楚,对本领域的技 术人员没有这些具体细节也可以实施本发明。在其他例子里,用方框图而 非详细地描述公知的元件或方法,以免不必要地使本发明难以理解。于 是,所给出的具体细节就仅仅是示例性的。具体细节可能变化但仍应视为 在本发明的精神和范围之内。\n一般而言,图形渲染引擎并行渲染用来在多个显示设备上显示的独立 图像。指令传输器将两个或多个独立图像的指令转给图形渲染引擎。时间 分配器仲裁每个被渲染的独立图像间对图形渲染引擎的并行使用。图形上 下文管理器将和第一独立图像相关联的渲染上下文从一个已确定存储器位 置恢复到图形渲染引擎。\n图1图示了图形设备的一个实施例的方框图,所述图形设备使用图形 渲染引擎来渲染一个或多个图像以在多个显示设备上显示所述一个或多个 图像。参考图1,图形设备100包含图形渲染引擎102、一个或多个指令 传输器104、上下文管理器106、时间分配器108和例如第一显示设备110 和第二显示设备112的一个或多个显示设备。在一个实施例中,图形设备 100包含单个图形渲染引擎102。\n图形渲染引擎102生成在单个显示设备或多个显示设备上显示的独立 图像。于是,例如两个独立图像可在同一显示设备上显示或者所述两个独 立图像可每个在独自的显示设备上显示。每个独立图像的指令来自独自的 指令流114或单个指令流114,其包含来自多个图形应用程序的指令。\n通过浏览器应用程序来显示带广告条的网页时,与现有技术相比每个 独立图像可并行渲染,现有技术则顺序地先渲染和二维图像相关联的第一 指令流,然后渲染和三维图像相关联的第二指令流。一般而言,现有技术 完全渲染和第一图像相关联的图像指令,例如广告条的第一图像包含在第 一窗口中,然后再完全渲染第二图像的指令,例如网页的第二图像包含在 第二窗口中。一般地,在现有技术中,图形渲染引擎不并行操作对于每个 独立图像的指令。\n时间分配器108仲裁被渲染的每个独立图像间对图形渲染引擎的使 用。图形上下文管理器106存储和每个在存储器设备(未示出)中被渲染 的独立图像相关联的上下文。在处理器上运行和在处理器上运行的浏览器 上运行的各种图形应用程序将图像渲染指令插入指令流114。指令传输器 104将指令从指令流114传到图形渲染引擎102来处理。\n图形渲染引擎图形渲染引擎102与上下文管理器106、时间分配器 108和一个或多个指令传输器104一起工作来高效使用图形渲染引擎 102。每个向指令流114提供指令的图形应用程序可以以不同的速率生成 图像和操作。例如,现场视频流应用程序通常以比文字处理应用程序快得 多的图像生成速度来操作。图形渲染引擎102可并行渲染和两个或多个图 像相关联的指令以最小化图形渲染引擎102保持空闲的时间。而且,在现 有技术中,如果第一图像的指令在执行下一指令之前要求真实世界的事件 发生,那么图形渲染引擎102在那段时间就一直空闲。但是,图形渲染引 擎102可并行渲染来自多个图像的指令以减少图形渲染引擎102的空闲时 间。\n图形渲染引擎102可保存和第一图像相关联的当前渲染上下文并从一 个已确定存储器位置(未示出)加载和第二图像相关联的新的渲染上下 文。在一个实施例中,用来存储渲染上下文的已确定存储器位置可称为逻 辑上下文(未示出)。图形渲染设备100当被要求切换渲染上下文时可: (1)将来自渲染状态变量的当前渲染上下文写入存储器中的第一已确定 存储器位置;(2)从存储器中的第二已确定存储器位置读入新的渲染上 下文;并(3)将来自新的渲染上下文的信息载入渲染状态变量。在一个 实施例中,上下文管理器106中的已确定存储器位置和每个在生成独立图 像的图形应用程序相关联。在一个实施例中,各个指令传输器104和每个 显示设备110、112相关联以存储为那个特定的显示设备110、112处理的 独立图像渲染指令组。\n图2图示了计算机系统的一个实施例的方框图,所述计算机系统包含 中央处理单元(CPU)、高速缓存、存储器、显示设备与图形设备,所述 图形设备具有指令传输器的实施例和图形上下文管理器的实施例。图形设 备200包含多个环形缓冲区寄存器204和206、环形缓冲区直接存储器访 问引擎(RB DMA ENG)212、图形渲染引擎214以及上下文标识寄存器 (CID)222和224。图形设备200与以下部分相关联:多个环形缓冲存储 器区域208和210;多个已确定存储器位置216、218和220;以及多个显 示设备228和230。在一个实施例中,指令传输器包括多个环形缓冲区寄 存器204和206、多个环形缓冲存储器区域208和210以及直接存储器访 问引擎212。在一个实施例中,上下文管理器由以下部分组成:上下文标 识寄存器(CID)222和224;活动上下文标识寄存器(活动CID)226; 以及多个已确定存储器位置216、218和220。\n图3图示了环形缓冲存储器区域的一个实施例的方框图。如上所看到 的,指令传输器的一个实施例包含一个或多个环形缓冲区寄存器310和一 个或多个环形缓冲存储器区域300,通过这两者软件生成的指令能被传送 到图形渲染引擎(未示出)。环形缓冲存储器区域300保存来自图形应用 程序(未示出)的实际图像渲染指令。环形缓冲区寄存器310定义环形缓 冲存储器区域300的起始和长度,并在环形缓冲存储器区域300中包括两 个“偏移”,即头偏移304和尾偏移302。尾偏移302通知图形渲染引擎 存在必须执行的有效指令。随着那些指令被分析和执行,图形渲染引擎增 大头偏移304。指令可以从环形缓冲存储器区域300的底端绕回到环形缓 冲存储器区域300的顶端。在一个实施例中,环形缓冲存储器区域300存 储指向批量缓冲区(未示出)的位置的指令。批量缓冲区包含独自的图像 渲染指令列表,所述指令可存储在不连续的存储器区域中以提供另外的指 令存储容量。在一个实施例中,批量缓冲区存储可从指令流调用的独立指 令序列。\n回来参考图2,每个环形缓冲区寄存器204、206可在寄存器中具有多 个字段。在例如第一环形缓冲区寄存器204的环形缓冲区寄存器实施例中 所包含的字段可以是环形缓冲区有效字段(V)232、起始地址字段(S) 234、缓冲区长度字段(L)235、头偏移字段(H)236、头绕回计数字段 (W)233、尾偏移字段(T)237、自动报告头使能字段(R)238、时间 片字段(TS)239和其它类似字段。\n环形缓冲区有效字段232控制此特定环形缓冲区寄存器是否包括在用 于共享图形渲染引擎214的仲裁进程中。起始地址字段234指向包括环形 缓冲存储器区域208、210的相邻存储器区域的起始。环形缓冲存储器区 域208、210位于系统存储器232或者专用存储器中。缓冲区长度字段235 指明所分配的环形缓冲存储器区域208、210的字节大小。在一个实施例 中,缓冲区长度字段235定义可任一次提交给环形缓冲存储器区域208、 210的最大数据量。在一个实施例中,环形缓冲存储器区域208、210可包 含图像渲染指令和指向一个或多个批量缓冲区240的指针并由此形成可包 含指令的虚拟无限的存储器区域。\n头偏移字段236指向从图形渲染引擎214将分析的下一指令起始地址 234开始的存储器偏移。例如头偏移字段236可指向最后一个被分析的指 令的后一个存储器单元。图形渲染引擎214随着指令被分析而更新头偏移 字段236。一旦头偏移字段236达到尾偏移字段237的值,即两个偏移相 等,那么只要维持此条件图形渲染引擎214就认为环形缓冲存储器区域 208、210为空,并为共享图形渲染引擎214而从仲裁进程中去掉相应的环 形缓冲区寄存器204、206。于是,存在一个标志表明此特定显示设备的指 令流应从中心进程中去掉。而且,在环形缓冲区寄存器204、206中包括 自动报告头使能字段,它使头指针值和头绕回计数字段233写入可高速缓 存的存储器以用于更有效的流控制算法,例如,轮询头偏移236以确定进 度期间的流控制算法。\n环形缓冲存储器区域208、210可将指令从存储器区域的末端环绕到 存储器区域的起始处。每次头偏移236绕回到环形缓冲存储器区域208、 210的起始地址234图形渲染引擎214都增大头绕回计数字段233。在一个 实施例中,头绕回计数字段233包括在写进“报告头”进程的双字 (DWord)中。图形设备200可使用头绕回计数字段233来跟踪指令分析 进度,就象环形缓冲存储器区域208、210具有比实际物理缓存大得多的 “虚拟”长度。\n尾偏移字段237指向环形缓冲存储器区域208、210中从起始地址234 偏移特定距离的位置。尾偏移字段237可指向图形应用软件可用来存储以 后将执行的另外的图形渲染指令的下一指令数据存储器单元。例如,尾偏 移字段237指向提交给图形渲染引擎214用于执行的最后指令的后一存储 器单元232。所提交的指令可从环形缓冲存储器区域208、210的末端绕回 到顶端,这种情况下所写的尾偏移字段237将比前一个值小。环形缓冲存 储器区域208、210的“空”条件可定义为“头偏移字段236等于尾偏移 字段237”。\n自动报告头使能字段238允许图形应用软件或操作软件请求将头偏移 字段236和头绕回计数字段233的内容周期地写到CPU监听的特定系统存 储器位置。自动报告可编程为每次头偏移字段236前进一个被编程的量的 时候就出现。这种自动报告机制允许软件使用头偏移字段236和头绕回计 数字段233来确定环形缓冲区中自由空间的量。于是,头偏移字段236可 被周期性地报告到系统存储器中以自动提供相当新的头偏移字段236值, 而不必经由一个指令来明确获得头指针值。\n每个显示设备228、230可具有和此个别显示设备相关联的独自的指 令传输器。如图2所图示的,第一环形缓冲区寄存器204和第一环形缓冲 存储器区域208与第一显示设备228相关联。第二环形缓冲区寄存器206 和第二环形缓冲存储器区域210与第二显示设备230相关联。于是,在此 例子中,第一环形缓冲区寄存器204和第一环形缓冲存储器区域208提供 指令用于渲染要在第一显示设备228上显示的独立图像。在一个实施例 中,第一环形缓冲区寄存器204和第一环形缓冲存储器区域208可与第二 显示设备230相关联。\n多个指令传输器允许赋给每个指令传输器不同的优先级。例如,较低 优先级的指令传输器可用于可中断的后台渲染任务。相似地,较高优先级 的指令传输器可用来服务于例如视频帧捕获的异步事件。而且,通过分配 第一指令传输器来服务于例如第一显示器228的一个显示设备,并分配第 二指令传输器来服务于例如第二显示器230的另一显示设备,图形设备 200可支持每个显示设备独自的指令流。另外,图形设备200可支持每个 显示设备分别控制的指令流。\n如上所看到的,每个指令传输器可包括直接存储器访问引擎212。直 接存储器访问引擎212从特定的指令传输器取得指令并将这些指令传给图 形渲染引擎214。\n图形渲染引擎214从指令传输器经由直接存储器访问引擎212读取图 像指令并执行这些图像指令。图形渲染引擎214经由环形缓冲区寄存器 204、206的头偏移字段236和尾偏移字段237间的不同来检测环形缓冲存 储器区域208、210中指令的存在。图形渲染引擎214解释并解码指令的 公共“头”字段以确定指令包含什么信息以及如何进一步执行指令。对指 令的这种解释和解码通常称为分析。\n在一个实施例中,图形渲染引擎214解码来自指令流242的具体指令 以找出指令包含什么信息(例如要应用的状态变量变化246和要渲染的图 元(primitive)248)。图形渲染引擎214随后相应执行指令。状态变量变化 指令246的执行引起当前渲染上下文的具体变化。图元指令248的执行引 起存储器256、258中适当的图像信息的修改(即图像被渲染)。图形渲 染引擎214随后将图像信息存储在相应于每个显示设备228、230的存储 器位置处,例如第一显示图像256和第二显示图像258。在一个实施例 中,第一显示图像256的信息和第二显示图像258的信息存储在专用于第 一显示设备228和第二显示设备230的本地存储器中。在一个实施例中, 第一显示图像256的指令和第二显示图像258的指令存储在系统存储器 232中。图形渲染引擎214从存储器中读入已渲染的图像信息并周期地将 已渲染的图像信息交给相关联的显示设备。例如第一显示设备228的显示 设备随后根据此信息将实际的图像图示在显示上。\n在一个实施例中,图形应用程序将指令供应到指令流242中。如所提 到的,这些指令可存储在通常和特定的显示设备228、230相关联的环形 缓冲存储器区域208、210中。在一个实施例中,在指令流242中找到的 一些类型的指令可以是状态变量变化246、图元248与设置上下文命令 250和252。图元指令248指示图形渲染引擎214关于要画出的形状和要赋 给这些形状的位置和尺寸。状态变量变化指令246指示图形渲染引擎214 在渲染图像的时候修改存储在硬件图形上下文电路244中的渲染状态变量 组的当前值。在一个实施例中,设置上下文命令(设置CXT#)250、252 可使图形渲染引擎214将当前渲染上下文保存到例如第一已确定存储器位 置216的已确定存储器位置,并从例如第二已确定存储器位置218的新的 已确定存储器位置恢复新的渲染上下文。\n例如第一已确定存储器位置216的每个已确定存储器位置存储正被图 形渲染引擎214渲染的图像的渲染上下文。相似地,每个已确定存储器位 置216、218和220可存储当渲染修改的独立图像时要使用的渲染状态变 量设置。在一个实施例中,多个已确定存储器位置216、218和220的存 在允许图形渲染引擎214跟踪和每个正在渲染的图像相关联的渲染上下 文。上下文管理器的一个实施例包含多个已确定存储器位置216、218和 220与上下文标识寄存器222、224和226以管理多个图像的并行渲染。上 下文管理器的一个实施例和图形显示控制器电路(GDC)270配合以支持 在多个显示设备228、230上显示图像以及在例如第一显示设备228的同 一显示设备上显示多个图像。\n硬件图形上下文电路244中大量硬件状态变量的设置控制图形设备 200中例如渲染的图形操作。状态变量可包括全局状态变量和上下文状态 变量。全局状态变量对所有上下文是公共的(例如逻辑地址映射资源等 等)并由此认为在任何具体渲染上下文的范围之外。但是,每个和具体图 形应用程序相关联的渲染上下文确实包含独自的上下文状态变量组。在一 个实施例中,这些和具体图形应用程序相关联的渲染上下文可存储在活动 片上(on-chip)存储器上的已确定存储器位置或者系统存储器232中的多 个已确定存储器位置216、218和220中。\n如所提到的,多个已确定存储器位置216、218和220通过在存储器 232中存储并从存储器232恢复和正被图形渲染引擎渲染的独立图像相关 联的渲染上下文来支持图形渲染引擎214。在一个实施例中,例如设置上 下文为A0250的来自指令流242的第二设置上下文指令指示图形渲染引擎 214将正在渲染图像的当前渲染上下文发送到例如第一已确定存储器位置 216的已确定存储器位置中存储起来。同时,和生成第二图像的图形应用 程序相关联的第二已确定存储器位置218从图形渲染引擎214接收信号来 恢复和正被图形渲染引擎214并行渲染的第二图像相关联的渲染上下文。 在一个实施例中,增加位于设备上的上下文缓存260减小了存储器带宽的 负荷和交换上下文所需的时间。\n上下文管理器还由上下文标识寄存器(CID)222、224和活动上下文 标识寄存器226组成。上下文标识寄存器222、224和特定的环形缓冲区 寄存器204、206相关联从而和特定的显示图像存储器位置256、258相关 联。\n在一个实施例中,活动上下文标识寄存器226跟踪包含在当前活动的 环形缓冲区寄存器204、206中的上下文标识寄存器222、224值。例如第 一上下文标识寄存器222的被跟踪的上下文标识寄存器确定特定的已确定 存储器位置216、218和220中的哪个和当前正被图形渲染引擎渲染的图 像相关联。\n在一个实施例中,每个上下文标识寄存器222、224包含一个已确定 存储器位置地址和一组上下文限定位。上下文限定位控制部分渲染上下文 在上下文切换时必须还是不必保存/恢复。在一个实施例中,每个上下文标 识寄存器222、224实施例如“禁止保存纹理调色板”上下文限定位和 “禁止恢复纹理调色板”上下文限定位的上下文限定位。在一个实施例 中,这些上下文限定位帮助在二维和三维图像之间交换上下文,这时三维 图像可能需要保持一个当前纹理调色板(即作为渲染上下文的一部分保存 和恢复)而二维图像可能不需要。\n已确定存储器位置216、218和220经由相应上下文标识寄存器222、 224的已确定存储器位置地址来引用。已确定存储器位置216、218和220 的实际大小是上下文切换期间存储/恢复的数据量并取决于渲染上下文是否 包括纹理调色板。在一个实施例中,上下文标识寄存器222、224可包含 两个另外的寄存器来指明存储器232中各个已确定存储器位置216、218 和220。在一个实施例中,在对来自存储在相应环形缓冲存储器区域 208、210中的指令流242的“设置上下文”指令250、252进行处理期 间,一个特定上下文标识寄存器222、224成为活动寄存器。在一个实施 例中,设置上下文指令250、252提供新的上下文标识值(局部上下文地 址+禁止保存调色板位)被载入上下文标识寄存器222、224。设置上下文 指令250、252还包含用来可选地禁止恢复新上下文的禁止恢复位。在一 个实施例中,可在上下文初始化期间使用禁止恢复位来避免从存储器232 加载未初始化的上下文数据。\n活动上下文标识寄存器226包含例如第一环形缓冲区寄存器204的活 动环形缓冲区寄存器的上下文标识值。作为执行设置上下文指令250、252 的一部分,比较来自活动上下文标识寄存器226和设置上下文指令的已确 定存储器位置地址字段。如果不同或者活动上下文标识寄存器226未初始 化,就发生上下文交换的操作。\n在一个实施例中,在上下文交换操作期间,如果没有设置禁止恢复指 令字段,可运行上下文恢复操作。这里,例如第一已确定存储器位置216 的已确定存储器位置的地址值用来加载活动上下文标识寄存器226。注 意,指令的上下文限定字段还可制约恢复部分渲染上下文。例如,纹理调 色板可或者不可恢复。\nHW GFX CXT 244导致从合适的已确定存储器位置加载新上下文,以 及用来自设定上下文指令250、252的值来加载活动上下文标识寄存器。 在此处,相应的环形缓冲区寄存器204、206和环形缓冲存储器区域208、 210已经将活动上下文交换到新的已确定存储器位置216、218和220中。\n如前所见,每个图形应用程序可以不同的速率生成图像指令。同样 地,每个显示设备228、230可以不同的速率刷新显示和其相关联的图 像。在一个实施例中,上下文管理器和指令传输器支持不同指令流之间、 不同显示设备228、230之间和同一指令流242中与不同图形应用程序相 关联的渲染上下文之间的无缝交换。\n图4图示了在每个正被渲染的独立图像之间分配图形渲染引擎的使用 的时间分配器的实施例的方框图。在一个实施例中,时间分配器400包含 仲裁和切换模块410、定时器寄存器412、单位寄存器414、单位时间计数 器416和时间片计数器418。在一个实施例中,时间分配器400提供了对 单个图形渲染引擎411使用的分配的逝去时间标准和公平使用标准。在一 个实施例中,时间分配器400可在多个显示设备(未示出)、多个各自具 有自己的指令流413的图形应用程序和在单个指令流413中的多个图形应 用程序之间分配图形渲染引擎411的使用来渲染独立图像。\n每个环形缓冲区寄存器,例如第一环形缓冲区寄存器402和第二环形 缓冲区寄存器404,可以是时间分片的或者环形缓冲区寄存器可以是非时 间分片的,例如第三环形缓冲区寄存器406。如下所述,每个非时间分片 的寄存器可用于例如现场视频的高优先级图形图像来暂时独占图形渲染引 擎411的使用。\n每个环形缓冲区寄存器402、404都有和其相关联的TIME SLICE寄 存器420、422,所述寄存器420、422指明在表示应该检查交换到另一个 时间分片环形缓冲区之前要运行的指令执行的所需持续时间。在一个实施 例中,环形缓冲区寄存器402、404中存在时间片字段420、422以指明应 符合此特定环形缓冲区寄存器402、404的使用图形渲染引擎411的百分 比。时间片字段420、422还可指明应符合此特定环形缓冲区寄存器402、 404的使用图形渲染引擎411的最少绝对时间。在一个实施例中,指令执 行的所需持续时间可以以时间单元来编程。在一个实施例中,驱动软件 424将这些时间单元值写入每个时间片字段420、422。从而,驱动软件 424能够控制给每个时间分片环形缓冲区寄存器402、404的绝对和相对时 间。CPU 440从例如存储器442的存储器来访问驱动软件424。\n单位寄存器414提供将由驱动软件424使用的向前兼容的单位时间的 时间量。设备的实际时间参照可随配置和/或实施而不同的情况下确定单位 时间量是重要的。在一个实施例中,单位寄存器414使用图形设备的400 个核心时钟周期作为实际的时间参照。单位寄存器414可经由图形设备的 BIOS固件426来编程。其它时间片参数可相对于由单位寄存器414确定的 此单位时间量来定义。由单位寄存器414定义的每个单位时间量可以是例 如一个单位时间等于五十微秒或一个单位时间等于四十时钟周期。\n单位寄存器414还包含一个将环形缓冲区时间分片打开或关闭的时间 分片使能位(T)428。在一个实施例中,当清除了单位寄存器414的时间 分片使能位428时,固定环形缓冲区有效。在一个实施例中,当设置了单 位寄存器414的时间分片使能位428时,时间分片环形缓冲区寄存器 402、404之间的仲裁就经由时间片字段420、422来控制。\n定时器寄存器412实施时间分片定时控制。当设置了时间分片使能位 428时,定时器寄存器412按单位读取写入每个环形缓冲区寄存器402、 404的时间片字段420、422部分的值。在此模式下,激活或恢复指令流 413导致用例如第一环形缓冲区寄存器402的该特定环形缓冲区寄存器的 时间片字段420、422部分中的内容值来初始化定时器倒计数字段(TC) 434,指令流413将指令供应给例如第一环形缓冲存储器区域430的特定 环形缓冲存储器区域。当持续执行来自环形缓冲存储器区域的指令时,定 时器倒计数字段434按每个时间单元来减少。\n时间片计数器418按每个时间单元来减少定时器倒计数字段434。单 位时间计数器416监视并对每个核心时钟周期计数。单位时间计数器416 向时间片计数器418发送信号来基于由单位寄存器414定义的已定单位时 间量来减少定时器倒计数字段434。\n在一个实施例中,如果以下两个条件存在则图形渲染引擎411从仲裁 和切换模块410接收指令以停止渲染来自一个环形缓冲存储器区域的指令 并开始渲染来自另一个环形缓冲存储器区域的指令。这两个条件是如果定 时器倒计数字段434变成零,以及在另一个环形缓冲存储器区域中存在挂 起的指令。图形渲染引擎411随后切换为执行例如第二环形缓冲存储器区 域432的另一个环形缓冲存储器区域,这导致用第二环形缓冲区寄存器 404中的时间片字段422中的内容来再初始化定时器倒计数字段434。这 种切换在下一个指令仲裁点出现。\n但是,如果当定时器倒计数字段434变成零时在例如第一环形缓冲存 储器区域430的另一个环形缓冲存储器区域中没有挂起指令,那么继续执 行当前环形缓冲存储器区域中的指令。在一个实施例中,无期限地继续执 行当前环形缓冲存储器区域中的指令直到当另一个环形缓冲存储器区域通 知存在指令为止。在一个实施例中,如果头偏移字段415中的值不同于尾 偏移字段417中的值,例如第一环形缓冲区寄存器402的环形缓冲区寄存 器表明有指令要执行。在一个实施例中,新指令的存在被通知到仲裁和切 换模块410。仲裁和切换模块按时间片字段420、422中指定值继续执行当 前环形缓冲存储器区域中的指令并随后执行新指令。\n活动上下文标识寄存器经由仲裁和切换模块410将活动上下文标识寄 存器(未示出)的上下文标识寄存器值通知给图形渲染引擎411。\n几种机制可中断对两个环形缓冲区寄存器之间使用图形渲染引擎411 的仲裁进程,在两个环形缓冲区寄存器各自的环形缓冲存储器区域中存储 有挂起指令。如上所看到的,例如第三环形缓冲区寄存器406的非时间分 片高优先级环形缓冲区可通知仲裁和切换模块410暂停定时器倒计数434 和当前活动的时间分片环形缓冲区寄存器的渲染指令。这种暂停仅是暂时 的,直到图形渲染引擎411完成渲染和非时间分片环形缓冲区相关联的当 前指令。\n来自图形应用软件的指令流413可包含指令来暂时中断图形渲染引擎 411的仲裁使用。例如,“加载寄存器”指令423可中断两个时间分片环 形缓冲区寄存器402、404间的仲裁使用,在环形缓冲区寄存器402、404 各自的环形缓冲存储器区域430、432中存储有挂起指令。如果在另一个 环形缓冲存储器区域中存在挂起指令,软件可以使用“加载寄存器”指令 423来清除定时器倒计数字段434并由此有效地使活动环形缓冲区寄存器 放弃其时间分片时段的剩余部分。例如,当预计到被执行指令的时间不会 超过根据环形缓冲区寄存器402、404的指明使用百分比或绝对最少时间 时可以使用“加载寄存器”指令423。在一个实施例中,如果和第一流相 关联的指令不占用整个时间分片时段,那么仲裁和切换模块410自动切换 到另一个包含挂起指令的环形缓冲存储器区域。而且例如,可在一个极耗 时间的指令或不可中断的指令序列之前使用“加载寄存器”指令423,以 允许在图形渲染引擎411按此特定指令序列操作之前来处理第二应用程序 的挂起指令。\n如所看到的,如果没有其他环形缓冲存储器区域430、432有准备好 执行的指令,则越过“加载寄存器”指令423继续执行指令。如果在执行 另一个环形缓冲区的指令之后,又一个环形缓冲存储器区域430、432确 实有要执行的指令,那么图形渲染引擎411立即切换回原来的环形缓冲区 的指令而不必等待完定时器倒计数434。\n指令流413还可包含“等待事件”指令425。“等待事件”指令425 可用来暂停执行来自此具体指令流413的指令直到特定的条件存在或事件 发生。如果执行“等待事件”指令425导致暂停,则允许其他时间分片环 形缓冲区寄存器402、404来使图形渲染引擎处理它们的相关联指令,即 使在暂停环形缓冲区的时间分片时段的剩余部分期满之前。例如,“等待 事件”指令425可用来等待视频捕获事件。当从显示屏上的垂直顶端位置 到显示屏上的垂直底端位置时,显示设备必须使用这些指令来显示图像。 “等待事件”指令425。于是,图形渲染引擎411已经渲染了显示屏上的 完整图像的所有指令并且不能再渲染此显示设备的指令,直到从垂直顶端 位置到垂直底端位置的转变时间段期满为止。在图形设备在等待这样一个 事件发生的期间,“等待事件”指令425允许图形渲染引擎411在等待当 前显示设备发生此异步事件的时候重使能对和不同显示设备相关联的另一 个时间分片环形缓冲存储器区域的处理。异步事件是不在规则间隔发生或 时间上不协调的事件,例如视频捕获事件。在一个实施例中,异步事件或 者随机发生或者在和指令流执行无关的间隔发生。例如,显示设备的垂直 空白事件作为一个异步事件在真实世界的时间中实际上在规则间隔(即 60Hz)发生,但与和指令流413的执行相关联的不规则服务时间是异步 的。\n图5和图6图示了使用单个图形渲染引擎在多个显示设备上渲染多个 图像的过程的一个实施例的流程图。当指令流将指令从一个或多个图形应 用程序传送到指令传输器时指令流启动所述过程。\n在方框505中,由环形缓冲区寄存器定义的第一环形缓冲存储器区域 从多个图形应用程序或经由单个图形应用程序接收指令。第一环形缓冲存 储器区域的位置和大小可由包含在第一环形缓冲区中的可编程内容定义。 指令传输器可包含一个或多个环形缓冲存储器区域或相似的存储器区域。 指令传输器可包含一个或多个环形缓冲区寄存器或相似的设备。\n在方框510中,驱动器将代表图像的指令存储在第一环形缓冲存储器 区域中。在一个实施例中,驱动器改变相应环形缓冲区寄存器中的尾偏移 字段以表示存在包含在第一环形缓冲存储器区域中的这些挂起指令。第一 环形缓冲区寄存器将存在要执行的指令通知到图形渲染引擎与仲裁和切换 模块。\n在方框515中,指令传输器使用DMA引擎为图形渲染引擎从第一环 形缓冲区存储器中取得指令。仲裁和切换模块将第一环形缓冲区存储器设 为其中的指令正被图形渲染引擎处理的存储器。\n在方框520中,图形上下文管理器设置和第一环形缓冲区寄存器相关 联的当前渲染上下文。\n在方框525中,在一个实施例中,如果正被图形渲染引擎处理的第一 (当前)图像具有不同于下面将要处理的第二(下一个)图像的渲染上下 文,则发生以下过程。图形上下文管理器存储和第一图像相关联的渲染上 下文并将和第二图像相关联的渲染上下文恢复到图形渲染引擎中。图形上 下文管理器在例如已确定存储器位置的第二存储器区域中存储并恢复状态 变量值,所述状态变量值代表和来自具体图形应用程序的图像相关联的渲 染上下文。第二存储器区域可由包含在第二寄存器中的例如上下文标识寄 存器的可编程内容来定义。\n在方框530中,图形渲染引擎执行来自例如第一环形缓冲存储器区域 的环形缓冲存储器区域的指令,并对第一图像显示存储器区域进行合适的 修改,所述环形缓冲存储器区域和第一显示设备相关联。基于时间分配 器,图形渲染引擎可随后开始执行来自和第二显示设备相关联的第二环形 缓冲存储器区域的指令。在一个实施例中,图形渲染引擎可开始执行来自 第二图形应用程序的指令,所述指令包含在供应第一环形缓冲存储器区域 的同一指令流中。于是,图形渲染引擎可通过切换来轮换处理和第一独立 图像相关联的指令与和第二独立图像相关联的指令。图形渲染引擎可在处 理来自不同环形缓冲存储器区域的指令之间切换或者通过处理同一指令流 中来自两个不同图形应用程序的指令来切换。注意,图形渲染引擎在开始 处理和第二独立图像相关联的指令之前不需要等待处理完所有和第一独立 图像相关联的指令。\n在方框535中,时间分配器可加载与第一独立图像和第二独立图像相 关联的指令之间对图形渲染引擎的平衡使用。在一个实施例中,时间分配 器可加载与两个或更多独立图像相关联的指令之间对图形渲染引擎的平衡 使用。在一个实施例中,时间分配器可根据为每个图像确定的百分比和为 每个图像确定的对图形渲染引擎使用的绝对最少时间来平衡对图形渲染引 擎的使用。时间分配器还可平衡要求立刻使用图形渲染引擎的高优先级图 像与共享对图形渲染引擎使用的百分比和绝对最少时间的图像之间对图形 渲染引擎的使用。\n在方框540中,时间分配器可在定时电路中确定一个兼容于在不同核 心频率操作的设备的单位时间量。注意,这些方框并不表示任何固定的串 行运行顺序。例如,方框540可在方框505之前发生。\n在方框545中,时间分配器可经由来自图形设备驱动器的指令来将指 定给和第一图像相关联的指令使用图形渲染引擎的时间让给和第二图像相 关联的指令。\n在方框550中,时间分配器经由来自图形应用程序的指令允许图形渲染引 擎在等待第一图像的图像渲染事件发生时处理和第二图像相关的指令。\n在方框555中,图形设备在一个或多个显示设备上并行显示图像。\n在方框570中,图形设备继续在方框505中开始的此过程。
法律信息
- 2012-09-05
未缴年费专利权终止
IPC(主分类): G06T 1/20
专利号: ZL 02812635.1
申请日: 2002.06.28
授权公告日: 2007.09.05
- 2007-09-05
- 2004-10-20
- 2004-08-11
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
1999-07-15
| | |
2
| | 暂无 |
1991-12-20
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2008-01-11 | 2008-01-11 | | |