用于在桌面环境中动态地减少应用程序渲染到屏幕上时间的方法设备与流程

文档序号:18301859发布日期:2019-07-31 10:15阅读:289来源:国知局
用于在桌面环境中动态地减少应用程序渲染到屏幕上时间的方法设备与流程

本申请要求于2016年10月31日提交的美国专利申请no.15/338,492的优先权,所述美国专利申请的全部内容特此以引用的方式并入本文中。

1.技术领域

本发明大体涉及计算系统和软件,并且更具体地说,涉及用于显示图形内容的计算系统和软件。

2.发明背景

大多数调制解调器计算机操作系统包括以全屏模式(或甚至全屏独占模式)或窗口化模式显示应用程序的能力。一些常规计算机监视器具有固定刷新率,而其它计算机监视器可以动态地刷新。在常规计算机系统中,首先通过渲染硬件(例如图形处理单元(gpu))来渲染或创建用于在监视器上显示的内容,并且接着将其存储在两个缓冲区中的一者中,所述两个缓冲区通常是系统存储器或gpu存储器/高速缓存中的地址位置。许多常规系统在所谓的双缓冲方案中使用两个缓冲区。一个缓冲区(通常称为前缓冲区)保存当前显示在监视器上的渲染内容。另一缓冲区(通常是后缓冲区)保存等待在下一适当时间显示的渲染内容。当操作系统确定应显示后缓冲区内容时,执行反转,其中显示器切换到显示后缓冲区的内容。

在窗口化模式下,渲染过程包括渲染每个打开的应用程序的内容以及桌面和任务栏以及菜单的任何未占用部分,并且此后将这些个别图形部分合成到合成表面中,接着在显示器上逐帧显示该合成表面。此后一过程称为桌面合成,并且通常由称为桌面合成器的操作系统进程执行。桌面合成器是系统进程,其通常以与监视器刷新率相关的固定间隔唤醒,以便将多个应用程序窗口合成扫描并且显示在监视器上的单个表面。

常规操作系统通常使用称为垂直同步或vsync的过程来避免称为“撕裂”的现象,其中显示器示出具有不同内容的两个渲染帧的部分。在启用vsync时,每个缓冲区反转只能在每次刷新后发生。这有效地限制了监视器刷新率下的帧渲染率。vsync还会在桌面合成器唤醒时设置固定间隔。

以全屏独占模式运行的当前应用程序在应用程序完成其渲染与内容出现在具有动态刷新率技术的监视器之间具有非常小的时延(<1ms)。这是由于以下事实:应用程序直接控制到后缓冲区的反转,接着在渲染完成后立即引发反转。然而,对于具有额外桌面合成步骤的窗口化应用程序,时延非常高,并且对于典型的60hz显示器,可能会高达33.3ms。此延迟包括:(1)等待桌面合成器线程唤醒所花费的时间;以及(2)在渲染硬件可以反转前后缓冲区之前等待vsync边界(下次固定刷新)所花费的时间。这导致明显的视觉停顿。如果有可能最小化或至少减少此时延,则窗口化应用程序可以表现得接近于全屏独占模式应用程序的性能,并且在动态刷新率监视器上实现低时延和无停顿的视觉体验。

10引入了模拟全屏独占模式,其具有传统全屏独占的低时延优势,以及快速任务切换的便利性。然而,此实施方式并不涵盖所有窗口化应用程序,并且还具有基于gpu是否能够在两种完全不同的表面格式(桌面合成器表面与应用程序表面)之间无缝反转的限制。

在另一常规技术中,用户可以选择直接以全屏独占模式运行以获得低时延体验。但缺点包括焦点在应用程序之间切换时的长任务切换时间,尤其是在用户可以在使用在不同监视器上运行的应用程序之间切换的多显示器配置中。另一缺点是某些应用程序根本不具有以全屏独占模式运行的选项。此外,桌面合成器无法在屏幕上叠加有用的内容,例如音量或亮度控件。

本发明旨在克服或减少一个或多个前述缺点的影响。



技术实现要素:

根据本发明的一个方面,提供了一种系统,所述系统包括计算装置,所述计算装置可操作以渲染视频内容以供在显示装置上显示,并且周期性地刷新该显示装置。所述视频内容包括至少一个应用程序窗口。桌面合成器可操作以唤醒并执行命令来合成作为包括所述至少一个应用程序窗口的合成表面的视频帧,并且引发缓冲区反转以将所述视频帧递送到所述显示装置。高分辨率计时器可操作以使所述桌面合成器在显示刷新之间的多个实例中唤醒并执行所述命令。

根据本发明的另一方面,提供了一种方法,所述方法包括渲染视频内容以供在显示装置上显示,并且周期性地刷新该显示装置。所述视频内容包括至少一个应用程序窗口。操作桌面合成器以唤醒并执行命令以合成作为包括所述至少一个应用程序窗口的合成表面的视频帧,并且引发缓冲区反转以将所述视频帧递送到所述显示装置。操作高分辨率计时器以使所述桌面合成器在显示刷新之间的多个实例中唤醒并执行所述命令。

