CN113986162A - 图层合成方法、设备及计算机可读存储介质 - Google Patents
图层合成方法、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113986162A CN113986162A CN202111109621.XA CN202111109621A CN113986162A CN 113986162 A CN113986162 A CN 113986162A CN 202111109621 A CN202111109621 A CN 202111109621A CN 113986162 A CN113986162 A CN 113986162A
- Authority
- CN
- China
- Prior art keywords
- layer
- synthesis
- synthesized
- hwc
- layers
- 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.)
- Granted
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/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1407—General aspects irrespective of display type, e.g. determination of decimal point position, display with fixed or driving decimal point, suppression of non-significant zeros
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Controls And Circuits For Display Device (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种图层合成方法、设备及计算机可读存储介质,属于显示技术领域。所述方法包括:在待合成图层相对于上一帧图像中的图层来说仅部分图层发生变化而其他图层未发生变化的情况下,图层管理模块可以获取待合成图层中相对于上一帧图像中的图层发生变化的部分图层,仅将发生变化的部分图层发送给HWC,由HWC对发生变化的部分图层以及HWC上一次合成的合成结果进行合成。如此,图层管理模块无需将所有待合成图层都发送给HWC进行合成,减少了图层合成数,提高了合成效率和灵活性。而且,这种图层合成方式需要合成的图层数较少,可以在一定程度上保证发送给HWC需要合成的图层数不会超出HWC支持合成的图层数,因此可以节省合成时间,提高HWC的利用率。
Description
技术领域
本申请涉及显示技术领域,尤其涉及一种图层合成方法、设备及计算机可读存储介质。
背景技术
随着电子技术的发展,如手机或平板电脑等具有图像显示功能的电子设备越来越多。电子设备的显示界面通常是由多个图层(surface)合成的,也即是,多个图层通过叠加的方式组成电子设备的显示界面。请参考图1,手机的显示界面可以由顶部的状态栏11、底部的导航栏12以及中间的应用界面13这3个图层合成,应用界面13为当前正在前台运行的应用的应用界面。
目前,图层合成方式包括图形处理器(Graphics Processing Unit,GPU)合成和硬件合成器(hwcomposer,HWC)合成两种。GPU是一种通用的图像处理设备,GPU除了用于图层的合成,还用于完成其他图形处理任务,而HWC是一种专用图像处理设备,HWC合成和GPU合成相比,具有性能高,合成速度快等优点。HWC合成时,由于待合成的每个图层需要占用HWC的一个传输通道,因此HWC支持合成的图层数受到HWC具有的传输通道的限制。当待合成图层的数量大于HWC支持合成的图层数时,需要GPU先将待合成图层中的部分图层合成为一个合成图层,再将该合成图层与剩余图层一起发送给HWC,由HWC进行合成和送显,这样屏幕上就可以显示出由待合成图层合成的一帧图像。
上述图层合成过程中,如果待合成图层的数量大于HWC支持合成的图层数,HWC需要等待GPU合成完成之后,才能将GPU的合成结果与剩余图层进行合成,合成周期较长,合成效率和灵活性较低,可能导致一帧图像显示周期内无法完成图层合成和送显工作,造成卡帧丢失。
发明内容
本申请提供了一种图层合成方法、设备及计算机可读存储介质,可以解决相关技术中存在的合成周期较长,合成效率和灵活性较低的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供了一种图层合成方法,该方法应用于电子设备中,电子设备包括图层管理模块和HWC,包括:
图层管理模块获取待合成图层中的新建图层或图层信息发生变化的图层作为第一图层,将获取的第一图层发送给HWC,由HWC对获取的第一图层和第一合成图层进行合成,得到第二合成图层,第一合成图层为HWC在第二合成图层之前合成的图层。
也即是,在待合成图层相对于上一帧图像中的图层来说仅部分图层发生变化而其他图层未发生变化的情况下,图层管理模块可以获取待合成图层中相对于上一帧图像中的图层发生变化的图层,以及获取HWC上一次合成的合成结果,仅将发生变化的图层和HWC上一次合成的合成结果发送给HWC进行合成,无需将待合成图层都发送给HWC进行合成。
如此,可以减少图层合成数,提高合成效率和灵活性。而且,由于这种图层合成方式需要合成的图层数较少,因此可以在一定程度上保证发送给HWC的待合成图层数不会超出HWC支持合成的图层数,使得图层合成时可以直接通过HWC进行合成,而不需要先通过GPU进行合成,再通过HWC进行合成,从而可以节省合成时间,提高HWC的利用率,避免HWC需要等待GPU合成完成之后才能将GPU的合成结果与剩余图层进行合成,可能导致一帧图像显示周期内无法完成图层合成和送显工作,造成卡帧丢失的问题。
其中,图层管理模块用于实现图层的创建、控制、管理等功能。图层管理模块可以为Surfaceflinger。Surfaceflinger是一种***服务。在电子设备的显示***中,可以通过Surfaceflinger实现图层的合成。比如,在应用启动后,Surfaceflinger可以为该应用创建一个图层。在终端运行的过程中,Surfaceflinger可以获取终端运行的各种应用待显示的图层,通过GPU和/或HWC对获取的图层进行合成。
其中,待合成图层为待显示图层,即待显示在显示屏幕的下一帧显示画面中的图层。待合成图层可以包括新建图层和图层信息发生变化的图层,还可以包括图层信息未发生变化的图层。
图层管理模块可以在Vsync信号到来时,获取待显示在显示画面的下一帧显示画面中的图层作为待合成图层,然后从待合成图层中获取新建图层以及图层信息发生变化的图层,得到一个或多个第一图层。也即是,可以由Vsync信号触发Surfaceflinger的图层合成流程。
其中,图层信息包括图层属性或显示数据。图层属性包括位置区域,位置区域用于指示图层的位置和大小。位置区域可以用图层的各个端点在显示屏幕上的像素坐标来表示。比如,图层区域可以用图层的左、上、右、下这4个端点的像素坐标来表示。另外,图层属性还可以包括层级等属性。
其中,图层信息发生变化是指某个待合成图层在待显示画面中的图层信息相对于该待合成图层在上一帧的已合成图层中的图层信息发生变化,即某个待合成图层在当前Vsync周期内的图层信息相对于在上一个Vsync周期内的图层信息发生变化,这种待合成图层称为图层信息发生变化的图层。
图层管理模块可以预先记录待合成图层中已创建图层在上一帧的已合成图层中的图层信息,在获取到待合成图层之后,可以将待合成图层的图层信息与已记录的图层信息进行比较,来确定待合成图层的图层信息是否发生变化。
在一种可能的实现方式中,图层管理模块可以在将获取的第一图层发送给HWC之前,先确定获取的第一图层是否满足预设合成条件;若确定获取的第一图层满足预设合成条件,则再获取的第一图层发送给HWC。
其中,预设合成条件可以包括:获取的第一图层中任一第一图层的层级大于或等于剩余图层的最大层级,剩余图层是指待合成图层中除获取的第一图层之外的图层。
图层的层级用于描述图层在显示屏幕平面的垂直方向上的前后顺序,图层的层级越大,则图层在显示屏幕平面的垂直方向上越靠前,在图层之间越靠上。获取的第一图层中任一第一图层的层级大于或等于剩余图层的最大层级是指获取的第一图层在剩余图层的上方。
当获取的第一图层在剩余图层的上方时,待合成图层的合成结果中获取的第一图层将在其他图层的上方,而如果将获取的第一图层与上一帧的已合成图层进行合成,获取的第一图层也将在已合成图层的上方,如此可以保证获取的第一图层与已合成图层的合成结果与待合成图层的合成结果一致。这种情况下,确定可以采用将获取的第一图层与已合成图层进行合成的方式进行图层合成,也即是,确定获取的第一图层满足预设合成条件。
另外,预设合成条件还可以包括:若获取的第一图层包括图层信息发生变化的第一图层,则图层信息发生变化的第一图层的位置区域能够完全覆盖变化前的第一图层的位置区域。变化前的第一图层的位置区域是指第一图层在上一帧的已合成图层中的位置区域。
作为一个示例,在获取待合成图层中的第一图层之后,还可以确定获取的第一图层是否包括图层信息发生变化的第一图层。若确定获取的第一图层包括图层信息发生变化的第一图层,再判断图层信息发生变化的第一图层的位置区域是否能够完全覆盖变化前的第一图层的位置区域。若确定图层信息发生变化的第一图层的位置区域是否能够完全覆盖变化前的第一图层的位置区域,则确定获取的第一图层满足预设合成条件,可以将获取的第一图层与上一帧的已合成图层进行合成。
在获取的第一图层是否包括图层信息发生变化的第一图层时,已合成图层中包括图层信息发生变化前的第一图层,如果图层信息发生变化的第一图层的位置区域能够完全覆盖变化前的第一图层的位置区域,则在将获取的第一图层与已合成图层进行合成时,图层信息发生变化的第一图层也就可以完全覆盖已合成图层中图层信息发生变化前的第一图层。如此可以避免获取的第一图层与已合成图层合成得到的合成图层上会露出已合成图层中图层变化前的第一图层的部分区域,使得获取的第一图层与已合成图层的合成结果与待合成图层的合成结果保持一致,提高图层合成效果。
在一种可能的实现方式中,图层管理模块在将获取的第一图层发送给HWC之前,可以先获取HWC已合成的第一合成图层,然后将获取的第一图层和第一合成图层发送给HWC,由HWC对获取的第一图层和第一合成图层进行合成。
作为一个示例,图层管理模块可以调用回调函数,通过该回调函数获取HWC已合成的第一合成图层。其中,该回调函数用于获取HWC已合成的合成图层。
其中,该回调函数可以由图层管理模块预先注册得到。比如,图层管理模块可以调用回调函数注册接口,通过该回调函数注册接口为HWC注册该回调函数,以便后续可以通过调用该回调函数来获取HWC已合成的合成图层。
在一种可能的实现方式中,图层管理模块在将获取的第一图层发送给HWC时,还可以向HWC发送图层合成请求,该图层合成请求携带获取的第一图层,该图层合成请求用于请求HWC获取已合成的第一合成图层,对获取的第一图层和第一合成图层进行合成。HWC接收到该图层合成请求后,即可获取已合成的第一合成图层,然后对获取的第一图层和第一合成图层进行合成。
一般来说,获取的第一图层和第一合成图层的总图层数要小于待合成图层的总图层数,也即是,获取的第一图层和第一合成图层的总图层数较小,一般不会超出HWC支持合成的图层数,因此可以将获取的第一图层,或者将获取的第一图层和第一合成图层一起发送HWC进行合成。
但是,也不排除获取的第一图层和第一合成图层的总图层可能会大于HWC支持合成的图层数的情况,因此为了保证HWC需要合成的图层数不会超出HWC支持合成的图层数,在将获取的第一图层发送给HWC之前,还可以先向HWC发送合成策略获取请求,以请求获取该获取的第一图层和第一合成图层的合成策略。
在一种可能的实现方式中,图层管理模块将获取的第一图层和第一合成图层发送给HWC之前,还可以先向HWC发送第一合成策略获取请求,第一合成策略获取请求携带所述获取的第一图层的相关信息。HWC接收第一合成策略获取请求,根据获取的第一图层的相关信息以及第一合成图层的相关信息,确定第一合成策略,将第一合成策略发送给图层管理模块。其中,第一合成策略包括获取的第一图层和第一合成图层中各个图层对应的合成方式,合成方式为GPU合成或HWC合成。图层管理模块若根据第一合成策略,确定获取的第一图层和第一合成图层中各个图层对应的合成方式均为HWC合成,则执行将获取的第一图层发送给HWC的步骤。
其中,获取的第一图层的相关信息可以包括获取的第一图层的图层数、各个图层的图层身份标识号(identity document,ID)和图层属性中的一种或多种。第一合成图层的相关信息可以包括第一合成图层的图层ID和图层属性中的一种或多种。第一合成图层的相关信息可以由图层管理模块发送得到,也可以由HWC确定得到,本申请实施例对此不做限定。
作为一个示例,HWC可以根据获取的第一图层和第一合成图层的相关信息,以及HWC的硬件性能,来确定第一合成策略。其中,HWC的硬件性能至少包括HWC支持合成的图层数,当然也可以包括其他硬件性能。
比如,若根据获取的第一图层和第一合成图层的相关信息,以及HWC的硬件性能,确定获取的第一图层和第一合成图层的总图层数小于或等于HWC支持合成的图层数,可以将获取的第一图层和第一合成图层中各个图层对应的合成方式均确定为HWC合成。
再比如,若根据获取的第一图层和第一合成图层的相关信息,以及HWC的硬件性能,确定获取的第一图层和第一合成图层的总图层数大于HWC支持合成的图层数,则可以将获取的第一图层和第一合成图层中一部分图层对应的合成方式确定为GPU合成,另一部分图层对应的合成方式确定为HWC合成。
作为一个示例,第一合成策略获取请求可以携带获取的第一图层和第一合成图层的相关信息。获取的第一图层和第一合成图层的相关信息可以包括获取的第一图层和第一合成图层的总图层数、各个图层的图层ID和图层属性中的一种或多种。
另外,图层管理模块若根据第一合成策略,确定获取的第一图层和第一合成图层中各个图层对应的合成方式包括GPU合成和HWC合成,则可以先通过GPU对获取的第一图层和第一合成图层中对应合成方式为GPU合成的图层进行合成,得到第三合成图层。然后将获取的第一图层和第一合成图层中对应合成方式为HWC合成的图层,以及第三合成图层发送给HWC。由HWC对获取的第一图层和第一合成图层中对应合成方式为HWC合成的图层,以及第三合成图层进行合成,得到第四合成图层。
另外,图层管理模块若确定获取的第一图层不满足预设合成条件,还可以向HWC发送合成第二策略获取请求,第二合成策略获取请求携带待合成图层的相关信息。HWC接收第二合成策略获取请求,根据待合成图层的相关信息,确定待合成图层的第二合成策略,第二合成策略包括待合成图层中各个图层对应的合成方式,合成方式为GPU合成或HWC合成。HWC将第二合成策略发送给图层管理模块。图层管理模块按照第二合成策略,对待合成图层进行合成。
作为一个示例,图层管理模块按照所述第二合成策略,对待合成图层进行合成,包括:图层管理模块若根据第二合成策略,确定待合成图层中各个图层的合成方式包括GPU合成和HWC合成,则通过GPU对待合成图层中对应合成方式为GPU合成的图层进行合成,得到第五合成图层。然后将第五合成图层和待合成图层中对应合成方式为HWC合成的图层发送给HWC,由HWC对第五合成图层和待合成图层中对应合成方式为HWC合成的图层进行合成,得到第六合成图层。
作为另一个示例,图层管理模块按照第二合成策略,对待合成图层进行合成,包括:图层管理模块若根据第二合成策略,确定待合成图层对应的合成方式均为HWC合成,则将待合成图层发送给HWC,由HWC对待合成图层进行合成,得到第七合成图层。
第二方面,提供了一种图层合成装置,所述图层合成的装置具有实现上述第六方面中图层合成方法行为的功能。所述图层合成装置包括至少一个模块,所述至少一个模块用于实现上述第一方面所提供的图层合成方法。
第三方面,提供了一种图层合成装置,所述图层合成装置的结构中包括处理器和存储器,所述存储器用于存储支持图层合成装置执行上述第一方面所提供的图层合成方法的程序,以及存储用于实现上述第一方面所述的图层合成方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述图层合成装置还可以包括通信总线,所述通信总线用于在所述处理器与所述存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的图层合成方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的图层合成方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与上述第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1是本申请实施例提供的一种手机的显示界面的示意图;
图2是本申请实施例提供的一种多个surface在Z轴上的顺序的示意图;
图3是相关技术提供的一种图层合成流程的示意图;
图4是相关技术提供的另一种图层合成流程的示意图;
图5是相关技术提供的一种基于Vsync信号执行显示流程的示意图;
图6是本申请实施例提供的一种图层合成流程的示意图;
图7是本申请实施例提供的一种基于Vsync信号执行显示流程的示意图;
图8是本申请实施例提供的一种电子设备的***架构示意框图;
图9是本申请实施例提供的一种图层合成方法的流程图;
图10是本申请实施例提供的另一种图层合成方法的流程图;
图11是本申请实施例提供的又一种图层合成方法的流程图;
图12是本申请实施例提供的一种第三合成图像的示意图;
图13是本申请实施例提供的一种第四合成图像的示意图;
图14是本申请实施例提供的一种第五合成图像的示意图;
图15是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
为了便于理解本申请,首先对本申请实施例涉及的名词进行解释。
(1)图层(surface):每个应用程序可能对应着一个或者多个图形界面,每个图形界面可称为surface。电子设备的显示界面通常是由多个surface合成的。
请参考图1,图1是本申请实施例提供的一种手机的显示界面的示意图。如图1所示,手机的显示画面由顶部的状态栏11、底部的导航栏12以及中间的应用界面13这3个图层合成。应理解,终端设备的显示画面也可以由其他图层合成,本申请实施例仅是以图1为例进行说明。
其中,顶部的状态栏11为状态栏应用对应的图层。底部的导航栏12为导航栏应用对应的图层。应用界面13为当前应用对应的图层,当前应用是指当前正在前台运行的应用。
其中,状态栏11用于指示手机的状态,比如可以包括网络状态、电池状态、设备连接状态、手机设置状态或时间等状态图标。导航栏12用于进行界面切换,比如可以包括返回键、主页键和正在运行的程序查看键等导航图标。
显示界面中的每个surface在屏幕上有它的位置、大小,以及需要显示的内容。在应用运行过程中,应用对应的surface的位置、大小或显示的内容可能会发生改变。
每个surface具有对应的图层属性,图层属性可以包括对应图层的位置、大小等信息。另外,每个图层还具有对应的缓冲队列(buffer queue),buffer queue用于存储对应图层的显示数据,该显示数据用于指示对应图层的显示内容。图层的显示数据可以为对图层进行渲染后得到的图像。
另外,显示界面中的多个surface之间可能有重叠,各个surface之间的层叠关系可以用层级来描述。层级用于描述各个surface在显示屏幕平面的垂直方向上的前后顺序,即描述各个surface之间的上下覆盖关系。surface的层级越大,则surface在显示屏幕平面的垂直方向上越靠前。
比如,层级可以用Z-order描述。在屏幕平面的垂直方向存在一个Z轴,所有的surface根据在Z轴上的坐标来确定前后顺序,即描述各个surface之间的上下覆盖关系。这个在Z轴上的顺序,可称为Z-order。
请参考图2,图2是本申请实施例提供的一种多个surface在Z轴上的顺序的示意图。其中,按照在屏幕上显示时从顶至底的顺序,屏幕上包括surface0、surface1和surface2。surface2部分覆盖surface1,surface1部分覆盖surface0。surface0、surface1和surface2的Z-order分别表示为:0,1,2,即surface0、surface1和surface2的层级分别为0,1,2。
终端设备中与图层合成相关的软件包括但不限于:图层管理模块(Surfaceflinger)。终端设备中与图层合成有关的硬件包括但不限于:GPU和HWC。GPU和HWC用于为Surfaceflinger提供硬件支持。
(2)Surfaceflinger(图层投递者):Surfaceflinger是一个***服务。这个***服务主要用于实现Surface的创建、控制、管理等功能。
在电子设备的显示***中,可以通过Surfaceflinger实现图层的合成。比如,在应用启动后,Surfaceflinger可以为该应用创建一个图层。在终端运行的过程中,Surfaceflinger可以获取终端运行的各种应用待显示的图层,通过GPU和/或HWC对获取的图层进行合成。
作为一个示例,应用启动后可以向Surfaceflinger发送图层创建请求。Surfaceflinger接收到应用的图层创建请求后,为该应用创建对应的图层,并将创建的图层的图层ID返回给应用。其中,所创建的图层具有对应的图层属性,图层属性可以包括图层的大小和位置等信息。
另外,Surfaceflinger还可以为创建的图层分配对应的缓存队列(bufferqueue),该缓存队列用于存储该图层的显示数据。应用在根据视图更新请求对该应用的图层进行渲染处理,得到该图层的显示数据之后,可以先将该图层的显示数据存储在该图层对应的缓存队列中。
(3)GPU合成:GPU是一种通用的图像处理设备,GPU除了用于图层的合成,还用于完成其他图形处理任务。GPU合成是指通过GPU对图层进行合成的图层合成方式。
(4)HWC合成:HWC是一种专用图像处理设备,用于进行图层合成和显示。HWC可以是独立的器件,也可以集成在***级芯片中。HWC合成是指通过HWC对图层进行合成的图层合成方式。在HWC合成过程中,由于每个图层需要占用HWC的一个传输通道,而HWC的传输通道有限,因此HWC支持合成的图层数有限。
其中,HWC合成和GPU合成的合成方式对比可以如下表1所示:
表1
合成方式 | 耗电情况 | 性能情况 | 其他限制 |
GPU合成 | 耗电高 | 性能低 | 支持合成的图层数没有限制 |
HWC合成 | 耗电低 | 性能高 | 支持合成的图层数有限 |
由表1可知,HWC合成和GPU合成相比,具有耗电低,性能高,合成速度快等优点。
但是,由于HWC支持合成的图层数有限,因此当待合成图层的数量大于HWC支持合成的图层数时,需要GPU先将待合成图层中的部分图层进行合并,再将GPU的合成结果与待合成图层中的剩余图层一起发送给HWC,由HWC对GPU的合成结果和剩余图层进行合成,得到待显示图层,然后对该待显示图层进行送显,这样屏幕上就可以显示出由待合成图层合成的一帧图像。
请参考图3,图3是相关技术提供的一种图层合成流程的示意图。如图3所示,假设手机的待显示界面包括顶部的状态栏11、底部的导航栏12和中间的第一应用的应用界面13这3个surface,HWC支持合成的图层数为2。在对待显示界面包括的3个surface进行图层合成时,Surfaceflinger可以先将状态栏11和应用界面13这两个图层发送给GPU,由GPU对状态栏11和应用界面13这两个图层进行合成,得到合成图层14。之后,再将合成图层14和剩下的导航栏12发送给HWC,由HWC对将导航栏12和合成图层14进行合成,得到合成图层15。图层合成完成之后,再由HWC对合成图层15进行送显,以将合成图层15推送至手机的显示屏幕,由显示屏幕进行显示。
其中,对多个图层进行合并,是指获取多个图层中每个图层的显示数据,对多个图层的显示数据进行合并。图层的显示数据可以从图层对应的缓存队列中获取得到。
请参考图4,图4是相关技术提供的另一种图层合成流程的示意图。如图4所示,假设待显示界面包括顶部的状态栏、底部的导航栏和中间的第一应用的应用界面这3个图层,且HWC支持合成的图层数为2。在需要对待显示界面包括的3个图层进行图层合成时,Surfaceflinger可以先从状态栏对应的缓存队列获取状态栏的显示数据,从第一应用的应用界面对应的缓存队列获取第一应用的应用界面的显示数据,以及从导航栏对应的缓存队列获取导航栏的显示数据。由于待合成的图层数超出HWC支持合成的图层数,因此Surfaceflinger可以先将状态栏的显示数据和第一应用的应用界面的显示数据发送给GPU,由GPU对状态栏的显示数据和第一应用的应用界面的显示数据进行合成,得到合成图层的显示数据,并将合成图层的显示数据保存在合成图层对应的缓存队列中。然后,Surfaceflinger再将合成图层对应的显示数据和导航栏的显示数据发送给HWC,由HWC对合成图层的显示数据和导航栏的显示数据进行合并,得到待显示帧图像,并对待显示帧图像进行送显,由显示屏幕显示。
另外,电子设备的显示***的显示流水线主要包括应用(Application,APP)渲染、图层合成和硬件送显三个流程。也就是说,对于某一帧图像而言,需要显示***依次执行应用渲染流程、SurfaceFlinger合成流程和硬件送显流程后才能显示于显示屏。其中,应用渲染流程是指根据视图更新请求对应用的图层进行渲染。图层合成流程是指对应用渲染流程渲染的多个图层进行合成,生成合成图层,该合成图层为待显示帧图像。硬件送显流程是指将图层合成流程生成的合成图层进行硬件显示处理,并推送至显示屏幕。
为了避免显示卡顿,提升图形的视觉表现,显示***通过垂直同步(VerticalSynchronization,Vsync)信号进行显示流水线各个流程的同步。Vsync信号由Surfaceflinger生成,也即是,Surfaceflinger还用于生成Vsync信号并分发。
对某一帧图像而言,显示***基于Vsync信号对该帧图像进行显示时,需要在第N个Vsync周期执行应用渲染流程,在第N+1个Vsync周期执行图层合成流程,在第N+2个Vsync周期执行硬件送显流程。也就是说,一帧图像从应用渲染到硬件送显至少需要2个Vsync周期时间。
一般来说,Vsync信号可以同时触发应用渲染流程、图层合成流程和硬件送显流程。示例性的,图5是相关技术提供的一种基于Vsync信号执行显示流程的示意图。如图5所示,显示***可以在第N个Vsync周期执行第1帧图像的应用渲染流程,在第N+1个Vsync周期执行第1帧图像的图层合成流程,在第N+2个Vsync周期执行第1帧图像的硬件送显流程。另外,在第N+1个Vsync信号到来时,即在第N+1个Vsync周期开始时,还可以启动第2帧图像的应用渲染流程,在第N+2个Vsync周期执行第2帧图像的图层合成流程,在第N+3个Vsync周期执行第2帧图像的硬件送显流程。另外,在第N+2个Vsync信号到来时,即在第N+2个Vsync周期开始时,还可以启动第3帧图像的应用渲染流程,在第N+3个Vsync周期执行第3帧图像的图层合成流程,在第N+4个Vsync周期执行第2帧图像的硬件送显流程。由此可知,各帧图像之间的显示流程是单独进行的,相互之间没有关联。
但是,在上述先通过GPU对部分待合成图层进行合成,再通过HWC对GPU的合成结果和剩余待合成图层进行合成的图层合成过程中,HWC需要等待GPU合成完成之后,才能将GPU的合成结果与剩余图层进行合成,合成效率和灵活性较低。再加上GPU的性能较低,耗时较久等因素,将导致图层合成工作的总合成周期较长,可能导致一帧图像显示周期内无法完成图层合成和送显工作,造成卡帧丢失。
本申请实施例中,为了节省图层合成时长,提高图层合成效率和灵活性,Surfaceflinger获取到待合成图层之后,可以先从待合成图层中获取新建的第一图层和图层信息发生变化的第一图层,再将获取的第一图层发送给HWC,由HWC对获取的第一图层和第一合成图层进行合成,得到第二合成图层,第一合成图层为HWC在第二合成图层之前合成的图层。
其中,待合成图层中的新建图层和图层信息发生变化的图层是相对于上一帧图像中的图层而言,是指待合成图层中相对于上一帧图像中的图层发生变化的图层。第一合成图层是由上一帧图像中的各个图层合成的,包括待合成图层中相对于上一帧图像中的图层未发生变化的图层,因此通过将获取的第一图层和第一合成图层进行合成,即可实现将待合成图层中相对于上一帧图像中的图层发生变化的图层和未发生变化的图层进行合成,也即是,获取的第一图层和第一合成图层的合成结果与所有待合成图层的合成结果在显示形式上是相同的。
也即是,在待合成图层相对于上一帧图像中的图层来说仅部分图层发生变化而其他图层未发生变化的情况下,Surfaceflinger可以获取待合成图层中相对于上一帧图像中的图层发生变化的图层,以及获取HWC上一次合成的合成结果,仅将发生变化的图层和HWC上一次合成的合成结果发送给HWC进行合成,无需将待合成图层都发送给HWC进行合成。
如此,可以减少图层合成数,提高合成效率和灵活性。而且,由于这种图层合成方式需要合成的图层数较少,因此可以在一定程度上保证发送给HWC的待合成图层数不会超出HWC支持合成的图层数,使得图层合成时可以直接通过HWC进行合成,而不需要先通过GPU进行合成,再通过HWC进行合成,从而可以节省合成时间,提高HWC的利用率,避免HWC需要等待GPU合成完成之后才能将GPU的合成结果与剩余图层进行合成,可能导致一帧图像显示周期内无法完成图层合成和送显工作,造成卡帧丢失的问题。
请参考图6,图6是本申请实施例提供的一种图层合成流程的示意图。如图6所示,假设手机的待显示界面包括顶部的状态栏11、底部的导航栏12和中间的第一应用的应用界面13这3个图层,HWC支持合成的图层数为2。在Surfaceflinger通过GPU对状态栏11和应用界面13这两个图层进行合成,得到合成图层14,再通过HWC对合成图层14和剩下的导航栏12进行合成,得到合成图层15,并对合成图层15进行送显,由显示屏幕进行显示之后,假设中间的第一应用的应用界面13的显示数据发生变化(显示数据发生变化后的应用界面13称为应用界面16),而顶部的状态栏11和底部的导航栏12未发生变化,则Surfaceflinger可以获取HWC的上一次合成结果即合成图层15,将应用界面16和合成图层15作为待合成图层。由于待合成图层未超出HWC支持合成的图层数2,因此,Surfaceflinger可以直接将应用界面16和合成图层15发送给HWC,由HWC对应用界面16和合成图层15进行合成,得到合成图层17,再对合成图层17进行送显,以将合成图层17推送至手机的显示屏幕,由显示屏幕进行显示。其中,由应用界面16和合成图层15合成的合成图层17与由状态栏11、导航栏12和应用界面16合成的合成结果是相同的,合成图层17为合成图层15的下一帧显示图像。
也即是,在状态栏11、导航栏12和应用界面13这3个图层中仅部分图层发生变化的情况下,可以仅将发生变化的图层和HWC的上一次合成结果作为待合成图层发送给HWC,由HWC进行合成,而无需将未发生变化的状态栏11、导航栏12和变化后的应用界面15均作为待合成图层进行合成。如此,可以减少图层合成数,提高合成效率和灵活性,在一定程度上保证发送给HWC的待合成图层数不会超出HWC支持合成的图层数,使得图层合成时可以直接通过HWC进行合成,节省合成时间,提高HWC的利用率。
示例性的,图7是本申请实施例提供的一种基于Vsync信号执行显示流程的示意图。如图7所示,显示***可以在第N个Vsync周期执行第1帧图像的应用渲染流程,在第N+1个Vsync周期执行第1帧图像的图层合成流程,在第N+2个Vsync周期执行第1帧图像的硬件送显流程。另外,在第N+1个Vsync周期开始时,还可以启动第2帧图像的应用渲染流程,在第N+2个Vsync周期执行第2帧图像的图层合成流程,在第N+3个Vsync周期执行第2帧图像的硬件送显流程。但是在第N+2个Vsync周期执行第2帧图像的图层合成流程时,可以基于第N+1个Vsync周期的应用渲染结果以及第N+1个Vsync周期执行的第1帧图像的图层合成结果,来执行第2帧图像的图层合成流程,也即是,第N+2个Vsync周期的图层合成流程可以利用第N+1个Vsync周期的图层合成结果。另外,在第N+2个Vsync周期开始时,还可以启动第3帧图像的应用渲染流程,在第N+3个Vsync周期执行第3帧图像的图层合成流程,在第N+4个Vsync周期执行第3帧图像的硬件送显流程。但是在第N+3个Vsync周期执行第2帧图像的图层合成流程的过程中,可以基于第N+2个Vsync周期的应用渲染结果以及第N+2个Vsync周期执行的第2帧图像的图层合成结果,来执行第3帧图像的图层合成流程,也即是,第N+3个Vsync周期的图层合成流程可以利用第N+2个Vsync周期的图层合成结果。由此可知,本申请实施例中,各帧图像之间的显示流程是相互关联的,每帧图像的图层合成流程可以利用上一帧图像的图层合成结果进行图层合成。
本申请实施例提供的图层合成方法可以应用于电子设备中,电子设备可以为终端或服务器等电子设备。终端可以为手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personaldigital assistant,PDA)等终端,可穿戴设备可以为智能手表或智能手环等,本申请实施例对此不做限定。
图8是本申请实施例提供的一种电子设备800的***架构示意框图。如图8所示,电子设备800的***包括应用层810,框架层820,内核层830以及硬件层840。
如图8所示,应用层810可以包括一系列应用程序811,以及绘制渲染线程812。比如,应用层810可以包括桌面(launcher)、媒体播放器(Media Player)、浏览器(Browser)等应用程序。应用层810中的应用程序811可以调用绘制渲染线程812对应用程序811对应的图层进行渲染。应用层也称应用程序层。
框架层820为应用层810的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层还可以称为***服务框架层。应用程序框架层包括一些预先定义的函数。框架层也称应用程序框架层。
如图8所示,框架层820可以包括图层管理模块821,图层管理模块821用于图层的创建、控制和管理等功能。比如,图层管理模块821可以为Surfaceflinger等。Surfaceflinger是一种***服务,Surfaceflinger可以为应用层810中的应用程序创建对应的图层。在应用层810中的应用程序运行的过程中,Surfaceflinger还可以获取应用层810中的应用程序渲染的图层,对获取的图层进行合成。比如,Surfaceflinger可以通过GPU和/或CPU对获取的图层进行合成。
内核层830是硬件和软件之间的层。内核层830至少包含CPU驱动831,GPU驱动832,HWC驱动833,以及显示驱动834等驱动模块。内核层830的其他架构将在下文另一示例***中详细描述,在此不再赘述。CPU驱动831用于驱动CPU,GPU驱动832用于驱动GPU,HWC驱动833用于驱动HWC,显示驱动834用于驱动显示屏幕。
在另一些实施例中,电子设备800的***还可以包括***库层,该***库层位于框架层和内核层之间,在此不做限制。***库可以包括多个功能模块。比如,***库可以包括表面管理器(surface manager)、媒体库(media libraries)、三维图形引擎(例如:OpenGLES)和2D图形引擎。
表面管理器用于对显示子***进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体库支持多种常用的音频、视频格式回放和录制,以及静态图形文件等。三维图形引擎用于实现三维图形绘制,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
硬件层840包括CPU841,GPU842,HWC843以及显示屏幕844等实体器件。显示屏幕844可以为液晶显示器(liquid crystal display,LCD)、发光二极管(light-emittingdiode,LED)显示屏、阴极射线显像管(cathode ray tube,CRT)显示屏、全息成像(Holographic)、投影(Projector)等。
基于上述图8所示的电子设备800的***框架,下面结合交互流程示意图具体说明图8所示的电子设备800实施本申请的图层合成方法的过程中电子设备800的***各结构之间的具体交互过程,并具体介绍图8所示***架构中各结构的具体功能。
图9是本申请实施例提供的一种图层合成方法的流程图,该方法应用于上述图8所示的电子设备800中,如图9所示,该方法包括如下步骤:
步骤901:Surfaceflinger获取待合成图层中的第一图层,第一图层为新建图层或图层信息发生变化的图层,图层信息包括图层属性或显示数据。
其中,待合成图层为待显示图层,即待显示在显示屏幕的下一帧显示画面中的图层。待合成图层可以包括新建图层和图层信息发生变化的图层,还可以包括图层信息未发生变化的图层。
Surfaceflinger可以在Vsync信号到来时,获取待显示在显示画面的下一帧显示画面中的图层作为待合成图层,然后从待合成图层中获取新建图层以及图层信息发生变化的图层,得到一个或多个第一图层。也即是,可以由Vsync信号触发Surfaceflinger的图层合成流程。
其中,图层属性包括位置区域,位置区域用于指示图层的位置和大小。位置区域可以用图层的各个端点在显示屏幕上的像素坐标来表示。比如,图层区域可以用图层的左、上、右、下这4个端点的像素坐标来表示。另外,图层属性还可以包括层级等属性。
其中,图层信息发生变化是指某个待合成图层在待显示画面中的图层信息相对于该待合成图层在上一帧的已合成图层中的图层信息发生变化,即某个待合成图层在当前Vsync周期内的图层信息相对于在上一个Vsync周期内的图层信息发生变化,这种待合成图层称为图层信息发生变化的图层。
其中,图层信息发生变化是指图层属性或显示数据发生变化。比如,若某个待合成图层的位置区域相对于该待合成图层在上一帧图像中的位置区域发生变化,则将该待合成图层确定为第一图层。或者,若某个待合成图层的显示数据相对于该待合成图层在上一帧图像中的显示数据发生变化,则将该待合成图层确定为第一图层。
Surfaceflinger可以预先记录待合成图层中已创建图层在上一帧的已合成图层中的图层信息,在获取到待合成图层之后,可以将待合成图层的图层信息与已记录的图层信息进行比较,来确定待合成图层的图层信息是否发生变化。
如图6所示,假设手机的当前显示界面由顶部的状态栏11、底部的导航栏12和中间的第一应用的应用界面13这3个图层合成。在显示当前显示界面时,第一应用接收到视图更新请求,根据视图更新请求调用应用渲染进程对第一应用的应用界面13进行渲染,使得第一应用的应用界面13的显示数据发生变化,而位置区域不发生变化。为了便于说明,将应用界面13渲染后的图层称为应用界面14。而状态栏应用和导航栏应用未接收到视图更新请求,不需要对状态栏11和导航栏12进行渲染,也即是,状态栏11和导航栏12的图层信息未发生变化。
也即是,当前显示界面的待显示界面包括状态栏11、导航栏12和应用界面14这3个图层,Surfaceflinger可以获取状态栏11、导航栏12和应用界面14这3个图层作为待合成图层。待合成图层中包括图层信息未发生变化的状态栏11和导航栏12,以及显示数据发生变化的应用界面14。
步骤902:Surfaceflinger判断获取的第一图层是否满足预设合成条件。
其中,预设合成条件可以包括:获取的第一图层中任一第一图层的层级大于或等于剩余图层的最大层级,剩余图层是指待合成图层中除获取的第一图层之外的图层。
图层的层级用于描述图层在显示屏幕平面的垂直方向上的前后顺序,图层的层级越大,则图层在显示屏幕平面的垂直方向上越靠前,在图层之间越靠上。获取的第一图层中任一第一图层的层级大于或等于剩余图层的最大层级是指获取的第一图层在剩余图层的上方。
当获取的第一图层在剩余图层的上方时,待合成图层的合成结果中获取的第一图层将在其他图层的上方,而如果将获取的第一图层与上一帧的已合成图层进行合成,获取的第一图层也将在已合成图层的上方,如此可以保证获取的第一图层与已合成图层的合成结果与待合成图层的合成结果一致。这种情况下,确定可以采用将获取的第一图层与已合成图层进行合成的方式进行图层合成,也即是,确定获取的第一图层满足预设合成条件。
另外,预设合成条件还可以包括:若获取的第一图层包括图层信息发生变化的第一图层,则图层信息发生变化的第一图层的位置区域能够完全覆盖变化前的第一图层的位置区域。变化前的第一图层的位置区域是指第一图层在上一帧的已合成图层中的位置区域。
作为一个示例,在获取待合成图层中的第一图层之后,还可以确定获取的第一图层是否包括图层信息发生变化的第一图层。若确定获取的第一图层包括图层信息发生变化的第一图层,再判断图层信息发生变化的第一图层的位置区域是否能够完全覆盖变化前的第一图层的位置区域。若确定图层信息发生变化的第一图层的位置区域是否能够完全覆盖变化前的第一图层的位置区域,则确定获取的第一图层满足预设合成条件,可以将获取的第一图层与上一帧的已合成图层进行合成。
在获取的第一图层是否包括图层信息发生变化的第一图层时,已合成图层中包括图层信息发生变化前的第一图层,如果图层信息发生变化的第一图层的位置区域能够完全覆盖变化前的第一图层的位置区域,则在将获取的第一图层与已合成图层进行合成时,图层信息发生变化的第一图层也就可以完全覆盖已合成图层中图层信息发生变化前的第一图层。如此可以避免获取的第一图层与已合成图层合成得到的合成图层上会露出已合成图层中图层变化前的第一图层的部分区域,使得获取的第一图层与已合成图层的合成结果与待合成图层的合成结果保持一致,提高图层合成效果。
步骤903:Surfaceflinger若确定获取的第一图层满足预设合成条件,则获取HWC已合成的第一合成图层。
如果确定获取的第一图层满足预设合成条件,也就可以获取HWC已合成的第一合成图层,以便将获取的第一图层和HWC已合成的第一合成图层一起发送给HWC,由HWC进行合成。
其中,第一合成图层是待合成图层的上一帧的已合成图层,即在待合成图层之前合成的图层。比如,HWC可以对多个第二图层进行合成,得到第一合成图层。待合成图层中的每个图层可以为多个第二图层中的任一第二图层,或者为多个第二图层之外的新建图层。相应地,待合成图层中的第一图层为多个第二图层中图层信息发生变化的第二图层,或者在多个第二图层之外的新建图层。
作为一个示例,为了使得Surfaceflinger能够获取到HWC已合成的合成图层,Surfaceflinger可以预先调用回调函数注册接口,通过该回调函数注册接口为HWC注册回调函数,该回调函数用于获取HWC已合成的合成图层。
在Surfaceflinger需要获取HWC已合成的第一合成图层时,Surfaceflinger可以调用已为HWC注册的回调函数,通过该回调函数获取HWC已合成的第一合成图层。
需要说明的是,本申请实施例仅是以Surfaceflinger在确定获取的第一图层满足预设合成条件时,执行获取HWC已合成的第一合成图层的步骤为例进行说明,而在其他实施例中,Surfaceflinger还可以在其他时机获取HWC已合成的第一合成图层。比如,在获取到待合成图层时,或者在Vsync信号到来,触发Surfaceflinger的图层合成流程时,执行获取HWC已合成的第一合成图层的步骤,本申请实施例对此不做限定。
在确定获取的第一图层满足预设合成条件,以及获取到HWC已合成的第一合成图层之后,Surfaceflinger即可将获取的第一图层和第一合成图层一起发送给HWC,由HWC对第一图层和第一合成图层进行合成。
一般来说,获取的第一图层和第一合成图层的总图层数要小于待合成图层的总图层数,也即是,获取的第一图层和第一合成图层的总图层数较小,一般不会超出HWC支持合成的图层数,因此可以将获取的第一图层和第一合成图层一起发送HWC进行合成。
但是,也不排除获取的第一图层和第一合成图层的总图层可能会大于HWC支持合成的图层数的情况,因此为了保证发送给HWC的图层数不会超出HWC支持合成的图层数,在将获取的第一图层和第一合成图层一起发送给HWC之前,还可以先向HWC发送合成策略获取请求,以请求获取该获取的第一图层和第一合成图层的合成策略。
步骤904:Surfaceflinger向HWC发送第一合成策略获取请求,第一合成策略获取请求携带获取的第一图层和第一合成图层的相关信息。
其中,第一合成策略获取请求用于请求获取该获取的第一图层和第一合成图层的合成策略。获取的第一图层和第一合成图层的相关信息可以包括获取的第一图层和第一合成图层的总图层数、各个图层的图层ID和图层属性中的一种或多种。
作为一个示例,若HWC已启动,Surfaceflinger可以直接向HWC发送第一合成策略获取请求。若HWC未启动,Surfaceflinger可以先调用内核层启动HWC驱动,通过HWC驱动启动HWC,再向HWC发送第一合成策略获取请求。
步骤905:HWC接收第一合成策略获取请求,根据获取的第一图层和第一合成图层的相关信息,确定获取的第一图层和第一合成图层的第一合成策略,第一合成策略包括获取的第一图层和第一合成图层中各个图层对应的合成方式,合成方式为GPU合成或HWC合成。
作为一个示例,HWC可以根据获取的第一图层和第一合成图层的相关信息,以及HWC的硬件性能,来确定第一合成策略。其中,HWC的硬件性能至少包括HWC支持合成的图层数,当然也可以包括其他硬件性能。
比如,若根据获取的第一图层和第一合成图层的相关信息,以及HWC的硬件性能,确定获取的第一图层和第一合成图层的总图层数小于或等于HWC支持合成的图层数,可以将获取的第一图层和第一合成图层中各个图层对应的合成方式均确定为HWC合成。
再比如,若根据获取的第一图层和第一合成图层的相关信息,以及HWC的硬件性能,确定获取的第一图层和第一合成图层的总图层数大于HWC支持合成的图层数,则可以将获取的第一图层和第一合成图层中一部分图层对应的合成方式确定为GPU合成,另一部分图层对应的合成方式确定为HWC合成。
需要说明的是,本申请实施例仅是以第一合成策略获取请求携带获取的第一图层和第一合成图层的相关信息为例进行说明。而在其他实施例中,第一合成策略获取请求还可以仅携带第一图层的相关信息。由HWC在接收到第一合成策略获取请求后,确定已合成的第一合成图层的相关信息,再根据获取的第一图层和第一合成图层的相关信息,确定第一合成策略。
步骤906:HWC将第一合成策略发送给Surfaceflinger。
步骤907:Surfaceflinger若根据第一合成策略,确定获取的第一图层和第一合成图层中各个图层对应的合成方式均为HWC合成,则将获取的第一图层和第一合成图层发送给HWC。
步骤908:HWC对获取的第一图层和第一合成图层进行合成,得到第二合成图层。
HWC接收到获取的第一图层和第一合成图层之后,即可对获取的第一图层和第一合成图层进行合成,得到第二合成图层。
在对获取的第一图层和第一合成图层进行合成时,可以按照将第一合成图层置于最底层的方式,对获取的第一图层和第一合成图层进行合成。
也即是,可以将获取的第一图层叠加在第一合成图层之上。比如,可以先按照获取的第一图层的层级,对获取的第一图层依次进行叠加,再将叠加后的图层叠加在第一合成图层之上。
需要说明的是,本申请实施例仅是以Surfaceflinger预先获取HWC已合成的第一合成图层,然后将获取的第一图层和第一合成图层一起发送给HWC进行合成为例进行说明。而在其他实施例中,Surfaceflinger还可以将获取的第一图层发送给HWC,由HWC获取已合成的第一合成图层,将获取的第一图层和第一合成图层进行合成。
比如,Surfaceflinger可以向HWC发送图层合成请求,该图层合成请求携带获取的第一图层,该图层合成请求用于请求HWC获取已合成的第一合成图层,对获取的第一图层和第一合成图层进行合成。HWC接收到该图层合成请求后,即可获取已合成的第一合成图层,然后对获取的第一图层和第一合成图层进行合成。
步骤909:HWC对第二合成图层进行送显。
HWC在对获取的第一图层和第一合成图层进行合成,得到第二合成图层之后,可以对第二合成图层进行硬件显示处理,并推送至显示屏幕。
步骤910:显示屏幕显示第二合成图层。
显示屏幕可以显示HWC送显的第二合成图层。
另外,图层管理模块接收到HWC发送的第一合成策略之后,若根据第一合成策略,确定获取的第一图层和第一合成图层中各个图层对应的合成方式包括GPU合成和HWC合成,还可以先通过GPU对获取的第一图层和第一合成图层中对应合成方式为GPU合成的图层进行合成,再将合成结果与剩余图层一起发送给HWC,由HWC进行合成。
比如,Surfaceflinger若根据第一合成策略,确定获取的第一图层和第一合成图层中各个图层对应的合成方式包括GPU合成和HWC合成,可以执行以下步骤911-步骤917。
步骤911:Surfaceflinger若根据第一合成策略,确定获取的第一图层和第一合成图层中各个图层对应的合成方式包括GPU合成和HWC合成,则将获取的第一图层和第一合成图层中对应合成方式为GPU合成的图层发送给GPU。
作为一个示例,若GPU已启动,Surfaceflinger可以直接将获取的第一图层和第一合成图层中对应合成方式为GPU合成的图层发送给GPU。若GPU未启动,Surfaceflinger可以先调用内核层启动GPU驱动,通过GPU驱动启动GPU,再将获取的第一图层和第一合成图层中对应合成方式为GPU合成的图层发送给GPU。
步骤912:GPU接收获取的第一图层和第一合成图层中对应合成方式为GPU合成的图层,对获取的第一图层和所述第一合成图层中对应合成方式为GPU合成的图层进行合成,得到第三合成图层。
步骤913:GPU将第三合成图层发送给Surfaceflinger。
步骤914:Surfaceflinger将获取的第一图层和第一合成图层中对应合成方式为HWC合成的图层,以及第三合成图层发送给HWC。
步骤915:HWC对获取的第一图层和第一合成图层中对应合成方式为HWC合成的图层,以及第三合成图层进行合成,得到第四合成图层。
步骤916:HWC对第四合成图层进行送显。
步骤917:显示屏幕显示第四合成图层。
本申请实施例中,Surfaceflinger获取到待合成图层之后,可以从待合成图层中获取新建图层,或者图层属性或显示数据发生变化的图层,以及获取HWC已合成的第一合成图层,然后将获取的图层和第一合成图层一起发送给HWC进行合成。也即是,可以仅将待合成图层中相对于上一帧显示画面发生变化的图层和HWC上一次合成的合成结果发送给HWC,由HWC进行合成,无需对所有待合成图层进行合成。如此,可以减少图层合成数,提高合成效率和灵活性。而且,由于这种图层合成方式需要合成的图层数较少,因此可以在一定程度上保证发送给HWC的待合成图层数不会超出HWC支持合成的图层数,使得图层合成时可以直接通过HWC进行合成,而不需要先通过GPU进行合成,再通过HWC进行合成,从而可以节省合成时间,提高HWC的利用率,避免HWC需要等待GPU合成完成之后才能将GPU的合成结果与剩余图层进行合成,可能导致一帧图像显示周期内无法完成图层合成和送显工作,造成卡帧丢失的问题。
另外,在上述图9实施例中的步骤902之后,若Surfaceflinger确定获取的第一图层不满足预设合成条件,还可以按照相关技术中提供的传统图层合成方式对待合成图层进行合成,比如可以执行以下步骤1003-步骤1012。
请参考图10,图10是本申请实施例提供的另一种图层合成方法的流程图,该方法应用于上述图8所示的电子设备800中,如图10所示,该方法包括如下步骤:
步骤1001:Surfaceflinger获取待合成图层中的第一图层,第一图层为新建图层或图层信息发生变化的图层,图层信息包括图层属性和/或显示数据。
步骤1002:Surfaceflinger判断获取的第一图层是否满足预设合成条件。
其中,步骤1001-步骤1002与上述图9实施例中的步骤901-步骤902同理,具体实现过程可以参见上述步骤901-步骤902的相关描述,本申请实施例在此不再赘述。
步骤1003:Surfaceflinger若确定获取的第一图层不满足预设合成条件,则向HWC发送合成第二策略获取请求,第二合成策略获取请求携带待合成图层的相关信息。
其中,待合成图层的相关信息可以包括待合成图层的总图层数、各个图层的图层ID和图层属性中的一种或多种。
步骤1004:HWC接收第二合成策略获取请求,根据待合成图层中各个图层的相关信息,确定待合成图层的第二合成策略,第二合成策略包括待合成图层中各个图层对应的合成方式。
其中,各个图层对应的合成方式可以为GPU合成或HWC合成。
作为一个示例,HWC可以根据待合成图层的相关信息,以及HWC的硬件性能,来确定第二合成策略。其中,HWC的硬件性能至少包括HWC支持合成的图层数,当然也可以包括其他硬件性能。
比如,若根据待合成图层的相关信息,以及HWC的硬件性能,确定待合成图层的总图层数小于或等于HWC支持合成的图层数,可以将待合成图层中各个图层对应的合成方式均确定为HWC合成。
再比如,若根据待合成图层的相关信息,以及HWC的硬件性能,确定待合成图层的总图层数大于HWC支持合成的图层数,则可以将待合成图层中一部分图层对应的合成方式确定为GPU合成,另一部分图层对应的合成方式确定为HWC合成。
步骤1005:HWC将第二合成策略发送给Surfaceflinger。
Surfaceflinger接收到第二合成策略之后,可以按照第二合成策略指示的合成方式,对待合成图层进行合成。
比如,若第二合成策略指示待合成图层中一部分图层对应的合成方式为GPU合成,另一部分图层对应的合成方式确定为HWC合成,则可以先通过GPU对一部分图层进行合成,再将合成结果与另一部分图层一起发送给HWC进行合成。具体实现过程可以参考下述步骤1006-步骤1012。
再比如,若第二合成策略指示待合成图层的合成方式均为HWC合成,则可以直接将待合成图层发送给HWC进行合成。具体实现过程可以参考下述步骤1013-步骤1016。
步骤1006:Surfaceflinger若根据第二合成策略,确定待合成图层中各个图层的合成方式包括GPU合成和HWC合成,则将待合成图层中对应合成方式为GPU合成的图层发送给GPU。
步骤1007:GPU对待合成图层中对应合成方式为GPU合成的图层进行合成,得到第五合成图层。
步骤1008:GPU将第五合成图层发送给Surfaceflinger。
步骤1009:Surfaceflinger将第五合成图层和待合成图层中对应合成方式为HWC合成的图层发送给HWC。
步骤1010:HWC对第五合成图层和待合成图层中对应合成方式为HWC合成的图层进行合成,得到第六合成图层。
步骤1011:HWC对第六合成图层进行送显。
步骤1012:显示屏幕显示第六合成图层。
另外,在步骤1005之后,若图层管理模块若根据所述第二合成策略确定待合成图层对应的合成方式均为HWC合成,还可以执行以下步骤1013-步骤1016。
步骤1013:Surfaceflinger若根据第二合成策略,确定待合成图层对应的合成方式均为HWC合成,则将待合成图层发送给HWC。
步骤1014:HWC对待合成图层进行合成,得到第七合成图层。
步骤1015:HWC对第七合成图层进行送显。
步骤1016:显示屏幕显示第七合成图层。
为了便于理解,下面基于上述图8所示的电子设备800的***框架,结合具体举例说明图8所示的电子设备800实施本申请实施例提供的图层合成方法的过程中电子设备800的***各结构之间的具体交互过程。
图11是本申请实施例提供的又一种图层合成方法的流程图,该方法应用于上述图8所示的电子设备800中,如图11所示,该方法包括如下步骤:
步骤1101:电子设备开机,状态栏应用向Surfaceflinger发送第一创建图层请求。
电子设备开机后,状态栏应用开始启动。状态栏应用可以在启动后,向Surfaceflinger发送第一创建图层请求,以请求Surfaceflinger为状态栏应用创建对应的图层。
步骤1102:Surfaceflinger接收到第一创建图层请求后,为状态栏应用创建图层1。
示例地,图层1的位置区域的各个端点的像素坐标可以为:左0、上0、右1200、下200。另外,图层1的层级可以为0层,0层为显示界面中图层的最底层。
另外,Surfaceflinger为状态栏应用创建图层1之后,还可以为图层1分配对应的缓存队列1,缓存队列1用于保存图层1的显示数据。
步骤1103:Surfaceflinger将图层1的图层ID发送给状态栏应用。
在为状态栏应用创建图层1之后,还可以为图层1分配对应的图层ID,将图层1的图层ID返回给状态栏应用,以便状态栏应用根据图层1的图层ID识别图层1。
另外,为图层1分配对应的缓存队列1之后,还可以为缓存队列1分配对应的缓存队列ID,将缓存队列1的缓存队列ID发送给状态栏应用。
步骤1104:第N个Vsync信号到来,状态栏应用调用绘制渲染线程,通过绘制渲染线程对图层1进行渲染处理,得到图层1的显示数据。
其中,N为大于或等于1的正整数。在Surfaceflinger为状态栏应用创建图层1之后,状态栏应用可以基于Vsync信号触发应用渲染流程,即在Vsync信号到来时触发应用绘制渲染线程。为了便于说明,可以将触发状态栏应用的应用渲染流程的Vsync信号可以称为第N个Vsync信号。
其中,应用渲染流程包括:调用绘制渲染线程,通过绘制渲染线程对图层1进行渲染处理,得到图层1的显示数据。绘制渲染线程为应用层中用于执行渲染处理的线程。
步骤1105:状态栏应用将图层1的显示数据保存在图层1对应的缓存队列1中。
在通过绘制渲染线程对图层1进行渲染处理,得到图层1的显示数据,可以先将图层1的显示数据保存在图层1对应的缓存队列1中,以便在下一个Vsync信号到来时,根据缓存队列1中缓存的显示数据对图层1进行图层合成。
步骤1106:电子设备开机,导航栏应用向Surfaceflinger发送第二创建图层请求。
电子设备开机后,导航栏应用开始启动。导航栏应用可以在启动后,向Surfaceflinger发送第二创建图层请求,以请求Surfaceflinger为导航栏应用创建对应的图层。
需要说明的是,电子设备开机后,状态栏应用和导航栏应用可以同时启动,并在启动后分别向Surfaceflinger发送创建图层请求。当然,状态栏应用和导航栏应用也可以先后启动,本申请实施例对状态栏应用和导航栏应用的启动顺序,以及向Surfaceflinger发送创建图层请求的顺序不做限定。
步骤1107:Surfaceflinger接收到第二创建图层请求后,为导航栏应用创建图层2。
示例地,图层2的位置区域的各个端点的像素坐标可以为:左0、上2000、右1200、下2200。另外,图层2的层级可以为0层。
另外,Surfaceflinger为导航栏应用创建图层2之后,还可以为图层2分配对应的缓存队列2,缓存队列2用于保存图层2的显示数据。
步骤1108:Surfaceflinger将图层2的图层ID发送给导航栏应用。
为导航栏应用创建图层2之后,还可以为图层2分配图层ID,将图层2的图层ID返回给导航栏应用,以便导航栏应用根据图层2的图层ID识别图层2。
另外,为图层2分配对应的缓存队列2之后,还可以为缓存队列2分配缓存队列ID,将缓存队列2的缓存队列ID发送给状态栏应用。
步骤1109:第N个Vsync信号到来,导航栏应用调用绘制渲染线程,通过绘制渲染线程对图层2进行渲染处理,得到图层2的显示数据。
在Surfaceflinger为导航栏应用创建图层2之后,导航栏应用可以基于Vsync信号触发应用渲染流程,即在Vsync信号到来时触发应用绘制渲染线程。
需要说明的是,本申请实施例仅是以触发导航栏应用的应用渲染流程的Vsync信号也为第N个Vsync信号为例进行说明,也即是,在第N个Vsync信号可以同时触发状态栏应用的应用渲染流程,以及导航栏应用的应用渲染流程。当然,在其他实施例中,分别触发状态栏应用和导航栏应用的应用渲染流程的Vsync信号也可以为不同的Vsync信号,比如第N-1个Vsync信号触发导航栏应用的应用渲染流程,第N个Vsync信号触发状态栏应用的应用渲染流程,本申请实施例对此不做限定。
步骤1110:导航栏应用将图层2的显示数据保存在图层2对应的缓存队列2中。
在通过绘制渲染线程对图层2进行渲染处理,得到图层2的显示数据,可以先将图层2的显示数据保存在图层2对应的缓存队列2中,以便在下一个Vsync信号到来时,根据缓存队列2中缓存的显示数据对图层2进行图层合成。
步骤1111:用户打开微信应用。
在电子设备开机后,用户可以根据需要打开电子设备中安装的微信应用。
步骤1112:响应于用户的操作,微信应用启动,向Surfaceflinger发送第三创建图层请求。
微信应用可以在启动之后,向Surfaceflinger发送第三创建图层请求,以请求Surfaceflinger为微信应用创建对应的图层。
应理解,本申请实施例仅是以电子设备根据用户的操作启动微信应用,以便电子设备后续对微信应用对应的图层进行合并为例进行说明,而在其他实施例中,电子设备还可以启动其他应用,如视频应用、新闻应用等,本申请实施例对此不做限定。
步骤1113:Surfaceflinger接收到第三创建图层请求后,为微信应用创建图层3。
示例地,图层3的位置区域的各个端点的像素坐标可以为:左0、上201、右1200、下1999。另外,图层3的层级可以为0层。
另外,Surfaceflinger为微信应用创建图层3之后,还可以为图层3分配对应的缓存队列3,缓存队列3用于保存图层3的显示数据。
步骤1114:Surfaceflinger将图层3的图层ID发送给微信应用。
为微信应用创建的图层3具有对应的图层ID,Surfaceflinger在为微信应用创建图层3之后,还可以将图层3的图层ID返回给状态栏应用,以便状态栏应用根据图层3的图层ID识别图层3。
另外,为图层3分配的缓存队列3具有对应的缓存队列ID,Surfaceflinger还可以将缓存队列3的缓存队列ID发送给微信应用。
步骤1115:第N+M个Vsync信号到来,微信应用调用绘制渲染线程,通过绘制渲染线程对图层3进行渲染处理,得到图层3的显示数据。
在Surfaceflinger为微信应用创建图层3之后,微信应用可以基于Vsync信号触发应用渲染流程,即在Vsync信号到来时触发应用绘制渲染线程。其中,N和M均为正整数。
需要说明的是,本申请实施例仅是以触发触发状态栏应用和导航栏应用的应用渲染流程的Vsync信号为第N个Vsync信号,触发微信应用的应用渲染流程的Vsync信号为第N+M个Vsync信号为例进行说明,在其他实施例中,触发状态栏应用、导航栏应用和微信应用的应用渲染流程的Vsync信号也可以为其他Vsync信号,比如第N-1个Vsync信号触发导航栏应用的应用渲染流程,第N个Vsync信号触发状态栏应用的应用渲染流程,第N+1个Vsync信号触发微信应用的应用渲染流程,本申请实施例对此不做限定。
步骤1116:Surfaceflinger将图层3的显示数据保存在图层3对应的缓存队列3中。
在通过绘制渲染线程对图层3进行渲染处理,得到图层3的显示数据,可以先将图层3的显示数据保存在图层3对应的缓存队列3中,以便在下一个Vsync信号到来时,根据缓存队列3中缓存的显示数据对图层3进行图层合成。
步骤1117:第N+M+1个Vsync信号到来,Surfaceflinger从图层1、图层2和图层3中各个图层对应的缓存队列中获取对应图层的显示数据。
在第N+M个Vsync信号触发图层3的应用渲染流程之后,第N+M+1个Vsync信号可以触发图层1、图层2和图层3的图层合成流程。因此,在执行图层合成流程时,Surfaceflinger可以先分别获取图层1对应的缓存队列1中缓存的图层1的显示数据,图层2对应的缓存队列2中缓存的图层2的显示数据,以及图层3对应的缓存队列3中缓存的图层3的显示数据,以便根据获取的显示数据对图层1、图层2和图层3进行图层合成。
比如,步骤1117可以包括如下步骤:
步骤1117-1、第N+M+1个Vsync信号到来,Surfaceflinger从图层1对应的缓存队列中获取图层1的显示数据。
步骤1117-2、第N+M+1个Vsync信号到来,Surfaceflinger从图层2对应的缓存队列中获取图层2的显示数据。
步骤1117-3、第N+M+1个Vsync信号到来,Surfaceflinger从图层3对应的缓存队列中获取图层3的显示数据。
步骤1118:Surfaceflinger向HWC发送第三合成策略获取请求,第三合成策略获取请求携带图层1、图层2和图层3的相关信息。
其中,第三合成策略获取请求用于请求获取图层1、图层2和图层3的图层合成策略。图层1、图层2和图层3的相关信息可以包括图层1、图层2和图层3的总图层数,各个图层的图层ID和图层属性中的一种或多种,当然也可以包括其他相关信息,本申请实施例对此不做限定。
在从图层1、图层2和图层3中各个图层对应的缓存队列中获取对应图层的显示数据之后,为了避免先HWC发送的图层数超出HWC支持合成的图层数,可以先向HWC发送第三合成策略获取请求,以请求获取图层1、图层2和图层3的图层合成策略。
步骤1119:HWC接收第三合成策略获取请求,根据图层1、图层2和图层3的相关信息,确定图层1、图层2和图层3的第三合成策略,第三合成策略包括图层2和图层3对应的合成方式为GPU合成,图层1对应的合成方式为HWC合成。
本申请实施例中,假设HWC支持合成的图层数为2,则HWC接收第三合成策略获取请求之后,若根据图层1、图层2和图层3的相关信息确定图层1、图层2和图层3的总图层数为3,超出HWC自身支持合成的图层数,即可将图层1、图层2和图层3中部分图层对应的合成方式确定为GPU合成,其他图层对应的合成方式确定为HWC合成。比如,可以将图层2和图层3对应的合成方式确定为GPU合成,图层1对应的合成方式确定为HWC合成。
示例地,第三合成策略可以如下表2所示:
表2
图层 | GPU合成 | HWC合成 |
图层1 | 否 | 是 |
图层2 | 是 | 否 |
图层3 | 是 | 否 |
步骤1120:HWC将第三合成策略发送给Surfaceflinger。
步骤1121:Surfaceflinger接收第三合成策略,根据第三合成策略将对应合成方式为GPU合成的图层2和图层3的显示数据发送给GPU。
Surfaceflinger可以根据第三合成策略,将对应合成方式为GPU合成的图层2和图层3通过GPU进行合成。具体地,可以将GPU合成的图层2和图层3的显示数据发送给GPU,由GPU对图层2和图层3的显示数据进行合成。
步骤1122:GPU对图层2和图层3的显示数据进行合成,得到第一合成图像。
GPU可以按照图层2和图层3的层级,对图层2和图层3的显示数据进行叠加,得到第一合成图像。
步骤1123:GPU将第一合成图像发送给Surfaceflinger。
步骤1124:Surfaceflinger将第一合成图像和对应合成方式为HWC合成的图层1的显示数据发送给HWC。
在将对应合成方式为GPU合成的图层2和图层3通过GPU进行合成之后,可以将图层2和图层3的合成结果,以及对应合成方式为HWC合成的图层1通过HWC进行合成。具体地,可以将图层2和图层3的合成结果,以及对应合成方式为HWC合成的图层1的显示数据发送给HWC,由HWC进行合成。
步骤1125:HWC对第一合成图像和图层1的显示数据进行合成,得到第二合成图像,将第二合成图像存储在内存中。
HWC在得到合成结果之后,可以先将合成结果存储在内存中。比如,可以将第一图像存储在帧缓存(frame buffer)中。
步骤1126:第N+2个Vsync信号到来,HWC对第二合成图像进行送显。
也即是,在HWC对第一合成图像和图层1的显示数据进行合成,得到第二合成图像之后,下一个Vsync信号即第N+2个Vsync信号可以触发第二合成图像的硬件送显流程,即重触发HWC对第二合成图像进行送显,使得显示屏幕显示第二合成图像。
步骤1127:显示屏幕显示第二合成图像。
比如,第二合成图像可以如图1所示。如图1所示,第二合成图像是由状态栏11(图层1)、导航栏22(图层2)和微信界面13(图层3)合成得到。
步骤1128:用户调出微信小控件(wechat mini program)。
在显示屏幕显示第二合成图像时,用户可以对微信应用执行各种操作。比如,用户可以调出微信应用的微信小控件。微信小控件也称微信小程序,是小程序的一种,是一种不需要下载安装即可使用的应用。
步骤1129:响应于用户的操作,微信应用向Surfaceflinger发送第四创建图层请求。
其中,第四创建图层请求用于请求Surfaceflinger为微信小控件创建对应的图层。
步骤1130:Surfaceflinger接收到第四创建图层请求后,为微信小控件创建图层4。
示例地,图层4的位置区域的各个端点的像素坐标可以为:左500、上500、右1000、下1000。另外,图层4的层级可以为1层,也即是,图层4的层级大于图层1、图层2和图层3的层级,在合成时将覆盖在图层1、图层2和图层3之上。
另外,Surfaceflinger为微信小控件创建图层4之后,还可以为图层4分配对应的缓存队列4,缓存队列4用于保存图层4的显示数据。
步骤1131:Surfaceflinger将图层4的图层ID发送给微信应用。
Surfaceflinger在为微信小控件创建图层4之后,还可以为图层4分配对应的图层ID,并将图层4的图层ID发送给微信应用,以便微信应用根据图层4的图层ID识别图层4。
另外,在为图层4分配对应的缓存队列4之后,还可以为缓存队列4分配对应的缓存队列ID,并将缓存队列4的缓存队列ID发送给微信应用。
步骤1132:第N+M+1个Vsync信号到来,微信应用调用绘制渲染线程,通过绘制渲染线程对图层4进行渲染处理,得到图层4的显示数据。
其中,第N+M+1个Vsync信号可以同时触发图层1、图层2和图层3的图层合成流程,以及下一帧图像的应用渲染流程。若在第N+M+1个Vsync信号到来时,图层1、图层2和图层3未发生改变,只有微信应用新建了图层4,则可以仅触发微信应用对图层4的应用渲染流程,而无需触发状态栏应用对图层1的应用渲染流程、导航栏对图层2的应用渲染流程、以及微信应用对图层3的应用渲染流程。
也即是,第N+M+1个Vsync信号到来时,触发Surfaceflinger对图层1、图层2和图层3进行图层合成,以及触发微信应用调用绘制渲染线程,通过绘制渲染线程对图层4进行渲染处理。
步骤1133:微信应用将图层4的显示数据保存在图层4对应的缓存队列4中。
在通过绘制渲染线程对图层4进行渲染处理,得到图层4的显示数据,可以先将图层4的显示数据保存在图层4对应的缓存队列4中,以便在下一个Vsync信号到来时,根据缓存队列4中缓存的显示数据对图层4进行图层合成。
另外,由于第N+M+1个Vsync周期内,未对图层1、图层2和图层3进行渲染处理,因此图层1、图层2和图层3各自对应的缓存队列将为空,即未保存对应的显示数据。
步骤1134:第N+M+2个Vsync信号到来,Surfaceflinger从图层4对应的缓存队列4中获取图层4的显示数据。
第N+M+2个Vsync信号可以同时触发第二合成图像的硬件送显流程,以及触发下一帧图像的图层合成流程。
在执行下一帧图像的图层合成流程时,Surfaceflinger可以确定图层1、图层2、图层3和图层4为下一帧图像的待显示图层,并将图层1、图层2、图层3和图层4确定为待合并图层,然后分别从图层1、图层2、图层3和图层4中各个图层对应的缓存队列中获取对应图层的显示数据。但是,由于图层1、图层2和图层3对应的缓存队列为空,因此仅能从图层4对应的缓存队列4中获取到图层4的显示数据。
步骤1135:Surfaceflinger确定图层4的层级大于图层3的层级,获取HWC已合成的第二合成图像。
Surfaceflinger若确定图层4的层级大于图层3的层级,且图层4和第二合成图像的总图层数小于HWC支持合成的图层数,即可确定图层4满足预设合成条件,进而获取HWC已合成的第二合成图像。
比如,Surfaceflinger可以调用HWC的回调函数,通过该回调函数获取HWC已合成的第二合成图像。
需要说明的是,本申请实施例仅是以在确定图层4满足预设合成条件时,执行获取HWC已合成的第二合成图像的步骤为例进行说明,而在其他实施例中,Surfaceflinger还可以在其他时机获取HWC已合成的第二合成图像,比如在HWC合成得到第二合成图像时,执行获取HWC已合成的第二合成图像的步骤,本申请实施例对此不做限定。
步骤1136:Surfaceflinger将图层4的显示数据和第二合成图像发送给HWC。
另外,为了避免发送给HWC的待合成图层的图层数超出HWC支持合成的图层数,Surfaceflinger将图层4的显示数据和第二合成图像发送给HWC之前,还可以先向HWC发送第四合成策略获取请求,第四合成策略获取请求包括图层4和第二合成图像的相关信息,以便HWC根据图层4和第二合成图像的相关信息,向Surfaceflinger返回图层4和第二合成图像的第四合成策略。其中,第四合成策略包括图层4和第二合成图像对应的合成方式。
Surfaceflinger接收HWC返回的第四合成策略,若根据第四合成策略确定图层4和第二合成图像对应的合成方式均为HWC合成,即可将图层4和第二合成图像发送给HWC,由HWC进行合成。
步骤1137:HWC对图层4的显示数据和第二合成图像进行合成,得到第三合成图像。
步骤1138:第N+M+3个Vsync信号到来,HWC对第三合成图像进行送显。
步骤1139:显示屏幕显示第三合成图像。
请参考图12,图12是本申请实施例提供的一种第三合成图像的示意图。如图12所示,第三合成图像包括状态栏11(图层1)、导航栏12(图层2)、微信应用的应用界面13(图层3)以及微信小控件的控件界面18(图层4)。控件界面18包括主题、手电筒、通知等小控件。手电筒控件显示为手电筒关闭状态。
另外,若在显示屏幕显示第三合成图像的过程中,用户点击控件界面18中的手电筒控件,将导致控件界面18进行界面刷新,这种情况下,Surfaceflinger可以不再为微信小控件重新创建对应的图层,而是由微信应用直接调用绘制渲染流程对控件界面18进行渲染处理,得到图层4的新显示数据,在图层4的新显示数据中,手电筒控件将切换为手电筒开启状态。然后,Surfaceflinger在第N+3个Vsync信号到来时,可以获取HWC已合成的第三合成图像以及图层4的新显示数据,将第三合成图像以及图层4的新显示数据发送给HWC,由HWC进行合成,得到第四合成图像。在第N+M+4个Vsync信号到来时,HWC对第四合成图像进行送显,使得显示屏幕显示第四合成图像。
请参考图13,图13是本申请实施例提供的一种第四合成图像的示意图。如图13所示,第四合成图像包括状态栏11(图层1)、导航栏12(图层2)、微信应用的应用界面13(图层3)以及微信小控件的控件界面19(图层4)。控件界面19包括主题、手电筒、通知等小控件。手电筒控件显示为手电筒开启状态。
另外,若在显示屏幕显示第三合成图像的过程中,用户对控件界面18执行操作,使得控件界面18的位置区域发生改变,且变化后的控件界面18无法覆盖变化前的控件界面18,比如,用户对控件界面18执行缩小操作,这种情况下,Surfaceflinger还可以重新为微信小控件创建对应的图层5,并由微信应用调用绘制渲染流程对图层5进行渲染处理,得到图层5的显示数据。然后,Surfaceflinger在第N+3个Vsync信号到来时,可以按照上述步骤1117-步骤1127中对图层1、图层2和图层3进行合成的方式,对图层1、图层2、图层3和图层5进行合成,得到第五合成图像。在第N+4个Vsync信号到来时,HWC对第五合成图像进行送显,使得显示屏幕显示第五合成图像。
请参考图14,图14是本申请实施例提供的一种第五合成图像的示意图。如图14所示,第五合成图像包括状态栏11(图层1)、导航栏12(图层2)、微信应用的应用界面13(图层3)以及微信小控件的控件界面20(图层5)。控件界面20相对于图12中的控件界面18的位置区域变小,且控件界面20的位置区域不能完全覆盖控件界面18的位置区域。
也即是,如果待合成图层中图层信息发生变化的图层的位置区域未发生变化,或者位置区域发生变化但发生变化的图层的位置区域能够完全覆盖变化前的位置区域,这种情况下,可以直接按照本申请实施例提供的方法将图层信息发生变化的图层与HWC已合成的上一帧图像进行合成。但是,如果待合成图层中图层信息发生变化的图层的位置区域发生变化且发生变化的图层的位置区域不能够完全覆盖变化前的位置区域,这种情况下,可以按照相关技术中提供的方式对待合成图层进行合成。
请参考图15,图15是本申请实施例提供的一种电子设备100的结构示意图。电子设备100可以为终端或服务器等电子设备。终端可以为手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端,可穿戴设备可以为智能手表或智能手环等,本申请实施例对此不做限定。
如图15所示,电子设备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等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等***器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与***设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为终端供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal 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转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯***(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位***(global positioning system,GPS),全球导航卫星***(global navigation satellite system,GLONASS),北斗卫星导航***(beidounavigation satellite system,BDS),准天顶卫星***(quasi-zenith satellitesystem,QZSS)和/或星基增强***(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
在一些可能的情况中,摄像头193可以作为手势采集模块来采集用户的手势操作。摄像头193可以包括前置摄像头和/或后置摄像头。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。电子设备100的按键190可以包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。
此外,电子设备100还包括各种不同传感器,例如,压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。陀螺仪传感器180B可以用于确定电子设备100的运动姿态。气压传感器180C用于测量气压。磁传感器180D包括霍尔传感器。加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。骨传导传感器180M可以获取振动信号。温度传感器180J,用于检测温度。例如,温度传感器180J可以是非接触式红外温度传感器,该非接触式红外温度传感器可以利用红外线来测量物体的温度。
在说明书对“一个实施例”或“实施例”的引用意指结合实施例所描述的具体特征、结构或特性被包括在根据本申请公开的至少一个范例实施方案或技术中。说明书中的各个地方的短语“在一个实施例中”的出现不一定全部指代同一个实施例。
本申请公开还涉及用于执行文本中的操作装置。该装置可以专门处于所要求的目的而构造或者其可以包括被存储在计算机中的计算机程序选择性地激活或者重新配置的通用计算机。这样的计算机程序可以被存储在计算机可读介质中,诸如,但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡、专用集成电路(ASIC)或者适于存储电子指令的任何类型的介质,并且每个可以被耦合到计算机***总线。此外,说明书中所提到的计算机可以包括单个处理器或者可以是采用针对增加的计算能力的多个处理器涉及的架构。
本文所提出的过程和显示器固有地不涉及任何具体计算机或其他装置。各种通用***也可以与根据本文中的教导的程序一起使用,或者构造更多专用装置以执行一个或多个方法步骤可以证明是方便的。在一下描述中讨论了用于各种这些***的结构。另外,可以使用足以实现本申请公开的技术和实施方案的任何具体编程语言。各种编程语言可以被用于实施本公开,如本文所讨论的。
另外,在本说明书所使用的语言已经主要被选择用于可读性和指导性的目的并且可能未被选择为描绘或限制所公开的主题。因此,本申请公开旨在说明而非限制本文所讨论的概念的范围。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种图层合成方法,其特征在于,应用于电子设备中,所述电子设备包括图层管理模块和硬件合成器HWC,包括:
所述图层管理模块获取待合成图层中的第一图层,所述第一图层为新建图层或图层信息发生变化的图层,所述图层信息包括图层属性或显示数据;
所述图层管理模块将获取的第一图层发送给所述HWC;
所述HWC对所述获取的第一图层和第一合成图层进行合成,得到第二合成图层,所述第一合成图层为所述HWC在所述第二合成图层之前合成的图层。
2.根据权利要求1所述的方法,其特征在于,所述图层管理模块将获取的第一图层发送给所述HWC之前,包括:
所述图层管理模块确定所述获取的第一图层是否满足预设合成条件;
所述图层管理模块若确定所述获取的第一图层满足所述预设合成条件,则执行将获取的第一图层发送给所述HWC的步骤。
3.根据权利要求2所述的方法,其特征在于,所述预设合成条件包括:
所述获取的第一图层中任一第一图层的层级大于或等于剩余图层的最大层级,所述剩余图层是指所述待合成图层中除所述获取的第一图层之外的图层。
4.根据权利要求3所述的方法,其特征在于,所述预设合成条件还包括:
若所述获取的第一图层包括图层信息发生变化的第一图层,则所述图层信息发生变化的第一图层的位置区域能够完全覆盖变化前的第一图层的位置区域。
5.根据权利要求1-4任一所述的方法,其特征在于,所述图层管理模块将获取的第一图层发送给所述HWC之前,还包括:
所述图层管理模块获取所述HWC已合成的所述第一合成图层;
所述图层管理模块将获取的第一图层发送给所述HWC,包括:
所述图层管理模块将所述获取的第一图层和所述第一合成图层发送给所述HWC。
6.根据权利要求5所述的方法,其特征在于,所述所述图层管理模块获取所述HWC已合成的所述第一合成图层,包括:
所述图层管理模块调用所述HWC的回调函数,所述回调函数用于获取所述HWC已合成的合成图层;
所述图层管理模块通过所述回调函数,获取所述HWC已合成的所述第一合成图层。
7.根据权利要求6所述的方法,其特征在于,所述图层管理模块获取所述HWC已合成的所述第一合成图层之前,还包括:
所述图层管理模块调用回调函数注册接口,通过所述回调函数注册接口为所述HWC注册所述回调函数。
8.根据权利要求1-4任一所述的方法,其特征在于,所述图层管理模块将获取的第一图层发送给所述HWC,包括:
所述图层管理模块向所述HWC发送图层合成请求,所述图层合成请求携带所述获取的第一图层,所述图层合成请求用于请求所述HWC获取已合成的所述第一合成图层,对所述获取的第一图层和所述第一合成图层进行合成;
所述HWC对所述获取的第一图层和第一合成图层进行合成之前,还包括:
所述HWC接收所述图层合成请求;
所述HWC根据所述图层合成请求,获取已合成的所述第一合成图层。
9.根据权利要求1-8任一所述的方法,其特征在于,所述图层管理模块将获取的第一图层和所述第一合成图层发送给所述HWC之前,还包括:
所述图层管理模块向所述HWC发送第一合成策略获取请求,所述第一合成策略获取请求携带所述获取的第一图层的相关信息;
所述HWC接收所述第一合成策略获取请求,根据所述获取的第一图层的相关信息以及所述第一合成图层的相关信息,确定所述获取的第一图层和所述第一合成图层的第一合成策略,所述第一合成策略包括所述获取的第一图层和所述第一合成图层中各个图层对应的合成方式,所述合成方式为图形处理器GPU合成或HWC合成;
所述HWC将所述第一合成策略发送给所述图层管理模块;
所述图层管理模块若根据所述第一合成策略,确定所述获取的第一图层和所述第一合成图层中各个图层对应的合成方式均为HWC合成,则执行将获取的第一图层发送给所述HWC的步骤。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述图层管理模块若根据所述第一合成策略,确定所述获取的第一图层和所述第一合成图层中各个图层对应的合成方式包括GPU合成和HWC合成,则通过GPU对所述获取的第一图层和所述第一合成图层中对应合成方式为GPU合成的图层进行合成,得到第三合成图层;
所述图层管理模块将所述获取的第一图层和所述第一合成图层中对应合成方式为HWC合成的图层,以及所述第三合成图层发送给所述HWC;
所述HWC对所述获取的第一图层和所述第一合成图层中对应合成方式为HWC合成的图层,以及所述第三合成图层进行合成,得到第四合成图层。
11.根据权利要求2-4任一所述的方法,其特征在于,所述方法还包括:
所述图层管理模块若确定所述获取的第一图层不满足所述预设合成条件,则向所述HWC发送合成第二策略获取请求,所述第二合成策略获取请求携带所述待合成图层的相关信息;
所述HWC接收所述第二合成策略获取请求,根据所述待合成图层的相关信息,确定所述待合成图层的第二合成策略,所述第二合成策略包括所述待合成图层中各个图层对应的合成方式,所述合成方式为GPU合成或HWC合成;
所述HWC将所述第二合成策略发送给所述图层管理模块;
所述图层管理模块按照所述第二合成策略,对所述待合成图层进行合成。
12.根据权利要求11所述的方法,其特征在于,所述图层管理模块按照所述第二合成策略,对所述待合成图层进行合成,包括:
所述图层管理模块若根据所述第二合成策略,确定所述待合成图层中各个图层的合成方式包括GPU合成和HWC合成,则通过GPU对所述待合成图层中对应合成方式为GPU合成的图层进行合成,得到第五合成图层;
所述图层管理模块将所述第五合成图层和所述待合成图层中对应合成方式为HWC合成的图层发送给所述HWC;
所述HWC对所述第五合成图层和所述待合成图层中对应合成方式为HWC合成的图层进行合成,得到第六合成图层。
13.根据权利要求11所述的方法,其特征在于,所述图层管理模块按照所述第二合成策略,对所述待合成图层进行合成,包括:
所述图层管理模块若根据所述第二合成策略,确定所述待合成图层对应的合成方式均为HWC合成,则将所述待合成图层发送给所述HWC;
所述HWC对所述待合成图层进行合成,得到第七合成图层。
14.一种电子设备,其特征在于,所述电子设备包括:一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个程序,当所述一个或者多个程序被所述一个或多个处理器执行时,使得所述电子设备执行权利要求1至13中任一项所述的图层合成方法。
15.一种计算机可读存储介质,其特征在于,所述存储介质上存储有指令,所述指令在计算机上执行时使所述计算机执行权利要求1至13中任一项所述的图层合成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111109621.XA CN113986162B (zh) | 2021-09-22 | 2021-09-22 | 图层合成方法、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111109621.XA CN113986162B (zh) | 2021-09-22 | 2021-09-22 | 图层合成方法、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113986162A true CN113986162A (zh) | 2022-01-28 |
CN113986162B CN113986162B (zh) | 2022-11-11 |
Family
ID=79736310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111109621.XA Active CN113986162B (zh) | 2021-09-22 | 2021-09-22 | 图层合成方法、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986162B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114510207A (zh) * | 2022-02-28 | 2022-05-17 | 亿咖通(湖北)技术有限公司 | 图层合成方法、装置、设备、介质及程序产品 |
WO2023174322A1 (zh) * | 2022-03-17 | 2023-09-21 | 华为技术有限公司 | 图层处理方法和电子设备 |
WO2024103831A1 (zh) * | 2022-11-15 | 2024-05-23 | 百富计算机技术(深圳)有限公司 | 一种桌面窗口显示方法、装置、终端及存储介质 |
CN118227069A (zh) * | 2024-05-23 | 2024-06-21 | 鼎道智芯(上海)半导体有限公司 | 显示控制方法和电子设备 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103686304A (zh) * | 2013-12-09 | 2014-03-26 | 华为技术有限公司 | 一种图层合成方法、装置及终端设备 |
CN105741819A (zh) * | 2016-03-01 | 2016-07-06 | 晨星半导体股份有限公司 | 一种图层处理方法及装置 |
CN106055294A (zh) * | 2016-05-23 | 2016-10-26 | 福州瑞芯微电子股份有限公司 | 一种图层合成优化方法和装置 |
CN106933525A (zh) * | 2017-03-09 | 2017-07-07 | 青岛海信移动通信技术股份有限公司 | 一种显示图像的方法和装置 |
US20170365236A1 (en) * | 2016-06-21 | 2017-12-21 | Qualcomm Innovation Center, Inc. | Display-layer update deferral |
US20180189922A1 (en) * | 2016-12-31 | 2018-07-05 | Intel IP Corporation | Smart composition of output layers |
CN110020300A (zh) * | 2017-11-07 | 2019-07-16 | 华为技术有限公司 | 一种浏览器页面合成方法及终端 |
CN110362186A (zh) * | 2019-07-17 | 2019-10-22 | Oppo广东移动通信有限公司 | 图层处理方法、装置、电子设备及计算机可读介质 |
CN110377257A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 图层合成方法、装置、电子设备及存储介质 |
CN110377263A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 图像合成方法、装置、电子设备及存储介质 |
CN112527220A (zh) * | 2019-09-18 | 2021-03-19 | 华为技术有限公司 | 一种电子设备显示方法及电子设备 |
CN112767231A (zh) * | 2021-04-02 | 2021-05-07 | 荣耀终端有限公司 | 图层合成方法和设备 |
CN113012263A (zh) * | 2021-03-16 | 2021-06-22 | 维沃移动通信有限公司 | 图层合成方式的配置方法和电子设备 |
-
2021
- 2021-09-22 CN CN202111109621.XA patent/CN113986162B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103686304A (zh) * | 2013-12-09 | 2014-03-26 | 华为技术有限公司 | 一种图层合成方法、装置及终端设备 |
CN105741819A (zh) * | 2016-03-01 | 2016-07-06 | 晨星半导体股份有限公司 | 一种图层处理方法及装置 |
CN106055294A (zh) * | 2016-05-23 | 2016-10-26 | 福州瑞芯微电子股份有限公司 | 一种图层合成优化方法和装置 |
US20170365236A1 (en) * | 2016-06-21 | 2017-12-21 | Qualcomm Innovation Center, Inc. | Display-layer update deferral |
US20180189922A1 (en) * | 2016-12-31 | 2018-07-05 | Intel IP Corporation | Smart composition of output layers |
CN106933525A (zh) * | 2017-03-09 | 2017-07-07 | 青岛海信移动通信技术股份有限公司 | 一种显示图像的方法和装置 |
CN110020300A (zh) * | 2017-11-07 | 2019-07-16 | 华为技术有限公司 | 一种浏览器页面合成方法及终端 |
CN110362186A (zh) * | 2019-07-17 | 2019-10-22 | Oppo广东移动通信有限公司 | 图层处理方法、装置、电子设备及计算机可读介质 |
CN110377257A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 图层合成方法、装置、电子设备及存储介质 |
CN110377263A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 图像合成方法、装置、电子设备及存储介质 |
CN112527220A (zh) * | 2019-09-18 | 2021-03-19 | 华为技术有限公司 | 一种电子设备显示方法及电子设备 |
CN113012263A (zh) * | 2021-03-16 | 2021-06-22 | 维沃移动通信有限公司 | 图层合成方式的配置方法和电子设备 |
CN112767231A (zh) * | 2021-04-02 | 2021-05-07 | 荣耀终端有限公司 | 图层合成方法和设备 |
Non-Patent Citations (2)
Title |
---|
董剑: ""Android显示***应用硬件加速技术的研究"", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》 * |
董剑: "利用硬件加速层优化Android显示***", 《小型微型计算机***》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114510207A (zh) * | 2022-02-28 | 2022-05-17 | 亿咖通(湖北)技术有限公司 | 图层合成方法、装置、设备、介质及程序产品 |
WO2023174322A1 (zh) * | 2022-03-17 | 2023-09-21 | 华为技术有限公司 | 图层处理方法和电子设备 |
WO2024103831A1 (zh) * | 2022-11-15 | 2024-05-23 | 百富计算机技术(深圳)有限公司 | 一种桌面窗口显示方法、装置、终端及存储介质 |
CN118227069A (zh) * | 2024-05-23 | 2024-06-21 | 鼎道智芯(上海)半导体有限公司 | 显示控制方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113986162B (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115473957B (zh) | 一种图像处理方法和电子设备 | |
CN113986162B (zh) | 图层合成方法、设备及计算机可读存储介质 | |
WO2021000881A1 (zh) | 一种分屏方法及电子设备 | |
WO2021233218A1 (zh) | 投屏方法、投屏源端、投屏目的端、投屏***及存储介质 | |
CN112328130B (zh) | 显示处理方法及电子设备 | |
WO2022007862A1 (zh) | 图像处理方法、***、电子设备及计算机可读存储介质 | |
WO2020093988A1 (zh) | 一种图像处理方法及电子设备 | |
CN112532892B (zh) | 图像处理方法及电子装置 | |
WO2021190344A1 (zh) | 多屏幕显示电子设备和电子设备的多屏幕显示方法 | |
WO2022100685A1 (zh) | 一种绘制命令处理方法及其相关设备 | |
WO2022001258A1 (zh) | 多屏显示方法、装置、终端设备及存储介质 | |
US12027112B2 (en) | Always on display method and mobile device | |
WO2022095744A1 (zh) | Vr显示控制方法、电子设备及计算机可读存储介质 | |
WO2022143180A1 (zh) | 协同显示方法、终端设备及计算机可读存储介质 | |
CN114498028B (zh) | 数据传输方法、装置、设备及存储介质 | |
WO2023000745A1 (zh) | 显示控制方法及相关装置 | |
WO2022143310A1 (zh) | 一种双路投屏的方法及电子设备 | |
WO2022135195A1 (zh) | 显示虚拟现实界面的方法、装置、设备和可读存储介质 | |
WO2021204103A1 (zh) | 照片预览方法、电子设备和存储介质 | |
CN115460343A (zh) | 图像处理方法、设备及存储介质 | |
CN115686403A (zh) | 显示参数的调整方法、电子设备、芯片及可读存储介质 | |
CN114172596A (zh) | 信道噪声检测方法及相关装置 | |
CN116700578B (zh) | 图层合成方法、电子设备以及存储介质 | |
WO2023124149A1 (zh) | 图像处理方法、电子设备及存储介质 | |
WO2022206709A1 (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230915 Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New Area, Pudong New Area, Shanghai Patentee after: Shanghai Glory Smart Technology Development Co.,Ltd. Address before: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee before: Honor Device Co.,Ltd. |
|
TR01 | Transfer of patent right |