本技术涉及终端,尤其涉及一种显示处理方法、设备、产品及介质。
背景技术:
1、在电子设备进行界面显示的过程中,通常是为每个待显示的窗口(图层)都分配一个独立的缓存区(buffer),每个图层使用各自的缓存区分别进行绘制和渲染,最终每个缓存区会生成一个渲染后的图层。然后由硬件合成器将渲染后的每个图层合成为最终的显示界面。也即是说,为每个待显示图层都分配一个缓存区时,渲染后图层的数量和待显示图层的数量是一样的。
2、但是,为每个待显示图层都分配缓存区,如果待显示图层较多,会导致渲染后的图层的数量也较多,增大了硬件合成器的负担。
技术实现思路
1、本技术提供了一种显示处理方法、设备、产品及介质,通过将未更新图层分配到同一缓存区,可以减少缓存区的数量,进而得到的渲染后的图层数也会较少。并且,在同一个缓存区中的图层,还能先根据图层间的遮挡关系,不绘制和/或不渲染被遮挡的图层,能有效地节省了中央处理器(central processing unit,cpu)和图形处理器(graphicsprocessing unit,gpu)的资源,提高了界面显示效率。
2、第一方面,提供了一种显示处理方法,应用于电子设备,该方法包括:获取到界面显示指令;确定界面显示指令所对应的多个待显示图层;对应于多个待显示图层中存在多个待更新图层,将多个待更新图层分配到不同的缓存区,并且,对应于多个待显示图层中存在多个未更新图层,将多个未更新图层分配到同一个缓存区。
3、在上述方案中,电子设备会将每个图层与上一帧的图层进行比较,确定图层是否有更新,然后对图层预分配缓存区。其中,电子设备将没有界面数据更新的图层都分配到一个缓存区中,对于有界面数据更新的图层,为每个图层都分配一个缓存区。
4、进而,可以减少缓存区的数量,在同一个缓存区中图层的界面数据会被绘制和渲染为一个图层,得到的渲染后的图层数也会较少,能减轻硬件合成器的负担。并且,在同一个缓存区中的图层,还能先根据图层间的遮挡关系,就确定会被遮挡的图层,进而不绘制和/或不渲染该部分图层,能有效地节省了cpu和gpu的资源,提高了界面显示效率。
5、结合第一方面,在一些实现方式中,对应于多个待显示图层中存在多个待更新图层,将多个待更新图层分配到不同的缓存区,还包括:确定各个缓存区中的图层在合成时需要进行的合成处理的类型和数量;根据各个缓存区对应的合成处理的类型和数量,确定第一合成工作量;对应于第一合成工作量超过预设值,确定多个待更新图层中每个待更新图层的图层类型;对应于多个待更新图层中存在相同类型的待更新图层,将相同类型的待更新图层分配到同一个缓存区。
6、在上述方案中,电子设备还会统计预分配的缓存区对应的合成工作量,例如需要合成的图层总数,需要进行圆角处理的图层总数等等。然后根据硬件合成器合成能力以及缓存区预分配结果对应的合成工作量,对缓存区预分配结果进行调整,硬件合成器合成能力包括硬件合成器最多能合成的图层数量、能合成需要进行圆角处理的图层数量等等。
7、其中,当缓存区预分配结果对应的合成工作量小于或等于硬件合成器的合成能力时,直接根据预分配的缓存区,对各个缓存区中的图层进行绘制、渲染等操作,最后由硬件合成器将各个缓存区中的图层进行合成。当缓存区预分配结果对应的合成工作量超过了硬件合成器的合成能力时,电子设备还将根据有更新的图层的类型,将相同类型的的图层合并到一个缓存区中进行绘制和渲染,使得最终渲染后的图层在进行合成时所需的工作量满足硬件合成器的合成能力。
8、这样,分配后的缓存区的数量也满足硬件合成器的合成能力,无需在硬件合成器发现图层数大于合成能力时,将图层退回给cpu,由cpu通知gpu对图层进行合成,节省了进程间通信,提高了界面显示的效率。
9、结合第一方面,在一些实现方式中,该方法还包括,对应于第一合成工作量超过预设值,确定多个待更新图层中每个待更新图层的图层类型以及每个图层类型对应的优先级;根据每个图层类型的优先级,依次将相同类型的待更新图层分配到同一个缓存区,直到分配后的缓存区对应的合成工作量小于等于预设值。
10、在上述方案中,图层的类型可以分为普通类型、动画类型、交互类型以及焦点窗口。图层类型的优先级排序可以为:普通类型>动画类型>交互类型>焦点窗口。当预分配后缓存区的图层的合成工作量超过了硬件合成器的合成能力时,根据优先级依次合并不同类型的图层,直到缓存区对应的合成工作量不超出硬件合成器的合成能力。
11、这样,分配后的缓存区的数量也满足硬件合成器的合成能力,无需在硬件合成器发现图层数大于合成能力时,将图层退回给cpu,由cpu通知gpu对图层进行合成,节省了进程间通信,提高了界面显示的效率。并且,按图层类型来分配缓存区时,可以使得动画类型的图层在同一个缓存区中,交互类型的图层在同一个缓存区中。由于动画类型的图层中的界面数据之间都往往有关联关系交互类型的图层中的界面数据之间往往也有关联关系,上述图层根据图层类型被分配在同一个缓存区时,在界面数据有更新的情况下,无需与其他缓存区进行通信,也减少了进程间通信。
12、结合第一方面,在一些实现方式中,对应于多个待显示图层中存在多个待更新图层,将多个待更新图层分配到不同的缓存区,该方法还包括:对应于多个待显示图层中存在多个待更新图层,将多个待更新图层中的各个界面数据分配到不同缓存区,其中,每个待更新图层包括一个或多个界面数据。
13、在上述方案中,对于界面数据有更新的图层,还可以将有更新的图层的界面数据对应的节点的关联关系解除,将有更新的所有图层的界面数据都表示成各个独立的节点,然后将不同节点预分配给不同缓存区。这样,未更新的界面数据都存放在一个缓存区,可以减少缓存区的数量,得到的渲染后的图层数也会较少,能减轻硬件合成器的负担。
14、结合第一方面,在一些实现方式中,该方法还包括:根据各个缓存区对应的合成处理的类型和数量,确定第二合成工作量;对应于第二合成工作量超过预设值,确定多个待更新图层中每个界面数据的类型;对应于多个待更新图层中存在相同类型的界面数据,将相同类型的界面数据分配到同一个缓存区。
15、在上述方案中,当预分配后缓存区的图层的合成工作量超过了硬件合成器的合成能力时,例如当预分配后的缓存区数量大于硬件合成器能合成的图层数时,还将根据节点的类型,将相同类型的节点按优先级合成到同一个缓存区中,使得分配后的缓存区数量满足硬件合成器的合成能力。
16、结合第一方面,在一些实现方式中,该方法还包括:对应于第二合成工作量超过预设值,确定多个待更新图层中每个界面数据的类型以及每个界面数据类型对应的优先级;根据界面数据类型的优先级,依次将待更新图层中相同类型的界面数据分配到同一个缓存区,直到分配后的缓存区对应的合成工作量小于等于预设值。
17、在上述方案中,节点类型也可以分为普通类型、动画类型、交互类型以及焦点节点。不同类型的节点也可以具有不同优先级,例如普通类型>动画类型>交互类型>焦点节点。这样,分配后的缓存区的数量也满足硬件合成器的合成能力,无需在硬件合成器发现图层数大于合成能力时,将图层退回给cpu,由cpu通知gpu对图层进行合成,节省了进程间通信,提高了界面显示的效率。
18、结合第一方面,在一些实现方式中,该方法还包括:基于每个界面数据包含的属性的类型,确定每个缓存区在进行绘制和渲染时所需的负载量;根据每个缓存区的负载量,调整界面数据所属的缓存区。
19、在上述方案中,节点的属性包括节点中具有的图片、文本、文本的样式、对图片是否有裁剪等等,负载类型表中包括图片、文本、样式、配置、裁剪等属性分别对应的负载量。电子设备还可以根据负载类型表以及每个缓存区中节点具备的属性,计算每个缓存区的负载量。根据每个缓存区的负载量,调整节点的缓存区分配,使得每个缓存区的负载均衡。
20、结合第一方面,在一些实现方式中,缓存区包括多个缓存区子块,每个界面数据对应不同缓存区子块,该方法还包括:对应于缓存区中存在待更新界面数据,将待更新界面数据分配到未显示的界面数据对应的缓存区子块。
21、在上述方案中,在有交互类型节点的图层对应的缓存区中,可以将缓存区分为多个缓存区子块,不同交互类型的界面数据存储在不同缓存区子块中。在绘制时,将分块轮转上一帧的缓存区子块,遍历到该图层在上一帧中已经绘制过,就直接使用该界面数据对应的缓存区子块。对于上一帧中没有绘制过的界面数据,将该界面数据覆盖到上一帧的已经绘制过且在本次未显示的界面数据对应的缓存区中。这样,在cpu或者gpu在进行绘制的时候,还可以对有交互类型的节点对应的缓存区进行分块轮转,以减少绘制工作量。
22、第二方面,本技术提供了一种电子设备,其特征在于,包括处理器和存储器,存储器用于存储指令,处理器用于执行指令,当处理器执行该指令时,执行如第一方面所描述的方法。
23、第三方面,本技术提供一种计算机可读存储介质,其特征在于,计算机可读存储介质中存储有指令,当指令在电子设备上运行时,执行如第一方面所描述的方法。
24、第四方面,本技术提供了一种计算机程序产品,其特征在于,计算机程序产品包括计算机指令,在被电子设备执行时,电子设备执行如第一方面所描述的方法。
25、综上所述,通过本技术提供的显示处理方法、设备、产品及介质,电子设备能根据图层的类型或者节点类型,将图层或节点分配到不同缓存区中进行绘制和渲染,使得缓存区负载均衡,不会出现个别缓存区负载较大的问题,也减少了硬件合成器的负担。并且,在同一个缓存区中的图层,还可以直接确认遮挡关系,进而不绘制和/或不渲染被遮挡的图层,能有效地节省了cpu和gpu的资源,提高了界面显示效率。再由硬件合成器对各个缓存区渲染好的图层进行合成,在界面有更新时,也只用对有更新的图层所在的缓存区中的界面数据进行重新绘制和渲染,无需重新绘制和渲染所有图层。同时,分配后的缓存区的数量也满足硬件合成器的合成能力,无需在硬件合成器发现图层数大于合成能力时,将图层退回给cpu,由cpu通知gpu对图层进行合成,节省了进程间通信,提高了界面显示的效率。
1.一种显示处理方法,应用于电子设备,其特征在于,所述方法包括:
2.根据权利要求1所述的显示处理方法,其特征在于,所述对应于所述多个待显示图层中存在多个待更新图层,将所述多个待更新图层分配到不同的缓存区,还包括:
3.根据权利要求2所述的显示处理方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的显示处理方法,其特征在于,所述对应于所述多个待显示图层中存在多个待更新图层,将所述多个待更新图层分配到不同的缓存区,还包括:
5.根据权利要求4所述的显示处理方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的显示处理方法,其特征在于,所述方法还包括:
7.根据权利要求5或6任一项所述的显示处理方法,其特征在于,所述方法还包括:
8.根据权利要求5或7任一项所述的显示处理方法,其特征在于,所述缓存区包括多个缓存区子块,所述每个界面数据对应不同缓存区子块,所述方法还包括:
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器用于存储指令,所述处理器用于执行所述指令,当所述处理器执行所述指令时,执行如权利要求1至8中任一项所述的方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,在被电子设备执行时,电子设备执行如权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1至8中任一项所述的方法。