显示参数的调整方法、电子设备、芯片及可读存储介质与流程

文档序号:29034809发布日期:2022-02-25 17:55阅读:118来源:国知局
显示参数的调整方法、电子设备、芯片及可读存储介质与流程

1.本技术实施例涉及显示技术领域,尤其涉及一种显示参数的调整方法、电子设备、芯片及可读存储介质。


背景技术:

2.随着科学技术的快速发展,各种电子设备大量涌现,包括计算机、平板电脑、车载终端、可穿戴设备及手机等。多数电子设备都配备显示屏,具有显示系统。
3.显示系统的显示流水线主要包括应用(application,app)绘制渲染、图层合成和硬件送显三个流程。图层合成流程可以通过显示合成进程(例如,surfaceflinger)实现。为了避免显示卡顿,提升图形的视觉表现,显示系统通过垂直同步(verticalsynchronization,vsync)信号进行显示流水线各个流程的同步。
4.一般来说,对某一帧图像而言,显示系统基于vsync信号对该帧图像进行显示时,需要在第n个vsync周期执行应用绘制渲染流程,在第n+1个vsync周期执行图层合成流程,在第n+2个vsync周期执行硬件送显流程。也就是说,一帧图像从应用绘制渲染到硬件送显至少需要2个vsync周期时间,图形显示效率有待提升。


技术实现要素:

