CN110018759B - 界面显示方法、装置、终端及存储介质 - Google Patents
界面显示方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN110018759B CN110018759B CN201910285675.8A CN201910285675A CN110018759B CN 110018759 B CN110018759 B CN 110018759B CN 201910285675 A CN201910285675 A CN 201910285675A CN 110018759 B CN110018759 B CN 110018759B
- Authority
- CN
- China
- Prior art keywords
- composition
- buffer
- waiting
- layer
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Abstract
本申请公开了一种界面显示方法、装置、终端及存储介质,属于终端技术领域。所述方法包括:在目标缓冲机制下显示用户界面,目标缓冲机制下,每个图层对应n个缓冲区;当n个缓冲区中存在m个等待合成缓冲区时,获取各个等待合成缓冲区的请求合成时刻,等待合成缓冲区用于等待合成线程进行图层合成,1<m≤n;根据各个等待合成缓冲区的请求合成时刻,释放等待合成缓冲区中的目标缓冲区,目标缓冲区对应的请求合成时刻先于等待合成缓冲区中其它缓冲区对应的请求合成时刻。本申请实施例中,释放目标缓冲区后,合成线程能够优先合成等待合成缓冲区中最近绘制的图层,进而缩短了图层绘制到显示的时间,降低了画面的显示延迟。
Description
技术领域
本申请实施例涉及终端技术领域,特别涉及一种界面显示方法、装置、终端及存储介质。
背景技术
三重缓冲(Triple buffer)是一种用于提高终端画面显示质量的图像显示机制。
开启三重缓冲后,应用的每个图层都对应三个缓冲区,其中,显示屏使用一个缓冲区进行图像显示,应用和合成线程则使用剩余的两个缓冲区进行图层绘制以及图层合成。
发明内容
本申请实施例提供了一种界面显示方法、装置、终端及存储介质,可以用于解决相关技术中终端显示画面时存在较大延迟的问题,所述技术方案如下:
一方面,本申请实施例提供了一种界面显示方法,所述方法包括:
在目标缓冲机制下显示用户界面,所述目标缓冲机制下,每个图层对应n个缓冲区,n为大于等于3的整数;
当所述n个缓冲区中存在m个等待合成缓冲区时,获取各个所述等待合成缓冲区的请求合成时刻,所述等待合成缓冲区用于等待合成线程进行图层合成,1<m≤n,m为整数;
根据各个所述等待合成缓冲区的请求合成时刻,释放所述等待合成缓冲区中的目标缓冲区,所述目标缓冲区对应的请求合成时刻先于所述等待合成缓冲区中其它缓冲区对应的请求合成时刻。
另一方面,本申请实施例提供了一种界面显示装置,所述装置包括:
显示模块,用于在目标缓冲机制下显示用户界面,所述目标缓冲机制下,每个图层对应n个缓冲区,n为大于等于3的整数;
第一获取模块,用于当所述n个缓冲区中存在m个等待合成缓冲区时,获取各个所述等待合成缓冲区的请求合成时刻,所述等待合成缓冲区用于等待合成线程进行图层合成,1<m≤n,m为整数;
释放模块,用于根据各个所述等待合成缓冲区的请求合成时刻,释放所述等待合成缓冲区中的目标缓冲区,所述目标缓冲区对应的请求合成时刻先于所述等待合成缓冲区中其它缓冲区对应的请求合成时刻。
另一方面,提供了一种终端,所述终端包括处理器、与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现如上述方面所述的界面显示方法。
另一方面,提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令被处理器执行时实现如上述方面所述的界面显示方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例中,终端在目标缓冲机制下显示用户界面时,若缓冲区中存在至少两个等待合成缓冲区,则获取各个等待合成缓冲区的请求合成时刻,并根据请求合成时刻,释放等待合成缓冲区中的目标缓冲区;由于目标缓冲区对应的请求合成时刻先于等待合成缓冲区中其它缓冲区对应的请求合成时刻,因此释放目标缓冲区后,合成线程能够优先合成等待合成缓冲区中最近绘制的图层,进而缩短了图层绘制到显示的时间,降低了画面的显示延迟。
附图说明
图1是本申请一个示例性实施例所提供的终端的结构示意图;
图2是图形显示过程的原理示意图;
图3是缓冲区四种状态的状态转换图;
图4示出了本申请一个示例性实施例提供的界面显示方法的方法流程图;
图5示出了本申请另一个示例性实施例提供的界面显示方法的方法流程图;
图6是调整图层合成机制前后图层合成过程的实施示意图;
图7是本申请一个实施例提供的界面显示装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在对本申请实施例进行解释说明之前,首先对本申请实施例的应用场景进行说明。图1示出了本申请一个示例性实施例所提供的终端的结构示意图。
该终端100是安装有目标应用程序的电子设备。该目标应用程序可以是系统程序或者第三方应用程序。其中,第三方应用程序是除了用户和操作系统之外的第三方制作的应用程序。比如,该目标应用程序可以是游戏应用程序或视频播放应用程序。
可选的,该终端100中包括:处理器120和存储器140。
处理器120可以包括一个或者多个处理核心。处理器120利用各种接口和线路连接整个终端100内的各个部分,通过运行或执行存储在存储器140内的指令、程序、代码集或指令集,以及调用存储在存储器140内的数据,执行终端100的各种功能和处理数据。可选的,处理器120可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器120可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器120中,单独通过一块芯片进行实现。
存储器140可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器140包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器140可用于存储指令、程序、代码、代码集或指令集。存储器140可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储下面各个方法实施例中涉及到的数据等。
本申请实施例中的终端120还包括显示屏160。可选的,显示屏160是触摸显示屏,用于接收用户使用手指、触摸笔等任何适合的物体在其上或附近的触摸操作,以及显示各个应用程序的用户界面。显示屏160通常设置在终端100的前面板,或者,同时设置在终端100的前面板和后面板。显示屏160可被设计成为全面屏、曲面屏或异型屏。显示屏160还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本实施例对此不加以限定。
除此之外,本领域技术人员可以理解,上述附图所示出的终端100的结构并不构成对终端100的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,终端100中还包括射频电路、输入单元、传感器、音频电路、无线保真(Wireless Fidelity,WiFi)模块、电源、蓝牙模块等部件,在此不再赘述。
为了便于理解,下面首先对终端中的图形显示系统进行说明,且下述实施例以安卓(Android)图形显示系统为例进行示意性说明。
如图2所示,显示屏21中显示的内容是从硬件帧缓冲区中读取,且读取的过程为:从硬件帧缓冲区的起始地址开始,按照从上往下,从左往右的顺序进行扫描,从而将扫描到的内容映射在显示屏上。
由于显示屏21中显示的内容需要不断更新,因此终端采用双重缓冲机制进行图像更新,其中,双缓冲区中的一个缓冲区用于内容读取显示,而另一个缓冲区用于后台图层合成和写入。
示意性的,如图2所示,前缓冲区22为显示屏所要显示内容的帧缓冲区,后缓冲区23为用于合成下一帧图形的帧缓冲区。当前一帧显示完毕,后一帧写入完毕时,显示屏21即读取后缓冲区23中的内容,相应的,前缓冲区22中即进行下一帧图形的合成(前后缓冲区角色互换)。
SurfaceFlinger作为图形的合成者,用于对上层传递的多个图层(surface)进行合成(主要由SurfaceFlinger中的合成线程负责图层合成),并提交到显示屏的硬件缓冲区中,供显示屏21读取显示。如图2所示,后缓冲区23中的内容由SurfaceFlinger对多个surface24合成而成。其中,每个surface对应上层的一个窗口(window),比如对话框、状态栏、活动(Activity)。
图形的传递以缓冲区(buffer)为载体,而surface则是对buffer的进一步封装。为了实现对surface中多个buffer的管理,如图3所示,surface内部提供了缓冲区队列(BufferQueue),与应用程序和SurfaceFlinger形成生产者消费者模型。其中,应用程序为生产者(Producer),SurfaceFlinger为消费者(Consumer)。
对于BufferQueue中的各个buffer,其包含空闲状态(Free)、出列状态(Dequeued)、入列状态(Queued)状态以及获取状态(Acquired)。其中,空闲状态下,buffer可以被应用程序使用,以便应用程序在buffer中进行图层绘制;出列状态下,buffer正在被应用程序使用;入列状态下,buffer经过应用程序使用(图层绘制完成),等待被SurfaceFlinger合成;获取状态下,SurfaceFlinger正在根据buffer进行图层合成,合成完成并提交显示屏显示后,buffer重新恢复为空闲状态。不同状态之间可以通过缓冲区出列(dequeueBuffer)和缓冲区入列(queueBuffer)操作进行转换,其转换过程如图3所示。
双重缓冲机制下,当SurfaceFlinger合成速度较慢时,由于无处于空闲状态的buffer可供应用程序使用,因此画面显示会出现丢帧的情况。为了进一步提高画面显示的稳定性,终端可以采用三重缓冲机制进行图像更新,即在双重缓冲机制的基础上额外增加一个缓冲区,以便在SurfaceFlinger未及时合成的情况下,应用程序利用该缓冲区进行图层绘制。
然而,采用上述三重缓冲机制时,应用程序绘制的图层会出现排队现象(应用程序绘制的图层等待SurfaceFlinger进行图层合成),导致队列中的图层从绘制到最终显示需要经过较长时间,存在较大的画面显示延迟,在一些对画面显示延迟需求较高的场景下,画面的高显示延迟将影响用的正常使用。为了解决相关技术中存在问题,本申请实施例中,终端在检测到存在至少两个等待合成缓冲区,根据等待合成缓冲区对应的请求合成时刻,释放请求合成时刻较早的等待合成缓冲区,使得合成线程能够优先合成等待合成缓冲区中最近绘制的图层,进而缩短了图层绘制到显示的时间,降低了画面的显示延迟。下面采用示意性的实施例进行说明。
请参考图4,其示出了本申请一个示例性实施例提供的界面显示方法的方法流程图。本实施例以该方法用于图1所示的终端为例进行说明,该方法可以包括如下步骤。
步骤401,在目标缓冲机制下显示用户界面,目标缓冲机制下,每个图层对应n个缓冲区,n为大于等于3的整数。
可选的,该用户界面由前台应用程序以及其他应用程序对应的多个图层合并而成,即用户界面中包含前台应用程序的应用界面以及其他应用程序的应用界面。
其中,前台运行程序指处于前台运行状态的应用程序,其可以为购物应用程序、游戏应用程序、电子书应用程序、视频播放应用程序、社交应用程序或新闻阅读应用程序等等;其他应用程序可以是虚拟按键栏应用、通知栏应用、悬浮球应用或侧边栏应用等系统应用程序,本申请对此不做限定。
在一个示意性的例子中,目标缓冲机制为三重缓冲机制,该用户界面由虚拟按键栏应用绘制的虚拟按键栏图层、通知栏应用绘制的通知栏图层、悬浮球应用绘制的悬浮球图层以及游戏应用程序绘制的图层构成,且每个图层对应三个缓冲区。
步骤402,当n个缓冲区中存在m个等待合成缓冲区时,获取各个等待合成缓冲区的请求合成时刻,等待合成缓冲区用于等待合成线程进行图层合成,1<m≤n,m为整数。
应用程序从缓冲区队列(BufferQueue)处请求缓冲区出列(dequeue)后,即可在缓冲区内进行图层绘制;完成图层绘制后,应用程序将写有图层数据的缓冲区入列(queue),由合成线程获取(acquire)入列的缓冲区,并进行图层合成,可选的,被合成线程获取,且尚未合成的缓冲区可以被称为等待合成缓冲区。
当存在至少两个等待合成缓冲区时,应用程序最新绘制的图层需要在等待合成缓冲区中的图层被合成后,才能进行合成,导致图层绘制到合成之间存在较长的时间间隔,进而导致出现画面显示延迟的情况。为了缓解画面显示延迟的情况,当存在至少两个等待合成缓冲区时,终端获取各个等待合成缓冲区的请求合成时刻,以便后续基于请求合成时刻对等待合成缓冲区中进行缓冲区释放。
可选的,该请求合成时刻用于表征等待合成缓冲区中图层的绘制先后顺序,即请求合成时刻越早,等待合成缓冲区中图层的绘制时间越早。该请求合成时刻可以是应用程序完成缓冲区入列,并回调缓冲区队列的onFrameAvailable函数,通知合成线程执行缓冲区获取操作的时刻,或,合成线程从缓冲区队列中获取缓冲区的时刻。本申请实施例并不对此进行限定。
在一个示意性的例子中,三重缓冲机制下,终端检测到存在2个等待合成缓冲区,分别为buffer1和buffer2,其中,buffer1的请求合成时刻为t1,buffer2的请求合成时刻为t2,且t1早于t2。
步骤403,根据各个等待合成缓冲区的请求合成时刻,释放等待合成缓冲区中的目标缓冲区,目标缓冲区对应的请求合成时刻先于等待合成缓冲区中其它缓冲区对应的请求合成时刻。
相关技术中,当存在至少两个等待合成缓冲区时,合成线程会根据等待合成缓冲区的获取先后顺序,依次进行合成,即最近绘制的图层需要在绘制时间较早的图层合成完毕后才能被合成。
而本申请实施例中,为了降低画面显示延迟,在一种可能的实施方式中,终端通过合成线程释放等待合成缓冲区中请求合成时刻较早的缓冲区,保留请求合成时刻较晚的缓冲区,从而跳过合成绘制时间较早的图层,直接合成最近绘制的图层,从而缩短了图层绘制到合成之间的时间间隔。
结合上述步骤402中的示例,终端通过合成线程释放请求合成时刻较早的buffer1,并保留buffer2,从而直接对buffer2进行图层合成。
综上所述,本申请实施例中,终端在目标缓冲机制下显示用户界面时,若缓冲区中存在至少两个等待合成缓冲区,则获取各个等待合成缓冲区的请求合成时刻,并根据请求合成时刻,释放等待合成缓冲区中的目标缓冲区;由于目标缓冲区对应的请求合成时刻先于等待合成缓冲区中其它缓冲区对应的请求合成时刻,因此释放目标缓冲区后,合成线程能够优先合成等待合成缓冲区中最近绘制的图层,进而缩短了图层绘制到显示的时间,降低了画面的显示延迟。
请参考图5,其示出了本申请另一个示例性实施例提供的界面显示方法的方法流程图。本实施例以该方法用于图1所示的终端为例进行说明,该方法可以包括如下步骤。
步骤501,在目标缓冲机制下显示用户界面,目标缓冲机制下,每个图层对应n个缓冲区,n为大于等于3的整数。
本步骤的实施方式与上述步骤401相似,本实施例在此不再赘述。
步骤502,获取n个缓冲区中各个缓冲区的缓冲区状态,缓冲区状态包括空闲状态、出列状态、入列状态和获取状态。
在一种可能的实施方式中,当从缓冲区队列中获取到缓冲区(包含应用程序绘制的图层)时,合成线程即获取各个缓冲区的缓冲区状态,其中,被合成线程获取并等待合成的缓冲区处于获取状态,被应用程序用作图层绘制的缓冲区处于出列状态,完成图层绘制并返回缓冲区队列的缓冲区处于入列状态,被合成线程释放的缓冲区(能够被应用程序用作图层绘制)处于空闲状态。
在一个示意性的例子中,终端获取到buffer1、buffer2和buffer3的缓冲区状态均为获取状态。
由于等待合成缓冲区中的图层并未被合成,因此将等待合成缓冲区释放后,该等待合成缓冲区中的图层将无法显示,产生一定的丢帧现象。为了避免丢帧现象对用户使用造成影响,终端仅在对画面延时需求较高的场景下,启用上述缓冲区释放机制。
可选的,当用户界面中包含目标应用程序的应用界面,且处于目标应用程序对应的预设运行场景,终端则获取n个缓冲区中各个缓冲区的缓冲区状态,并执行下述缓冲区释放步骤;当用户界面中不包含目标应用程序的应用界面,或,未处于目标应用程序对应的预设运行场景时,终端则通过合成线程依次合成获取到的缓冲区,而不会执行下述缓冲区释放步骤,从而保证画面显示的稳定性(不会出现丢帧)。其中,预设运行场景下的画面延时需求高于其它运行场景下的画面延时需求。
在一种可能的实施方式中,终端操作系统通过与目标应用程序之间的数据通道获取目标应用程序当前所处的运行场景。其中,不同应用程序对应的预设运行场景不同。
可选的,目标应用程序与终端操作系统之间建立粘合(binder)连接,从而通过binder连接向终端操作系统发送当前运行场景的场景标识;或者,目标应用程序与终端操作系统之间建立套接字(socket)连接,从而通过socket连接向终端操作系统发送当前运行场景的场景标识;或者,目标应用程序内嵌有操作系统开发商提供的软件开发工具包(Software Development Kit,SDK),通过调用该SDK中的应用程序编程接口(ApplicationProgramming Interface,API),目标应用程序即可向终端操作系统发送当前运行场景的场景标识。本申请实施例并不对获取目标应用程序所处运行场景的方式进行限定。
在一种可能的应用场景下,用户使用购物应用程序进行商品抢购时,若画面显示存在较大延迟,可能会导致商品抢购失败。因此,在一种可能的实施方式中,当目标应用程序为购物应用程序且处于抢购场景(即预设运行场景)时,终端获取n个缓冲区中各个缓冲区的缓冲区状态,其中,抢购场景指在抢购时间点购买商品的场景。
在另一种可能的应用场景下,用户使用游戏应用程序进行游戏过程中,若在特定运行场景下出现画面延迟,可能会导致操作延迟甚至游戏失败,影响用户游戏体验。因此,在一种可能的实施方式中,当目标应用程序为游戏应用程序且处于低画面延迟场景(即预设运行场景),终端获取n个缓冲区中各个缓冲区的缓冲区状态。可选的,该低画面延迟场景可以是团战场景或开镜场景等等。
当然,该方法还可以应用于其他对画面显示延迟要求具有较高要求的场景,本申请实施例仅以上述实施例进行示意性说明,但并不对此构成限定。
步骤503,若存在m个缓冲区的缓冲区状态为获取状态,则确定存在m个等待合成缓冲区,并获取各个等待合成缓冲区的请求合成时刻。
可选的,当存在m个处于获取状态的缓冲区时,终端确定存在m个等待合成缓冲区,并获取各个等待合成缓冲区的请求合成时刻。其中,获取请求合成时刻的过程可以参考上述步骤402,本实施例在此不再赘述。
在一个示意性的例子中,终端检测到存在3个等待合成缓冲区,分别为buffer1、buffer2和buffer,其中,buffer1的请求合成时刻为t1,buffer2的请求合成时刻为t2,buffer2的请求合成时刻为t3,且t1早于t2,t2早于t3。
步骤504,根据请求合成时刻的先后顺序,对m个等待合成缓冲区进行排序。
进一步的,根据各个请求合成时刻的先后顺序,终端对m个等待合成缓冲区进行排序,得到等待合成缓冲区序列,以便后续基于等待合成缓冲区序列确定待释放的目标缓冲区。
结合上述步骤503中的示例,得到的等待合成缓冲区序列为buffer1、buffer、buffer3。
步骤505,将前k个等待合成缓冲区确定为目标缓冲区,并释放目标缓冲区,1≤k<m,k为整数。
当存在多个等待合成缓冲区时,若释放的等待合成缓冲区过多,将会造成大量图层无法合成,进而造成明显的画面丢帧情况。因此,为了在降低画面显示延迟的同时,降低画面丢帧造成的影响,在一种可能的实施方式中,终端将等待合成缓冲区序列中前k个等待合成缓冲区确定为目标缓冲区,并对目标缓冲区进行释放。
结合上述步骤503中的示例,终端将等待合成缓冲区序列中前2个缓冲区(即buffer1、buffer2)确定为目标缓冲区,或者,将前1个缓冲区(即buffer1)确定为目标缓冲区。
相较于相关技术中,buffer3需要在buffer1和buffer2依次合成完毕后才能进行合成,采用本申请实施例提供的方法,由于buffer1(和buffer2)被释放,因此buffer3可以尽快进行图层合成,从而提高应用程序最近绘制的图层的合成显示速度,降低画面显示延迟。
可选的,为了进一步提高图层合成的速度,从而提高画面显示速度,终端将释放缓冲区后,可以对系统资源进行优化,比如提高GPU的工作频率,或增加GPU的开启核心数等等,本实施例对此不做限定。
步骤506,获取当前的图层合成机制,图层合成机制用于指示合成线程的图层合成方式。
由于合成线程的图层合成速度与所要合成的图层的数量以及复杂度相关,因此终端可以通过调整合成线程的图层合成机制来提高图层合成速度,从而缓解缓冲区排队等待合成的问题,进而提高画面显示速度。
在一种可能的实施方式中,终端获取合成线程当前的图层合成机制,该图层合成机制可以包括合成全部图层和合成部分图层。
步骤507,若图层合成机制为合成全部图层,则调整图层合成机制,其中,调整后的图层合成机制为合成部分图层。
可选的,若当前的图层合成机制为合成全部图层,终端则将图层合成机制调整为合成部分图层。由于合成线程所要合成的图层数量减少,因此合成线程合成图层的速度得到提升,从而缓解缓冲区排队的情况,缩短了图层从绘制到显示的时间间隔。
作为一种可能的调整图层合成机制的方式,终端确定目标图层,并根据目标图层调整图层合成机制,其中,目标图层中至少包括前台应用程序的图层,且调整后的合成机制指示合成目标图层。
可选的,目标图层中除了包含前台应用程序的图层外,还可以包含预设应用程序的图层(比如通知栏的图层),和/或,与前台应用程序关联的应用程序的图层,本实施例对此不做限定。
在一个示意性的例子中,如图6所示,前台应用程序对应图层A1、A2和A3,通知栏应用对应图层B1和B2,虚拟按键栏应用对应图层C1和C2,侧边栏应用对应图层D1、D2和D3。当前图层合成机制下,合成线程对所有应用程序的图层进行合成,从而得到可见图层(包括A1、A2、B1、B2、CI、C2、D1、D3);而调整图层合成机制后,合成线程仅对目标图层(前台应用程序对应图层以及通知栏应用对应图层)进行图层合成,其余应用程序的图层则不参与合成(即便图层可见),从而得到可见图层(包括A1、A2、B1、B2)。
步骤508,根据调整后的图层合成机制控制合成线程进行图层合成。
进一步的,终端控制合成线程仅对目标图层进行合成,从而降低图层合成的压力。
可选的,当离开目标应用程序,或,离开目标应用程序的预设运行场景时,终端恢复图层合成机制,即重新对全部图层进行合成显示,本实施例在此不再赘述。
本实施例中,终端通过减少合成线程合成的图层数量,缩短图层绘制到显示之间的时间间隔,进一步降低了画面的显示延迟。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图7,其示出了本申请一个实施例提供的界面显示装置的结构示意图。该装置可以通过专用硬件电路,或者,软硬件的结合实现成为图1中的终端的全部或一部分,该装置包括:
显示模块710,用于在目标缓冲机制下显示用户界面,所述目标缓冲机制下,每个图层对应n个缓冲区,n为大于等于3的整数;
第一获取模块720,用于当所述n个缓冲区中存在m个等待合成缓冲区时,获取各个所述等待合成缓冲区的请求合成时刻,所述等待合成缓冲区用于等待合成线程进行图层合成,1<m≤n,m为整数;
释放模块730,用于根据各个所述等待合成缓冲区的请求合成时刻,释放所述等待合成缓冲区中的目标缓冲区,所述目标缓冲区对应的请求合成时刻先于所述等待合成缓冲区中其它缓冲区对应的请求合成时刻。
可选的,所述第一获取模块720,包括:
获取单元,用于获取所述n个缓冲区中各个缓冲区的缓冲区状态,所述缓冲区状态包括空闲状态、出列状态、入列状态和获取状态;
确定单元,用于若存在m个缓冲区的所述缓冲区状态为所述获取状态,则确定存在m个所述等待合成缓冲区,并获取各个所述等待合成缓冲区的请求合成时刻。
可选的,所述第一获取单元,用于:
若所述用户界面中包含目标应用程序的应用界面,且处于所述目标应用程序对应的预设运行场景,则获取所述n个缓冲区中各个缓冲区的所述缓冲区状态,所述预设运行场景下的画面延时需求高于其它运行场景下的画面延时需求。
可选的,当所述目标应用程序为购物应用程序时,所述预设运行场景为抢购场景,所述抢购场景指在抢购时间点购买商品的场景;
或,
当所述目标应用程序为游戏应用程序时,所述预设运行场景为低画面延迟场景。
可选的,所述释放模块,包括:
排序单元,用于根据请求合成时刻的先后顺序,对m个所述等待合成缓冲区进行排序;
释放单元,用于将前k个所述等待合成缓冲区确定为所述目标缓冲区,并释放所述目标缓冲区,1≤k<m,k为整数。
可选的,所述装置还包括:
第二获取模块,用于获取当前的图层合成机制,所述图层合成机制用于指示所述合成线程的图层合成方式;
调整模块,用于若所述图层合成机制为合成全部图层,则调整所述图层合成机制,其中,调整后的图层合成机制为合成部分图层;
合成模块,用于根据所述调整后的图层合成机制控制所述合成线程进行图层合成。
可选的,所述调整模块,包括:
图层确定单元,用于确定目标图层,所述目标图层中至少包括前台应用程序的图层;
调整单元,用于根据所述目标图层调整所述图层合成机制。
综上所述,本申请实施例中,终端在目标缓冲机制下显示用户界面时,若缓冲区中存在至少两个等待合成缓冲区,则获取各个等待合成缓冲区的请求合成时刻,并根据请求合成时刻,释放等待合成缓冲区中的目标缓冲区;由于目标缓冲区对应的请求合成时刻先于等待合成缓冲区中其它缓冲区对应的请求合成时刻,因此释放目标缓冲区后,合成线程能够优先合成等待合成缓冲区中最近绘制的图层,进而缩短了图层绘制到显示的时间,降低了画面的显示延迟。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请还提供一种计算机可读介质,其上存储有程序指令,程序指令被处理器执行时实现上述各个方法实施例提供的界面显示方法。
本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个实施例所述的界面显示方法。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的帧率控制方法中全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种界面显示方法,其特征在于,所述方法包括:
在目标缓冲机制下显示用户界面,所述目标缓冲机制下,每个图层对应n个缓冲区,n为大于等于3的整数;
获取所述n个缓冲区中各个缓冲区的缓冲区状态,所述缓冲区状态包括空闲状态、出列状态、入列状态和获取状态;
若存在m个缓冲区的所述缓冲区状态为所述获取状态,则确定存在m个等待合成缓冲区,并获取各个所述等待合成缓冲区的请求合成时刻,所述等待合成缓冲区用于等待合成线程进行图层合成,1<m≤n,m为整数;
根据各个所述等待合成缓冲区的请求合成时刻,释放所述等待合成缓冲区中的目标缓冲区,所述目标缓冲区对应的请求合成时刻先于所述等待合成缓冲区中其它缓冲区对应的请求合成时刻。
2.根据权利要求1所述的方法,其特征在于,所述获取所述n个缓冲区中各个缓冲区的缓冲区状态,包括:
若所述用户界面中包含目标应用程序的应用界面,且处于所述目标应用程序对应的预设运行场景,则获取所述n个缓冲区中各个缓冲区的所述缓冲区状态,所述预设运行场景下的画面延时需求高于其它运行场景下的画面延时需求。
3.根据权利要求2所述的方法,其特征在于,
当所述目标应用程序为购物应用程序时,所述预设运行场景为抢购场景,所述抢购场景指在抢购时间点购买商品的场景;
或,
当所述目标应用程序为游戏应用程序时,所述预设运行场景为低画面延迟场景。
4.根据权利要求1至3任一所述的方法,其特征在于,所述根据各个所述等待合成缓冲区的请求合成时刻,释放所述等待合成缓冲区中的目标缓冲区,包括:
根据请求合成时刻的先后顺序,对m个所述等待合成缓冲区进行排序;
将前k个所述等待合成缓冲区确定为所述目标缓冲区,并释放所述目标缓冲区,1≤k<m,k为整数。
5.根据权利要求1至3任一所述的方法,其特征在于,所述根据各个所述等待合成缓冲区的请求合成时刻,释放所述等待合成缓冲区中的目标缓冲区之后,所述方法还包括:
获取当前的图层合成机制,所述图层合成机制用于指示所述合成线程的图层合成方式;
若所述图层合成机制为合成全部图层,则调整所述图层合成机制,其中,调整后的图层合成机制为合成部分图层;
根据所述调整后的图层合成机制控制所述合成线程进行图层合成。
6.根据权利要求5所述的方法,其特征在于,所述调整所述图层合成机制,包括:
确定目标图层,所述目标图层中至少包括前台应用程序的图层;
根据所述目标图层调整所述图层合成机制。
7.一种界面显示装置,其特征在于,所述装置包括:
显示模块,用于在目标缓冲机制下显示用户界面,所述目标缓冲机制下,每个图层对应n个缓冲区,n为大于等于3的整数;
包括获取单元和确定单元的第一获取模块,所述获取单元用于获取所述n个缓冲区中各个缓冲区的缓冲区状态,所述缓冲区状态包括空闲状态、出列状态、入列状态和获取状态;
所述确定单元,用于若存在m个缓冲区的所述缓冲区状态为所述获取状态,则确定存在m个等待合成缓冲区,并获取各个所述等待合成缓冲区的请求合成时刻,所述等待合成缓冲区用于等待合成线程进行图层合成,1<m≤n,m为整数;释放模块,用于根据各个所述等待合成缓冲区的请求合成时刻,释放所述等待合成缓冲区中的目标缓冲区,所述目标缓冲区对应的请求合成时刻先于所述等待合成缓冲区中其它缓冲区对应的请求合成时刻。
8.一种终端,其特征在于,所述终端包括处理器、与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现如权利要求1至6任一所述的界面显示方法。
9.一种计算机可读存储介质,其特征在于,其上存储有程序指令,所述程序指令被处理器执行时实现如权利要求1至6任一所述的界面显示方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910285675.8A CN110018759B (zh) | 2019-04-10 | 2019-04-10 | 界面显示方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910285675.8A CN110018759B (zh) | 2019-04-10 | 2019-04-10 | 界面显示方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110018759A CN110018759A (zh) | 2019-07-16 |
CN110018759B true CN110018759B (zh) | 2021-01-12 |
Family
ID=67190936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910285675.8A Active CN110018759B (zh) | 2019-04-10 | 2019-04-10 | 界面显示方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110018759B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111291203B (zh) * | 2020-02-06 | 2024-03-12 | 广州酷狗计算机科技有限公司 | 数据显示方法、装置、终端及存储介质 |
CN115631258B (zh) * | 2020-07-31 | 2023-10-20 | 荣耀终端有限公司 | 一种图像处理方法及电子设备 |
CN114089933B (zh) * | 2021-06-09 | 2022-09-02 | 荣耀终端有限公司 | 显示参数的调整方法、电子设备、芯片及可读存储介质 |
CN115639920B (zh) * | 2021-12-24 | 2023-12-22 | 荣耀终端有限公司 | 绘制方法、电子设备和可读存储介质 |
CN114510207A (zh) * | 2022-02-28 | 2022-05-17 | 亿咖通(湖北)技术有限公司 | 图层合成方法、装置、设备、介质及程序产品 |
CN116932193A (zh) * | 2022-04-07 | 2023-10-24 | 华为技术有限公司 | 一种显示子系统的通道分配方法、装置及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007049567A (ja) * | 2005-08-11 | 2007-02-22 | Canon Inc | データ表示システム、データ配信装置及びディスプレイ装置 |
JP4327173B2 (ja) * | 2006-04-19 | 2009-09-09 | 株式会社ソニー・コンピュータエンタテインメント | グラフィックスプロセッサ、描画処理装置および描画制御方法 |
US9672584B2 (en) * | 2012-09-06 | 2017-06-06 | Imagination Technologies Limited | Systems and methods of partial frame buffer updating |
US8797340B2 (en) * | 2012-10-02 | 2014-08-05 | Nvidia Corporation | System, method, and computer program product for modifying a pixel value as a function of a display duration estimate |
CN104765594B (zh) * | 2014-01-08 | 2018-07-31 | 联发科技(新加坡)私人有限公司 | 一种显示图形用户界面的方法及装置 |
CN105913371A (zh) * | 2015-11-16 | 2016-08-31 | 乐视致新电子科技(天津)有限公司 | 一种针对虚拟现实应用延迟的系统优化方法和装置 |
-
2019
- 2019-04-10 CN CN201910285675.8A patent/CN110018759B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110018759A (zh) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110018759B (zh) | 界面显示方法、装置、终端及存储介质 | |
CN110018874B (zh) | 垂直同步方法、装置、终端及存储介质 | |
CN109992232B (zh) | 图像更新方法、装置、终端及存储介质 | |
CN112004086B (zh) | 视频数据处理方法及装置 | |
CN113553014B (zh) | 多窗口投屏场景下的应用界面显示方法及电子设备 | |
US20220139353A1 (en) | Display method, electronic device, and non-transitory computer-readable storage medium | |
WO2020038169A1 (zh) | 图标显示方法、装置、终端及存储介质 | |
CN108093292B (zh) | 用于管理缓存的方法、装置及系统 | |
CN109800141B (zh) | Gpu性能瓶颈的确定方法、装置、终端及存储介质 | |
EP2892239A1 (en) | Living room computer with small form-factor pluggable port | |
CN110300328B (zh) | 一种视频播放控制方法、装置及可读存储介质 | |
CN107770618B (zh) | 一种图像处理方法、装置及存储介质 | |
TWI585713B (zh) | 協同處理器間之直接鏈結同步通訊技術 | |
CN110955499B (zh) | 处理器核心配置方法、装置、终端及存储介质 | |
CN109992347A (zh) | 界面显示方法、装置、终端及存储介质 | |
WO2014101618A1 (en) | Method and device for processing image data | |
AU2019256257A1 (en) | Processor core scheduling method and apparatus, terminal, and storage medium | |
EP4287013A1 (en) | Screen projection display method and apparatus, mobile terminal, storage medium, and program product | |
CN115033195A (zh) | 画面显示方法、装置、设备、存储介质及程序产品 | |
CN108196909A (zh) | 一种基于安卓车载系统内核倒车的实现方法 | |
CN116546228B (zh) | 用于虚拟场景的推流方法、装置、设备及存储介质 | |
MXPA02005310A (es) | Sistema de procesamiento de datos, programa de computadora y medio de registro. | |
WO2023138020A1 (zh) | 图像生成方法、装置、电子设备及存储介质 | |
WO2022242628A1 (zh) | 投屏方法、装置、设备及存储介质 | |
CN109300177B (zh) | 一种图片处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |