用于对输入感测、渲染及显示进行定时以便最小化时延的系统和方法与流程

文档序号:16366230发布日期:2018-12-22 08:27阅读:186来源:国知局
用于对输入感测、渲染及显示进行定时以便最小化时延的系统和方法与流程

本申请是于2016年2月2日提交的美国临时专利申请第62/290,347号的非临时申请,且要求该临时专利申请的优先权,其全部公开通过引用结合于此。本申请是于2015年11月18日提交的美国专利申请第14/945,083号的部分继续申请,且要求该专利申请的优先权,其全部公开通过引用结合于此,该美国专利申请第14/945,083号本身是于2014年11月18日提交的美国专利申请第62/081,261号的非临时申请,且要求其优先权。此申请包括受版权保护的材料。版权所有者不反对任何人对本专利公开进行影印,就像它出现在专利和商标局文件或记录中,但在别的方面保留所有版权。

所披露的系统和方法总体涉及用户对触敏设备的输入领域,更具体地涉及能降低最近输入事件与反映这种输入的渲染帧的显示之间的时延的用户输入系统及方法。

附图说明

通过下列对如附图所示的各实施例的更加具体的描述,本公开的前述的及其他目标、特征,和优点将变得显而易见,在附图中,各个图中的附图标记表示相同部分。这些附图并不一定是按比例的,而是将重点放在展示本发明的原理上。

图1示出图示现有的双缓冲方案的图。

图2及图3示出图示现有的渲染方法的图。

图4及图5加快加快示出图示通过加快渲染及加快刷新屏幕来降低滞后的方案的实施例的示意图。

图6示出图示被提供有对gui的渲染进行定时的系统的本公开的系统和方法的实施例的示意图。

具体实施方式

现在将详细参照本发明的优选实施例,附图中示出了所述优选实施例的示例。以下描述和附图是说明性的,并且不解释为限制性的。描述了众多特定的细节以提供透彻的理解。然而,在某些实例中,不描述公知的或常规的细节以避免使描述变得模糊。在本公开中,对一个实施例或实施例的引用不一定是对同一个实施例的引用,此类引用意味着至少一个实施例。

本说明书中对“实施例”或“所述实施例”的引用意味着结合所述实施例所描述的具体特征、结构或特性包括在本公开的至少一个实施例中。在本说明书中的不同位置出现短语“在一个实施例中”不一定都是指同一个实施例,也不是指与其他实施例互相排斥的单独的或备选实施例。此外,还描述了可由一些实施例呈现而不可由其他实施例呈现的各种特征。类似地,还描述了可能是对于一些实施例但不是对于其他实施例的要求的各种要求。

以下参考用于对输入感测、渲染及显示进行定时以便最小化时延的方法和设备的框图以及操作图示来描述本发明。应该理解,框图或操作图示中的每一个框以及框图或操作图示中的框的组合可以通过模拟或数字硬件和计算机程序指令来实现。这些计算机程序指令可以存储在计算机可读介质上并且被提供至通用计算机、专用计算机、asic的处理器或其他可编程数据处理设备,从而使得经由所述计算机的所述处理器或其他可编程数据处理设备执行的这些指令实现在框图或单个操作框或多个框中指定的功能/动作。在某些可选实现方式中,在框中所指出的功能/动作可以不按照操作图示中所标注的顺序出现。例如,可以取决于所涉及的功能/动作,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以按相反的次序来执行。

交互设备可视为多个部分的组合,包括:输入感测、处理及渲染任务以及输出显示。要求将输入感官(例如手指触摸)转换成视觉响应的流水线并非即刻发生;各动作均会由于各种原因而引入时延,诸如处理信息所需花费的时间,或者在显示器的情况下,显示器用以重绘整个屏幕或其一部分的频率。由此,即使在可能的情况下使这些动作并行执行,系统也仅仅与最慢的动作一样快。例如,显示器可能仅每60hz刷新一次,这意味着如果其它动作在下一刷新周期之前更快(或可获取),系统也被迫等待显示器准备好显示新信息。

本发明的一个目的在于降低该时延(即为用户输入至系统与系统对该输入的图形响应之间的时间)。本发明的目的还在于通过使输入捕获和处理与显示刷新相同步,使得能够显示最近的输入信息。以往,任何输入信息均被尽可能地处理,且时常迫于等待下一刷新周期。仅这就会引入等待期间,并反映到整个系统时延。根据本发明所公开的方法的实施例,该系统考虑下一刷新在何时并将此考虑在内以便提供最新事件,以恰好及时进行渲染。