根据本发明的另一方面,在包括第一计算系统的系统中,所述第一计算系统具有显示装置,并且可操作以渲染视频内容以供在所述显示装置上显示,并且周期性地刷新该显示装置,所述视频内容包括至少一个应用程序窗口,一种方法包括渲染所述视频内容以供在显示装置上显示并且周期性地刷新该显示装置。操作桌面合成器以唤醒并执行命令以合成作为包括所述至少一个应用程序窗口的合成表面的视频帧,并且引发缓冲区反转以将所述视频帧递送到所述显示装置。操作高分辨率计时器以使所述桌面合成器在显示刷新之间的多个实例中唤醒并执行所述命令。

根据本发明的另一方面,一种非暂时性计算机可读介质具有用于执行方法的计算机可读指令。所述方法包括渲染视频内容以供在显示装置上显示,并且周期性地刷新该显示装置。所述视频内容包括至少一个应用程序窗口。操作桌面合成器以唤醒并执行命令以合成作为包括所述至少一个应用程序窗口的合成表面的视频帧,并且引发缓冲区反转以将所述视频帧递送到所述显示装置。操作高分辨率计时器以使所述桌面合成器在显示刷新之间的多个实例中唤醒并执行所述命令。

附图说明

通过阅读以下详细描述并且参考附图,本发明的前述和其它优点将变得显而易见,其中:

图1是包括计算机和显示器或监视器的计算系统的示例性实施方案的示图;

图2是示例性计算系统的框图;

图3是类似于图1的示图,但在显示器上描绘单个窗口化模式应用程序;

图4是描绘示例性常规视频渲染和缓冲区反转方法的活动图;

图5是类似于图4的活动图,但描绘了简化的示例性常规视频渲染和缓冲区反转方法;

图6是类似于图5的活动图,但描绘了新视频渲染和缓冲区反转方法的示例性实施方案;

图7是类似于图5的活动图,但描绘了另一简化的示例性常规视频渲染和缓冲区反转方法;

图8是类似于图7的活动图,但描绘了新视频渲染和缓冲区反转方法的另一示例性实施方案;

图9是类似于图7的活动图,但描述了简化的示例性常规视频渲染和缓冲区反转方法的额外方面;

图10是类似于图8的活动图,但描绘了新视频渲染和缓冲区反转方法的示例性实施方案的额外方面;

图11是描绘以减少的反转时延渲染视频内容的示例性方法的流程图;以及

图12是描绘启用或不启用动态计时器频率的示例性渲染的流程图。

具体实施方式

公开了可操作以利用窗口化模式的应用程序渲染视频的计算系统的各种实施方案。一种变型可操作以渲染视频内容以供在显示装置上显示并且周期性地刷新该显示装置。所述视频内容包括至少一个应用程序窗口。可以是操作系统进程的桌面合成器可操作以唤醒并执行命令来合成作为包括所述至少一个应用程序窗口的合成表面的视频帧,并且引发缓冲区反转以将所述视频帧递送到所述显示装置。高分辨率计时器可操作以使所述桌面合成器在显示刷新之间的多个实例中唤醒并执行所述命令。在常规系统中,桌面合成器仅在每个刷新循环之后唤醒并且执行一次,这引入了缓冲区反转的延迟。现在将描述额外细节。

在下文描述的附图中,通常重复附图标记,其中相同的元件出现在多于一个图中。现在转到附图,并且特别是图1,其中描绘了计算系统10的示例性实施方案的示图,所述计算系统包括计算机15和连接到计算机15的显示器或监视器20。在替代实施方案中,计算机15和显示器20可以集成到单个壳体中。显示器20可以是各种技术中的任何一种,例如lcd、oled、等离子或其它技术。有利地,显示器20能够动态刷新,如下文更详细描述的。计算机系统10可以包括各种输入装置,例如鼠标和键盘,其为了简化说明而未示出。

计算机15可以使用一个或多个操作系统,例如linux、io或其它。实际上,本文描述的技术在许多方面可以是平台不可知的。在此说明性实施方案中,操作系统软件在显示器20上显示表面22或内容,其包括桌面25、打开的两个示例性窗口化应用程序30和35以及包括一定数目的图标45的某一任务栏40。当然,应用程序30和35的数目可以多于两个,并且实际上可以在一个与某一未指定数目之间。如下文更详细描述的,桌面25与打开的窗口化应用程序30和35的组合构成动态刷新的合成表面22。

