利用具有时间分配器的图形渲染引擎的装置、方法和系统的制作方法

文档序号:6423356阅读:219来源:国知局
专利名称:利用具有时间分配器的图形渲染引擎的装置、方法和系统的制作方法
技术领域
本发明一般地涉及多个图像的渲染(render)。更具体而言,本发明涉及在一个或多个显示设备上渲染多个图像。
背景技术
图像渲染是将基于对象的高级描述转换为用于在某个显示设备上显示的图形化图像。例如,在将一个三维对象或场景的数学模型转换为一个位像期间就会发生图像渲染的动作。图像渲染的另一个例子是将一个HTML文档转换为一个用于在计算机监视器上显示的图像。一般地,称为图形渲染引擎的硬件设备会加速这些图形处理任务。
当在互联网上冲浪时经常会在一个计算机监视器上看多个图像。例如,当在互联网上冲浪时在一个计算机监视器上可能显示了一个网页和叠加在网页上的两个广告条。图形渲染引擎一般渲染和例如所述网页的第一图像相关联的所有指令。在处理完第一图像的指令后,图形渲染引擎开始处理和例如一个广告条的第二图像相关联的指令。但是,一般而言,图形渲染引擎在开始处理和第二图像相关联的指令之前必须完成对和第一图像相关联的指令的渲染。于是,如果图形渲染引擎处理指令比图形应用程序生成指令更快,那么图形渲染引擎在那段时间就一直空闲。而且,如果图像指令在执行下一指令之前要求真实世界的事件的发生,那么图形渲染引擎在那段时间就一直空闲。一般地,图形渲染引擎顺序地服务于指令流。于是,和第一指令流相关联的指令在图形渲染引擎开始处理和第二指令流相关联的指令之前被处理。
另一个例子是在三维环境中对两个独立图像的渲染。单个显示屏幕显示第一窗口和第二窗口,第一窗口包含3D图像,第二窗口包含控制2D图形用户接口的显示图像。注意到在现有技术中,第一窗口中图像的指令在图形渲染引擎开始处理第二窗口中图像的指令之前被处理。
现有技术已经在多个设备上显示多个图像。一般地,有两个或多个图形渲染引擎来处理和多个图像相关联的指令。每个图形渲染引擎服务一个显示设备。但是,实际上,多个图形渲染引擎比单个图形渲染引擎占用更多的物理空间、消耗更多的能量并且制造成本更高。于是,减少图形渲染引擎的数量是有益的。而且,试图用两个或多个图形渲染引擎在同一显示屏幕上渲染不同图像的现有技术遇到了严重的仲裁冲突。
每个图形渲染引擎经由一组渲染状态变量来控制。这些状态变量统一称为渲染上下文。渲染状态变量控制图形渲染过程的特定方面,如对象颜色、纹理和纹理应用模式等等。
每个图像的特定的渲染上下文当该图像被渲染时就与该图像一起存在了。现有技术使用一种低效率的方法来设置和图像相关联的渲染上下文。图形驱动程序从应用程序接收指令并将包含指令的指令流发送到图形渲染引擎,所述指令中包括当前和图像相关联的状态变量设置。图形渲染引擎在执行其他渲染指令之前就处理执行渲染上下文指令。当图形渲染引擎在处理与第一图像相关联的指令和与第二图像相关联的指令之间切换时,图形应用程序需要发送渲染上下文指令并且图形渲染引擎需要处理那些渲染上下文指令。
以前,和图形渲染引擎相关联的渲染上下文仅经由软件生成的指令流来修改,从主CPU不能直接访问。因此从例如当前渲染上下文的第一渲染上下文变到例如新渲染上下文的第二渲染上下文,需要应用软件生成指令来为第二渲染上下文给定状态变量设置。假如不能读第一渲染上下文,就需要应用软件保留第一渲染上下文的一份影子备份以在以后某个时刻恢复该第一渲染上下文。


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