在一实施例中,刷新显示的时刻以及用于对输入传感器进行采样并计算触摸点的时间是已知的。因此,将输入感测延迟并重合到在刷新将要开始时结束。在一实施例中,在最后可能的时刻开始渲染,使得完成该渲染且准备好为下一显示刷新进行输出。该恰好及时的渲染将访问最近的输入事件,由此,所产生的显示将包括具有最小时延量的图形。

在另一实施例中,刷新的时刻以及用于对输入传感器进行采样的时间是未知的,需要事先测量。基于关键时间戳来执行测量,这允许我们确保时间排序及序列。通过测量,输入采样率及显示刷新率变得已知,并且能如上概述那样对图形的渲染进行定时,以便最小化时延。

在另一实施例中,利用外部测量设备及用户输入(或定义为常量)来对这样的测量进行检测。

在另一实施例中,这些测量根据系统工作负荷而变化,且这些测量并不精确,而仅仅试图减少对显示的等待。渲染输出所需要的时间是该输出的复杂度与竞争系统活动(更复杂的输出通常需要更多时间来进行渲染,cpu或gpu上的竞争活动可能会拖慢渲染等)的函数。在该实施例中,系统基于如下数据的一些组合来估计渲染时间:输出复杂度的模型、关键系统组件上的竞争活动的知识、渲染先前帧所需要的时间以及渲染过去的类似输出所需要的时间。

在另一实施例中,一旦显示器完成其垂直刷新且有何时的缓冲器可用于渲染时,系统便对输出进行渲染。在渲染完成后,系统基于由输入传感器附加的输入事件采样来更新该渲染,直到下一垂直刷新为止。例如,系统对gui的视图进行渲染,之后基于附加输入事件来将其进行转换,直到必须显示该渲染的时刻。

图1示出现有的双缓冲方案。在该方案中,显示器在用于显示及渲染的两缓冲器(a&b)之间“翻转”或“交换”。在缓冲器a可见时,设备渲染到缓冲器b中。该系统以规定的速率翻转/交换缓冲器,使得缓冲器b当前可见,且可渲染到缓冲器a中。当缓冲器在屏幕外(offscreen)时,该缓冲器被清除且被渲染。

图2及图3示出了现有的渲染方法。利用最近输入数据及应用状态来对该gui进行渲染。在gui被渲染时与其最终被显示于屏幕时在应用状态(包括输入)之间存在差异的情况下,会产生时延(滞后)。图3中,渲染a的滞后图示为渲染a的开始与将该渲染a的结果显示在屏幕上的垂直刷新之间的时间。

图4及图5示出了通过更加快渲染及加快刷新屏幕来降低滞后的方案。例如,一个方案可以在它们的系统中包括更快的gpu或其它这样的改进,并可以以更快速的刷新率(比如100hz而不是60hz)运行它们的显示器。在该方式下,渲染后的图形既更快速地被创建又更快速地为用户显示于屏幕,由此减小了渲染的开始与向用户显示该gui之间的时间。只要在屏幕的垂直刷新之间有时间用于清除缓冲器和渲染gui,该方法将会减小滞后,但代价是需要更强大的渲染引擎及更快更昂贵的显示器。

图6示出对gui的渲染进行定时以使其尽可能在接近垂直刷新时完成的本公开的系统及方法的实施例。在这种方式下,渲染可使用最近可获得的用户输入及最近可获得的应用状态来产生经渲染的图像,从而减小滞后。

在一实施例中,提供一种用于在触敏设备中降低触摸数据的获取与相关联的渲染任务的处理之间的时延的系统及方法,该触敏设备具有能以触摸采样率产生触摸数据的触摸感测系统且具有以刷新率显示帧的显示系统。该系统估计以下数据中的至少一个:(a)用于从上述触摸感测系统对触摸数据进行采样的时间段、(b)根据所采样得到的触摸数据计算触摸事件数据的时间段、以及(c)用于将帧渲染到帧缓冲器的时间段。该系统至少部分地基于该估计来确定用于(a)从触摸感测系统对触摸数据进行采样、(b)根据所采样得到的触摸数据来计算触摸事件数据、以及(c)将帧渲染到帧缓冲器的时间段tc。该系统确定一时刻tr,在该时刻tr,将从帧缓冲器刷新显示系统。至少部分地基于tr及tc来计算采样开始时刻。触摸感测系统的采样被发起以便在采样开始时刻获取采样到的触摸数据。根据采样到的触摸数据来计算触摸事件数据,在时刻tr之前,反映该触摸事件数据的帧被渲染到帧缓冲器。之后,从该帧缓冲器刷新显示。

在一实施例中,系统确定根据采样到的触摸数据来计算触摸事件数据所需要的时间段tc以及将要从帧缓冲器刷新显示的时刻tr。触摸感测系统被采样以便创建采样到的触摸数据。根据采样到的触摸数据计算触摸事件数据,该计算步骤的开始被推迟,以便在至少与(tr-tc)一样早的时刻发生。在时刻tr前将帧渲染到帧缓冲器,之后从该帧缓冲器刷新显示系统。