现在还可以通过参考作为框图的图2来理解计算系统10的其它细节。计算装置10可以包括前述显示器20、处理器50或多个处理器、存储装置55、介质60和存储器65。处理器50可以是专用于视频处理的集成电路、微处理器、图形处理单元(gpu)、组合微处理器和图形处理器功能的加速处理单元(apu)、专用集成电路或其它装置。示例性apu可以包括用于压缩、解压缩、预先施加或后施加的处理任务或其它的固定功能核心。实际上,处理器50可以由并行或以其它方式操作的这种集成电路的多个示例组成。存储装置55是计算机可读介质,并且可以是任何类型的硬盘、光存储盘、固态存储装置、rom、ram或实际上用于存储计算机可读介质的任何其它系统。介质60可以包括由卫星调谐器、有线机顶盒、光盘播放器、因特网流、可移动存储装置或硬盘驱动器提供的介质。这些仅表示可用于将视频内容递送到处理器50并且因此递送到图1中所描绘的显示器20的介质类型的几个示例。存储器65可以是一个或多个分立的存储器装置,例如dram、sram、vram或闪存芯片、板或模块或板载高速缓存或这些的组合。存储器65尤其可以被细分为多个缓冲区:缓冲区1、缓冲区2......缓冲区m。缓冲区1、缓冲区2……缓冲区m是可寻址存储器位置,其可以用于用来显示视频帧的双重、三重或其它缓冲,如下文更详细描述的。

此外,计算装置10包括操作系统80、视频驱动器软件85、桌面合成器90、高分辨率计时器92,并且可以包括多个应用程序,其缩写为app1、app2…...appn,并且可能是驱动程序、软件应用程序或其它类型的应用程序。举例来说,app1在打开时可以对应于窗口化应用程序30,并且app2在打开时可以对应于图1所示的窗口化应用程序35。操作系统80、视频驱动器软件85、高分辨率计时器90、桌面合成器90和应用程序app1……appn可以存储在存储装置55上。如上所述,操作系统软件80可以是各种不同操作系统中的任何一种。视频驱动器软件85可以类似地适用于各种不同类型的操作系统平台。

桌面合成器90(也称为dwm进程)可以是如图所示的操作系统80的一部分,并且用作系统进程。缓冲区1、缓冲区2……缓冲区m中的一者或多者(在双缓冲的情况下为两个)可以由应用程序app1、app2…...appn中的每一者分配以存储经过渲染的应用程序内容。另外,缓冲区1、缓冲区2…...缓冲区m中的一者或多者(以及在双缓冲的情况下,两个)可以由桌面合成器90分配以存储合成的渲染内容。

如下文更详细描述的,高分辨率计时器92被设计为修改桌面合成器90创建例如桌面表面22的方式,所述桌面表面为由图1中所描绘的桌面25和打开的应用程序30和35组成的合成,技术目标是减少创建桌面合成所需的各种操作与在显示器20上实际显示桌面合成表面22之间的时延。高分辨率计时器92可以在视频驱动器软件85、操作系统软件80中实施或甚至实施为固件(可能在存储装置55或其它位置)。如果以固件实施,则高分辨率计时器92应有利地通过视频驱动器软件85而工作,以便实施所需的功能。

现在通过参考图2、3和4可以理解用于使用桌面合成器90渲染视频的示例性常规技术。图3是最初仅显示桌面25和窗口化应用程序35的计算系统10的示意图,即桌面表面22由桌面25和窗口化应用程序35组成。图4是类似于时序图的活动图,其描绘了与显示图3中描绘的桌面表面22相关联的各种硬件和软件活动。从上到下,图4描绘了硬件队列流100、桌面合成器(dwm)进程流105、应用程序生成的内容流110、待决反转流115和屏幕显示流120。硬件队列流100表示内容的硬件渲染。经过渲染的内容可以是:应用程序生成的内容,例如图3中的窗口化应用程序35的内容的渲染;以及合成内容的渲染,例如图3中的合成表面22的渲染。渲染是由实际写入视频帧的任何硬件执行的。这可以是图2中描绘的处理器50,或分立gpu(如果gpu在计算系统10中实施,则两者一致)或某一其它装置。dwm进程流105描绘了图2所示的操作系统软件80内的dwm进程(即,桌面合成器90)的周期性唤醒,以执行下文更详细描述的各种功能。应用程序生成的内容流110描绘了由特定应用程序生成的新内容,例如内容(a)。举例来说,这可以是待显示在显示器20上的图3中所示的窗口化应用程序35的一些经过更新的视频信息。待决反转流115描绘了桌面合成器90何时在两个dwm分配的缓冲区之间引发缓冲区反转,例如从缓冲区1到缓冲区2(并且最终用于递送到显示器20)并且指示在缓冲区1与缓冲区2之间的反转中存在延迟的位置,例如所描绘的延迟125和130。下文将更详细地解释这些延迟125和130。最后,屏幕流120描绘了当前在显示器20上实际显示的内容。举例来说,缓冲区1的内容最初显示在显示器20上,并且缓冲区1可能正存储已经渲染并且从处理器50或板上的任何处理器递送的桌面表面22。

