CN109064538A - 视图渲染方法、装置、存储介质及智能终端 - Google Patents
视图渲染方法、装置、存储介质及智能终端 Download PDFInfo
- Publication number
- CN109064538A CN109064538A CN201810862713.7A CN201810862713A CN109064538A CN 109064538 A CN109064538 A CN 109064538A CN 201810862713 A CN201810862713 A CN 201810862713A CN 109064538 A CN109064538 A CN 109064538A
- Authority
- CN
- China
- Prior art keywords
- rendering
- thread
- cpu
- auxiliary
- main
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种视图渲染方法、装置、存储介质及智能终端。该方法包括检测到当前运行的应用程序满足渲染优化条件;控制CPU频率降低至小于预设工作频率阈值;开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与所述辅助渲染线程运行在CPU的不同核心上。通过采用本申请实施例提供的技术方案,对单线程渲染应用的渲染操作进行任务分解,将部分由主渲染线程执行的渲染操作转移至由辅助渲染线程执行,实现通过主渲染线程及辅助渲染线程并行执行渲染操作,缩短了渲染时间,进而,缩短了GPU等待时间,提升了CPU和GPU的使用效率,提高了应用程序的渲染效率。
Description
技术领域
本申请实施例涉及图像处理技术,尤其涉及一种视图渲染方法、装置、存储介质及智能终端。
背景技术
随着嵌入式技术的不断发展,以智能手机、平板电脑为代表的移动终端得到了迅猛的发展。移动终端的中央处理器从以前的单核心一直发展到现在的双核心、四核心甚至是八核心。在视图渲染方面,多核移动终端不但能展示复杂的3D图形,甚至能运行大型的3D游戏。
以3D游戏为例,需要加载及渲染多个3D模型。相关技术中的渲染方式通常是先将所有的3D模型文件以串行的方式加载至内存中,然后以串行的方式逐个渲染。然而,由于3D渲染引擎的复杂性的不断提升,游戏画质和分辨率的不断提高,导致图形API(ApplicationProgramming Interface,应用程序编程接口)操作的CPU开销已经成为图形渲染的瓶颈,单线程的CPU无法满足大量的数据绘制及传输需求,甚至对3D游戏的渲染效率造成影响。
发明内容
本申请实施例提供一种视图渲染方法、装置、存储介质及智能终端,可以优化相关技术中的渲染方案,从而提升渲染效率。
第一方面,本申请实施例提供了一种视图渲染方法,包括:
检测到当前运行的应用程序满足渲染优化条件;
控制CPU频率降低至小于预设工作频率阈值;
开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与所述辅助渲染线程运行在CPU的不同核心上。
第二方面,本申请实施例还提供了一种视图渲染装置,该装置包括:
条件检测模块,用于检测到当前运行的应用程序满足渲染优化条件;
频率控制模块,用于控制CPU频率降低至小于预设工作频率阈值;
渲染模块,用于开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与所述辅助渲染线程运行在CPU的不同核心上。
第三方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本申请实施例所述的视图渲染方法。
第四方面,本申请实施例提供了一种智能终端,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例所述的视图渲染方法。
本申请提供一种视图渲染方案,当检测到当前运行的应用程序满足渲染优化条件时,控制CPU频率降低至小于预设工作频率阈值,并开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与辅助渲染线程运行在CPU的不同核心上。通过采用本申请实施例提供的技术方案,对单线程渲染应用的渲染操作进行任务分解,将部分由主渲染线程执行的渲染操作转移至由辅助渲染线程执行,实现通过主渲染线程及辅助渲染线程并行执行渲染操作,缩短了渲染时间,进而,缩短了GPU等待时间,提升了CPU和GPU的使用效率,提高了应用程序的渲染效率,从而使显示画面的帧率更加稳定。
附图说明
图1为本申请实施例提供的一种视图渲染方法的流程图;
图2为本申请实施例提供的另一种视图渲染方法的流程图;
图3为本申请实施例提供的一种视图渲染装置的结构示意图;
图4为本申请实施例提供的一种智能终端的结构示意图;
图5为本申请实施例提供的一种智能手机的结构框图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
用户在选择智能终端时考虑的因素有多种,其中,图形性能表现所起的作用越来越凸显。以智能手机为例,随着智能手机分辨率的提高以及画面精细度的提升,用户对图形驱动器(包括CPU及GPU)的性能要求越来越高。基于该要求,操作系统可以通过一定的优化策略使得智能手机的图形处理性能、功耗被控制在用户最能接收的范围内。然而,对于部分游戏应用程序来说,应用程序只从一个渲染线程渲染到一个图层。对于3D渲染引擎的复杂性不断提升、游戏画质和分辨率不断提高的情况,图像API操作的CPU开销已经成为图像渲染的瓶颈,影响渲染效率,甚至可能出现游戏帧率不稳定导致的卡顿现象等。
基于上述问题,本申请实施例提供一种视图渲染方案,可以提升CPU及GPU的使用效率,提高渲染效率,对于游戏来说,可以使游戏帧率更加稳定。
图1为本申请实施例提供的一种视图渲染方法的流程图,该方法可以由视图渲染装置来执行,其中,该装置可由软件和/或硬件实现,一般可集成在智能终端中。该方法包括:
步骤110、检测到当前运行的应用程序满足渲染优化条件。
需要说明的是,智能终端可以以各种形式存在,诸如智能手机、PAD(平板电脑)、笔记本电脑、PSP(个人掌上游戏机)、PlayStation(家用游戏机)或智能电视等终端。
需要说明的是,当前运行的应用程序可以是智能终端前台显示的应用程序,该应用程序对应的任务栈位于活动窗口堆栈的栈顶。在Android系统中,活动窗口被称为Activity。Activity是一个负责与用户交互的组件,其提供一个屏幕(可以理解为屏幕界面,而非实体的显示屏幕),以供用户交互完成某项任务。在一个android应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件。在对Activity进行管理中,有这样两个概念:Task(任务栈)和Stack(活动窗口堆栈)。Task对应一个应用程序,Task用于存放Activity,一个Task中可以存放一个或多个Activity,且这些Activity遵循“先进后出,后进先出”的原则。而Stack又用于对Task进行管理,通常,一个Stack对一个屏幕所需展示的各Activity所属的Task进行管理,一个Stack可以管理一个或多个Task,当然,Stack也同样遵循堆栈的基本管理原则。
需要说明的是,渲染优化条件是触发渲染优化操作的预设条件,在满足渲染优化条件时,执行本申请实施例记载的视图渲染方法。渲染优化条件可以有很多种,本申请实施例并不作具体限定。例如,渲染优化条件可以是当前运行的应用程序为单线程渲染应用且应用存在CPU瓶颈。以游戏为例,单线程渲染应用可以理解为采用一个逻辑线程及一个渲染线程执行渲染相关操作的游戏。通过逻辑线程执行预设程度代码,生成渲染命令,并将渲染命令写入预设队列的空闲帧中,以待渲染线程顺序读取并执行渲染命令。其中,渲染命令包括简单图形绘制命令、纹理图片传输命令、着色器编译命令及顶点数据传输命令等。渲染线程顺序读取上述渲染命令,并串行执行所读取的渲染命令进行游戏渲染处理。CPU瓶颈的表现可以是出现严重掉帧(如帧数由60掉到20)情况,或者出现调整特效后的帧数变化很小,或者出现CPU使用率长期居高不下(如CPU使用率长期99%甚至100%)情况等。
本申请实施例中,可以在检测到渲染优化事件被触发时,获取当前运行的应用程序的应用标识。需要说明的是,渲染优化事件的触发条件可以根据实际情况设置,本申请实施例不作具体限定。例如,可以在检测到用户的动作满足预设条件(如打开游戏应用或输入预设手势)时,触发渲染优化事件。或者可以定时间间隔触发等等。当检测到渲染优化事件被触发后,系统可以通过读取标志位或者接收触发指令等方式检测到渲染优化事件已被触发,具体的检测方式本申请实施例也不作限定。
在获取到当前运行的应用程序的应用标识之后,可以基于上述应用标识查询预设的配置文件,并根据查询结果判断该应用标识对应的应用程序是否为单线程渲染应用且存在CPU瓶颈。若是,则判定该应用程序满足渲染优化条件。其中,配置文件是在智能终端出厂前配置于其内部的文件,该文件可以基于预设数量的应用程序的使用情况确定。如,针对应用商店下载排名在前的预设数量的游戏应用(即游戏App)进行测试,根据测试结果筛选出被测试游戏App中的单线程渲染游戏,保存单线程渲染游戏的应用标识。相应地,将存储应用标识的文件作为配置文件。还可以记录测试过程中,各个游戏运行时的CPU使用率、游戏掉帧的数量和/或调整特效后的帧数变化情况。将长期存在CPU使用率高于预设数值的游戏App确定为存在CPU瓶颈的应用程序,将该游戏App的应用标识存储于上述配置文件。可选的,若游戏掉帧的帧数超过预设数量阈值,则确定存在CPU瓶颈,将对应的游戏App的应用标识添加至上述配置文件。可选的,若游戏App执行调整特效操作前后的帧数变化值小于预设数量阈值,则可以判定存在CPU瓶颈,将该游戏App的应用标识存储于上述配置文件。
可以理解的是,检测当前运行的应用程序是否满足渲染优化条件的方式并不限于上述示例列举的方式,还可以是当检测到渲染优化事件时,获取当前运行的应用程序的应用标识。根据该应用标识查询预设配置文件。其中,该预设配置文件包括单线程渲染游戏的包名等应用标识。若应用标识与预设的配置文件内的目标应用标识(可以是单线程渲染游戏的包名)匹配,则确定当前运行的应用程序为单线程渲染应用。进而,获取当前的CPU使用率,若该CPU使用率超过预设使用率阈值,则使设定计数值加1,等待预设时间后再获取一次CPU使用率,将新获取的CPU使用率与预设使用率阈值进行比较。若新获取的CPU使用率仍然超过预设使用率阈值,则按照上述方式,等待预设时间后重新获取CPU使用率。如果连续多次获取的CPU使用率均超过预设使用率阈值,则确定所述应用程序满足渲染优化条件。其中,预设时间可以是系统默认时间。连续获取CPU使用率的次数可以是系统默认,也可以由用户根据实际情况自行设定,本申请实施例并不作具体限定。
步骤120、控制CPU频率降低至小于预设工作频率阈值。
需要说明的是,CPU频率可以是CPU运算时的工作频率(1秒内发生的同步脉冲数)。CPU可以具有多个核心,在运行游戏时,CPU可以采用开启多数核心甚至开启所有核心的低频模式,也可以采用开启少数核心的高频模式。根据游戏测试可知,在功耗相同的情况下,开启多数核心的低频模式的性能要高于开启少数核心的高频模式。因此,在检测到当前运行的应用程序满足渲染优化条件时,降低CPU频率开启多个核心可以实现较高的CPU的利用率,进而,也可以提高GPU的效率。
步骤130、开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与所述辅助渲染线程运行在CPU的不同核心上。
需要说明的是,预设渲染操作可以是渲染过程中耗时较长的操作。以游戏渲染为例,预设渲染操作可以是纹理图片传输、着色器编译、顶点数据传输等耗时较长的渲染准备工作。
新开启的辅助渲染线程用于执行上述预设渲染操作,且辅助渲染线程与主渲染线程运行在CPU的不同核心上。例如,可以通过辅助渲染线程执行耗时操作,包括着色器编译和CPU与GPU之间的数据传输,上述耗时操作在单线程渲染游戏中由主渲染线程执行。通过将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,实现将与GPU交互的重负载操作交由辅助渲染线程(可以认为是后台线程)执行。
示例性的,通过主渲染线程执行预设的绘制操作;通过辅助渲染线程执行预设的耗时操作,且所述绘制操作与所述耗时操作并行执行,其中,预设耗时操作包括着色器编译操作以及CPU与GPU之间的数据传输操作。若所述主渲染线程执行完成预设的绘制操作且所述辅助渲染线程未执行完成预设的耗时操作,则控制主渲染线程休眠。例如,在检测到游戏App运行后,逻辑线程执行设定的程序代码,以生成渲染命令集合,将渲染命令集合写入预设队列的空闲帧中。其中,所生成的渲染命令集合包含一组渲染命令;当进入游戏后,游戏场景包含多个需要渲染的部分,每个需要渲染的部分对应一个渲染命令,此时,每个渲染命令组中包含多个渲染命令。渲染命令的数量根据游戏的不同而不同,本申请对此不作限制。可选的,逻辑线程在先预设队列中写入渲染命令集合前,对渲染命令集合进行任务分解,可以基于操作种类进行任务分解,如分解出绘制简单图形的绘制操作对应的第一渲染命令以及渲染准备工作对应的第二渲染命令。从而,在将渲染命令集合写入预设队列时,记录第一渲染命令及第二渲染命令的地址。主渲染线程和辅助渲染线程均具有读取该预设队列的权限。逻辑线程在将渲染命令集合写入预设队列之后,向主渲染线程及辅助渲染线程发出通知消息,以便于主渲染线程及辅助渲染线程接收到通知消息后,并行执行渲染命令读取操作。其中,该逻辑线程发送至主渲染线程及辅助渲染线程的通知消息可以包含第一渲染命令及第二渲染命令的地址。如主渲染线程基于第一渲染命令的地址由预设队列中读取第一渲染命令,基于该第一渲染命令执行简单图形的绘制操作。由于一帧画面中可能有多个区域需要渲染,因此,可能存在多个第一渲染命令。主渲染线程在绘制完成一个目标对象对应的简单图形之后,可以继续绘制当前帧中其它的目标对象对应的简单图形。与主渲染线程执行的简单图形的绘制操作并行执行渲染准备工作(包括辅助渲染线程基于第二渲染命令的地址由预设队列中读取第二渲染命令,基于该第二渲染命令执行耗时的渲染准备操作,包括但不限于顶点数据、法向量数据、纹理坐标数据、面数据、材料数据的传输,以及着色器编译)。在主渲染线程执行完成一帧画面对应的所有第一渲染命令时,若辅助渲染线程仍然在执行该帧画面对应的第二渲染命令,则控制主渲染线程休眠,直至检测到GPU返回的完成信息,确定辅助渲染线程执行完成该帧画面对应的第二渲染命令。在辅助渲染线程执行完成该帧画面对应的第二渲染命令后,唤醒主渲染线程,使主渲染线程及辅助渲染线程分别执行第一渲染命令及第二渲染命令的读取并执行操作。由于主渲染线程需要执行的操作是绘制简单的图形,该操作可以在短时间内执行,不用考虑渲染准备操作,主渲染线程不易发生阻塞,保证了主渲染线程维持统一的调用时间,从而保证了帧率一致性。
本申请实施例中对游戏应用的渲染根据游戏不同而不同,本申请实施例对此不作限制,同时,由于游戏渲染的具体过程为本领域技术人员所熟知的技术,本申请实施例在此不再赘述。
本实施例的技术方案,当检测到当前运行的应用程序满足渲染优化条件时,控制CPU频率降低至小于预设工作频率阈值,并开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与辅助渲染线程运行在CPU的不同核心上。通过预先对单线程渲染应用的渲染操作进行任务分解,将部分由主渲染线程执行的渲染操作转移至由辅助渲染线程执行,实现通过主渲染线程及辅助渲染线程并行执行渲染操作,缩短了渲染时间,进而,缩短了GPU等待时间,提升了CPU和GPU的使用效率,提高了应用程序的渲染效率,从而使显示画面的帧率更加稳定。
图2为本申请实施例提供的另一种视图渲染方法的流程图,如图2所示,该方法包括:
步骤201、检测到预设的游戏应用运行。
需要说明的是,本申请实施例以游戏应用为例,并不意味着本申请实施例的方法仅应用于游戏场景,还可以应用于其它场景,如需要渲染3D模型的制图场景等。
步骤202、判断所述游戏应用是否满足渲染优化条件,若是,则执行步骤203,否则执行步骤212。
步骤203、控制CPU频率降低至小于预设工作频率阈值。
步骤204、获取处于开启状态的CPU核心数。
示例性的,根据智能终端所使用的操作系统提供的API或者通过判断文件系统中存放CPU信息的文件数来获取当前智能终端的CPU核心数。操作系统包括但不限于IOS系统及Android系统。
对于IOS操作系统的智能终端,可使用“sysctlbyname”函数来获取CPU的核心数。
对于Android操作系统的智能终端,通过判断“/sys/devices/system/cpu/”目录下记录CPU信息的文件数来获取CPU的核心数。其中,记录CPU信息的文件数即为CPU的核心数。
步骤205、判断CPU核心数是否小于预设阈值,若是,则执行步骤206,否则执行步骤207。
需要说明的是,预设阈值至少为2,实现主渲染线程及辅助渲染线程在不同的核心上运行。
步骤206、对处于未开启状态的CPU核心执行开启操作,实现处于开启状态的核心数达到预设阈值。
步骤207、开启辅助渲染线程,且控制主渲染线程与所述辅助渲染线程运行在CPU的不同核心上。
步骤208、获取一帧画面数据,通过主渲染线程执行预设的绘制操作。
需要说明的是,预设的绘制操作是针对简单图形的绘制操作,如绘制构成目标对象的三角形等。
示例性的,CPU获取待显示的一帧画面数据,通过逻辑线程生成基于该画面数据的渲染命令,此时的渲染命令被拆解为执行简单绘制操作的第一渲染任务,以及,执行耗时操作的第二渲染任务。通过主渲染线程执行第一渲染任务,实现绘制简单图形。
步骤209、通过辅助渲染线程执行预设的耗时操作,且所述绘制操作与所述耗时操作并行执行。
需要说明的是,预设耗时操作包括着色器编译操作以及CPU与GPU之间的数据传输操作。在相关技术的单线程渲染游戏中,由主渲染线程串行执行简单图形的绘制操作以及着色器编译和CPU与GPU之间的数据传输等耗时操作。
示例性的,通过辅助渲染线程调用GPU的库文件执行第二渲染任务,实现着色器编译、纹理图片传输以及顶点数据传输等耗时操作。
步骤210、若检测到所述主渲染线程执行完成所述绘制操作,则判断辅助线程是否执行完成预设的耗时操作,若是,则执行步骤211,否则执行步骤208。
考虑到保证主渲染线程与辅助渲染线程在渲染一帧画面时的同步,若主渲染线程执行完成第一渲染任务,则判断辅助渲染线程是否也执行完成第二渲染任务,若是,则确定主渲染线程与辅助渲染线程同步,否则执行预设的同步等待策略。
若主渲染线程与辅助渲染线程同步完成一帧画面的渲染,则返回执行步骤208,对下一帧画面进行渲染。
步骤211、控制主渲染线程休眠。
示例性的,若检测到主渲染线程的第一渲染任务限于辅助渲染线程的第二渲染任务执行完成,则控制主渲染线程休眠,直至检测到辅助渲染线程对应的第二渲染任务执行完成。
可选的,若检测到辅助渲染线程的第二渲染任务先于主线程的第一渲染任务执行完成,则控制辅助渲染线程休眠,直至检测到主渲染线程对应的第一渲染任务执行完成。
步骤212、通过主渲染线程执行预设的绘制操作以及预设的耗时操作。
本实施例的技术方案,通过自动检测单线程游戏运行,开启辅助渲染线程以辅助主渲染线程执行渲染操作,由主渲染线程与辅助渲染线程并行执行转染操作,包括了CPU和GPU具有较高的协同效率,解决了游戏中存在CPU瓶颈的问题,提升CPU及GPU的使用效率,进而提升了游戏的性能,在同等性能下降低了智能终端的功耗。
图3为本申请实施例提供的一种视图渲染装置的结构示意图。该装置可由软件和/或硬件实现,一般集成在智能终端中,可通过执行一种视图渲染方法提高游戏渲染效率,以使游戏帧率更稳定。如图3所示,该装置包括:
条件检测模块310,用于检测到当前运行的应用程序满足渲染优化条件;
频率控制模块320,用于控制CPU频率降低至小于预设工作频率阈值;
渲染模块330,用于开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与所述辅助渲染线程运行在CPU的不同核心上。
本实申请施例提供一种视图渲染装置,通过预先对单线程渲染应用的渲染操作进行任务分解,将部分由主渲染线程执行的渲染操作转移至由辅助渲染线程执行,实现通过主渲染线程及辅助渲染线程并行执行渲染操作,缩短了渲染时间,进而,缩短了GPU等待时间,提升了CPU和GPU的使用效率,提高了应用程序的渲染效率,从而使显示画面的帧率更加稳定。
可选的,条件检测模块310具体用于:
检测到渲染优化事件,获取当前运行的应用程序的应用标识;
根据所述应用标识查询预设的配置文件;
根据查询结果判断所述应用程序是否为单线程渲染应用且存在CPU瓶颈;
若是,则判定所述应用程序满足渲染优化条件。
可选的,条件检测模块310具体用于:
检测到渲染优化事件,获取当前运行的应用程序的应用标识;
根据所述应用标识查询预设的配置文件;
在所述应用标识与预设的配置文件记载的目标应用标识匹配时,确定当前运行的应用程序为单线程渲染应用;
获取当前的CPU使用率;
在所述CPU使用率超过预设使用率阈值时,确定所述应用程序满足渲染优化条件。
可选的,还包括:
核心数更改模块,用于在开启辅助渲染线程之前,获取处于开启状态的CPU核心数;在所述CPU核心数小于预设阈值时,对处于未开启状态的CPU核心执行开启操作,实现处于开启状态的核心数达到预设阈值。
可选的,渲染模块330具体用于:
通过主渲染线程执行预设的绘制操作;
通过辅助渲染线程执行预设的耗时操作,且所述绘制操作与所述耗时操作并行执行,其中,预设耗时操作包括着色器编译操作以及CPU与GPU之间的数据传输操作。
可选的,还包括:
同步等待模块,用于在通过主渲染线程执行预设的绘制操作之后,若所述主渲染线程执行完成预设的绘制操作且所述辅助渲染线程未执行完成预设的耗时操作,则控制主渲染线程休眠。
可选的,还包括:
操作执行模块,用于检测到当前运行的应用程序不满足渲染优化条件,通过主渲染线程执行预设的绘制操作以及预设的耗时操作。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行视图渲染方法,该方法包括:
检测到当前运行的应用程序满足渲染优化条件;
控制CPU频率降低至小于预设工作频率阈值;
开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与所述辅助渲染线程运行在CPU的不同核心上。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的视图渲染操作,还可以执行本申请任意实施例所提供的视图渲染方法中的相关操作。
本申请实施例提供了一种智能终端,该智能终端内具有操作系统,该智能终端中可集成本申请实施例提供的视图渲染装置。其中,智能终端可以为智能手机、PAD(平板电脑)、笔记本电脑、PSP(个人掌上游戏机)、PlayStation(家用游戏机)或智能电视等终端。图4为本申请实施例提供的一种智能终端的结构示意图。如图4所示,该智能终端包括存储器410及处理器420。所述存储器410,用于存储计算机程序等;所述处理器420读取并执行所述存储器410中存储的计算机程序。所述处理器420在执行所述计算机程序时实现以下步骤:检测到当前运行的应用程序满足渲染优化条件;控制CPU频率降低至小于预设工作频率阈值;开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与所述辅助渲染线程运行在CPU的不同核心上。
上述示例中列举的存储器及处理器均为智能终端的部分元器件,所述智能终端还可以包括其它元器件。以智能手机为例,说明上述智能终端可能的结构。图5为本申请实施例提供的一种智能手机的结构框图。如图5所示,该智能手机可以包括:存储器501、中央处理器(Central Processing Unit,CPU)502(又称处理器,以下简称CPU)、外设接口503、RF(Radio Frequency,射频)电路505、音频电路506、扬声器511、触摸屏512、电源管理芯片508、输入/输出(I/O)子系统509、其他输入/控制设备510以及外部端口504,这些部件通过一个或多个通信总线或信号线507来通信。
应该理解的是,图示智能手机500仅仅是智能终端的一个范例,并且智能手机500可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
下面就本实施例提供的集成有视图渲染装置的智能手机进行详细的描述。
存储器501,所述存储器501可以被CPU502、外设接口503等访问,所述存储器501可以包括高速随机存取存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储器件、闪存器件、或其他易失性固态存储器件。在存储器501中存储计算机程序。
外设接口503,所述外设接口503可以将设备的输入和输出外设连接到CPU502和存储器501。
I/O子系统509,所述I/O子系统509可以将设备上的输入输出外设,例如触摸屏512和其他输入/控制设备510,连接到外设接口503。I/O子系统509可以包括显示控制器5091和用于控制其他输入/控制设备510的一个或多个输入控制器5092。其中,一个或多个输入控制器5092从其他输入/控制设备510接收电信号或者向其他输入/控制设备510发送电信号,其他输入/控制设备510可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮。值得说明的是,输入控制器5092可以与以下任一个连接:键盘、红外端口、USB接口以及诸如鼠标的指示设备。
触摸屏512,所述触摸屏512是用户终端与用户之间的输入接口和输出接口,将可视输出显示给用户,可视输出可以包括图形、文本、图标、视频等。
I/O子系统509中的显示控制器5091从触摸屏512接收电信号或者向触摸屏512发送电信号。触摸屏512检测触摸屏上的接触,显示控制器5091将检测到的接触转换为与显示在触摸屏512上的用户界面对象的交互,即实现人机交互,显示在触摸屏512上的用户界面对象可以是运行游戏的图标、联网到相应网络的图标等。值得说明的是,设备还可以包括光鼠,光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸。
RF电路505,主要用于建立手机与无线网络(即网络侧)的通信,实现手机与无线网络的数据接收和发送。例如收发短信息、电子邮件等。具体地,RF电路505接收并发送RF信号,RF信号也称为电磁信号,RF电路505将电信号转换为电磁信号或将电磁信号转换为电信号,并且通过该电磁信号与通信网络以及其他设备进行通信。RF电路505可以包括用于执行这些功能的已知电路,其包括但不限于天线系统、RF收发机、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、CODEC(COder-DECoder,编译码器)芯片组、用户标识模块(Subscriber Identity Module,SIM)等等。
音频电路506,主要用于从外设接口503接收音频数据,将该音频数据转换为电信号,并且将该电信号发送给扬声器511。
扬声器511,用于将手机通过RF电路505从无线网络接收的语音信号,还原为声音并向用户播放该声音。
电源管理芯片508,用于为CPU502、I/O子系统及外设接口所连接的硬件进行供电及电源管理。
本申请实施例提供的智能终端,通过预先对单线程渲染应用的渲染操作进行任务分解,将部分由主渲染线程执行的渲染操作转移至由辅助渲染线程执行,实现通过主渲染线程及辅助渲染线程并行执行渲染操作,缩短了渲染时间,进而,缩短了GPU等待时间,提升了CPU和GPU的使用效率,提高了应用程序的渲染效率,从而使显示画面的帧率更加稳定。
上述实施例中提供的视图渲染装置、存储介质及智能终端可执行本申请任意实施例所提供的视图渲染方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的视图渲染方法。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (10)
1.一种视图渲染方法,其特征在于,包括:
检测到当前运行的应用程序满足渲染优化条件;
控制CPU频率降低至小于预设工作频率阈值;
开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与所述辅助渲染线程运行在CPU的不同核心上。
2.根据权利要求1所述的方法,其特征在于,检测到当前运行的应用程序满足渲染优化条件,包括:
检测到渲染优化事件,获取当前运行的应用程序的应用标识;
根据所述应用标识查询预设的配置文件;
根据查询结果判断所述应用程序是否为单线程渲染应用且存在CPU瓶颈;
若是,则判定所述应用程序满足渲染优化条件。
3.根据权利要求1所述的方法,其特征在于,检测到当前运行的应用程序满足渲染优化条件,包括:
检测到渲染优化事件,获取当前运行的应用程序的应用标识;
根据所述应用标识查询预设的配置文件;
在所述应用标识与预设的配置文件记载的目标应用标识匹配时,确定当前运行的应用程序为单线程渲染应用;
获取当前的CPU使用率;
在所述CPU使用率超过预设使用率阈值时,确定所述应用程序满足渲染优化条件。
4.根据权利要求1所述的方法,其特征在于,在开启辅助渲染线程之前,还包括:
获取处于开启状态的CPU核心数;
在所述CPU核心数小于预设阈值时,对处于未开启状态的CPU核心执行开启操作,实现处于开启状态的核心数达到预设阈值。
5.根据权利要求1所述的方法,其特征在于,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,包括:
通过主渲染线程执行预设的绘制操作;
通过辅助渲染线程执行预设的耗时操作,且所述绘制操作与所述耗时操作并行执行,其中,预设耗时操作包括着色器编译操作以及CPU与GPU之间的数据传输操作。
6.根据权利要求5所述的方法,其特征在于,在通过主渲染线程执行预设的绘制操作之后,还包括:
若所述主渲染线程执行完成预设的绘制操作且所述辅助渲染线程未执行完成预设的耗时操作,则控制主渲染线程休眠。
7.根据权利要求1至6中任一项所述的方法,其特征在于,还包括:
检测到当前运行的应用程序不满足渲染优化条件,通过主渲染线程执行预设的绘制操作以及预设的耗时操作。
8.一种视图渲染装置,其特征在于,包括:
条件检测模块,用于检测到当前运行的应用程序满足渲染优化条件;
频率控制模块,用于控制CPU频率降低至小于预设工作频率阈值;
渲染模块,用于开启辅助渲染线程,将由主渲染线程执行的预设渲染操作转移至所述辅助渲染线程执行,且控制主渲染线程与所述辅助渲染线程运行在CPU的不同核心上。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的视图渲染方法。
10.一种智能终端,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的视图渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810862713.7A CN109064538B (zh) | 2018-08-01 | 2018-08-01 | 视图渲染方法、装置、存储介质及智能终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810862713.7A CN109064538B (zh) | 2018-08-01 | 2018-08-01 | 视图渲染方法、装置、存储介质及智能终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109064538A true CN109064538A (zh) | 2018-12-21 |
CN109064538B CN109064538B (zh) | 2023-05-12 |
Family
ID=64832212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810862713.7A Active CN109064538B (zh) | 2018-08-01 | 2018-08-01 | 视图渲染方法、装置、存储介质及智能终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109064538B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825524A (zh) * | 2019-10-31 | 2020-02-21 | Oppo广东移动通信有限公司 | 应用运行优化控制方法及相关产品 |
CN110838166A (zh) * | 2019-10-21 | 2020-02-25 | 腾讯科技(深圳)有限公司 | 特效数据检测方法、装置、设备及存储介质 |
CN111402349A (zh) * | 2019-01-03 | 2020-07-10 | 百度在线网络技术(北京)有限公司 | 渲染方法、渲染装置和渲染引擎 |
CN113079408A (zh) * | 2019-12-17 | 2021-07-06 | 北京嗨动视觉科技有限公司 | 视频播放方法、装置和系统 |
CN113138655A (zh) * | 2021-04-02 | 2021-07-20 | Oppo广东移动通信有限公司 | 处理器频率的调整方法、装置、电子设备及存储介质 |
CN114626975A (zh) * | 2022-03-21 | 2022-06-14 | 北京字跳网络技术有限公司 | 数据处理方法、装置、设备、存储介质和程序产品 |
CN115350479A (zh) * | 2022-10-21 | 2022-11-18 | 腾讯科技(深圳)有限公司 | 渲染处理方法、装置、设备及介质 |
WO2022258024A1 (zh) * | 2021-06-10 | 2022-12-15 | 荣耀终端有限公司 | 一种图像处理方法和电子设备 |
CN116703690A (zh) * | 2022-11-02 | 2023-09-05 | 荣耀终端有限公司 | 图像处理方法和设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105413176A (zh) * | 2015-11-10 | 2016-03-23 | 内蒙古工业大学 | 一种应用于游戏的3d引擎系统 |
US9384523B1 (en) * | 2013-07-30 | 2016-07-05 | Google Inc. | Method for reducing input latency on GPU accelerated devices and applications |
CN106296566A (zh) * | 2016-08-12 | 2017-01-04 | 南京睿悦信息技术有限公司 | 一种虚拟现实移动端动态时间帧补偿渲染系统及方法 |
CN106997610A (zh) * | 2016-01-26 | 2017-08-01 | 阿里巴巴集团控股有限公司 | 一种图像渲染方法、装置及电子设备 |
WO2018119602A1 (zh) * | 2016-12-26 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 一种渲染方法及装置 |
-
2018
- 2018-08-01 CN CN201810862713.7A patent/CN109064538B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9384523B1 (en) * | 2013-07-30 | 2016-07-05 | Google Inc. | Method for reducing input latency on GPU accelerated devices and applications |
CN105413176A (zh) * | 2015-11-10 | 2016-03-23 | 内蒙古工业大学 | 一种应用于游戏的3d引擎系统 |
CN106997610A (zh) * | 2016-01-26 | 2017-08-01 | 阿里巴巴集团控股有限公司 | 一种图像渲染方法、装置及电子设备 |
CN106296566A (zh) * | 2016-08-12 | 2017-01-04 | 南京睿悦信息技术有限公司 | 一种虚拟现实移动端动态时间帧补偿渲染系统及方法 |
WO2018119602A1 (zh) * | 2016-12-26 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 一种渲染方法及装置 |
Non-Patent Citations (2)
Title |
---|
刘金硕等: "从图形处理器到基于GPU的通用计算", 《武汉大学学报(理学版)》 * |
谭同德等: "基于多核PC集群的并行绘制系统研究与实现", 《计算机应用》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111402349B (zh) * | 2019-01-03 | 2023-09-08 | 百度在线网络技术(北京)有限公司 | 渲染方法、渲染装置和渲染引擎 |
CN111402349A (zh) * | 2019-01-03 | 2020-07-10 | 百度在线网络技术(北京)有限公司 | 渲染方法、渲染装置和渲染引擎 |
CN110838166A (zh) * | 2019-10-21 | 2020-02-25 | 腾讯科技(深圳)有限公司 | 特效数据检测方法、装置、设备及存储介质 |
CN110838166B (zh) * | 2019-10-21 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 特效数据检测方法、装置、设备及存储介质 |
CN110825524A (zh) * | 2019-10-31 | 2020-02-21 | Oppo广东移动通信有限公司 | 应用运行优化控制方法及相关产品 |
CN113079408A (zh) * | 2019-12-17 | 2021-07-06 | 北京嗨动视觉科技有限公司 | 视频播放方法、装置和系统 |
CN113138655A (zh) * | 2021-04-02 | 2021-07-20 | Oppo广东移动通信有限公司 | 处理器频率的调整方法、装置、电子设备及存储介质 |
CN113138655B (zh) * | 2021-04-02 | 2023-11-28 | Oppo广东移动通信有限公司 | 处理器频率的调整方法、装置、电子设备及存储介质 |
WO2022258024A1 (zh) * | 2021-06-10 | 2022-12-15 | 荣耀终端有限公司 | 一种图像处理方法和电子设备 |
CN114626975A (zh) * | 2022-03-21 | 2022-06-14 | 北京字跳网络技术有限公司 | 数据处理方法、装置、设备、存储介质和程序产品 |
CN115350479A (zh) * | 2022-10-21 | 2022-11-18 | 腾讯科技(深圳)有限公司 | 渲染处理方法、装置、设备及介质 |
CN115350479B (zh) * | 2022-10-21 | 2023-01-31 | 腾讯科技(深圳)有限公司 | 渲染处理方法、装置、设备及介质 |
CN116703690A (zh) * | 2022-11-02 | 2023-09-05 | 荣耀终端有限公司 | 图像处理方法和设备 |
CN116703690B (zh) * | 2022-11-02 | 2024-05-14 | 荣耀终端有限公司 | 图像处理方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109064538B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109064538A (zh) | 视图渲染方法、装置、存储介质及智能终端 | |
US11442747B2 (en) | Method for establishing applications-to-be preloaded prediction model based on preorder usage sequence of foreground application, storage medium, and terminal | |
CN108512695B (zh) | 监控应用卡顿的方法及装置 | |
US20200342338A1 (en) | Method for preloading application, storage medium, and terminal | |
CN106791212B (zh) | 一种移动终端刷新率的控制方法、装置及移动终端 | |
CN107748686B (zh) | 应用程序的启动优化方法、装置、存储介质及智能终端 | |
WO2019228156A1 (en) | Method and device for preloading application, storage medium and intelligent terminal | |
CN106936995B (zh) | 一种移动终端帧率的控制方法、装置及移动终端 | |
CN106657681B (zh) | 一种移动终端刷新率的控制方法、装置及移动终端 | |
US11099861B2 (en) | Method for preloading application, storage medium, and terminal | |
CN107783803B (zh) | 智能终端的系统优化方法、装置、存储介质及智能终端 | |
CN108765531A (zh) | 图像渲染方法、装置、存储介质及智能终端 | |
CN108646906A (zh) | 帧率调整方法、装置、存储介质及智能终端 | |
CN107783833B (zh) | 一种终端后台应用程序的管理方法及装置 | |
CN108648259B (zh) | 图像绘制方法、装置、存储介质及智能终端 | |
KR102466012B1 (ko) | 프로세서 코어를 스케쥴링하는 방법, 장치, 단말 및 저장 매체 | |
CN107450838B (zh) | 黑屏手势的响应方法、装置、存储介质及移动终端 | |
CN108733193A (zh) | 智能调整帧率的方法、装置、存储介质及智能终端 | |
CN107402713B (zh) | 加快黑屏手势处理的方法、装置、存储介质及移动终端 | |
CN108762465A (zh) | 帧率自适应调整方法、装置、存储介质及智能终端 | |
CN106776259B (zh) | 一种移动终端帧率检测方法、装置及移动终端 | |
CN107479700A (zh) | 黑屏手势控制方法、装置、存储介质及移动终端 | |
CN108966010B (zh) | 在线视频分辨率的调节方法、装置、存储介质及终端 | |
CN108647059A (zh) | 应用程序预测方法、装置、存储介质及移动终端 | |
CN106095417A (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 |