CN114511438A - 一种控制负载的方法、装置及设备 - Google Patents
一种控制负载的方法、装置及设备 Download PDFInfo
- Publication number
- CN114511438A CN114511438A CN202011186852.6A CN202011186852A CN114511438A CN 114511438 A CN114511438 A CN 114511438A CN 202011186852 A CN202011186852 A CN 202011186852A CN 114511438 A CN114511438 A CN 114511438A
- Authority
- CN
- China
- Prior art keywords
- load
- gpu
- rendering operation
- instruction
- load data
- 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
Images
Classifications
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本申请实施例公开了一种控制负载的方法、装置及设备,用于控制图像渲染过程中的负载,该方法的适用性较好,应用范围广。本申请实施例方法包括:根据执行渲染操作的指令确定负载数据,并根据负载数据来动态地从多个负载控制方案中选择与当前负载情况匹配的负载控制方案,将这个方案应用于后续的图像处理过程中,以实现对负载的控制。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种控制负载的方法、装置及设备。
背景技术
随着通信技术和芯片技术的快速发展,移动终端成为应用程序最重要的部署平台。以游戏类的应用程序为例,越来越多的高画质且高帧率的大型游戏程序部署在移动终端上,这无疑对移动终端的图像渲染性能提出了更高的要求。而移动终端的图像渲染性能有限,所以当图像渲染性能无法满足游戏程序的负载需求时,便会影响用户的游戏体验。
为了避免上述情况发生,目前主要通过以下方法降低游戏程序的负载:在离线状态下针对特定游戏程序进行负载分析,然后确定降低负载的方案,并将降低负载的方案固化到移动终端中。
由于固化在移动终端中的方案无法跟随游戏程序的升级而升级,因此,这种降低负载的方法的适用性较差,应用范围受限。
发明内容
本申请实施例提供了一种控制负载的方法、装置及设备,用于控制图像渲染过程中的负载,该方法的适用性较好,应用范围广。
本申请实施例第一方面提供了一种控制负载的方法,包括:
获取至少一个第一指令,至少一个第一指令用于调用应用程序接口API,以使得图形处理器GPU执行第一渲染操作;第一渲染操作可以用于对一帧图像中的一个或多个物体进行渲染,也可以用于对多帧图像中的物体进行渲染;基于至少一个第一指令确定GPU执行第一渲染操作的过程的负载数据,其中,本申请实施例不限定负载数据的种类和具体的确定方式;基于负载数据确定用于控制负载的目标方案,本申请实施例也不限定确定目标方案的具体方式;获取至少一个第二指令,至少一个第二指令用于调用API,以使得GPU执行第二渲染操作,第二指令与第一指令本质上相同,都属于调用API的指令;基于目标方案控制GPU执行第二渲染操作的过程中的负载。
基于目标方案控制负载的过程与目标方案的具体内容相关。若目标方案指示对第二指令进行处理,则在获取至少一个第二指令后,先根据目标方案对获取到的至少一个第二指令进行处理,然后将处理后的至少一个第二指令传递下去。若目标方案不指示对第二指令处理,则在获取至少一个第二指令后,不对所述至少第一个第二指令进行处理,而是根据目标方案的具体内容在传递第二指令之前、传递第二指令的过程中或传递第二指令之后,对负载采取其它形式的调控手段。
由于负载数据是基于图像渲染过程中实际获取的第一指令确定的,所以本申请实施例提供的方法可以应用于任意游戏应用程序,不局限于某一款或某几款游戏应用程序,对于升级后的游戏应用程序以及新增加的游戏应用程序也同样适用,所以适用性强,应用范围广;并且,本申请实施例提供的方法也不需要离线执行,可以实现对负载的动态控制。
作为一种实现方式,基于至少一个第一指令确定GPU执行第一渲染操作的过程的负载数据包括:基于至少一个第一指令和预先设定的至少一个负载特征因子获取GPU执行第一渲染操作的过程的至少一种负载数据,每个负载特征因子对应一种负载数据。其中,负载特征因子可以根据实际需要进行定义,负载特征因子可以理解为负载数据的特征参数,每个负载特征因子指示一种负载,每个负载特征因子的取值则可以作为一种具体的负载数据。示例性地,负载特征因子可以指示计算机硬件资源的一种信息,该负载特征因子的取值则可以作为一种负载数据;例如,负载特征因子指示CPU的频点,对应地,该CPU的实际频点则可以作为一种负载数据。示例性地,负载特征因子还可以指示第一指令的数量,对应地,第一指令的具体数量则可以作为一种负载数据。
由于可以根据需要预先设定至少一个负载特征因子,对应每个负载特征因子可以得到一种负载数据,所以可以保证负载数据比较全面且具有代表性。
作为一种实现方式,至少一个负载特征因子包括以下三类负载特征因子中的至少一类:第一类负载特征因子、第二类负载特征因子和第三类负载特征因子;第一类负载特征因子用于表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况,该硬件资源可以是CPU、GPU以及内部存储器等;第二类负载特征因子用于表示GPU执行第一渲染操作的过程所渲染的网格Mesh模型的信息,网格Mesh模型的信息可以包括网格Mesh模型的顶点数量以及网格Mesh模型的数量等多种信息;第三类负载特征因子用于表示至少一个第一指令的信息,第一指令的信息可以包括第一指令的数量和指令间的关系等多种信息。
至少一个负载特征因子包括上述三类负载特征因子中的至少一类;当至少一个负载特征因子包括上述两类或上述三类负载特征因子时,保证从多个维度获取到多种负载数据,从而便于确定更加适合的用于降低负载的目标方案。
作为一种实现方式,负载数据包括第一类负载数据、第二类负载数据和第三类负载数据中的至少一种;第一类负载数据表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况;第二类负载数据表示GPU执行第一渲染操作所渲染的网格Mesh模型的信息;第三类负载数据表示至少一个第一指令的信息。
在该实现方式中,负载数据可以包括上述三类负载数据中的至少一类,保证了负载数据的多样化。
作为一种实现方式,第一类负载特征因子包括以下的至少一种:GPU执行第一渲染操作的过程中的计算耗时、中央处理器CPU的运行参数、GPU的运行参数以及内部存储器的运行参数;第二类负载特征因子包括以下的至少一种:GPU执行第一渲染操作的过程所渲染的每个Mesh模型的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的Mesh模型的数量、GPU执行第一渲染操作的过程所渲染的每帧图像中Mesh模型的重复数量和GPU执行第一渲染操作的过程所渲染的每个Mesh模型相对于屏幕的距离;第三类负载特征因子包括以下的至少一种:至少一个第一指令构成的绘制命令DC的数量、至少一个第一指令对应的渲染通道Render Pass的数量、帧缓冲Frame Buffer尺寸、渲染通道与帧缓冲的引用关系、DC与帧缓冲的引用关系。
该实现方式提供了每类负载特征因子的多种选择,从而保证了负载数据的多样化。
作为一种实现方式,第一类负载数据可以包括以下的至少一种:计算耗时、中央处理器CPU的负载数据、GPU的负载数据以及DDR内存的负载数据;第二类负载数据可以包括以下的至少一种:GPU执行第一渲染操作的过程所渲染的每个Mesh模型的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的Mesh模型的数量、GPU执行第一渲染操作的过程所渲染的每帧图像中Mesh模型的重复数量和GPU执行第一渲染操作的过程所渲染的每个Mesh模型相对于屏幕的距离;第三类负载数据可以包括以下的至少一种:至少一个第一指令构成的绘制命令(DrawCall,DC)的数量、至少一个第一指令对应的渲染通道Render Pass的数量、帧缓冲FrameBuffer尺寸、渲染通道与帧缓冲的引用关系、DC与帧缓冲的引用关系。
对于每类负载数据也可以有多种选择,从而保证了负载数据的多样化。
作为一种实现方式,至少一个负载特征因子包括第二类负载特征因子;基于至少一个第一指令和至少一个负载特征因子获取GPU执行第一渲染操作的过程的至少一种负载数据包括:基于至少一个第一指令各自携带的参数确定GPU执行第一渲染操作所渲染的网格Mesh模型的数据;基于GPU执行第一渲染操作所渲染的网格Mesh模型的数据,获取GPU执行第一渲染操作的过程对应第二类负载特征因子的负载数据。
在该实现方式中,第一指令携带的参数指示待渲染的Mesh模型的数据,根据该待渲染的Mesh模型的数据则可以确定对应第二类负载特征因子的负载数据。
作为一种实现方式,基于负载数据确定用于控制负载的目标方案包括:基于负载数据确定负载控制标签,负载控制标签指示负载控制的内容,其中,对于同一负载数据,可以确定一个或多个负载控制标签;基于负载控制标签从预设的至少一种负载控制方案中选择一种负载控制方案,作为用于控制负载的目标方案。例如,若负载数据为CPU的频点,则第一负载标签则可以指示对CPU的频点进行控制;若负载数据为第一指令的数量,则第一负载标签则可以指示对第一指令的数量进行控制。
在该实现方式中,负载控制标签的设定,使得开发者可以灵活扩展负载控制方案,即预先设定与负载控制标签关联的更多的负载控制方案以供选择。
作为一种实现方式,负载数据包括第一类负载数据,第一类负载数据表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况;基于负载数据确定负载控制标签包括:基于第一类负载数据指示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况满足第一条件,确定第一负载控制标签,第一负载控制标签指示对GPU执行第二渲染操作的过程中计算机硬件的运行参数进行调节。
在该实现方式中,当负载数据包括第一类负载数据,第一负载控制标签指示对计算机硬件的运行参数进行调节,从而可以通过调节计算机硬件的运行参数以达到降低负载的目的。
作为一种实现方式,第一负载控制标签指示对GPU执行第二渲染操作的过程中CPU、GPU或内部存储器的频点进行调节。
该实现方式提供了第一负载控制标签的一种具体内容,即指示对CPU、GPU或内部存储器的频点进行调节。
作为一种实现方式,负载数据包括第二类负载数据,第二类负载数据表示GPU执行第一渲染操作所渲染的网格Mesh模型的信息;基于负载数据确定负载控制标签包括:基于第一类负载数据指示GPU执行第一渲染操作所渲染的网格Mesh模型的信息满足第二条件,确定第二负载控制标签,第二负载控制标签指示对GPU执行第二渲染操作的过程中所渲染的Mesh模型进行简化。
在该实现方式中,当负载数据包括第二类负载数据,第二负载控制标签指示对所渲染的Mesh模型进行简化,从而可以通过调节计算机硬件的运行参数以达到降低负载的目的。
作为一种实现方式,第二负载控制标签指示GPU执行第二渲染操作的过程中待简化的Mesh模型的特征、待简化的Mesh模型适用的简化算法以及简化算法的参数。
该实现方式提供了第二负载控制标签的一种具体内容,即指示待简化的Mesh模型的特征、待简化的Mesh模型适用的简化算法以及简化算法的参数。
作为一种实现方式,第二类负载数据包括第一渲染操作所渲染的每帧图像中的顶点数量和Mesh模型的数量;第二条件包括第一渲染操作所渲染的每帧图像中的顶点数量大于第一阈值,或第一渲染操作所渲染的每帧图像中的Mesh模型的数量大于第二阈值。
在该实现方式中,从每帧图像中的顶点数量和Mesh模型的数量两个维度定义了第二条件。
作为一种实现方式,第二负载控制标签指示对第一渲染操作所渲染的Mesh模型中,顶点数量大于第三阈值的Mesh模型、重复数量大于第四阈值的Mesh模型或相对于屏幕的距离大于第五阈值的Mesh模型进行简化。
在该实现方式中,从顶点数量、重复数量以及相对于屏幕的距离定义了待简化的Mesh模型。
作为一种实现方式,负载数据包括第三类负载数据,第三类负载数据表示至少一个第一指令的信息;基于负载数据确定负载控制标签包括:基于第三类负载数据指示至少一个第一指令的指令信息满足第三条件,确定第三负载控制标签,第三负载控制标签指示对至少一个第二指令进行处理。
在该实现方式中,当负载数据包括第三类负载数据,第三负载控制标签指示对至少一个第二指令进行处理,从而可以通过对至少一个第二指令的处理达到降低负载的目的。
作为一种实现方式,第二指令的数量为多个;第三负载控制标签指示以下的至少一种内容:对多个第二指令构成的多个DC进行合并、对多个第二指令对应的多个渲染通道进行合并。
该实现方式提供了第三负载控制标签的一种具体内容,即指示对多个DC进行合并或对多个渲染通道进行合并。
本申请实施例第二方面提供了一种控制负载的装置,包括:
指令获取模块,用于获取至少一个第一指令,至少一个第一指令用于调用应用程序接口API,以使得图形处理器GPU执行第一渲染操作;
负载数据确定模块,用于基于至少一个第一指令确定GPU执行第一渲染操作的过程的负载数据;
目标方案确定模块,用于基于负载数据确定用于控制负载的目标方案;
指令获取模块,还用于获取至少一个第二指令,至少一个第二指令用于调用API,以使得GPU执行第二渲染操作;
控制模块,用于基于目标方案控制GPU执行第二渲染操作的过程中的负载。
作为一种实现方式,负载数据确定模块,用于基于至少一个第一指令和至少一个负载特征因子获取GPU执行第一渲染操作的过程的至少一种负载数据,每个负载特征因子对应一种负载数据。
作为一种实现方式,至少一个负载特征因子包括以下三类负载特征因子中的至少一类:第一类负载特征因子、第二类负载特征因子和第三类负载特征因子;第一类负载特征因子用于表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况;第二类负载特征因子用于表示GPU执行第一渲染操作的过程所渲染的网格Mesh模型的信息;第三类负载特征因子用于表示至少一个第一指令的信息。
作为一种实现方式,第一类负载特征因子包括以下的至少一种:GPU执行第一渲染操作的过程中的计算耗时、中央处理器CPU的运行参数、GPU的运行参数以及内部存储器的运行参数;第二类负载特征因子包括以下的至少一种:GPU执行第一渲染操作的过程所渲染的每个Mesh模型的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的Mesh模型的数量、GPU执行第一渲染操作的过程所渲染的每帧图像中Mesh模型的重复数量和GPU执行第一渲染操作的过程所渲染的每个Mesh模型相对于屏幕的距离;第三类负载特征因子包括以下的至少一种:至少一个第一指令构成的绘制命令DC的数量、至少一个第一指令对应的渲染通道Render Pass的数量、帧缓冲Frame Buffer尺寸、渲染通道与帧缓冲的引用关系、DC与帧缓冲的引用关系。
作为一种实现方式,至少一个负载特征因子包括第二类负载特征因子;负载数据确定模块,用于基于至少一个第一指令各自携带的参数确定GPU执行第一渲染操作所渲染的网格Mesh模型的数据;基于GPU执行第一渲染操作所渲染的网格Mesh模型的数据,获取GPU执行第一渲染操作的过程对应第二类负载特征因子的负载数据。
作为一种实现方式,目标方案确定模块,用于基于负载数据确定负载控制标签,负载控制标签指示负载控制的内容;基于负载控制标签确定用于控制负载的目标方案。
作为一种实现方式,负载数据包括第一类负载数据,第一类负载数据表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况;目标方案确定模块,用于基于第一类负载数据指示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况满足第一条件,确定第一负载控制标签,第一负载控制标签指示对GPU执行第二渲染操作的过程中计算机硬件的运行参数进行调节。
作为一种实现方式,第一负载控制标签指示对GPU执行第二渲染操作的过程中CPU、GPU或内部存储器的频点进行调节。
作为一种实现方式,负载数据包括第二类负载数据,第二类负载数据表示GPU执行第一渲染操作所渲染的网格Mesh模型的信息;目标方案确定模块,用于基于第一类负载数据指示GPU执行第一渲染操作所渲染的网格Mesh模型的信息满足第二条件,确定第二负载控制标签,第二负载控制标签指示对GPU执行第二渲染操作的过程中所渲染的Mesh模型进行简化。
作为一种实现方式,第二负载控制标签指示GPU执行第二渲染操作的过程中待简化的Mesh模型的特征、待简化的Mesh模型适用的简化算法以及简化算法的参数。
作为一种实现方式,第二类负载数据包括第一渲染操作所渲染的每帧图像中的顶点数量和Mesh模型的数量;第二条件包括第一渲染操作所渲染的每帧图像中的顶点数量大于第一阈值,或第一渲染操作所渲染的每帧图像中的Mesh模型的数量大于第二阈值。
作为一种实现方式,第二负载控制标签指示对第一渲染操作所渲染的Mesh模型中,顶点数量大于第三阈值的Mesh模型、重复数量大于第四阈值的Mesh模型或相对于屏幕的距离大于第五阈值的Mesh模型进行简化。
作为一种实现方式,负载数据包括第三类负载数据,第三类负载数据表示至少一个第一指令的信息;目标方案确定模块,用于基于第三类负载数据指示至少一个第一指令的指令信息满足第三条件,确定第三负载控制标签,第三负载控制标签指示对至少一个第二指令进行处理。
作为一种实现方式,第二指令的数量为多个;第三负载控制标签指示以下的至少一种内容:对多个第二指令构成的多个DC进行合并、对多个第二指令对应的多个RenderPass进行合并。
其中,以上各单元的具体实现、相关说明以及技术效果请参考本申请实施例第一方面的描述。
本申请实施例第三方面提供了一种终端设备,包括:一个或多个处理器和存储器;其中,所述存储器中存储有计算机可读指令;所述一个或多个处理器读取所述计算机可读指令,以使所述计算机设备实现如第一方面任一实现方式所述的方法。
本申请实施例第四方面提供了一种计算机可读存储介质,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如第一方面任一实现方式所述的方法。
本申请实施例第五方面提供了一种芯片,包括一个或多个处理器。所述处理器中的部分或全部用于读取并执行存储器中存储的计算机程序,以执行上述第一方面任意可能的实现方式中的方法。
可选地,该芯片该包括存储器,该存储器与该处理器通过电路或电线与存储器连接。进一步可选地,该芯片还包括通信接口,处理器与该通信接口连接。通信接口用于接收需要处理的数据和/或信息,处理器从该通信接口获取该数据和/或信息,并对该数据和/或信息进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。
在一些实现方式中,所述一个或多个处理器中还可以有部分处理器是通过专用硬件的方式来实现以上方法中的部分步骤,例如涉及神经网络模型的处理可以由专用神经网络处理器或图形处理器来实现。
本申请实施例提供的方法可以由一个芯片实现,也可以由多个芯片协同实现。
本申请实施例第六方面提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现上述第一方面中任意一种实现方式所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
获取至少一个第一指令,然后基于第一指令确定GPU执行第一渲染操作的过程的负载数据,再根据负载数据确定目标方案,当获取到至少一个第二指令后,便可以根据目标方案对GPU执行第二渲染操作的过程中的负载进行控制,从而实现了图像渲染过程中负载的在线动态控制;由于负载数据是基于图像渲染过程中实际获取的第一指令确定的,所以本申请实施例提供的方法可以应用于任意游戏应用程序,不局限于某一款或某几款游戏应用程序,对于升级后的游戏应用程序以及新增加的游戏应用程序也同样适用,所以适用性强,应用范围广。
附图说明
图1为本申请实施例中的系统架构示意图;
图2为本申请实施例中控制负载的方法实施例示意图;
图3为本申请实施中控制负载的一个实施例的流程示意图;
图4为本申请实施例中第一负载控制标签的一个实施例示意图;
图5为本申请实施例中待简化的Mesh模型的特征示意图;
图6为本申请实施例中伞状体的结构示意图;
图7为本申请实施例中闭包体的结构示意图;
图8为本申请实施例中延展体的结构示意图;
图9为本申请实施例中步骤103的过程示意图;
图10为本申请实施例中确定第三负载控制标签的过程示意图;
图11为本申请实施例中第三负载控制标签的一个实施例示意图;
图12为本申请实施中控制负载的另一个实施例的流程示意图;
图13为本申请实施例中控制负载的装置示意图;
图14为本申请实施例中终端设备的结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间或逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
本申请实施例可以应用于如图1所示的系统架构中。该系统架构包括应用程序层、图形应用程序接口(Application Program Interface,API)层、内核层和硬件层。
需要说明的是,该系统框架可以应用于任意需要降低图像渲染时的负载的终端设备中,特别是图像渲染性能有限的一些终端设备。例如,该系统框架可以应用于手机、平板电脑、笔记本电脑等图像渲染性能有限的移动终端中,该系统框架还可以应用于车载电脑等特殊场景导致图像渲染性能有限的终端设备中。
如图1所示,应用程序层包括三个游戏应用程序。需要说明的是,在该实施例中,应用程序层中的应用程序主要是指游戏应用程序,即本申请实施例主要应用于游戏渲染的场景中。但在本申请其它实施例中,应用程序层中的应用程序也可以是其他适用的应用程序,本申请对此不做具体限定;另外,游戏应用程序的数量也不限于三个,更少或更多都可以。
图形API层包括但不限于开放图形库(Open Graphics Library,OpenGL)、OpenGLES(OpenGL for Embedded Systems)和Vulkan这三种图形API。其中,图形API层可以用于将2D或3D场景渲染至终端设备的屏幕上;例如,OpenGL用于渲染2D场景,OpenGL ES和Vulkan用于渲染3D场景。
内核层包括系统内核以及驱动等。
硬件层包括但不限于中央处理器CPU、图形处理器GPU和内部存储器等,其中,内部存储器可以是双倍速率SDRAM(Double Data Rate Synchronous Dynamic Random-accessMemory,DDR SDRAM),也可以是其他类型的内部存储器。
基于图1所示的系统框架,当游戏应用程序运行时,渲染流程Pipe Line包括:
第一步,游戏应用程序中的游戏引擎对游戏场景进行遍历,裁剪剔除不可见物体。
第二步,对应每个可见物体,游戏引擎准备数据资源,并发送调用图形API的指令,该调用图形API的指令会到达内核层。
第三步,内核层的驱动在接收到调用图形API的指令后,会将数据资源传递到GPU的内部存储器中,并向GPU发送渲染指令,以指示GPU进行渲染。
第四步,GPU在接收到渲染指令后,会从内部存储器中读取数据资源,并执行顶点着色器Vertex shader、像素着色器Fragment shader或者Compute shader等操作。
顶点着色器是指在GPU上处理顶点变换的程序片段。对应网格Mesh模型的每个顶点,均会执行一次顶点着色器。因此,待渲染的场景中的顶点越多,顶点着色器的计算负载越重。
像素着色器是指在GPU上处理像素着色的程序片段。模型经过顶点变换后,对屏幕上每个被Mesh模型覆盖的像素点执行一次像素着色器。因此,屏幕分辨率越高,像素着色器的计算负载越重。
Compute shader是指在GPU上执行的程序片段,可用于图形渲染之外的计算。具体地,可通过OpenGL ES或者Vulkan API将Compute shader传输至GPU,以被GPU执行。
基于高画质和高帧率的游戏应用程序为图像渲染带来了较高的负载,所以为了降低图像渲染时的负载,如图1所示,本申请实施例增加了负载控制层,该负载控制层能从图形API层截获到调用图形API的指令,然后从截获到的调用图形API的指令获取所需的信息,或对调用图形API的指令进行处理。最终将调用图形API的指令返回至图形API层,以使得调用图形API的指令继续向内核层传递。
具体地,该负载控制层在获取到调用图形API的指令后,会基于获取到的调用图形API的指令对图像渲染过程中的负载进行动态分析,然后基于分析结果选择相应的用于降低负载的方案。最终,利用用于降低负载的方案降低后续图像渲染过程中的负载。下文将结合图2本申请实施例提供的控制负载的方法进行具体介绍。如图2所示,本申请实施例提供了一种控制负载的方法的一个实施例,该实施例可以应用于CPU,包括:
步骤101,获取至少一个第一指令,至少一个第一指令用于调用应用程序接口API,以使得图形处理器GPU执行第一渲染操作。
本该实施例对第一指令的数量不做具体限定。例如,第一指令的数量可以为一个,也可以为多个。当第一指令的数量为多个时,多个第一指令可以构成一条或多条指令流,每条指令流用于调用API以使得GPU渲染一帧图像。
相应地,第一渲染操作可以用于对一帧图像中的一个或多个物体(人物、背景等)进行渲染,也可以用于对多帧图像中的物体进行渲染。在本申请实施例中,API是指图形API;对应地,在图1所示的系统架构,第一指令则是由游戏应用程序发出的调用图形API的指令。
需要说明的是,获取至少一个第一指令可以理解为感知并记录至少一个第一指令,并不会阻止该第一指令的向下传递。
基于图1所示的系统框架的相关说明可知,用于调用API的第一指令传递到驱动后,驱动会向GPU发送渲染指令,使得GPU执行第一渲染操作。
其中,图形处理过程主要包括建模、物理模拟、渲染render、后处理等多个环节,本申请实施例中的第一渲染操作主要是指上述过程中的渲染render环节。
步骤102,基于至少一个第一指令确定GPU执行第一渲染操作的过程的负载数据。
在本申请实施例中,负载数据的确定是基于获取的该至少一个第一指令的确定GPU,并不依赖于GPU执行第一渲染操作的实际过程,也可以理解为确定负载数据的过程与GPU执行第一渲染操作的实际过程可以是并行的。
需要说明的是,确定负载数据的方法有多种,本实施例对此不做具体限定。例如,可以根据至少一个第一指令的数量、具体类别、作用等方面确定负载数据;也可以在获取到至少一个第一指令后,获取GPU执行第一渲染操作的过程中可能要使用的计算机硬件资源的一些信息,从而确定负载数据;还可以根据至少一个第一指令确定第一渲染操作的对象,然后根据第一渲染操作的对象的信息确定负载数据。
基于上述说明可知,负载数据可以有多种。为此,在本实施例中,预先定义负载特征因子,负载特征因子可以理解为负载数据的特征参数,每个负载特征因子指示一种负载,每个负载特征因子的取值则可以作为一种具体的负载数据。这样,便可以根据负载特征因子确定负载数据。
示例性地,负载特征因子可以指示计算机硬件资源的一种信息,该负载特征因子的取值则可以作为一种负载数据;例如,特征因子指示CPU的频点,对应地,该CPU的实际频点则可以作为一种负载数据。
示例性地,特征因子还可以指示第一指令的数量,对应地,第一指令的具体数量则可以作为一种负载数据。
示例性地,基于至少一个第一指令确定GPU执行第一渲染操作的过程的负载数据包括:
基于至少一个第一指令和至少一个负载特征因子获取GPU执行第一渲染操作的过程的至少一种负载数据,每个负载特征因子对应一种负载数据。
在本申请实施例中,对应每个负载特征因子,可以获取一种负载数据。
需要说明的是,负载特征因子可以根据实际需要进行定义,定义负载特征因子的维度可以有很多。下文将从多个维度对负载特征因子进行介绍。
在本申请实施例中,由于可以根据需要预先设定至少一个负载特征因子,对应每个负载特征因子可以得到一种负载数据,所以可以保证负载数据比较全面且具有代表性。
步骤103,基于负载数据确定用于控制负载的目标方案。
在获取负载数据后,可以对负载数据进行分析,然后确定用于控制负载的目标方案。可以理解的是,该目标方案通常用于降低图像渲染时的负载。
需要说明的是,基于负载数据确定目标方案的方法有多种,本申请实施例对此不做具体限定。例如,可以预先建立负载控制方案库,该负载控制方案库中包含多种用于负载控制方案,可以根据负载数据的分析结果从多种负载控制方案选择一个负载控制方案作为目标方案,用于控制负载。
下面介绍基于负载数据确定目标方案的一种方法。示例性地,基于负载数据确定用于控制负载的目标方案包括:
首先,基于负载数据确定负载控制标签,负载控制标签指示负载控制的内容;然后,基于负载控制标签从至少一种负载控制方案中选择一种负载控制方案,作为用于控制负载的目标方案。
可以理解的是,负载控制标签指示负载控制的内容,用于关联具体的负载控制方案。其中,对于同一负载数据,可以确定一个或多个负载控制标签。
本申请实施例对负载控制标签的形式和内容均不做具体限定;对于不同的负载数据,得到的负载控制标签的形式可以不同,内容也可以不同。下文将结合图4、图11以及表1至表3对控制标签可能的形式和内容进行具体介绍。
其中,至少一种负载控制方案是预设的。
在本申请实施例中,负载控制标签的设定,使得开发者可以灵活扩展负载控制方案,即预先设定与负载控制标签关联的更多的负载控制方案以供选择。
步骤104,获取至少一个第二指令,至少一个第二指令用于调用API,以使得GPU执行第二渲染操作。
需要说明的是,第二指令与第一指令本质上相同,都属于调用API的指令;在步骤104中,对于至少一个第二指令中的任意一个第二指令来说,可以是在第一指令后发出的调用API的指令,也可以是第一指令,或者当第二指令和第一指令分别包含多个指令时,二者存在相同的指令。
因此,具体可参照步骤101的相关说明,对步骤104进行理解。
步骤105,基于目标方案控制GPU执行第二渲染操作的过程中的负载。
其中,与第一渲染操作类似,本申请实施例中的第二渲染操作主要是指上述过程中的渲染render环节。
需要说明的是,基于目标方案控制负载的过程与目标方案的具体内容相关,本申请实施例对此不做具体限定。
例如,若目标方案指示对第二指令进行处理,则在步骤104后,先根据目标方案对步骤104中获取到的至少一个第二指令进行处理,然后将处理后的至少一个第二指令向图形API传递。
若目标方案不指示对第二指令处理,则在步骤104后,即可将至少一个第二指令向图形API传递,并根据目标方案的具体内容在传递第二指令之前、传递第二指令的过程中或传递第二指令之后,对负载进行控制。
基于步骤101至步骤105,本申请实施例提供的控制负载的方法可以概括成图3所示的方案。如图3所示,第一指令由应用程序发出,并经过图形API向驱动程序开发工具包(Driver Development Kit,DDK)传递,再向驱动传递的过程中被指令获取模块获取到,然后基于获取到的第一指令采集与第一指令相关的数据。此后,基于特征库中的负载特征因子识别出负载数据,并根据负载数据进行方案匹配,即从负载控制方案库中的所有负载控制方案中确定出目标方案。最终目标方案生效,便可以利用目标方案对GPU执行第二渲染操作的过程中负载进行控制。
在本申请实施例中,基于第一指令确定GPU执行第一渲染操作的过程的负载数据,然后根据负载数据确定目标方案,最终根据目标方案对GPU执行第二渲染操作的过程中的负载进行控制,从而实现了图像渲染过程中负载的在线分析与控制;由于负载数据是基于图像渲染过程中实际获取的第一指令确定的,所以本申请实施例提供的方法可以应用于任意游戏应用程序,不局限于某一款或某几款游戏应用程序,对于升级后的游戏应用程序以及新增加的游戏应用程序也同样适用,所以适用性强,应用范围广;并且,本申请实施例提供的方法也不需要离线执行,可以实现对负载的动态控制。
基于前述说明可知,负载特征因子可以从多个维度进行定义。下面分别从三个维度对负载特征因子进行介绍,每个维度对应一类负载特征因子。
示例性地,负载特征因子包括以下三类负载特征因子中的至少一类:第一类负载特征因子、第二类负载特征因子和第三类负载特征因子。
具体地,第一类负载特征因子用于表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况,其中,该硬件资源可以是CPU、GPU以及内部存储器等,内部存储器可以为DDR SDRAM。
需要说明的是,第一类负载特征因子的具体种类可以有多种,本申请实施例对此不做具体限定。
示例性地,第一类负载特征因子包括以下的至少一种:GPU执行第一渲染操作的过程中的计算耗时、中央处理器CPU的运行参数、GPU的运行参数以及内部存储器的运行参数。
其中,计算耗时可以具体包括逻辑运算耗时和GPU调用耗时;CPU的运行参数可以具体包括CPU频点和CPU使用率;GPU的运行参数可以具体包括GPU频点和GPU使用率。
第二类负载特征因子用于表示GPU执行第一渲染操作的过程所渲染的网格Mesh模型的信息。
在渲染场景中,3D模型一般用三角形网格表示,所以3D模型又可以称为Mesh模型。其中,每个三角形由三个顶点构成,顶点数据包括位置、法线、UV坐标等;一个顶点可被多个相邻三角形共享。Mesh模型的几何结构越复杂,三角形顶点数量越大。
因此,可以使用Mesh模型的信息作为第二类负载特征因子,以指示负载的多少。
在本申请实施例中,网格Mesh模型的信息可以包括网格Mesh模型的顶点数量以及网格Mesh模型的数量等多种信息。
需要说明的是,第二类负载特征因子的具体种类可以有多种,本申请实施例对此不做具体限定。
示例性地,第二类负载特征因子包括以下的至少一种:GPU执行第一渲染操作的过程所渲染的每个Mesh模型的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的Mesh模型的数量、GPU执行第一渲染操作的过程所渲染的每帧图像中Mesh模型的重复数量和GPU执行第一渲染操作的过程所渲染的每个Mesh模型相对于屏幕的距离。
其中,Mesh模型的顶点数量表示该Mesh模型的几何结构的复杂程度,Mesh模型的顶点数量越大,则表示Mesh模型的几何结构越复杂,相应地,渲染该Mesh模型带来的负载就越大。因此可以使用Mesh模型的顶点数量作为第二类特征因子。
每帧图像中的顶点数量为渲染每帧图像的过程中需要遍历的顶点总量,需要遍历的顶点总量越大,则表示渲染该帧图像的负载就越大。因此,可以使用每帧图像中的顶点数量作为第二类特征因子。
每帧图像中的Mesh模型的数量即表示渲染每帧图像的过程中需要渲染的Mesh模型的多少。在渲染一帧图像的过程中,需要渲染的Mesh模型越多,则表示负载越大。因此,可以使用每帧图像中的Mesh模型的数量作为第二类特征因子。
在一帧图像中,当一个Mesh模型的重复数量较大时,则意味着该Mesh模型的顶点总量较大,因此可以将每帧图像中Mesh模型的重复数量作为第二类特征因子。例如,一帧图像中的树木Mesh模型所包含的顶点数量较少,但该帧图像中的树木Mesh模型的重复数量较大,则意味着渲染该帧图像中的树木Mesh模型所带来的负载较大。每帧图像中Mesh模型的重复数量也可以称为该Mesh模型的实例数。
当一个Mesh模型相对于屏幕的较近时,理论上需要将该Mesh模型渲染地较清楚,以保证画面的质量;当一个Mesh模型相对于屏幕的较远时,则可以降低对Mesh模型的渲染要求。即Mesh模型相对于屏幕的距离不同,可以表示不同负载。因此,可以使用每个Mesh模型相对于屏幕的距离作为第二类特征因子。
第三类负载特征因子用于表示至少一个第一指令的信息,其中,第一指令的信息可以包括第一指令的数量和指令间的关系等多种信息。
需要说明的是,第三类负载特征因子的具体种类可以有多种,本申请实施例对此不做具体限定。
示例性地,第三类负载特征因子包括以下的至少一种:至少一个第一指令构成的绘制命令(Draw Call,DC)的数量、至少一个第一指令对应的渲染通道Render Pass的数量、帧缓冲Frame Buffer尺寸、渲染通道与帧缓冲的引用关系、DC与帧缓冲的引用关系。
为了便于理解,下面对第一指令、DC、渲染通道、渲染通道与帧缓冲的引用关系、DC与帧缓冲的引用关系进行说明。
以渲染一帧图像为例,具体可以包含多个渲染通道,每个渲染通道可以对应多个DC,每个DC可以包括多个调用API的指令。因此,可以将至少一个第一指令构成的绘制命令DC的数量、至少一个第一指令对应的渲染通道Render Pass的数量作为第三类特征因子。
在图像渲染的过程中,每个渲染通道的渲染结果会输出到一个对应的帧缓冲中,所以渲染通道与帧缓冲的对应关系又可以称为渲染通道与帧缓冲的引用关系。
同样地,每个DC对应的渲染结果会输出到一个对应的帧缓冲中,所以DC与帧缓冲的对应关系又可以称为DC与帧缓冲的引用关系。
需要说明的是,由于第一类负载特征因子用于表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况,因此,当负载特征因子包含第一类负载特征因子时,可以根据计算机硬件的运行参数获取GPU执行第一渲染操作的过程对应第一类负载特征因子的负载数据。而第三类负载特征因子用于表示至少一个第一指令的信息,因此,当负载特征因子包含第三类负载特征因子时,可以根据至少一个第一指令获取GPU执行第一渲染操作的过程对应第三类负载特征因子的负载数据。
而第二类负载特征因子用于表示GPU执行第一渲染操作的过程所渲染的网格Mesh模型的信息,所以当负载特征因子包含第二类负载特征因子时,需要先确定GPU执行第一渲染操作的过程所渲染的网格Mesh模型的信息,才能确定负载数据。
具体地,作为一种实现方式,至少一个负载特征因子包括第二类负载特征因子。
基于至少一个第一指令和至少一个负载特征因子获取GPU执行第一渲染操作的过程的至少一种负载数据包括:
基于至少一个第一指令各自携带的参数确定GPU执行第一渲染操作所渲染的网格Mesh模型的数据;
基于GPU执行第一渲染操作所渲染的网格Mesh模型的数据,获取GPU执行第一渲染操作的过程对应第二类负载特征因子的负载数据。
可以理解的是,第一指令中携带相应的参数,通过第一指令中携带的参数可以确定GPU执行第一渲染操作所渲染的网格Mesh模型,进而可以获取到GPU执行第一渲染操作所渲染的网格Mesh模型的数据。
对应上述三类负载特征因子,可以得到三类负载数据。因此,获取到的负载数据也可以包括第一类负载数据、第二类负载数据和第三类负载数据中的至少一种。
其中,第一类负载数据表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况;第二类负载数据表示GPU执行第一渲染操作所渲染的网格Mesh模型的信息;第三类负载数据表示至少一个第一指令的信息。
具体地,第一类负载数据可以包括以下的至少一种:计算耗时、中央处理器CPU的负载数据、GPU的负载数据以及DDR内存的负载数据。
第二类负载数据可以包括以下的至少一种:GPU执行第一渲染操作的过程所渲染的每个Mesh模型的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的Mesh模型的数量、GPU执行第一渲染操作的过程所渲染的每帧图像中Mesh模型的重复数量和GPU执行第一渲染操作的过程所渲染的每个Mesh模型相对于屏幕的距离。
第三类负载数据可以包括以下的至少一种:至少一个第一指令构成的绘制命令(Draw Call,DC)的数量、至少一个第一指令对应的渲染通道Render Pass的数量、帧缓冲Frame Buffer尺寸、渲染通道与帧缓冲的引用关系、DC与帧缓冲的引用关系。
基于前述说明可知,基于不同的负载控制标签,确定负载控制标签的过程不同。下面以上述三种负载数据为例,对确定负载控制标签的过程进行分别说明。
作为一种实现方式,负载数据包括第一类负载数据,第一类负载数据表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况。
相应地,步骤103可以包括:
基于第一类负载数据指示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况满足第一条件,确定第一负载数据对应的第一负载控制标签,第一负载控制标签指示对GPU执行第二渲染操作的过程中计算机硬件的运行参数进行调节。
其中,确定第一负载数据对应的第一负载控制标签的过程,可以是从已知的一个或多个负载控制标签中选择一个负载控制标签作为第一负载控制标签。
相应地,目标方案则用于对计算机硬件的运行参数进行调节。本申请实施例对目标方案的内容不做具体限定。
可以理解的是,对于不同的第一类负载数据,第一条件以及第一负载控制标签可以不同。
例如,若第一负载数据包含CPU频点,则第一条件可以CPU频点大于预设频点;相应地,若CPU频点大于预设频点,则生成第一负载控制标签。第一负载控制标签可以包含“CPUBound”,其中,“CPU Bound”表示当前运行的游戏应用程序属于计算密集型;第一负载控制标签还可以包含“Bound烈度”,“Bound烈度”表示计算密集程度。
示例性地,如图4所示,第一负载控制标签指示对GPU执行第二渲染操作的过程中CPU、GPU或内部存储器的频点进行调节。
相应地,第一负载控制标签的形式可以如下表1所示,具体包含调频对象和频点两个字段,即指示对调频对象的频点进行调节;其中,调频对象可以为CPU、GPU或内部存储器。
表1
需要说明的是,本申请实施例是以频点为例对确定第一负载控制标签的过程进行的说明,其他第一类负载数据看参阅上述说明进行具体理解。
作为一种实现方式,负载数据包括第二类负载数据,第二类负载数据表示GPU执行第一渲染操作所渲染的网格Mesh模型的信息。
相应地,步骤103可以包括:
基于第一类负载数据指示GPU执行第一渲染操作所渲染的网格Mesh模型的信息满足第二条件,确定第二负载数据对应的第二负载控制标签,第二负载控制标签指示对GPU执行第二渲染操作的过程中所渲染的Mesh模型进行简化。
其中,确定第二负载数据对应的第二负载控制标签的过程,可以是从已知的一个或多个负载控制标签中选择一个负载控制标签作为第二负载控制标签。
可以理解的是,若GPU执行第一渲染操作所渲染的网格Mesh模型的信息满足第二条件,则认为有必要进行模型简化。其中,模型简化可以理解为降低Mesh模型的细节精度;具体地,基于前述说明可知,Mesh模型由三角形网格构成,因此可以采用较少的三角形网格来表示Mesh模型,以达到简化Mesh模型和降低负载的目的。
相应地,目标方案则用于对GPU执行第二渲染操作的过程中所渲染的Mesh模型进行简化。本申请实施例对目标方案的内容不做具体限定。
可以理解的是,对于不同的第二类负载数据,第二条件以及第二负载控制标签可以不同。
示例性地,第二类负载数据包括第一渲染操作所渲染的每帧图像中的顶点数量和Mesh模型的数量,相应地,第二条件包括第一渲染操作所渲染的每帧图像中的顶点数量大于第一阈值,或第一渲染操作所渲染的每帧图像中的Mesh模型的数量大于第二阈值。
以每帧图像中的顶点数量为例,可以先定义每帧图像中的顶点数量的多个等级。例如,每帧图像中的顶点数量小于或等于500K为第一级,每帧图像中的顶点数量大于500K且小于2000K为第二级,每帧图像中的顶点数量大于或等于2000K为第三级。第一阈值可以设置为500K,也可以设置为2000K。其中,K表示千个。
示例性地,第二负载控制标签的形式可以如表2所示,即指示GPU执行第二渲染操作的过程中待简化的Mesh模型的特征、待简化的Mesh模型适用的简化算法以及简化算法的参数。
表2
可以理解的是,GPU执行第一渲染操作所渲染的网格Mesh模型的信息满足第二条件,只能确定有必要进行模型简化,但并不是所有的Mesh模型均能够被简化,因此需要确定可以简化的Mesh模型。因此,本申请实施例中的第二负载控制标签指示待简化的Mesh模型的特征。
待简化的Mesh模型的特征可以包括多种特征,本申请实施例对此不做具体限定。示例性地,如图5所示,待简化的Mesh模型的特征可以包括形状特征、顶点数量规模、渲染频度、相对于屏幕的距离。
其中,形状特征可以包括伞状体、闭包体和延展体;伞状体的结构如图6所示,在游戏场景中,树木的Mesh模型的形状特征通常为伞状体;闭包体的结构如图7所示,在游戏场景中,汽车、人物等Mesh模型的形状特征通常为闭包体;延展体结构如图8所示,在游戏场景中,山、河等Mesh模型的形状特征通常为延展体。
顶点数量的规模可以包括大规模、中等规模和小规模;例如,顶点数量大于或等于50K的Mesh模型可以称为大规模,顶点数量大于5K且小于50K的Mesh模型可以称为中等规模,顶点数量小于5K的Mesh模型可以称为小规模。需要说明的是,顶点数量的规模的表示方式不限于上述方式。
渲染频度可以包括低频、中频和高频。例如,可以根据同一Mesh模型在1000帧图像中被渲染的次数的多少,将该Mesh模型的渲染频度进行分类。需要说明的是,渲染频度的表示方式也不限于上述方式。
相对于屏幕的距离可以包括近距离和远距离;具体地,可以根据Mesh模型相对于屏幕的距离进行具体确定,本申请实施例在此不做赘述。
基于前述说明可知,第二负载标签指示具体需要简化的Mesh模型。示例性地,第二负载控制标签指示对第一渲染操作所渲染的Mesh模型中,顶点数量大于第三阈值的Mesh模型、重复数量大于第四阈值的Mesh模型或相对于屏幕的距离大于第五阈值的Mesh模型进行简化。
可以理解的是,当顶点数量大于第三阈值时,则表示Mesh模型的几何较复杂,即渲染该Mesh模型会带来较大的负载。因此有必要对该Mesh模型进行简化,即第二负载标签可以指示顶点数量大于第三阈值的Mesh模型。
当重复数量大于第四阈值时,则表示Mesh模型的重复数量过多;即使该Mesh模型包含的顶点数量不多,所有的该Mesh模型的顶点总量也较大。因此有必要对该Mesh模型进行简化,即第二负载标签可以指示对重复数量大于第四阈值的Mesh模型进行简化。
在图像渲染过程中,对于相对于屏幕距离不同的Mesh模型,通常会选择同一细节层次(Levels of Detail,LOD)进行渲染;而对于相对于屏幕较远的Mesh模型来说,在图像中通常不重要,因此选择较高的LOD进行渲染存在浪费,即可以对相对于屏幕较远的Mesh模型进行简化。因此,第二负载标签可以指示相对于屏幕的距离大于第五阈值的Mesh模型进行简化。
在上述示例中,步骤103的具体过程可以如图9所示。具体地,通过第一渲染操作所渲染的每帧图像中的顶点数量和Mesh模型的数量确定简化Mesh模型的必要性(即满足第二条件),通过GPU执行第一渲染操作的过程所渲染的每个Mesh模型的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中Mesh模型的重复数量和GPU执行第一渲染操作的过程所渲染的每个Mesh模型相对于屏幕的距离确定待简化的Mesh模型清单,待简化的Mesh模型清单可以理解为第二负载控制标签,具体指示待简化的Mesh模型的特征、待简化的Mesh模型适用的简化算法以及简化算法的参数。
作为一种实现方式,负载数据包括第三类负载数据,第三类负载数据表示至少一个第一指令的信息。
相应地,步骤103包括:
基于第三类负载数据指示至少一个第一指令的指令信息满足第三条件,确定第三负载数据对应的第三负载控制标签,第三负载控制标签指示对至少一个第二指令进行处理。
其中,确定第三负载数据对应的第三负载控制标签的过程,可以是从已知的一个或多个负载控制标签中选择一个负载控制标签作为第三负载控制标签。
相应地,目标方案则用于对至少一个第二指令进行处理。本申请实施例对目标方案的内容不做具体限定。
可以理解的是,对于不同的第三类负载数据,第三条件以及第三负载控制标签可以不同。
例如,当第三负载数据包括DC数量时,第三条件可以是DC数量为多个,且两个或两个以上的DC用于渲染同一物体。具体地,第三负载数据包括100个渲染同一人物的DC,由于第三负载数据中的DC满足第三条件,所以可以将渲染同一人物的这100个DC合并为一个DC。
再例如,当第三负载数据包括渲染通道的数量、帧缓冲的尺寸、以及渲染通道与帧缓冲的引用关系时,第三条件可以为渲染通道的数量为多个,两个或两个以上的渲染通道对与帧缓冲的引用关系临近,且两个或两个以上的渲染通道对应的帧缓冲的尺寸相同。
具体地,第三负载数据包括三个渲染通道、帧缓冲的尺寸、三个渲染通道与帧缓冲的引用关系。其中,第一渲染通道用于渲染山和树木等Mesh模型,第一渲染通道的渲染结果输出至第一帧缓冲;第二渲染通道用于在第一渲染通道的渲染结果的基础上,渲染房子等建筑物的Mesh模型,第二渲染通道的渲染结果输出至第二帧缓冲;第三渲染通道用于在第二渲染通道的渲染结果的基础上,渲染人物的Mesh模型,第二渲染通道的渲染结果输出至第三帧缓冲。由于第二渲染通道需要在第一渲染通道的渲染结果的基础上进行渲染,所以第二渲染通道与第二帧缓冲的引用关系,临近于第一渲染通道与第一帧缓冲的引用关系;同样地,第三渲染通道与第三帧缓冲的引用关系,临近于第二渲染通道与第二帧缓冲的引用关系。此外,第一帧缓冲、第二帧缓冲和第三帧缓冲的尺寸相同,则可以将第一渲染通道、第二渲染通道和第三渲染通道合并,合并后的渲染通道只需要一个帧缓冲。
同样地,当第三负载数据包括DC数量、帧缓冲的尺寸、DC与帧缓冲的引用关系时,第三条件可以参照前述示例中的第三条件进行理解。
在上述示例中,确定第三负载控制标签的过程如图10所示,即根据API负载(包括DC数量、帧缓冲的尺寸、渲染通道的数量)和关系(包括DC与帧缓冲的引用关系、渲染通道与帧缓冲的引用关系)确定第三负载控制标签。
此外,还可以对API和相邻帧图像中场景变化进行分析,以得到指示隔帧渲染图像的第三负载控制标签。例如,在相邻帧图像中,场景变得越来越复杂,图像中Mesh模型的数量越来越多,则可以认为负载越来越大;基于此,可以确定相应的负载控制标签,进而确定相应的目标方案以降低负载。
基于前述说明可知,若第三负载控制标签指示对多个第二指令进行处理,则在步骤104后,先根据目标方案对步骤104中获取到的至少一个第二指令进行处理,然后将处理后的至少一个第二指令向图形API传递。
具体地,在步骤104中,获取到8个第二指令,这8个第二指令构成2个DC,则会将这8个第二指令构成的2个DC合并后,将合并后的DC向下传递。
基于上述说明,示例性地,第二指令的数量为多个;如图11所示,第三负载控制标签指示以下的至少一种内容:对多个第二指令构成的多个DC进行合并、对多个第二指令对应的多个渲染通道进行合并。
示例性地,第三负载控制标签还可以指示对多个实例Instance进行合并;例如,多个第二指令用于渲染50棵树,每5棵树为一组(即一个实例Instance)进行渲染,则可以将渲染50棵树的多个第二指令合并。
示例性地,第三负载控制标签还可以指示隔振渲染图像。
在本申请实施例中,第三负载控制标签的形式可以如下表3所示,第三负载标签指示待处理的第二指令的名称、第二指令的特征、处理第二指令的方案编码和处理第二指令的方案参数。
表3
经过上述对本申请实施例提供的控制负载的方法进行介绍,图3所示的控制负载的流程可以如图12所示。具体地,获取的与第一指令相关的数据包括至少一个第一指令、耗时打点、运行数据和资源数据。
其中,耗时打点用于确定第一类负载数据中的计算耗时,运行数据用于确定第一类负载数据中CPU的运行参数(例如频点)、GPU的运行参数(例如频点)以及内部存储器的运行参数(例如频点)。
根据特征库确定的负载数据则包含第一类负载数据、第二类负载数据和第三类负载数据。
根据上述三类负载数据可以确定负载控制标签,根据负载控制标签则可以从负载控制方案库中匹配到目标方案,该目标方案可以用于调节运行参数、简化Mesh模型以及处理至少一个第二指令。
请参阅图13,本申请实施例还提供了一种控制负载的装置的一个实施例,该实施例可以应用于CPU,包括:
指令获取模块201,用于获取至少一个第一指令,至少一个第一指令用于调用应用程序接口API,以使得图形处理器GPU执行第一渲染操作;
负载数据确定模块202,用于基于至少一个第一指令确定GPU执行第一渲染操作的过程的负载数据;
目标方案确定模块203,用于基于负载数据确定用于控制负载的目标方案;
指令获取模块201,还用于获取至少一个第二指令,至少一个第二指令用于调用API,以使得GPU执行第二渲染操作;
控制模块204,用于基于目标方案控制GPU执行第二渲染操作的过程中的负载。
作为一种实现方式,负载数据确定模块202,用于基于至少一个第一指令和至少一个负载特征因子获取GPU执行第一渲染操作的过程的至少一种负载数据,每个负载特征因子对应一种负载数据。
作为一种实现方式,至少一个负载特征因子包括以下三类负载特征因子中的至少一类:第一类负载特征因子、第二类负载特征因子和第三类负载特征因子;第一类负载特征因子用于表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况;第二类负载特征因子用于表示GPU执行第一渲染操作的过程所渲染的网格Mesh模型的信息;第三类负载特征因子用于表示至少一个第一指令的信息。
作为一种实现方式,第一类负载特征因子包括以下的至少一种:GPU执行第一渲染操作的过程中的计算耗时、中央处理器CPU的运行参数、GPU的运行参数以及内部存储器的运行参数;第二类负载特征因子包括以下的至少一种:GPU执行第一渲染操作的过程所渲染的每个Mesh模型的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的顶点数量、GPU执行第一渲染操作的过程所渲染的每帧图像中的Mesh模型的数量、GPU执行第一渲染操作的过程所渲染的每帧图像中Mesh模型的重复数量和GPU执行第一渲染操作的过程所渲染的每个Mesh模型相对于屏幕的距离;第三类负载特征因子包括以下的至少一种:至少一个第一指令构成的绘制命令DC的数量、至少一个第一指令对应的渲染通道Render Pass的数量、帧缓冲Frame Buffer尺寸、渲染通道与帧缓冲的引用关系、DC与帧缓冲的引用关系。
作为一种实现方式,至少一个负载特征因子包括第二类负载特征因子;负载数据确定模块202,用于基于至少一个第一指令各自携带的参数确定GPU执行第一渲染操作所渲染的网格Mesh模型的数据;基于GPU执行第一渲染操作所渲染的网格Mesh模型的数据,获取GPU执行第一渲染操作的过程对应第二类负载特征因子的负载数据。
作为一种实现方式,目标方案确定模块203,用于基于负载数据确定负载控制标签,负载控制标签指示负载控制的内容;基于负载控制标签确定用于控制负载的目标方案。
作为一种实现方式,负载数据包括第一类负载数据,第一类负载数据表示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况;目标方案确定模块203,用于基于第一类负载数据指示GPU执行第一渲染操作的过程对计算机硬件资源的消耗情况满足第一条件,确定第一负载控制标签,第一负载控制标签指示对GPU执行第二渲染操作的过程中计算机硬件的运行参数进行调节。
作为一种实现方式,第一负载控制标签指示对GPU执行第二渲染操作的过程中CPU、GPU或内部存储器的频点进行调节。
作为一种实现方式,负载数据包括第二类负载数据,第二类负载数据表示GPU执行第一渲染操作所渲染的网格Mesh模型的信息;目标方案确定模块203,用于基于第一类负载数据指示GPU执行第一渲染操作所渲染的网格Mesh模型的信息满足第二条件,确定第二负载控制标签,第二负载控制标签指示对GPU执行第二渲染操作的过程中所渲染的Mesh模型进行简化。
作为一种实现方式,第二负载控制标签指示GPU执行第二渲染操作的过程中待简化的Mesh模型的特征、待简化的Mesh模型适用的简化算法以及简化算法的参数。
作为一种实现方式,第二类负载数据包括第一渲染操作所渲染的每帧图像中的顶点数量和Mesh模型的数量;第二条件包括第一渲染操作所渲染的每帧图像中的顶点数量大于第一阈值,或第一渲染操作所渲染的每帧图像中的Mesh模型的数量大于第二阈值。
作为一种实现方式,第二负载控制标签指示对第一渲染操作所渲染的Mesh模型中,顶点数量大于第三阈值的Mesh模型、重复数量大于第四阈值的Mesh模型或相对于屏幕的距离大于第五阈值的Mesh模型进行简化。
作为一种实现方式,负载数据包括第三类负载数据,第三类负载数据表示至少一个第一指令的信息;目标方案确定模块203,用于基于第三类负载数据指示至少一个第一指令的指令信息满足第三条件,确定第三负载控制标签,第三负载控制标签指示对至少一个第二指令进行处理。
作为一种实现方式,第二指令的数量为多个;第三负载控制标签指示以下的至少一种内容:对多个第二指令构成的多个DC进行合并、对多个第二指令对应的多个RenderPass进行合并。
本申请实施例还提供了另一种终端设备,如图14所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文缩写:PDA)、销售终端(英文全称:Point of Sales,英文缩写:POS)、车载电脑等任意终端设备,以终端为手机为例:
图14示出的是与本申请实施例提供的终端相关的手机的部分结构的框图。参考图14,手机包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(英文全称:wirelessfidelity,英文缩写:WiFi)模块1070、中央处理器CPU1080、图形处理器GPU1090以及电源等部件。本领域技术人员可以理解,图14中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图14对手机的各个构成部件进行具体的介绍:
RF电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给CPU1080处理;另外,将设计上行的数据发送给基站。通常,RF电路1010包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:LowNoise Amplifier,英文缩写:LNA)、双工器等。此外,RF电路1010还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:Global System of Mobile communication,英文缩写:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,GPRS)、码分多址(英文全称:CodeDivision Multiple Access,英文缩写:CDMA)、宽带码分多址(英文全称:Wideband CodeDivision Multiple Access,英文缩写:WCDMA)、长期演进(英文全称:Long TermEvolution,英文缩写:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,SMS)等。
存储器1020可用于存储软件程序以及模块,CPU1080通过运行存储在存储器1020的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1030可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU1080,并能接收CPU1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用液晶显示器(英文全称:Liquid Crystal Display,英文缩写:LCD)、有机发光二极管(英文全称:Organic Light-Emitting Diode,英文缩写:OLED)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给CPU1080以确定触摸事件的类型,随后CPU1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图14中,触控面板1031与显示面板1041是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1050,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1060、扬声器1061,传声器1062可提供用户与手机之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出CPU1080处理后,经RF电路1010以发送给比如另一手机,或者将音频数据输出至存储器1020以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图14示出了WiFi模块1070,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
CPU1080是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,CPU1080可包括一个或多个处理单元;优选的,CPU1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到CPU1080中。
GPU1090主要用于将存储器1020中的数据渲染成图像,在显示单元1040中显示。
手机还包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理系统与CPU1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的CPU1080还具有以下功能:
获取至少一个第一指令,至少一个第一指令用于调用应用程序接口API,以使得图形处理器GPU执行第一渲染操作;
基于至少一个第一指令确定GPU执行第一渲染操作的过程的负载数据;
基于负载数据确定用于控制负载的目标方案;
获取至少一个第二指令,至少一个第二指令用于调用API,以使得GPU执行第二渲染操作;
基于目标方案控制GPU执行第二渲染操作的过程中的负载。
在本申请实施例中,该终端所包括的GPU1090还具有以下功能:
基于至少一个第一指令执行第一渲染操作,以及基于至少一个第二指令执行第二渲染操作。
本申请实施例还提供一种芯片,包括一个或多个处理器。所述处理器中的部分或全部用于读取并执行存储器中存储的计算机程序,以执行图2对应的各实施例的方法。
可选地,该芯片该包括存储器,该存储器与该处理器通过电路或电线与存储器连接。进一步可选地,该芯片还包括通信接口,处理器与该通信接口连接。通信接口用于接收需要处理的数据和/或信息,处理器从该通信接口获取该数据和/或信息,并对该数据和/或信息进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。
在一些实现方式中,所述一个或多个处理器中还可以有部分处理器是通过专用硬件的方式来实现以上方法中的部分步骤,例如涉及神经网络模型的处理可以由专用神经网络处理器或图形处理器来实现。
本申请实施例提供的方法可以由一个芯片实现,也可以由多个芯片协同实现。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质用于储存为上述计算机设备所用的计算机软件指令,其包括用于执行为计算机设备所设计的程序。
该计算机设备可以如前述图13所描述的运行应用程序的装置。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现前述图2所示的方法中的流程。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (18)
1.一种控制负载的方法,其特征在于,包括:
获取至少一个第一指令,所述至少一个第一指令用于调用应用程序接口API,以使得图形处理器GPU执行第一渲染操作;
基于所述至少一个第一指令确定所述GPU执行所述第一渲染操作的过程的负载数据;
基于所述负载数据确定用于控制负载的目标方案;
获取至少一个第二指令,所述至少一个第二指令用于调用所述API,以使得所述GPU执行第二渲染操作;
基于所述目标方案控制所述GPU执行所述第二渲染操作的过程中的负载。
2.根据权利要求1所述的方法,其特征在于,所述基于所述至少一个第一指令确定所述GPU执行所述第一渲染操作的过程的负载数据包括:
基于所述至少一个第一指令和至少一个负载特征因子获取所述GPU执行所述第一渲染操作的过程的至少一种负载数据,每个负载特征因子对应一种负载数据。
3.根据权利要求2所述的方法,其特征在于,所述至少一个负载特征因子包括以下三类负载特征因子中的至少一类:第一类负载特征因子、第二类负载特征因子和第三类负载特征因子;
所述第一类负载特征因子用于表示所述GPU执行所述第一渲染操作的过程对计算机硬件资源的消耗情况;
所述第二类负载特征因子用于表示所述GPU执行所述第一渲染操作的过程所渲染的网格Mesh模型的信息;
所述第三类负载特征因子用于表示所述至少一个第一指令的信息。
4.根据权利要求3所述的方法,其特征在于,所述第一类负载特征因子包括以下的至少一种:所述GPU执行所述第一渲染操作的过程中的计算耗时、中央处理器CPU的运行参数、GPU的运行参数以及内部存储器的运行参数;
所述第二类负载特征因子包括以下的至少一种:所述GPU执行所述第一渲染操作的过程所渲染的每个Mesh模型的顶点数量、所述GPU执行所述第一渲染操作的过程所渲染的每帧图像中的顶点数量、所述GPU执行所述第一渲染操作的过程所渲染的每帧图像中的Mesh模型的数量、所述GPU执行所述第一渲染操作的过程所渲染的每帧图像中Mesh模型的重复数量和所述GPU执行所述第一渲染操作的过程所渲染的每个Mesh模型相对于屏幕的距离;或者
所述第三类负载特征因子包括以下的至少一种:所述至少一个第一指令构成的绘制命令DC的数量、所述至少一个第一指令对应的渲染通道Render Pass的数量、帧缓冲FrameBuffer尺寸、所述渲染通道与所述帧缓冲的引用关系、所述DC与所述帧缓冲的引用关系。
5.根据权利要求3或4所述的方法,其特征在于,若所述至少一个负载特征因子包括所述第二类负载特征因子,则所述基于所述至少一个第一指令和至少一个负载特征因子获取所述GPU执行所述第一渲染操作的过程的至少一种负载数据包括:
基于所述至少一个第一指令各自携带的参数确定所述GPU执行所述第一渲染操作所渲染的网格Mesh模型的数据;
基于所述GPU执行所述第一渲染操作所渲染的网格Mesh模型的数据,获取所述GPU执行所述第一渲染操作的过程对应所述第二类负载特征因子的负载数据。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述基于所述负载数据确定用于控制负载的目标方案包括:
基于所述负载数据确定负载控制标签,所述负载控制标签指示负载控制的内容;
基于所述负载控制标签从至少一种负载控制方案中选择一种负载控制方案,作为用于控制负载的目标方案。
7.根据权利要求6所述的方法,其特征在于,所述负载数据包括第一类负载数据,所述第一类负载数据表示所述GPU执行所述第一渲染操作的过程对计算机硬件资源的消耗情况;
所述基于所述负载数据确定负载控制标签包括:
基于所述第一类负载数据指示所述GPU执行所述第一渲染操作的过程对计算机硬件资源的消耗情况满足第一条件,确定所述第一负载数据对应的第一负载控制标签,所述第一负载控制标签指示对所述GPU执行所述第二渲染操作的过程中计算机硬件的运行参数进行调节。
8.根据权利要求7所述的方法,其特征在于,所述第一负载控制标签指示对所述GPU执行所述第二渲染操作的过程中CPU、GPU或内部存储器的频点进行调节。
9.根据权利要求6至8中任意一项所述的方法,其特征在于,所述负载数据包括第二类负载数据,所述第二类负载数据表示所述GPU执行所述第一渲染操作所渲染的网格Mesh模型的信息;
所述基于所述负载数据确定负载控制标签包括:
基于所述第一类负载数据指示所述GPU执行所述第一渲染操作所渲染的网格Mesh模型的信息满足第二条件,确定所述第二负载数据对应的第二负载控制标签,所述第二负载控制标签指示对所述GPU执行所述第二渲染操作的过程中所渲染的Mesh模型进行简化。
10.根据权利要求9所述的方法,其特征在于,所述第二负载控制标签指示所述GPU执行所述第二渲染操作的过程中待简化的Mesh模型的特征、所述待简化的Mesh模型适用的简化算法以及所述简化算法的参数。
11.根据权利要求9或10所述的方法,其特征在于,所述第二类负载数据包括所述第一渲染操作所渲染的每帧图像中的顶点数量和Mesh模型的数量;
所述第二条件包括所述第一渲染操作所渲染的每帧图像中的顶点数量大于第一阈值,或所述第一渲染操作所渲染的每帧图像中的Mesh模型的数量大于第二阈值。
12.根据权利要求9至11中任意一项所述的方法,其特征在于,所述第二负载控制标签指示对所述第一渲染操作所渲染的Mesh模型中,顶点数量大于第三阈值的Mesh模型、重复数量大于第四阈值的Mesh模型或相对于屏幕的距离大于第五阈值的Mesh模型进行简化。
13.根据权利要求6至12中任意一项所述的方法,其特征在于,所述负载数据包括第三类负载数据,所述第三类负载数据表示所述至少一个第一指令的信息;
所述基于所述负载数据确定负载控制标签包括:
基于所述第三类负载数据指示所述至少一个第一指令的指令信息满足第三条件,确定所述第三负载数据对应的第三负载控制标签,所述第三负载控制标签指示对所述至少一个第二指令进行处理。
14.根据权利要求13所述的方法,其特征在于,所述第二指令的数量为多个;
所述第三负载控制标签指示以下的至少一种内容:对多个所述第二指令构成的多个DC进行合并、对多个所述第二指令对应的多个渲染通道进行合并。
15.一种控制负载的装置,其特征在于,包括:
指令获取模块,用于获取至少一个第一指令,所述至少一个第一指令用于调用应用程序接口API,以使得图形处理器GPU执行第一渲染操作;
负载数据确定模块,用于基于所述至少一个第一指令确定所述GPU执行所述第一渲染操作的过程的负载数据;
目标方案确定模块,用于基于所述负载数据确定用于控制负载的目标方案;
指令获取模块,还用于获取至少一个第二指令,所述至少一个第二指令用于调用所述API,以使得所述GPU执行第二渲染操作;
控制模块,用于基于所述目标方案控制所述GPU执行所述第二渲染操作的过程中的负载。
16.一种终端设备,其特征在于,包括:一个或多个处理器和存储器;其中,所述存储器中存储有计算机可读指令;
所述一个或多个处理器读取所述计算机可读指令,以使所述计算机设备实现如权利要求1至14中任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如权利要求1至14中任一项所述的方法。
18.一种计算机程序产品,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如权利要求1至14中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011186852.6A CN114511438A (zh) | 2020-10-29 | 2020-10-29 | 一种控制负载的方法、装置及设备 |
PCT/CN2021/126924 WO2022089512A1 (zh) | 2020-10-29 | 2021-10-28 | 一种控制负载的方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011186852.6A CN114511438A (zh) | 2020-10-29 | 2020-10-29 | 一种控制负载的方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114511438A true CN114511438A (zh) | 2022-05-17 |
Family
ID=81383344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011186852.6A Pending CN114511438A (zh) | 2020-10-29 | 2020-10-29 | 一种控制负载的方法、装置及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114511438A (zh) |
WO (1) | WO2022089512A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662822B (zh) * | 2012-04-26 | 2015-02-04 | 华为技术有限公司 | 负载监控装置和方法 |
US9535815B2 (en) * | 2014-06-04 | 2017-01-03 | Nvidia Corporation | System, method, and computer program product for collecting execution statistics for graphics processing unit workloads |
CN105045367A (zh) * | 2015-01-16 | 2015-11-11 | 中国矿业大学 | 基于游戏负载预测的android系统设备功耗优化方法 |
KR102610820B1 (ko) * | 2017-09-27 | 2023-12-06 | 삼성전자주식회사 | 뉴럴 네트워크 시스템 및 뉴럴 네트워크 시스템의 동작방법 |
CN110209501B (zh) * | 2019-06-03 | 2022-02-08 | Oppo广东移动通信有限公司 | 图形处理器的频率调整方法、装置、终端及存储介质 |
-
2020
- 2020-10-29 CN CN202011186852.6A patent/CN114511438A/zh active Pending
-
2021
- 2021-10-28 WO PCT/CN2021/126924 patent/WO2022089512A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022089512A1 (zh) | 2022-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106504185B (zh) | 一种渲染优化方法和装置 | |
JP7397979B2 (ja) | 画像レンダリング方法および関連装置、並びにコンピュータデバイスおよびプログラム | |
CN106547599B (zh) | 一种资源动态加载的方法及终端 | |
US9760998B2 (en) | Video processing method and apparatus | |
WO2022100663A1 (zh) | 一种选择抗锯齿算法的方法、装置、设备及可读存储介质 | |
CN109753892B (zh) | 人脸皱纹的生成方法、装置、计算机存储介质和终端 | |
CN108009033B (zh) | 模拟触控方法、装置和移动终端 | |
CN113313804A (zh) | 一种图像渲染方法、装置、电子设备和存储介质 | |
CN111399819A (zh) | 数据生成方法、装置、电子设备及存储介质 | |
CN112308947A (zh) | 一种动画的生成方法、装置及存储介质 | |
CN107133085B (zh) | 优化oat中冗余指令的方法及移动终端 | |
CN111210496B (zh) | 一种图片解码方法、装置以及设备 | |
CN108027967B (zh) | 图像拼接的方法和电子设备 | |
CN106709856B (zh) | 一种图形渲染方法及相关设备 | |
CN107913519B (zh) | 2d游戏的渲染方法及移动终端 | |
CN114511438A (zh) | 一种控制负载的方法、装置及设备 | |
CN109358796A (zh) | 一种游戏视野共享方法、终端及可读存储介质 | |
CN110493460B (zh) | 一种图标更换方法、电子设备及计算机可读存储介质 | |
CN116630375A (zh) | 一种图像中关键点的处理方法和相关装置 | |
CN108829600B (zh) | 算法库的测试方法、装置、存储介质和电子设备 | |
CN109194943B (zh) | 一种图像处理方法及终端设备 | |
CN106873930B (zh) | 使用OpenGL绘制用户界面的方法、装置以及移动终端 | |
CN107578456A (zh) | 纹理的处理方法、设备、移动终端以及计算机存储介质 | |
CN117152327B (zh) | 一种参数调节方法和相关装置 | |
CN111382335B (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 |