仍然参考图4,应注意,描绘周期性刷新线,刷新1、刷新2、刷新3、刷新4、刷新5和刷新6。这些表示显示器20的个别刷新。在常规系统中并且如图4所示,刷新1和刷新2等发生在由称为vsync的常规垂直同步代码设置的指定固计时间点处。在启用vsync时,帧渲染速率有效地限制在监视器刷新率。如dwm进程流105中所示,dwm进程唤醒/执行的实例在每次刷新之后立即发生,即刷新1、刷新2等。举例来说,在刷新1之后,发生dwm进程唤醒/执行实例135。此时,应用程序正在生成内容(a),其再次可以简单地是图3中所描绘的应用程序35的更新帧。如屏幕流120所示,正在显示缓冲区1的内容,其为如图3所示的桌面表面22。出于下文将要描述的原因,如在刷新1之后的待决反转流115中所示,没有待决缓冲区反转。dwm进程唤醒/执行实例135查找可用的渲染内容,并且如果渲染内容可用,则向视频驱动器85通知可用内容的地址位置(其可以是缓冲区m)。接着,dwm进程唤醒/执行实例135关闭。接着,视频驱动器85将新缓冲地址(例如,缓冲区m)编程到处理器50(或gpu,如果是板载),并且处理器引发下次刷新。如果未感测到渲染内容,则dwm进程唤醒/执行实例135关闭并且等待下次刷新。在刷新2之后但在刷新3之前,发生下一dwm进程唤醒/执行实例140,并且在此期间,应用程序生成的内容(a)完成,并且更新的内容(a)完成渲染,如硬件队列流100中所示。此渲染内容(a)将存储在应用程序分配的缓冲区中,例如缓冲区m。然而,因为dwm进程唤醒/执行实例140已经打开并且在完成内容(a)的渲染之前关闭,所以首先引入延迟。存在三个潜在的延迟源:合成延迟、硬件延迟和待决反转延迟。这些来源是加成性的,并且将在下文进一步描述。能够在此时使用例如图2中所示的桌面合成器90来引发dwm合成,使得可以发生从dwm缓冲区1到缓冲区2的反转将是有利的。然而,由于dwm进程实例140已经发生并且下一进程实例直到刷新3才发生,因此合成过程不会发生。因此,屏幕内容仍然是缓冲区1。在刷新3之后,下一dwm进程唤醒/执行实例145发生。此时,已渲染(a)内容已加载到应用程序分配的缓冲区缓冲区m中,并且如硬件队列流100所指示,渲染硬件已开始渲染应用程序生成的内容(b),这也可能是全新的内容或只是经过更新的帧。但应注意,可能在硬件队列流100中的渲染a点结束时发生的dwm合成过程已经被延迟至少直到dwm进程唤醒/执行实例145发生时的刷新3。如果在刷新3之后没有紧跟硬件延迟,则硬件队列100中示出的dwm合成过程150可以立即发生。然而,图4描绘了典型的示例性硬件延迟,其可能由与渲染内容(b)或各种其它因素相关联的复杂性引起。因此,在此说明性示例中,dwm合成过程150直到刷新4之前不久才完成。dwm进程唤醒/执行实例145将感测应用程序内容(a)的可用性,并且如箭头152所示,提示渲染硬件执行dwm合成过程150,如硬件队列100中所反映。dwm合成过程150涉及获取桌面25和窗口化应用程序35的内容(其当前存储在缓冲区m中,应用程序分配的缓冲区)、从那两者合成桌面表面22(所述桌面表面是两者的复合),并且接着将所述合成桌面表面22存储在缓冲区2(另一dwm分配的缓冲区)中。在dwm合成过程150结束时,图3中所示的桌面表面22的内容被写入缓冲区2。然而,在下次刷新,即刷新4之前,从缓冲区1到缓冲区2的反转不会发生。因此,引入了反转延迟125。在刷新4之前,屏幕内容仍然是缓冲区1,但应注意,应用程序已生成应用程序生成的内容(c),并且硬件队列100现在表示应用程序生成的内容(c)的渲染。在刷新4,发生到缓冲区2的反转,并且因此屏幕显示流120反映出缓冲区的内容现在在显示器20上。回顾刷新2与刷新4之间的时间线,显然存在时延的三个可能分量:硬件队列100中的内容(a)的渲染与下次刷新(刷新3)之间的合成延迟,加上刷新3与dwm合成过程150的结束之间的典型硬件延迟,最后是在dwm合成过程150的结束与下次刷新(刷新4)之间的反转延迟125。

