CN117130459B - 帧率调整方法、设备及存储介质 - Google Patents

帧率调整方法、设备及存储介质 Download PDF

Info

Publication number
CN117130459B
CN117130459B CN202310402790.5A CN202310402790A CN117130459B CN 117130459 B CN117130459 B CN 117130459B CN 202310402790 A CN202310402790 A CN 202310402790A CN 117130459 B CN117130459 B CN 117130459B
Authority
CN
China
Prior art keywords
frame rate
cpu
gpu
equal
frequency
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.)
Active
Application number
CN202310402790.5A
Other languages
English (en)
Other versions
CN117130459A (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 CN202310402790.5A priority Critical patent/CN117130459B/zh
Publication of CN117130459A publication Critical patent/CN117130459A/zh
Application granted granted Critical
Publication of CN117130459B publication Critical patent/CN117130459B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3265Power saving in display device
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/25Output arrangements for video game devices
    • 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/1407General aspects irrespective of display type, e.g. determination of decimal point position, display with fixed or driving decimal point, suppression of non-significant zeros

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Power Sources (AREA)

Abstract

本申请实施例提供一种帧率调整方法、设备及存储介质,涉及终端技术领域。在本申请方案中,当终端设备处于DC游戏场景时,帧率采集器负责周期性采集PC的实际帧率,帧率调节器负责根据实际帧率和目标帧率,设定帧率调整策略。当实际帧率和目标帧率的偏差较大时,帧率调节器可以采用CPU调整策略,使得实际帧率可以快速收敛到与目标帧率偏差较小的范围。当实际帧率和目标帧率的偏差较小时,帧率调节器可以采用GPU调整策略,使得实际帧率在与目标帧率偏差较小的范围内进行微调,以缩小实际帧率与目标帧率的差距。

Description

帧率调整方法、设备及存储介质
技术领域
本申请涉及终端技术领域,尤其涉及一种帧率调整方法、设备及存储介质。
背景技术
随着终端技术的发展,中央处理器(central processing unit,CPU)和图形处理器(graphics processing unit,GPU)的硬件能力得到提升,使得终端设备的系统帧率也得到提升。
以个人计算机(personal computer,PC)为例。在游戏场景下,PC的系统帧率从常规的60fps提高至100fps,甚至是200fps,使得系统帧率远远大于屏幕刷新率。通常屏幕刷新率为一个固定值,从用户角度来说较高的系统帧率并不会改善画面质量,但这会导致终端设备的功耗较高。特别是,当PC采用电池供电时,较高的系统帧率会缩短PC的续航时长。
发明内容
本申请提供一种帧率调整方法、设备及存储介质,解决了较高的系统帧率会导致终端设备的功耗较高,从而缩短续航时长的技术问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请实施例提供一种帧率调整方法。该方法应用于终端设备,该终端设备包括用于控制帧显示的CPU和GPU。该方法包括:
识别终端设备的当前场景是否为预设场景,该预设场景是指采用直流供电方式且焦点窗口为目标应用(比如游戏应用)。在识别到当前场景为预设场景的情况下,采集目标应用的实际帧率,并获取与目标应用对应的目标帧率。在第一绝对值大于或等于第一阈值,且标记位为第一标识的情况下,调整GPU性能参数。在第一绝对值大于或等于第一阈值,且标记位为第二标识的情况下,调整CPU性能参数。
其中,目标帧率为预设帧率,目标帧率大于或等于屏幕刷新率,且目标帧率与屏幕刷新率的差值小于或等于预设值。第一绝对值大于第二绝对值。第一绝对值为在调整GPU性能参数和CPU性能参数前实际帧率与目标帧率的差值的绝对值。第二绝对值为在调整GPU性能参数和CPU性能参数后重新采集的实际帧率与目标帧率的差值的绝对值。
在上述方案中,当识别到处于DC游戏场景时,CPU主要负责整个运算逻辑,GPU主要负责图形渲染。CPU和GPU的角色,决定了当执行CPU调整策略时帧率可以快速收敛到目标帧率,当执行GPU调整策略时会在小范围内对帧率进行精准微调。因此,如果实际帧率和目标帧率的偏差较大,可以采用CPU调整策略,使得实际帧率可以快速收敛到与目标帧率偏差较小的范围;如果实际帧率和目标帧率的偏差较小,可以采用GPU调整策略,使得实际帧率在与目标帧率偏差较小的范围内进行微调,以进一步缩小实际帧率与目标帧率的差距。
应理解,无论采用CPU调整策略,还是GPU调整策略,都可以缩小实际帧率与目标帧率的偏差。由于目标帧率为一个接近屏幕刷新率且不小于屏幕刷新率的数值,因此当实际帧率与目标帧率的偏差缩小时,实际帧率与屏幕刷新率也越来越接近。如此,在实际帧率较高时,采用上述帧率调整方法可以降低终端设备的多余渲染量,节省了终端设备的功耗,提升终端设备的续航时间;在实际帧率较低时,采用上述帧率调整方法可以避免出现“掉帧”现象,保证了显示器画面的流畅性。
在一种可能的实现方式中,终端设备可以在满足下述任意一个条件的情况下,触发识别当前场景是否为预设场景:
条件1、检测到CPU性能参数的波动值大于或等于第一性能参数;
条件2、检测到GPU性能参数的波动值大于或等于第二性能参数;
条件3、检测到终端设备的供电方式发生变化;
条件4、检测到终端设备的焦点窗口发生切换;
条件5、检测到磁盘参数大于或等于预设磁盘参数;
条件6、磁盘参数的变化量大于或等于预设变化量。
应理解,当满足上述任意一个条件时,终端设备都有可能进入预设场景或退出预设场景,因此通过设置上述判断条件,可以在发生场景变化时及时触发场景识别,以调整系统帧率。
在一种可能的实现方式中,第一标识用于指示执行GPU调整策略,第二标识用于指示执行CPU调整策略。示例性地,第一标识和第二标识可以为下述任意一项:
第一标识为1,第二标识为0;
第一标识为0,第二标识为1;
第一标识为ture(真),第二标识为fasle(假);
第一标识为fasle,第二标识为ture。
应理解,第一标识和第二标识还可以为其他标识。通过将标识位设置为第一标识或第二标识,可以触发执行GPU调整策略或CPU调整策略,从而实现调整策略控制。
在一种可能的实现方式中,该方法还可以包括:在识别到当前场景为非预设场景的情况下,将标记位设置为第二标识,并继续识别当前场景是否为预设场景。
应理解,当用户为终端设备连接上充电器或者触发切换焦点窗口时,终端设备可能会退出预设场景。通过将标记位设置为第二标识,可以在终端设备再次进入预设场景时,优先采用CPU调整策略进行粗调,从而将系统帧率快速地收敛到目标帧率。
在一种可能的实现方式中,在获取到目标应用的实际帧率和目标应用的目标帧率之后,该方法还包括:判断实际帧率与目标帧率的差值的绝对值(即第一绝对值)是否大于或等于第一阈值。在第一绝对值小于第一阈值的情况下,继续识别终端设备的当前场景是否为预设场景。在第一绝对值大于或等于第一阈值的情况下,判断标记位是否为第一标识。如果标记位不是第一标识(比如为第二标识),那么执行CPU调整策略,该CPU调整策略用于调整CPU性能参数。如果标记位是第一标识,那么执行GPU调整策略,该GPU调整策略用于调整CPU性能参数。
应理解,当第一绝对值较小时,说明实际帧率与目标帧率的偏差较小,此时屏幕刷新率与系统帧率较为接近,效果比较理想,无需调整实际帧率,可以开始下一轮判断流程。当第一绝对值较大时,说明实际帧率与目标帧率的偏差较大,此时屏幕刷新率与系统帧率相差较大,效果不理想,因此可以根据标记位设置,选择CPU调整策略或GPU调整策略。
下面对CPU调整策略进行示例说明:
在一种可能的实现方式中,上述CPU调整策略可以包括:判断第一绝对值是否小于第二阈值,该第二阈值大于第一阈值。在第一绝对值大于或等于第二阈值的情况下,调整CPU策略号,并将CPU性能参数更改为与调整后的CPU策略号对应的性能参数。在第一绝对值小于第二阈值的情况下,将标记位设置为第一标识,并继续识别当前场景是否为预设场景。
示例性地,第一阈值为3fps,第二阈值为20fps。
应理解,当第一绝对值大于或等于第二阈值时,说明实际帧率尚未收敛到目标帧率附近,此时需要采用CPU调整策略进行粗调,以将实际帧率收敛到目标帧率附近。而当第一绝对值小于第二阈值时,说明实际帧率已经收敛到目标帧率附近,此时不需要采用CPU调整策略进行粗调,而应该切换为GPU调整策略进行微调。在这种情况下,可以将标记位设置为第一标识,并开始下一轮判断流程。在下一轮判断流程时,由于标记位为第一标识,因此不再执行CPU调整策略,而执行GPU调整策略。
在一种可能的实现方式中,与调整后的CPU策略号对应的性能参数可以包括以下至少一项:能效比、CPU最小频率和CPU最大频率。其中,CPU策略号的递增,EPP单调递减,CPU最小频率单调递增,CPU最大频率保持不变或CPU单调递增。
应理解,由于每个CPU策略号对应一组CPU性能参数,因此通过改变CPU策略号,可以调整EPP和CPU最小频率等CPU性能参数,从而调整系统帧率。比如,当减小当前CPU策略号时可以降低系统帧率。再比如,当增加当前CPU策略号时可以提高系统帧率。
在一种可能的实现方式中,第一绝对值大于第一阈值,具体可以分为两种情况:
情况1,实际帧率大于目标帧率,且第一绝对值大于第一阈值。
相应地,在第一绝对值大于或等于第二阈值的情况下,调整CPU策略号,并将CPU性能参数更改为与调整后的CPU策略号对应的性能参数,包括:将第一CPU策略号减1,得到第二CPU策略号;将CPU性能参数更改为与第二CPU策略号对应的性能参数。其中,第二CPU策略号对应的能效比,大于第一CPU策略号对应的能效比;第二CPU策略号对应的CPU最小频率,小于第一CPU策略号对应的CPU最小频率;第二CPU策略号对应的CPU最大频率,小于或等于第一CPU策略号对应的CPU最大频率。
应理解,当实际帧率大于目标帧率时,通过减小当前CPU策略号,可以减小CPU最小频率等参数,从而降低系统帧率。另外,通过在每轮判断流程中依次将当前CPU策略号减一,可以实现CPU性能参数逐级递减,避免将系统帧率调节的过低。
情况2,目标帧率大于实际帧率,且第一绝对值大于第一阈值。
相应地,在第一绝对值大于或等于第二阈值的情况下,调整CPU策略号,并将CPU性能参数更改为与调整后的CPU策略号对应的性能参数,包括:将第一CPU策略号加1,得到第三CPU策略号;将CPU性能参数更改为与第三CPU策略号对应的性能参数。其中,第三CPU策略号对应的能效比,小于第一CPU策略号对应的能效比;第三CPU策略号对应的CPU最小频率,大于第一CPU策略号对应的CPU最小频率;第三CPU策略号对应的CPU最大频率,大于或等于第一CPU策略号对应的CPU最大频率。
应理解,当目标帧率大于实际帧率时,通过增加当前CPU策略号,可以增加CPU最小频率等参数,从而提高系统帧率。另外,通过在每轮判断流程中依次将当前CPU策略号加一,可以实现CPU性能参数逐级递增,避免将系统帧率调节的过高。
在一种可能的实现方式中,在调整CPU策略号之后,该方法还可以包括:判断调整后的CPU策略号是否小于或等于最小策略号,或者,调整后的CPU策略号是否大于或等于最大策略号。在调整后的CPU策略号小于或等于最小策略号,或者,调整后的CPU策略号大于或等于最大策略号的情况下,将标记位设置为第一标识,并继续识别当前场景是否为预设场景。
应理解,如果调整后的CPU策略号小于或等于最小策略号,或者,调整后的CPU策略号大于或等于最大策略号,那么说明已经将CPU性能参数调节至CPU最大能力或最小能力,CPU无法继续调节,此时可以将标记位设置为第一标识,从而使得在下一轮判断流程中将不再采用CPU调整策略,而切换至GPU调整策略,进而在GPU能力范围内继续进行系统帧率调整。
下面对GPU调整策略进行示例说明:
在一种可能的实现方式中,上述GPU调整策略可以包括:在第一绝对值大于或等于第一阈值,且标记位为第一标识的情况下,先确定目标帧率与实际帧率的偏差值;再将偏差值与单位偏差值的乘积,确定为GPU补偿频率;然后按照GPU补偿频率,调整GPU频率。
示例性地,调整后的GPU频率等于调整前的GPU频率与GPU补偿频率之和。
应理解,当实际帧率和目标帧率的偏差较小时,可以利用目标帧率与实际帧率的偏差值,调整GPU频率。当对GPU频率进行调整后,实际帧率也会发生变化,从而缩小实际帧率与目标帧率的差距。比如,在当目标帧率大于实际帧率时,可以在当前GPU频率的基础上增加一定频率,通过增大GPU频率,可以提高下一轮采集到的实际帧率,使得目标帧率与实际帧率更为接近。再比如,当目标帧率小于实际帧率时,可以在当前GPU频率的基础上,减小一定频率,通过减小GPU频率,可以降低下一轮采集到的实际帧率,使得目标帧率与实际帧率更为接近。
在一种可能的实现方式中,在按照GPU补偿频率,调整GPU频率之前,该方法还可以包括:确定GPU补偿频率的绝对值大于或等于GPU最小偏移频率,且GPU补偿频率的绝对值小于或等于GPU最大偏移频率。其中,GPU最大偏移频率为GPU支持的最大偏移频率,GPU最小偏移频率为GPU支持的最小偏移频率。
应理解,如果GPU补偿频率的绝对值小于或等于GPU最大偏移频率,且大于或等于GPU最小偏移频率,说明GPU补偿频率没有超出GPU锁频超频参数,此时可以按照GPU补偿频率,调整GPU频率。
第二方面,本申请提供一种装置,该装置包括用于执行上述第一方面中的方法的单元。该装置可对应于执行上述第一方面中描述的帧率调整方法,该装置中的单元的相关描述请参照上述第一方面的描述,为了简洁,在此不再赘述。
其中,上述第一方面描述的设置本机号码功能的方法可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块或单元。例如,处理模块或单元、显示模块或单元等。
第三方面,本申请提供一种终端设备,该终端设备包括存储器和一个或多个处理器。其中,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。当计算机指令被处理器执行时,使得终端设备执行第一方面中任一项提供的帧率调整方法。
第四方面,本申请提供一种计算机可读存储介质。该计算机可读存储介质包括计算机指令。当计算机指令在终端设备上运行时,使得该终端设备执行如第一方面及其任一种可能的实现方式提供的帧率调整方法。
第五方面,本申请提供一种计算机程序产品。当计算机程序产品在计算机上运行时,使得计算机执行如第一方面及其任一种可能的实现方式提供的帧率调整方法。
第六方面,本申请提供一种芯片系统。该芯片系统包括一个或多个接口电路和一个或多个处理器。该接口电路和处理器通过线路互联。该芯片系统可以应用于包括通信模块和存储器的终端设备。该接口电路用于从终端设备的存储器接收信号,并向处理器发送接收到的信号,该信号包括存储器中存储的计算机指令。当处理器执行该计算机指令时,终端设备可以执行如第一方面及其任一种可能的实现方式提供的帧率调整方法。
可以理解,上述提供的第二方面的装置,第三方面的终端设备,第四方面的计算机可读存储介质,第五方面的计算机程序产品及第六方面的芯片系统所能达到的有益效果,可参考如第一方面及其任一种可能的实现方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的终端设备的硬件结构示意图;
图2为本申请实施例提供的终端设备的软件结构示意图;
图3为本申请实施例提供的游戏APP、CPU、GPU和显示器刷新帧的流程示意图;
图4为本申请实施例提供的一种TE信号和Vsync信号的示意图;
图5为本申请实施例提供的另一种TE信号和Vsync信号的示意图;
图6为本申请实施例提供的又一种TE信号和Vsync信号的示意图;
图7为本申请实施例提供的一种游戏场景的示意图;
图8为本申请实施例提供的另一种游戏场景的示意图;
图9为本申请实施例提供的对帧率调整的软件及硬件的工作流程示意图;
图10为本申请实施例提供的帧率采集器执行帧率调整方法的流程示意图;
图11为本申请实施例提供的帧率调节器执行帧率调整方法的流程示意图;
图12为本申请实施例提供的一种帧率调整流程的示意图;
图13为本申请实施例提供的另一种帧率调整流程的示意图;
图14为本申请实施例提供的又一种帧率调整流程的示意图;
图15为本申请实施例提供的一种帧率调整后Vsync信号的示意图;
图16为本申请实施例提供的另一种帧率调整后Vsync信号的示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
在本申请的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B。在本申请的描述中,“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本申请的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。例如,第一帧率和第二帧率等是用于区别不同的帧率,而不是用于描述帧率的特定顺序。
在本申请实施例中,“多个”是指两个或两个以上。另外,“小于或等于”和“小于”可以相互替换,“大于或等于”和“大于”可以相互替换。
下面对本申请中涉及的一些名词或者术语进行解释说明。
1、帧(frame):是指界面显示中最小单位的单幅画面。一帧可以理解为一幅静止的画面,快速连续地显示多个连续的帧可以形成物体运动的假象,从而产生视频播放画面。
2、系统帧率,也称为帧率,是指应用客户端在运行时每秒钟内生成的待显示帧的数量。终端设备生成待显示帧通常需要经过绘制、渲染以及合成等过程。系统帧率的单位为每秒帧数(frame per second,FPS)。
其中,帧绘制是指显示界面的图片绘制。帧渲染是将绘制后的视图进行着色操作或增加3D效果等。帧合成是将至少一个渲染后的视图合成为待显示界面的过程。
3、刷新率,也称为屏幕刷新率,是指屏幕在每秒种刷新画面的次数,每刷新一次画面代表显示一帧画面。通常,刷新率取决于硬件的固定参数。硬件功能越强大,支持的刷新率越高,屏幕显示画面越流畅。刷新率的单位为赫兹(Hz)。
4、能效比(energy performance preference,EPP)用于硬件控制CPU频率,表示了CPU在能效与性能之间的权衡比例。以EPP的取值范围是0~255为例,EPP的取值越小(越接近于0)表明CPU趋向于高性能,系统频率越高,渲染帧越多;EPP的取值越高(越接近于255)表明CPU趋向于高能效/低功耗,系统频率越低,渲染帧越少。
5、焦点窗口(focus window),是指拥有焦点的窗口。焦点窗口是唯一可以接收键盘输入的窗口。焦点窗口的确定方式与系统的焦点模式(focus mode)关联。焦点窗口的顶层窗口被称为活动窗口(active window)。同一时间只有一个窗口可以是活动窗口。焦点窗口大概率为用户当前需要使用应用程序(application,APP)的窗口。
本申请实施例提供的帧率切换方法,可以应用在具备显示功能的终端设备中。
在一些实施例中,终端设备也称为终端(terminal)或用户设备(user equipment,UE)。比如,终端设备可以是PC、平板电脑(Pad)、智慧屏、智能电视、穿戴式设备、带无线收发功能的电脑、虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端或智慧家庭(smart home)中的无线终端等等,或者可以为其他具备显示功能的设备或装置。对于终端设备的具体类型,本申请实施例不作任何限制。
为了能够更好地理解本申请实施例,下面对本申请实施例的终端设备的结构进行介绍。
图1示出了本申请实施例提供的终端设备的硬件结构示意图。
以终端设备为PC 100为例。如图1所示,PC 100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线,传感器模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,按键180,显示器190等。
处理器110可以包括一个或多个处理单元,例如,处理器110可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、应用处理器(application processor,AP)、图像信号处理器(image signal processor,ISP)、神经网络处理器(neural-network processing unit,NPU)、视频编解码器、调制解调处理器(modem),和/或基带处理器(baseband processor)等。在一些实施例中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,CPU是信息处理、程序运行的最终执行单元,其主要工作包括处理指令、执行操作、控制时间和处理数据等。CPU可以包括控制器、运算器、高速缓冲存储器,以及用于连接这些部件的总线。控制器是PC 100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。运算器是指进行各种算术和逻辑运算操作的部件。高速缓冲存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从高速缓冲存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
GPU又称为显示核心、视觉处理器或显示芯片,为图形和图像处理的微处理器。GPU连接显示器190、AP和CPU。GPU可以用于执行复杂的数学和几何计算、浮点运算、并行计算,还可以用于图形渲染。GPU使显卡减少了对CPU的依赖,尤其是在3D图形处理时,GPU采用立方环境材质贴图和顶点混合等核心技术,因此GPU进行了部分原本CPU的工作。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展PC 100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如,将游戏中获得的录屏文件、截屏文件等保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行PC 100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可以存储操作系统,至少一个功能所需的APP,比如,游戏APP等。存储数据区可以存储各个APP的配置文件,比如与每个游戏APP分别对应的目标帧率。存储数据区还可以存储PC 100使用过程中所创建的数据,比如GPU和CPU在当前时刻的帧率、使用率、EPP、焦点窗口变化等性能参数。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件和/或通用闪存存储器(universal flash storage,UFS)等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口、Micro USB接口和USB Type C接口等。USB接口130可以用于连接充电器为PC 100充电,也可以用于PC100与外围设备之间传输数据,还可以用于连接耳机,通过耳机播放音频。USB接口130还可以用于连接其他终端设备,例如有线鼠标、无线鼠标及音箱等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过PC100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为PC 100供电。
电源管理模块141用于连接电池142、充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态等参数。在一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
本申请实施例涉及交流(alternating current,AC)供电和直流(directcurrent,DC)供电这两种供电方式。其中,AC供电是指充电器与市政提供的交流电源连接,在进行电源变换后,通过充电管理模块140和电源管理模块141为处理器110、内部存储器121、外部存储器、显示器190和无线通信模块160等供电。DC供电是指充电器与市政提供的交流电源断开连接,通过电池142和电源管理模块141为处理器110、内部存储器121、外部存储器、显示器190和无线通信模块160等供电。
无线通信模块160可以提供应用在PC 100上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线转为电磁波辐射出去。
PC 100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及AP等实现音频功能。例如,播放游戏背景声音、真人对话等。
按键180可以是机械按键(比如物理键盘),也可以是触摸式按键。比如在游戏场景中,PC 100可以接收用户对按键180的输入,产生与PC 100的用户设置以及功能控制有关的键信号输入。
显示器190用于显示图像,视频等。显示器190可以包括信号处理模块和显示面板。信号处理模块可以周期性地向CPU/GPU驱动上报撕裂(tearing effect signal,TE)信号,触发CPU/GPU对用户界面(user interface,UI)进行渲染。比如,显示面板可以采用液晶显示器(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organiclight emitting diode,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emittingdiodes,QLED)等。在一些实施例中,PC 100可以包括1个或N个显示器190,N为大于1的正整数。
上述终端设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Windows系统为例,示例性说明终端设备的软件结构。
图2为本申请实施例的终端设备的软件结构示意图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Windows系统分为用户态和内核态。其中,用户态包括应用层以及子系统动态链接库。内核态自上而下分为执行体、内核和驱动层、硬件抽象层(hardware abstraction layer,HAL)及固件层。
应用层可以包括音乐、视频、游戏、社交和办公等APP。应用层还可以包括电脑管家,电脑管家可以包括场景识别模块、性能分析工具、帧率采集器、帧率调节器等。其中,场景识别模块可以识别当前运行的APP是否为游戏APP,以及当前供电方式是否为DC供电。帧率采集器(frame detector)又称为帧率反馈模块,用于调用性能分析工具采集CPU和GPU的实际帧率。性能分析工具为一个专门用于采集帧率的开源工具,比如事件跟踪(windowsevent tracing,ETW)工具或presentMon工具。帧率调节器(frame controller)可以根据当前的实际帧率和预设的目标帧率,确定调整CPU或GPU的策略。
需要说明的是,关于场景识别模块、性能分析工具、帧率采集器和帧率调节器的具体实现方式可以参照下述实施例的描述,此处不予赘述。
子系统动态链接库包括应用程序编程接口(application programminginterface,API)模块,API模块包括Windows API,Windows原生API等。其中,Windows API和Windows原生API均可以为APP提供系统调用入口及内部函数支持。
执行体包括进程管理器、I/O管理器、安全引用监视器、系统事件驱动(operatingsystem event driver,OsEventDriver)节点、Windows管理规范(Windows managementinstrumentation,WMI)、电源管理器、虚拟内存管理器、系统与芯片驱动(operatingsystem to System on chip,OS2SOC)节点等。
内核和驱动层包括内核以及设备驱动程序。其中,内核是对处理器体系结构的抽象,将执行体与处理器体系结构的差异相隔离,保证系统的可移植性。内核可以进行线程安排和调度、陷阱处理和异常调度、中断处理和调度等。设备驱动程序运行在内核模式下,为I/O系统和相关硬件之间的接口。设备驱动程序可包括GPU驱动(也称为显卡驱动)、CPU驱动(比如Intel DTT驱动)、鼠标驱动、音视频驱动、摄像头驱动、键盘驱动等。例如,GPU驱动可以驱动GPU运行,CPU驱动可以驱动CPU运行。
HAL是一个核心态模块,可以隐藏各种与硬件有关的细节,例如I/O接口、中断控制器以及多处理器通信机制等,为运行Windows的不同硬件平台提供统一的服务接口,实现多种硬件平台上的可移植性。
固件层可以包括基本输入输出系统(basic input output system,BIOS)。BIOS是一组固化到计算机主板上一个只读存储器(read only memory,ROM)芯片内的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从互补金属氧化物半导体(complementary metal oxide semiconductor,CMOS)中读写系统设置的具体信息。
上述软件架构在硬件层之上运行,如图2所示,硬件层中以包括GPU、CPU、存储器、鼠标、摄像头和键盘等。
需要说明的是,本申请实施例仅以Windows系统举例来说明,在其他操作系统中,只要各个功能模块实现的功能和本申请的实施例类似也能实现本申请的方案。
下面对终端设备显示帧的流程进行说明。以游戏APP中的帧显示为例。
示例性地,图3示出了游戏APP、CPU、GPU和显示器刷新帧的流程示意图。如图3所示,在游戏过程中,如果游戏APP需要更新界面,那么CPU通过命令列表向任务缓存队列提交命令。在获得资源后,CPU向GPU驱动发送指令调用GPU生成帧,显示合成进程移出任务缓存队列移交至GPU。GPU先调用系统库中帧绘制模块对帧进行绘制,再调用帧渲染模块对绘制后的帧进行渲染,然后将渲染后的帧缓存发送至显示合成进程中的缓存队列,由显示合成进程调用系统库中帧合成模块将渲染后的帧进行合成。之后,合成帧被发送至显示驱动,以驱动显示器刷新显示帧。应理解,在按照上述步骤执行完一个帧的任务之后,游戏APP、CPU、GPU和显示器可以重复上述过程,继续完成下一个帧的任务。
上述帧显示的过程分为两个阶段:一个是包括帧绘制、帧渲染和帧合成在内的帧生成阶段,另一个是屏幕刷新阶段。
在一些实施例中,为了保证帧显示的流畅性,减少出现显示卡顿等现象,终端设备可以基于同一时间基准对帧的绘制、渲染、合成和屏幕刷新显示等流程进行同步。
示例性地,在帧生成阶段可以采用垂直同步(vertical synchronization,Vsync)信号。Vsync信号用于控制对一个或多个图层进行绘制、渲染以及合成。Vsync信号为周期性信号,Vsync信号的周期频率决定了系统帧率。
在屏幕刷新阶段可以采用TE信号。TE信号为周期性信号,用于表征屏幕的刷新频率。在显示器上电且初始化后,显示器开始周期性向GPU驱动发送TE信号。TE信号的发送频率决定了屏幕刷新帧率。比如,当屏幕刷新帧率为60Hz时,TE信号的发送周期为16.6ms(毫秒)。再比如,当屏幕刷新帧率为120Hz时,TE信号的发送周期为8.33ms。显示器每次发送TE信号后,GPU响应于TE信号执行帧刷新动作。在GPU驱动收到TE信号后,先判断帧缓存(framebuffer)队列中是否有已经渲染完成的帧。如果有,则GPU驱动向显示屏推帧;否则,需要等待帧渲染完成,再向显示屏推帧。应理解,GPU需要在每次接收到TE信号之前准备好即将要显示的下一帧内容,从而在接收到TE信号之后可以将帧缓存队列的这帧内容发送至显示器,从而保证了显示器画面的流畅性。
需要说明的是,上述Vsync信号和上述TE信号为异步信号。
另外,上述Vsync信号也可以称为软件Vsync(soft-Vsync)信号,上述TE信号也可以称为硬件Vsync(HW-Vsync)信号。
通常,Vsync信号与TE信号的信号周期相同。在某些情况下也可能会出现Vsync信号的信号周期小于TE信号的信号周期,或者Vsync信号的信号周期大于TE信号的信号周期。
下面结合图4至图6对这三种情况进行示例说明。
情况1
如图4所示,假设TE信号的信号周期和Vsync信号的信号周期均为t1。
在时刻16.67ms之前,GPU驱动接收并驱动GPU完成了A1帧的渲染任务,将A1帧送入帧缓存队列。在时刻16.67ms,GPU驱动接收到来自显示器的TE信号,并将帧缓存队列的A1帧发送至显示器,从而显示器刷屏显示A1帧。另外,在完成了A1帧的渲染任务后,GPU驱动向游戏APP发送Vsync信号,Vsync信号用于请求下发A1帧的渲染任务下一个帧的渲染任务。
在时刻33.33ms之前,GPU驱动接收并驱动GPU完成了A2帧的渲染任务,将A2帧送入帧缓存队列。在时刻33.33ms,GPU驱动接收到来自显示器的下一个TE信号,并将帧缓存队列的A2帧发送至显示器,从而显示器刷屏显示A2帧。另外,在完成了A2帧的渲染任务后,GPU驱动向游戏APP发送Vsync信号,Vsync信号用于请求下发A2帧的渲染任务下一个帧的渲染任务。
在时刻50.00ms之前,GPU驱动接收并驱动GPU完成了A3帧的渲染任务,将A3帧送入帧缓存队列。在时刻50.00ms,GPU驱动接收到来自显示器的下一个TE信号,并将帧缓存队列的A3帧发送至显示器,从而显示器刷屏显示A3帧。另外,在完成了A3帧的渲染任务后,GPU驱动向游戏APP发送Vsync信号,Vsync信号用于请求下发A3帧的渲染任务的下一个帧的渲染任务。
应理解,由于Vsync信号与TE信号的信号周期相同,因此帧渲染和屏幕刷新能够保持同步,使得每次渲染一个帧后能够立即向显示器推帧。
情况2
如图5所示,假设TE信号的信号周期为t1,Vsync信号的信号周期为2倍的t1(2*t1)。
在时刻16.67ms之前,GPU驱动接收并驱动GPU完成了A1帧的渲染任务,将A1帧送入帧缓存队列。在时刻16.67ms,GPU驱动接收到来自显示器的TE信号,并将帧缓存队列的A1帧发送至显示器,从而显示器刷屏显示A1帧。另外,在完成了A1帧的渲染任务后,GPU驱动向游戏APP发送Vsync信号,Vsync信号用于请求下发A1帧的渲染任务下一个帧的渲染任务。
在时刻33.33ms,GPU驱动接收到来自显示器的下一个TE信号。由于Vsync信号的信号周期大于TE信号的信号周期,因此在时刻33.33ms,GPU驱动尚未接收到A2帧的渲染任务,此时帧缓存队列没有存储新的帧,为了避免出现空白,GPU驱动可将帧缓存队列的A1帧再次发送至显示器,从而显示器再次刷屏显示A1帧。
在时刻33.33ms之后,在时刻50.00ms之前,GPU驱动接收并驱动GPU完成了A2帧的渲染任务,将A2帧送入帧缓存队列。在时刻50.00ms,GPU驱动接收到来自显示器的下一个TE信号,并将帧缓存队列的A2帧发送至显示器,从而显示器刷屏显示A2帧。另外,在完成了A2帧的渲染任务后,GPU驱动向游戏APP发送Vsync信号,Vsync信号用于请求下发A2帧的渲染任务下一个帧的渲染任务。
应理解,由于Vsync信号的信号周期大于TE信号的信号周期,因此使得屏幕刷新率大于系统帧率,导致屏幕在相邻的多个周期显示同一帧数据,出现所谓的“掉帧”现象(dropped frame或Jank)。
情况3
如图6所示,假设TE信号的信号周期为t1,Vsync信号的信号周期为t1的一半(0.5t1)。
在时刻16.67ms之前,GPU驱动接收并驱动GPU完成了A1帧的渲染任务,将A1帧送入帧缓存队列。在时刻16.67ms,GPU驱动接收到来自显示器的TE信号,并将帧缓存队列的A1帧发送至显示器,从而显示器刷屏显示A1帧。另外,在完成了A1帧的渲染任务后,GPU驱动向游戏APP发送Vsync信号,Vsync信号用于请求下发A1帧的渲染任务下一个帧的渲染任务。
在时刻33.33ms之前,GPU驱动先后接收并驱动GPU完成了A2帧的渲染任务、A3帧的渲染任务,依次将A2帧和A3帧送入帧缓存队列。
在时刻33.33ms,GPU驱动又接收到来自显示器的下一个TE信号。由于Vsync信号的信号周期小于TE信号的信号周期,因此在时刻33.33ms,帧缓存队列存储有新渲染完成的A2帧和A3帧。又由于GPU驱动每次仅能向显示器发送一个帧,因此GPU驱动将优先完成的A2帧发送至显示器,从而显示器刷屏显示A2帧。
在时刻33.33ms之后,在时刻50.00ms之前,GPU驱动先后接收并驱动GPU完成了A4帧的渲染任务、A5帧的渲染任务,依次将A4帧和A5帧送入帧缓存队列。
在时刻50.00ms,GPU驱动接收到来自显示器的下一个TE信号。由于Vsync信号的信号周期小于TE信号的信号周期,因此在时刻50.00ms,帧缓存队列不但存储有新渲染完成的A4帧和A5帧,还存储有上一个周期已渲染完成的A3帧。又由于GPU驱动每次仅能向显示器发送一个帧,因此GPU驱动将优先完成的A3帧发送至显示器,从而显示器刷屏显示A3帧。
应理解,由于Vsync信号的信号周期小于TE信号的信号周期,因此使得屏幕刷新率小于系统帧率,导致帧缓存队列会存在多余帧。随着时间推移导致帧缓存队列中累计的帧越来越多,可能会出现丢帧。另外,系统帧率与功耗密切相关,当终端设备保持一个较高的系统帧率时,会导致较高功耗。
根据上述分析可知,Vsync信号的信号周期与TE信号的信号周期越接近,效果越理想。但是,在实际实现时可能会出现Vsync信号的信号周期与TE信号的信号周期相差较大的情况。当CPU和GPU的硬件能力较低时,可能会出现Vsync信号的信号周期大于TE信号的信号周期,使得屏幕刷新率大于系统帧率,导致屏幕在相邻的多个周期显示同一帧数据。而当CPU和GPU的硬件能力较高时,可能会出现Vsync信号的信号周期小于TE信号的信号周期,使得屏幕刷新率小于系统帧率,不但会导致帧缓存队列中累计较多帧,还会导致终端设备的功耗较高。
随着终端技术的发展,CPU和GPU的硬件能力得到快速提升,出现Vsync信号的信号周期小于TE信号的信号周期的概率较高。以终端设备是PC为例。目前PC的屏幕刷新率较低,但是CPU和GPU的硬件能力较强,在某些场景下系统帧率较高,比如在游戏场景下系统帧率从常规的60fps提高至100fps,甚至是200fps,从而导致屏幕刷新率远远大于系统帧率。
为了便于理解,下面提供两个屏幕刷新率大于系统帧率的示例。
作为一个示例性的场景,如图7所示,假设用户正在使用一台PC玩游戏,并且该PC的供电方式为AC供电方式。尽管此时系统帧率较高,但由于采用AC供电方式,因此可以忽略续航问题。但是,基于某种原因,用户可能拔掉该PC的充电器,使得该PC的供电方式切换为DC供电方式。此时用户若是继续玩游戏,则该PC将会继续保持一个较高的系统帧率。由于系统帧率与功耗密切相关,这会导致较高功耗,从而会降低电池的续航时长。
作为另一个示例性的场景,如图8所示,假设PC的供电方式一直为DC供电方式。在初始时刻该PC并未运行游戏等大型APP,此时系统帧率较低,基本不会大幅影响电池的续航时长。但是,当在某个时刻用户触发该PC运行游戏APP时,系统帧率快速提升。由于系统帧率与功耗密切相关,这会导致较高功耗,从而会降低电池的续航时长。
鉴于上述问题,本申请实施例提供一种帧率调整方法。当识别到终端设备处于游戏等预设场景时,实时采集应用的实际帧率,并根据应用的实际帧率和目标帧率,选择CPU调整策略或GPU调整策略。通过调整CPU性能参数或GPU性能参数,使得系统帧率在目标帧率上下波动,从而降低了多余的渲染量,节省了设备功耗,提升设备的续航时间。
为方便理解,下面结合图9对本申请实施例提供的帧率调整的软件及硬件的工作流程进行说明。
如图9所示,应用层包括游戏APP、场景识别模块、性能分析工具、帧率采集器、帧率调节器、帧率缓存队列等。内核和驱动层可以包括CPU驱动和GPU驱动。硬件层可以包括显示器、存储器、CPU和GPU。需要说明的是,为了便于描述,图9是以CPU/GPU、CPU/GPU驱动为例进行说明的。CPU/GPU可以是CPU,也可以是GPU;CPU/GPU驱动可以是CPU驱动,也可以是GPU驱动。
帧率调整的软件及硬件的工作流程包括两个并行执行的子流程:
一个子流程为:在接收到用户操作等条件下,游戏APP生成渲染任务,并向CPU/GPU驱动下发渲染任务。CPU/GPU驱动将渲染任务转发至CPU/GPU,从而CPU/GPU执行渲染动作,并将渲染后的帧返回至CPU/GPU驱动。在CPU/GPU驱动接收到来自显示器的TE信号后,向显示器推帧。
另一个子流程为:在满足触发场景识别条件的情况下,帧率采集器和帧率调节器分别调用场景识别模块,由场景识别模块识别当前场景。在场景识别模块识别到当前场景后,向帧率采集器和帧率调节器返回当前场景,比如DC游戏场景。帧率采集器和帧率调节器分别判断当前场景是否为预设的DC游戏场景。
如果帧率采集器识别到当前场景为预设的DC游戏场景,那么调用性能分析工具,由性能分析工具采集CPU/GPU的实际帧率。在性能分析工具采集到实际帧率后,向帧率采集器返回实际帧率。帧率采集器将实际帧率存入帧率缓存队列,并向帧率调节器发送事件通知。
如果帧率调节器识别到当前场景为预设的DC游戏场景,那么从存储器的配置文件中获取与游戏应用对应的目标帧率,并等待事件通知。如果接收到来自帧率调节器的事件通知,那么帧率调节器判断目标帧率与实际帧率的差值的绝对值是否在阈值范围内,并设定帧率调整策略。当实际帧率和目标帧率的偏差较大时,帧率调节器可以采用CPU调整策略,使得实际帧率可以快速收敛到与目标帧率偏差较小的范围。当实际帧率和目标帧率的偏差较小时,帧率调节器可以采用GPU调整策略,使得实际帧率在与目标帧率偏差较小的范围内进行微调,以缩小实际帧率与目标帧率的差距。
在上述两个子流程之后,由于CPU和GPU已经调整性能参数,因此系统帧率将发生变化,CPU驱动向应用发送Vsync信号的间隔也发生变化,从而使得游戏APP下发渲染任务的间隔也发生变化。其中,Vsync信号用于指示游戏APP下发下一个渲染任务。
本申请实施例所提供的帧率调整方法,主要分为两个过程,分别为:
(1)帧率采集器周期性采集PC的实际帧率;
(2)帧率调节器根据实际帧率和目标帧率,选择CPU调整策略或GPU调整策略。
下面将以终端设备为PC,且PC处于DC游戏场景为例,结合图10和图11,对图9所示的PC中部分模块的交互过程进行说明。
如图10所示,帧率采集器周期性采集PC的实际帧率的流程包括下述S11-S15。
S11.帧率采集器判断当前的场景类型是否为预设场景类型。比如,DC游戏场景。
如果当前场景是预设场景类型,那么执行下述S12。
如果当前场景不是预设场景类型,那么继续执行S11。
其中,DC游戏场景符合下述两个条件:一个条件是PC当前运行的APP(即焦点窗口)为游戏APP,另一个条件是PC当前的供电方式为DC供电方式。需要说明的是,本申请实施例是以DC游戏场景符合两个条件为例进行说明的,在实际实现时,也可以仅在符合一个条件的情况下判断为当前场景是预设场景。
在一些实施例中,在满足下述任意一种条件的情况下,可以触发帧率采集器判断当前的场景类型(scene type)是否为预设场景类型:
条件1、检测到CPU性能参数的波动值大于或等于预设值。
比如,CPU性能参数可以为CPU温度、CPU频率、CPU使用率等。
条件2、检测到GPU性能参数的波动值大于或等于预设值。
比如,GPU性能参数可以为GPU温度、GPU频率、GPU使用率等。
条件3、检测到PC的供电方式发生变化。
比如,从AC供电方式切换为DC供电方式,或从DC供电方式切换为AC供电方式。
条件4、检测到PC的焦点窗口发生切换。
比如,焦点窗口从一个APP切换到另一个APP。
条件5、检测到磁盘参数大于或等于预设值,或磁盘参数的变化量大于或等于预设值。
比如,磁盘参数可以为磁盘使用率、磁盘空间占用率等。
在一些实施例中,在PC的配置文件中可以预先存储有至少一种预设场景类型。预设场景类型可以用于指示下述场景:系统帧率较高需要降低帧率的场景,或者系统帧率较低需要提高帧率的场景,或者系统帧率容易出现大幅波动需要稳定帧率的场景。
当预设场景类型的数量为多种时,每种预设场景类型对应一个场景类型标识。
以多种预设场景类型包括DC游戏场景为例。如果当前的场景类型标识与DC游戏场景类型标识(scene_type_game)一致,那么帧率采集器可以确定当前的场景类型为DC游戏场景类型。当PC处于DC游戏场景类型时,系统帧率通常较高,此时可能存在降低系统帧率的需求,那么可以执行下述S12。如果当前的场景类型标识与多种预设场景类型中的每种场景类型标识都不一致,那么可能不存在调整系统帧率的需求,因此可以继续检测当前的场景类型,并判断当前的场景类型是否为预设场景类型,即继续执行上述S11。
需要说明的是,本申请实施例是以预设场景类型为DC游戏场景为例进行示例说明的,其并不对本申请实施例形成限定。在实际实现时,也可能是其他预设场景类型。
S12.帧率采集器采集游戏APP在当前时刻的实际帧率(current frame rate)。
当前时刻的实际帧率也称为实际帧率或当前系统帧率。
帧率采集器可以通过GetCurrentFps()函数,调用性能分析工具presentMon或ETW采集游戏APP在当前时刻的实际帧率。应理解,当PC运行游戏APP时,在不同时段,CPU和GPU的性能参数可能发生变化,采集到的实际帧率也可能会有所不同。比如,当CPU和GPU的频率较低时,采集到的实际帧率较低;当CPU和GPU的频率较高时,采集到的实际帧率较高。通过实时采集系统帧率,可以对帧率进行动态调整。
S13.帧率采集器将当前时刻的实际帧率发送至帧率缓存队列。
上述帧率缓存队列可以用于缓存数据帧。帧率缓存队列在接收到来自帧率采集器的数据帧后,对该数据帧进行缓存。如果帧率缓存队列接收到来自帧率调节器的读取请求,那么帧率缓存队列按照先进先出原则将数据帧移出队列,并发送至帧率调节器。
S14.帧率采集器向帧率调节器发送事件通知。
上述事件通知可以用于指示帧率采集器已完成实际帧率采集。
示例性地,事件通知可以为FRAME_COLLECT_FINISH_EVT。如此,帧率调节器在接收到事件通知FRAME_COLLECT_FINISH_EVT后,可以从帧率缓存队列读取数据帧。
S15.在向帧率调节器发送事件通知后,帧率采集器开始计时,并在达到预设时长后继续判断当前的场景类型是否为预设场景类型,即执行上述S11。
示例性地,上述预设时长可以根据CPU的最小频率和最大频率、GPU的最小频率和最大频率和APP类型等参数设定。
应理解,如果将预设时长设置过短,那么调节CPU性能参数和GPU性能参数会较为频繁,导致功耗高,缩短电池续航时间。如果将预设时长设置过长,那么调节CPU性能参数和GPU性能参数不及时,可能出现长时间保持高系统帧率较高从而缩短电池续航时间的问题。
示例性地,预设时长可以为2秒。经过实验数据验证,当预设时长为2秒时,PC可以按照2秒的周期采集系统帧率,此时电池功耗最低,可以延长DC场景下电池的续航时间。
至此,已经完成对帧率采集器的工作流程的介绍。
下面将介绍帧率调节器的工作流程。
如图11所示,帧率调节器根据实际帧率和目标帧率,选择CPU调整策略或GPU调整策略的流程包括下述S16-S28。
S16.帧率调节器判断当前场景是否为预设场景。比如,DC游戏场景。
对于S16的具体实现方式,可以参照上述实施例对S11的描述,此处不再赘述。
如果当前场景是预设场景,那么可以执行下述S17。
如果当前场景不是预设场景,那么将标记位设置为第二标识,并继续判断当前场景是否为预设场景,即执行S16。其中,第二标识用于指示执行CPU调整策略。
需要说明的是,当用户为PC连接上充电器或者触发PC切换焦点窗口时,PC将退出DC游戏场景,帧率调节器可以确定当前场景不是预设场景,此时通过将标记位设置为第二标识,可以在从非DC游戏场景切换为DC游戏场景的首轮判断流程中,优先采用CPU调整策略进行粗调。对于第二标识和CPU调整策略,可以参照下述S21的描述,此处不予赘述。
本申请实施例的帧率采集器和帧率调节器为两个线程。在检测到CPU性能参数的波动值大于或等于预设值,GPU性能参数的波动值大于或等于预设值,PC的供电方式发生变化,PC的焦点窗口发生切换,磁盘参数大于或等于预设值,磁盘参数的变化量大于或等于预设值等任意一项时,将触发同时开始执行这两个线程。这两个线程的第一个步骤均需要判断当前场景是否为预设场景,并在当前场景为DC游戏场景的情况下,继续执行后续步骤,如此可以避免在非预设场景下误触发任意一个线程。
S17.帧率调节器向配置文件发送请求消息,该请求消息用于请求获取与游戏APP对应的目标帧率(target frame rate)。
相应地,在配置文件向帧率调节器返回与该游戏APP对应的目标帧率。
在一些实施例中,配置文件存储有多个APP的配置信息,这些APP包括符合预设场景的多个APP。不同的APP对应不同的配置信息。比如,不同的APP对应不同的目标帧率。其中,“符合预设场景的APP”是指当PC运行某个APP时,如果能够确定当前场景为预设场景,那么该APP就是符合预设场景的APP。
需要说明的是,在S18-S28将以目标帧率为参照对系统帧率进行调整。结合上述实施例的描述,当屏幕刷新率大于系统帧率时会出现“掉帧”现象,为了避免出现“掉帧”现象,目标帧率应该大于或等于屏幕刷新率。另外,当系统帧率与屏幕刷新率的差值较大时会出现功耗高的问题,为了降低功耗,目标帧率与屏幕刷新率的差值应该小于或等于预设值。因此,目标帧率为一个接近屏幕刷新率且不小于屏幕刷新率的数值。
示例性地,下述表1示出了在配置文件中的多个APP与目标帧率的对应关系。假设显示器的屏幕刷新率为60fps。如表1所示,APP1的目标帧率为60fps,APP2的目标帧率为61fps,APP3的目标帧率为62fps。APP1、APP2和APP3的目标帧率均大于或等于屏幕刷新率。当帧率调节器检测到当前运行的APP为APP1、APP2或APP3,且当前供电方式为DC供电时,可以向配置文件发送请求消息,从而得到与当前运行的APP对应的目标帧率,并继续执行下述S18。
表1
APP类型 是否符合预设场景 目标帧率
APP1 60fps
APP2 61fps
APP3 62fps
S18.帧率调节器接收帧率采集器发送的事件通知。
示例性地,仍以事件通知是FRAME_COLLECT_FINISH_EVT为例。
帧率采集器可以基于下述代码实现发送事件通知:
sendMsgToFrameControler(FRAME_COLLECT_FINISH_EVT)。
帧率调节器可以基于下述代码实现等待事件通知:
waitMsgFromFrameDetector(FRAME_COLLECT_FINISH_EVT)。
在帧率调节器获取到与游戏APP对应的目标帧率后,帧率调节器可以等待来自帧率采集器的事件通知FRAME_COLLECT_FINISH_EVT。如果帧率调节器接收到事件通知FRAME_COLLECT_FINISH_EVT,那么可以执行下述S19;否则,帧率调节器将一直等待事件通知FRAME_COLLECT_FINISH_EVT。
S19.帧率调节器向帧率缓存队列发送请求消息,该请求消息用于请求获取游戏APP在当前时刻的实际帧率。
相应地,在帧率缓存队列接收到该请求消息后,帧率缓存队列按照先进先出原则向帧率调节器返回与游戏应用对应的实际帧率。
结合上述实施例的描述,帧率采集器通过S15设置了周期。帧率采集器在每个周期采集到实际帧率后,都会以事件通知方式告知帧率调节器。因此,帧率调节器是按照帧率采集器的周期从帧率缓存队列获取实际帧率并执行下述S20-S28的。
S20.帧率调节器判断实际帧率与目标帧率的差值的绝对值是否小于或等于第一阈值。
上述第一阈值为一个较小的偏差值。
比如,第一阈值为3帧。
示例性地,假设实际帧率表示为currentFrameRate,目标帧率表示为targetFrameRate,第一阈值表示为FRAME_BTAS_LIMITS,则帧率调节器判断是否满足下述关系式:
abs(currentFrameRate-targetFrameRate)<=FRAME_BTAS_LIMITS。
其中,abs()为求取绝对值函数。
如果满足上述关系式(实际帧率与目标帧率的差值的绝对值小于或等于第一阈值),那么说明实际帧率与目标帧率的偏差较小,此时屏幕刷新率与系统帧率较为接近,效果比较理想,无需调整实际帧率,并继续判断当前场景是否为预设场景,即执行上述S16。
如果不满足上述关系式(实际帧率与目标帧率的差值的绝对值大于第一阈值),那么说明实际帧率与目标帧率的偏差较大,此时屏幕刷新率与系统帧率相差较大,效果不理想,需要调整实际帧率,并执行下述S21。
需要说明的是,实际帧率与目标帧率的差值的绝对值大于第一阈值,具体分为两种情况:
第一种情况是,CPU和GPU的硬件性能较高,会针对游戏APP等应用程序维持一个较高的系统帧率。在这种场景下,实际帧率大于目标帧率,且实际帧率与目标帧率的差值大于第一阈值。
第二种情况是,CPU和GPU将频率设置较小,将EPP设置较大,可能导致系统帧率较低。在这种场景下,目标帧率大于实际帧率,且目标帧率与实际帧率的差值大于第一阈值。
还有一种情况是,CPU和GPU的频率和EPP参数不稳定,系统帧率忽高忽低。有时会出现实际帧率大于目标帧率,且实际帧率与目标帧率的差值大于第一阈值。有时会出现目标帧率大于实际帧率,且目标帧率与实际帧率的差值大于第一阈值。
应理解,无论属于何种情况,实际帧率与目标帧率的偏差较大,此时屏幕刷新率与系统帧率相差较大,效果不理想,需要调整实际帧率。
S21.帧率调节器判断标记位是否为第一标识。
上述标记位可以用于指示是否执行CPU调整策略。
本申请实施例提供了CPU调整策略和GPU调整策略。CPU调整策略用于调整CPU性能参数,比如EPP、CPU最小频率、CPU最大频率、CPU实时频率。GPU调整策略用于调整GPU性能参数,比如GPU实时频率。
在游戏过程中,CPU负责整个运算逻辑,比如物理计算、AI计算、资源调度及向GPU提交绘制命令,而GPU主要负责图形渲染。CPU和GPU的角色,决定了当执行CPU调整策略时帧率可以快速收敛到目标帧率,当执行GPU调整策略时会对帧率进行精准微调。以DC游戏场景为例。在从非DC游戏场景切换为DC游戏场景的首轮判断流程中,优先采用CPU调整策略进行粗调。在实际帧率收敛到目标帧率附近后,采用GPU调整策略进行微调,以进一步缩小实际帧率与目标帧率的差距。
为了解决选择CPU调整策略还是GPU调整策略的问题,本申请实施例提出如下方案:预先设定第一标识指示执行GPU调整策略,第二标识指示执行CPU调整策略,通过将标记位设置为第一标识或第二标识,可以指示执行CPU调整策略还是GPU调整策略。
具体地,当标记位是第一标识时,指示不执行CPU调整策略,而执行GPU调整策略,从而执行下述S25-S28。当标记位不是第一标识,而是第二标识时,指示执行CPU调整策略,而不执行GPU调整策略,从而执行下述S22-S24。
例如,第一标识为1,第二标识为0;或者,第一标识为0,第二标识为1。
再例如,第一标识为ture,第二标识为fasle;或者,第一标识为fasle,第二标识为ture。
需要说明的是,图11及下述实施例是以第一标识为1,第二标识为0为例进行说明的,其并不对本申请实施例形成限定。在实际实现时,第一标识和第二标识还可以为其他可能的标识,本申请实施例不作限定。
S22.帧率调节器判断实际帧率与目标帧率的差值的绝对值是否小于或等于第二阈值。
上述第二阈值为一个较大的偏差值。第二阈值大于第一阈值。
比如,第二阈值为20帧。
示例性地,假设实际帧率表示为currentFrameRate,目标帧率表示为targetFrameRate,第一阈值表示为FRAME_BTAS_LINITS,则帧率调节器判断是否满足下述关系式:
abs(currentFrameRate-targetFrameRate)<=CPU_FRAME_BTAS_LIMITS。
其中,abs()为求取绝对值函数。
如果满足上述关系式(实际帧率与目标帧率的差值的绝对值小于或等于第二阈值),那么说明实际帧率已经收敛到目标帧率附近,此时不需要采用CPU调整策略进行粗调,而应该切换为GPU调整策略进行微调。在这种情况下,可以将标记位设置为1,并从上述S16开始进行下一轮判断流程。在执行到下一轮判断流程的S21时,由于标记位为1,因此不再采用CPU调整策略,而采用GPU调整策略,即执行下述S25-S28。
如果不满足上述关系式(实际帧率与目标帧率的差值的绝对值大于第二阈值),那么说明实际帧率尚未收敛到目标帧率附近,此时需要采用CPU调整策略进行粗调,此时可以执行下述S23-S24,以将实际帧率收敛到目标帧率附近。
应理解,在从非DC游戏场景切换为DC游戏场景的首轮判断流程中,如果满足上述关系式,那么说明实际帧率和目标帧率已经比较接近,此时不必采用CPU调整策略进行粗调,而是直接将标记位设置为1。这样在第二轮判断流程中,可以切换到CPU调整策略对应的流程,并采用GPU调整策略进行微调,以缩小实际帧率与目标帧率的差距。
需要说明的是,实际帧率与目标帧率的差值的绝对值大于第二阈值,具体分为两种情况:
第一种情况是,实际帧率大于目标帧率,且实际帧率与目标帧率的差值大于第二阈值。
第二种情况是,目标帧率大于实际帧率,且目标帧率与实际帧率的差值大于第二阈值。
S23.帧率调节器调整CPU策略号。
在PC的配置文件中预先存储有多个CPU策略号,多个策略号依次从小到大依次递增,或从大到小依次递减。每个CPU策略号对应一组CPU性能参数。帧率调节器通过调整CPU策略号,改变CPU性能参数,从而改变应用程序的系统帧率。
示例性地,下述表2示出了CPU策略号、EPP、CPU最小频率(minFreq)和CPU最大频率(maxFreq)的对应关系。如表2所示,每个CPU策略号对应三个组CPU性能参数:EPP、CPU最小频率和CPU最大频率。随着CPU策略号的递增,EPP单调递减,CPU最小频率单调递增,CPU最大频率保持不变。
表2
针对某款PC,实验数据表明,当将各个CPU策略号的CPU最大频率设置为同一数值时,仅改变EPP和CPU最小频率,也可以达到快速调整系统帧率的目的。因此表2是以随着CPU策略号的增加,CPU最大频率保持不变为例进行说明的,其并不对本申请实施例形成限定。在实际实现时,CPU最大频率也可以随着CPU策略号的单调递增。
结合上述实施例的描述,当实际帧率与目标帧率的差值的绝对值大于第二阈值时,帧率调节器调整CPU策略号,具体分为两种情况:
第一种情况是,当实际帧率大于目标帧率,且实际帧率与目标帧率的差值大于第二阈值时,帧率调节器将当前的第一CPU策略号调整为第二CPU策略号。第二CPU策略号小于第一CPU策略号。
例如,帧率调节器可以基于下述关系式实现将等第一CPU策略号调整为第二CPU策略号:
policy.strategyID=policy.strategyID-1。
应理解,当实际帧率大于目标帧率时,通过在每轮判断流程中依次将当前CPU策略号减一,可以实现CPU性能参数逐级递减,避免将系统帧率调节的过低。
第二种情况是,当目标帧率大于实际帧率,且目标帧率与实际帧率的差值大于第二阈值时,帧率调节器将当前的第一CPU策略号调整为第三CPU策略号。第三CPU策略号大于第一CPU策略号。
例如,假设CPU策略号表示为policy.strategyID,帧率调节器可以基于下述关系式实现将等第一CPU策略号调整为第三CPU策略号:
policy.strategyID=policy.strategyID+1。
应理解,当目标帧率大于实际帧率时,通过在每轮判断流程中依次将当前CPU策略号加一,可以实现CPU性能参数逐级递增,避免将系统帧率调节的过高。
S24.帧率调节器判断调整后的CPU策略号是否小于或等于最小策略号,或者调整后的CPU策略号是否大于或等于最大策略号。
最小策略号在多个CPU策略号中的策略号最小,与之对应的CPU性能参数也最小,相应地,系统帧率也最低。最小策略号对应CPU最低调节能力。
最大策略号在多个CPU策略号中的策略号最大,与之对应的CPU性能参数也最大,相应地,系统帧率也最高。最大策略号对应CPU最高调节能力。
示例性地,最小策略号可以为如表2所示的CPU策略号0,最大策略号可以为如表2所示的CPU策略号5。
如果调整后的CPU策略号小于或等于最小策略号,或者,调整后的CPU策略号大于或等于最大策略号,那么说明已经将CPU性能参数调节至CPU最低调节能力或最高调节能力,CPU无法继续调节,此时可以将标记位设置为1,并从上述S16开始进行下一轮判断流程。应理解,当CPU无法继续调节时,通过将标记位设置为1,可以使得在下一轮判断流程中将不再采用CPU调整策略,而切换至GPU调整策略,从而可以在GPU能力范围内继续进行系统帧率调整。
如果调整后的CPU策略号大于最小策略号,且小于最大策略号,那么说明尚未超出CPU最低调节能力或最高调节能力,CPU可以继续调节,此时继续保持当前标记位为0,并从上述S16开始进行下一轮判断流程。应理解,当CPU可以继续调节时,通过保持当前标记位为0,使得在下一轮判断流程中将继续采用CPU调整策略,并在CPU能力范围内继续进行系统帧率调整。
S25.帧率调节器计算目标帧率与实际帧率的偏差值。
示例性地,假设目标帧率表示为targetFrameRate,实际帧率表示为currentFrameRate,偏差值表示为fpsBias,则帧率调节器可以基于下述关系式计算偏差值:
fpsBias=targetFrameRate-currentFrameRate。
S26.帧率调节器根据该偏差值,计算GPU补偿频率。
示例性地,假设偏差值表示为fpsBia,GPU补偿频率表示为calGpuFreqbias,则帧率调节器可以基于下述关系式计算GPU补偿频率:
calGpuFreqbias=fpsBia*GPU_FREQ_BIAS_UNIT。
其中,GPU_FREQ_BIAS_UNIT为单位偏差值。
需要说明的是,单位偏差值可以根据实际使用需求确定,比如单位偏差值为5M(million)。以fpsBia为10帧为例,根据上述关系式可以计算得到calGpuFreqbias为50MHz。
S27.帧率调节器判断GPU补偿频率的绝对值是否小于或等于GPU最大偏移频率,且大于或等于GPU最小偏移频率。
上述GPU最大偏移频率为GPU支持的最大偏移频率,GPU最小偏移频率为GPU支持的最小偏移频率。
如果GPU补偿频率的绝对值小于或等于GPU最大偏移频率,且GPU补偿频率的绝对值大于或等于GPU最小偏移频率,那么说明GPU补偿频率没有超出GPU锁频超频参数(offset),帧率调节器可以按照GPU补偿频率,调整GPU频率,即执行下述S28。
如果GPU补偿频率的绝对值大于GPU最大偏移频率,或者,GPU补偿频率的绝对值小于GPU最小偏移频率,那么说明GPU补偿频率超出了GPU锁频超频参数,帧率调节器不能按照GPU补偿频率,调整GPU频率,即不执行下述S28。
S28.帧率调节器按照GPU补偿频率,调整GPU频率。
调整后的GPU频率等于当前GPU频率与GPU补偿频率之和。
当目标帧率大于实际帧率时,GPU补偿频率为一个正值,那么可以在当前GPU频率的基础上增加一定频率。应理解,通过增大GPU频率,可以提高下一轮采集到的实际帧率,使得目标帧率与实际帧率更为接近。
当目标帧率小于实际帧率时,GPU补偿频率为一个负值,那么可以在当前GPU频率的基础上,减小一定频率。应理解,通过减小GPU频率,可以降低下一轮采集到的实际帧率,使得目标帧率与实际帧率更为接近。
在本申请实施例所提供的帧率调整方法中,帧率采集器负责周期性采集PC的实际帧率,帧率调节器负责根据实际帧率和目标帧率,设定帧率调整策略。具体地,当实际帧率和目标帧率的偏差较大时,帧率调节器可以采用CPU调整策略,使得实际帧率可以快速收敛到与目标帧率偏差较小的范围。当实际帧率和目标帧率的偏差较小时,帧率调节器可以采用GPU调整策略,使得实际帧率在与目标帧率偏差较小的范围内进行微调,以进一步缩小实际帧率与目标帧率的差距。
应理解,采用CPU调整策略和GPU调整策略可以使得实际帧率与目标帧率的偏差在第一阈值内。由于目标帧率为一个接近屏幕刷新率且不小于屏幕刷新率的数值,因此当实际帧率与目标帧率的偏差在第一阈值内时,实际帧率与屏幕刷新率也非常接近。如此,在实际帧率较高时,采用上述帧率调整方法可以降低终端设备的多余渲染量,节省了终端设备的功耗,提升终端设备的续航时间;在实际帧率较低时,采用上述帧率调整方法可以避免出现“掉帧”现象,保证了显示器画面的流畅性。
下面将以预设场景为DC游戏场景,目标帧率为60fps,第一阈值为3fps,第二阈值为20fps,第一标识为1,第二标识为0,单位偏差值为5M,帧率调整周期为2秒,结合图12至图14,提供3个调整帧率的示例。
示例1
如图12所示,在当用户将从PC上拔掉充电器,或者触发PC切换为游戏APP的焦点窗口时,触发帧率调节器判断当前的场景类型是否为预设场景类型。
在第1轮判断流程中,帧率调节器识别到当前场景为DC游戏场景,然后从帧率缓存队列获取到游戏APP在当前时刻的实际帧率(97fps),从缓存文件获取到游戏APP对应的目标帧率(60fps)。在确定实际帧率(97fps)与目标帧率(60fps)的差值的绝对值大于第一阈值(3fps)后,帧率调节器可以判断标记位是否为1。在第1轮判断流程中标记位默认为0,可以执行CPU调整策略的运算逻辑:实际帧率(97fps)与目标帧率(60fps)的差值的绝对值大于第二阈值(20fps),帧率调节器将CPU策略号从3调整为2,并在等待2秒后开始第2轮判断流程。
在第2轮判断流程中,帧率调节器识别到当前场景为DC游戏场景,然后从帧率缓存队列获取到游戏APP在当前时刻的实际帧率(64fps),从缓存文件获取到游戏APP对应的目标帧率(60fps)。在确定实际帧率(64fps)与目标帧率(60fps)的差值的绝对值大于第一阈值(3fps)后,帧率调节器可以判断标记位是否为1。在第2轮判断流程中标记位为0,可以执行CPU调整策略的运算逻辑:实际帧率(64fps)与目标帧率(60fps)的差值的绝对值小于第二阈值(20fps),帧率调节器可以将标记位设置为1,并在等待2秒后开始第3轮判断流程。
在第3轮判断流程中,帧率调节器识别到当前场景为DC游戏场景,然后从帧率缓存队列获取到游戏APP在当前时刻的实际帧率(64fps),从缓存文件获取到游戏APP对应的目标帧率(60fps)。在确定实际帧率(64fps)与目标帧率(60fps)的差值的绝对值大于第一阈值(3fps)后,帧率调节器可以判断标记位是否为1。在第3轮判断流程中标记位为1,可以执行GPU调整策略的运算逻辑:计算目标帧率(60fps)与实际帧率(64fps)的偏差值(-4fps),再将偏差值(-4fps)乘以单位偏差值(5M)计算GPU补偿频率(-20M Hz),然后将GPU频率降低20M Hz,并在等待2秒后开始第4轮判断流程。
在第4轮判断流程中,帧率调节器识别到当前场景为DC游戏场景,然后从帧率缓存队列获取到游戏APP在当前时刻的实际帧率(59fps),从缓存文件获取到游戏APP对应的目标帧率(60fps)。然后可以确定实际帧率(59fps)与目标帧率(60fps)的差值的绝对值小于第一阈值(3fps)。在等待2秒后开始第5轮判断流程。
以此类推,可以将系统帧率调整至目标帧率附近。如果在执行到第N轮判断流程时,用户为PC连接上充电器或者触发PC切换焦点窗口时,PC将退出DC游戏场景,帧率调节器可以确定当前场景不是预设场景,帧率调节器可以将标记位设置为0。应理解,通过将标记位设置为0,可以在PC再次进入DC游戏场景时,优先采用CPU调整策略进行粗调,从而将系统帧率快速地收敛到目标帧率。
示例2
与示例1先执行CPU调整策略再执行GPU调整策略不同,示例2是以实际仅执行GPU调整策略为例进行说明的。
如图13所示,在当用户将从PC上拔掉充电器,或者触发PC切换为游戏APP的焦点窗口时,触发帧率调节器判断当前的场景类型是否为预设场景类型。
在第1轮判断流程中,帧率调节器识别到当前场景为DC游戏场景,然后从帧率缓存队列获取到游戏APP在当前时刻的实际帧率(78fps),从缓存文件获取到游戏APP对应的目标帧率(60fps)。在确定实际帧率(78fps)与目标帧率(60fps)的差值的绝对值大于第一阈值(3fps)后,帧率调节器可以判断标记位是否为1。在第1轮判断流程中标记位默认为0,可以执行CPU调整策略的运算逻辑:实际帧率(78fps)与目标帧率(60fps)的差值的绝对值小于第二阈值(20fps),帧率调节器将标记位设置为1,并在等待2秒后开始第2轮判断流程。
在第2轮判断流程中,帧率调节器识别到当前场景为DC游戏场景,然后从帧率缓存队列获取到游戏APP在当前时刻的实际帧率(78fps),从缓存文件获取到游戏APP对应的目标帧率(60fps)。在确定实际帧率(78fps)与目标帧率(60fps)的差值的绝对值大于第一阈值(3fps)后,帧率调节器可以判断标记位是否为1。在第2轮判断流程中标记位为1,可以执行GPU调整策略的运算逻辑:计算目标帧率(60fps)与实际帧率(78fps)的偏差值(-18fps),再将偏差值(-18fps)乘以单位偏差值(5M)计算GPU补偿频率(-90M Hz),然后将GPU频率降低90M Hz,并在等待2秒后开始第3轮判断流程。
以此类推,可以将系统帧率调整至目标帧率附近。
示例3
与示例1先执行CPU调整策略再执行GPU调整策略不同,示例3是以仅实际执行CPU调整策略为例进行说明的。
如图14所示,在当用户将从PC上拔掉充电器,或者触发PC切换为游戏APP的焦点窗口时,触发帧率调节器判断当前的场景类型是否为预设场景类型。
在第1轮判断流程中,帧率调节器识别到当前场景为DC游戏场景,然后从帧率缓存队列获取到游戏APP在当前时刻的实际帧率(81fps),从缓存文件获取到游戏APP对应的目标帧率(60fps)。在确定实际帧率(81fps)与目标帧率(60fps)的差值的绝对值大于第一阈值(21fps)后,帧率调节器可以判断标记位是否为1。在第1轮判断流程中标记位默认为0,可以执行CPU调整策略的运算逻辑:实际帧率(81fps)与目标帧率(60fps)的差值的绝对值大于第二阈值(20fps),帧率调节器将CPU策略号从2调整为1,并在等待2秒后开始第2轮判断流程。
在第2轮判断流程中,帧率调节器识别到当前场景为DC游戏场景,然后从帧率缓存队列获取到游戏APP在当前时刻的实际帧率(62fps),从缓存文件获取到游戏APP对应的目标帧率(60fps)。然后确定实际帧率(62fps)与目标帧率(60fps)的差值的绝对值小于第一阈值(3fps)。在等待2秒后开始第3轮判断流程。
以此类推,可以将系统帧率调整至目标帧率附近。
下面以帧率调整周期为2秒,结合图15和图16,提供两种按照本申请实施例的方法帧率调整后Vsync信号的示意图。
如图15所示,假设TE信号的信号周期为t1(如16.67ms),Vsync信号的信号周期为t1的一半(0.5*t1=8.33ms)。
在时刻16.67ms之前,GPU驱动接收并驱动GPU完成了A1帧的渲染任务,将A1帧送入帧缓存队列。在时刻16.67ms,GPU驱动接收到来自显示器的TE信号,并将帧缓存队列的A1帧发送至显示器,从而显示器刷屏显示A1帧。另外,在完成了A1帧的渲染任务后,GPU驱动向游戏APP发送Vsync信号,此时Vsync信号的周期为0.5t1。
在时刻16.67ms至时刻28ms之间,GPU驱动接收并驱动GPU完成了A2帧的渲染任务,将A2帧送入帧缓存队列。在这个时间段,如果帧率调节器检测到实际帧率过高,可以按照上述实施例提供的帧率调整方法,执行CPU调整策略或GPU调整策略,调整CPU和GPU的性能参数。在调整CPU和GPU的性能参数以后,GPU系统频率降低,GPU驱动向游戏APP发送Vsync的间隔变长,比如,Vsync的信号周期由原来的0.5t1调整为0.75t1。
在时刻33.33ms,GPU驱动又接收到来自显示器的下一个TE信号,并将帧缓存队列的A2帧发送至显示器,从而显示器刷屏显示A2帧。另外,在完成了A2帧的渲染任务后,GPU驱动向游戏APP发送Vsync信号,此时Vsync信号的周期为0.75t1。
应理解,当Vsync信号的周期从0.5t1延长为0.75t1时,游戏APP向GPU驱动下发的任务量减少。但是,系统帧率仍大于屏幕刷新率,因此在达到下一个帧率调整周期前帧缓存队列会累积一定数量的待显示帧。
图16示出了当到达如图15所示的帧率调整周期下一个帧率调整周期时,Vsync信号的示意图。如图16所示,在时刻2016.67ms,GPU驱动接收到来自显示器的TE信号,并将帧缓存队列的A120帧发送至显示器,从而显示器刷屏显示A120帧。
在时刻2016.67ms至时刻2028ms之间,GPU驱动接收并驱动GPU完成了A161帧的渲染任务,将A161帧送入帧缓存队列。在这个时间段,如果帧率调节器检测到实际帧率过高,可以按照上述实施例提供的帧率调整方法,继续执行CPU调整策略或GPU调整策略,再次调整CPU和GPU的性能参数。在调整CPU和GPU的性能参数以后,GPU系统频率降低,GPU驱动向游戏APP发送Vsync的间隔变长,比如,Vsync的信号周期由原来的0.75t1调整为t1。
在时刻2033.33ms,GPU驱动接收到来自显示器的下一个TE信号,并将帧缓存队列的A121帧发送至显示器,从而显示器刷屏显示A121帧。另外,在完成了A121帧的渲染任务后,GPU驱动向游戏APP发送Vsync信号,此时Vsync信号的周期为t1。
应理解,当Vsync信号的周期从0.75t1延长为t1时,游戏APP向GPU驱动下发的任务量进一步减少。由于系统帧率与屏幕刷新率相同,因此帧缓存队列中的待显示帧数量保持平衡,不再继续增加。
本申请实施例还提供了一种终端设备,包括处理器,处理器与存储器耦合,处理器用于执行存储器中存储的计算机程序或指令,以使得终端设备实现上述各实施例中的方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令;当该计算机可读存储介质在设置本机号码功能的装置上运行时,使得该设置本机号码功能的装置执行如上所示的方法。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘或磁带),光介质或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述各实施例中的方法。
本申请实施例还提供了一种芯片,该芯片与存储器耦合,该芯片用于读取并执行存储器中存储的计算机程序或指令,以执行上述各实施例中的方法。该芯片可以为通用处理器,也可以为专用处理器。需要说明的是,该芯片可以使用下述电路或者器件来实现:一个或多个现场可编程门阵列(field programmable gate array,FPGA)、可编程逻辑器件(programmable logic device,PLD)、控制器、状态机、门逻辑、分立硬件部件、任何其他适合的电路、或者能够执行本申请通篇所描述的各种功能的电路的任意组合。
上述本申请实施例提供的终端设备、计算机可读存储介质、计算机程序产品以及芯片均用于执行上文所提供的方法,因此,其所能达到的有益效果可参考上文所提供的方法对应的有益效果,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (15)