5.本技术实施例提供一种显示参数的调整方法、电子设备、芯片及可读存储介质,提高了图形显示效率。
6.第一方面,提供了一种显示参数的调整方法,包括:获取多个历史帧图像的应用绘制渲染时长和图层合成时长;根据多个历史帧图像的应用绘制渲染时长和图层合成时长确定目标应用绘制渲染偏移量和目标图层合成偏移量;根据目标应用绘制渲染偏移量调整当前应用绘制渲染偏移量,根据目标图层合成偏移量调整当前图层合成偏移量。其中,理想帧图像是指当使用目标应用绘制渲染偏移量和目标图层合成偏移量时在一个垂直同步周期内完成应用绘制渲染流程和图层合成流程的历史帧图像。
7.第一方面提供的显示参数的调整方法,根据多个历史帧图像的应用绘制渲染时长和图层合成时长确定出的目标应用绘制渲染偏移量和目标图层合成偏移量,能够使得历史帧图像中的理想帧图像的占比大于预设占比。历史帧图像的应用绘制渲染时长和图层合成时长情况能够表征待显示帧图像的应用绘制渲染时长和图层合成时长情况,因此,根据目标应用绘制渲染偏移量和目标图层合成偏移量调整当前应用绘制渲染偏移量和当前图层合成偏移量后,能够使得部分待显示帧图像的应用绘制渲染和图层合成在一个垂直同步周期内完成,从而能够在下一个垂直同步周期的开始时刻开始硬件送显。该显示参数调整方法能够使一帧图像从应用绘制渲染到硬件送显仅需要一个垂直同步周期,能够压缩帧图像的显示处理时间,减少了显示延迟,提高了图形显示效率,提高触控响应。
8.一种可能的实现方式中,根据多个历史帧图像的应用绘制渲染时长和图层合成时长确定目标应用绘制渲染偏移量和目标图层合成偏移量,包括:根据多个历史帧图像的应
用绘制渲染时长和图层合成时长求解偏移量优化模型,得到应用绘制渲染偏移量调整值的最优解;根据应用绘制渲染偏移量调整值的最优解确定目标应用绘制渲染偏移量和目标图层合成偏移量。其中,偏移量优化模型用于表征跟手性收益和不丢帧率的乘积的最大值;跟手性收益为应用绘制渲染偏移量调整值与一个垂直同步周期之和;不丢帧率是指当使用根据应用绘制渲染偏移量调整值得到的应用绘制渲染偏移量和图层合成偏移量时,多个历史帧图像中不丢帧的历史帧图像的比例。
9.在该实现方式中,偏移量优化模型用于表征跟手性收益和不丢帧率的乘积的最大值,通过求解偏移量优化模型得到的应用绘制渲染偏移量调整值的最优解既能够保证跟手性收益又能够保证不丢帧率,从而使得目标应用绘制渲染偏移量和目标应用绘制渲染偏移量下,历史帧图像中的理想帧图像的占比最大,进而使得待显示帧图像跟手性收益和不丢帧率最大化,使得显示效果最优。
10.一种可能的实现方式中,根据应用绘制渲染偏移量调整值的最优解确定目标应用绘制渲染偏移量和目标图层合成偏移量,包括:将应用绘制渲染偏移量调整值的最优解和初始应用绘制渲染偏移量的和确定为目标应用绘制渲染偏移量;根据目标应用绘制渲染偏移量确定目标图层合成偏移量。其中,初始应用绘制渲染偏移量是指不进行偏移量调整时的应用绘制渲染偏移量。
11.一种可能的实现方式中,根据目标应用绘制渲染偏移量确定目标图层合成偏移量,包括:计算多个历史帧图像的应用绘制渲染时长的平均值;将平均值与目标应用绘制渲染偏移量的和确定为目标图层合成偏移量。
12.一种可能的实现方式中,多个历史帧图像为第一历史时间段内的帧图像,根据目标应用绘制渲染偏移量调整当前应用绘制渲染偏移量,根据目标图层合成偏移量调整当前图层合成偏移量之前,还包括:获取多个第二历史时间段对应的目标应用绘制渲染偏移量和目标图层合成偏移量,多个第二历史时间段位于第一历史时间段之前,且多个第二历史时间段与第一历史时间段连续;根据目标应用绘制渲染偏移量调整当前应用绘制渲染偏移量,根据目标图层合成偏移量调整当前图层合成偏移量,包括:若多个渲染可选值均大于当前应用绘制渲染偏移量,则根据多个渲染可选值确定应用绘制渲染偏移量设置值,并根据多个合成可选值确定图层合成偏移量设置值;多个渲染可选值包括第一历史时间段对应的目标应用绘制渲染偏移量和多个第二历史时间段对应的目标应用绘制渲染偏移量;多个合成可选值包括第一历史时间段对应的目标图层合成偏移量和多个第二历史时间段对应的目标图层合成偏移量;将当前应用绘制渲染偏移量调整为应用绘制渲染偏移量设置值,并将当前图层合成偏移量调整为图层合成偏移量设置值。
13.在该实现方式中,根据第一历史时间段内的帧图像以及多个第二历史时间段内的帧图像分别计算得到多个渲染可选值和多个合成可选值,并在多个渲染可选值均大于当前应用绘制渲染偏移量时对当前偏移量进行调整,这样能够避免软件系统频繁的调整应用绘制渲染偏移量和图层合成偏移量,减小系统负担,提高系统运行效率。
14.一种可能的实现方式中,根据多个渲染可选值确定应用绘制渲染偏移量设置值,并根据多个合成可选值确定图层合成偏移量设置值,包括:将多个渲染可选值中最小的渲染可选值确定为应用绘制渲染偏移量设置值;将多个合成可选值中最小的合成可选值确定为图层合成偏移量设置值。
15.在该实现方式中,将当前应用绘制渲染偏移量调整为多个渲染可选值中的最小的渲染可选值,将当前图层合成偏移量调整为多个合成可选值中最小的合成可选值,能够使得丢帧率最小,最大程度的提高显示效果。
16.一种可能的实现方式中,根据多个历史帧图像的应用绘制渲染时长和图层合成时长确定目标应用绘制渲染偏移量和目标图层合成偏移量之前,还包括:根据多个历史帧图像的应用绘制渲染时长和图层合成时长,确定多个历史帧图像的渲染合成时长的稳定度满足预设条件,且多个历史帧图像中的可调帧图像所占的比例大于预设比例;其中,渲染合成时长是指历史帧图像的应用绘制渲染时长与图层合成时长之和,可调帧图像是指渲染合成时长与初始应用绘制渲染偏移量之和小于一个垂直同步周期的历史帧图像,初始应用绘制渲染偏移量是指不进行偏移量调整时的应用绘制渲染偏移量。
17.在该实现方式中,多个历史帧图像的渲染合成时长的稳定度满足预设条件,且多个历史帧图像中的可调帧图像所占的比例大于预设比例也即偏移量调整条件。该实现方式中,满足偏移量调整条件的情况下进行偏移量的调整,保证了在帧图像的应用绘制渲染时长稳定且不易产生丢帧的情况下进行偏移量的调整,从而保证了偏移量调整后的图形显示效果。
18.一种可能的实现方式中,根据多个历史帧图像的应用绘制渲染时长和图层合成时长,确定多个历史帧图像的渲染合成时长的稳定度满足预设条件,且多个历史帧图像中的可调帧图像所占的比例大于预设比例,包括:根据多个历史帧图像的应用绘制渲染时长和图层合成时长计算多个历史帧图像的渲染合成时长的方差;根据多个历史帧图像的应用绘制渲染时长和图层合成时长、预设比例、垂直同步周期和初始应用绘制渲染偏移量计算方差阈值;若方差小于方差阈值,则确定多个历史帧图像的渲染合成时长的稳定度满足预设条件,且多个历史帧图像中的可调帧图像所占的比例大于预设比例。
19.在该实现方式中,将偏移量调整条件通过方差阈值表现,通过判断多个历史帧图像的渲染合成时长的方差与方差阈值的大小关系,简单、快捷且准确的确定是否满足偏移量设置条件。
20.一种可能的实现方式中,预设比例为0.9973。
21.在该实现方式中,将预设比例设置为0.9973,符合正态分布3σ准则,便于方差阈值的计算,且能够提高偏移量调整条件判断的准确性。
22.一种可能的实现方式中,根据多个历史帧图像的应用绘制渲染时长、预设比例、垂直同步周期和初始应用绘制渲染偏移量计算方差阈值,包括:
23.根据计算方差阈值,其中,σ
threshold
表示方差阈值,t
vsync
表示垂直同步周期,appoffset1表示初始应用绘制渲染偏移量,rctavg表示多个历史帧图像的渲染合成时长的平均值;渲染合成时长是指历史帧图像的应用绘制渲染时长与图层合成时长之和。
24.一种可能的实现方式中,方法应用于电子设备,电子设备包括垂直同步控制模块、垂直同步算法模块和设置模块;
25.垂直同步控制模块获取多个历史帧图像的应用绘制渲染时长和图层合成时长;
26.垂直同步控制模块确定多个历史帧图像的渲染合成时长的稳定度是否满足预设
条件,并确定多个历史帧图像中的可调帧图像所占的比例是否大于预设比例;
27.确定多个历史帧图像的渲染合成时长的稳定度满足预设条件,且多个历史帧图像中的可调帧图像所占的比例大于预设比例,垂直同步控制模块向垂直同步算法模块发送第一指示信息及多个历史帧图像的应用绘制渲染时长和图层合成时长,第一指示信息用于指示垂直同步算法模块计算目标应用绘制渲染偏移量和目标图层合成偏移量;
28.响应于接收第一指示信息,垂直同步算法模块基于多个历史帧图像的应用绘制渲染时长和图层合成时长,计算目标应用绘制渲染偏移量和目标图层合成偏移量;
29.垂直同步算法模块将目标应用绘制渲染偏移量和目标图层合成偏移量发送至设置模块;
30.设置模块基于目标应用绘制渲染偏移量对设置模块中的应用绘制渲染偏移量进行设置,并基于目标图层合成偏移量对设置模块中的图层合成偏移量进行设置;
31.确定多个历史帧图像的渲染合成时长的稳定度不满足预设条件,或多个历史帧图像中的可调帧图像所占的比例小于或等于预设比例,垂直同步控制模块向设置模块发送第二指示信息及初始应用绘制渲染偏移量和初始图层合成偏移量,第二指示信息用于指示设置模块基于初始应用绘制渲染偏移量对设置模块中的应用绘制渲染偏移量进行设置,并基于初始图层合成偏移量对设置模块中的图层合成偏移量进行设置;
32.响应于接收第二指示信息,设置模块基于初始应用绘制渲染偏移量对设置模块中的应用绘制渲染偏移量进行设置,并基于初始图层合成偏移量对设置模块中的图层合成偏移量进行设置。
33.一种可能的实现方式中,电子设备还包括应用绘制渲染模块、图层合成模块和偏移垂直同步生成模块;
34.偏移垂直同步生成模块接收垂直同步信号;
35.偏移垂直同步生成模块从设置模块中获取设置后的应用绘制渲染偏移量和设置后的图层合成偏移量;
36.偏移垂直同步生成模块基于垂直同步信号和设置后的应用绘制渲染偏移量生成绘制渲染同步信号,并基于垂直同步信号和设置后的图层合成偏移量生成合成同步信号;
37.偏移垂直同步生成模块将绘制渲染同步信号发送至应用绘制渲染模块,使得应用绘制渲染模块基于绘制渲染同步信号触发执行应用绘制渲染流程;
38.偏移垂直同步生成模块将合成同步信号发送至图层合成模块,使得图层合成模块基于合成同步信号触发执行图层合成流程。
39.第二方面,提供了一种显示参数的调整装置,包括:获取模块,用于获取多个历史帧图像的应用绘制渲染时长和图层合成时长;确定模块,用于根据多个历史帧图像的应用绘制渲染时长和图层合成时长确定目标应用绘制渲染偏移量和目标图层合成偏移量;目标应用绘制渲染偏移量是指触发对待显示帧图像执行应用绘制渲染流程的绘制渲染同步信号相对于垂直同步信号的偏移量;目标图层合成偏移量是指触发对待显示帧图像执行图层合成流程的合成同步信号相对于垂直同步信号的偏移量;多个历史帧图像中的理想帧图像的占比大于预设占比;理想帧图像是指当使用目标应用绘制渲染偏移量和目标图层合成偏移量时在一个垂直同步周期内完成应用绘制渲染流程和图层合成流程的历史帧图像;调整模块,用于根据目标应用绘制渲染偏移量调整当前应用绘制渲染偏移量,根据目标图层合
成偏移量调整当前图层合成偏移量。
40.第三方面,提供了一种电子设备,电子设备包括处理器,处理器用于与存储器耦合,并读取存储器中的指令并根据指令使得电子设备执行第一方面提供的方法。
41.第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行第一方面提供的方法。
42.第五方面,提供了一种芯片,芯片包括处理器,处理器用于与存储器耦合,并执行存储器中的计算机程序,以执行第一方面提供的方法。
43.第六方面,提供了一种包含指令的计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行第一方面提供的方法。
附图说明
44.图1为本技术实施例提供的电子设备的一种结构示意图;
45.图2为本技术实施例提供的电子设备的软件结构框图;
46.图3为vsync信号同时触发三个显示流程的一种显示示意图;
47.图4为对vsync信号进行偏移设置后分别触发三个显示流程的一种显示示意图;
48.图5为对vsync信号进行偏移设置后分别触发三个显示流程的另一种显示示意图;
49.图6为本技术实施例提供的方法所适用的显示系统架构图;
50.图7为本技术实施例提供的显示系统的各个模块进行信息交互的一种过程示意图;
51.图8为本技术实施例提供的显示参数的调整方法的一种流程示意图;
52.图9为本技术实施例提供的包含丢帧情况的一种图形显示流程图;
53.图10为本技术实施例提供的包含丢帧情况的另一种图形显示流程图;
54.图11为本技术实施例提供的偏移量调整后的一种显示示意图;
55.图12为本技术实施例提供的偏移量调整后的另一种显示流程示意图;
56.图13为本技术实施例提供的显示参数调整装置的一种结构示意图。
具体实施方式
57.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。其中,在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,在本技术实施例的描述中,“多个”是指两个或多于两个。
58.以下,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者更多个该特征。
59.本技术实施例提供的显示参数的调整方法,可以应用于含有内置的显示系统且支持vsync偏移量(offset)设置的电子设备。可选的,电子设备可以为台式计算机、笔记本电脑、平板电脑、掌上电脑、车载终端、销售终端、可穿戴设备及手机等。
60.示例性的,图1示出了电子设备100的结构示意图。电子设备100可以包括处理器
110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
61.可以理解的是,本技术实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
62.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
63.其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
64.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
65.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
66.i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。在一些实施例中,处理器110可以包含多组i2c总线。处理器110可以通过不同的i2c总线接口分别耦合触摸传感器180k,充电器,闪光灯,摄像头193等。例如:处理器110可以通过i2c接口耦合触摸传感器180k,使处理器110与触摸传感器180k通过i2c总线接口通信,实现电子设备100的触摸功能。
67.i2s接口可以用于音频通信。在一些实施例中,处理器110可以包含多组i2s总线。处理器110可以通过i2s总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过i2s接口向无线通信模块160传递音频信号,实
现通过蓝牙耳机接听电话的功能。
68.pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过pcm总线接口耦合。在一些实施例中,音频模块170也可以通过pcm接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述i2s接口和所述pcm接口都可以用于音频通信。
69.uart接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,uart接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过uart接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过uart接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
70.mipi接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。mipi接口包括摄像头串行接口(camera serial interface,csi),显示屏串行接口(display serial interface,dsi)等。在一些实施例中,处理器110和摄像头193通过csi接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过dsi接口通信,实现电子设备100的显示功能。
71.gpio接口可以通过软件配置。gpio接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,gpio接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。gpio接口还可以被配置为i2c接口,i2s接口,uart接口,mipi接口等。
72.usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。
73.可以理解的是,本技术实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本技术另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
74.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备100供电。
75.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
76.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
77.天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
78.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
79.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
80.无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
81.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),第五代无线通信系统(5g,the 5th generation of wireless communication system),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
82.电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲
染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
83.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。
84.电子设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
85.isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
86.摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,电子设备100可以包括1个或n个摄像头193,n为大于1的正整数。
87.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
88.视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
89.npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
90.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
91.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少
一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
92.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
93.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
94.扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170a收听音乐,或收听免提通话。
95.受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170b靠近人耳接听语音。
96.麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170c发声,将声音信号输入到麦克风170c。电子设备100可以设置至少一个麦克风170c。在另一些实施例中,电子设备100可以设置两个麦克风170c,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170c,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
97.耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,omtp)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the usa,ctia)标准接口。
98.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于显示屏194。压力传感器180a的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180a,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180a检测所述触摸操作强度。电子设备100也可以根据压力传感器180a的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
99.陀螺仪传感器180b可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180b确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180b可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180b检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180b还可以用于导航,体感游戏场景。
100.气压传感器180c用于测量气压。在一些实施例中,电子设备100通过气压传感器180c测得的气压值计算海拔高度,辅助定位和导航。
101.磁传感器180d包括霍尔传感器。电子设备100可以利用磁传感器180d检测翻盖皮
套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180d检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
102.加速度传感器180e可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
103.距离传感器180f,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180f测距以实现快速对焦。
104.接近光传感器180g可以包括例如发光二极管(led)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180g检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180g也可用于皮套模式,口袋模式自动解锁与锁屏。
105.环境光传感器180l用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180l也可用于拍照时自动调节白平衡。环境光传感器180l还可以与接近光传感器180g配合,检测电子设备100是否在口袋里,以防误触。
106.指纹传感器180h用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
107.温度传感器180j用于检测温度。在一些实施例中,电子设备100利用温度传感器180j检测的温度,执行温度处理策略。例如,当温度传感器180j上报的温度超过阈值,电子设备100执行降低位于温度传感器180j附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
108.触摸传感器180k,也称“触控面板”。触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
109.骨传导传感器180m可以获取振动信号。在一些实施例中,骨传导传感器180m可以获取人体声部振动骨块的振动信号。骨传导传感器180m也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180m也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180m获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180m获取的血压跳动信号解析心率信息,实现心率检测功能。
110.按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信
号输入。
111.马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
112.指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
113.sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口195可以支持nano sim卡,micro sim卡,sim卡等。同一个sim卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。sim卡接口195也可以兼容不同类型的sim卡。sim卡接口195也可以兼容外部存储卡。电子设备100通过sim卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用esim,即:嵌入式sim卡。esim卡可以嵌在电子设备100中,不能和电子设备100分离。
114.需要说明的是,本技术实施例提到的任一电子设备可以包括电子设备100中更多或者更少的模块。
115.电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本技术实施例以分层架构的android系统为例,示例性说明电子设备100的软件结构。
116.图2是本技术实施例的电子设备100的软件结构框图。
117.电子设备100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,以及内核层。
118.应用程序层可以包括一系列应用程序包。
119.如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。
120.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
121.如图2所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
122.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
123.内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
124.视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
125.电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,
挂断等)。
126.资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
127.通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
128.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
129.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
130.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
131.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
132.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
133.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
134.三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
135.2d图形引擎是2d绘图的绘图引擎。
136.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动,wi-fi驱动等。
137.下面对上述电子设备100的显示系统以及相关技术中的显示方法进行说明。
138.显示系统用于响应用户通过应用发送的视图更新请求,根据视图更新请求获取待显示帧图像的相关数据,并将待显示帧图像的相关数据按照显示流水线进行处理,向用户呈现显示界面。显示流水线主要包括绘制渲染流程、图层合成流程和送显流程。也就是说,对于某一帧图像而言,需要显示系统依次执行绘制渲染流程、图层合成流程和送显流程后才能显示于显示屏。其中,绘制渲染流程可以通过应用实现,因此也称为应用绘制渲染流程。图层合成流程可以通过显示合成进程实现,例如,通过surfaceflinger实现图层合成,也称为surfaceflinger图层合成流程。送显流程通过硬件(hardaware)实现,因此也称为硬件送显流程。以下实施例中均以图层合成通过surfaceflinger实现为例进行说明。为了便于说明,以下描述中,surfaceflinger图层合成简称为surfaceflinger合成,surfaceflinger图层合成流程简称为surfaceflinger合成流程。同时,需要说明的是,显示系统中,surfaceflinger还用于接收用户通过应用发送的视图更新请求或用于实现其他功能。
139.具体的,应用绘制渲染流程是指获取多个待显示图层数据,对多个待显示图层数
据进行绘制和渲染处理,生成多个图层。surfaceflinger合成流程是指对应用绘制渲染流程生成的多个图层进行合成,并进行硬件混合渲染(hardware compose,hwc),生成待显示帧图像。硬件送显流程是指将surfaceflinger合成流程生成的待显示帧图像进行硬件显示处理,并推送至显示屏。
140.为了保证显示的流畅性,避免出现显示卡顿等现象,显示系统一般基于vsync信号进行显示,以对显示流水线中的三个流程进行同步。可以理解,vsync信号为周期性信号,vsync周期可以根据显示屏的刷新率进行设置,例如,显示屏的刷新率为60hz时,vsync周期可以为16.6ms,即显示系统每间隔16.6ms生成一个控制信号使vsync周期触发。
141.相关技术中,显示系统基于vsync信号进行显示的一种实现方式为,vsync信号同时触发应用绘制渲染流程、surfaceflinger合成流程和硬件送显流程。示例性的,图3为vsync信号同时触发三个显示流程的一种显示示意图。如图3所示,若用户通过应用向surfaceflinger发送的视图更新请求,请求显示第4帧图像,surfaceflinger在第n个vsync周期的起始时刻之后,在第n+1个vsync周期的起始时刻或之前的任一时刻接收到该视图更新请求,即surfaceflinger在图3中的时间段a(不包含端点)中的任一时刻或时刻a接收到该视图更新请求。则,在第n+1个vsync周期的起始时刻,应用启动应用绘制渲染流程,开始对第4帧图像进行应用绘制渲染。同时,surfaceflinger启动surfaceflinger合成流程,开始对第3帧图像进行surfaceflinger合成,且硬件启动硬件送显流程,开始对第2帧图像进行硬件送显。硬件送显流程完成后,显示屏对第2帧图像进行显示。
142.同理,若surfaceflinger在第n+1个vsync周期的起始时刻之后,在第n+2个vsync周期的起始时刻或之前的任一时刻,即图3中的时间段b(不包含端点)中的任一时刻或时刻b,接收到第5帧图像的视图更新请求。则在第n+2个vsync周期的起始时刻,应用启动应用绘制渲染流程,开始对第5帧图像进行应用绘制渲染,同时,surfaceflinger启动surfaceflinger合成流程,开始对第4帧图像进行surfaceflinger合成,且硬件启动硬件送显流程,开始对第3帧图像进行硬件送显。硬件送显流程完成后,显示屏对第3帧图像进行显示。以此类推。
143.从图3可以看出,显示系统基于vsync信号进行显示能够实现显示流水线中各个流程延迟时间的一致,减少了应用绘制渲染流程和surfaceflinger合成流程中的错误,减少了显示卡顿等现象。然而,由图3可见,对于每一帧图像,从开始应用绘制渲染到硬件送显至少需要经过2个vsync周期。例如,第4帧图像在第n+1个vsync周期开始应用绘制渲染,至少需要在第n+3个vsync周期才能进行显示,图形显示效率有待提升。
144.进一步的,结合视图更新请求时间和硬件送显时长来分析:
145.硬件送显时长较短,一般为2ms左右。若surfaceflinger接收到第4帧图像的视图更新请求的时刻刚好为第n+1个vsync周期起始时刻,即图3中的a时刻。那么,从surfaceflinger接收到视图更新请求到硬件送显的时间,与从开始应用绘制渲染到硬件送显的时间相同,需要2个vsync周期,如图3中的时间段c。进一步的,从surfaceflinger接收到视图更新请求到显示屏中显示第4帧图像需要2个周期+2ms,如图3中的时间段d。因此,可以看出,显示系统对于第4帧图形的显示,总的延迟时间(即从接收到视图更新请求到显示屏中显示该帧图像的时间)大于2个vsync周期。
146.若surfaceflinger接收到第4帧图像的视图更新请求的时刻在第n+1个vsync周期
起始时刻之前,且在n个vsync周期起始时刻之的任一时刻,即图3中的时间段a(不包含端点)中的任一时刻,则第4帧图像的应用绘制渲染流程需要等到第n+1个vsync周期的起始时刻开始执行。以第4帧图像的视图更新请求时刻为图3中的c时刻为例,从surfaceflinger接收到视图更新请求到硬件送显的时间,比从开始应用绘制渲染到硬件送显的时间更长,需要2个vsync周期+第n+1个vsync周期的起始时刻a与视图更新请求时刻c之差,如图3中的时间段e。进一步的,从surfaceflinger接收到视图更新请求到显示屏中显示第4帧图像需要2个vsync周期+2ms+第n+1个vsync周期的起始时刻a与视图更新请求时刻c之差,如图3中的时间段f。因此,可以看出,显示系统对于第4帧图像的显示延迟大于2个vsync周期。
147.总而言之,相关技术中,显示系统通过vsync信号同时触发显示流水线中的三个流程,每一帧图像从surfaceflinger接收到视图更新请求到硬件送显至少需要2个vsync周期,且每一帧图像的显示,总的延迟时间大于2个vsync周期,图形显示效率较差,触控响应较慢。
148.相关技术中,为了减少帧图像显示的延迟,显示系统通过surfaceflinger对vsync信号进行偏移设置,生成绘制渲染同步(以下简称app_vsync)信号和合成同步(以下简称sf_vsync)信号,通过app_vsync信号、sf_vsync信号和vsync信号分别触发应用绘制渲染流程、surfaceflinger合成流程和硬件送显流程。
149.示例性的,图4为对vsync信号进行偏移设置后分别触发三个显示流程的一种显示示意图。如图4所示,surfaceflinger将vsync信号偏移应用绘制渲染偏移量appoffset后,生成app_vsync信号。同时,surfaceflinger将vsync信号偏移surfaceflinger合成偏移量sfoffset后,生成sf_vsync信号。相关技术中,对appoffset和sfoffset的取值不做限定,appoffset时长和sfoffset时长可以相同,也可以不同。但是,相关技术的显示系统执行显示流程过程中,appoffset和sfoffset值固定。可以理解,通过偏移设置得到的app_vsync信号也为周期信号,且app_vsync周期与vsync周期相同,但是每个app_vsync周期的起始时刻相对于对应的vsync周期的起始时刻,延迟appoffset时长。同理,通过偏移设置得到的sf_vsync信号也为周期信号,且sf_vsync周期与vsync周期相同,但是每个sf_vsync周期的起始时刻相对于对应的vsync周期的起始时刻延迟sfoffset时长。
150.如图4所示,surfaceflinger在第n个app_vsync周期的起始时刻之后,在第n+1个app_vsync周期的起始时刻或之前的任一时刻接收到第4帧图像的视图更新请求,即surfaceflinger在图4中的时间段g(不包含端点)中的任一时刻或时刻d接收到第4帧图像的视图更新请求。则,硬件在第n+1个vsync周期的起始时刻,启动硬件送显流程,开始对第2帧图像进行送显,且硬件送显流程完成后,显示屏对第2帧图像进行显示。在第n+1个vsync周期的起始时刻之后延迟appoffset时长的时刻,即在第n+1个app_vsync周期的起始时刻(如图4中的时刻d),应用启动应用绘制渲染流程,开始对第4帧图像进行应用绘制渲染。在第n+1个vsync周期的起始时刻之后延迟sfoffset时长的时刻,即在第n+1个sf_vsync周期的起始时刻(如图4中的时刻e),surfaceflinger启动surfaceflinger合成流程,开始对第3帧图像进行surfaceflinger合成。
151.同理,surfaceflinger在第n+1个app_vsync周期的起始时刻之后,在第n+2个app_vsync周期的起始时刻或之前的任一时刻接收到第5帧图像的视图更新请求,即surfaceflinger图4中的时间段h(不包含端点)中的任一时刻或时刻f接收到第5帧图像的
视图更新请求。则硬件在第n+2个vsync周期的起始时刻,启动硬件送显流程,开始对第3帧图像进行送显,且硬件送显流程完成后,显示屏对第3帧图像进行显示。在第n+2个vsync周期的起始时刻之后延迟appoffset时长的时刻,即在第n+2个app_vsync周期的起始时刻(如图4中的时刻f),应用启动应用绘制渲染流程,开始对第5帧图像进行应用绘制渲染。在第n+2个vsync周期的起始时刻之后延迟sfoffset时长的时刻,即在第n+2个sf_vsync周期的起始时刻(如图4中的时刻g),surfaceflinger启动surfaceflinger合成流程,开始对第4帧图像进行surfaceflinger合成。以此类推。
152.从图4可以看出,当surfaceflinger在第n个app_vsync周期的起始时刻之后,在第n+1个app_vsync周期的起始时刻或之前的任一时刻接收到第4帧图像的视图更新请求,即在图4中的时间段g中的任一时刻或时刻d接收到第4帧图像的视图更新请求,则由于该视图更新请求的时刻错过了第n个app_vsync周期的起始时刻h,因此应用不能在第n个app_vsync周期执行应用绘制渲染流程,需要等到第n+1个app_vsync周期的起始时刻d开始执行对第4帧图像的应用绘制渲染流程,显示延迟与图3方案中的显示延迟一致。以surfaceflinger在图4中的o时刻接收到视图更新请求为例,从接收到视图更新请求到硬件送显的时间,仍需要2个app_vsync周期+第n+1个app_vsync周期的起始时刻d与视图更新请求时刻o之差,如图4中的时间段i。进一步的,从接收到视图更新请求到显示屏中显示第4帧图像需要2个app_vsync周期+2ms+第n+1个app_vsync周期的起始时刻d与视图更新请求时刻o之差,如图4中的时间段j。因此,可以看出,图4中显示系统对于第4帧图像的显示,总的延迟时间仍大于2个vsync周期。
153.示例性的,图5为对vsync信号进行偏移设置后分别触发三个显示流程的另一种显示示意图。如图5所示,当surfaceflinger在第n个vsync周期的起始时刻之后,在第n个app_vsync周期的起始时刻或之前的任一时刻,即图5中的时间段k(不包含端点)中的任一时刻或时刻j,接收到第4帧图像的视图更新请求,则第4帧图像能够在第n个app_vsync周期的起始时刻h开始执行应用绘制渲染流程,而不需要等到第n+1个app_vsync周期的起始时刻d开始执行对第4帧图像的应用绘制渲染流程。以surfaceflinger在图5中的i时刻surfaceflinger接收到第4帧图像的视图更新请求为例,从接收到视图更新请求到硬件送显需要2个app_vsync周期+第n+1个app_vsync周期的起始时刻h与视图更新请求时刻i之差,如图5中的时间段l。进一步的,从接收到视图更新请求到显示屏中显示第4帧图像需要2个app_vsync周期+2ms+第n+1个app_vsync周期的起始时刻h与视图更新请求时刻i之差,如图5中的时间段m。可以看出,图5中的时间段l小于图4中的时间段i,图5中的时间段m小于图4中的时间段j。因此,相较于图4,当surfaceflinger在第n个vsync周期的起始时刻之后,在第n个app_vsync周期的起始时刻或之前的任一时刻接收到视图更新请求,待显示帧图像能够在第n个vsync周期开始应用绘制渲染,不需等到第n+1个vsync周期,因此在一定程度上能够减少帧图像显示的延迟。
154.然而,图5中所示的显示方法,对于每一帧图像,从开始应用绘制渲染到硬件送显仍然至少需要经过2个vsync周期,且每一帧图像的显示,总的延迟时间仍然大于2个vsync周期,图形显示效率仍然有待提升,触控响应仍然较慢。
155.随着业界电子设备性能的快速提升,显示系统对于一帧图像进行应用绘制渲染处理和surfaceflinger合成处理所需的时间逐渐缩短。多数情况下,显示系统完成一帧图像
的应用绘制渲染流程和surfaceflinger合成流程不需要一个vsync周期。针对于此,本技术实施例提供一种显示参数的调整方法,通过对应用绘制渲染偏移量和surfaceflinger合成偏移量进行动态的调整,使得至少部分帧图像能够达到理想状态,理想状态是指同一帧图像的应用绘制渲染流程和surfaceflinger合成流程在同一vsync周期内完成,从而使得帧图像的显示总的延迟时间减少至少一个vsync周期,提高图形显示效率。
156.示例性的,图6为本技术实施例提供的方法所适用的显示系统架构图。如图6所示,显示系统可以包括应用绘制渲染模块501、图层合成模块502、硬件送显单元503、垂直同步控制(vsynccontrol)模块(以下称vsync控制模块)504、垂直同步算法(vsyncdetectalgorithm)模块(以下称vsync算法模块)505、设置模块506、偏移垂直同步生成模块(以下称偏移vsync生成模块)508、显示屏507和显示硬件509。
157.其中,应用绘制渲染模块501为应用中的功能模块,属于应用程序层。图层合成模块502、vsync控制模块504和vsync算法模块505、设置模块506和偏移vsync生成模块508为surfaceflinger中的功能模块。其中,图层合成模块502、设置模块506和偏移vsync生成模块508属于应用程序架构层。vsync控制模块504和vsync算法模块505属于系统库。具体的,vsync控制模块504和vsync算法模块505属于本地(native)层。硬件送显单元503、显示屏507和显示硬件50为硬件中的功能模块,属于硬件层。具体实现时,应用程序架构层的设置模块506可以通过触摸服务接口(itouchserviceinteface)(图6中未示出)与系统库中的vsync算法模块505实现数据交互。可选的,设置模块506可以包括surfaceflinger调用(surfaceflingerbinder)、事件线程(event thread)和显示同步线程(displaysyncthread)等单元(图6中未示出)。
158.需要说明的是,本技术实施例提到的显示系统可以包括上述显示系统中更多或者更少的模块。例如,显示系统还可以包括存储器、计时器等。
159.示例性的,图7为一个实施例中,显示系统的各个模块进行信息交互的过程示意图。具体的,如图7所示,手机开机后,vsync控制模块504可以获取历史帧图像显示相关的参数,并根据历史帧图像显示相关的参数确定是否进行偏移量调整。示例性的,可以在手机运行一段时间(如3s)后,vsync控制模块504执行获取历史帧图像显示相关的参数。历史帧图像显示相关的参数包括但不限于历史帧图像的应用绘制渲染时长和surfaceflinger合成时长。偏移量调整是指将当前偏移量调整为新的偏移量,包括将当前应用绘制渲染偏移量调整为新的应用绘制渲染偏移量,以及将当前surfaceflinger合成偏移量调整为新的surfaceflinger合成偏移量。若需要进行偏移量调整,则vsync控制模块504向vsync算法模块505发送历史帧图像显示相关的参数,以及指示vsync算法模块505计算偏移量的第一指示信息。vsync算法模块505接收到vsync控制模块504发送的第一指示信息,根据历史帧图像的应用绘制渲染时长和surfaceflinger合成时长计算新的应用绘制渲染偏移量和新的surfaceflinger合成偏移量。vsync算法模块505将计算得到的新的应用绘制渲染偏移量和新的surfaceflinger合成偏移量发送至设置模块506。设置模块506根据新的应用绘制渲染偏移量和新的surfaceflinger合成偏移量对设置模块506中的系统参数中的偏移量进行设置,其中,偏移量包括应用绘制渲染偏移量和surfaceflinger合成偏移量。可以理解,系统参数中的偏移量可以具有一个默认值,设置模块506第一次设置之前,系统参数中的偏移量为该默认值。若vsync控制模块504判断不需要进行偏移量调整,则vsync控制模块504向设
置模块505发送初始偏移量和指示设置模块505将偏移量设置为初始偏移量的第二指示信息。初始偏移量可以包括初始应用绘制渲染偏移量和初始surfaceflinger合成偏移量。设置模块506接收到vsync控制模块504发送的第二指示信息,将设置模块506中的系统参数中的偏移量设置为初始偏移量。在一种可能的实现方式中,初始偏移量可以为设置模块506中的系统参数中的偏移量的默认值。同时,在一种可能的案方式中,若当前时刻设置模块506中的系统参数中的偏移量为初始偏移量,则设置模块506接收到vsync控制模块504发送的第二指示信息后,可以保持系统参数中的偏移量设置为初始偏移量,不需要再重新设置。
160.显示硬件509产生周期性vsync信号,并将vsync信号分发至硬件送显单元503和偏移vsync生成模块508。偏移vsync生成模块508从设置模块506的系统参数中获取设置后的偏移量,并基于vsync信号和设置后的偏移量生成app_vsync信号和sf_vsync信号。偏移vsync生成模块508将生成的app_vsync信号发送至应用绘制渲染模块501,将生成的sf_vsync信号发送至图层合成模块502。应用绘制渲染模块501根据app_vsync信号触发执行应用绘制渲染流程。然后应用绘制渲染模块501将绘制渲染后的帧图像发给图层合成模块502。图层合成模块502根据sf_vsync信号触发执行surfaceflinger合成流程。然后图层合成模块502将合成后的帧图像发送给硬件送显单元503,硬件送显单元503根据vsync信号触发执行硬件送显流程。硬件送显单元503将帧图像推送至显示屏507。显示屏507对帧图像进行显示。
161.下面通过具体的实施例对本技术涉及的显示参数的调整方法进行详细说明。下面的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
162.图8为本技术实施例提供的显示参数的调整方法的一种流程示意图,该方法可以应用于如图6所示的显示系统中。如图8所示,本实施例提供的显示参数的调整方法,可以包括:
163.s601、vsync控制模块获取多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长。
164.其中,历史帧图像是指当前时刻之前完成应用绘制渲染流程和surfaceflinger合成流程的帧图像。应用绘制渲染时长是指对一帧历史帧图像执行应用绘制渲染流程的时长。surfaceflinger合成时长是指对一帧历史帧图像执行surfaceflinger合成流程的时长。
165.可选的,vsync控制模块可以预先设置计算周期,选取当前时刻之前一个或多个计算周期内的帧图像作为历史帧图像。例如,可以以3s为计算周期,将当前时刻之前1个3s内的帧图像确定为历史帧图像。假设当前时刻之前3s内共完成100帧图像的应用绘制渲染流程和surfaceflinger合成流程,则分别获取这100帧图像的应用绘制渲染时长和surfaceflinger合成时长。
166.可以理解,显示系统各个模块在执行显示流水线中的各个流程时,均可以对执行该流程所花费的时长进行计算和保存。具体的,应用绘制渲染模块对某一帧图像执行应用绘制渲染流程的同时,可以计算该帧图像的应用绘制渲染时长,并将该帧图像的应用绘制渲染时长存储于存储器中。同样的,图层合成模块对某一帧图像执行应用绘制渲染的同时,也可以计算该帧图像的surfaceflinger合成时长,并将该帧图像的surfaceflinger合成时长存储于存储器中。可选的,应用绘制渲染模块和图层合成模块可以分别将各个帧图像的
应用绘制渲染时长和surfaceflinger合成时长保存于存储器中预设的列表中,预设的列表例如可以为渲染合成时长变量(rc frametimevar)列表。vsync控制模块可以从存储器中获取rc frame time var列表,并在rc frametimevar列表查询所需的多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长。
167.s602、vsync控制模块根据多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长判断是否满足偏移量调整条件。偏移量调整条件用于表征多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长之和的稳定度满足预设条件,且多个历史帧图像中的可调帧图像所占的比例大于预设比例,可调帧图像是指渲染合成时长与初始应用绘制渲染偏移量之和小于一个vsync周期的历史帧图像。
168.若满足偏移量调整条件,则vsync控制模块向vsync算法模块发送多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长,以及指示vsync算法模块计算偏移量的第一指示信息。vsync算法模块响应该第一指示信息,执行步骤s603和s604。
169.若不满足偏移量调整条件,则vsync控制模块向设置模块发送初始偏移量和指示设置模块将偏移量设置为初始偏移量的第二指示信息,设置模块响应于该第二指示信息,执行步骤s605。
170.为了便于描述,下述将同一帧图像的应用绘制渲染时长和surfaceflinger合成时长之和简称为渲染合成时长(render composer time)。
171.可以理解,对于不同的帧图像,应用绘制渲染时长不总是相同,surfaceflinger合成时长也不总是相同,因而渲染合成时长也不总是相同。且在不同的应用场景下,渲染合成时长的稳定程度也不同。例如,对游戏界面进行显示时,游戏不同阶段的帧图像的渲染合成时长的稳定程度不同。其中,游戏加载过程中和游戏对战过程中,帧图像的渲染合成时长较稳定,波动性较小。但是,游戏加载后未进入对战之前,帧图像的渲染合成时长较不稳定,波动性较大。针对于此,本技术实施例通过判断历史帧图像的渲染合成时长的稳定性来预测待显示帧图像的渲染合成时长的稳定性。
172.具体的,上述稳定度用于表征多个历史帧图像的渲染合成时长的稳定性。稳定度满足预设条件表征多个历史帧图像的渲染合成时长稳定,波动小较小。可选的,可以通过方差等参数来表征多个历史帧图像的渲染合成时长的稳定度,本技术对此不作任何限定。
173.同时,为了在本技术实施例中实现在一个vsync周期内完成对同一待显示帧图像的应用绘制渲染流程和surfaceflinger合成流程,且避免待显示帧图像的丢帧,可以通过vsync控制模块判断历史帧图像中可调帧图像所占的比例来预测待显示帧图像的丢帧情况。具体的,将渲染合成时长与初始应用绘制渲染偏移量之和小于一个vsync周期的帧图像定义为可调帧图像。其中,初始应用绘制渲染偏移量是指不进行本技术提供的方法中s603相关的偏移量调整时的应用绘制渲染偏移量。对应的,也可以存在初始surfaceflinger合成偏移量。初始surfaceflinger合成偏移量是指不进行本技术提供的方法中s603相关的偏移量调整时的surfaceflinger合成偏移量。可选的,初始应用绘制渲染偏移量和初始surfaceflinger合成偏移量可以为设置模块中的系统参数中偏移量的默认值。当然,初始应用绘制渲染偏移量和初始surfaceflinger合成偏移量也可以根据需求进行预先设置。在一个具体的实施例中,初始应用绘制渲染偏移量和初始surfaceflinger合成偏移量可以均为1ms。在另一个具体的实施例中,初始surfaceflinger合成偏移量可以为1ms,初始
surfaceflinger合成偏移量可以为3ms。
174.可以理解,当某一帧图像的渲染合成时长与初始应用绘制渲染偏移量的和小于一个vsync周期时,通过设置应用绘制渲染偏移量和surfaceflinger合成偏移量,能够使该帧图像的surfaceflinger合成流程在应用绘制渲染流程结束时刻或该时刻之后启动,并在下一个vsync周期的开始时刻之前结束。如此,该帧图像能够在一个vsync周期内完成应用合成渲染和surfaceflinger合成,下一个vsync周期的起始时刻开始执行对该帧图像的硬件送显流程,不出现丢帧现象,减少了应用绘制渲染流程和surfaceflinger合成流程占用的vsync周期,提高了图形显示效率。
175.相反的,当某一帧图像的渲染合成时长与初始应用绘制渲染偏移量的总和大于或等于一个vsync周期,则无论如何调整偏移量都不能够使该帧图像在一个vsync周期内完成应用合成渲染和surfaceflinger合成,进而不能在下一个vsync周期的起始时刻执行硬件送显流程,会出现丢帧现象。
176.示例性的,图9为一个实施例中包含丢帧情况的图形显示流程图。如图9所示,在第n+1个vsync周期中,第4帧图像的应用绘制渲染时长较长,导致第4帧图像的渲染合成时长与初始应用绘制渲染偏移量appoffset1的总和大于一个vsync周期。sf_vsync信号到来时,surfaceflinger合成流程启动,此时第4帧图像的应用绘制渲染流程还未结束,因此,surfaceflinger合成无数据处理,无法合成第4帧图像(参见图9中的虚线框),从而使得第n+2个vsync周期到来时硬件送显无数据处理,无法向显示屏推送图像,显示屏中维持显示第3帧图像,导致第4帧图像丢帧。
177.示例性的,图10为另一个实施例中包含丢帧情况的图形显示流程图。如图10所示,在第n+1个vsync周期中,第4帧图像的surfaceflinger合成时长较长,导致第4帧图像的渲染合成时长与初始应用绘制渲染偏移量appoffset1的总和大于一个vsync周期。第n+2个vsync周期到来时,硬件送显流程启动,此时第4帧图像的surfaceflinger合成流程还未结束,因此,硬件送显无数据处理,无法向显示屏推送图像(参见图10中的虚线框),显示屏中维持显示第3帧图像,导致第4帧图像丢帧。
178.本实施例中,若历史帧图像的渲染合成时长稳定度满足预设条件,且可调帧图像所占的比例超过预设比例,则确定满足偏移量调整条件,预测待显示帧图像的渲染合成时长稳定,且进行偏移量调整后丢帧情况较少。
179.作为一种实现方式,若步骤s601中vsync控制模块选取当前时刻之前一个计算周期内的帧图像作为历史帧图像,则vsync控制模块可以通过判断该计算周期的帧图像是否满足偏移量调整条件,来预测当前时刻之后一个周期的待显示帧图像的稳定度和不丢帧情况。例如,假设一个计算周期为3s,vsync控制模块选取当前时刻之前3s内共100帧图像作为历史帧图像,通过这100帧历史帧图像确定是否满足偏移量调整条件。若满足偏移量调整条件,则预测当前时刻之后3s内的待显示帧图像的渲染合成时长稳定,且进行偏移量调整后丢帧情况较少;否则,预测当前时刻之后3s内的待显示帧图像的渲染合成时长不稳定,且进行偏移量调整后丢帧情况较多。
180.s603、vsync算法模块根据多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长确定目标应用绘制渲染偏移量和目标surfaceflinger合成偏移量。其中,历史帧图像中的理想帧图像的占比大于预设占比。理想帧图像是指当使用目标应
用绘制渲染偏移量和目标surfaceflinger合成偏移量时,能够在一个vsync周期内完成应用绘制渲染流程和surfaceflinger合成流程的历史帧图像。
181.目标应用绘制渲染偏移量是指触发对待显示帧图像执行应用绘制渲染流程的app_vsync信号相对于vsync信号的偏移量。目标surfaceflinger合成偏移量是指触发对待显示帧图像执行surfaceflinger合成流程的sf_vsync信号相对于vsync信号的偏移量。
182.若在s602中vsync控制模块确定当前满足偏移量调整条件,说明历史帧图像的渲染合成时长稳定,则预测待显示帧图像的渲染合成时长也稳定,且预测待显示帧图像的渲染合成时长与历史帧图像的渲染合成时长接近。因此,本实施例中,vsync算法模块基于多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长确定待显示帧图像对应的目标应用绘制渲染偏移量和目标surfaceflinger合成偏移量。
183.具体的,理想帧图像也即应用绘制渲染流程的开始时刻和surfaceflinger合成流程的开始时刻处于同一vsync周期内,且不丢帧的帧图像。历史帧图像中的理想帧图像的占比大于预设占比,用于表征目标应用绘制渲染偏移量和目标surfaceflinger合成偏移量下,历史帧图像中多数帧图像能够在一个vsync周期内完成应用绘制渲染流程和surfaceflinger合成流程。
184.可选的,vsync算法模块可以通过遍历一定范围内的应用绘制渲染偏移量和surfaceflinger合成偏移量,寻找目标应用绘制渲染偏移量和目标surfaceflinger合成偏移量。具体的,在保证应用绘制渲染流程的开始时刻和surfaceflinger合成流程的开始时刻处于同一vsync周期内的前提下,vsync算法模块根据某一组设定的应用绘制渲染偏移量和surfaceflinger合成偏移量,结合步骤s601vsync控制模块得到的历史帧图像的应用绘制渲染时长和surfaceflinger合成时长,vsync算法模块能够确定出每个历史帧图像是否丢帧,将不丢帧的历史帧图像确定为理想帧图像,进而根据丢帧情况确定理想帧图像的占比。
185.s604、设置模块根据目标应用绘制渲染偏移量调整当前应用绘制渲染偏移量,并根据目标surfaceflinger合成偏移量调整当前surfaceflinger合成偏移量。其中,当前应用绘制渲染偏移量是指当前时刻的应用绘制渲染偏移量。当前surfaceflinger合成偏移量是指当前时刻的surfaceflinger合成偏移量。
186.作为一种可选的实施方式,vsync算法模块可以直接将目标应用绘制渲染偏移量作为最终的应用绘制渲染偏移量设置值发送至设置模块,设置模块将当前应用绘制渲染偏移量设置为目标应用绘制渲染偏移量。同样的,vsync算法模块直接将目标surfaceflinger合成偏移量作为最终的surfaceflinger合成偏移量设置值发送至设置模块,设置模块将当前surfaceflinger合成偏移量设置为目标surfaceflinger合成偏移量。
187.作为一种可选的实施方式,vsync算法模块也可以对步骤s603得到的目标应用绘制渲染偏移量进行一定的计算,得到最终的应用绘制渲染偏移量设置值并发送至设置模块,设置模块再将当前应用绘制渲染偏移量调整为最终的应用绘制渲染偏移量设置值。同样的,vsync算法模块对步骤s603得到的目标surfaceflinger合成偏移量进行一定的计算,得到最终的surfaceflinger合成偏移量设置值并发送至设置模块,设置模块再将当前surfaceflinger合成偏移量调整为最终的surfaceflinger合成偏移量设置值。
188.示例性的,图11为一个实施例中将当前应用绘制渲染偏移量调整为目标应用绘制
渲染偏移量,将当前surfaceflinger合成偏移量调整为目标surfaceflinger合成偏移量后的显示示意图。如图11所示,在第n个vsync周期中,应用绘制渲染流程中的虚线框表示初始应用绘制渲染偏移量appoffset1下,第3帧图像的处理时间,surfaceflinger合成流程中的虚线框表示初始surfaceflinger合成偏移量sfoffset1下第3帧图像的处理时间。
189.由图11可以看出,若偏移vsync生成模块通过初始应用绘制渲染偏移量appoffset1生成app_vsync信号,偏移vsync生成模块通过初始surfaceflinger合成偏移量sfoffset1生成的sf_vsync信号,则以第n个vsync周期为例,第3帧图像的应用绘制渲染流程还未执行完成,就需要开始执行surfaceflinger合成流程。为了保证不丢帧,应用绘制渲染模块需要在第n个vsync周期起始时刻之后appoffset1时长,执行对第3帧图像的应用绘制渲染流程,图层合成模块在第n个vsync周期起始时刻之后sfoffset1时长,执行对第2帧图像的surfaceflinger合成流程,第3帧图像从开始应用绘制渲染到硬件送显需要2个vsync周期。
190.而vsync算法模块通过步骤s603生成目标应用绘制渲染偏移量appoffsett和目标surfaceflinger合成偏移量sfoffsett,从而使得偏移vsync生成模块通过目标应用绘制渲染偏移量appoffsett生成app_vsync信号,通过目标surfaceflinger合成偏移量sfoffsett生成的sf_vsync信号,使得图层合成模块能够在应用绘制渲染流程结束之后开始执行对第3帧图像的surfaceflinger合成流程,从而使得第3帧图像的应用绘制渲染和surfaceflinger合成能够在一个vsync周期内完成。
191.s605、设置模块根据初始应用绘制渲染偏移量调整当前应用绘制渲染偏移量,并根据初始surfaceflinger合成偏移量调整当前surfaceflinger合成偏移量。
192.若在s602中vsync控制模块确定当前不满足偏移量调整条件,说明历史帧图像的渲染合成时长不稳定,和/或,历史帧图像中的可调帧图像所占的比例小于或等于预设比例,则预测待显示帧图像的渲染合成时长不稳定,和/或预测待显示帧图像的渲染合成时长与初始应用绘制渲染偏移量之和大于一个vsync周期,可能造成丢帧。因此,vsync控制模块向设置模块发送初始应用绘制渲染偏移量、初始surfaceflinger合成偏移量和第二指示信息。设置模块响应于接收第二指示信息,根据初始应用绘制渲染偏移量调整当前应用绘制渲染偏移量,并根据初始surfaceflinger合成偏移量调整当前surfaceflinger合成偏移量,避免造成帧影响图形显示效果。
193.作为一种可选的实施方式,设置模块可以直接将当前应用绘制渲染偏移量调整为初始应用绘制渲染偏移量,并直接将当前图层合成偏移量调整为初始图层合成偏移量。
194.作为一种可选的实施方式,设置模块也可以对初始应用绘制渲染偏移量进行一定的计算,将当前应用绘制渲染偏移量调整为计算后得到的应用绘制渲染偏移量。同时,设置模块也可以对初始surfaceflinger合成偏移量进行一定的计算,将当前surfaceflinger合成偏移量调整为计算后得到的surfaceflinger合成偏移量。
195.在一个实施例中,步骤s605之前,还可以包括:设置模块判断当前应用绘制渲染偏移量是否等于初始应用绘制渲染偏移量,且当前surfaceflinger合成偏移量是否等于初始surfaceflinger合成偏移量。若是,则设置模块保持当前应用绘制渲染偏移量和当前surfaceflinger合成偏移量不变;若否,则执行步骤s605。
196.s606、根据调整后的应用绘制渲染偏移量和surfaceflinger合成偏移量控制对待
显示帧图像的绘制渲染、合成和显示。
197.偏移vsync生成模块根据显示硬件分发的vsync信号以及调整后的应用绘制渲染偏移量生成app_vsync信号,并将该app_vsync信号发送至应用绘制渲染模块。应用绘制渲染模块通过该app_vsync信号触发对待显示帧图像的应用绘制渲染流程。同时,偏移vsync生成模块根据调整后的surfaceflinger合成偏移量生成sf_vsync信号,并将该app_vsync信号发送至图层合成模块。图层合成模块通过该sf_vsync信号触发对待显示帧图像的surfaceflinger合成流程。另外,硬件送显单元通过显示硬件分发的vsync信号触发对待显示帧图像的硬件送显流程。如此,实现对待显示帧图像的显示。
198.可见,本实施例提供的显示参数的调整方法,通过获取多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长,并根据多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长确定目标应用绘制渲染偏移量和目标surfaceflinger合成偏移量,该目标应用绘制渲染偏移量和目标surfaceflinger合成偏移量下,历史帧图像中的理想帧图像的占比大于预设占比。历史帧图像的应用绘制渲染时长和surfaceflinger合成时长情况能够表征待显示帧图像的应用绘制渲染时长和surfaceflinger合成时长情况。因此,根据目标应用绘制渲染偏移量和目标surfaceflinger合成偏移量调整当前应用绘制渲染偏移量和当前surfaceflinger合成偏移量后,能够使得部分待显示帧图像的应用绘制渲染和surfaceflinger合成在一个vsync周期内完成,从而能够在下一个vsync周期的开始时刻开始硬件送显,一帧图像从应用绘制渲染到硬件送显仅需要一个vsync周期,能够压缩帧图像的显示处理时间,减少了显示延迟,提高了图形显示效率,提高触控响应。
199.而且,本实施例提供的显示参数的调整方法,根据多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长判断是否满足偏移量调整条件,在确定满足偏移调整条件后才进行偏移量的调整,从而保证了在帧图像的应用绘制渲染时长稳定且不易产生丢帧的情况下进行偏移量的调整,保证了偏移量调整后的图形显示效果。
200.可选的,在一个实施例中,步骤s602中,vsync控制模块根据多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长判断是否满足偏移量调整条件,可以包括:
201.vsync控制模块根据多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长计算多个历史帧图像的渲染合成时长的方差及方差阈值。vsync控制模块判断方差是否小于方差阈值。若方差小于方差阈值,则满足偏移量调整条件;否则不满足偏移量调整条件。其中,方差阈值用于表征多个历史帧图像的渲染合成时长稳定度处于满足预设条件和不满足预设条件的临界状态(即处于稳定和非稳定的临界状态),且多个历史帧图像中的可调帧图像所占的比例等于预设比例。
202.在本实施例中,将偏移量调整条件通过方差阈值表现,通过判断多个历史帧图像的渲染合成时长的方差与方差阈值的大小关系,简单、快捷且准确的确定是否满足偏移量设置条件。
203.首先,对方差的计算方法进行说明。
204.可选的,方差可以为普通方差,也可以为过滤方差。
205.在一种可能的实现方式中,多个历史帧图像的渲染合成时长的方差为普通方差,普通方差可以通过公式(1)计算得到:
[0206][0207]
其中,σ表示普通方差,m表示历史帧图像的总数量,i表示历史帧图像的序号,rct[i]表示第i个历史帧图像的渲染合成时长,rctavg表示m个历史帧图像的渲染合成时长的平均值。
[0208][0209]
在另一种可能的实现方式中,多个历史帧图像的渲染合成时长的方差为过滤方差,过滤方差也可以通过公式(3)计算得到:
[0210]
σ
filter
=a*σ
now-(1-a)*σ
old
(3)
[0211]
其中,σ
filter
表示过滤方差,a表示方差滤波系数。σ
now
表示当前计算周期的历史帧图像的渲染合成时长的方差,σ
old
表示上一计算周期的历史帧图像的渲染合成时长的方差。
[0212]
其中,当前计算周期是指当前时刻之前的一个计算周期。上一个计算周期是指当前计算周期之前的一个计算周期,即,当前时刻之前的第二个计算周期。以计算周期为3s为例,当前时刻为01:08:07,则当前计算周期为当前时刻之前的3s时间段,即01:08:04-01:08:07。上一计算周期是指当前时刻之前的第3s至当前时刻之前的第6s之间的时间段,即01:08:01-01:08:04。
[0213]
方差滤波系数a可以根据实际使用需求设置,例如,a可以为0.3,a也可以为0.7等。σ
now
和σ
old
可以通过公式(1)计算得到,在此不再赘述。
[0214]
在该实现方式中,通过过滤方差确定是否满足偏移量调整条件能够有效滤除历史帧图像中噪音数据,提高偏移量调整条件的准确性,从而提高后续偏移量设置的准确性,进一步提高图形显示效果。
[0215]
以下对方差阈值的计算方法进行说明。
[0216]
根据正态分布3σ准则,数据分布在μ+3σ中的概率为0.9973。其中μ表示数据的均值,σ表示数据的方差。结合上述实施例中,μ即为m个历史帧图像的渲染合成时长的平均值rctavg,σ即为上述实施例中的普通方差σ或过滤方差σ
filter
。以下实施例中,以过滤方差σ
filter
为例进行说明。则,历史帧图像的渲染合成时长分布在rctavg+3σ
filter
的概率为0.9973。
[0217]
因此,假设预设比例为0.9973,对应的渲染合成时长为rctavg+3σ
filter
,则满足公式(4)的帧图像即为可调帧图像:
[0218]
rctavg+3σ
filter
=t
vsync-appoffset1
ꢀꢀꢀ
(4)
[0219]
其中,t
vsync
表示vsync周期,appoffset1表示初始应用绘制渲染偏移量。
[0220]
因此,根据公式(4)可以推导出预设比例为0.9973时的方差阈值σ
threshold
为公式(5):
[0221][0222]
换而言之,方差阈值为临界渲染合成时长的方差,其中,临界渲染合成时长为历史帧图像中可调帧图像的比例为预设比例时的渲染合成时长。换句话说,历史帧图像中临界渲染合成时长的占比为预设比例,临界渲染合成时长与初始应用绘制渲染偏移量之和等于一个vsync周期。
[0223]
在一个实施例中,方差阈值中可以进一步考虑增加预设阈值和预期收益时长。可选的,临界渲染合成时长为一个vsync周期与初始应用绘制渲染偏移量、预设阈值和预期收益时长的差值。在公式(4)的基础上,进一步增加预设阈值和预期收益时长。即,假设预设比例为0.9973,对应的渲染合成时长为rctavg+3σ
filter
,满足公式(6)的帧图像即为可调帧图像:
[0224]
rctavg+3σ
filter
+delta+gain=t
vsync-appoffset1
ꢀꢀꢀ
(6)
[0225]
其中,delta表示预设阈值,gain表示预期收益时长。delta和gain均可以根据需求设置,例如,delta可以设置为1ms,gain可以设置为3ms。
[0226]
因此,通过根据公式(6)可以推导出预设比例为0.9973时的方差阈值σ
threshold
为公式(7):
[0227][0228]
本实施例中,在方差阈值的计算中加入预设阈值,相当于在偏移量调整条件中加入误差余量,充分考虑实际应用中可能存在的误差,提高了偏移量调整条件判断时的灵活性,从而提高偏移量调整的准确性,进一步提高图形显示效果。同时,在方差阈值的计算中加入预期收益时长,保证了偏移增大的最小值,提高偏移量调整后的收益,有利于提高调整偏移量后的不丢帧率。
[0229]
下面对以上根据方差和方差阈值确定是否满足偏移量调整条件的过程进行举例说明。
[0230]
以显示屏刷新率为60hz为例,vsync周期为16.66ms。假设当前计算周期共完成52帧历史帧图像的显示,上一计算周期共完成48帧图像的显示。则vsync控制模块可以从上述实施例提到的rc frametimevar列表中分别获取这100帧历史帧图像的应用绘制渲染时长和surfaceflinger合成时长,并可以计算每一帧历史帧图像的渲染合成时长。
[0231]
根据公式(2)计算rctavg:假设52帧历史帧图像的渲染合成时长的总和为265ms,则,根据公式(2),可以得到
[0232]
根据公式(3)计算过滤方差σ
filter
:假设根据公式(1)计算得到的上一计算周期的历史帧图像的渲染合成时长的方差σ
old
为3,根据公式(1)计算得到的当前计算周期的历史帧图像的渲染合成时长的方差为σ
now
为5,滤波系数a为0.7。则,根据公式(3),可以得到过滤方差σ
filter
=0.7*5-(1-0.7)*3=2.6。
[0233]
根据公式(7)计算方差阈值σ
threshold
:假设预设阈值为1ms,预期收益时长为3ms,appoffset1为1ms。则,根据公式(7)计算得到方差阈值为:
[0234][0235]
将过滤方差σ
filter
与方差阈值σ
threshold
进行比较,2.6大于2.22,因此,不满足偏移量调整条件,将当前应用绘制渲染偏移量调整为初始应用绘制渲染偏移量,将当前surfaceflinger合成偏移量调整为初始surfaceflinger合成偏移量。
[0236]
可选的,以下结合实施例对s603中vsync算法模块根据多个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长确定目标应用绘制渲染偏移量和目标surfaceflinger合成偏移量进行详细说明。
[0237]
由于目标应用绘制渲染偏移量和目标surfaceflinger合成偏移量下,历史帧图像中的理想帧图像的占比大于预设占比。也就是说,偏移量调整之后,历史帧图像中一定比例的帧图像要能够在一个vsync周期内完成应用绘制渲染流程和surfaceflinger合成流程。图像是否能够在一个vsync周期内完成应用绘制渲染流程和surfaceflinger合成流程可以从两个方面考量:跟手性收益和不丢帧率。以下分别进行分析。
[0238]
1)跟手性收益
[0239]
由于输入事件的时间相对于vsync信号的时间具有不确定性,因此,输入事件可以看作均匀分布的随机事件。其中,输入事件是指用户通过输入设备向显示系统发送视图更新请求。以用户通过显示屏进行输入为例,输入事件是指用户触控显示屏的操作,例如,点击或滑动显示屏等操作。示例性的,图12为一个实施例中,偏移量调整后的显示流程示意图。如图12所示,将初始应用绘制渲染偏移量appoffset1调整应用绘制渲染偏移量调整值(图中简称调整值)appoffset2,得到上述目标应用绘制渲染偏移量appoffsett(即appoffset1+appoffset2,图12中未示出)。为了便于说明,第n个vsync周期除appoffset1和appoffset2之外剩余的时间段定义为剩余时间appoffset3。图中,应用绘制渲染时间轴中的虚线框表示初始应用绘制渲染偏移量appoffset1下第3帧图像的处理时间。将发生在appoffset1时间段内的输入事件定义为输入1。将发生在appoffset2时间段内输入事件定义为输入2。将发生在appoffset3时间段内输入事件定义为输入3。
[0240]
首先,如上述实施例所述,对于输入1、输入2和输入3,相较于图3至图5,通过调整应用绘制渲染偏移量和surfaceflinger合成偏移量能够使得一帧图像的应用绘制渲染和surfaceflinger合成在一个vsync周期内完成,得到一个vsync周期的跟手性收益。具体参见上述实施例,在此不再赘述。
[0241]
其次,基于图12进行跟手性收益分析:对于输入1,将初始应用绘制渲染偏移量appoffset1调整appoffset2,调整前后输入1对应的第3帧图像都会在第n个vsync周期执行应用绘制渲染流程,在第n+1个vsync周期执行硬件送显流程。因此,对于输入1,偏移量调整后没有跟手性收益。
[0242]
对于输入2,将初始应用绘制渲染偏移量appoffset1调整appoffset2,调整前,输入2对应的第3帧图像错过了appoffset1偏移量下生成的app_vsync信号,需要在第n+1个vsync周期执行应用绘制渲染流程,在第n+2个vsync周期执行硬件送显流程。调整后,输入2对应的第3帧图像在appoffset1+appoffset2偏移量下生成的第n个app_vsync周期起始时刻之前到来,因此,输入2对应的第3帧图像能够在第n个vsync周期执行应用绘制渲染流程,在第n+1个vsync周期执行硬件送显流程。所以,对于输入2,偏移量调整后跟手性收益为一个vsync周期。
[0243]
对于输入3,将初始应用绘制渲染偏移量appoffset1调整appoffset2,调整前后输入3对应的第3帧图像都会在第n+1个vsync周期执行应用绘制渲染流程,在第n+2个vsync周期执行硬件送显流程。因此,对于输入3,偏移量调整后没有跟手性收益。
[0244]
因此,对于输入2来说,若调整偏移量使得一帧图像的应用绘制渲染和surfaceflinger合成能够在一个vsync周期内完成,那么将得到2个vsync周期的跟手性收益。
[0245]
基于上述分析,根据概率论公式,偏移量调整前后跟手性收益t为:
[0246][0247]
2)不丢帧率
[0248]
调整应用绘制渲染偏移量和surfaceflinger合成偏移量能够带来跟手性收益t,但是,调整后可能会出现丢帧现象。如上述图9和图10所示,当某一帧图像的渲染合成时长与应用绘制渲染偏移量的总和大于一个vsync周期,会出现丢帧现象。另外,即使渲染合成时长与应用绘制渲染偏移量的总和小于或等于一个vsync周期,若调整后的目标应用绘制渲染偏移量和目标surfaceflinger合成偏移量不合适,使得surfaceflinger合成流程的起始时刻在应用绘制渲染流程结束时刻之前,或者使得surfaceflinger合成流程的结束时刻超出当前vsync周期,则也可能出现丢帧现象。
[0249]
总而言之,当出现以下情况中的任一个情况则会出现丢帧现象:
[0250]
a、帧图像的渲染合成时长与目标应用绘制渲染偏移量的总和大于一个vsync周期;
[0251]
b、目标surfaceflinger合成偏移量小于应用绘制渲染偏移量与应用绘制渲染时长之和;
[0252]
c、目标surfaceflinger合成偏移量与surfaceflinger合成时长之和大于一个vsync周期。
[0253]
因此,兼顾考虑跟手性收益和不丢帧率,基于最优化问题的概念,建立偏移量优化模型如下:
[0254][0255]
其中,maxf()表示求函数f()的最大值,appoffset2为应用绘制渲染偏移量的调整值,ls为不丢帧率,即不丢帧的帧图像数量与帧图像总数量的比值,ls=(fa-fl)/fa。其中,fa表示帧图像的总数量,fl表示帧图像中丢帧的帧图像的数量。当基于历史帧图像确定目标应用偏移量和目标surfaceflinger合成偏移量时,fa表示历史帧图像的总数量,fl表示历史帧图像中丢帧的帧图像的数量。
[0256]
将公式(8)和不丢帧率公式代入公式(9),得到偏移量优化模型:
[0257][0258]
对公式(10)的求解,需要遍历0至t
vsync-appoffset1范围内的每个appoffset2。在给定一个appoffset2后,计算该appoffset2对应的surfaceflinger合成偏移量。基于每一组appoffset1+appoffset2和surfaceflinger合成偏移量,结合各个历史帧图像的应用绘制渲染时长和surfaceflinger合成时长不计算丢帧率。进而求解出跟手性收益和不丢帧率乘积最大时的appoffset2,得到appoffset2最优解。
[0259]
具体的,在给定appoffset2的情况下,根据公式(11)可以计算出surfaceflinger合成时长最大值sfmax:
[0260]
sfmax=t
vsync-appoffset1-appoffset2-t
app
ꢀꢀꢀ
(11)
[0261]
其中,t
app
表示应用绘制渲染时长。可选的,这里的应用绘制渲染时长可以为多个历史帧图像应用绘制渲染时长的平均值。当然,也可以根据需求通过别的方式选取应用绘
制渲染时长。
[0262]
进一步的,根据surfaceflinger合成时长最大值sfmax,可以求得选定的appoffset2对应的surfaceflinger合成偏移量sfoffset:
[0263]
sfoffset=t
vsync-sfmax
ꢀꢀꢀ
(12)
[0264]
将公式(11)代入公式(12),得到surfaceflinger合成偏移量sfoffset的计算公式如下:
[0265]
sfoffset=appoffset1+appoffset2+t
app
ꢀꢀꢀ
(13)
[0266]
由于判断偏移量调整条件时已经考虑了预设阈值和预期收益时长,因此公式(13)中不再减去delta和增益gain。
[0267]
根据appoffset1、appoffset2和sfoffset,分别计算每个历史帧图像是否丢帧,进而根据公式ls=(fa-fl)/fa计算历史帧图像的丢帧率。
[0268]
可以理解,基于公式(10)和(13)求解最优appoffset2,在遍历0至t
vsync-appoffset1范围内的每个appoffset2过程中,随着appoffset2值的增加,fl会逐渐增大,f(appoffset2)会先增大后减小,因此能够寻找到一个使得f(appoffset2)值最大的appoffset2值,即为最优appoffset2。
[0269]
求得最优appoffset2后,根据公式(13)即可计算得到目标应用绘制渲染偏移量appoffsett:
[0270]
appoffsett=appoffset1+appoffset2
ꢀꢀꢀ
(14)
[0271]
根据目标应用绘制渲染偏移量appoffsett,根据上述公式(13)可以计算得到目标surfaceflinger合成偏移量sfoffsett。
[0272]
本实施例中,由于跟手性收益和不丢帧率均是影响理想帧图像占比的因素,基于偏移量调整后带来的跟手性收益和不丢帧建立偏移量优化模型,求解偏移量优化模型得到的应用绘制渲染偏移量调整值appoffset2既能够保证跟手性收益又能够保证不丢帧率,从而使得目标应用绘制渲染偏移量appoffsett和目标应用绘制渲染偏移量appoffsett下,历史帧图像中的理想帧图像的占比最大,进而使得待显示帧图像跟手性收益和不丢帧率最大化,使得显示效果最优。
[0273]
以下对确定目标应用绘制渲染偏移量appoffsett和目标应用绘制渲染偏移量appoffsett的过程进行举例说明:
[0274]
以显示屏刷新率为60hz为例,vsync周期为16.66ms。假设appoffset1为1ms,多个历史帧图像应用绘制渲染时长的平均值为2ms。以1ms为步长,appoffset2从0ms至15ms进行遍历,计算每个appoffset2对应的收益与不丢帧率乘积。
[0275]
假设当前appoffset2为3ms,则,调整后的应用绘制渲染偏移量为1+3ms=4ms。
[0276]
根据公式(13),计算surfaceflinger合成偏移量sfoffset=1+3+2=6ms。
[0277]
以4ms为应用绘制渲染偏移量,以6ms为surfaceflinger合成偏移量,计算rc frametimevar列表中每一帧历史帧图像是否丢帧。当应用绘制渲染合成时长+surfaceflinger合成时长+4ms大于t
vsync
(16.6ms)时,认为丢帧。这里假设历史帧图像共100帧,共10帧丢帧,则,不丢帧率ls=(100-10)/100=0.9。
[0278]
进一步的,根据公式(10),计算偏移量优化值f(appoffset2)=(3+16.6)*0.9=17.64。
[0279]
参照以上过程,计算每个appoffset2值下的偏移量优化值,最后从所有偏移量优化值中找出最大的一个,即为appoffset2最优解。这里假设得到的appoffset2最优解为8ms。
[0280]
根据appoffset2最优解,基于公式(14)可以计算得到目标应用绘制渲染偏移量appoffsett=1+8=9ms。
[0281]
根据公式(13),计算得到sfoffsett=1+8+2=11ms。
[0282]
需要说明的是,以上例子中所有的取值均为举例说明目的,不对参数的取值造成任何限定。
[0283]
可选的,在一个实施例中,在步骤s604之前,可以重复执行步骤s603n次,计算得到n个目标应用绘制渲染偏移量可选值(以下简称渲染可选值)和n个目标surfaceflinger合成偏移量可选值(以下简称合成可选值),n为大于1的整数,所述方法还进一步包括:
[0284]
vsync算法模块判断n个渲染可选值是否均大于当前应用绘制渲染偏移量;若是,则vsync算法模块根据n个渲染可选值确定目标应用绘制渲染偏移量,并根据n个合成可选值确定目标surfaceflinger合成偏移量,并执行步骤s604;若否,则设置模块不调整当前应用绘制渲染偏移量和当前surfaceflinger合成偏移量,即不执行s604。
[0285]
n的取值可以根据实际需求设置。根据n个渲染可选值确定目标应用绘制渲染偏移量时,可选的,将n个渲染可选值中的最小值确定为目标应用绘制渲染偏移量,以使得丢帧率最小,最大程度的提高显示效果。
[0286]
例如,假设n=3,当前计算周期记为第m个计算周期,当前应用绘制渲染偏移量为7。假设以当前计算周期的帧图像作为历史帧图像,通过步骤s603计算得到渲染可选值为8。以第m-1个计算周期(即上一计算周期)的帧图像作为历史帧图像,通过步骤s603计算得到渲染可选值为9。以第m-2个计算周期的帧图像作为历史帧图像,通过步骤s603计算得到渲染可选值为8。由于第m个计算周期得到的渲染可选值8大于当前应用绘制渲染偏移量7、第m-1个计算周期得到的渲染可选值9大于当前应用绘制渲染偏移量7,且第m-2个计算周期得到的渲染可选值8大于当前应用绘制渲染偏移量7,因此根据这3个渲染可选值确定目标应用绘制渲染偏移量。并将三者中的最小值8确定为目标应用绘制渲染偏移量。
[0287]
本实施例中,通过重复步骤s603计算得到n个渲染可选值,并在n个渲染可选值均大于当前应用绘制渲染偏移量时对当前偏移量进行调整,这样能够避免软件系统频繁的调整应用绘制渲染偏移量,减小系统负担,提高系统运行效率。
[0288]
图13为本技术实施例提供的显示参数调整装置的一种结构示意图。如图13所示,本实施例提供的显示参数的调整装置,可以包括:
[0289]
获取模块1101,用于获取多个历史帧图像的应用绘制渲染时长和图层合成时长;
[0290]
确定模块1102,用于根据多个历史帧图像的应用绘制渲染时长和图层合成时长确定目标应用绘制渲染偏移量和目标图层合成偏移量;目标应用绘制渲染偏移量是指触发对待显示帧图像执行应用绘制渲染流程的绘制渲染同步信号相对于垂直同步信号的偏移量;目标图层合成偏移量是指触发对待显示帧图像执行图层合成流程的合成同步信号相对于垂直同步信号的偏移量;多个历史帧图像中的理想帧图像的占比大于预设占比;理想帧图像是指当使用目标应用绘制渲染偏移量和目标图层合成偏移量时在一个垂直同步周期内完成应用绘制渲染流程和图层合成流程的历史帧图像;
[0291]
调整模块1103,用于根据目标应用绘制渲染偏移量调整当前应用绘制渲染偏移量,根据目标图层合成偏移量调整当前图层合成偏移量。
[0292]
在一个实施例中,确定模块1102具体用于根据多个历史帧图像的应用绘制渲染时长和图层合成时长求解偏移量优化模型,得到应用绘制渲染偏移量调整值的最优解;其中,偏移量优化模型用于表征跟手性收益和不丢帧率的乘积的最大值;跟手性收益为应用绘制渲染偏移量调整值与一个垂直同步周期之和;不丢帧率是指当使用根据应用绘制渲染偏移量调整值得到的应用绘制渲染偏移量和图层合成偏移量时,多个历史帧图像中不丢帧的历史帧图像的比例;根据应用绘制渲染偏移量调整值的最优解确定目标应用绘制渲染偏移量和目标图层合成偏移量。
[0293]
在一个实施例中,确定模块1102具体用于将应用绘制渲染偏移量调整值的最优解和初始应用绘制渲染偏移量的和确定为目标应用绘制渲染偏移量,其中,初始应用绘制渲染偏移量是指不进行偏移量调整时的应用绘制渲染偏移量;根据目标应用绘制渲染偏移量确定目标图层合成偏移量。
[0294]
在一个实施例中,确定模块1102具体用于计算多个历史帧图像的应用绘制渲染时长的平均值;将平均值与目标应用绘制渲染偏移量的和确定为目标图层合成偏移量。
[0295]
在一个实施例中,多个历史帧图像为第一历史时间段内的帧图像,获取模块1101还用于获取多个第二历史时间段对应的目标应用绘制渲染偏移量和目标图层合成偏移量,多个第二历史时间段位于第一历史时间段之前,且多个第二历史时间段与第一历史时间段连续;
[0296]
调整模块1103具体用于若多个渲染可选值均大于当前应用绘制渲染偏移量,则根据多个渲染可选值确定应用绘制渲染偏移量设置值,并根据多个合成可选值确定图层合成偏移量设置值;多个渲染可选值包括第一历史时间段对应的目标应用绘制渲染偏移量和多个第二历史时间段对应的目标应用绘制渲染偏移量;多个合成可选值包括第一历史时间段对应的目标图层合成偏移量和多个第二历史时间段对应的目标图层合成偏移量;将当前应用绘制渲染偏移量调整为应用绘制渲染偏移量设置值,并将当前图层合成偏移量调整为图层合成偏移量设置值。
[0297]
在一个实施例中,调整模块1103具体用于将多个渲染可选值中最小的渲染可选值确定为应用绘制渲染偏移量设置值;将多个合成可选值中最小的合成可选值确定为图层合成偏移量设置值。
[0298]
在一个实施例中,显示参数的调整装置还包括判断模块1104,用于根据多个历史帧图像的应用绘制渲染时长和图层合成时长,确定多个历史帧图像的渲染合成时长的稳定度满足预设条件,且多个历史帧图像中的可调帧图像所占的比例大于预设比例;其中,渲染合成时长是指历史帧图像的应用绘制渲染时长与图层合成时长之和,可调帧图像是指渲染合成时长与初始应用绘制渲染偏移量之和小于一个垂直同步周期的历史帧图像,初始应用绘制渲染偏移量是指不进行偏移量调整时的应用绘制渲染偏移量。
[0299]
在一个实施例中,判断模块1104具体用于根据多个历史帧图像的应用绘制渲染时长和图层合成时长计算多个历史帧图像的渲染合成时长的方差;根据多个历史帧图像的应用绘制渲染时长和图层合成时长、预设比例、垂直同步周期和初始应用绘制渲染偏移量计算方差阈值;若方差小于方差阈值,则确定多个历史帧图像的渲染合成时长的稳定度满足
预设条件,且多个历史帧图像中的可调帧图像所占的比例大于预设比例。
[0300]
在一个实施例中,预设比例为0.9973。
[0301]
在一个实施例中,判断模块1104具体用于根据计算方差阈值,其中,σ
threshold
表示方差阈值,t
vsync
表示垂直同步周期,appoffset1表示初始应用绘制渲染偏移量,rctavg表示多个历史帧图像的渲染合成时长的平均值;渲染合成时长是指历史帧图像的应用绘制渲染时长与图层合成时长之和。
[0302]
本实施例提供的显示参数的调整装置,用于执行上述实施例的显示参数的调整方法,技术原理和技术效果相似,此处不再赘述。
[0303]
本技术实施例提供一种电子设备,结构参见图1。电子设备的存储器可用于存储至少一个程序指令,处理器用于执行至少一个程序指令,以实现上述方法实施例的技术方案。其实现原理和技术效果与上述方法相关实施例类似,此处不再赘述。
[0304]
本技术实施例提供一种芯片。芯片包括处理器,处理器用于与存储器耦合,并执行存储器中的计算机程序,以执行上述实施例中的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
[0305]
本技术实施例提供一种计算机程序产品,当所述计算机程序产品在电子设备运行时,使得所述电子设备执行上述实施例中的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。
[0306]
本技术实施例提供一种计算机可读存储介质,其上存储有程序指令,所述程序指令被电子设备执行时,使得所述电子设备执行上述实施例的技术方案。其实现原理和技术效果与上述相关实施例类似,此处不再赘述。综上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1