仍然参考图4,在刷新4与刷新5之间,应用程序生成的内容继续是内容(c),并且(c)的渲染继续,如硬件队列100中所示。在刷新5之后,dwm进程唤醒/执行实例155将感测应用程序内容(b)的可用性(即,渲染(b)完成),并且再次如箭头152所表示,提示渲染硬件执行下一dwm合成过程160,如硬件队列100中所反映。在下一dwm合成过程160结束时,合成的内容帧被写入缓冲区1。然而,由于vsync施加的刷新点,直到下次刷新(其为刷新6),从缓冲区2到缓冲区1的内容的反转不会发生,因此引入上述反转延迟130。

所公开的实施方案部分地涉及消除刚刚在图4中描述和描绘的一些延迟源。在描述根据所公开的实施方案的示例性新技术之前,首先使用图3再次描述简化的处理流程可能是有用的,但现在也使用图5,图5是类似于图4的活动图,但简化为仅包括内容(a)的渲染和仅四个刷新循环。按照常规方法的描述,将参考图6以及用于渲染相同内容并且通过利用图2中所描绘并且在上文简要描述的高分辨率计时器92的示例性新过程。

类似于图4,图5描绘了硬件队列流100、dwm进程流105、应用程序生成的内容流110、待决反转流115和屏幕显示流120。假设出于此图示的目的,帧渲染速率快于显示刷新率。再次假设出于此说明的目的,屏幕显示流120首先反映缓冲区1的内容,其简单地说是在图3中的显示器20上的当前桌面表面22任何内容。进一步假设在刷新1处,应用程序生成的内容(a)再次通过图2中描绘的操作系统80开始生成,并且发生dwm进程唤醒/执行实例170。同样在刷新1,并且如硬件队列流100中所示,渲染硬件开始渲染内容(a)。如硬件队列流100中所示,内容(a)的渲染(渲染(a))在刷新1与刷新2之间完成。然而,由于刷新2发生在固定点,因此dwm合成过程150必须等待直到刷新2,这引入了合成延迟。接着在刷新2处,发生下一dwm进程唤醒/执行实例175。dwm进程唤醒/执行实例175感测可用的渲染内容(a),并且提示dwm合成过程150,如箭头177中所反映。dwm合成过程150可以继续,并且导致经过渲染的合成桌面22存储在缓冲区2中。在dwm合成过程150结束时,不能发生从缓冲区1到缓冲区2的反转,而必须等待直到刷新3,因此引入反转延迟180。最后,在刷新3处,下一dwm进程实例185发生,并且从缓冲区1到缓冲区2的反转发生,如屏幕显示流120所示。因此,需要两个完整帧,即从刷新1到刷新2以及从刷新2到刷新3,以便从(a)的渲染开始进行到(a)的显示(作为合成桌面表面22)。当然,延迟是合成延迟与反转延迟180的组合。

现在通过参考图2、3和6,可以理解示例性新技术。类似于图5,图6描绘了硬件队列流100、dwm进程流105、应用程序生成的内容流110、待决反转流115和屏幕显示流120。类似于图5中所描绘的假设,仅描绘了四个刷新循环:刷新1、刷新2、刷新3和刷新4,并且假设最初缓冲区1的内容被描绘在图3中所示的显示器20上。再次对于此比较,帧渲染速率快于显示刷新速率。在刷新1之后,应用程序生成的内容(a)被递送到渲染硬件,如硬件队列流100中所示,内容(a)的渲染(渲染(a))开始。代替如在图5中描绘的常规技术中那样每次刷新使用dwm进程唤醒/执行的单个实例,dwm进程流105反映存在多个dwm进程唤醒/执行实例,其中两者标记为190和195。多个dwm进程唤醒/执行实例190和195由图2中描绘的高分辨率计时器92控制。利用高分辨率计时器92,dwm合成过程与通常施加在显示器20上的vsync计时分离。如下所述,可以响应于感测到各种类型的时延敏感内容而自动地启用或通过用户输入手动地启用高分辨率计时器92。此外,每次刷新的dwm进程唤醒/执行实例190和195的数目可以是用户选择的、操作系统选择的或其它。实际上,高分辨率计时器频率,即高分辨率计时器92在刷新之间引起dwm进程唤醒/执行实例的频率,可以是动态的并且基于内容而改变,以便管理与运行高分辨率计时器92相关联的计算开销。高分辨率计时器92可以在操作系统软件80、视频驱动器软件85或某一其它位置实施。高分辨率计时器92通过周期性地提示视频驱动器软件85检查当前显示(即当前正在显示哪一缓冲区,例如缓冲区1或缓冲区2),来周期性地引起dwm进程实例190和195中的每一者。接着,视频驱动器软件85执行所请求的检查,并且向操作系统80报告检查结果,即当前正在显示哪个缓冲区,缓冲区1或缓冲区2。此报告提示操作系统80引发下一dwm唤醒/执行实例。对于每个dwm进程唤醒/执行实例,例如实例190和195,dwm进程轮询任何应用程序分配的缓冲区的内容,比如缓冲区m,并且确定渲染硬件是否应以dwm合成过程开始。举例来说,如果在(a)的渲染(渲染(a))未完成时发生dwm进程唤醒/执行实例190,那么此时的dwm合成是不合适的。然而,在dwm进程唤醒/执行实例195时,(a)的渲染(渲染(a))完成,并且渲染内容(a)存储在缓冲区m(应用程序分配的缓冲区)中。此时,dwm进程唤醒/执行实例195提示渲染硬件开始dwm合成过程200,如箭头203所示并且反映在硬件队列流100中。应注意,这发生在刷新2之前,其早于本文公开的常规技术。在dwm合成过程200期间,桌面合成器合成合成表面22,其包括应用分配的缓冲区(缓冲区m)的内容和桌面表面22的任何其它部分,并且将合成表面22存储在缓冲区2中。此时,从缓冲区1到缓冲区2的反转待决,如在待决反转流115中所示,但直到刷新2才发生,从而导致反转延迟205。然而,由于在刷新1与刷新2之间存在多个dwm进程唤醒/执行实例190、195等,因此可能比在图5中所示的常规技术中更早地执行dwm合成步骤200,从而导致相对短的反转延迟205并且最终反转到缓冲区2,其可以在刷新2处发生。因此,从渲染(a)开始到dwm合成200到反转到缓冲区2以及在屏幕上显示缓冲区2的内容的过程可以在单个帧中发生,而不是图5中所示的常规技术的两个帧。应注意,freesync可以与所公开的实施方案一起使用。