1.一种帧率调整方法,其特征在于,应用于终端设备,所述终端设备包括用于控制帧显示的CPU和GPU,所述方法包括:
确定当前场景为预设场景,所述预设场景是指采用直流供电方式且焦点窗口为目标应用;
采集所述目标应用的实际帧率;
获取与所述目标应用对应的目标帧率,所述目标帧率大于或等于屏幕刷新率,且所述目标帧率与所述屏幕刷新率的差值小于或等于预设值;
在第一绝对值大于或等于第一阈值,且标记位为第一标识的情况下,调整GPU性能参数;
在第一绝对值大于或等于第一阈值,且标记位为第二标识的情况下,调整CPU性能参数;
其中,所述第一绝对值大于第二绝对值,所述第一绝对值为在调整性能参数前所述实际帧率与所述目标帧率的差值的绝对值,所述第二绝对值为在调整性能参数后重新采集的帧率与所述目标帧率的差值的绝对值。
2.根据权利要求1所述的方法,其特征在于,所述在第一绝对值大于或等于第一阈值,且标记位为第二标识的情况下,调整CPU性能参数,包括:
在所述第一绝对值大于或等于所述第一阈值,且所述标记位为所述第二标识的情况下,判断所述第一绝对值是否小于第二阈值,所述第二阈值大于所述第一阈值;
在所述第一绝对值大于或等于所述第二阈值的情况下,调整CPU策略号,并将所述CPU性能参数更改为与调整后的CPU策略号对应的性能参数;其中,所述与调整后的CPU策略号对应的性能参数包括以下至少一项:能效比、CPU最小频率和CPU最大频率。
3.根据权利要求2所述的方法,其特征在于,所述实际帧率大于所述目标帧率;
所述在所述第一绝对值大于或等于所述第二阈值的情况下,调整CPU策略号,并将所述CPU性能参数更改为与调整后的CPU策略号对应的性能参数,包括:
将第一CPU策略号减1,得到第二CPU策略号;
将所述CPU性能参数更改为与所述第二CPU策略号对应的性能参数;
其中,所述第二CPU策略号对应的能效比,大于所述第一CPU策略号对应的能效比;
所述第二CPU策略号对应的CPU最小频率,小于所述第一CPU策略号对应的CPU最小频率;
所述第二CPU策略号对应的CPU最大频率,小于或等于所述第一CPU策略号对应的CPU最大频率。
4.根据权利要求2所述的方法,其特征在于,所述实际帧率小于所述目标帧率;
所述在所述第一绝对值大于或等于所述第二阈值的情况下,调整CPU策略号,并将所述CPU性能参数更改为与调整后的CPU策略号对应的性能参数,包括:
将第一CPU策略号加1,得到第三CPU策略号;
将所述CPU性能参数更改为与所述第三CPU策略号对应的性能参数;
其中,所述第三CPU策略号对应的能效比,小于所述第一CPU策略号对应的能效比;
所述第三CPU策略号对应的CPU最小频率,大于所述第一CPU策略号对应的CPU最小频率;
所述第三CPU策略号对应的CPU最大频率,大于或等于所述第一CPU策略号对应的CPU最大频率。
5.根据权利要求2所述的方法,其特征在于,所述调整CPU策略号之后,所述方法还包括:
在调整后的CPU策略号小于或等于最小策略号,或者,调整后的CPU策略号大于或等于最大策略号的情况下,将所述标记位设置为所述第一标识,并继续识别当前场景是否为预设场景。
6.根据权利要求2所述的方法,其特征在于,随着CPU策略号的递增,能效比单调递减,CPU最小频率单调递增,CPU最大频率保持不变。
7.根据权利要求2所述的方法,其特征在于,所述判断所述第一绝对值是否小于第二阈值之后,所述方法还包括:
在所述第一绝对值小于所述第二阈值的情况下,将所述标记位设置为所述第一标识,并继续识别当前场景是否为预设场景。
8.根据权利要求1所述的方法,其特征在于,所述在第一绝对值大于或等于第一阈值,且标记位为第一标识的情况下,调整GPU性能参数,包括:
在所述第一绝对值大于或等于所述第一阈值,且所述标记位为所述第一标识的情况下,确定所述目标帧率与所述实际帧率的偏差值;
将所述偏差值与单位偏差值的乘积,确定为GPU补偿频率;
按照所述GPU补偿频率,调整GPU频率。
9.根据权利要求8所述的方法,其特征在于,调整后的GPU频率等于调整前的GPU频率与所述GPU补偿频率之和。
10.根据权利要求8所述的方法,其特征在于,所述按照所述GPU补偿频率,调整GPU频率之前,所述方法还包括:
确定所述GPU补偿频率的绝对值大于或等于GPU最小偏移频率,且所述GPU补偿频率的绝对值小于或等于GPU最大偏移频率。
11.根据权利要求1至10中任一项所述的方法,其特征在于,所述方法还包括:
在确定当前场景为非预设场景的情况下,将所述标记位设置为所述第二标识,并继续识别当前场景是否为所述预设场景。
12.根据权利要求1至10中任一项所述的方法,其特征在于,所述方法还包括:
在所述第一绝对值小于所述第一阈值的情况下,继续识别当前场景是否为所述预设场景。
13.根据权利要求1至10中任一项所述的方法,其特征在于,所述方法还包括:
在满足预设条件的情况下,触发识别当前场景是否为所述预设场景;
其中,所述预设条件包括下述任一项:
检测到所述CPU性能参数的波动值大于或等于第一性能参数;
检测到所述GPU性能参数的波动值大于或等于第二性能参数;
检测到供电方式发生变化;
检测到焦点窗口发生切换;
检测到磁盘参数大于或等于预设磁盘参数;
磁盘参数的变化量大于或等于预设变化量。
14.一种终端设备,其特征在于,包括处理器,以及与所述处理器耦合的存储器;其中,所述存储器中存储有指令,所述处理器执行所述指令时,使得所述终端设备执行如权利要求1至13中任一项所述的帧率调整方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序在终端设备上运行时,使得所述终端设备执行如权利要求1至13中任一项所述的帧率调整方法。
CN202310402790.5A 2023-04-06 2023-04-06 帧率调整方法、设备及存储介质 Active CN117130459B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310402790.5A CN117130459B (zh) 2023-04-06 2023-04-06 帧率调整方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310402790.5A CN117130459B (zh) 2023-04-06 2023-04-06 帧率调整方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN117130459A CN117130459A (zh) 2023-11-28
CN117130459B true CN117130459B (zh) 2024-05-24

