专利名称:利用视频帧缓冲器翻转队列在缓冲器之间进行切换的装置和方法
技术领域:
本发明的实施例的各方面涉及视频图形显示处理的领域,并且更具体地说涉及利用视频帧缓冲器翻转队列在缓冲器之间进行切换。
背景技术:
对图形/多媒体应用来说,视频数据(即音频和视觉数据)可以由芯片组利用普通的视频捕获技术从视频源捕获。所捕获的视频数据被显示在监视器上。在激活的视频再现的过程中,一系列的图像可以按顺序被显示在监视器上。视频数据可以被顺序地存储在一对缓冲器中。通常利用软件来驱动视频硬件,所述视频硬件专门被配置成顺序地将图像存储在这些缓冲器中以及把显示内容从一个图像“翻转”到另一个图像。从一个缓冲器切换到另一个缓冲器的控制方式被称为缓冲器翻转。对于图像的显示内容的翻转可以通过由例如MicrosoftWindowsTM之类的操作系统(OS)提供的软件中断服务来激活。
所述翻转可以与显示垂直同步(VSYNC)信号同步,或者不与之同步。由于非同步翻转可能产生撕裂状的伪像,因此大部分翻转与显示VSYNC同步。如图1所示,视频帧缓冲器中时不时会发生内容的延迟和丢弃。所述丢弃和延迟使得呈现在监视器上的图像产生抖动和其他可视缺陷。所示图形的顶部时间线标记出翻转命令及其相关指令指针。底部时间线标记出每一个显示VSYNC脉冲的出现。箭头指向对应于给定翻转的VSYNC。图2显示了一个帧缓冲器翻转寄存器,其具有与图1的时间线相应的条目。
每当从软件输入缓冲器翻转命令(也被称为缓冲器翻转指令)时,相关的指令指针被作为一个条目存储在帧缓冲器翻转队列中。通常,每当VSYNC脉冲出现时,该帧缓冲器翻转队列中的各指令指针条目前进,从而使得深度较浅的条目重写最深的条目。所述指令指针表示将要被显示在视频监视器上的视频数据的位置变化以及存储已渲染视频数据的特定帧缓冲器。
然而,如图1所示,在时间T4至T7之间,在显示所述帧缓冲器的一个缓冲器中的内容时可能发生延迟,从而导致所呈现的视频显示出现缺陷。紧接在时间T5处的VSYNC之后,其相关指令指针号为2(Ptr 2)的翻转命令被加载到所述帧缓冲器翻转队列中。在T4处显示的已渲染视频数据不改变,直到两个VSYNC之后的T7处。
此外,如图1所示,在时间T7和T10之间,所述帧缓冲器的一个缓冲器中的内容可能被整个丢弃,并且不被呈现在监视器上。紧接在时间T7处的VSYNC后,其相关指令指针号为3(Ptr 3)的翻转命令被加载到所述帧缓冲器翻转队列中。在时间T7处的VSYNC脉冲之后并且在时间T10处的下一个相继VSYNC脉冲之前,其相关指令指针号为4(Ptr 4)的翻转命令被加载到所述帧缓冲器翻转队列中。所述帧缓冲器的一个缓冲器中的与Ptr 3相关的内容被丢弃/重写,而不被呈现在监视器上。
应当注意,在视频图形显示处理的前一种实施方式中,所述软件或硬件通常进行轮询以查看翻转是否完成。如果在软件轮询时发生翻转延迟或者帧丢弃,这可能还意味着从该点往后需要花费大量CPU周期来同步所述视频显示处理。此外,所述帧缓冲器翻转队列可以不同于存储一个条目并且可能存储一个状态标记的寄存器。
下面将参考附图对本发明的实施例进行说明图1示出了示例性数量的翻转命令及其相关指令指针与每个显示VSYNC脉冲的出现的关系。
图2示出了具有两个条目的深度并且与图1的时间线上的各条目相对应的帧缓冲器翻转队列的框图。
图3示出了耦合到帧缓冲器的禁止逻辑的一个实施例的框图。
图4示出了翻转命令及其相关指令指针与每一个显示VSYNC脉冲的出现的关系的一个实施例。
图5示出了具有三个或者更多条目的深度并且与图4的时间线上的各条目相对应的帧缓冲器翻转队列的一个实施例的框图。
图6示出了在脉冲串指令中的翻转命令及其相关指令指针与每一个显示VSYNC脉冲的出现的关系。
图7示出了具有四个或更多条目的深度并且与图6的时间线上的各条目相对应的帧缓冲器翻转队列的一个实施例的框图。
图8示出了可以利用帧缓冲器翻转队列及其相关禁止逻辑的实施例的示例性计算机系统的框图。
虽然本发明可以有各种修改和替换形式,但是已经在附图中以举例的方式示出了本发明的特定实施例,并且下面将进行详细描述。本发明的实施例不应被理解成限于所公开的具体形式,相反,本发明意图覆盖落入本发明的精神和范围内的所有修改、等效表述以及替换方案。
具体实施例方式
为了提供对本发明的实施例的透彻理解,在下面的描述中详细地描述了许多具体的细节,例如特定数据信号、所提到的部件、连接、视频命令的类型等等的示例。然而,对于本领域普通技术人员来说,很明显可以在不利用这些具体细节的情况下实现本发明的实施例。特定的附图标记不应被理解成真实的顺序,而应当被解释成第一缓冲器不同于第二缓冲器。因此,下面详细描述的具体细节仅仅是示例性的。具体细节可以有所变化,并且仍然可以在本发明的精神和范围之内构想出来。
总的来说,描述了各种方法、装置和系统,其中,产生一个信号以禁止执行导致在帧缓冲器的各缓冲器之间进行翻转的翻转命令。在禁止执行翻转命令的该信号被去除之前,一个或多个翻转命令及其相关指令指针可以被预加载到帧缓冲器翻转队列中。
图3示出了耦合到帧缓冲器的禁止逻辑的一个实施例的框图。计算系统300可以包括命令队列302、一个或多个渲染引擎304、帧缓冲器翻转队列306、禁止逻辑块308、脉冲串指令解码逻辑块310、同步回写队列312、帧缓冲器314、存储器316以及其他类似部件。
例如图形应用程序的软件318可以通过指令解码流水线向渲染引擎304提供一个或更多视频指令流。例如,第一图形应用程序可以向指令/命令队列302发送图形驱动器程序指令以及发送包含所述图形指令的指令流,其中包括状态变量设置和翻转命令指针设置。
已解码的视频数据和指令被渲染引擎304获取以进行处理,并且最终显示在监视器321上。渲染引擎304从所述指令流中解码出特定指令以便找出该指令包含什么信息(例如将应用的状态变量变化或者将要被渲染的原语)。可以通过一组渲染状态变量来控制渲染引擎304。这些状态变量被统称为渲染情境,并且可以由所述指令流提供。所述渲染状态变量控制图形渲染处理的特定方面,例如对象颜色、纹理、纹理应用模式等等。原指令指导渲染引擎304所要绘制的形状以及对应于这些形状的位置和尺寸。
渲染引擎304可以包括对应于3D引擎、2D引擎和视频引擎的逻辑和电路。渲染引擎304还可以包括(但不限于)视频捕获引擎,其用于从视频源(例如视频流解码器的硬件装置,或者诸如指令流软件318)捕获已解码的视频数据并且发送所述已解码的视频数据以便存储在帧缓冲器314中。渲染引擎304可以进一步包括显示引擎,其用于从帧缓冲器314中取回视频数据从而在监视器321上进行视觉显示。
渲染引擎304控制捕获视频数据和显示相同的监视器321的并行操作。
在一个实施例中,存储器控制器(未图示)和渲染引擎304可以被集成为单一图形和存储器控制器集线器芯片组(GMCH),该芯片组包括能够并行地执行以便提供高性能3维(3D)和2维(2D)视频能力的专用多媒体引擎。
如上所述,帧缓冲器314可以耦合到渲染引擎304,以便对来自渲染引擎304的数据进行缓冲,从而在监视器321上对视频图像进行视觉显示。帧缓冲器314可以包含至少三个不同的缓冲器322-326。
在激活视频或者计算机直观显示期间,一系列图像需要按顺序被显示在监视器321上。渲染引擎304对第一缓冲器322中的视频流的第一帧的数据进行渲染,同时将视频流的第二帧中的第二缓冲器324内的数据显示在监视器321上。为了防止撕裂状伪像出现在监视器321上,所述视频数据被顺序地存储在多个缓冲器中。在图像被显示在监视器321上之后,每一个视频缓冲器被重写。在同步的回写队列312的帮助下,渲染引擎304可以使视频数据的读取与监视器321的消隐间隔同步并且从帧缓冲器314中的一个缓冲器移动到下一个缓冲器,以便在监视器321上提供对连续图像的视觉显示。
如上所述,帧缓冲器314中的各缓冲器322-326之间的翻转机构可以利用来自软件318的指令来实现,其请求翻转帧缓冲器314中的各视频缓冲器的任务。代替地,所述翻转机构可以在渲染引擎304内的逻辑中实现,以便自动地执行视频捕获和在监视器321上进行显示的并行操作。
禁止逻辑308被耦合到包括所述一个或更多缓冲器322-326的帧缓冲器314。帧缓冲器翻转队列306耦合到禁止逻辑308和帧缓冲器314。帧缓冲器翻转队列306具有存储三个或更多条目的深度。帧缓冲器翻转队列306可以具有等于脉冲串指令中的翻转命令数量的深度。禁止逻辑308禁止所述一个或更多缓冲器322-326在垂直同步(VSYNC)脉冲上切换显示在监视器321上的数据。禁止逻辑308还禁止帧缓冲器翻转队列306在VSYNC脉冲上使得各指针条目前进。该VSYNC信号被用来指导监视器321何时绘制下一个显示帧(即垂直线组)。从绘制每一个显示帧到出现在监视器321上之间所花费的时间通常与刷新速率同步,并且可以以赫兹(Hz)来计量。
同步的回写队列312向软件318传送与帧缓冲器314中的所述一个或更多缓冲器322-326之间的翻转相关的定时和身份信息。同步的回写队列312产生一个关于所述一个或更多缓冲器322-326之间的翻转何时完成的通知。每当出现一个已完成的翻转时,该同步的回写队列3 12就产生这个通知。同步的回写队列312可以提供该定时信息以避免软件318不得不对翻转何时完成进行轮询。此外,同步的回写队列312可以提供该定时信息来同步源翻转频率以便与监视器VSYNC频率精确地相等。等于监视器VSYNC频率的源翻转频率产生一个软件或硬件同步锁相(Genlock)条件。代替地,该同步回写队列可以与例如渲染引擎之类的硬件单元进行通信,以变产生硬件同步锁相条件。
图4示出了翻转命令及其相关指令指针与每一个显示VSYNC脉冲的出现的关系。该图的顶部时间线430标记出翻转命令及其相关指令指针。该图的底部时间线432标记出每一个显示VSYNC脉冲的出现。箭头指向对应于帧缓冲器中的各缓冲器之间的给定翻转的VSYNC。图5示出了具有三个或更多条目534-538的深度并且与图4的时间线上的各条目相对应的帧缓冲器翻转队列506的一个实施例的框图。
参考图4和5,所述禁止逻辑使得帧缓冲器翻转队列506具有预加载能力。具有预加载能力的显示帧缓冲器翻转队列506具有在使得任何条目前进之前存储三个或更多条目534-538的深度。显示帧缓冲器翻转队列506可以在没有任何视频帧丢弃的情况下改善视频质量。此外,在所述队列以及已渲染视频数据帧缓冲器中具有预设数量的预加载指令指针减小了计算系统在按需实时地提供视频指令方面对OS软件的依赖性。所述OS可以对数据进行优先级排序,但是仍然不能及时地裁定和调度视频指令以便支持基于当前正占用OS的其他程序的实时应用。
显示帧缓冲器翻转队列506可以被初始化成非激活,但是其具有载入缓冲器翻转命令及其相关指令指针的能力。在时间T-1,第一缓冲器翻转命令及其相关指令指针(Ptr 1)被加载到帧缓冲器翻转队列506中。
所述禁止逻辑禁止所述帧缓冲器在一个或更多缓冲器之间进行切换。该禁止逻辑禁止帧缓冲器翻转队列506在VSYNC脉冲上前进指针条目,以便允许向帧缓冲器翻转队列506预加载一个或更多缓冲器翻转命令及其相关指令指针。如果显示帧缓冲器翻转队列506仍然处在非激活(禁止)模式下,那么所述显示VSYNC信号不触发缓冲器翻转。在时间T0,VSYNC脉冲出现,并且翻转命令存在于帧缓冲器翻转队列506中,但是监视器不进行显示下一个顺序缓冲器中的视频数据的翻转,这是因为所述禁止逻辑禁止该帧缓冲器在一个或更多缓冲器之间进行切换。
因此,帧缓冲器翻转队列506可以预加载有一个或更多缓冲器翻转命令及其相关指令指针。在时间T1,第二缓冲器翻转命令及其相关指令指针(Ptr 2)被加载到显示帧缓冲器翻转队列506中。
显示帧缓冲器翻转队列506的状态可以被改变成激活,这可以通过携带状态改变信号的新的翻转命令或者其他措施(即软件指令,其传送一个命令指令来禁用所述禁止逻辑)来完成。因此,该禁止逻辑可以被配置成从软件接收一个指令,以便禁用由该禁止逻辑产生的、被发送至所述帧缓冲器翻转队列和所述帧缓冲器的禁止信号。当显示帧缓冲器翻转队列506的状态发生改变时,显示帧缓冲器翻转队列506中的顶部缓冲器翻转命令及其相关指令指针将在下一个显示VSYNC脉冲处起作用。
例如,在时间T2,第一缓冲器翻转命令被执行,并且接着第二缓冲器翻转命令在帧缓冲器翻转队列506中被前进到顶部队列条目。显示帧缓冲器翻转队列506中的顶部缓冲器翻转命令/指令及其相关指令指针(Ptr 2)在下一个显示VSYNC脉冲上被执行(T4)。
预加载的翻转命令的数量可以调节翻转事件与所述帧缓冲器的缓冲器之间的实际翻转所发生的时间之间的延迟。通过预加载足够的缓冲器翻转命令来进行所述调节,从而使得缓冲器之间的切换发生在每一个相继的VSYNC脉冲上。预加载的缓冲器翻转命令的数量可以通过提供视频图形数据的每一个图形应用来确定。预期会发生较大的翻转抖动的图形应用可以增加在禁用所述禁止逻辑之前的预加载的翻转命令的数量。
在整个会话中,持续地进行往帧缓冲器翻转队列506中加载缓冲器翻转命令及其相关指令指针、并且接着在下一个显示VSYNC脉冲上执行在帧缓冲器翻转队列506的顶部的缓冲器翻转命令的处理,从而防止由翻转抖动导致的视频流中的帧丢弃。如图所示,将不存在由翻转抖动引起的帧丢弃(即视频数据在未被显示的情况下被重写),这是因为在被执行之前,没有缓冲器翻转命令被重写。帧缓冲器翻转队列506中存在足够的存储深度,以便存储等于或者大于在给定时间等待执行的所有缓冲器翻转命令的预期数量的缓冲器翻转命令。
总的来说,每当缓冲器翻转命令/指令从软件输入时,相关指令指针被当作条目而被存储在帧缓冲器翻转队列506中。每当VSYNC脉冲在禁止逻辑被禁用的时候到来时,帧缓冲器翻转队列506中的各指令指针条目前进,从而使得深度较浅的条目重写最深的条目。指令指针表示将要被显示在视频监视器上的视频数据的存储位置以及存储该已渲染视频数据的特定帧缓冲器。
图6示出了脉冲串指令中的各翻转命令及其相关指令指针与每一个显示VSYNC脉冲的出现之间的关系。该图的顶部时间线630标记出翻转命令及其相关指令指针。该图的底部时间线632标记出每一个显示VSYNC脉冲的出现。图7示出了具有四个或者更多条目734-740的深度、并且与图6中的时间线上的各条目相对应的帧缓冲器翻转队列706的一个实施例的框图。
参考图6和7,软件可以通过发送包含三个或更多翻转命令及其相关指令指针的单个脉冲串指令来将具有相关显示翻转命令的(混合的)多个处理(渲染)帧排列到命令队列中。所述指令流可以包含一个或更多这样的脉冲串指令。所述软件可以发送一个示例性的脉冲串指令,该脉冲串指令包含四个缓冲器翻转命令及其相关指令指针。在时间T1,在该队列中接收到指令Ptr 1。然而,在时间T2,由于禁止逻辑被启用,因此直到下一个VSYNC脉冲才会发生翻转。在时间T3,该禁止逻辑被禁用,并且该命令队列加载了更多翻转命令Ptr2-4。
所述脉冲串解码逻辑可以执行计算以便确定信息,例如翻转命令的数量、与每一个翻转命令相关的指令装置的位置等等。当这些计算完成时,翻转的序列被排列到所述帧缓冲器翻转队列中,该帧缓冲器翻转队列将在不同的VSYNC脉冲时间处发生。
所述渲染引擎可以对与那些后面跟随着三个缓冲器翻转命令的脉冲串的示例性的一个缓冲器翻转命令相关的视频数据进行渲染。该渲染引擎可以将渲染后的视频数据存储在所述帧缓冲器中的一个相应的缓冲器内。每一个不同的缓冲器存储不同的一组渲染数据。因此,该示例性帧缓冲器将包含至少四个不同的缓冲器,以便存储所述四个缓冲器翻转命令的已渲染视频数据。在时间T4-T7,在各缓冲器之间发生翻转。
参考图3,功率管理逻辑307从命令队列302接收控制输入,并且将控制信号发送到渲染引擎(或多个引擎)304。在许多情况中,所述脉冲串指令的发送以及相应的脉冲串计算允许较长的省电持续时间,并且因此进入了更深的省电状态。
参考图7,帧缓冲器翻转队列706可以在一个动作中装满多个翻转命令,以便允许积极的功率管理。所述渲染引擎和其他图形部件可以快速地对与第一时间帧中的所有脉冲串指令相关的视频数据进行渲染,并且接着对于多个时间帧断电。因此,在与来自所述脉冲串指令的各翻转命令相关的至少一个帧期间,该渲染引擎可以进入降低功耗模式,例如睡眠状态。
缓冲器的较大数量以及帧缓冲器翻转队列706的较大深度允许所述图形渲染引擎在多个时钟周期内进入睡眠。因此,该渲染引擎渲染并且存储足够的视频数据,以便在例如T2处的第一VSYNC脉冲至T4处的第二VSYNC脉冲的时间周期中填满所述四个帧缓冲器。帧缓冲器翻转队列706为该帧缓冲器中的缓冲器之间的四次翻转存储翻转命令及其相关指令指针。上述的预加载允许图形渲染引擎在T5至T7的接下来的三个VSYNC脉冲的时间周期内进入睡眠模式。
应当注意,帧缓冲器翻转队列706通过具有存储四个或者更多指令指针条目的深度而被配置成接收携带四个或者更多翻转命令及其相关指令指针的脉冲串指令。
在这个示例中,在时间T8,第二脉冲串命令可以由包含示例性的三个翻转命令以及相关指令指针的命令队列接收。该脉冲串指令被解码,所述渲染引擎对视频数据进行渲染及存储,并且帧缓冲器翻转队列706存储翻转命令以及相关指令指针。
如上所述,所述同步的回写队列把关于帧缓冲器之间的翻转的定时和身份信息传送到所述软件。该同步的回写队列可以产生一个通知,该通知表明帧缓冲器之间的翻转何时完成。该定时信息可以被用来同步所述源翻转频率以便与监视器垂直同步频率精确地相等。这是软件同步锁相。
所述回写队列可以被用于软件同步锁相,这是通过令应用程序接口(API)中的例程从该回写队列轮询信息以便确定翻转发生的速率,并且接着确定VSYNC脉冲出现的速率。该例程将使产生翻转指令的速率上升或者下降,以便与VSYNC速率匹配。
所述同步的回写队列耦合到存储器。该同步的回写队列的作用是通过使用通用存储器就帧缓冲器翻转信息(例如关于翻转何时发生的时间戳以及翻转所涉及的帧缓冲器的身份)与软件进行通信。通过采用直接存储器存取(DMA),该同步的回写队列允许通过数量更少的软件轮询来确定VSYNC脉冲何时发生。所述电路被配置成在不使用CPU的情况下将数据从存储器传输到另一个部件,例如存储器或者软件。
因此,在传送侧,软件将缓冲器翻转命令写入到命令/指令队列中。在反馈侧,软件从与所述同步的回写队列相关的存储器中读取数据。
在一个实施例中,硬件逻辑告知帧缓冲器翻转队列706一个特定的帧缓冲器已经根据所述指令指针翻转,并且在每次检测到VSYNC脉冲时令存储在帧缓冲器翻转队列706中的各指令指针项目前进。
这个同步的帧缓冲器翻转队列706在源翻转频率精确地等于显示频率时工作得很好。然而,由于所述源可能由不同于监视器时钟的时钟(例如软件多媒体时钟)驱动,因此这两个时钟可能不同步。因此可能存在诸如漂移的差异。因此可能需要例如同步锁相之类的技术。如果显示VSYNC频率可以测量的话,则可以采用时钟同步。监视器垂直同步频率可以通过一种或多种方法来测量。
监视器垂直同步频率可以通过软件直接读取。
然而,当VSYNC定时信息可以与翻转事件相关联的时候,其可以被更准确地传送到软件。当VSYNC定时信息可以与翻转事件相关联的时候,监视器垂直同步频率可以被传送到OS软件。所述同步的回写队列可以利用时间戳传送缓冲器之间何时发生翻转,并且利用标签事件来表示被切换的正在服务的帧缓冲器的身份以及当前正在服务的帧缓冲器的身份。
此外,如果还可以把翻转命令到达时间报告回去的话,那么还可以提供源翻转抖动测量。当翻转命令到达时间被报告回同步控制器时,还可以提供监视器垂直同步频率。
因此,所述同步的回写队列可以传送翻转指令/命令的到达速率和VSYNC脉冲速率之间的差异以便进行软件同步锁相。然后,软件中的例程提高或者降低翻转指令/命令的到达速率,以便实现所述两个速率之间的充分匹配,即软件同步锁相。同步锁相解决了定时失配的问题,其中包括由时钟漂移引起的定时失配。
还可以故意引入缓冲器翻转抖动。在一个示例中,某些组成和呈现计算可以更为软件友好,以便在帧边界(例如30帧每秒)而不是在场边界(例如60fps)完成。如果以帧间隔而不是场间隔进行后处理的话,则会更加软件友好。这样还更省电。
在一个实施例中,显示帧缓冲器翻转队列706耦合到同步的回写队列,从而允许在软件实施方式中把定时信息写回到软件中,并且允许在硬件实施方式中把定时信息写回到渲染引擎中。该信息包括何时以及哪个帧缓冲器被翻转至激活的缓冲器,该激活的缓冲器把已渲染的视频数据提供给视频监视器。
图8示出了示例性的计算机系统的框图,该系统可以采用具有预加载能力以及相关禁止逻辑的帧缓冲器翻转队列的实施例。在一个实施例中,计算机系统800包括用于传送信息的通信机构或总线811以及集成电路部件,所述集成电路部件例如是耦合到总线811以便处理信息的主处理单元812。计算机系统800中的一个或多个部件或装置(例如芯片组836)可以采用具有预加载能力、相关禁止逻辑以及渲染引擎的帧缓冲器翻转队列的实施例。主处理器单元812可以由作为一个单元一起工作的一个或多个处理器核心组成。
计算机系统800进一步包括随机存取存储器(RAM)或者耦合到总线811以便存储将由主处理单元812执行的信息和指令的动态存储装置804(其被称为主存储器)。主存储器804还可以被用来在主处理单元812执行指令的过程中存储临时变量或者其他中间信息。
固件803可以是软件和硬件的组合,其例如是电可编程只读存储器(EPROM),其具有用于记录在EPROM上的例程的操作。固件803可以嵌入基础代码、基本输入/输出系统代码(BIOS)或者其他类以代码。固件803可以使计算机系统800自启动。
计算机系统800还包括只读存储器(ROM)和/或其他静态存储装置806,它们耦合到总线811以便为主处理单元812存储静态信息和指令。静态存储装置806可以存储OS级以及应用级软件。
计算机系统800还可以耦合到显示装置821,其例如是阴极射线管(CRT)或者液晶显示器(LCD),所述显示装置耦合到总线811以便将信息显示给计算机用户。芯片组可以与显示装置821进行接口。
包括字母数字和其他按键的字母数字输入装置(键盘)822也可以被耦合到总线811,以便向主处理单元812传送信息和命令选择。一个附加的用户输入装置是光标控制装置823,例如鼠标、轨迹球、轨迹板、手写笔或者光标方向键,这些装置被耦合到总线811,以便向主处理单元812传送方向信息和命令选择,以及控制显示装置821上的光标移动。芯片组可以与输入输出装置进行接口。
可以被耦合到总线811的另一种装置是硬拷贝装置824,其可以被用于在介质上打印指令、数据或者其他信息,所述介质例如是纸张、薄膜或者类似种类的介质。此外,例如扬声器和/或麦克风(未示出)之类的声音记录和重放装置可以选择性地耦合到总线811,以便与计算机系统800进行音频接口。可以耦合到总线811的另一种装置是有线/无线通信能力825。
所述计算装置可以是例如台式计算机、膝上型计算机、个人数字助理、蜂窝电话或者其他类似装置。
在一个实施例中,被用来运行例程的软件可以被嵌入到机器可读介质上。所述机器可读介质包括以机器(例如计算机、网络装置、个人数字助理、制造工具、具有一组一个或多个处理器的任何装置等等)可访问的形式提供(即存储和/或传输)信息的任何机构。例如,机器可读介质包括可记录/不可记录的介质(例如,包括固件的只读存储器(ROM)、随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪存装置等等)以及电、光学、声学或其他形式的传播信号(例如载波、红外信号、数字信号等等)等等。
虽然已经描述了某些示例性实施例并且在附图中进行了图示,但是应当理解,上述实施例仅用于说明而不是对本发明的限制,并且本发明不限于所描述和图示的具体结构和配置,因为本领域普通技术人员在研究了本发明之后可以想到其他的修改。例如,上述的逻辑可以利用硬件布尔逻辑结合其他被配置成实现特定目的的电子部件、写入软件中以实现特定目的的代码、固件来实现,或者可以利用这三种技术以及其他类似技术的任意组合来实现。模拟或数字形式的VSYNC脉冲被用来使帧同步。其他帧缓冲器输出触发事件可以实现相同的功能。例如,帧缓冲器的输出可以被发送到DAC(数/模转换器)以驱动例如CRT或LCD的显示屏幕。或者帧缓冲器的输出可以被发送到例如DVI(数字视频接口)或者HDMI的数字视频输出总线。所述渲染引擎可以是渲染引擎、视频解码引擎或者视频处理引擎。在类似这样的技术领域中的发展是非常快的,并且其他的优点是不易于预见的,因此可以在不脱离本发明的原理或所附权利要求书的范围的情况下在配置和细节上对所公开的实施例进行修改,以便允许通过所述技术进展来获益。
权利要求
1.一种设备,包括禁止逻辑,其耦合到包括一个或更多缓冲器的帧缓冲器;以及帧缓冲器翻转队列,其具有存储三个或更多条目的深度并且被耦合到该禁止逻辑以及该帧缓冲器,其中该禁止逻辑被配置成禁止所述一个或更多缓冲器在垂直同步脉冲上切换,并且还被配置成禁止该帧缓冲器翻转队列在垂直同步脉冲上前进各指令指针条目。
2.如权利要求1所述的设备,其中,所述帧缓冲器由至少三个不同的缓冲器组成。
3.如权利要求1所述的设备,其中,所述帧缓冲器翻转队列的深度等于或者超过脉冲串指令中的翻转命令的数量。
4.如权利要求1所述的设备,进一步包括回写队列,其把与所述一个或更多缓冲器之间的翻转相关的定时信息以及身份信息传送给软件。
5.如权利要求1所述的设备,进一步包括回写队列,其产生一个通知,该通知表明所述一个或更多缓冲器之间的翻转何时完成。
6.如权利要求1所述的设备,进一步包括回写队列,其传送定时信息以使得源翻转频率与监视器垂直同步频率同步,以使其精确地等于监视器垂直同步频率。
7.如权利要求1所述的设备,进一步包括命令队列,其耦合到脉冲串指令解码逻辑以及所述帧缓冲器翻转队列。
8.如权利要求7所述的设备,其中,所述脉冲串指令解码逻辑被配置成对与脉冲串指令相关的三个或更多翻转命令进行解码,并且渲染引擎被配置成在至少一个视频帧期间进入减少功耗状态,其中所述至少一个视频帧与来自该脉冲串指令的所述三个或更多翻转命令相关。
9.如权利要求1所述的设备,其中,所述禁止逻辑被配置成从软件接收指令,以便禁用由该禁止逻辑产生的、被发送到所述帧缓冲器翻转队列和所述帧缓冲器的禁止信号。
10.如权利要求2所述的设备,其中,所述帧缓冲器耦合到渲染引擎以便对来自该渲染引擎的数据进行缓冲,以用于在监视器上对视频图象进行视觉显示。
11.一种方法,包括产生信号,以便禁止执行使得在帧缓冲器的各缓冲器之间进行翻转的翻转命令;以及在去除禁止执行所述翻转命令的该信号之前,把一个或更多翻转命令及其相关指令指针预加载到队列中。
12.如权利要求11所述的方法,进一步包括即使当出现垂直同步脉冲时,仍然禁止执行翻转命令并且禁止在队列中前进其相关指令指针。
13.如权利要求11所述的方法,进一步包括在包含三个或更多翻转命令以及相关指令指针的单个脉冲串指令中接收多个进行处理的视频帧。
14.如权利要求13所述的方法,进一步包括促使渲染引擎在至少一个视频帧期间进入减少功耗的状态,其中所述至少一个视频帧与来自所述单个脉冲串指令的所述翻转命令相关。
15.如权利要求11所述的方法,进一步包括对第一缓冲器中的视频流的第一帧中的数据进行渲染,同时把来自该视频流的第二帧的第二缓冲器中的数据显示在监视器上;以及在第二缓冲器和另一个缓冲器之间进行切换,以便在执行翻转命令的基础上把数据显示在该监视器上。
16.如权利要求15所述的方法,进一步包括产生一个通知,该通知表明各帧缓冲器之间的翻转何时完成。
17.一种计算系统,包括处理器;总线,其连接到该处理器;以及芯片组,其耦合到该总线和监视器,并且该芯片组包含禁止逻辑,其耦合到包括一个或更多缓冲器的帧缓冲器;帧缓冲器翻转队列,其具有存储三个或更多条目的深度并且被耦合到该禁止逻辑以及该帧缓冲器,其中该禁止逻辑被配置成禁止所述一个或更多缓冲器在垂直同步脉冲上切换,并且还被配置成禁止该帧缓冲器翻转队列在垂直同步脉冲上前进各指令指针条目;以及渲染引擎,其耦合到该帧缓冲器以便把已渲染视频数据存储在该帧缓冲器中,以用于在该监视器上对视频图像进行视觉显示。
18.如权利要求17所述的计算系统,其中,所述帧缓冲器翻转队列的深度等于或超过脉冲串指令中的翻转命令的数量。
19.如权利要求17所述的计算系统,进一步包括回写队列,其把与所述一个或更多缓冲器之间的翻转相关的定时信息以及身份信息传送给软件。
20.如权利要求17所述的计算系统,进一步包括回写队列,其产生一个通知,该通知表明所述一个或更多缓冲器之间的翻转何时完成。
全文摘要
本发明公开了一种方法、设备和系统,其中产生一个信号以便禁止执行导致帧缓冲器中的各缓冲器之间的翻转的翻转命令。可以在去除禁止执行翻转命令的该信号之前把一个或更多翻转命令及其相关指令指针预加载到帧缓冲器翻转队列中。
文档编号G09G5/399GK101025913SQ200610064358
公开日2007年8月29日 申请日期2006年9月28日 优先权日2005年9月29日
发明者H·姜 申请人:英特尔公司