现在通过参考图2、3、7和8,可以理解在常规技术和用于渲染帧的新替代示例性技术之间的类似比较,但其背景为每秒帧渲染率低于监视器的刷新速率。图7是类似于图5的活动图,图8是类似于图6的活动图。此处,图7再次描绘了硬件队列流100、dwm进程流105、应用程序生成的内容流110、待决反转流115、屏幕显示流120和四个刷新循环:刷新1、刷新2、刷新3和刷新4。同样,假设最初显示器20上的桌面表面22是图2中所示的缓冲区1的内容。就在刷新1之后,应用程序生成的内容流110和硬件队列流100反映内容(a)被递送到渲染硬件并且(a)的渲染(渲染(a))开始。发生dwm进程唤醒/执行实例205。在刷新2处,发生下一dwm进程唤醒/执行实例210,但因为渲染帧速率比刷新速率(即从刷新1到刷新2的周期)慢,内容(a)的渲染(渲染(a))并未完成,如在硬件队列流100中所反映。虽然渲染(a)在刷新2之后和刷新3之前完成,但完成发生在dwm进程唤醒/执行实例210结束之后。因此,渲染内容(渲染(a))到dwm合成或其它的持续移动延迟至少直到刷新3。在刷新3处,发生下一dwm进程唤醒/执行实例215,感测来自渲染(a)过程的渲染内容,并且如箭头223所示,提示渲染硬件开始dwm合成过程220。在dwm合成过程220期间,由渲染内容(a)和桌面表面的任何剩余部分组成的合成桌面22写入到缓冲器2。在完成dwm合成步骤220之后,反转到缓冲区2以实际上将合成桌面表面22递送到显示器20必须等待直到刷新4,这引入了显著的反转延迟225。最后,在刷新4处,可以发生到缓冲区2的反转以将经过更新的桌面表面22(包括经过更新的内容(a))递送到监视器20,如屏幕流120所示。应注意,与在硬件队列100中完成渲染(a)之后相关联的总延迟超过一帧,并且可能大到两帧。此外,在渲染(a)的开始与作为桌面表面22的一部分的(a)的实际显示之间出现了三个全帧,即刷新1到刷新4。

