本发明涉及图形处理。
背景技术:
通过显示装置显示的视频有时可能呈现视觉假影,例如停顿。停顿是当视频的帧延迟由显示装置显示时出现的视觉假影。当视频的帧延迟由显示装置显示时,紧接在经延迟帧之前的视频的帧由显示装置显示长于其计划持续时间,因此使得视频出现停顿。
技术实现要素:
一般来说,本发明的方面涉及通过将视觉假影减到最少来改进由计算装置渲染且由显示装置显示的图形帧的平滑度。计算装置可以执行软件应用程序,所述软件应用程序可以使计算装置以指定帧率输出视频。由于视频的帧率与显示装置的刷新率之间的不匹配,可能在显示装置显示视频时出现停顿。计算装置可以通过使显示输出视频的显示装置的刷新率同步到视频的帧率来将此类停顿减到最少。当视频的帧率改变时,计算装置可以使显示装置的刷新率重新同步到更新的帧率的刷新率。计算装置可以通过检测潜在离群值(即,即使在刷新率相匹配的情况下仍可能出现停顿的情形)并且在那些潜在离群值出现之前缓和它们来进一步将停顿减到最少。
一方面,本发明涉及一种用于图形处理的方法。所述方法可以包含通过至少一个处理器以某一帧率输出视频以供在显示装置处显示。所述方法可以进一步包含通过至少一个处理器使显示视频的显示装置的刷新率同步到视频的帧率。所述方法可以进一步包含响应于检测到显示视频的帧时的潜在延迟,通过至少一个处理器对帧的合成或显示装置的刷新中的至少一者进行时移,以缓和显示视频的帧时的潜在延迟。
另一方面,本发明涉及一种用于图形处理的装置。所述装置可以包含被配置成存储视频的存储器。所述装置可以进一步包含至少一个处理器,其被配置成:以某一帧率输出视频以供在显示装置处显示;使显示视频的显示装置的刷新率同步到视频的帧率;以及响应于检测到显示视频的帧时的潜在延迟,对帧的合成或显示装置的刷新中的至少一者进行时移,以缓和显示视频的帧时的潜在延迟。
另一方面,本发明涉及一种用于图形处理的装置。所述装置可以包含用于以某一帧率输出视频以供在显示装置处显示的装置。所述装置可以进一步包含用于使显示视频的显示装置的刷新率同步到视频的帧率的装置。所述装置可以进一步包含响应于检测到显示视频的帧时的潜在延迟,用于对帧的合成或显示装置的刷新中的至少一者进行时移以缓和显示视频的帧时的潜在延迟的装置。
另一方面,本发明涉及一种包括指令的非暂时性计算机可读存储媒体,所述指令用于使可编程处理器:以某一帧率输出视频以供在显示装置处显示;使显示视频的显示装置的刷新率同步到视频的帧率;以及响应于检测到显示视频的帧时的潜在延迟,对帧的合成或显示装置的刷新中的至少一者进行时移,以缓和显示视频的帧时的潜在延迟。
在附图和以下描述中阐述本发明的一或多个方面的细节。本发明的其它特征、目标和优势将从所述描述和图式以及从权利要求书中显而易见。
附图说明
图1是示出可被配置成实施本发明的一或多个方面的实例计算装置的框图。
图2a和2b是示出根据本发明的方面用于使实例显示装置的刷新率与由实例软件应用程序输出的一系列帧的帧率同步的实例技术的概念图。
图3a和3b是示出根据本发明的方面用于缓和迟延帧的实例技术的概念图。
图4a-4c是示出根据本发明的方面针对合成的自适应时移补偿的概念图。
图5a-5c是示出根据本发明的方面针对显示的自适应时移补偿的概念图。
图6是示出根据本发明的方面的图2a-2b、图3a-3b、图4a-4c以及图5a-5c中所示实例技术的实例组合的概念图。
图7是示出根据本发明的方面用于从误预测针对合成的自适应时移补偿复原的实例技术的概念图。
图8是示出根据本发明的方面用于从误预测针对显示的自适应时移补偿复原的实例技术的概念图。
图9是示出根据本发明的方面实例显示装置的刷新率的实例改变的概念图。
图10是示出根据本发明的方面缓冲器队列积累的概念图。
图11是示出根据本发明的方面用于将视觉假影减到最少的实例技术的流程图。
图12是更详细地示出计算装置2的实例操作的流程图。
具体实施方式
一般来说,本发明的方面涉及改进计算系统显示一组图形帧(例如,图形动画、视频、视频游戏等)时的性能。本文所揭示的技术可以包含使显示装置的刷新率同步到由计算装置上执行的软件应用程序输出的视频(例如,由图形处理单元(gpu)输出的视频)的帧率。本文所揭示的技术可以进一步包含检测潜在离群值(即,即使在刷新率同步的情况下仍可能出现停顿的情形)以及缓和那些潜在离群值,由此提供改进计算机装置在渲染和显示图形帧时的性能的低功率解决方案。
如本发明通篇所使用,垂直同步(vsync)可以指与双重缓冲或三重缓冲期间出现的缓冲器调换同步的显示装置的垂直刷新率,其中可以将视频帧绘制到后台缓冲器,在完成绘制视频帧到后台缓冲器之后接着将视频帧调换到前台缓冲器。通过使显示器的垂直刷新率同步到缓冲器调换,缓冲器调换可以只在显示装置已结束其当前刷新周期之后出现,由此防止因缓冲器调换而导致屏幕撕裂,缓冲器调换将下一个视频帧的内容调换到输出缓冲器,同时显示装置读取输出缓冲器以显示当前视频帧。因此,vsync在本发明通篇可以指显示装置的刷新。
在一个实例中,为了防止因软件应用程序输出的视频的帧率与显示装置的刷新率之间的不匹配而导致的可能停顿,计算装置可以执行锁相回路(pll),其将显示装置的刷新率锁定到由于软件应用程序调用的图形渲染操作由gpu或显示处理器输出的视频的帧率。如果视频的帧率改变,那么计算装置可以使用pll将显示装置的刷新率重新锁定到视频的改变的帧率。
在软件应用程序是包含游戏引擎的视频游戏,游戏引擎执行工作以输出待由显示装置显示的视频游戏的帧的实例中,pll可以将显示装置的刷新率锁相到游戏引擎帧合成周期开始时(例如,相较于缓冲器调换时间),因为游戏引擎周期的开始相比缓冲器调换时间其变化可更少。缓冲器调换时间是在图形帧提交结束时游戏引擎调用高层级缓冲器调换api(例如,eglswapbuffer)时的时间。在一些实例中,计算装置可以通过检测由游戏引擎针对每一帧发布的第一图形api命令来确定游戏引擎周期的开始。
然而,软件应用程序不可能始终以恒定帧率输出帧。例如,对于一些帧,cpu延迟、场景复杂度增加和/或其它因素可能导致帧合成比正常时间长,因此可能导致软件应用程序的帧率发生变化。根据本发明的技术,计算装置还可以预测缓冲器调换时间和/或gpu完成时间以便检测由软件应用程序输出的帧序列的帧率可能不匹配显示装置的刷新率的情况。计算装置可以至少部分地基于软件应用程序的绘制进展预测缓冲器调换时间,以预测图形帧的图形api调用的结束,所述结束可以是当游戏引擎可以调用高层级缓冲器调换api时的时间。计算装置还可以至少部分地基于软件应用程序的绘制复杂度预测图形处理单元(gpu)完成时间。基于所预测缓冲器调换时间和gpu完成时间,计算装置可以延迟(即,时移)帧合成和/或显示装置的刷新并且缓和由软件应用程序输出的帧序列的帧率的变化。
根据本发明的方面,在计算装置上执行的软件应用程序可以在cpu上执行以发布图形渲染操作,使得所述gpu和/或计算装置的显示处理器以某一帧率输出视频以供在包含于计算装置中或以另外的方式可操作地连接到计算装置的显示装置处显示。计算装置可以使显示视频的显示装置的刷新率同步到视频的帧率。响应于检测到在显示装置处显示视频的一或多个帧时的潜在延迟,计算装置可以对一或多个帧的合成或显示装置的刷新中的至少一者进行时移,以缓和显示视频的一或多个帧时的潜在延迟。
图1是示出可被配置成实施本发明的一或多个方面的实例计算装置的框图。如图1所示,计算装置2可以是包含但不限于以下各项的计算装置:视频装置、媒体播放器、机顶盒、无线手持机(例如移动电话和所谓的智能电话)、个人数字助理(pda)、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置等。在一些实例中,计算装置2可以是移动通信装置。在图1的实例中,计算装置2可以包含中央处理单元(cpu)6、系统存储器10和gpu12。计算装置2还可以包含显示处理器14、收发器模块3、用户接口4和显示装置8。收发器模块3和显示处理器14都可以是与cpu6和/或gpu12相同的集成电路(ic)的部分,都可以在包含cpu6和/或gpu12的一或多个ic的外部,或可以在包含cpu6和/或gpu12的ic外部的ic中形成。
为清楚起见,计算装置2可以包含图1中未示出的额外模块或单元。例如,在计算装置2是移动无线电话的实例中,计算装置2可以包含扬声器和麦克风(两者均未在图1中示出)来实现电话通信,或在计算装置2是媒体播放器的实例中,计算装置2可以包含扬声器。计算装置2还可以包含摄像机。此外,计算装置2中所示出的各个模块和单元可以并非在计算装置2的每一实例中都必需。例如,在计算装置2是桌上型计算机或配备成与外部用户接口或显示器介接的其它装置的实例中,用户接口4和显示装置8可以在计算装置2的外部。
用户接口4的实例包含但不限于轨迹球、鼠标、键盘和其它类型的输入装置。用户接口4还可以是触摸屏且可并入作为显示装置8的一部分。收发器模块3可以包含回路以允许计算装置2与另一装置或网络之间的无线或有线通信。收发器模块3可以包含调制器、解调器、放大器及其它用于有线或无线通信的此类回路。
cpu6可以是被配置成处理用于执行的计算机程序的指令的微处理器,例如中央处理单元(cpu)。cpu6可以包括控制计算装置2的操作的通用或专用处理器。用户可以向计算装置2提供输入以使得cpu6执行一或多个软件应用程序,例如软件应用程序18。在cpu6上执行的软件应用程序可以包含例如操作系统、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户界面应用程序或其它应用程序。另外,cpu6可以执行gpu驱动程序22用于控制gpu12的操作。用户可以经由键盘、鼠标、麦克风、触摸垫等一或多个输入装置(未示出)或经由用户接口4连接到计算装置2的其它输入装置向计算装置2提供输入。
在cpu6上执行的软件应用程序18可以包含指示cpu6以使得图形数据渲染到显示装置8的一或多个图形渲染指令。指令可以包含处理3d图形的指令以及处理2d图形的指令。在一些实例中,软件指令可以符合图形应用程序编程接口(api),例如开放图形库
gpu12可被配置成执行图形操作,从而将一或多个图形基元渲染到显示装置8。因此,当在处理器6上执行的软件应用程序18需要图形处理时,cpu6可以将图形渲染命令连同图形数据一起提供到gpu12,以便渲染到显示装置8。图形数据可以包含例如绘制命令、状态信息、基元信息、纹理信息等。在一些情况下,gpu12可以利用高度并行结构建构,所述结构提供比cpu6更加有效的复杂的图形相关操作的处理。例如,gpu12可以包含被配置成通过并行方式在多个顶点或像素上操作的多个处理元件,例如着色器单元。在一些情况下,gpu12的高度并行性质允许gpu12比使用cpu6直接将场景绘制到显示装置8更快速地将图形图像(例如,gui和二维(2d)和/或三维(3d)图形场景)绘制到显示装置8上。
在一些情况下,gpu12可以集成到计算装置2的母板中。在其它情况下,gpu12可以存在于计算装置2的母板端口中安装的图形卡上,或可以另外的方式并入被配置成与计算装置2交互操作的外围装置内。在一些实例中,gpu12可以与cpu6位于芯片上,例如在片上系统(soc)上,gpu12可以包含一或多个处理器(例如一或多个微处理器)、专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)或其它等效的集成或离散逻辑电路。gpu12还可以包含一或多个处理器核心,因此gpu12可被称作多核处理器。
在一些实例中,图形存储器41可以是gpu12的一部分。因此,gpu12可以从图形存储器41读取数据以及将数据写入到图形存储器41,而无需使用总线。换句话说,gpu12可以使用本地存储装置而不是片外存储器在本地处理数据。此类图形存储器41可被称为片上存储器。这允许gpu12通过消除对gpu12经由总线读取和写入数据的需要来以更有效方式操作,经由总线读取和写入数据可能经历较重的总线业务以及相关联的对带宽的争用。然而,在一些情况下,gpu12可能不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器41可以包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、快闪存储器、磁性数据媒体或光学存储媒体。
在一些实例中,gpu12可以在系统存储器10中存储完全形成的图像。显示处理器14可以从系统存储器10和/或输出缓冲器16检索图像,并输出使显示装置8的像素照亮以显示图像的值。在一些实例中,显示处理器14可被配置成对待显示的数据执行2d操作,包含按比例缩放、旋转、混合以及合成。显示器8可以是显示由gpu12产生的图像内容的计算装置2的显示器。显示器8可以是液晶显示器(lcd)、有机发光二极管显示器(oled)、阴极射线管(crt)显示器、等离子显示器或另一类型的显示装置。
根据本发明的方面,在cpu6上执行的软件应用程序18可以使得gpu12和/或显示处理器14以某一帧率输出视频以供在显示装置8处显示。cpu6可以使显示视频的显示装置8的刷新率同步到视频的帧率。响应于检测到在显示装置8处显示视频的一或多个帧时的潜在延迟,cpu6可以对一或多个帧的合成或显示装置8的刷新中的至少一者进行时移,以缓和在显示装置8处显示视频的一或多个帧时的潜在延迟。
显示装置8的刷新率可以是显示每秒显示装置8的更新的次数。例如,对于显示装置8的每次刷新,显示处理器14可以获取存储于计算装置2的指定缓冲器(例如输出缓冲器16)中的图像以供显示装置8显示。在连续更新中,取决于相同图像或不同图像是否在连续更新中存储于输出缓冲器16中,显示装置8可以显示相同或不同图像。
软件应用程序18的帧率是每秒软件应用程序18经由其图形渲染操作发布使得gpu12或显示处理器14输出可以由显示装置8显示的更新图像的次数。例如,如果软件应用程序18是媒体播放器应用程序,那么待由视频播放应用程序输出的图像可以是视频的视频帧,因此媒体播放器应用程序可以通过输出视频的视频帧序列来输出视频。类似地,如果软件应用程序18是视频游戏,例如第一人称射击游戏、赛车比赛等,那么待由视频游戏输出的每一图像可以是被视频游戏动画化的场景的帧。在本发明通篇,待由软件应用程序18输出的更新图像的序列(即帧)可以被称为视频。然而,应理解,视频可以不仅指由视频播放应用程序输出的一组视频帧,而且在许多其它非限制性实例中的一者中还可以指通过视频游戏等动画化的场景的一组帧。
在一些实例中,如果软件应用程序18以某一帧率输出视频以供显示装置8显示,所述帧率不同于显示装置8的刷新率,可以出现停顿。因而,计算装置2可以通过使显示装置8的刷新率与由软件应用程序18输出的一系列帧的帧率同步来减少此类停顿。
图2a和2b是示出根据本发明的方面用于使显示装置8的刷新率与由软件应用程序18输出的一系列帧的帧率同步的实例技术的概念图。如图2a的实例所示,软件应用程序18可以每秒24帧(fps)的帧率输出视频以供在具有60赫兹(hz)的刷新率的显示装置8处显示。给定60hz的刷新率与24fps的帧率的比率,显示装置8可以在软件应用程序18输出视频的两个帧的相同时间跨度期间刷新其显示的图像五次。因而,显示装置8可能无法在相同时间量显示视频的两个帧。
在在图2a所示的实例中,以24fps输出视频的软件应用程序18可以连续输出帧24a-24b。显示装置8可以在三个刷新周期显示帧24a并且可以接着在两个刷新周期显示帧24b,由此在显示帧24a和帧24b之间引起停顿。类似地,显示装置8可以在三个刷新周期显示帧24c并且可以接着在两个刷新周期显示帧24d,由此在显示帧24c和帧24d之间引起停顿。
根据本发明的方面,通过使显示视频的显示装置的刷新率同步到由软件应用程序18输出的视频的帧率,计算装置2可以缓和由视频的帧率与显示装置的刷新率之间的不匹配引起的停顿。如图2b所示,计算装置2可以使显示视频的显示装置8的刷新率同步到由软件应用程序18输出的视频的帧率。例如,如果视频的帧率是24fps,并且如果在刷新率同步之前显示装置8的刷新率是60hz,那么计算装置2可以通过将显示装置8的刷新率修改为与视频的帧率相同(即,与视频的帧率相等)使显示装置8的刷新率同步到视频的帧率,因此计算装置2可以将显示装置8的刷新率从60hz调整到24hz。在图2b所示的实例中,通过使显示装置8的刷新率同步到视频的帧率,显示装置8可以显示由软件应用程序18输出的帧24a-24b中的每一者一次,由此消除图2a中所示的停顿。
在一些实例中,通过将显示视频的显示装置8的刷新率设置为视频帧率的非零正整数(例如,1、2、3等)倍,计算装置2可以使显示装置8的刷新率同步到视频的帧率。因此,如果视频具有24fps的帧率,那么计算装置2可以将显示装置8的刷新率设置为24hz、48hz、72hz、96hz等。
计算装置2可以使用锁相环使显示视频的显示装置8的刷新率同步到视频的帧率。在一个实例中,锁相环可以是由cpu6或gpu12等处理器执行的软件,其确定视频的帧率并且相应地调整显示处理器14可以获取存储于计算装置2的指定缓冲器(例如输出缓冲器16)中的图像的频率。以此方式,显示装置8的刷新率被设置为视频的帧率的指定非零整数倍。在其它实例中,计算装置2可以使用包含在计算装置2中或可操作地连接到计算装置2的硬件锁相环。
响应于确定输出视频的软件应用程序18的游戏引擎周期的开始,计算装置2可以使显示视频的显示装置8的刷新率同步到视频的帧率。例如,响应于软件应用程序发布清除命令,例如glclear()命令,计算装置2可以使显示装置8的刷新率同步到视频的帧率,并且可以将显示装置8的刷新率锁相到每一帧的glclear()命令。在其它实例中,计算装置2可以基于以下因素的组合确定软件应用程序18的游戏引擎周期的开始:包含软件应用程序18是否已进入全屏模式、vsync是否启用、软件应用程序18是否定期闲置、由软件应用程序18输出的音频、以及软件应用程序18所接收的触控/传感器事件。
计算装置2可以检测到渲染视频游戏的图形景物的游戏引擎已经开始,并且可以响应于确定所述游戏引擎已经开始而使显示装置8的刷新率同步到视频的帧率。在一些实例中,软件应用程序18可以是包含游戏引擎的视频游戏。游戏引擎是用于根据动画、用户交互、人工智能、游戏场景中对象的物理现象等定期更新和渲染视频游戏的图形帧的软件框架。游戏引擎可以包含用于为每一游戏引擎周期绘制新的图形帧的内部计时器。如上文所论述,计算装置2可以使显示装置8的刷新率同步到游戏引擎周期。由于在计算装置2的执行期间软件应用程序18的游戏引擎可以包含多个游戏引擎周期,并且由于视频的帧率在不同游戏引擎周期之间可能不同,因此计算装置2可以使显示装置8的刷新率同步到不同游戏引擎周期中视频的不同帧率。计算装置2可以使显示装置8的刷新率同步到第一游戏引擎周期中视频的第一帧率。接着,计算装置2可以使显示装置8的刷新率同步到第二游戏引擎周期中视频的第二帧率。
计算装置2可以通过例如检测软件应用程序18发布的初始图形渲染指令(例如,初始图形api命令、初始opengl/eglapi调用、directxapi调用等)检测到已经开始游戏引擎。例如,在每一游戏引擎周期开始时,游戏引擎可以发布清除屏幕的图形渲染指令,例如清除输出缓冲器16的指令(例如,glclear())。响应于检测到软件应用程序18发布的初始图形渲染指令,例如清除屏幕的图形渲染指令,计算装置2可以确定游戏引擎周期已经开始,并因此使显示由视频游戏输出的视频的显示装置8的刷新率同步到视频的帧率。以此方式,计算装置2可以使显示装置8的刷新率同步到视频的帧合成周期的开始。在其它实例中,计算装置2可以通过检测软件应用程序18已经发布进入全屏模式的命令而检测到游戏引擎已经开始。
除由显示装置8的刷新率与由软件应用程序18输出的视频的帧率之间的不匹配潜在地引起的视频停顿之外,还可以潜在地由迟延帧引起视频停顿。迟延帧可能是因处理器抢占或场景复杂度等因素而导致不预备在显示装置8的对应刷新周期由显示装置8显示的视频的帧。如果迟延帧不预备由显示装置8显示,那么显示装置8可以替代地持续额外刷新周期显示先前视频帧而不是迟延帧,由此导致因不持续相同量的刷新周期显示每一视频帧所致的视频停顿。
图3a和3b是示出根据本发明的方面用于缓和迟延帧的实例技术的框图。如图3a所示,输出视频以供显示装置8显示的在cpu6上运行的软件应用程序18可以发布图形渲染操作26(例如,图形api命令)的序列,其调用gpu12执行图形渲染操作34以绘制视频的视频帧的图形。
gpu完成时间36可以是gpu12结束执行针对视频的视频帧的图形渲染操作34的时间。缓冲器调换时间32可以是软件应用程序18结束发布针对视频帧的图形渲染操作26的序列的时间。在缓冲器调换时间32,软件应用程序18可以调用缓冲器调换api,以调用gpu12开始将视频帧渲染到新的输出缓冲器(例如,eglswapbuffer)。如果不存在gpu12将视频帧渲染到其中的可用输出缓冲器,gpu12可以等待将视频帧渲染到其中的可用输出缓冲器。以此方式,软件应用程序18可以提交以缓冲器调换api结束的一系列图形渲染操作,并且可以在渲染完成之前对输出缓冲器列队以进行合成。
可以基于各种因素确定视频帧的绘制复杂度30,包含但不一定限于软件应用程序18发布的针对视频帧绘制图形的图形渲染操作26的数目、针对特定视频帧需要渲染的基元的数目、特定视频帧的纹理的数目等。cpu6可以在软件应用程序18发布图形渲染操作26的序列时对其采样,以确定视频帧的绘制进展28,这可以至少部分地基于软件应用程序18迄今为止发布的图形渲染操作的数目以及软件应用程序18发布那些操作的速率。
在软件应用程序发布图形渲染操作26时的给定采样时间,cpu6可以对软件应用程序18发布图形渲染操作26的速率采样,以确定绘制进展28并且确定软件应用程序18在发布图形渲染操作26时是否例如因处理器抢占或视频帧的场景复杂度改变而导致被延迟。例如,如果cpu6确定软件应用程序具有每给定采样周期发布一百条图形渲染指令以不延迟视频帧的绘制的基准,但是确定在给定采样周期,软件应用程序18仅在每采样周期发布六十条图形渲染指令,那么cpu6可以确定很有可能绘制视频帧时将存在延迟。在一些实例中,cpu6可以按针对视频帧的vsync之前的偏移量确定绘制进展28(例如,测量针对视频帧所提交的图形渲染指令的数目)。通过确定在构成视频的视频帧的与当前视频帧相同的序列中指定数目的先前视频帧的指定采样周期(例如,二分之一)发布的图形渲染指令的数目的流动平均值,cpu6可以确定此类基准率。cpu6可以类似地以在针对先前视频帧的vsync之前的相同偏移量对那些先前的视频帧采样。基于由cpu6确定的基准率以及图形渲染操作26的绘制复杂度30,cpu6可以确定cpu6可以执行当前视频帧的合成时的缓冲器调换时间32。基于由cpu6确定的基准率以及图形渲染操作26的绘制复杂度30,cpu6还可以确定视频帧可能预备好由显示装置8显示时的gpu完成时间36。
如图3b所示,可以在cpu6上执行自适应缓冲器调换时间预测器38以至少部分地基于绘制进展28确定所预测缓冲器调换时间40,并且可以至少部分地基于所预测缓冲器调换时间40自适应性地移位视频帧的合成时槽,如图4a-4c中进一步详细示出。还可以在cpu6上执行自适应gpu完成时间预测器42以至少部分地基于所预测缓冲器调换时间40和绘制复杂度30确定所预测gpu完成时间44,并且可以至少部分地基于所预测gpu完成时间44自适应性地延迟显示装置8的刷新,如图5a-5c中进一步详细示出。
cpu6可以至少部分地基于软件应用程序18在预测gpu完成时间36的采样时间所提交的基元的数目测量绘制复杂度30。cpu6可以基于对视频的先前视频帧的采样确定软件应用程序18在采样时间(例如,在针对视频帧的vsync之前的指定偏移量)一定已经提交了100个基元以便为缓冲器调换时间32准备好视频帧。然而,如果cpu6确定对于某一视频帧,软件应用程序18仅在采样时间提交了50个基元,那么cpu6可以至少部分地基于关于从其它相似场景/视频收集的gpu完成时间的数据的数据库,根据所预测缓冲器调换时间40以仅50个基元估计所预测gpu完成时间44。
图4a-4c是示出根据本发明的方面针对合成的自适应时移补偿的框图。如图4a所示,对于待由显示装置8显示的给定视频帧48,在软件应用程序18发布渲染视频帧48的图形渲染操作26之后,cpu6可以在合成时槽46中执行视频帧的合成。cpu6可以使合成时槽46与显示装置8的刷新同步(即,vsync45),所述同步在软件应用程序18已结束发布渲染视频帧的图形渲染操作26之后立即出现。通过使合成时槽46与vsync45同步,cpu6可以执行视频帧48的合成,使得视频帧48准备好在显示装置8的下一刷新(即,vsync47)时由显示装置8显示。
cpu6可以在合成时槽46中执行合成引擎以执行视频帧的显示合成。例如,合成引擎可以是操作系统层级软件,其定期组合和/或合成不同窗口的缓冲器以供显示装置8显示。在图4a-4c的实例中,cpu6可以构成输出缓冲器,gpu12已经用一或多个其它输出缓冲器将视频帧渲染到其中。
合成引擎可以依赖于gpu12加速其操作,并且可以因此发布图形渲染操作34到gpu12。例如,对于仅具有一个窗口的全屏游戏,合成引擎可以在vsync时间从缓冲器队列获取游戏帧缓冲器,使用gpu操作将所述缓冲器的内容复制到输出缓冲器16,且接着可以将游戏帧缓冲器释放回至游戏引擎。
如图4b所示,由于包含但不限于处理器抢占和/或场景复杂度的改变等因素,软件应用程序18可能直到在vsync45已出现显示装置8的刷新之后才结束发布图形渲染操作26,因而错过其中执行合成视频帧48的合成时槽46。替代地,cpu6可以延迟合成视频帧48直到经延迟合成时槽50在vsync47处与显示装置8的下一刷新同步。由于合成视频帧48中的延迟,视频帧48在预备由显示装置8显示时被延迟。因此,在图4b的实例中,直到在vsync49显示装置8的刷新,视频帧48才预备由显示装置8显示,与图4a中在vsync47显示装置8的刷新时视频帧预备由显示装置8显示形成对比。
如图4c所示,cpu6可以通过对视频帧48的合成进行时移而潜在地防止图4b中所示的显示视频帧48时的延迟。如上文相对于图3a和3b所论述,cpu6可以在软件应用程序18发布图形渲染操作26时对其采样以确定绘制进展。自适应缓冲器调换时间预测器38可以在cpu6上执行以至少部分地基于绘制进展确定所预测缓冲器调换时间40。cpu6可以通过从所预测缓冲器调换时间40中减去合成时槽46的当前合成时间来确定合成延迟。cpu6可以通过合成延迟将合成时槽46移位,使得cpu6可以在显示装置在vsync47时刷新之前在经移位合成时槽52处执行视频帧48的合成。以此方式,cpu6可以在vsync47之前执行视频帧48的合成,使得视频帧48准备好在vsync47由显示装置8显示。
图5a-5c是示出根据本发明的方面针对显示的自适应时移补偿的框图。如图5a所示,对于待由显示装置8显示的给定视频帧48,在cpu6上执行的软件应用程序18可以发布图形渲染操作26,其调用gpu12来执行图形渲染操作34以绘制视频帧48的图形。响应于gpu12结束执行视频帧48的图形渲染操作34,显示装置8可以在后续vsync54以显示装置8的刷新显示视频帧48。
如图5b所示,由于包含但不限于处理器抢占和/或场景复杂度的改变等因素,软件应用程序18可以延迟发布图形渲染操作26。因此gpu12也可能延迟执行图形渲染操作34来绘制视频帧48的图形。因而,视频帧48可能未准备好由显示装置8在vsync54以显示装置8的刷新显示。替代地,视频帧48的显示可以延迟直到后续在vsync56时显示装置8的刷新。
如图5c所示,通过将与视频帧48的显示相对应的显示装置8的刷新移位,cpu6可以潜在地防止图5b所示显示视频帧48时的延迟。如上文相对于图3b所论述,cpu6可以在软件应用程序18发布图形渲染操作26时对其采样以确定绘制进展28。自适应gpu完成时间预测器42可以在cpu6上执行以至少部分地基于所预测缓冲器调换时间40和绘制复杂度30确定所预测gpu完成时间44。cpu6可以通过从所预测gpu完成时间44中减去vsync54的当前刷新时间来确定刷新延迟。cpu6可以将vsync54延迟所确定的刷新延迟量,使得可以计划在cpu6预测gpu12将结束执行图形渲染操作34以绘制视频帧48的图形之后出现经移位vsync58。以此方式,经移位vsync58可以与cpu6预测视频帧48将准备好由显示装置8显示时的时间相对应,并且视频帧48的显示可以与经移位vsync58同步而不是被延迟为与vsync56同步。
图6是示出根据本发明的方面的图2a-2b、图3a-3b、图4a-4c以及图5a-5c中所示实例技术的实例组合的框图。为了将可能在显示视频帧48期间出现的视觉假影减到最少,cpu6可以执行以下中的一或多者:使显示装置8的刷新率同步到由软件应用程序18输出的视频的帧率,自适应性地时移视频帧48的cpu合成,以及自适应性地时移显示视频帧48时的vsync。
如图6所示,cpu6可以使显示视频的显示装置8的刷新率同步到视频的帧率。响应于检测到软件应用程序18的帧合成周期的开始,对于视频帧48,cpu6可以将未校正的vsync62锁定到软件应用程序18的帧合成周期的开始,因此cpu6将显示装置8的刷新率同步到由软件应用程序18输出的视频的帧率。
软件应用程序18可以发布图形渲染操作26的序列供gpu12以图形方式渲染视频帧48。自适应时移预测器64可以包括图3b所示的自适应缓冲器调换时间预测器38和自适应gpu完成时间预测器42。自适应时移预测器64可以在cpu6上执行以对软件应用程序18的绘制进展采样,从而检测在显示装置8处显示视频帧48的潜在延迟,并且可以输出所预测缓冲器调换时间40和所预测gpu完成时间44。
时移补偿器66可以在cpu6上执行以执行以下中的一或多者:至少部分地基于由自适应时移预测器64输出的所预测缓冲器调换时间40移位视频帧48的cpu合成,以及至少部分地基于由自适应时移预测器64输出的所预测gpu完成时间44移位与视频帧48的显示相对应的刷新周期的开始。时移补偿器66可以至少部分地基于所预测缓冲器调换时间40将图形帧48的cpu合成移位到经移位合成时槽52。时移补偿器66还可以至少部分地基于所预测gpu完成时间44将vsync54延迟刷新延迟量,使得在gpu12之后经移位vsync58已经完成处理图形渲染操作34和执行gpu合成68。
在一些实例中,cpu6可能误预测视频帧的缓冲器调换时间。因而,cpu6可以通过重新预测缓冲器调换时间而从误预测复原。图7是示出根据本发明的方面用于从误预测针对合成的自适应时移补偿复原的实例技术的框图。如上文相对于图4a-4c所论述,cpu6可以至少部分地基于确定所预测缓冲器调换时间40而将合成时槽46延迟所预测缓冲器调换时间40与合成时槽46的合成时间之间的差值,从而将合成时槽46从合成时间移位到经移位合成时槽52。
然而,cpu6还可能错过用于合成视频帧48的经移位合成时槽52。因而,在经移位合成时槽52的时间之前但是在合成时槽46的合成时间之后,cpu6可以对软件应用程序18发布图形渲染操作26重新采样,以确定软件应用程序18发布图形渲染操作26时的更新的绘制进展。更新的绘制进展可以包含软件应用程序18已经发布的图形渲染操作的数目的指示,软件应用程序18发布图形渲染指令的速率的指示,等等。
cpu6可以至少部分地基于视频帧48的更新的绘制进展确定更新的所预测缓冲器调换时间。例如,cpu6可以将更新的绘制进展与视频帧48的绘制复杂度30进行比较以预测软件应用程序18将结束发布图形渲染操作26的时间。基于更新的所预测缓冲器调换时间,cpu6可以将经移位合成时槽52进一步移位至经重新移位合成时槽72。例如,cpu6可以基于更新的所预测缓冲器调换时间与所预测缓冲器调换时间40之间的差值移位经移位合成时槽52。
在一些实例中,cpu6可能误预测视频帧的gpu完成时间。因而,cpu6可以通过重新预测gpu完成时间而从误预测复原。图8是示出根据本发明的方面用于从误预测针对显示的自适应时移补偿复原的实例技术的框图。如上文相对于图5a-5c所论述,cpu6可以至少部分地基于确定软件应用程序18在发布图形渲染操作26时是否延迟而将与视频帧48的显示相对应的vsync移位,使得在对应的vsync时视频帧48可不预备由显示装置8显示。
如图8所示,基于确定视频帧48的所预测gpu完成时间44,cpu6可以延迟与视频帧48的显示相对应的vsync54,从而在cpu6至少部分地基于所预测gpu完成时间44确定视频帧48将不预备在vsync54时由显示装置8显示的情况下产生经时移vsync58。
在时移vsync54以产生经时移vsync58之后以及在进行经时移vsync58之前,cpu6可以分析可用api调用序列以确定视频帧48的更新的绘制进展,并且可以至少部分地基于视频帧48的更新的绘制进展和视频帧48的实际缓冲器调换时间确定视频帧48的更新的所预测gpu完成时间。当cpu6分析可用api调用序列时,相比当cpu6最初误预测gpu完成时间时最初能够分析的api调用序列,cpu6可能够分析更完全的api调用序列。因而,cpu6可能够确定视频帧48的更精确的经更新绘制进展,并且能够更精确地确定视频帧48的更新的所预测gpu完成时间。
如果cpu6确定视频帧48的更新的所预测gpu完成时间延伸超过在经时移vsync58出现显示装置8的刷新的时间,那么根据更新的所预测gpu完成时间与在经时移vsync58出现显示装置8的刷新的时间之间的差值,cpu6可以重新移位经时移vsync58以产生经重新移位vsync82。在根据经重新移位vsync82显示视频帧48之后,通过将后续vsync锁定到视频的后续帧的帧合成周期的开始,cpu6可以重新使显示装置8的刷新率同步到由软件应用程序18输出的视频的帧率。
如本发明通篇所论述,cpu6可能够自适应性地时移显示装置8的刷新率,以便使刷新率与视频的帧率同步,或延迟刷新率以适应延迟的视频帧。图9是示出根据本发明的方面显示装置8的刷新率的实例改变的框图。如图9所示,cpu6可以在vsyncn通过设置vsyncn-1之前的新的刷新率将显示装置8的刷新率从t改为t+增量。
图10是示出根据本发明的方面缓冲器队列积累的框图。如本发明通篇所描述的离群值可能使此类缓冲器积累,这可能引起停顿。如图10所示,软件应用程序18可以在cpu6上执行以调用多组图形渲染操作120a-102h。多组图形渲染操作102a-h中的每一组可以是一组用于渲染视频的视频帧的图形渲染操作。一旦多组图形渲染操作102a-102h中的一组图形渲染操作产生视频帧,cpu6可以就可以将所产生的视频帧列入缓冲器队列104中。cpu6可以通过从缓冲器队列104消耗帧构成视频帧。cpu6可以在显示装置8的每个刷新周期具有一个合成时槽106以用于构成图形帧。然而,因为软件应用程序18可以比cpu6可构成视频帧更快地产生视频帧,所有多组图形渲染操作102a-102h所产生的帧可能在缓冲器队列104中积累。当缓冲器队列104满时,缓冲器队列104无法接受软件应用程序18所产生的任何额外视频帧,直到cpu6从缓冲器队列104消耗帧以在合成时槽106中的一者处合成,由此由于软件应用程序18所产生的额外视频帧在列入缓冲器队列104时被延迟而产生可能的停顿。
图11是示出根据本发明的方面用于将视觉假影减到最少的实例技术的流程图。如图11所示,在cpu6上执行的软件应用程序18可以进入图形渲染模式(例如,对于视频游戏应用程序的游戏模式),其中cpu6输出视频。例如通过确定软件应用程序18是否处于全屏模式,确定软件应用程序18即使在存在合成引擎相时也不需要任何硬件合成,确定存在调用图形操作的周期性闲置,确定启用vsync以防止屏幕撕裂,确定软件应用程序18输出音频,和/或确定软件应用程序18接收触控和/或传感器事件,cpu6可以确定软件应用程序18是否处于输出视频以供在显示装置8处显示的有效图形渲染模式(112)。响应于确定软件应用程序18处于有效图形渲染模式并且因此调用图形渲染命令,cpu6可以使显示视频的显示装置8的刷新率同步到由软件应用程序18输出的视频的帧率(114)。
cpu6可以调用自适应时移预测器64对软件应用程序18的绘制进展采样以检测显示装置8处显示视频帧48时的潜在延迟(116)。如果自适应时移预测器64预测到视频帧48的合成延迟(118),那么时移补偿器66可以在cpu6上执行,以至少部分地基于由自适应时移预测器64输出的所预测缓冲器调换时间40来执行视频帧48的cpu合成的移位(120)。如果时移补偿器66误预测视频帧48的补偿时延,那么自适应时移预测器64可以预测更新的缓冲器调换时间,并且时移补偿器66可以至少部分地基于更新的缓冲器调换时间重新移位视频帧48的cpu合成(122)。
如果自适应时移预测器64预测到显示视频帧48的迟延帧(124),那么时移补偿器66可以在cpu6上执行,以至少部分地基于由自适应时移预测器64输出的所预测gpu完成时间44执行对应的vsync的移位以减少显示视频帧48的等待时间(126)。如果时移补偿器66误预测视频帧48的显示延迟,那么自适应时移预测器64可以预测更新的所预测gpu完成时间,并且时移补偿器66可以至少部分地基于更新的所预测gpu完成时间针对视频帧48的显示重新移位对应的vsync(128)。在输出图形帧48以供显示装置8显示之后,cpu6可以继续进行到处理视频中的下一个帧(130)。
图12是更详细地示出计算装置2的实例操作的流程图。如图12中所示,gpu12和/或显示处理器14可以某一帧率输出视频以供在显示装置8处显示(132)。cpu6可以使显示视频的显示装置8的刷新率同步到视频的帧率(134)。响应于检测到在显示装置8处显示视频的视频帧48时的潜在延迟,cpu6可以对视频帧48的合成或显示装置8的刷新中的至少一者进行时移,以缓和在显示装置8处显示视频的视频帧48时的潜在延迟(136)。
在一些实例中,通过cpu6使显示视频的显示装置8的刷新率同步到视频的帧率进一步包括:通过cpu6将显示视频的显示装置8的刷新率设置为视频的帧率的正整数倍。在一些实例中,通过cpu6检测在显示装置8处显示视频的视频帧48时的潜在延迟进一步包括:通过cpu6至少部分地基于视频的视频帧48的绘制进展确定所预测缓冲器调换时间。
在一些实例中,通过cpu6对视频帧48的合成或显示装置8的刷新中的至少一者进行时移以缓和在显示装置8处显示视频视频帧48时的潜在延迟进一步包括:cpu6基于所预测缓冲器调换时间对视频帧48的合成进行时移。在一些实例中,通过cpu6检测在显示装置8处显示视频的视频帧48时的潜在延迟进一步包括:通过cpu6至少部分地基于所预测缓冲器调换时间确定所预测gpu完成时间。在一些实例中,通过cpu6对视频帧48的合成或显示装置8的刷新中的至少一者进行时移以缓和在显示装置8处显示视频的视频帧48时的潜在延迟进一步包括:通过cpu6至少部分地基于所预测gpu完成时间对显示装置8的刷新进行时移。
在一些实例中,处理可以进一步包含:通过cpu6至少部分地基于视频帧48的经更新绘制进展确定更新的所预测缓冲器调换时间,并且通过cpu6至少部分地基于更新的所预测缓冲器调换时间执行视频帧48的合成的第二时移。在一些实例中,处理可以进一步包含:通过cpu6至少部分地基于分析图形操作的可用序列确定更新的所预测gpu完成时间,并且通过cpu6至少部分地基于更新的所预测gpu完成时间执行显示装置8的刷新的第二时移。
在一或多个实例中,所描述的功能可以用硬件、软件、固件或其任何组合来实施。如果实施于软件中,则可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体可包含计算机数据存储媒体或通信媒体,所述通信媒体包含促进计算机程序从一处传递至另一处的任何媒体。数据存储媒体可以是可由一或多个计算机或者一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。借助于实例而非限制,这些计算机可读媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置。如本文中所使用,磁盘和光盘包含压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
代码可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指上述结构或适用于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可在被配置成用于编码和解码的专用硬件和/或软件模块内提供,或并入在组合编解码器中。并且,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明的技术可以实施于多种多样的装置或设备中,包含无线手持机、集成电路(ic)或一组ic(即,芯片组)。本发明中描述各种组件、模块或单元是为了强调被配置成执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。确切地,如上文所描述,各种单元可结合合适的软件和/或固件组合在编解码器硬件单元中,或由互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已经描述了本发明的各个方面。这些及其它方面在所附权利要求书的范围内。