针对游戏工作负荷动态节流cpu频率的系统和方法_2

文档序号:9932599阅读:来源:国知局
状态和绘制调用量的访问权并生成发送给GPU 418的二进制的图形库(GL)命令,GPU 418处理工作负荷以执行绘制调用。(PU 416可确定要发送给GPU 418的处理工作负荷(例如,绘制调用量)。然而,当GPU 418正处理重工作负荷(例如,正在计算设备410上玩游戏)时,以CPU频率最大值来运行CPU 416可能是不合期望的。CPU 416可将关于状态和绘制调用有关的信息传递给游戏模式检测器412,游戏模式检测器412在用户空间中执行并且可使用状态和绘制调用信息来检测计算设备410是否具有游戏工作负荷。
[0042]当游戏模式检测器412在计算设备410上检测到游戏工作负荷时,游戏模式检测器412可随后为CPU FMax设定上限(cap),直到计算设备410不再被确定为处于游戏模式。在一示例中,游戏模式检测器412降低CPU FMax以使得在计算设备410上执行的其他组件不能使CPU 416超过已降低的CPU FMax。不同的调频器可在不同频率运行。在一实施例中,CPU 416包括一个或多个核,并且可为这些核中的一个或多个核设置单独的CPU FMax。当计算设备410不再被确定为处于模式模式中时,游戏模式检测器412可移除或重新调整CPU FMax的上限,或简单地将已降低的CPU FMax增加至默认水平。
[0043]开放图形库(OpenGL)是用于渲染二维和三维计算机图形的应用编程接口(API)的规范。OpenGL实现是实现由该规范定义的API的库。API是跨语言和多平台的,并且通常被用于与GPU交互以达成硬件加速渲染。OpenGL在CAD、虚拟现实、科学可视化、信息可视化、飞行仿真和视频游戏中广泛使用。针对嵌入式系统的0penGL(0penGL ES)是渲染API的OpenGL计算机图形的子集并且被设计成用于嵌入式系统(例如,智能电话、计算机平板、视频游戏控制台和PDA)。为了简明起见,OpenGL或OpenGL ES可被用于描述用于清染计算机图形的技术,但是这并不旨在进行限制并且应当理解提供这些能力的其他技术在本公开的范围之内。
[0044]A.检测游戏工作负荷
[0045]在一些实施例中,游戏模式检测器412检测计算设备410上的游戏工作负荷,并且可以各种方式来这样做。两个OpenGL ES工作负荷是用户界面(UI)和游戏工作负荷。
[0046]1.状态-更新/绘制(SUPD)度量
[0047]在一示例中,游戏模式检测器412使用平均状态更新/绘制(SUPD)度量来检测计算设备410上的游戏工作负荷。SUPD度量取决于游戏工作负荷并且绑定至给定绘制调用。例如,图形库(GL)调用是由游戏应用使用的API。SUPD度量可包括跟踪每渲染帧(例如,两个eglSwapBuffers之间)每单个GL绘制调用(例如,glDrawElements和glDrawArray)作出的所有GL调用(例如,glUniformMatrix、glBindBuffer、gl*等)的平均量。在该示例中,游戏模式检测器412可随后跟踪在单个绘制调用之前作出了多少GL API调用(例如,状态更新)。对于图形渲染,三角形通常是要绘制的最小单位。游戏模式检测器412可确定在绘制特定三角形之前作出了多少GL API调用。每渲染帧每GL绘制调用作出的GL调用的平均量越高可指示相关联的工作负荷对GHJ 418密集的可能性越高。
[0048]使用SUPD度量,游戏模式检测器412可基于单个渲染帧来将计算设备410从非游戏模式切换至游戏模式(或者从游戏模式切换至非游戏模式)。然而,这可导致在逐帧基础上持续地进行至/从游戏模式的来回切换。因此,基于满足特定条件的持续重工作负荷来将计算设备410从非游戏模式切换至游戏模式(或者从游戏模式切换至非游戏模式)可能是更为合乎期望的。使用此种启发式办法,至和从游戏模式的切换可基于一贯历史并避免假阳性。例如,滑动窗可用来查明游戏工作负荷特性是一贯的并且不是偶发性的。以此方式,游戏模式检测器412可在基于OpenGL ES的重游戏工作负荷相对于较轻的用户界面工作负荷之间区分,并且因此针对游戏工作负荷主动降低CPU频率最大值。
[0049]在一些实施例中,结合跨越预定量的连贯帧的滑动窗,游戏模式检测器412跟踪每渲染帧每GL绘制调用的平均GL调用量。在一示例中,对于连贯帧的预定窗而言,当跟踪每渲染帧每GL绘制调用的平均GL调用量的结果满足阈值时,游戏模式检测器412将检测到计算设备410上的游戏工作负荷,因为在满足该条件时,GPU密集的较重和持续的工作负荷是很有可能的。在一示例中,当跟踪每渲染帧每GL绘制调用的平均GL调用量的结果大于或等于25时,该结果满足阈值。
[0050]同样,例如,当跟踪平均GL调用量的结果没有达到25的阈值时,游戏模式检测器412可确定计算设备410不参与游戏活动,并且可将计算设备410切换至非游戏模式。在一实施例中,将计算设备410切换至非游戏模式包括重置或重新调整CPU的CPU FMax(例如,增加CPU FMax的上限)。
[0051 ]例如,SUro阈值可以是大致25、恰好25、或20-25的范围。然而将理解,25的阈值是作为示例,并且根据各种计算设备410的特性可应用其他值。
[0052]在一示例中,定义滑动窗大小的连贯帧的预定量是5帧。对于OpenGLES工作负荷的N(例如,5)个连贯帧的滑动窗而言,游戏模式检测器412跟踪针对要被渲染的N(例如,5)个连贯帧中的每个帧的每GL绘制调用作出的平均GL调用量,其中N是大于O的任何整数。例如,如果SUH)大于或等于25,则游戏模式检测器412可使计算设备410进入游戏模式(如果计算设备410并非已处于游戏模式)。
[0053]2.SlPD和绑定-纹理绘制(BTPD)度量
[0054]在另一示例中,游戏模式检测器412使用SUPD和平均绑定-纹理/绘制(BTPD)度量来检测计算设备410上的游戏工作负荷。在计算设备410的屏幕上绘制图像之前,纹理可被映射至要在屏幕上渲染的特定三角形。如果游戏应用正在计算设备410上执行,则CPU 416可在CPU 416发出绘制调用并将其发送给GPU 418之前查找多个纹理。例如,纹理可以指示三角形的一种或多种颜色,并且针对一帧可确定多个纹理。BTPD度量取决于游戏工作负荷并且被绑定至给定绘制调用。BTPD度量可包括跟踪每清染帧(例如,两个eglSwapBuffers之间)每GL绘制调用(例如,g I DrawE Iements和gl DrawArray)作出的平均纹理调用量。在该示例中,游戏模式检测器412可跟踪在单个绘制调用之前作出了多少GL API调用(例如,纹理调用)。每渲染帧每GL绘制调用平均纹理调用量越高指示越多的纹理要被用于渲染帧。因此被用作游戏模式检测条件的SUH)和Β??)度量可跨广范围的OpenGL ES游戏工作负荷工作良好并且可被主动用于减少在移动设备上游戏期间由移动平台使用的总体功率。
[0055]SUPD和BTPD度量可被游戏模式检测器412用来基于单个渲染帧将计算设备410从非游戏模式切换至游戏模式(或者从游戏模式切换至非游戏模式)。然而,这可导致在逐帧基础上持续地进行至/从游戏模式的来回切换。基于满足特定条件的持续重工作负荷来将计算设备410从非游戏模式切换至游戏模式(或者从游戏模式切换至非游戏模式)可能是更为合乎期望的。在此种启发式办法上,至和从游戏模式的切换可基于工作负荷历史并避免假阳性。
[0056]在一些实施例中,结合跨预定量的连贯帧的滑动窗,游戏模式检测器412跟踪每渲染帧每GL绘制调用的平均纹理调用量。对于OpenGL ES工作负荷的M(例如,5)个连贯帧的滑动窗而言,游戏模式检测器412跟踪针对要渲染的M(例如,5)个连贯帧中的每个帧的每GL绘制调用的平均纹理调用量,其中M是大于O的任何整数。在一示例中,对于预定量的连贯帧而言,当跟踪每渲染帧每GL绘制调用的平均GL调用量的结果满足第二阈值并且当跟踪每渲染帧每GL绘制调用的平均纹理调用量的结果满足第三阈值时,游戏模式检测器412将已经检测到计算设备410上的游戏工作负荷。当满足该条件时,GPU密集的持续重工作负荷是极其可能的。许多UI情形具有小于15的SUPD。在一示例中,当跟踪每渲染帧每GL绘制调用的平均GL调用量的结果大于或等于15时,该结果满足第二阈值,并且当跟踪每渲染帧每GL绘制调用的平均纹理调用量的结果大于I时,该结果满足第三阈值。将理解,15和I的值是作为示例,并且根据各种计算设备410的特性,其他值可能是恰适的。
[0057]同样,当跟踪平均图形库调用量的结果不满足第二阈值时,或者当跟踪平均纹理调用量的结果不满足第三阈值时,游戏模式检测器412可确定计算设备410不参与游戏活动,并且可将计算设备410切换至非游戏模式。将计算设备410切换至非游戏模式可包括重置CPU的CPU FMax(例如,增加CPU FMax的上限)。例如,当跟踪每渲染帧每GL绘制调用的平均GL调用量的结果小于15时,该结果不满足第二阈值,并且当跟踪每渲染帧每GL绘制调用的平均纹理调用量的结果小于或等于1(例如,不超过I)时,该结果不满足第三阈值。
[0058]例如,SUro阈值可以是大致15、恰好15、或13-17的范围。例如,BTPD阈值可以是大致1、恰好1、或0.8-1.2的范围。在一示例中,定义滑动窗跨度的连贯帧的预定量是5
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1