CN117687771A - 一种缓冲区分配方法、装置、电子设备及存储介质 - Google Patents
一种缓冲区分配方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117687771A CN117687771A CN202310917073.6A CN202310917073A CN117687771A CN 117687771 A CN117687771 A CN 117687771A CN 202310917073 A CN202310917073 A CN 202310917073A CN 117687771 A CN117687771 A CN 117687771A
- Authority
- CN
- China
- Prior art keywords
- buffer
- window
- allocation
- task
- function
- 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.)
- Pending
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 336
- 238000009877 rendering Methods 0.000 claims abstract description 123
- 230000006870 function Effects 0.000 claims description 143
- 238000000034 method Methods 0.000 claims description 58
- 238000004590 computer program Methods 0.000 claims description 9
- 239000003795 chemical substances by application Substances 0.000 claims description 5
- 238000007726 management method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000000903 blocking effect Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
本申请提供了一种缓冲区分配方法、装置、电子设备及存储介质,涉及互联网应用技术领域,包括:在需要为窗口绘制任务分配缓冲区时,获取当前系统负载;在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。本申请实施例提高了缓冲区分配的效率。
Description
技术领域
本申请涉及互联网应用技术领域,特别是涉及一种缓冲区分配方法、装置、电子设备及存储介质。
背景技术
在应用系统中启动新的应用、新的程序时,需要为其创建新的窗口(Window)。在窗口不透明的情况下,会在布局流程中增加为该窗口对应的表面Surface分配内存缓冲区的任务,以使得应用的渲染线程利用该缓冲区完成该窗口的绘制。实际应用中,为Surface分配缓冲区的任务需要在渲染线程之外建立新的线程,使得分配缓冲区的任务在新线程中与渲染线程并行处理,以提高渲染线程的执行效率。
然而,当应用系统的负载过高时,由于渲染线程在应用系统中的执行优先级较高,用于执行分配缓冲区任务的新线程的执行优先级较低,新线程将会被自动延迟执行,无法及时为Surface分配缓冲区,而得不到缓冲区分配的渲染线程只能进入休眠状态,直至缓冲区分配完成才能够唤醒,进行后续的绘制处理,渲染线程会因此陷入阻塞。而渲染线程阻塞的直接结果体现在新窗口出现后的第一帧显示耗时变长,给使用者带来应用系统响应慢、卡顿等感受。
发明内容
本申请实施例的目的在于提供一种缓冲区分配方法、装置、电子设备及存储介质,以实现提高图像的选取质量。具体技术方案如下:
第一方面,本申请实施例提供了一种缓冲区分配方法,所述方法包括:
在需要为窗口绘制任务分配缓冲区时,获取当前系统负载;
在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
本申请的一个实施例中,在所述获取当前系统负载之前,所述方法还包括:
获取窗口创建任务;
在所述窗口创建任务对应的窗口不透明的情况下,创建窗口绘制任务。
本申请的一个实施例中,所述在所述窗口创建任务对应的窗口不透明的情况下,创建窗口绘制任务,包括:
基于所述窗口创建任务,调用视图查看根类的执行起点函数;
通过所述执行起点函数判断所述窗口创建任务对应的窗口是否透明;
在所述窗口不透明的情况下,调用硬件渲染器类的分配缓冲区函数;
通过所述硬件渲染器类的分配缓冲区函数调用渲染代理类的分配缓冲区函数;
通过所述渲染代理类的分配缓冲区函数,在所述渲染线程中创建所述窗口绘制任务。
本申请的一个实施例中,所述在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,包括:
在渲染线程调用缓冲队列类的分配缓冲区函数后,利用所述渲染线程调用缓冲队列生成器类的分配缓冲区函数。
本申请的一个实施例中,所述在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区之前,所述方法还包括:
通过所述缓冲队列类的分配缓冲区函数判断所述当前系统负载是否超过预设负载阈值;
所述方法还包括:
在判定所述当前系统负载未超过预设负载阈值的情况下,通过所述缓冲队列类的分配缓冲区函数创建与所述渲染线程并行执行的缓冲区分配线程;
在所述分配线程中调用所述缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
本申请的一个实施例中,在所述通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区之后,所述方法还包括:
在所述渲染线程中基于分配的缓冲区执行所述窗口绘制任务,绘制所述窗口创建任务对应的窗口。
第二方面,本申请实施例提供了一种缓冲区分配装置,所述装置包括:
系统负载获取模块,用于在需要为窗口绘制任务分配缓冲区时,获取当前系统负载;
第一缓冲区分配模块,用于在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
本申请的一个实施例中,所述装置还包括:
第一任务创建模块,用于获取窗口创建任务;
第二任务创建模块,用于在所述窗口创建任务对应的窗口不透明的情况下,创建窗口绘制任务。
本申请的一个实施例中,所述第二任务创建模块,具体用于:
基于所述窗口创建任务,调用视图查看根类的执行起点函数;
通过所述执行起点函数判断所述窗口创建任务对应的窗口是否透明;
在所述窗口不透明的情况下,调用硬件渲染器类的分配缓冲区函数;
通过所述硬件渲染器类的分配缓冲区函数调用渲染代理类的分配缓冲区函数;
通过所述渲染代理类的分配缓冲区函数,在所述渲染线程中创建所述窗口绘制任务。
本申请的一个实施例中,所述第一缓冲区分配模块,具体用于:
在渲染线程调用缓冲队列类的分配缓冲区函数后,利用所述渲染线程调用缓冲队列生成器类的分配缓冲区函数。
本申请的一个实施例中,所述装置还包括:
系统负载判断模块,用于通过所述缓冲队列类的分配缓冲区函数判断所述当前系统负载是否超过预设负载阈值;
所述装置还包括:
线程创建模块,用于在判定所述当前系统负载未超过预设负载阈值的情况下,通过所述缓冲队列类的分配缓冲区函数创建与所述渲染线程并行执行的缓冲区分配线程;
第二缓冲区分配模块,用于在所述分配线程中调用所述缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
本申请的一个实施例中,所述装置还包括:
窗口绘制模块,用于在所述渲染线程中基于分配的缓冲区执行所述窗口绘制任务,绘制所述窗口创建任务对应的窗口。
第三方面,本申请实施例提供了一种电子设备,包括:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的缓冲区分配方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的缓冲区分配方法。
本申请实施例有益效果:
本申请实施例提供的缓冲区分配方法,在需要为窗口绘制任务分配缓冲区时,获取当前系统负载,在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过分配缓冲区函数为窗口绘制任务分配缓冲区。由于渲染线程具有更高的执行优先级,能够得到更加及时的调度,所以在系统负载较高的情况下,相较于相关技术中创建新线程来分配缓冲区的方案,本申请实施例的方案能够更及时地完成分配缓冲区函数的调用,为窗口绘制任务及时分配缓冲区,提高了缓冲区分配的效率,降低了渲染线程的阻塞几率,既不会较长时间地阻塞渲染线程中窗口绘制的进度,也节省了创建新线程的时间和内存开销,提高应用系统的利用率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1-1为本申请实施例提供的一种缓冲区分配方法的应用场景示例图;
图1-2为本申请实施例提供的一种相关技术中分配缓冲区的方法流程示例图;
图1-3为本申请实施例提供的一种相关技术中分配缓冲区的痕迹追踪示例图;
图2为本申请实施例提供的电子设备的第一种结构示意图;
图3为本申请实施例提供的电子设备的第二种结构示意图;
图4为本申请实施例提供的电子设备的一种软件结构框图;
图5为本申请实施例提供的第一种缓冲区分配方法的流程示意图;
图6为本申请实施例提供的第二种缓冲区分配方法的流程示意图;
图7为本申请实施例提供的步骤S202的一种可能的实现方式;
图8-1为本申请实施例提供的一种缓冲区分配方法的实现流程示例图;
图8-2为本申请实施例提供的一种缓冲区分配方法的实现痕迹追踪示例图;
图9为本申请实施例提供的一种缓冲区分配装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本申请保护的范围。
由于相关技术中,当应用系统的负载过高时,在新线程中为窗口绘制任务分配缓冲区的任务会被自动延迟执行,导致窗口绘制任务所在的渲染线程阻塞,为了解决这个问题,本申请实施例提供了一种缓冲区分配方法、装置、电子设备及存储介质。
本申请实施例的所提供的缓冲区分配方法可以应用于任一具备窗口绘制以及为窗口绘制的渲染线程分配缓冲区能力的电子设备中,电子设备可以为具有显示屏硬件以及相应软件支持的电子设备。例如,电子设备可以为手机、平板电脑、可穿戴设备、车载设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、家居设备等设备,本申请对电子设备的具体类型不作任何限制。
在一种可能的实施例中,为了更清楚地对本申请实施例提供的电子设备进行说明,下面将对本申请实施例提供的电子设备的一种可能的应用场景进行示例性的说明。可以理解的是,以下示例仅是本申请实施例提供的电子设备的一种可能的应用场景,在其他可能的实施例中,本申请实施例提供的电子设备也可以应用于其他可能的应用场景中,以下示例对此不做任何限制。
本申请实施例提供的缓冲区分配方法适用于电子设备的应用系统打开新窗口的应用场景,例如,使用者在电子设备的应用系统中选中请求浏览器应用,浏览器应用响应于此,弹出浏览器的主页窗口时,或使用者在浏览器应用中打开新网页,浏览器应用弹出新网页对应的新窗口时。
如图1-1所示,图1-1示出了本申请实施例提供的一种缓冲区分配方法的应用场景示例图,在用户操作电子设备时,电子设备的应用系统响应于用户的操作需要打开新窗口,即需要在应用系统中绘制新窗口,此时为新窗口的绘制任务分配缓冲区,以使得绘制新窗口的任务在所分配的缓冲区中实现。
应理解,上述为对场景的举例说明,并不对本申请的场景作任何限定。
如图1-2所示,提供了一种相关技术中分配缓冲区的方法流程示例图,在电子设备的应用系统为Android系统(安卓系统,一种操作系统)的情况下,当存在应用或活动启动时,为启动的项目创建新窗口(Window),并在新线程中为新窗口对应的surface分配内存缓冲区。具体的,应用主线程调用类ViewRootImpl的performTraversals()函数,在窗口不透明的情况下调用类HardwareRenderer的allocateBuffers()函数、Android_graphics_HardwareRenderer的Android_view_ThreadedRenderer_allocateBuffers()函数,一直调用到类RenderProxy的allocateBuffers()函数,将分配缓冲区的工作Post到渲染线程RenerThread的工作队列中,在渲染线程中调用类CanvasContext的allocateBuffers()函数、类AnativeWindow的ANativeWindow_tryAllocateButters函数,一直调用到类BBQSurface的allocateBuffers()函数,创建同名新线程,在新线程中执行allocateBuffers(),即在新创建的RenerThread线程中调用类BufferQueueProducer的allocateBuffers()函数。
如图1-3所示,提供了一种相关技术中分配缓冲区的痕迹追踪(trace)示例图,在为分配缓冲区创建的新线程中执行缓冲区分配函数,当系统处于高负载的情况下,分配缓冲区所在的新线程无法调度,出现大量Runnable(可运行)状态,缓冲区分配未完成(延迟),渲染线程(RenerThread)由于没有分配到对应的缓冲区而无法执行窗口绘制任务(阻塞DrawFrame流程),渲染线程阻塞在waitWhileAllocatingLocked()函数(分配锁定时等待函数),进入sleeping(休眠)状态。
有鉴于此,本申请实施例提供一种缓冲区分配方法,以提高缓冲区分配的效率,降低渲染线程阻塞的几率,减少新窗口加载的耗时,提高应用系统的反应流畅性。
下面将结合附图对本申请实施例的实施方式进行详细描述。
首先,在本申请实施例的第一方面,提供一种电子设备,如图2所示,包括:
存储器201,用于存放计算机程序;
处理器202,用于执行存储器201上所存放的程序时,实现如下步骤:
在需要为窗口绘制任务分配缓冲区时,获取当前系统负载;
在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
并且上述电子设备还可以包括通信总线和/或通信接口,处理器202、通信接口、存储器201通过通信总线完成相互间的通信。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
为了便于说明,以电子设备为手机为例进行示意。
如图3所示,在一些实施例中,电子设备300可以包括处理器301和通信模块302等。
其中,处理器301与图2中处理器202相同,可以包括一个或多个处理单元,例如:处理器301可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器,图像信号处理器(image signal processor,ISP),控制器,存储器,视频流编解码器,数字信号处理器,基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器301中。
控制器可以是电子设备300的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器301中还可以设置存储器,用于存储指令和数据。
在一些实施例中,处理器301中的存储器为高速缓冲存储器。该存储器可以保存处理器301刚用过或循环使用的指令或数据。如果处理器301需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器301的等待时间,因而提高了系统的效率。
在一些实施例中,处理器301可以包括一个或多个接口。接口可以包括集成电路(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)接口等。
通信模块302可以包括天线1,天线2,移动通信模块,和/或无线通信模块。
如图3所示,在一些实施例中,电子设备300还可以包括外部存储器接口305、内部存储器304,USB接口306、充电管理模块307、电源管理模块308、电池309、和传感器模块303等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备300的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
充电管理模块307用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。
在一些有线充电的实施例中,充电管理模块307可以通过USB接口306接收有线充电器的充电输入。
在一些无线充电的实施例中,充电管理模块307可以通过电子设备300的无线充电线圈接收无线充电输入。充电管理模块307为电池309充电的同时,还可以通过电源管理模块308为电子设备300供电。
电源管理模块308用于连接电池309,充电管理模块307与处理器301。电源管理模块308接收电池309和/或充电管理模块307的输入,为处理器301,内部存储器304,外部存储器,和通信模块302等供电。电源管理模块308还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。
在其他一些实施例中,电源管理模块308也可以设置于处理器301中。
在另一些实施例中,电源管理模块308和充电管理模块307也可以设置于同一个器件中。
外部存储器接口305可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备300的存储能力。外部存储卡通过外部存储器接口305与处理器301通信,实现数据存储功能。例如将音乐,视频流等文件保存在外部存储卡中。
内部存储器304可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器301通过运行存储在内部存储器304的指令,从而执行电子设备300的各种功能应用以及数据处理。内部存储器304可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备300使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器304可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备300中的传感器模块303可以包括图像传感器、触摸传感器、压力传感器、陀螺仪传感器、气压传感器、磁传感器、加速度传感器、距离传感器、接近光传感器、环境光传感器、指纹传感器、温度传感器、骨传导传感器等部件,以实现对于不同信号的感应和/或获取功能。
可选地,电子设备300还可以包括外设设备,例如鼠标、按键、指示灯、键盘、扬声器、麦克风等。
按键包括开机键,音量键等。按键可以是机械按键。也可以是触摸式按键。电子设备300可以接收按键输入,产生与电子设备300的用户设置以及功能控制有关的键信号输入。
指示器可以是指示灯,可以用于指示充电状态和电量变化,也可以用于指示消息、未接来电、和通知等。
可以理解的是,本实施例示意的结构并不构成对电子设备300的具体限定。
在另一些实施例中,电子设备300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
在电子设备中,其软件系统可以分成若干层,如图4所示,图4为本申请实施例提供的电子设备的一种软件结构框图。电子设备的系统架构包括内核部分、框架层部分及应用层部分;内核部分包括驱动层及实时操作系统,驱动层包括GPU(图形处理器)、显示器驱动(图中具体为LCD驱动)、TP驱动(触摸屏驱动)、按键等;实时操作系统包括中断管理、任务调度、MEM(内存管理)等;框架层包括:系统基本能力、底层软件服务、硬件服务能力等;应用层包括:天气应用、视频应用、输入法应用、通话应用等,大多数应用在使用过程中需要创建窗口,创建窗口的过程中需要通过框架层及内核层来实现硬件资源的分配,例如缓冲区的分配等。
为了解决缓冲区分配效率较低的技术问题,本申请实施例的第二方面,如图5所示,图5为本申请实施例提供的第一种缓冲区分配方法的流程示意图,包括:
步骤S101,在需要为窗口绘制任务分配缓冲区时,获取当前系统负载。
窗口绘制任务为在需要创建新窗口的情况下所创建的用于绘制该新窗口的任务,窗口绘制任务的执行需要基于为其分配的内存缓冲区来实现,例如,在安卓系统中,创建新窗口(Window)时,需要为Window对应的Surface分配内存缓冲区,实现Window的绘制及创建。
在需要为窗口绘制任务分配缓冲区时,获取当前系统负载,当前系统负载表示应用系统当前的工作量承载,基于当前系统负载来选择更适合后续分配缓冲区的处理方式。
步骤S102,在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
在当前系统负载超过预设负载阈值的情况下,表示当前系统工作量负荷过高,对于渲染线程和用于分配缓冲区的新线程而已,当前系统仅能按照优先级调度渲染线程,暂时无法调度新线程,所以将分配缓冲区的工作放入渲染线程中,串行调用缓冲区队列生成器的分配缓冲区函数(执行类BufferQueueProducer的allocateBuffers()函数),通过该函数为窗口绘制任务分配内存缓冲区。
预设负载阈值为预先设定的系统负载的临界值,当超过该阈值时,表示当前系统负载过高,无法并行执行用于分配缓冲区的新线程和用于绘制窗口的渲染线程。
本申请的一个实施例中,在所述通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区之后,所述方法还包括:
在所述渲染线程中基于分配的缓冲区执行所述窗口绘制任务,绘制所述窗口创建任务对应的窗口。
窗口绘制任务一直存在于渲染线程,上文提到,当系统负载过高缓冲区无法分配时,渲染线程由于没有对应的缓冲区而无法执行窗口绘制任务,渲染线程将进入休眠状态。本申请实施例中,在当前系统负载过高的情况下,利用渲染线程的执行优先级,将分配缓冲区的工作放入渲染线程中、窗口绘制任务之前,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,为窗口绘制任务分配缓冲区。在缓冲区分配完毕之后,同样在渲染线程中基于所分配的缓冲区执行窗口绘制任务,绘制所需的窗口。
本申请实施例提供的缓冲区分配方法,利用渲染线程的执行优先级在当前系统负载较高的情况下,串行调用缓冲队列生成器类的分配缓冲区函数,为窗口绘制任务分配缓冲区,避免渲染线程进入休眠状态,使得窗口绘制任务及时得到所需的缓冲区,基于此及时绘制所需的窗口,减少新窗口加载的耗时,从而提高了应用系统的反应流畅性。
本申请实施例提供的缓冲区分配方法,在需要为窗口绘制任务分配缓冲区时,获取当前系统负载,在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过分配缓冲区函数为窗口绘制任务分配缓冲区。由于渲染线程具有更高的执行优先级,能够得到更加及时的调度,所以在系统负载较高的情况下,相较于相关技术中创建新线程来分配缓冲区的方案,本申请实施例的方案能够更及时地完成分配缓冲区函数的调用,为窗口绘制任务及时分配缓冲区,提高了缓冲区分配的效率,降低了渲染线程的阻塞几率,既不会较长时间地阻塞渲染线程中窗口绘制的进度,也节省了创建新线程的时间和内存开销,提高应用系统的利用率。
本申请的一个实施例中,如图6所示,提供了第二种缓冲区分配方法的流程示意图,在上述步骤S101获取当前系统负载之前,还包括:
步骤S201,获取窗口创建任务。
步骤S202,在窗口创建任务对应的窗口不透明的情况下,创建窗口绘制任务。
窗口创建任务为在应用系统启动应用或活动、需要打开对应的新窗口的情况下,所建立的执行任务,例如,当应用系统启动新的应用,即需要打开该应用对应的窗口,此时窗口创建任务为创建该应用对应的新窗口,如在应用系统中启动输入法应用以使得输入法键盘弹出,需要打开输入法键盘所在的新窗口,建立输入法键盘所在的窗口对应的窗口创建任务;当在应用系统中运行的应用启动新的活动,需要打开该活动对应的新窗口,此时窗口创建任务为创建该应用对应的窗口,如当应用系统中运行的浏览器应用启动新网页,需要打开该网页对应的新窗口,建立新网页所在的窗口对应的窗口创建任务。
一个例子中,当新窗口为透明窗口时,表示不需要绘制全新的窗口,仅需将新窗口中的具体内容显示在当前窗口即可,例如当应用系统中运行的浏览器应用启动新网页,新网页的窗口是透明的,可以理解为新网页的窗口排版与当前浏览器应用打开的网页所在的窗口一致,不需要为其绘制新的窗口,将新网页显示在当前窗口即可。
当新窗口不透明时,表示需要对其进行绘制,例如在应用系统中启动输入法应用以使得输入法键盘弹出,需要对输入法键盘所在的新窗口进行绘制。在这种情况下,创建针对于新窗口的窗口绘制任务。具体的,在渲染线程中创建窗口绘制任务。
本申请实施例提供的缓冲区分配方法,在窗口创建任务对应的窗口不透明的情况下,在渲染进程中创建窗口绘制任务,以使得渲染线程绘制所需的新窗口,实现应用系统中窗口的及时创建。
本申请的一个实施例中,如图7所示,上述步骤S202在所述窗口创建任务对应的窗口不透明的情况下,创建窗口绘制任务,包括:
步骤S301,基于所述窗口创建任务,调用视图查看根类的执行起点函数;
步骤S302,通过执行起点函数判断所述窗口创建任务对应的窗口是否透明;
步骤S303,在窗口不透明的情况下,调用硬件渲染器类的分配缓冲区函数;
步骤S304,通过所述硬件渲染器类的分配缓冲区函数调用渲染代理类的分配缓冲区函数;
步骤S305,通过所述渲染代理类的分配缓冲区函数,在所述渲染线程中创建所述窗口绘制任务。
窗口创建任务位于应用系统的应用主线程中,当存在窗口创建任务时,首先在应用主线程中调用视图查看根类的执行起点函数(类ViewRootImpl的performTraversals()函数),在该函数中判断所创建的新窗口是否透明,当窗口不透明时,调用硬件渲染器类的分配缓冲区函数(类HardwareRenderer的allocateBuffers()函数)为窗口对应的Surface分配缓冲区,通过硬件渲染器类的分配缓冲区函数一直调用到渲染代理类的分配缓冲区函数(类RenderProxy的allocateBuffers()函数),在渲染线程(RenerThread)的工作队列中创建(Post到RenerThread工作队列)对应的窗口绘制任务。
本申请实施例提供的缓冲区分配方法,在应用主线程中执行窗口创建任务,将窗口创建任务的前期流程均在应用主线程中执行,仅在渲染线程中执行窗口绘制任务,提高窗口创建的效率。
本申请的一个实施例中,所述在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,包括:
在渲染线程调用缓冲队列类的分配缓冲区函数后,利用所述渲染线程调用缓冲队列生成器类的分配缓冲区函数。
本申请的一个实施例中,所述在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区之前,所述方法还包括:
通过所述缓冲队列类的分配缓冲区函数判断所述当前系统负载是否超过预设负载阈值;
所述方法还包括:
步骤一,在判定所述当前系统负载未超过预设负载阈值的情况下,通过所述缓冲队列类的分配缓冲区函数创建与所述渲染线程并行执行的缓冲区分配线程;
步骤二,在所述分配线程中调用所述缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
缓冲队列类的分配缓冲区函数(类BufferQueueProducer(BBQSurface)的allocateBuffers()函数)是缓冲队列生成器类的分配缓冲区函数的上层函数。
应用主线程从视图查看根类的执行起点函数一直调用至渲染代理类的分配缓冲区函数,随后在渲染线程中创建窗口绘制任务。窗口绘制任务创建之后,在渲染线程中调用缓冲队列类的分配缓冲区函数,此时判断当前系统负载是否超过预设负载阈值。
若超过,缓冲队列类的分配缓冲区函数在渲染线程中直接串行调用缓冲队列生成器类的分配缓冲区函数,为窗口绘制任务分配缓冲区之后,渲染线程基于缓冲区继续串行执行窗口绘制任务。
若不超过,表示当前系统负载仍有空间并行执行双线程,则缓冲队列类的分配缓冲区函数创建与渲染线程并行执行的缓冲区分配线程,在缓冲区线程中调用缓冲队列生成器类的分配缓冲区函数,为窗口绘制任务分配缓冲区,渲染线程并行执行基于该缓冲区执行窗口绘制任务,绘制对应的窗口。
需要强调的是,上文中视图查看根类的执行起点函数的调用、判断窗口创建任务对应的窗口是否透明的流程、硬件渲染器类的分配缓冲区函数的调用、渲染代理类的分配缓冲区函数的调用、在渲染线程中创建窗口绘制任务,均在应用系统的应用主线程中执行。缓冲队列类的分配缓冲区函数的调用、判断当前系统负载是否超过预设负载阈值均在渲染线程中执行。
若当前系统负载超过预设负载阈值,缓冲队列生成器类的分配缓冲区函数的调用在渲染线程中执行,若当前系统负载未超过预设负载阈值,缓冲队列生成器类的分配缓冲区函数的调用在所创建的新线程即缓冲区分配线程中执行。
一个例子中,缓冲区分配线程与渲染线程在实际中的命名一致,均为RenerThread。
本申请实施例提供的缓冲区分配方法,在当前系统负载过高的情况下,在渲染线程中串行执行缓冲区的分配和基于缓冲区的窗口绘制,利用相关技术中渲染线程由于无法分配缓冲区而进入休眠状态的时间段来执行缓冲区的分配,提高缓冲区分配的效率,进而提高窗口绘制任务、窗口创建任务的执行效率,尽可能地降低渲染线程的阻塞,提高应用主线程乃至于系统的流畅性;在当前系统负载较低的情况下,并行执行缓冲区分配线程和渲染线程,进可能地提高窗口绘制任务、窗口创建任务整体的执行效率,从而提高应用主线程乃至于系统的流畅性,提高应用系统的利用率。
如图8-1所示,本申请实施例提供了一种缓冲区分配方法的实现流程示例图。图8-2为本申请实施例提供的一种缓冲区分配方法的实现痕迹追踪示例图,通过图8-1所示的缓冲区分配方法,使得渲染线程顺利执行。可以看出,通过本申请实施例提供的缓冲区分配方法,避免了渲染线程进入休眠状态,而是利用相关技术中渲染线程进入休眠状态的时间来串行执行进行缓冲区的分配,提高了缓冲区分配的效率。
第二方面,如图9所示,本申请实施例提供了一种缓冲区分配装置的结构示意图,所述装置包括:
系统负载获取模块401,用于在需要为窗口绘制任务分配缓冲区时,获取当前系统负载;
第一缓冲区分配模块402,用于在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
本申请实施例提供的缓冲区分配装置,在需要为窗口绘制任务分配缓冲区时,获取当前系统负载,在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过分配缓冲区函数为窗口绘制任务分配缓冲区。由于渲染线程具有更高的执行优先级,能够得到更加及时的调度,所以在系统负载较高的情况下,相较于相关技术中创建新线程来分配缓冲区的方案,本申请实施例的方案能够更及时地完成分配缓冲区函数的调用,为窗口绘制任务及时分配缓冲区,提高了缓冲区分配的效率,降低了渲染线程的阻塞几率,既不会较长时间地阻塞渲染线程中窗口绘制的进度,也节省了创建新线程的时间和内存开销。
本申请的一个实施例中,所述装置还包括:
第一任务创建模块,用于获取窗口创建任务;
第二任务创建模块,用于在所述窗口创建任务对应的窗口不透明的情况下,创建窗口绘制任务。
本申请实施例提供的缓冲区分配装置,在窗口创建任务对应的窗口不透明的情况下,在渲染进程中创建窗口绘制任务,以使得渲染线程绘制所需的新窗口,实现应用系统中窗口的及时创建。
本申请的一个实施例中,所述第二任务创建模块,具体用于:
基于所述窗口创建任务,调用视图查看根类的执行起点函数;
通过所述执行起点函数判断所述窗口创建任务对应的窗口是否透明;
在所述窗口不透明的情况下,调用硬件渲染器类的分配缓冲区函数;
通过所述硬件渲染器类的分配缓冲区函数调用渲染代理类的分配缓冲区函数;
通过所述渲染代理类的分配缓冲区函数,在所述渲染线程中创建所述窗口绘制任务。
本申请实施例提供的缓冲区分配装置,在应用主线程中执行窗口创建任务,将窗口创建任务的前期流程均在应用主线程中执行,仅在渲染线程中执行窗口绘制任务,提高窗口创建的效率。
本申请的一个实施例中,所述第一缓冲区分配模块402,具体用于:
在渲染线程调用缓冲队列类的分配缓冲区函数后,利用所述渲染线程调用缓冲队列生成器类的分配缓冲区函数。
本申请的一个实施例中,所述装置还包括:
系统负载判断模块,用于通过所述缓冲队列类的分配缓冲区函数判断所述当前系统负载是否超过预设负载阈值;
所述装置还包括:
线程创建模块,用于在判定所述当前系统负载未超过预设负载阈值的情况下,通过所述缓冲队列类的分配缓冲区函数创建与所述渲染线程并行执行的缓冲区分配线程;
第二缓冲区分配模块,用于在所述分配线程中调用所述缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
本申请实施例提供的缓冲区分配装置,在当前系统负载过高的情况下,在渲染线程中串行执行缓冲区的分配和基于缓冲区的窗口绘制,利用相关技术中渲染线程由于无法分配缓冲区而进入休眠状态的时间段来执行缓冲区的分配,提高缓冲区分配的效率,进而提高窗口绘制任务、窗口创建任务的执行效率,尽可能地降低渲染线程的阻塞,提高应用主线程乃至于系统的流畅性;在当前系统负载较低的情况下,并行执行缓冲区分配线程和渲染线程,进可能地提高窗口绘制任务、窗口创建任务整体的执行效率,从而提高应用主线程乃至于系统的流畅性。
本申请的一个实施例中,所述装置还包括:
窗口绘制模块,用于在所述渲染线程中基于分配的缓冲区执行所述窗口绘制任务,绘制所述窗口创建任务对应的窗口。
本申请实施例提供的缓冲区分配装置,利用渲染线程的执行优先级在当前系统负载较高的情况下,串行调用缓冲队列生成器类的分配缓冲区函数,为窗口绘制任务分配缓冲区,避免渲染线程进入休眠状态,使得窗口绘制任务及时得到所需的缓冲区,基于此及时绘制所需的窗口,减少新窗口加载的耗时,从而提高了应用系统的反应流畅性。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一缓冲区分配方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一缓冲区分配方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (10)
1.一种缓冲区分配方法,其特征在于,所述方法包括:
在需要为窗口绘制任务分配缓冲区时,获取当前系统负载;
在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
2.根据权利要求1所述的方法,其特征在于,在所述获取当前系统负载之前,所述方法还包括:
获取窗口创建任务;
在所述窗口创建任务对应的窗口不透明的情况下,创建窗口绘制任务。
3.根据权利要求2所述的方法,其特征在于,所述在所述窗口创建任务对应的窗口不透明的情况下,创建窗口绘制任务,包括:
基于所述窗口创建任务,调用视图查看根类的执行起点函数;
通过所述执行起点函数判断所述窗口创建任务对应的窗口是否透明;
在所述窗口不透明的情况下,调用硬件渲染器类的分配缓冲区函数;
通过所述硬件渲染器类的分配缓冲区函数调用渲染代理类的分配缓冲区函数;
通过所述渲染代理类的分配缓冲区函数,在所述渲染线程中创建所述窗口绘制任务。
4.根据权利要求1所述的方法,其特征在于,所述在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,包括:
在渲染线程调用缓冲队列类的分配缓冲区函数后,利用所述渲染线程调用缓冲队列生成器类的分配缓冲区函数。
5.根据权利要求1所述的方法,其特征在于,所述在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区之前,所述方法还包括:
通过所述缓冲队列类的分配缓冲区函数判断所述当前系统负载是否超过预设负载阈值;
所述方法还包括:
在判定所述当前系统负载未超过预设负载阈值的情况下,通过所述缓冲队列类的分配缓冲区函数创建与所述渲染线程并行执行的缓冲区分配线程;
在所述分配线程中调用所述缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
6.根据权利要求1-5任一项所述的方法,其特征在于,在所述通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区之后,所述方法还包括:
在所述渲染线程中基于分配的缓冲区执行所述窗口绘制任务,绘制所述窗口创建任务对应的窗口。
7.一种缓冲区分配装置,其特征在于,所述装置包括:
系统负载获取模块,用于在需要为窗口绘制任务分配缓冲区时,获取当前系统负载;
第一缓冲区分配模块,用于在当前系统负载超过预设负载阈值的情况下,在渲染线程中串行调用缓冲队列生成器类的分配缓冲区函数,通过所述分配缓冲区函数为所述窗口绘制任务分配缓冲区。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第一任务创建模块,用于获取窗口创建任务;
第二任务创建模块,用于在所述窗口创建任务对应的窗口不透明的情况下,创建窗口绘制任务。
9.一种电子设备,其特征在于,包括:
一个或多个处理器和存储器;
所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行如权利要求1至6中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,包括计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310917073.6A CN117687771A (zh) | 2023-07-24 | 2023-07-24 | 一种缓冲区分配方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310917073.6A CN117687771A (zh) | 2023-07-24 | 2023-07-24 | 一种缓冲区分配方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117687771A true CN117687771A (zh) | 2024-03-12 |
Family
ID=90134036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310917073.6A Pending CN117687771A (zh) | 2023-07-24 | 2023-07-24 | 一种缓冲区分配方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687771A (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904850A (zh) * | 2006-08-04 | 2007-01-31 | 上海科泰世纪科技有限公司 | 对嵌入式操作系统的性能信息进行实时监测的方法 |
CN101192129A (zh) * | 2006-11-30 | 2008-06-04 | 重庆优腾信息技术有限公司 | 一种控制桌面背景的方法、装置及系统 |
US20090319904A1 (en) * | 2006-01-17 | 2009-12-24 | Reality Mobile Llc | System and Method for Remote Data Acquisition and Distribution |
CN106227594A (zh) * | 2016-07-11 | 2016-12-14 | 中国人民解放军国防科学技术大学 | 一种基于分屏的多核cpu帧缓存显示优化方法 |
CN107515759A (zh) * | 2017-09-20 | 2017-12-26 | 武汉斗鱼网络科技有限公司 | 截屏方法、装置、电子设备及可读存储介质 |
CN110377257A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 图层合成方法、装置、电子设备及存储介质 |
US10649790B1 (en) * | 2017-08-24 | 2020-05-12 | Amazon Technologies, Inc. | Multithreaded rendering for virtualized graphics processing |
CN111724293A (zh) * | 2019-03-22 | 2020-09-29 | 华为技术有限公司 | 图像渲染方法及装置、电子设备 |
CN113051047A (zh) * | 2021-03-03 | 2021-06-29 | 惠州Tcl移动通信有限公司 | 识别安卓系统绘制线程的方法、装置、移动终端及存储介质 |
CN114527980A (zh) * | 2022-02-25 | 2022-05-24 | 京东方科技集团股份有限公司 | 一种显示渲染方法、装置、电子设备和可读存储介质 |
CN114528090A (zh) * | 2020-11-06 | 2022-05-24 | 华为技术有限公司 | 基于Vulkan实现图形渲染的方法及相关装置 |
CN114556408A (zh) * | 2020-12-24 | 2022-05-27 | 深圳市大疆创新科技有限公司 | 图像渲染方法、装置和系统、计算机可读存储介质 |
CN116089056A (zh) * | 2022-08-22 | 2023-05-09 | 荣耀终端有限公司 | 用于图像绘制的方法及相关装置 |
CN116347166A (zh) * | 2022-12-27 | 2023-06-27 | Vidaa国际控股(荷兰)公司 | 显示设备及窗口显示方法 |
-
2023
- 2023-07-24 CN CN202310917073.6A patent/CN117687771A/zh active Pending
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090319904A1 (en) * | 2006-01-17 | 2009-12-24 | Reality Mobile Llc | System and Method for Remote Data Acquisition and Distribution |
CN1904850A (zh) * | 2006-08-04 | 2007-01-31 | 上海科泰世纪科技有限公司 | 对嵌入式操作系统的性能信息进行实时监测的方法 |
CN101192129A (zh) * | 2006-11-30 | 2008-06-04 | 重庆优腾信息技术有限公司 | 一种控制桌面背景的方法、装置及系统 |
CN106227594A (zh) * | 2016-07-11 | 2016-12-14 | 中国人民解放军国防科学技术大学 | 一种基于分屏的多核cpu帧缓存显示优化方法 |
US10649790B1 (en) * | 2017-08-24 | 2020-05-12 | Amazon Technologies, Inc. | Multithreaded rendering for virtualized graphics processing |
CN107515759A (zh) * | 2017-09-20 | 2017-12-26 | 武汉斗鱼网络科技有限公司 | 截屏方法、装置、电子设备及可读存储介质 |
CN111724293A (zh) * | 2019-03-22 | 2020-09-29 | 华为技术有限公司 | 图像渲染方法及装置、电子设备 |
CN110377257A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 图层合成方法、装置、电子设备及存储介质 |
CN114528090A (zh) * | 2020-11-06 | 2022-05-24 | 华为技术有限公司 | 基于Vulkan实现图形渲染的方法及相关装置 |
CN114556408A (zh) * | 2020-12-24 | 2022-05-27 | 深圳市大疆创新科技有限公司 | 图像渲染方法、装置和系统、计算机可读存储介质 |
CN113051047A (zh) * | 2021-03-03 | 2021-06-29 | 惠州Tcl移动通信有限公司 | 识别安卓系统绘制线程的方法、装置、移动终端及存储介质 |
CN114527980A (zh) * | 2022-02-25 | 2022-05-24 | 京东方科技集团股份有限公司 | 一种显示渲染方法、装置、电子设备和可读存储介质 |
CN116089056A (zh) * | 2022-08-22 | 2023-05-09 | 荣耀终端有限公司 | 用于图像绘制的方法及相关装置 |
CN116347166A (zh) * | 2022-12-27 | 2023-06-27 | Vidaa国际控股(荷兰)公司 | 显示设备及窗口显示方法 |
Non-Patent Citations (2)
Title |
---|
沐弋同学: "Activity的绘制流程(四)", 《HTTPS://WWW.JIANSHU.COM/P/5315FEA34445》, 9 May 2020 (2020-05-09) * |
苍耳叔叔: "Android-Surface之创建流程及软硬件绘制", 《HTTPS://JUEJIN.CN/POST/6896382932639580167》, 18 November 2020 (2020-11-18), pages 8 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021208627A1 (zh) | 一种任务调度方法、装置及电子设备 | |
KR20170093234A (ko) | 다중 클러스터 이종 프로세서 아키텍처에서 동적 캐시 확장을 제공하기 위한 시스템 및 방법 | |
CN111597042A (zh) | 业务线程运行方法、装置、存储介质及电子设备 | |
US11822958B2 (en) | Method and a device for data transmission between an internal memory of a system-on-chip and an external memory | |
WO2022199509A1 (zh) | 应用执行绘制操作的方法及电子设备 | |
WO2021135838A1 (zh) | 一种页面绘制方法及相关装置 | |
CN106844017A (zh) | 用于网站服务器处理事件的方法和设备 | |
CN110968415B (zh) | 多核处理器的调度方法、装置及终端 | |
CN115629884B (zh) | 一种线程调度方法、电子设备及存储介质 | |
US10089019B2 (en) | Minimizing latency from peripheral devices to compute engines | |
WO2019128588A1 (zh) | 进程处理方法和装置、电子设备、计算机可读存储介质 | |
WO2022262434A1 (zh) | 一种功耗优化方法和电子设备 | |
WO2019128573A1 (zh) | 信息处理方法、装置、计算机设备和计算机可读存储介质 | |
WO2023202429A1 (zh) | 垃圾回收的方法及电子设备 | |
WO2019128574A1 (zh) | 信息处理方法、装置、计算机设备和计算机可读存储介质 | |
CN114911336A (zh) | 调整频率的方法、装置、电子设备及可读存储介质 | |
CN113971048A (zh) | 应用程序的启动方法及装置、存储介质及电子设备 | |
WO2022194190A1 (zh) | 调整触摸手势的识别参数的数值范围的方法和装置 | |
CN113495780A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN115357389A (zh) | 内存管理方法、装置及电子设备 | |
WO2024037068A1 (zh) | 任务调度方法、电子设备及计算机可读存储介质 | |
CN116578422B (zh) | 资源分配方法和电子设备 | |
CN111813541B (zh) | 一种任务调度方法、装置、介质和设备 | |
CN117687771A (zh) | 一种缓冲区分配方法、装置、电子设备及存储介质 | |
WO2021115212A1 (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 |