CN117112086A - 一种数据处理方法及电子设备 - Google Patents

一种数据处理方法及电子设备 Download PDF

Info

Publication number
CN117112086A
CN117112086A CN202310114994.9A CN202310114994A CN117112086A CN 117112086 A CN117112086 A CN 117112086A CN 202310114994 A CN202310114994 A CN 202310114994A CN 117112086 A CN117112086 A CN 117112086A
Authority
CN
China
Prior art keywords
thread
instruction
frame
rendering
drawing frame
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
Application number
CN202310114994.9A
Other languages
English (en)
Other versions
CN117112086B (zh
Inventor
吴磊
刘文方
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310114994.9A priority Critical patent/CN117112086B/zh
Priority claimed from CN202310114994.9A external-priority patent/CN117112086B/zh
Publication of CN117112086A publication Critical patent/CN117112086A/zh
Application granted granted Critical
Publication of CN117112086B publication Critical patent/CN117112086B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/147Digital output to display device ; Cooperation and interconnection of the display device with other functional units using display panels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0641Shopping interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Finance (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Image Generation (AREA)

Abstract

本申请实施例公开了一种数据处理方法及电子设备,涉及图像处理领域,能够使得电子设备进行图像渲染时,可以更早地为渲染子线程或者合并线程分配处理资源,以便于避免由于渲染线程或合并线程无法及时执行导致的丢帧卡顿等问题。具体方案为:接收应用程序下发的第一指令流,第一指令流用于指示电子设备进行第一绘制帧的绘制。第一指令流包括第一指令,第一指令用于绘制第一绘制帧的部分区域,或者,第一指令用于指示电子设备执行对第一绘制帧的各个部分区域的合并操作。将第一指令放入指令队列的第一位置,第一位置在指令队列中的位置先于第二位置,第二位置是根据第一线程的优先级配置确定的在指令队列中的位置,第一指令对应于第一线程。

Description

一种数据处理方法及电子设备
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理方法及电子设备。
背景技术
电子设备中的应用程序可以通过指示电子设备进行绘制帧的处理,进行不同界面的显示。
目前,电子设备在进行绘制帧的处理过程中,可以分别进行绘制帧中的多个区域或模型进行绘制,进而将各个绘制结果合并获取完整的绘制帧进行显示。也就是说,在存在一个或多个区域未及时绘制完成的情况下,就会影响绘制帧的完整显示,由此出现丢帧、卡顿等问题。
发明内容
本申请实施例提供一种数据处理方法及电子设备,能够使得电子设备进行图像渲染时,可以更早地为渲染子线程或者合并线程分配处理资源,以便于避免由于渲染线程或合并线程无法及时执行导致的丢帧卡顿等问题。
为了达到上述目的,本申请实施例采用如下技术方案:
第一方面,提供一种数据处理方法,该方法应用于电子设备,该电子设备中设置有至少一个应用程序,该方法包括:接收该应用程序下发的第一指令流,该第一指令流用于指示该电子设备进行第一绘制帧的绘制。该第一指令流包括第一指令,该第一指令用于绘制该第一绘制帧的部分区域,或者,该第一指令用于指示该电子设备执行对该第一绘制帧的各个部分区域的合并操作。将第一指令放入指令队列的第一位置,第一位置在该指令队列中的位置先于第二位置,该第二位置是根据该第一线程的优先级配置确定的在该指令队列中的位置,该第一指令对应于第一线程。
这样,通过调整第一线程(即绘制帧线程)在指令队列中的位置,实现优先级优化配置。由此使得绘制帧线程可以快速出列获取处理资源。进而避免由于绘制帧线程无法及时处理导致的丢帧卡顿等问题。
可选的,处理该第一指令的处理器频率为第二频率,该第二频率高于第一频率,该第一频率为该电子设备的处理器默认的处理频率。该方案提供了又一种提升绘制帧线程处理效率方案实现,如提升绘制帧线程的处理器频率。可以理解的是,该实现在结合第一方面提供的方案时,电子设备能够基于准确的第一线程的前提,实现对绘制帧线程的精确提频。
可选的,在接收到该第一指令流之前,该方法还包括:将该第一线程配置为VI P线程。
可选的,在该电子设备将该第一线程配置为VI P线程之前,该方法还包括:该电子设备分别接收该应用程序下发的M个指令流,该M个指令流中的每个指令流用于绘制一个绘制帧。该M个指令流对应的绘制帧依次相邻,该M个指令流对应的绘制帧中最后一个绘制帧与该第一绘制帧相邻。该M个指令流中的每个指令流都包括第二线程对应的指令,该第二线程的线程I D与该第一线程的线程I D相同。这样,在连续M个绘制帧都出现了同一个绘制帧线程的线程I D时,可以将该线程I D设置为VI P,以便于后续快速处理。
可选的,M为第一预设阈值。
可选的,该电子设备的设备负载小于负载阈值,且在执行该第一绘制帧的绘制之前,没有出现丢帧。
可选的,该在执行该第一绘制帧的绘制之前,没有出现丢帧,包括:第一时间差与第二时间差相同。该第一时间差是完成第二绘制帧的时间,与完成第三绘制帧的时间的时间差。该第二时间差是完成第四绘制帧的时间,与完成该第三绘制帧的时间的时间差。该第一绘制帧、该第二绘制帧、该第三绘制帧以及该第四绘制帧依次为四个连续的绘制帧。
可选的,该第一指令用于绘制该第一绘制帧的部分区域,该第一线程为渲染子线程。
可选的,该第一指令用于指示该电子设备执行对该第一绘制帧的各个部分区域的合并操作,该第一线程为合并线程。
可选的,该方法还包括:将该第一线程的唤醒线程调整到该指令队列的头部。
可选的,该方法还包括:确定该第一线程的线程信息。该线程信息包括以下中至少一项:该第一线程的线程I D,该第一线程的合并标识,该合并标识用于指示该第一指令是否用于指示进行合成操作。
可选的,该合并标识设置为第一值时,用于指示该第一指令用于进行合成操作。
可选的,该合并标识设置为第二值时,用于指示该第一指令不用于进行合成操作。
可选的,确定该第一线程的线程信息,包括:接收该应用程序下发的第二指令流,该第二指令流用于指示该电子设备进行第五绘制帧的绘制。该第五绘制帧的绘制早于该第一绘制帧的绘制。该电子设备筛选记录至少一个第三线程的线程信息,该第三线程对应于第二指令,该第二指令包括在该第二指令流中,该第三线程配置有Queuebuffer。根据该第三线程的线程信息,确定该第一线程的线程信息。
第二方面,提供一种电子设备,该电子设备包括一个或多个处理器和一个或多个存储器。该一个或多个存储器与该一个或多个处理器耦合,该一个或多个存储器存储有计算机指令。当该一个或多个处理器执行该计算机指令时,使得该电子设备执行如第一方面及其可选的设计中任一种提供的数据处理方法。
第三方面,提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当该计算机指令运行时,执行如第一方面及其可选的设计中任一种提供的数据处理方法
第四方面,提供一种计算机程序产品,该计算机程序包括指令,在计算机运行该指令时,执行如第一方面及其可选的设计中任一种提供的数据处理方法。
第五方面,提供一种芯片系统,该芯片系统包括处理器和通信接口。该处理器用于从存储介质中调用并运行该存储介质中存储的计算机程序,执行如第一方面及其可选的设计中任一种提供的数据处理方法。
应当理解的是,上述第二方面,第三方面,第四方面,以及第五方面提供的技术方案,其技术特征均可对应到第一方面及其可能的设计中提供的图像渲染方法,因此能够达到的有益效果类似,此处不再赘述。
附图说明
图1为一种电子设备界面的示意图;
图2为一种界面渲染的内部逻辑示意图;
图3为一种界面渲染的内部逻辑示意图;
图4为一种界面渲染的逻辑示意图;
图5为一种电子设备中指令处理的逻辑示意图;
图6为一种界面渲染的逻辑示意图;
图7为本申请实施例提供的一种电子设备的组成示意图:
图8为本申请实施例提供的一种电子设备的软件组成示意图:
图9为本申请实施例提供的一种电子设备的软件组成示意图:
图10为本申请实施例提供的一种数据处理方法的模块间交互示意图;
图11为本申请实施例提供的一种VI P线程的配置示意图;
图12为本申请实施例提供的一种VI P线程的取消示意图;
图13为本申请实施例提供的一种VI P线程的配置示意图;
图14为本申请实施例提供的一种VI P线程的配置示意图;
图15为本申请实施例提供的一种处理器频率调整的流程示意图;
图16为本申请实施例提供的一种处理器频率调整的流程示意图;
图17为本申请实施例提供的一种丢帧情况下的显示逻辑示意图;
图18为本申请实施例提供的一种数据处理方法的层间交互示意图;
图19为本申请实施例提供的一种电子设备的组成示意图;
图20为本申请实施例提供的一种芯片系统的组成示意图。
具体实施方式
电子设备中可以安装有一个或多个应用程序。通过运行应用程序,电子设备可以向用户提供多种不同的功能。
以电子设备为手机为例。电子设备中安装的应用程序可以包括购物应用、日历应用、图库、备忘录等。
示例性的,参考图1,在手机的界面21中可以显示有各个应用程序的图标。例如,手机在界面21上可以显示有购物应用对应的图标11。
在需要使用购物应用时,用户可以对图标11输入相应的操作,以指示电子设备开始运行该购物应用。该对图标11输入相应的操作可以包括点击操作等。
响应于用户输入的点击操作,手机可以运行购物应用,在显示屏上切换显示购物应用提供的界面。
示例性的,在用户输入对图标11的操作后,手机可以切换显示如图1所示的界面22。
作为一种示例,在界面22中可以包括购物应用提供的多个不同商品的展示窗口。例如,在界面22中可以包括商品1对应的显示框41,以及商品2对应的显示框2。
在本示例中,购物应用还提供更多商品对应的展示窗口。
用户可以在界面22上输入切换指示,以便指示手机刷新界面,显示其他商品的展示窗口。例如,该切换指示可以包括在界面22上输入的操作31相对应的滑动操作。
响应于用户输入的操作31,手机可以刷新界面,显示界面23。在该界面23中,可以包括不同于商品1和商品2的更多商品的展示窗口。例如,在界面23中可以包括商品3对应的显示框43,以及商品4对应的显示框44。
这样,在与用户的交互过程中,手机中的购物应用就可以向用户提供更多的商品信息。
为了实现如图1所示的界面切换显示效果,手机可以在购物应用的指示下,进行各个界面的渲染以及显示。
示例性的,应用程序运行后,可以在手机中拉起对应的进程。该进程可以实现对各个界面的渲染操作。其中,一个界面可以对应于一个绘制帧。
作为一种实现,以购物应用为例。
购物应用运行后,可以拉起渲染进程。该渲染进程中可以包括多个渲染子线程。不同渲染子线程可以分别用于进行一个绘制帧中一部分区域(或模型)的渲染。在渲染进程中还可以包括合并线程。该合并线程可以用于在各个渲染子线程完成各自对应的渲染操作后,对各个渲染自宣称渲染获取的渲染结果进行合并,由此获取一个完整的绘制帧,以便于后续送显。
在本申请中,渲染子线程可以对应到用于进行区域绘制的子render。合并线程可以对应到用于进行合并处理的主render。
其中,render也称render函数或渲染函数。子render为用于实现绘制帧中部分区域绘制的渲染函数。对应的,主render为用户实现合并操作的渲染函数。
结合图1的说明,以界面22的渲染显示为例。参考图2,购物应用运行后,在手机中可以拉起渲染进程。渲染进程中可以包括渲染子线程1、渲染子线程2,以及合并线程1。
其中,渲染子线程1可以用于渲染界面22中的显示框41,例如,显示框41对应的渲染结果称为渲染结果1。渲染子线程2可以用于渲染界面22中的显示框42,例如,显示框42对应的渲染结果称为渲染结果2。
在获取渲染结果1以及渲染结果2之后,手机可以在渲染进程下发的合并线程1的指示下,将渲染结果1和渲染结果2合并渲染到同一张贴图(如称为渲染结果3)上,实现界面22的完整渲染。
由此,在需要显示界面22时(如在运行购物应用后),手机就可以将渲染结果3的图像数据传输给显示器进行显示。
对于界面23的渲染显示过程与上述界面22的渲染显示过程类似。例如,参考图3,渲染进程中还可以包括渲染子线程3、渲染子线程4,以及合并线程2。
其中,渲染子线程3可以用于渲染界面23中的显示框43。渲染子线程4可以用于渲染界面23中的显示框44。合并线程2可以用于将显示框43以及显示框44对应的渲染结果合并渲染到同一张贴图上,从而获取界面23对应的渲染结果,以便于后续送显。
结合图2以及图3的说明,对于任一个界面(如界面22或界面23),若要在手机上完整的显示界面上的所有内容,则需要首先完成对应的子线程的渲染处理。
例如,参考图4,界面22的完整显示,需要保证渲染子线程1以及渲染子线程2的处理。又如,界面23的完整显示,需要保证渲染子线程3以及渲染子线程4的处理。这样,在完整显示界面22以及界面23的情况下,电子设备的显示就不会存在卡顿、丢帧等问题。
从电子设备内部处理的角度,在电子设备中的各项处理,都可以是基于指令队列进行的。
示例性的,结合图5,为一种电子设备中的指令队列处理机制的示意。电子设备中的应用1到应用N的进程都可以下发各自对应的指令,以指示电子设备进行对应的处理。
在电子设备中可以设置有指令处理队列。电子设备可以按照各个指令的下发时序,以及各个指令的优先级标识,将各个指令放入指令处理队列中。下发越早,优先级越高,指令在队列中的位置越靠前(对应于如图5中的靠下)。例如,在指令处理队列中位置从前向后依次包括指令1、指令2、……、指令N。
以电子设备的中央处理器(CPU)为单核处理为例。处理器可以依次从指令处理队列中获取指令进行执行。这样,在指令队列中的位置越靠前,则该指令获取处理器的处理资源越早。对应的,在指令队列中的位置越靠后,则该指令获取处理器的处理资源越晚,可能出现处理不及时的情况。
需要说明的是,在本申请实施例中,指令可以对应到具体的一行或多行代码。一个线程在实现一项功能时,可以对应到一个指令。也即,一个线程可以通过运行其对应指令相应的一行或多行代码,实现该线程相应的功能。例如,以渲染子线程1为例。渲染子线程1在进行界面22的显示框41的处理时,可以运行该渲染子线程1对应的指令(如指令1)相应的一行或多行代码,实现对显示框41的渲染处理,获取显示框41对应的渲染结果。
结合前述图1-图4的场景,以界面22的渲染过程为例。在一些情况下,渲染子线程1对应的指令可以位于指令处理队列头部,如对应如图4所示的指令1。那么,渲染子线程1对应的指令就可以较早的获取处理器的处理资源,显示框41的渲染操作就可以得到及时执行。
而渲染子线程2对应的指令与指令1之间可能包括购物应用或其他应用下发的一个或多个指令。
示例性的,参考图6,在渲染子线程2对应的渲染操作无法得到及时处理的情况下,从而使得显示框42的渲染操作无法及时执行,界面22也就不能正常显示。这样,电子设备可能在需要显示界面22时无法正常显示该界面,而在显示界面23的时机来临时,直接跳转显示界面23。由此也就表现为显示的卡顿、丢帧等问题。
为了解决上述问题,本申请实施例提供一种数据处理方法,能够识别渲染过程中的相关线程(或指令),根据当前的实际情况调整该线程(或指令)在指令处理队列中的位置。由此使得各个子线程的渲染操作能够及时获取处理资源,进行及时的处理。从而优化甚至避免由于渲染子线程无法及时处理导致的显示卡顿、丢帧等问题。
以下将结合附图,对本申请实施例提供的技术方案进行详细说明。
需要说明的是,本申请实施例提供的技术方案可以应用于用户的电子设备中。电子设备可以包括手机、可折叠电子设备、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(u ltra-mobi le persona l computer,UMPC)、上网本、蜂窝电话、个人数字助理(persona l d igita l ass i stant,PDA)、增强现实(augmented rea l ity,AR)设备、虚拟现实(vi rtua l rea l ity,VR)设备、人工智能(art ificia linte l l igence,AI)设备、可穿戴式设备、车载设备、智能家居设备、或智慧城市设备中的至少一种。本申请实施例对该电子设备的具体类型不作特殊限制。
在本申请的不同实施例中,该电子设备可以具有不同的组成。
示例性的,从硬件组成的角度,参考图7,为本申请实施例提供的一种电子设备100的组成示意图。
在本示例中,该电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(un iversa l ser ia l bus,USB)接头130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像模组193,显示屏194,以及用户标识模块(subscr iber ident ificat ionmodu le,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
在如图7的示例中,处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(app l icat ion processor,AP),调制解调处理器,图形处理器(graphics process ing un it,GPU),图像信号处理器(image s igna l processor,ISP),控制器,视频编解码器,数字信号处理器(d igita l s igna l processor,DSP),基带处理器,和/或神经网络处理器(neura l-network process ing un it,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器可以为高速缓冲存储器。该存储器可以保存处理器110用过或使用频率较高的指令或数据。如果处理器110需要使用该指令或数据,可从该存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在本申请实施例中,处理器110可以响应于电子设备中运行的应用程序发出的指令,执行对应的操作。结合图1-图6的说明,在一些实现中,多个应用程序发出的多个指令可以依次进入指令处理队列(或简称为队列),以便于处理器110按照顺序从队列中获得指令,并为该指令分配处理资源进行对应的响应。
例如,处理器110可以从队列中获取用于渲染显示框41的渲染子线程1所执行的指令。接着,处理器110可以为该渲染子线程1分配运算、存储等处理资源,以便于渲染子线程1通过这些处理资源进行显示框41的渲染处理,从而获取显示框41对应的图像数据(即渲染结果1)。
电子设备100可以通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(l iqu id crysta l d i sp l ay,LCD),有机发光二极管(organ ic l ight-emitt ing d iode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matr ix organ ic l ight emitt ing d iode的,AMOLED),柔性发光二极管(f lex light-emitt ing d iode,FLED),Min i led,MicroLed,Micro-oLed,量子点发光二极管(quantum dot l ight emitt ing d iodes,QLED)等。在一些实施例中,电子设备100可以包括1个或多个显示屏194。
在一些实施例中,电子设备的CPU可以从队列中获取指令后,在该指令指示进行图像处理的情况下,根据该指令,调用存储在电子设备中的图像处理接口,指示GPU进行相应的图像处理操作。由此实现如图2或图3所示各个显示框以及界面的渲染处理操作。该渲染处理操作获取的图像数据,可以被存储在电子设备的存储器中,以便于显示屏194根据送显指令,进行该图像数据相应的界面显示。
可以理解的是,上述图7仅为本申请提供的一种电子设备的组成示意。在另一些实施例中,电子设备还可以具有其他组成。
示例性的,参考图8,为本申请实施例提供的一种电子设备100的软件组成示意图。
在本示例中,电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的系统为例,示例性说明电子设备100的软件结构。
在如图8的示例中,电子设备100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为五层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runt ime,ART)和原生C/C++库,硬件抽象层(Hardware Abstract Layer,HAL)以及内核层。
应用程序层,即App l icat ion层,简称为应用层。该层可以包括一系列应用程序包。
如图8所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。在一些实施例中,该应用程序包还可以包括购物应用。具体的,该购物应用可以为等常见的购物应用中的至少一个。
应用程序框架层,也即App l icat ion Framework层,简称为框架层或Framework层。该层可以为应用程序层的应用程序提供应用编程接口(app l icat ion programminginterface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图8所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,资源管理器,通知管理器,活动管理器,输入管理器等。窗口管理器提供窗口管理服务(WindowManager Service,WMS),WMS可以用于窗口管理、窗口动画管理、surface管理以及作为输入系统的中转站。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。活动管理器可以提供活动管理服务(Act ivity Manager Service,AMS),AMS可以用于系统组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。输入管理器可以提供输入管理服务(I nput Manager Service,IMS),IMS可以用于管理系统的输入,例如触摸屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通过和WMS的交互,将事件分配至合适的窗口。
安卓运行时包括核心库和安卓运行时。安卓运行时负责将源代码转换为机器码。安卓运行时主要包括采用提前(ahead or t ime,AOT)编译技术和及时(just in t ime,JI T)编译技术。
核心库主要用于提供基本的Java类库的功能,例如基础数据结构、数学、IO、工具、数据库、网络等库。核心库为用户进行安卓应用开发提供了API。原生C/C++库可以包括多个功能模块。例如:表面管理器(surface manager),媒体框架(Med ia Framework),l ibc,OpenGL ES、SQLite、Webkit等。其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体框架支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。OpenGL ES提供应用程序中2D图形和3D图形的绘制和操作。SQLite为电子设备100的应用程序提供轻量级关系型数据库。
硬件抽象层运行于用户空间(user space),对内核层驱动进行封装,向上层提供调用接口。内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
上述图8为一种电子设备的软件划分,并不够成对电子设备100的实际限制。在另一些实施例中,电子设备还可以具有其他软件划分形式。
示例性的,参考图9,为本申请实施例提供的又一种电子设备的软件划分示意图。
如图9所示,在本示例中,该软件划分自上向下可以包括应用层、原生层,以及内核层。
其中,应用层可以对应于如图8所示的应用层。在该应用层中可以安装有一个或多个应用程序。例如,该应用层中可以安装有购物应用。
原生层即Nat ive层。在一些实施例中,该原生层可以对应到如图8所示的原生C/C++库。在原生层中可以设置有SurfaceF l inger框架。SurfaceF l inger框架可以用于接受多个来源的图形显示数据,将它们合并,然后发送到显示设备。在该SurfaceF l inger框架中可以配置有一个或多个功能模块,实现其对应的功能。
在本申请实施例中,在原生层中的SurfaceF l inger框架下,可以设置有追踪模块。该追踪模块也可称为Trace桩点模块。该追踪模块可以用于根据应用程序下发的指令(如渲染指令),筛选绘制帧线程。其中,该绘制帧线程可以包括以下中至少一个:渲染子线程和/或合并线程。
在一些实施例中,该线程信息还可以包括下发该绘制帧线程的时间信息。以便于内核层根据时间信息确定是否出现丢帧的情况。
追踪模块还可以用于将该绘制帧线程的线程信息发送给内核层进行处理。其中,线程信息可以包括以下中的至少一项:线程I D、合并指示。合并指示可以用于指示当前绘制帧线程是否用于指示进行合并处理。
在一些实施例中,原生层的追踪模块可以通过层间通信管道(如ioCt l函数)与内核层进行数据传输。
如图9所示,在本示例中,内核层中也可以设置有多个功能模块以便实现其对应的功能。
示例性的,在内核层中可以设置有记录模块、唤醒模块,以及配置模块。
记录模块用于接收并记录来自追踪模块的各个绘制帧线程的线程信息。
唤醒模块用于根据绘制帧线程的线程信息,确定各个绘制帧线程的唤醒者(waker)。唤醒者也即唤醒线程。对于绘制帧线程而言,唤醒者可以包括第一UI唤醒线程和第二UI唤醒线程。第一UI唤醒线程用于唤醒渲染子线程。第二UI唤醒线程用于唤醒合并线程。
例如,唤醒模块可以根据渲染子线程的线程信息,确定对应的第一U I唤醒线程的线程I D。又如,唤醒模块可以根据合并线程的线程信息,确定对应的第二UI唤醒线程的线程I D。
配置模块用于根据当前情况,配置后续绘制帧中,绘制帧线程在指令处理队列中的位置。例如,将出现频率较高的绘制帧线程调整到指令处理队列靠前的位置,以便尽快处理。或者,配置模块用于根据当前负载情况,调整后续绘制帧中,绘制帧线程从指令处理队列中取出执行时的CPU频率。例如,在负载较低时,绘制帧线程从指令处理队列中取出执行时的CPU频率提高,提升绘制帧线程的处理效率。
需要说明的是,类似与图7、图8的说明,该如图9所示的电子设备的软件划分仅为示例,并不构成的对电子设备的限制。
在一些实施例中,电子设备的内核层中可以设置有主render调度模块。该主render调度模块可以提供单一render的渲染能力。比如,在应用程序下发渲染指令(或指令流)后,该主render调度模块可以据此进行一个绘制帧或显示对象的完整渲染。
在另一些实施例中,如图1-图4的示例,电子设备还可以提供多render处理能力。在本示例中个,电子设备的内核层中可以设置还可以设置有多render调度模块。该多render调度模块可以用于配合主render调度模块,根据应用程序下发的渲染指令(或指令流)进行绘制帧中各个区域的分别绘制,完成后对各个绘制结果进行合并操作,获取绘制帧的完整图像数据。
本申请实施例提供的技术方案,可以应用于仅设置有主render调度模块的电子设备中,由此提供该单一render渲染过程中的效率,避免丢帧卡顿。
在另一些实现中,本申请实施例提供的技术方案也可以应用于包括多个主render调度模块以及多render调度模块的电子设备中,由此实现对各个绘制帧线程的合理资源配置,还能够结合处理器频率的灵活跳帧个,避免丢帧卡顿。在该场景下,电子设备中的主render调度模块可以用于进行合并线程的相关处理,多render调度模块可以用于进行渲染子线程的相关处理。
在本申请实施例提供的技术方案应用于包括多个主render调度模块以及多render调度模块的电子设备中的情况下,如图9所示的记录模块、唤醒模块以及配置模块的功能都可以在多render调度模块中实现。
以下将结合如图9所示的软件组成,对本申请实施例提供的数据处理方法进行详细说明。
本申请实施例提供的数据处理方法,能够使得电子设备根据已经完成渲染的绘制帧,确定各个绘制帧线程以及唤醒线程的线程信息。以便于电子设备可以据此调整后续绘制帧的渲染配置。进而优化绘制帧处理过程中的资源调度,减少或避免由于绘制帧线程无法及时处理导致的丢帧、卡顿问题。
本申请中,渲染配置可以包括各个绘制帧线程和/或对应唤醒线程的优先级配置,和/或执行绘制帧线程时的处理器频率。
参考图10,为本申请实施例提供的一种数据处理方法的模块间交互示意图。该方案可以应用于第N绘制帧的渲染处理过程中,用于获取各个绘制帧线程的线程信息,以便于后续调整渲染配置。
如图10所示,该方案可以包括:
S101、购物应用下发渲染指令51。其中,该渲染指令51可以用于指示电子设备进行绘制帧的渲染。
示例性的,结合图1的示例。该渲染指令51可以用于指示电子设备进行界面22或界面23的渲染。
以下举例中,以渲染指令51用于指示电子设备进行界面22的渲染为例。那么,该渲染指令51的功能可以包括:拉起渲染显示框41、显示框42的渲染子线程(如渲染子线程1以及渲染子线程2),以及合并两个渲染结果的合并线程(如合并线程1)。
在本申请的一些实现中,该指令51可以为多个指令的集合。因此,该指令51也可以替换为指令流,如第二指令流。对应指示电子设备绘制的解码(如界面22)可以称为第五绘制帧。
S102、追踪模块从渲染指令51中获取绘制帧线程的线程信息,并传输给内核层的记录模块。
其中,绘制帧线程可以包括渲染子线程以及合并线程。线程信息可以包括对应线程的线程I D、合并标识。或者,线程信息可以包括对应线程的线程I D、合并标识,以及时间信息。
其中,合并指示可以用于指示当前绘制帧线程是否用于指示进行合并处理。例如,该合并指示可以为用于指示进行合并的第一值(如1),或者,该合并指示可以为用于指示不进行合并的第二值(如0)。可以理解的是,在合并指示为第一值时,则该绘制帧线程可以为合并线程。在合并指示为第二值时,则该绘制帧线程可以为渲染子线程。
以下示例中个,以线程信息包括线程I D、合并标识,以及时间信息为例。
示例性的,追踪模块可以从渲染指令51中,筛选配置有Queuebuffer的线程作为绘制帧线程。
可以理解的是,该Queuebuffer可以用于存储当前指令对应的渲染子线程在绘制过程中所需的位置、颜色等信息。该Queuebuffer还可以用于存储当前指令对应的线程绘制完成后获取的绘制结果。
例如,追踪模块可以从渲染指令51中,确定配置有Queuebuffer的线程包括:渲染子线程1、渲染子线程2,以及合并线程1。
那么,追踪模块可以将该渲染子线程1的线程信息1,渲染子线程2的线程信息2,以及合并线程1的线程信息3,发送给记录模块。
其中,线程信息1可以包括渲染子线程1的线程I D、合并标识1,以及购物应用下发该渲染子线程1的时间信息。由于该渲染子线程1并非指示进行合并操作,因此合并标识1可以为第二值。
类似的,线程信息2可以包括渲染子线程2的线程I D、合并标识2,以及购物应用下发该渲染子线程2的时间信息。由于该渲染子线程2并非指示进行合并操作,因此合并标识2也可以为第二值。
线程信息3可以包括合并线程1的线程I D、合并标识3,以及购物应用下发该合并线程1的时间信息。由于该合并线程1指示进行合并操作,因此合并标识3可以为第一值。
S103、记录模块接收并记录绘制帧线程的线程信息。
示例性的,记录模块可以接收并记录渲染子线程1的线程信息1,渲染子线程2的线程信息2,以及合并线程1的线程信息3。
S104、唤醒模块确定绘制帧线程的唤醒线程信息。唤醒线程信息可以包括唤醒线程的线程I D。
在一些实施例中,唤醒模块可以在记录模块接收到一个合并标识为第一值的线程信息的情况下,确定该合并线程与上一个合并线程之间的渲染子线程以及该合并线程的环形线程信息。例如,记录模块可以在接收到一个包括合并标识为第一值的线程信息后,向唤醒模块发送合并消息,以便于唤醒模块确定合并线程的线程信息的到来。
可以理解的是,内核层在进行渲染指令的处理过程中,可以存储所有线程以及唤醒该线程的唤醒线程的线程I D。
那么,在本示例中,唤醒模块可以在记录模块接收到线程信息3的情况下,确定合并线程1的到来。以合并线程1相邻的上一个合并线程为合并线程3为例。唤醒模块可以从合并线程1开始,向前根据记录模块接收到的各个线程信息进行逐个查询,确定各个线程对应的唤醒线程,直至查询到合并线程3为例。
示例性的,唤醒模块可以查询合并线程1的唤醒线程为第二UI唤醒线程a。唤醒模块可以查询渲染子线程2的唤醒线程为第一UI唤醒线程b。唤醒模块可以查询渲染子线程1的唤醒线程为第一UI唤醒线程a。
由此,唤醒模块就可以确定该合并线程与上一合并线程之间的各个绘制帧线程的唤醒线程信息包括:第一UI唤醒线程a的线程I D,第一UI唤醒线程b的线程I D,第二UI唤醒线程a的线程I D。
S105、配置模块确定渲染配置。
渲染配置可以包括各个绘制帧线程和/或对应唤醒线程的优先级配置,和/或执行绘制帧线程时的处理器频率。
以渲染配置包括各个绘制帧线程和/或对应唤醒线程的优先级配置为例。
在一些实施例中,配置模块可以对不同绘制帧之间,各个绘制帧线程I D的出现次数进行计数。在出现次数达到或超过第一预设阈值时,将对应的绘制帧线程设置为VI P线程。在VI P线程下一次出现进入指令处理队列时,可以直接被放置到队列头部,以便于快速获取处理资源。比如,在现有优先级机制中,绘制帧线程优先级为普通优先级,则VI P线程下一次出现进入指令处理队列时,可以直接被放置到普通优先级队列头部。
以第一预设阈值为5为例。
参考图11,在第N帧绘制过程中,绘制帧线程I D包括:0#线程I D,以及1#线程I D。
在第N+1帧绘制过程中,绘制帧线程I D包括:0#线程I D,以及4#线程I D。
在第N+2帧绘制过程中,绘制帧线程I D包括:0#线程I D,以及2#线程I D。
在第N+3帧绘制过程中,绘制帧线程I D包括:0#线程I D,以及3#线程I D。
在第N+4帧绘制过程中,绘制帧线程I D包括:0#线程I D,以及1#线程I D。
那么,在第N帧到第N+4帧之间,配置模块可以在0#线程I D每出现一次,对应的计数器++1。在第N+4帧绘制完成后,0#线程I D的计数器达到第一预设阈值(5次)。那么,配置模块可以将该0#线程I D配置为VI P线程。由此,在下一帧中出现0#线程I D时,可以将该0#线程I D对应的绘制帧线程放入到队列头部。以便于快速出列执行。
例如,在第N+5帧绘制过程中,绘制帧线程I D包括:0#线程I D,以及1#线程I D。
则在该第N+5帧绘制过程中,0#线程I D的绘制帧线程可以直接被放入到普通优先级队列头部,以便于快速执行。
在本示例的另一些实现中,在VI P线程没有连续出现时,则配置模块继续保留该线程的VI P配置,直至连续未出现次数达到或超过第二预设阈值时,取消该线程的VI P配置。以此进一步优化资源配置。
以第二预设阈值为5为例。
参考图12,结合图11的示例,在第N+5帧绘制时,0#线程I D已经被配置为VI P。
在第N+6帧绘制过程中,绘制帧线程I D包括:3#线程I D,以及1#线程I D。
在第N+7帧绘制过程中,绘制帧线程I D包括:2#线程I D,以及5#线程I D。
在第N+8帧绘制过程中,绘制帧线程I D包括:1#线程I D,以及2#线程I D。
在第N+9帧绘制过程中,绘制帧线程I D包括:4#线程I D,以及3#线程I D。
在第N+10帧绘制过程中,绘制帧线程I D包括:2#线程I D,以及1#线程I D。
那么,在第N+6帧绘制过程中0#线程I D并未出现,则配置模块将0#线程I D的计数器减1。即5-1=4。
类似的,在第N+7帧绘制过程中0#线程I D并未出现,则配置模块将0#线程I D的计数器减1。即4-1=3。
在第N+8帧绘制过程中0#线程I D并未出现,则配置模块将0#线程I D的计数器减1。即3-1=2。
在第N+9帧绘制过程中0#线程I D并未出现,则配置模块将0#线程I D的计数器减1。即2-1=1。
在第N+10帧绘制过程中0#线程I D并未出现,则配置模块将0#线程I D的计数器减1。即1-1=0。
可以看到在第N+10帧绘制完成后,0#线程I D连续未出现的次数达到第二预设阈值(5次),对应计数器减为0。在该情况下,配置模块可以取消0#线程I D的VI P配置。也就是说,在后续绘制帧中,若0#线程I D再次出现,则按照当前的优先级设置正常放入普通优先级队列,而并不放入队列头部,并重新按照如图11所示的说明进行计数累积。
可以理解的是,上述说明中,针对0#线程I D的VI P配置以及取消进行了举例。针对其他绘制帧线程,配置模块都可以按照类似的方案进行计数累积,以便于将连续出现次数达到或超过第一预设阈值的绘制帧线程配置为VI P。连续未出现次数达到或超过第二预设阈值的VI P线程则取消VI P配置。在本申请实施例中,将线程配置为VI P,也可以称为将线程配置为VI P线程,该线程也可称为VI P线程。
需要说明的是,上述图11以及图12的说明中,均以出现次数+1,计数+1为例进行说明。在另一些实施例中,绘制帧线程的次数累计也可以采用其他方案。
示例性的,图13为本申请实施例提供的又一种VI P次数累计方案的流程示例。该如图13所示的方案可以应用于每个绘制帧线程的VI P配置依据。
如图13所示,该方案可以包括:
S131、在一帧图像开始绘制后,所有绘制帧线程VI P累计次数-1。
该过程可以实现如图12所示的累计次数-1的效果。
示例性的,继续以0#线程I D为例。在第N帧开始绘制时,0#线程I D对应的计数器次数-1。
S132、配置模块确定绘制帧线程是否为新线程。
示例性的,若该绘制帧线程在上一个绘制帧出现过,则判断不是新线程,跳转执行S134。反之,若该绘制帧线程在上一个绘制帧未出现过,则判断是新线程,执行S133。
以0#线程I D在第N帧中首次出现为例。那么0#线程I D为新线程,执行S133。
S133、绘制帧线程的VI P累积次数+3。
如图14所示,由此,对于0#线程I D而言,在该第N帧绘制完成时,其VI P累计次数可以为0-1+3=2。
S134、绘制帧线程的VI P累积次数+2。
在绘制帧线程已经出现过,则此次为连续出现,VI P累计次数对应+2处理。
示例性的,参考图14。在第N+1帧中,0#线程I D再次出现。那么在S132中的判断结果为该绘制帧线程不是新线程,跳转执行该S134。
对于0#线程I D而言,在该第N+1帧绘制完成时,其VI P累计次数可以为2-1+2=3。
对于第N+2帧、第N+3帧,若0#线程I D连续出现,则在完成第N+3帧绘制后,0#线程ID的计数器可以累计到5。
S135、配置模块判断VI P累积次数是否达到或超过第一预设阈值。若是,则执行以下S136。
示例性的,如图14所示,在第N帧到第N+3帧的每帧中都出现的0#线程I D的计数器的VI P累积次数就可以累计到第一预设阈值(如5次)。由此执行以下S136。
S135、配置模块为该绘制帧线程增加VI P配置。
由此,配置模块可以在完成第N+3帧绘制后,为0#线程I D增加VI P配置。那么在第N+4帧到来时,若0#线程I D依然出现,则0#线程对应的指令可以直接被放入到普通优先级队列的头部,以便快速获取处理资源。
需要说明的是,上述示例中的0#线程I D可以为渲染子线程的线程I D,或者合并线程的线程I D,或者第一UI唤醒线程的线程I D,或者第二UI唤醒线程的线程I D。
可以理解的是,上述图11-图12以及图13-图14给出了两种不同的VI P配置的累计方案。在本申请的另一些实施例中,配置模块还可以根据其他累计方案进行VI P配置,本申请实施例对此不作限制。
这样,通过上述VI P线程的配置,能够使得在后续绘制帧的处理中,对VI P线程进行指令队列位置的调整,从而保证该VI P线程及时获取处理资源。
示例性的,以电子设备进行第一绘制帧的绘制为例。该第一绘制帧可以是购物应用通过第一指令流指示电子设备进行绘制的。
在该第一指令流中可以包括已经设置为VI P线程的第一线程对应的第一指令。例如,该第一线程可以对应到前述示例中设置为VI P线程的0#线程。该第一指令可以为0#线程对应的渲染子线程执行的指令,或者该第一指令可以为0#线程对应的合并线程执行的指令。
那么,在进行该第一线程的处理时,电子设备可以将第一指令在指令队列中的位置由原先的第二位置调整到第一位置。比如,第一位置可以为普通优先级队列的头部,第二位置可以为原生的根据第一线程的优先级配置(如购物应用下发第一指令时配置的优先级数值)的在队列中的位置。可以理解的是,第一位置可以先于第二位置。也即,在调整到第一位置后,第一线程可以更早地出列进行处理。
上述示例中,以渲染配置包括进入队列优先级的VI P配置为例进行了详细说明。以下示例中,以渲染配置包括绘制帧线程出列处理时的处理器频率为例,继续对如图10所示的S104中配置模块执行确定渲染配置的具体实现进行说明。
示例性的,参考图15,为本申请实施例提供的一种处理器频率配置方案的示意图。该方案可以应用于任一个(或每一个)绘制帧线程从普通优先级队列中取出执行时的处理器频率配置。
如图15所示,该方案可以包括:
S151、设备负载是否大于第三预设阈值。
示例性的,配置模块可以根据当前设备的负载情况,判断绘制帧线程出列时的设备负载。
在设备负载大于第三阈值的情况下,则认为设备负载较大,不需要提升处理器频率,否则提升处理器频率带来的功耗等开销不利于设备运行。此时跳转执行S153。
在设备负载小于第三阈值的情况下,则认为设备负载较小,可以通过提升处理器频率,达到提升绘制帧线程处理效率的目的。此时执行S152。
其中,该第三阈值也可以称为负载阈值。
S152、将绘制帧线程的执行频率由第一频率调整为第二频率。
示例性的,第二频率大于第一频率。比如,第一频率可以为处理器的默认频率,如1KHz。第二频率可以为1.5KHz等。
由此,通过较高的处理器频率执行绘制帧线程对应的指令,提高绘制帧线程的处理效率,以便于减小绘制帧合成之前的等待时长。由此避免绘制帧无法及时合成导致的丢帧卡顿。
S153、使用第一频率进行绘制帧线程的执行。
这样,通过如图15所示的方案实现,能够使得绘制帧线程得到更加高效的处理。可以理解的是,对于唤醒绘制帧线程的第一UI绘制线程以及第二UI绘制线程,配置模块也可以参考如图15所示的方案实现,调整对应的处理器频率配置,由此提升绘制帧线程唤醒效率。
在本申请的另一些实施例中,在处理器支持高于第二频率的更高处理频率的情况下,配置模块还可以结合当前是否存在丢帧的情况,触发配置更高的处理器频率。
示例性的,参考图16,为本申请实施例提供的又一种处理器频率配置方案的示意图。该方案可以应用于任一个(或每一个)绘制帧线程从普通优先级队列中取出执行时的处理器频率配置。
如图16所示,该方案可以包括:
S161、设备负载是否大于第三预设阈值。
该S161的执行可以参考前述S151的执行,此处不再赘述。
在设备负载大于第三预设阈值的情况下,则执行S163。在设备负载小于第三预设阈值的情况下,则执行S162。
S162、是否出现丢帧。
示例性的,配置模块可以根据追踪模块发送的线程信息中,合并线程的时间信息,确定当前是否丢帧。
作为一种示例,参考图17。第N帧绘制帧中,合并线程的时间信息为时刻1。第N+1帧绘制帧中,合并线程的时间信息为时刻2。第N+2帧绘制帧中,合并线程的时间信息为时刻3。
在屏幕刷新率不变的情况下,则第N+3帧与第N+2帧之间的时间差,与第N+2帧与第N+1帧之间的时间差,以及第N+1帧与第N帧之间的时间差应当相同。
然而,在本示例中,时刻3之后的下一个合并线程的时间信息为时刻4。该时刻4与时刻3之间的时间差大于时刻3与时刻2之间的时间差(或者时刻2与时刻1之间的时间差)。那么,配置模块就可以确定出现了丢帧。配置模块可以通过进一步提高绘制帧线程的处理器频率,避免后续丢帧的出现。如执行以下S165。
反之,在各个相邻的合并线程的时间信息之间的时间差均相同或相近的情况下,则配置模块就可以确定没有出现丢帧。
作为又一种示例,电子设备可以根据当前帧图像之前的连续几帧图像完成绘制的时间差是否相同,确定是否出现丢帧。帧图像即为绘制帧。
比如,当前帧图像为第一绘制帧。向前回溯,该第一绘制帧的上一帧为第二绘制帧。第二绘制帧的上一帧为第三绘制帧。第三绘制帧的上一帧为第四绘制帧。
第二绘制帧完成绘制的时间与第三绘制帧完成绘制的时间差为第一时间差,第三绘制帧完成绘制的时间与第四绘制帧完成绘制的时间差为第二时间差。
那么,在第一时间差与第二时间差相同时,则认为没有丢帧。反之,若第一时间差与第二时间差存在显著差别的,则认为出现丢帧。
S163、使用第一频率进行绘制帧线程的执行。
该S163的执行可以参考前述S153的执行,此处不再赘述。
S164、将绘制帧线程的执行频率由第一频率调整为第二频率。
该S164的执行可以参考前述S152,此处不再赘述。
S165、将绘制帧线程的执行频率由第一频率调整为第三频率。
可以理解的是,在已经出现丢帧的情况下,则表明当前在队列中的指令较多。而在设备负载较小的情况下,则配置模块可以为绘制帧线程配置更高(如第三频率)的处理器频率,以便于提升绘制帧线程的处理效率,避免丢帧再次出现。
其中,第三频率可以大于第二频率大于第一频率。比如,第三频率可以为2KHz,第二频率可以为1.5KHz,第一频率可以为1KHz。
由此,通过上述图11-图17的说明,对于如图10所示的配置模块确定渲染配置的具体实现进行了详细说明。可以理解的是,在实际实施过程中,本领域技术人员可以根据实际需求灵活选取上述如图11-图17中提供的各个方案中的全部或部分,或者选取一个方案中的部分技术手段与其他进行结合来减小或避免丢帧的概率。
为了使得本领域技术人员能够更加清楚地了解本申请实施例提供的技术方案,以下结合图18提供的电子设备中各层模块间交互流程图,以及前述图9的软件层划分和主render调度模块以及多render调度模块的说明,继续对本申请实施例提供的方案进行说明。
需要说明的是,如图9中的说明,图9中的模块划分仅为一种示例。在该如图18的实例中,以如图9所示的追踪模块设置在电子设备的框架层为例。
其中,以配置模块确定的渲染配置包括对处理器频率的调整以及VI P线程配置为例。
如图18所示,该方案可以包括:
S1801、应用层向框架层发送渲染指令52。
示例性的,应用层的应用程序(如购物应用)可以在接收到用户的操作后,向电子设备的框架层下发渲染指令52。其中,用户的操作可以包括如图1所示的操作31,即滑动操作。
可以理解的是,该操作31对应的滑动操作可以用于指示电子设备显示该应用程序的新界面。那么对应的,应用程序可以生成与新的界面相对应的渲染指令流下发给电子设备。电子设备可以根据渲染指令流,进行新的绘制帧的渲染。
例如,该渲染指令流中可以包括渲染指令52。在本示例中,该渲染指令52可以用于指示电子设备进行基于渲染子线程的渲染操作。也即,该渲染指令52对应于一个或多个子render。
S1802、框架层触发子render产生QueueBuffer。
示例性的,框架层中用于进行渲染资源配置的模块可以根据指令52,为对应的子render配置存储空间等资源。该存储空间可以包括子render对应的QueueBuffer。
S1803、框架层筛选子render的线程信息。
示例性的,框架层中设置的追踪模块可以在接收到指令52后,根据对应子render的QueueBuffer的生成,确定该指令52对应的子render对应线程为绘制帧线程。
结合图10的说明,追踪模块可以确定该指令52对应的绘制帧线程的线程信息。该线程信息可以包括该绘制帧线程的线程I D,合并标识,和/或指令52的下发时间等信息。
S1804、框架层将子render的线程信息发送给内核层。
示例性的,如图18所示,追踪模块可以将子render的线程信息发送给内核层的主render调度模块进行资源调度。
在本申请的一些实现中,该主render调度模块可以用于处理合并线程的相关处理。那么,在主render调度模块接收到子render的线程信息后,可以不做处理。例如,主render调度模块可以在确定接收到的线程信息中携带的合并标识为第二值,即指示对应绘制帧线程不用于合成操作的情况下,对该子render的线程信息进行过滤不做处理。
主render调度模块还可以将该子render的线程信息发送给多render调度模块进行相关处理。
S1805、内核层记录子render的线程信息。
结合S1804的说明,内核层的主render调度模块可以将合并标识为第二值的子render的线程信息,发给多render调度模块。
由此,多render调度模块就可以进行该子render的线程信息的记录。相关操作可以参考如图10中记录模块的处理机制,此处不再赘述。
这样,电子设备就可以完成渲染子线程的线程信息的筛选存储。
结合如图10-图17的说明,电子设备还可以进行合并线程的线程信息的筛选存储。该合并线程可以对应于主render。
如S1801中的说明,在本示例中,应用程序生成的与新界面相对应的渲染指令流中还可以包括渲染指令53。该渲染指令53可以用于指示电子设备进行合并操作。
示例性的,如图18所示,该方案还包括:
S1806、应用层向框架层发送渲染指令53。
S1807、框架层触发主render产生QueueBuffer。
S1808、框架层筛选主render的线程信息。
S1809、框架层将主render的线程信息发送给内核层。
可以理解的是,上述S1806-S1809的执行,与S1801-S1805的执行类似。其区别仅在于会将子render替换为主render。其他操作可以互相参考,不再赘述。
S1810、内核层对主render进行资源供给。
示例性的,内核层中的主render调度模块可以用于进行主render相关进程的处理。
作为一种可能的实现,主render调度模块可以将该指令53对应的主render放入指令队列中,以便于后续配置到处理资源后进行执行。
在本示例的一些实现中,结合图11-图14的说明,主render调度模块还可以在接收到主render后,还可以对该绘制帧线程进行计数调整,以便于在计数器达到或操作对应阈值时,进行VI P线程的配置。当然,在另一些实施例中,该计数器计数的步骤也可以由后续的多render调度模块执行。
S1811、内核层查找唤醒线程。
示例性的,主render调度模块可以按照S1810中的原生流程进行响应之后,将主render的线程信息发送给多render调度模块。
多render调度模块就可以在该主render线程到来后,进行该主render与上一个主render之间各个绘制帧线程的回溯查找,确定各个绘制帧线程的唤醒线程。
该过程可以参考前述图10中S103的说明,具体实现可以互相参考。
S1812、内核层配置优先级以及处理器频率。
示例性的,多render调度模块中的配置模块可以根据S1801-S1811中确定各个绘制帧线程的线程信息,进行以线程为对象的优先级和处理器频率的配置。具体实现可以参考图12-图17的配置示例,此处不再赘述。
上述主要从各个功能模块的角度对本申请实施例提供的方案进行了介绍。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
示例性的,图19示出了的一种电子设备1900的组成示意图。如图19所示,该电子设备1900可以包括:处理器1901和存储器1902。该存储器1902用于存储计算机执行指令。示例性的,在一些实施例中,当该处理器1901执行该存储器1902存储的指令时,可以使得该电子设备1900执行上述实施例中任一种所示的数据处理方法。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
图20示出了的一种芯片系统2000的组成示意图。该芯片系统2000可以包括:处理器2001和通信接口2002,用于支持相关设备实现上述实施例中所涉及的功能。在一种可能的设计中,芯片系统还包括存储器,用于保存电子设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。需要说明的是,在本申请的一些实现方式中,该通信接口2002也可称为接口电路。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在上述实施例中的功能或动作或操作或步骤等,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(d igita l subscr iber l ine,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(so l id state di sk,SSD))等。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。

Claims (18)

1.一种数据处理方法,其特征在于,所述方法应用于电子设备,所述电子设备中设置有至少一个应用程序,所述方法包括:
接收所述应用程序下发的第一指令流,所述第一指令流用于指示所述电子设备进行第一绘制帧的绘制;所述第一指令流包括第一指令,所述第一指令用于绘制所述第一绘制帧的部分区域,或者,所述第一指令用于指示所述电子设备执行对所述第一绘制帧的各个部分区域的合并操作;
将第一指令放入指令队列的第一位置,第一位置在所述指令队列中的位置先于第二位置,所述第二位置是根据所述第一线程的优先级配置确定的在所述指令队列中的位置,所述第一指令对应于第一线程。
2.根据权利要求1所述的方法,其特征在于,
若符合预设条件,处理所述第一指令的处理器频率由第一频率提升为第二频率,所述第一频率为所述电子设备的处理器默认的处理频率。
3.根据权利要求1或2所述的方法,其特征在于,在接收到所述第一指令流之前,所述方法还包括:
将所述第一线程配置为VIP线程。
4.根据权利要求3所述的方法,其特征在于,在所述电子设备将所述第一线程配置为VIP线程之前,所述方法还包括:
所述电子设备分别接收所述应用程序下发的M个指令流,所述M个指令流中的每个指令流用于绘制一个绘制帧;所述M个指令流对应的绘制帧依次相邻,所述M个指令流对应的绘制帧中最后一个绘制帧与所述第一绘制帧相邻;
所述M个指令流中的每个指令流都包括第二线程对应的指令,所述第二线程的线程ID与所述第一线程的线程ID相同。
5.根据权利要求4所述的方法,其特征在于,M为第一预设阈值。
6.根据权利要求2所述的方法,其特征在于,所述预设条件,包括:
所述电子设备的设备负载小于负载阈值,且在执行所述第一绘制帧的绘制之前,没有出现丢帧。
7.根据权利要求6所述的方法,其特征在于,所述在执行所述第一绘制帧的绘制之前,没有出现丢帧,包括:
第一时间差与第二时间差相同;
所述第一时间差是完成第二绘制帧的时间,与完成第三绘制帧的时间的时间差;
所述第二时间差是完成第四绘制帧的时间,与完成所述第三绘制帧的时间的时间差;
所述第一绘制帧、所述第二绘制帧、所述第三绘制帧以及所述第四绘制帧依次为四个连续的绘制帧。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述第一指令用于绘制所述第一绘制帧的部分区域,所述第一线程为渲染子线程。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述第一指令用于指示所述电子设备执行对所述第一绘制帧的各个部分区域的合并操作,所述第一线程为合并线程。
10.根据权利要求1-9中任一项所述的方法,其特征在于,所述方法还包括:
将所述第一线程的唤醒线程调整到所述指令队列的头部。
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述方法还包括:
确定所述第一线程的线程信息;
所述线程信息包括以下中至少一项:所述第一线程的线程ID,所述第一线程的合并标识,所述合并标识用于指示所述第一指令是否用于指示进行合成操作。
12.根据权利要求11所述的方法,其特征在于,
所述合并标识设置为第一值时,用于指示所述第一指令用于进行合成操作。
13.根据权利要求11所述的方法,其特征在于,
所述合并标识设置为第二值时,用于指示所述第一指令不用于进行合成操作。
14.根据权利要求11-13中任一项所述的方法,其特征在于,
确定所述第一线程的线程信息,包括:
接收所述应用程序下发的第二指令流,所述第二指令流用于指示所述电子设备进行第五绘制帧的绘制;所述第五绘制帧的绘制早于所述第一绘制帧的绘制;
所述电子设备筛选记录至少一个第三线程的线程信息,所述第三线程对应于第二指令,所述第二指令包括在所述第二指令流中,所述第三线程配置有Queuebuffer;
根据所述第三线程的线程信息,确定所述第一线程的线程信息。
15.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器;所述一个或多个存储器与所述一个或多个处理器耦合,所述一个或多个存储器存储有计算机指令;
当所述一个或多个处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-14中任一项所述的数据处理方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机指令,当所述计算机指令运行时,执行如权利要求1-14中任一项所述的数据处理方法。
17.一种计算机程序产品,其特征在于,所述计算机程序包括指令,在计算机运行所述指令时,执行如权利要求1-14中任一项所述的数据处理方法。
18.一种芯片系统,其特征在于,所述芯片系统包括处理器和通信接口;所述处理器用于从存储介质中调用并运行所述存储介质中存储的计算机程序,执行如权利要求1-14中任一项所述的数据处理方法。
CN202310114994.9A 2023-01-31 一种数据处理方法及电子设备 Active CN117112086B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310114994.9A CN117112086B (zh) 2023-01-31 一种数据处理方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310114994.9A CN117112086B (zh) 2023-01-31 一种数据处理方法及电子设备

Publications (2)

Publication Number Publication Date
CN117112086A true CN117112086A (zh) 2023-11-24
CN117112086B CN117112086B (zh) 2024-07-09

Family

ID=

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014206202A1 (zh) * 2013-06-28 2014-12-31 广州市动景计算机科技有限公司 HTML5 Canvas应用处理方法、装置及存储介质
CN111432262A (zh) * 2020-02-24 2020-07-17 杭州海康威视数字技术股份有限公司 页面视频渲染方法及装置
CN111476872A (zh) * 2019-01-23 2020-07-31 华为技术有限公司 一种图像绘制方法及图像绘制装置
CN111724293A (zh) * 2019-03-22 2020-09-29 华为技术有限公司 图像渲染方法及装置、电子设备
WO2020192608A1 (zh) * 2019-03-26 2020-10-01 华为技术有限公司 图形渲染方法、装置和计算机可读存储介质
CN112506581A (zh) * 2020-12-17 2021-03-16 北京百度网讯科技有限公司 渲染小程序的方法、装置、电子设备和可读存储介质
WO2021169236A1 (zh) * 2020-02-25 2021-09-02 华为技术有限公司 渲染的方法、装置
CN113730922A (zh) * 2021-09-03 2021-12-03 网易(杭州)网络有限公司 图形渲染方法、装置、电子设备及存储介质
CN113797530A (zh) * 2021-06-11 2021-12-17 荣耀终端有限公司 图像的预测方法、电子设备和存储介质
CN114092310A (zh) * 2021-11-09 2022-02-25 杭州逗酷软件科技有限公司 图像渲染方法及电子设备、计算机可读存储介质
CN114579075A (zh) * 2022-01-30 2022-06-03 荣耀终端有限公司 数据处理方法和相关装置
CN114669047A (zh) * 2022-02-28 2022-06-28 荣耀终端有限公司 一种图像处理方法、电子设备及存储介质

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014206202A1 (zh) * 2013-06-28 2014-12-31 广州市动景计算机科技有限公司 HTML5 Canvas应用处理方法、装置及存储介质
CN111476872A (zh) * 2019-01-23 2020-07-31 华为技术有限公司 一种图像绘制方法及图像绘制装置
CN111724293A (zh) * 2019-03-22 2020-09-29 华为技术有限公司 图像渲染方法及装置、电子设备
WO2020192417A1 (zh) * 2019-03-22 2020-10-01 华为技术有限公司 图像渲染方法及装置、电子设备
WO2020192608A1 (zh) * 2019-03-26 2020-10-01 华为技术有限公司 图形渲染方法、装置和计算机可读存储介质
CN111432262A (zh) * 2020-02-24 2020-07-17 杭州海康威视数字技术股份有限公司 页面视频渲染方法及装置
WO2021169236A1 (zh) * 2020-02-25 2021-09-02 华为技术有限公司 渲染的方法、装置
CN112506581A (zh) * 2020-12-17 2021-03-16 北京百度网讯科技有限公司 渲染小程序的方法、装置、电子设备和可读存储介质
CN113797530A (zh) * 2021-06-11 2021-12-17 荣耀终端有限公司 图像的预测方法、电子设备和存储介质
CN115463419A (zh) * 2021-06-11 2022-12-13 荣耀终端有限公司 图像的预测方法、电子设备和存储介质
CN113730922A (zh) * 2021-09-03 2021-12-03 网易(杭州)网络有限公司 图形渲染方法、装置、电子设备及存储介质
CN114092310A (zh) * 2021-11-09 2022-02-25 杭州逗酷软件科技有限公司 图像渲染方法及电子设备、计算机可读存储介质
CN114579075A (zh) * 2022-01-30 2022-06-03 荣耀终端有限公司 数据处理方法和相关装置
CN114669047A (zh) * 2022-02-28 2022-06-28 荣耀终端有限公司 一种图像处理方法、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US9690621B2 (en) Multitasking method and electronic device therefor
CN107925749B (zh) 用于调整电子设备的分辨率的方法和设备
CN108475184A (zh) 电子设备及其应用数据显示方法
CN109992400A (zh) 资源分配方法、装置、移动终端及计算机可读存储介质
WO2021175272A1 (zh) 一种应用信息的显示方法及相关设备
WO2023226455A1 (zh) 应用图标的显示方法、电子设备及可读存储介质
WO2023087875A1 (zh) 进程调度方法和终端设备
US20170212962A1 (en) Apparatus and method for managing history information in an electronic device
WO2023001163A1 (zh) 一种可提升动效性能的屏幕刷新方法及设备
CN104937551A (zh) 用于图形设备的上下文感知功率管理
WO2023015978A1 (zh) 日程更新方法和设备
US20230300240A1 (en) Lock Screen Display Method for Electronic Device and Electronic Device
CN111935353B (zh) 移动终端及其短信显示方法
CN117112086B (zh) 一种数据处理方法及电子设备
WO2023005751A1 (zh) 渲染方法及电子设备
CN117112086A (zh) 一种数据处理方法及电子设备
WO2022057563A1 (zh) 一种双系统中用户界面的显示方法及电子设备
WO2022001633A1 (zh) 设备控制方法和设备
CN113900740A (zh) 加载多项列表数据的方法及装置
WO2023165225A1 (zh) 多任务场景下的悬浮球处理方法和电子设备
CN116841686B (zh) 一种应用页面的展示方法
CN116737330B (zh) 任务处理方法和电子设备
CN114595017B (zh) 数据显示方法和装置、电子设备及计算机可读存储介质
CN116056019B (zh) 一种用于卡片推荐的短信解析方法及电子设备
WO2024016798A9 (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