在一实施例中,提供一种用于在触敏设备中降低触摸数据的获取与相关联的渲染任务的处理之间的时延的方法,该触敏设备具有(a)能以触摸采样率产生触摸数据的触摸感测系统、以及(b)以具有刷新同步的刷新率显示帧的显示系统。在采样同步时开始对触摸传感器输出的采样,采样到的输出被以采样率置于采样缓冲器。在刷新同步时开始对多个显示缓冲器中的一个缓冲器进行帧渲染,在刷新同步时显示与经渲染的帧对应的显示图像。与用于在采样缓冲器中收集输出的估计时间对应的时间段tc被确定,与用于根据所收集的输出计算触摸事件数据的估计时间对应的时间段tm被确定,与用于渲染对应于触摸事件数据的帧的估计时间对应的时间段tr被确定。基于刷新同步、tc、tm及tr来计算开始时刻,在该开始时刻发起在采样缓冲器中对输出的收集。之后,根据所收集的输出来计算触摸事件数据,对与该触摸事件数据对应的帧进行渲染。

在一实施例中,交换缓冲器期间可用于对由应用渲染后的图像何时准备好由显示器呈现进行估计。在一实施例中,也可以使用其它策略来估计图像可用性;例如用于估计图像可用性的可选策略也可以包括对帧缓冲器(例如,队列、双缓存器、三缓存器(或任何多缓存器方案)、堆栈、散列、堆、链表、双向链表)的基于缓存器的抽象进行监控,但并不局限于此。在一实施例中,可提供具有api的应用,其中,该api允许该应用指定执行渲染所需要的时间,例如,通过指示渲染开始与渲染结束。在一实施例中,可以选择一随机的时间段来作为渲染期间的估计值。

在一实施例中,利用输入采样及/或输出处理的估计来调整调度,由此,例如系统中各种处理所花费的时间量可以得到监控,输入采样及/或输出处理的调度可以得到调整以便补偿该时间。在一实施例中,可能产生多个重叠调度,其中生成有多个候选输出并且在给定执行渲染或以其它方式处理输入所花费的特定时间量的情况下选择一个正确的输出。在一实施例中,可对以下中的一个或多个进行监控:采样时间、(操作系统、ui框架、应用或其他处理中的一个或多个的)计算时间、渲染、硬件对给定输入进行渲染所需要的时间以及对应用递送输入所需要的时间。在一实施例中,可对例如操作系统用于输入及输出处理所花费的时间进行监控并馈送至调度器。

在一实施例中,通过对输入的处理及其效果在屏幕上的显示进行调度来改善系统的时延。例如在本机模式下利用操作系统且没有固有地提供用于在渲染处插入的访问的情况下,这可能是理想的。在给定的处理步骤期间,可通过调度该处理以使其发生在特定的输入后或特定的显示刷新之前(或关于该输入或显示的复现、预定或持续调整的调度时),从而实现时延的改善。在一实施例中,可跳过输出及/或输入事件。在一实施例中,通过对要递送给应用程序的处理进行调度,从而将来自多个输入帧的输入事件打包在一起。

如上所述,通过执行调度来确定对应用视图的渲染应何时发生。在一实施例中,考虑对何时执行对应用的输入递送以及应当包括哪个采样到的输入的调度,以便确保最近的输入是被处理且其效果被显示于屏幕的输入。在一实施例中,执行对输入的调度。在一实施例中,执行对输出的调度。在一实施例中,执行这两者。由此,在一实施例中,操作系统将事件数据(例如触摸事件数据)转发给用于对事件数据向应用的递送进行合并和调度的处理。在一实施例中,该处理可对多个事件进行合并,包括来自多个传感器(其可能或可能不以相似采样频率运行)的事件。在一实施例中,对向应用的递送进行调度可基于用于所合并的事件的输入处理时间和输出处理时间。在一实施例中,在确定所合并的事件超过帧缓冲器切换之前剩余的可用时间的情况下,可以推迟该事件的递送,直到在随后的帧缓冲器切换之前的点(例如,紧接在随后的帧缓冲器切换之前),但是在递送时仍将包括最近的信息。在一实施例中,在确定所合并的事件超过帧缓冲器切换之前所剩的可用时间的情况下,可跳过所合并的事件中的一个或多个,由此,输入被抽取以便允许在帧缓冲器切换时显示。