相比之下,并且如图8中所示,利用高分辨率计时器92(参见图2)生成多个dwm进程唤醒/执行实例的新示例性技术在图8中示出。再次,图8描绘了硬件队列流100、dwm进程流105、应用程序生成的内容流110、待决反转流115和屏幕显示流120。但应注意,对于图3中描绘的监视器20的动态刷新率的利用意味着刷新1、刷新2、刷新3和刷新4不会以固定间隔发生,而是以由dwm合成过程时的动态刷新率确定的间隔发生。再次,最初显示缓冲区1的内容。在刷新1之后,应用程序生成的内容(a)由图2中描绘的操作系统80调用,并且因此,硬件队列100示出渲染(a)也开始。图2中描绘的高分辨率计时器92产生多个dwm进程唤醒/执行实例,其中两者分别标记为230和235。应注意,在常规上下文中,刷新2将发生在由垂直虚线示出的常规vsync刷新点将出现之处。然而,由于实施了动态刷新,因此刷新2可能稍后发生,并且因此在刷新1与刷新2之间的刷新率低于原本由vsync提供的刷新率。因此,在一定数目的dwm进程唤醒/执行实例(并且在此情况下为dwm进程唤醒/执行实例235)之后,(a)的渲染(渲染(a))完成,并且这由dwm进程唤醒/执行实例235来感测。dwm进程唤醒/执行实例235用信号通知渲染硬件开始dwm合成过程240,如箭头243所示并且反映在硬件队列流100中。在dwm合成过程240期间,渲染硬件渲染合成表面,其包括渲染内容(a)和桌面表面22的任何其它部分(参见图3),并且将合成桌面表面22写入缓冲区2。在dwm合成过程240结束时,可以引入用户可配置并且可能非常短的反转延迟245,紧接着是刷新2和从缓冲区1到缓冲区2的反转。反转延迟245的长度可以由高分辨率计时器92设置,并且可以采用各种值。在示例性实施方案中,示例包括0.5到20毫秒。因此,代替需要三个完整帧来递送合成表面22(包括内容(a)),新技术利用动态刷新和更频繁的dwm进程唤醒/执行实例步骤230和235等,内容(a)可以在单个动态刷新的帧中递送。应注意,高分辨率计时器92的频率可以是静态的或动态的。举例来说,为了降低与运行多个dwm进程唤醒/执行实例相关联的计算开销,可以基于内容动态地调节高分辨率计时器频率。举例来说,游戏应用程序可能会生成高帧率。在渲染这种高帧率内容期间,高分辨率计时器92的频率可以动态地设置为某个频率ω1。然而,可能存在游戏应用程序具有较低帧速率的周期。一个示例可能是应用程序启动后的最初几秒钟,其中显示介绍画面。在低帧速率计算强度的这些周期期间,高分辨率计时器92可以改变到另一频率ω2,其中ω2<ω1。这种动态频率切换可以取决于内容而每秒多次发生,并且切换到多个频率。

现在参考图9和10,可以理解与所公开的示例性实施方案相关联的优于本文所述的常规渲染技术的另一优点。在此说明性实施方案中,改进的渲染过程在时间上向前移动向图2中所描绘的桌面合成器90告知已发生反转之时刻,并且因此释放了两个缓冲区中的一者以开始渲染新内容。图9是类似于图5的活动图,并且描绘了常规渲染过程。再次,图9描绘了硬件队列流100、dwm进程流105、应用程序生成的内容流110、待决反转流115和屏幕显示流120以及四个刷新循环:刷新1、刷新2、刷新3和刷新4。在刷新1处,发生第一dwm进程唤醒/执行实例250,并且操作系统将应用程序生成的内容(a)发送到渲染硬件,如硬件队列流100中所反映的,其中将经过更新的内容(a)呈现给应用程序分配的缓冲区m的过程开始。此时,假设显示器20正显示缓冲区1(其再次是桌面合成器90分配的缓冲区中的一者)的内容。在刷新2之前完成到缓冲区m的内容(a)的渲染。在内容(a)到缓冲区m的渲染结束时,应用程序生成的内容(b)被加盐,以渲染到另一应用程序分配的缓冲区(缓冲区n)。然而,这直到稍后才会发生,如下文更详细描述的。接下来,在刷新2处,发生下一dwm进程唤醒/执行实例255。dwm进程唤醒/执行实例255感测缓冲区m中的可用渲染内容(a),并且提示渲染硬件开始dwm合成过程260,如箭头262所示并且反映在硬件队列流100中。dwm合成过程260产生包括渲染内容(a)的合成表面22(参见图3)。在dwm合成过程260结束之后,从缓冲区1到缓冲区2的反转必须等待下次刷新(刷新3),这引入了在反转待决流115中所示的反转延迟265。在刷新3处,到缓冲区2的反转发生,使得缓冲区2的内容,即渲染(a)的产物,被递送到图3所示的显示器20,如图3中所示并且如屏幕显示流120中所反映。在常规技术中,此时,dwm进程实例270报告正在显示的当前缓冲区,并且在这种情况下将报告缓冲区2。仅在此时,操作系统80接收此当前缓冲区显示的报告,并且获知另一缓冲区(缓冲区1)现在可用于渲染下一合成内容,在这种情况下,所述内容将包括内容(b)。