Family

ID=88858940

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310402790.5A Active CN117130459B (zh) 2023-04-06 2023-04-06 帧率调整方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117130459B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112789651A (zh) * 2019-03-27 2021-05-11 华为技术有限公司 一种应用于终端的频率调整方法、装置及电子设备
CN112870726A (zh) * 2021-03-15 2021-06-01 腾讯科技(深圳)有限公司 图形处理器的资源分配方法、装置和存储介质
CN113630572A (zh) * 2021-07-09 2021-11-09 荣耀终端有限公司 帧率切换方法和相关装置
CN114443269A (zh) * 2021-08-27 2022-05-06 荣耀终端有限公司 帧率调节方法和相关装置
CN114461051A (zh) * 2021-12-29 2022-05-10 荣耀终端有限公司 帧率切换方法、装置及存储介质
CN115016869A (zh) * 2021-10-22 2022-09-06 荣耀终端有限公司 帧率调整方法、终端设备及帧率调整系统
CN115103210A (zh) * 2022-07-12 2022-09-23 北京字跳网络技术有限公司 信息处理方法、装置、终端和存储介质
WO2022247446A1 (zh) * 2021-05-28 2022-12-01 华为技术有限公司 一种性能优化方法以及相关设备
CN115695699A (zh) * 2021-07-28 2023-02-03 北京小米移动软件有限公司 显示帧率调整方法及装置、终端及存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112789651A (zh) * 2019-03-27 2021-05-11 华为技术有限公司 一种应用于终端的频率调整方法、装置及电子设备
CN112870726A (zh) * 2021-03-15 2021-06-01 腾讯科技(深圳)有限公司 图形处理器的资源分配方法、装置和存储介质
WO2022247446A1 (zh) * 2021-05-28 2022-12-01 华为技术有限公司 一种性能优化方法以及相关设备
CN113630572A (zh) * 2021-07-09 2021-11-09 荣耀终端有限公司 帧率切换方法和相关装置
CN115695699A (zh) * 2021-07-28 2023-02-03 北京小米移动软件有限公司 显示帧率调整方法及装置、终端及存储介质
CN114443269A (zh) * 2021-08-27 2022-05-06 荣耀终端有限公司 帧率调节方法和相关装置
CN115016869A (zh) * 2021-10-22 2022-09-06 荣耀终端有限公司 帧率调整方法、终端设备及帧率调整系统
CN114461051A (zh) * 2021-12-29 2022-05-10 荣耀终端有限公司 帧率切换方法、装置及存储介质
CN115103210A (zh) * 2022-07-12 2022-09-23 北京字跳网络技术有限公司 信息处理方法、装置、终端和存储介质