在一实施例中,可执行多输入采样的同步(或近似同步)处理。上述处理允许将输入采样从调度处理解耦。由此,在一实施例中,采取对输入的多采样。当一输入要被处理以便修改应用状态的时刻到来时,最近事件被发送至该应用以更新其状态。在一实施例中,为了减轻应用在输出帧之间多次更新其状态的时间,该应用可仅在其适合于执行更新(及渲染)时被告知输入。虽然该策略通过仅对最近事件进行渲染在降低时延方面是有效的,但被跳过的事件可能包含所需的或所期望的信息。由此,在一实施例中,输入事件被排队(或者以其他方式打包/编组)且作为组被递送给该应用(或者以其他方式同时或近似同时地处理),从而减少应用更新其状态的次数。这种输入事件的递送减少了产生更新的次数,增加了输入事件在针对特定输出方法/处理的正确时刻被递送的可能性。此外,应用可因此接收到与它们原本将没有该排队的益处的情况相同(或基本相同)的输入。

贯穿本公开中,可以使用术语“触摸”、“接触”或其他描述符来描述由传感器检测到用户的手指、指示笔、物体或身体部位的事件或时间段。在一些实施例中,这些检测仅当用户与传感器或传感器包括在其中的设备物理地接触时才发生。在其他实施例中,可以调谐传感器以便允许检测悬停在触摸表面上方的一距离或以其他方式与触摸敏感设备分离的“触摸”。因此,在本说明书中使用暗示对感测的物理接触的依赖性的语言不应该意味着所描述的技术仅应用于那些实施例;事实上,几乎全部的(若不是全部的话)本申请描述的内容将同等地应用于“触摸”和“悬停”传感器。如本申请中使用的,词语“触摸事件”和词“触摸”当用作名词时包括接近触摸和接近触摸事件,或者可使用传感器来识别的任何其它手势。

可以至少部分地在软件中包括所公开的至少一些方面。即,响应于其处理器(诸如微处理器)执行包含在存储器(诸如rom、易失性ram、非易失性存储器、缓存或远程存储设备)中的指令序列,可以在专用或通用计算机系统或其他数据处理系统中实施所述技术。

经执行以便实现实施例的例程可以被实现为操作系统、固件、rom、中间件、服务递送平台、sdk(软件开发工具包)组件、web服务,或其他特定的应用、组件、程序、对象、模块或被称为“计算机程序”的指令序列的一部分。到这些例程的调用接口可作为api(应用编程接口)暴露于软件开发社区下。计算机程序通常包括计算机中的各存储器和存储设备中的各时刻下的一个或多个指令集,所述一个或多个指令集当由计算机中的一个或多个处理器执行时使所述计算机进行执行涉及各方面的元件所必需的操作。

机器可读介质可用于存储软件和数据,所述软件和数据当由数据处理系统执行时使所述系统执行各种方法。可执行软件和数据可以存储在各个位置处,包括例如,rom、易失性ram、非易失性存储器和/或缓存。此软件和/或数据的部分可以存储在这些存储设备中的任何一个存储设备中。进一步地,可从集中式服务器或对等网络获得所述数据和指令。可在不同的时间以及在不同的通信会话中或者在相同的通信会话中从不同的集中式服务器和/或对等网络获得所述数据和指令的不同部分。可以在执行应用之前完整地获取数据和指令。可替代地,当需要执行时,可动态地(仅实时)获得所述数据和指令的部分。因此,不需要所述数据和指令在具体示例的时刻以其整体处于机器可读介质上。

计算机可读介质的示例包括但不限于可记录和不可记录类型的介质,诸如易失性和非易失性存储器设备、只读存储器(rom)、随机存取存储器(ram)、闪存设备、软盘以及其他可移动磁盘、磁盘存储介质、光存储介质(例如,压缩盘只读存储器(cdrom)、数字通用盘(dvd)等)等等。

通常,机器可读介质包括提供(例如,存储)采用机器可访问的形式的信息(例如,计算机、网络设备、个人数字助理、制造工具、具有一个或多个处理器的集合的任何设备等)的任何机制。

在各实施例中,硬件电路可以与软件指令一起使用以便实现技术。因此,所述技术既不限于硬件电路和软件的任何具体组合,也不限于由数据处理系统执行的指令的任何特定来源。

以上实施例和偏好用于说明本发明。对于本专利来说,既不必要也不旨在概括或限定每种可能的组合或实施例。本发明人已经公开了足够的信息以准许本领域技术人员实践本发明的至少一个实施例。在不脱离如以下权利要求书中所限定的本发明的范围的情况下,以上描述和附图仅用于说明本发明,并且部件、结构和程序的变化是可能的。例如,在不脱离本发明的情况下,可以按照不同的顺序实践以上所述的元件和/或步骤和/或按照特定顺序的以下权利要求书。因此,虽然已经参照本发明的实施例具体示出和描述了本发明,但是本领域技术人员将理解,在不脱离本发明的精神和范围的情况下,可以对形式和细节做出各种修改。

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