新过程的示例性实施方案在图10中描绘,并且将结合图2和3加以描述。类似于图9,图10描绘了硬件队列流100、dwm进程流105、应用程序生成的内容流110、待决反转流115和屏幕显示流120以及四个刷新循环:刷新1、刷新2、刷新3和刷新4。在刷新1处,显示缓冲区1的内容,并且将应用程序生成的内容(a)发送到渲染硬件,以开始渲染(a)到应用程序分配的缓冲区m过程,如通过硬件队列流100所反映。借助于图2中所描绘的高分辨率计时器92,在刷新1之后和刷新2之前发生多个周期性dwm进程唤醒/执行实例275、280等。如上所述,高分辨率计时器92周期性地提示视频驱动器软件85检查当前显示,即当前正在显示哪一dwm分配的缓冲区,例如缓冲区1或缓冲区2。接着,视频驱动器软件85执行所请求的检查,并且向操作系统80报告检查结果,即当前正在显示哪个缓冲区,缓冲区1或缓冲区2。此报告提示操作系统80引发下一dwm唤醒/执行实例。渲染(a)到缓冲区m过程的结束由下一可用的dwm进程唤醒/执行实例感测,在这种情况下是实例280。dwm进程唤醒/执行实例280用信号通知渲染硬件开始dwm合成过程285,如箭头287所示。在dwm合成过程期间,缓冲区m的内容与桌面表面22的任何剩余部分(参见图3)合成并且写入缓冲区2。此外,在那时,视频驱动器软件85,如高分辨率计时器92所提示,向操作系统软件80报告当前显示的缓冲区仍然是缓冲区1。因此,在每个dwm进程唤醒/执行实例275、280等的开始处,报告(通过当前dwm进程唤醒/执行实例)发送到图2所描绘的操作系统软件80的桌面合成器90,从而报告当前显示的缓冲区是缓冲区1并且包括dwm合成步骤285之后当前显示的缓冲区的报告。在刷新2之前,在每个dwm唤醒/执行实例275、280等处重复此相同报告。在刷新2处,从缓冲区1到缓冲区2的反转进行并且被递送到监视器20。在于刷新2之后即刻发生的下一dwm进程唤醒/执行实例290处,报告当前显示的缓冲区是缓冲区2,因此指示缓冲区1可用于新合成。应注意,此说明性技术中的下一可用缓冲区的此报告比图9中所描绘的当前显示的缓冲区的报告(在刷新3处发生)更早地发生。这有助于减小由于硬件延迟引起的时延。

现在通过参考图2、3、8和11,可以理解用于计算装置10的操作的示例性处理流程。图11是示例性处理流程的流程图。在于步骤300处开始之后,计算装置10在步骤305处检测是否启用了全屏独占模式。如果检测到全屏独占模式,则处理进行到步骤310,并且在停用高分辨率计时器的情况下以全屏独占模式进行渲染。所述过程返回到步骤305。然而,如果在步骤305并未检测到全屏独占模式,则过程进入步骤320,并且检测时延敏感内容。这可以通过多种方式完成。在示例性实施方案中,图2中描绘的处理器50结合视频驱动器软件85检测以全屏模式或窗口化模式启动应用程序35,例如游戏或其它。这可能需要运行时间检测,其中检测窗口大小以及前景和背景的特性,并且比较桌面大小以确定窗口是否是全屏的。此检测步骤有利于仅在时延敏感应用程序正在运行的情况下才启用高分辨率计时器92,从而避免与高分辨率计时器92和更频繁的桌面dwm进程唤醒和启用步骤相关联的任何额外开销。如果在步骤323处未检测到时延敏感内容,则处理进行到步骤325,并且在停用高分辨率计时器92的情况下渲染窗口化模式。此窗口化模式可以包括应用程序全屏渲染的模式。接下来在步骤330处,所述过程返回到步骤305。然而,如果在步骤323处检测到时延敏感内容,则所述过程移到步骤340,其中在启用高分辨率计时器92的情况下渲染内容。因此,对于如图8中所描绘的示例,这可能需要高分辨率计时器92引起多个dwm进程唤醒/执行实例230、235等。接下来在步骤345处,执行dwm合成过程。这对应于例如图8中描绘的dwm合成过程240。接下来在步骤350处,执行动态刷新和缓冲区反转。这对应于例如动态刷新(刷新2)和从缓冲区1到缓冲区2的缓冲区反转。接下来在步骤355处,图2所示的高分辨率计时器92向图2所示的桌面合成器90报告两个缓冲区中的一者现在可用。这对应于例如图10中在刷新2处描绘的报告当前显示的缓冲区报告。此时,所述过程可以进行到步骤330,并且最终回到步骤305。当然,此循环可以每秒多次发生。

现在也通过参考图12,可以理解图11中的步骤340的一些额外示例性细节。如上文在图8的论述中所述,高分辨率计时器92的频率可以是静态的或动态的。因此,在步骤340内,如果在步骤360处,未启用高分辨率计时器动态频率,则在步骤365处,由高分辨率计时器92以静态频率渲染内容,接着循环回到步骤360。高分辨率计时器频率可以由用户输入设置,或者如果感测到时延敏感内容则自动设置。然而,如果在步骤360处,启用了高分辨率计时器动态频率,则在步骤370处,基于内容由高分辨率计时器92以动态频率渲染内容,接着循环回到步骤360。如果需要,可以根据内容的计算密集方面每秒多次调高或调低。

尽管本发明可以容许各种修改和替代形式,但在附图中通过示例的方式示出了特定实施方案,并且已经在本文中对其进行了详细描述。然而,应理解,本发明不希望限于所公开的特定形式。相反,本发明将涵盖落入如由所附权利要求限定的本发明的精神和范围内的所有修改、等效物和替代物。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1