Also Published As

Publication number Publication date
CN117130459A (zh) 2023-11-28

Similar Documents

Publication Publication Date Title
CN112717370B (zh) 一种控制方法和电子设备
TWI578153B (zh) 適應性圖形次級系統電源及效能管理
CN115631258B (zh) 一种图像处理方法及电子设备
CN116501210B (zh) 一种显示方法、电子设备及存储介质
CN114338952B (zh) 一种基于垂直同步信号的图像处理方法及电子设备
CN114579075B (zh) 数据处理方法和相关装置
CN116055786B (zh) 一种显示多个窗口的方法及电子设备
CN115292052B (zh) 内存回收方法、电子设备及计算机可读存储介质
CN111949564A (zh) 一种内存交换方法及显示设备
CN113986002B (zh) 帧处理方法、装置及存储介质
CN114531519B (zh) 一种基于垂直同步信号的控制方法及电子设备
CN116028205B (zh) 资源调度方法和电子设备
KR102257737B1 (ko) 전자장치의 처리량 제어장치 및 방법
CN111555825A (zh) 射频资源分配方法及装置
CN116028210B (zh) 资源调度方法、电子设备及存储介质
CN116680153B (zh) 应用帧率平滑方法、电子设备及存储介质
CN117130773B (zh) 资源分配方法、装置和设备
CN115237583A (zh) 计算资源调度方法及装置
CN117130459B (zh) 帧率调整方法、设备及存储介质
CN109474833A (zh) 一种网络直播的方法、相关装置和系统
CN115083400A (zh) 语音助手唤醒方法及装置
CN114827696A (zh) 一种跨设备的音视频数据同步播放的方法和电子设备
CN116684521B (zh) 音频处理方法、设备及存储介质
CN116055443B (zh) 识别社交场景的方法、电子设备及计算机可读存储介质
WO2023124225A1 (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