Automatic frame pacing based on gameplay state
By dynamically adjusting the target frame rate and processor speeds based on the gameplay state, the computing device optimizes gaming performance, conserves power, and manages heat effectively.
Patent Information
- Application Number
- JP2022506518
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-09-23
- Publication Date
- 2025-04-28
- Estimated Expiration
- 2041-09-23
AI Technical Summary
Gaming applications on computing devices face challenges in maintaining high frame rates without overheating or draining battery power, especially when transitioning between gaming and non-gaming states.
The computing device determines the gameplay state of a gaming application and adjusts the target frame rate accordingly. When in a gaming state, the device sets a high target frame rate and operates processors at high clock speeds. When transitioning to a non-gaming state, the device reduces the target frame rate and lowers processor clock speeds to conserve battery life and reduce heat generation.
This approach allows for adaptive management of frame rates and processor speeds, enhancing gaming performance while reducing power consumption and heat generation, thereby extending battery life and maintaining thermal stability.
Smart Images

Figure 0007669348000001 
Figure 0007669348000002 
Figure 0007669348000003
Abstract
Description
[Background technology]
[0001] The frame rate at which a gaming application outputs image data may affect the perceived smoothness of the image data output by the gaming application, allowing a user playing a game with the gaming application to take action more quickly to provide user input during gameplay. As such, a particular gaming application may attempt to output image data at as fast a frame rate as possible that can be rendered and output by the computing device while executing on the computing device. To enable the gaming application to output image data at such a fast frame rate, one or more processors of the computing device may operate at a sustained high operating clock speed while executing the gaming application. Such sustained operation of the one or more processors at a high operating clock speed may increase the heat dissipated by the one or more processors, thereby increasing the temperature within the physical enclosure of the computing device. The increased heat dissipation by the one or more processors may eventually cause the computing device to exceed its thermal requirements, thereby causing the one or more processors to reduce their operating clock speed and reduce the frame rate at which the gaming application can output image data. Also, sustained operation of the one or more processors at a high operating clock speed may cause the battery power of the computing device to be depleted more quickly. Summary of the Invention
[0002] In general, the techniques of this disclosure relate to determining a gameplay state of a game application executing on a computing device and adjusting a target frame rate of image data output by the game application based on the gameplay state. The computing device may determine the gameplay state of the game application without receiving an explicit indication of the gameplay state of the game application. Instead, the computing device may determine the gameplay state of the game application based on one or more characteristics associated with the running game application.
[0003] The computing device adjusts a target frame rate of image data output by the game application based on a gameplay state of the game application. Specifically, when the game application is in a game state, the computing device may set a target frame rate of image data being output by the game application to a relatively fast frame rate, and one or more processors of the computing device may operate at a sustained high operating clock speed during execution of the game application. When the game application transitions from a game state to a non-game state, the computing device may reduce the target frame rate of image data output by the game application, and one or more processors of the computing device may operate at a relatively slower operating clock speed, thereby reducing battery drain and reducing the amount of heat dissipated by one or more processors of the computing device during execution of the game application.
[0004] In one example, the disclosure describes a method comprising one or more processors of a computing device determining one or more characteristics of a game application executing on the one or more processors, the one or more processors determining a gameplay state of the game application executing on the one or more processors based at least in part on the one or more characteristics, the one or more processors adjusting a target frame rate of image data output by the game application for display on a display device based at least in part on the state of the game application, and the one or more processors outputting image data for display on the display device based at least in part on the adjusted target frame rate.
[0005] In another example, the disclosure describes a computing device comprising a memory and one or more processors operably coupled to the memory, the one or more processors configured to determine one or more characteristics of a gaming application executed on the one or more processors, determine a gameplay state of the gaming application executed on the one or more processors based at least in part on the one or more characteristics, adjust a target frame rate of image data output by the gaming application for display on a display device based at least in part on the state of the game application, and output the image data for display on the display device based at least in part on the adjusted target frame rate.
[0006] In another example, the disclosure describes a computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of a computing device to determine one or more characteristics of a game application executing on the one or more processors; determine a gameplay state of the game application executing on the one or more processors based at least in part on the one or more characteristics; adjust a target frame rate of image data output by the game application for display on a display device based at least in part on the state of the game application; and output image data for display on the display device based at least in part on the adjusted target frame rate.
[0007] One or more examples are described in detail in the accompanying drawings and the following description. Other features, objects, and advantages of the disclosure will become apparent from the description and drawings, and from the claims. [Brief description of the drawings]
[0008] [Figure 1] FIG. 1 is a conceptual diagram illustrating an example of a computing device configured to determine a gameplay state of a gaming application and adjust a target frame rate of the gaming application based on the gameplay state, in accordance with one or more aspects of the present disclosure. [Diagram 2] FIG. 1 is a block diagram illustrating an example of a computing device in accordance with one or more aspects of the present disclosure. [Diagram 3] FIG. 1 is a block diagram illustrating an example of a computing device that outputs graphical content for display on a remote device, in accordance with one or more techniques of the present disclosure. [Figure 4]1 is a flowchart illustrating an example of an operational mode of a computing device that determines a gameplay state of a game application and adjusts a target frame rate of the game application based on the gameplay state, in accordance with one or more techniques of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0009] In general, the techniques of this disclosure relate to determining a gameplay state of a game application executed on a computing device and adjusting a target frame rate of image data output by the game application based on the gameplay state. The computing device may determine the gameplay state of the game application without receiving an explicit indication of the gameplay state of the game application. Instead, the computing device may determine the gameplay state of the game application based on one or more characteristics associated with the running game application.
[0010] A game application may transition between a game state and a non-game state during execution. A game application may be in a game state when it is providing an interactive gameplay environment for active gameplay by a user of a computing device. Conversely, a game application may be in a non-game state when it is not providing such an interactive gameplay environment, such as when it is outputting a menu screen, a loading screen, a lobby screen, etc.
[0011] When the game application is in a game state, the frame rate of image data that the game application outputs may affect the gameplay experience of a user of the computing device, such as the perceived smoothness of the game application's graphics, the amount of graphics artifacts in the image data that the game application outputs, and the amount of input lag experienced by the user. Thus, while the game application is in a game state, the game application may always attempt to output image data at as fast a frame rate as the computing device is capable of rendering and outputting.
[0012] When a game application is in a non-gaming state, such as when the game application is outputting menus and / or loading screens, the frame rate of image data output by the game application may have little impact on the user experience of a user interacting with the menus and / or loading screens. As such, if the game application continued to output image data at the fastest possible frame rate while in a non-gaming state, the processing resources required to maintain such a fast frame rate, such as the game application's processor or processors running at a fast clock rate, may cause excessive battery drain and may not allow the computing device to reduce the amount of heat generated by the processor or processors.
[0013] According to aspects of the present disclosure, a computing device may determine a gameplay state of a game application during execution and, in response to determining the gameplay state of the game application, adjust a target frame rate of the game application based on the gameplay state of the game application. The computing device may determine the gameplay state of a game application without receiving an explicit indication of the gameplay state of the application from the game application. Instead, the computing device may determine the gameplay state of a game application based on one or more characteristics associated with the running game application, such as a pattern of user input received during execution of the game application, a usage pattern of one or more processors of the computing device, graphics commands issued by the game application during execution, and image data being output by the running game application.
[0014] When the computing device determines that the gaming application is in a gaming state, the computing device may set the target frame rate to a relatively fast target frame rate to enable the gaming application to provide a high quality gameplay experience for the user. When the computing device determines that the gaming application is in a non-gaming state, the computing device may set the target frame rate to a relatively low target frame rate to enable the computing device to reduce the amount of heat generated by the one or more processors and reduce battery drain caused by the one or more processors.
[0015] The techniques of the present disclosure provide one or more technical advantages: By determining a gameplay state of a game application, the techniques of the present disclosure may enable a computing device to adaptively reduce a frame rate of image data being output by the game application while the game application is in a non-game state, thereby enabling the computing device to reduce battery drain and reduce the amount of heat dissipated by one or more processors of the computing device while the game application is running, by reducing the operating clock speed of one or more processors of the computing device.
[0016] Reducing battery drain on the computing device may extend the battery life of the computing device if the computing device is a mobile computing device. Additionally, reducing the amount of heat dissipated by one or more processors of the computing device while a gaming application is in a non-gaming state increases the available thermal headroom of the computing device for later increasing the operating clock speed of the one or more processors to support increasing the target frame rate of image data output by the computing device when the computing device transitions to a gaming state.
[0017] 1 is a conceptual diagram illustrating an example of a computing device configured to determine a gameplay state of a gaming application and adjust a target frame rate of the gaming application based on the gameplay state, according to one or more aspects of the present disclosure. In the example of FIG. 1, the computing device 102 may include portable or mobile devices such as, but not limited to, mobile phones (including smartphones), laptop computers, tablet computers, wearable computing devices such as smart watches or computerized eyewear, smart television platforms, cameras, personal digital assistants (PDAs), etc. In some examples, the computing device 102 may include stationary computing devices such as desktop computers, servers, mainframes, etc.
[0018] As shown in FIG. 1, computing device 102 includes user interface component 104 ("UIC 104"), user interface module 106 ("UI module 106"), and game application 112. UI module 106 and game application 112 may perform the operations described herein using software, hardware, firmware, or a combination of both hardware, software, and firmware that resides and executes on computing device 102 or one or more other remote computing devices. In some examples, UI module 106 and game application 112 may be implemented as hardware, software, and / or a combination of hardware and software. Computing device 102 may execute modules 106 and game application 112 on one or more processors 108. Computing device 102 may execute either modules 106 and game application 112 as or within a virtual machine executing on underlying hardware. UI module 106 and game application 112 may be implemented in a variety of ways. For example, either of the modules 106 and / or the gaming application 112 may be implemented as a downloadable or pre-installed application, i.e., an "app." In other examples, either of the modules 106 and the gaming application 112 may be implemented as part of the operating system of the computing device 102. Other examples of computing devices 102 implementing the techniques of this disclosure may include additional components not shown in FIG.
[0019] The one or more processors 108 may implement functions and / or execute instructions within the computing device 102. For example, the one or more processors 108 may receive and execute instructions that provide functionality for the UI module 106 and the game application 112 to perform one or more operations. That is, the UI module 106 and the game application 112 may be operable by the processor 40 to perform various functions described herein. In the example of FIG. 1, the one or more processors include a central processing unit (CPU) 118 and a graphics processing unit (GPU) 120. The GPU 120 may be a processing unit configured to perform graphics-related functions, such as generating and outputting graphics data for presentation on a display, or a processing unit configured to perform non-graphics-related functions that utilize the massive processing parallelism provided by the GPU 120. Examples of the CPU 118 and the GPU 120 include, but are not limited to, a digital signal processor (DSP), a general-purpose microprocessor, an application specific integrated circuit (ASIC), a field programmable logic array (FPGA), or other equivalent integrated or discrete logic circuitry.
[0020] The UIC 104 of the computing device 102 may function as an input device and as an output device for the computing device 102. For example, the UIC 104 may function as an input device using a resistive touchscreen, a surface acoustic wave touchscreen, a capacitive touchscreen, a projected capacitive touchscreen, a pressure-sensitive screen, an acoustic pulse recognition touchscreen, or other presence sensing screen technology. The UIC 104 may function as an output device using any one or more of a liquid crystal display (LCD), a dot matrix display, a light emitting diode (LED) display, a micro LED, an organic light emitting diode (OLED) display, an e-ink, or similar monochrome or color display capable of outputting visual information to a user of the computing device 102. For example, the UIC 104 includes a display 114.
[0021] In some examples, the display 114 may be a presence-sensitive screen that may receive tactile user input from a user of the computing device 102. The UIC 104 may receive tactile user input by detecting one or more taps and / or gestures from the user of the computing device 102 (e.g., a user touching or pointing at one or more locations on the UIC 104 with a finger or a stylus). The presence-sensitive screen of the UIC 104 may present output to the user. The UIC 104 may present the output as a user interface, which may be related to functionality provided by the computing device 102. For example, the UIC 104 may present various functions and applications running on the computing device 102, such as an electronic message application, a messaging application, a map application, etc.
[0022] The UI module 106 may be implemented in a variety of ways. For example, the UI module 106 may be implemented as a downloadable or pre-installed application, or "app." In other examples, the UI module 106 may be implemented as part of a hardware unit of the computing device 102. In other examples, the UI module 106 may be implemented as part of an operating system of the computing device 102. In some examples, some of the functionality of the UI module 106, or other modules described in this disclosure, may be implemented across any combination of applications, hardware units, and operating systems.
[0023] The UI module 106 may interpret input detected at the UIC 104 (e.g., when a user provides one or more gestures at a location on the UIC 104 where user interface 14A or other user interface examples are displayed). The UI module 106 may relay information about the input detected at the UIC 104 to one or more associated platforms, operating systems, applications, and / or services executing on the computing device 102 to cause the computing device 102 to perform functions. The UI module 106 may also receive information and instructions from one or more associated platforms, operating systems, applications, and / or services executing on the computing device 102 (e.g., gaming application 112) to generate a graphical user interface (GUI). Additionally, the UI module 106 may function to intermediate between one or more associated platforms, operating systems, applications, and / or services executing on the computing device 102 and various output devices (e.g., speakers, LED indicators, vibrators, etc.) of the computing device 102 to generate output (e.g., graphical, audible, tactile, etc.) on the computing device 102.
[0024] In the example of FIG. 1, the computing device 102 includes a game application 112 that executes on the one or more processors 108 to perform the functionality of a video game. While shown as operable by the computing device 102, the game application 112 may in some examples be operable by a remote computing device that is communicatively coupled to the computing device 102. In such examples, the game application executing on the remote computing device may cause the remote computing device to transmit content and intent information using any suitable form of data communication (e.g., a wired or wireless network, a near field communication such as Near Field Communication or Bluetooth, etc.). In some examples, the remote computing device may be a computing device separate from the computing device 102.
[0025] In some examples, the gaming application 112 may be an action game that places emphasis on hand-eye coordination and reaction time, such as first-person shooter games, battle royale games, etc. In some examples, the gaming application 112 may be a simulation game, such as a motorsports simulation game, an airplane simulation game, and a trucking simulation game. In other examples, the gaming application 112 may be a role-playing game (e.g., a massively multiplayer role-playing game), a networked multiplayer game, a single player game, etc.
[0026] When the game application 112 executes on the one or more processors 108, the game application 112 may output image data for display on the display 114. The image data may, in some examples, be frames of graphics that the game application 112 outputs for display on the display 114 during execution of the game application 112. For example, the image data may include frames of graphics of an interactive gameplay environment, frames of graphics of a loading screen, frames of graphics of a menu screen, etc.
[0027] Game application 112 may output image data at a specified frame rate, for example, a specified number of frames per second (fps). The frame rate of image data output by game application 112 may be the rate at which game application 112 outputs frames of graphics. Examples of frame rates at which game application 112 outputs image data include 5 fps, 10 fps, 30 fps, 60 fps, 120 fps, and 144 fps.
[0028] The computing device 102 may specify a target frame rate for image data output by the gaming application 112. That is, the computing device 102 may indicate a target frame rate, such as 60 fps, to the gaming application 112, and the gaming application 112 may attempt to output image data at the specified target frame rate for display on the display 114. The computing device 102 may adjust the frame rate of the image data being output by the gaming application 112 by adjusting the target frame rate of the image data being output by the gaming application 112. In response to the target frame rate being adjusted, the gaming application 112 may attempt to output image data at the adjusted target frame rate. For example, the computing device 102 may increase the target frame rate of the image data being output by the gaming application to increase the frame rate at which the gaming application 112 outputs image data, or the computing device 102 may decrease the target frame rate of the image data being output by the gaming application to decrease the frame rate at which the gaming application 112 outputs image data.
[0029] When the game application 112 executes on one or more processors 108, the game application 112 may be in one of a number of states, and the game application 112 may transition between a number of gameplay states during execution on the one or more processors 108. Specifically, the game application 112 may be in one of a game state or a non-game state, and may transition between a game state and a non-game state during execution on the one or more processors 108.
[0030] The gaming application 112 may be in a gaming state when it is providing an interactive gameplay environment for active game play by a user of the computing device 102. That is, when the gaming application 112 is in a gaming state, the gaming application 112 enables a user of the computing device 102 to play a game in the interactive gameplay environment by actively providing user input at the UIC 104, such as by providing user input at the UIC 104 in an attempt to complete a level of the game, achieve a high score, defeat a final boss, defeat an opponent in the game, cooperate with other players to complete an objective (e.g., a quest), simulate operating a motorcycle, etc.
[0031] The game application 112 may be in a non-game state when it is not providing an interactive gameplay environment for active gameplay by a user of the computing device. For example, the game application 112 may be in a non-game state when it is outputting a menu screen of the game application 112, when it is outputting a loading screen such as a loading screen while the next level of the game is loading, when it is outputting a lobby screen or waiting room screen while it is matchmaking players, etc. A menu screen may be a GUI output by the game application 112, such as a GUI for a main menu of the game application 112, and may include one or more UI controls such as buttons and menus, and in some examples, may allow a user to quit a game, resume a currently saved game, start a new game, view high scores for a game, adjust game settings, etc. A loading screen may be a GUI output by the game application 112 while the game application 112 is loading the next level of a game, while the game application is saving the current state of a game, while the game application 112 is loading a menu screen, etc. The lobby screen or waiting room screen may be a GUI output by the gaming application 112 while the gaming application 112 is matchmaking players over a network. In some examples, the gaming application 112 may be in a non-gaming state when the gaming application 112 is outputting other image data in addition to image data of an interactive gameplay environment for active gameplay by a user of the computing device 102.
[0032] The gaming application 112 may not explicitly indicate the current gameplay state of the gaming application 112 to the operating system of the computing device 102. That is, when the gaming application 112 is in a non-gaming state, the gaming application 112 may not explicitly indicate to the operating system of the computing device 102 that the gaming application 112 is in a non-gaming state. Similarly, when the gaming application 112 is in a gaming state, the gaming application 112 may not explicitly indicate to the operating system of the computing device 102 that the gaming application 112 is in a gaming state.
[0033] Thus, according to aspects of the disclosure, a computing device 102 may determine a gameplay state of a game application 112 without receiving an explicit indication of the gameplay state of the game application 112 from the game application 112. Instead, as the game application 112 executes on one or more processors 108, the computing device 102 may determine one or more characteristics associated with the game application 112 and may determine a gameplay state of the game application 112 based at least in part on the one or more characteristics.
[0034] The one or more characteristics associated with a game application 112 executing on one or more processors 108 may include any characteristics and / or behavior of the computing device 102 that are a result of the game application 112 executing on the one or more processors 108, in addition to explicit indications of gameplay states of the game application 112 received from the game application 112. In particular, the one or more characteristics may include characteristics of components of the computing device 102 that are indicative of differences in the behavior of the game application 112 and / or the computing device 102 while the game application 112 is in different gameplay states.
[0035] In some examples, the one or more characteristics may include one or more of a pattern of usage of one or more processors 108 by the running game application 112, graphical rendering commands invoked by the running game application 112, a pattern of inputs received at the UIC 104 during execution of the game application 112, a characteristic of image data output by the running game application 112 for display on the display 114, information generated by profiling the game application 112 during execution of the game application 112, and / or a pattern of network traffic sent and received by the computing device 102 during execution of the game application 112. The computing device 102 may determine a gameplay state of the game application 112 based at least in part on the one or more characteristics associated with the game application 112. As described above, the computing device 102 may determine a gameplay state of the game application 112 without the operating system of the computing device 102 receiving an explicit indication of the gameplay state of the game application 112 from the game application 112.
[0036] In some examples, the computing device 102 may implement and use one or more neural networks trained via machine learning to determine a gameplay state of the game application 112 based on one or more characteristics associated with the game application 112. In general, the one or more neural networks implemented by the computing device 102 may include multiple interconnected nodes, where each node may apply one or more functions to a set of input values corresponding to the one or more characteristics and provide one or more corresponding output values. The one or more characteristics may be one or more characteristics associated with the game application 112, and the one or more corresponding output values of the one or more neural networks may be indicative of a gameplay state of the game application 112.
[0037] The one or more corresponding output values may, in some examples, include a probability of a gameplay state of the game application 112. Thus, the computing device 102 may use one or more neural networks to determine the probability that the game application 112 is in each of a plurality of gameplay states. Thus, the computing device 102 may determine the gameplay state of the game application 112 that has the highest probability of being the gameplay state of the game application 112.
[0038] In some examples, the one or more corresponding output values may include a confidence score associated with each of the gameplay states of the game application 112. Thus, the computing device 102 may use one or more neural networks to determine a respective confidence score that the game application 112 is in each of the multiple gameplay states based on one or more characteristics. As such, the computing device 102 may determine the gameplay state in which the game application 112 has the highest score that is a game state of the game application 112.
[0039] The computing device 102 may adjust a target frame rate of image data being output by the game application 112 for display on the display 114 based at least in part on the determined gameplay state of the game application 112. The computing device 102 may associate different target frame rates with different gameplay states of the game application 112. That is, the computing device may associate a non-game target frame rate with a non-game state of the game application 112 and a game target frame rate with a game state of the game application 112. In general, the game target frame rate may be greater than the non-game target frame rate because a lower target frame rate in the non-game state may not adversely affect the user experience of interacting with the game application 112 in the non-game state as compared to the user experience of interacting with the game application 112 in the game state.
[0040] The computing device 102 may adjust the frame rate of image data being output by the game application 112 for display on the display 114 based at least in part on the determined gameplay state of the game application 112 so that the frame rate of the image data being output by the game application 112 for display on the display 114 matches a target frame rate associated with the determined gameplay state of the game application 112. If the frame rate of the image data being output by the game application 112 is below the target frame rate, the computing device 102 may enable the game application 112 to increase the frame rate of the image data being output by the game application 112 to match the target frame rate. If the frame rate of the image data being output by the game application 112 is above the target frame rate, the computing device 102 may enable the game application 112 to decrease the frame rate of the image data being output by the game application 112 to match the target frame rate.
[0041] If the computing device 102 determines that the game application 112 is in a game state, the computing device 102 may adjust the frame rate of image data being output by the game application 112 to match a game target frame rate associated with the game state of the game application 112. Similarly, if the computing device 102 determines that the game application 112 is in a non-game state, the computing device 102 may adjust the frame rate of image data being output by the game application 112 to match a non-game target frame rate associated with the non-game state of the game application 112.
[0042] To adjust the frame rate of image data being output by the game application 112, the computing device 102 may send an indication of the target frame rate to the game application 112 so that the game application 112 can increase or decrease the frame rate of image data being output by the game application 112 to match the target frame rate. The computing device 102 may also adjust the clock speed of each of the CPU 118 and / or GPU 120 to allow the game application 112 to adjust the frame rate of image data being output by the game application 112 to match the target frame rate. For example, to increase the frame rate of image data being output by the game application 112 to match the target frame rate, the computing device 102 may increase the clock speed of each of the CPU 118 and / or GPU 120. Similarly, to decrease the frame rate of image data being output by the game application 112 to match the target frame rate, the computing device 102 may decrease the clock speed of each of the CPU 118 and / or GPU 120.
[0043] In some examples, computing device 102 may also adjust the panel refresh rate of display 114 to adjust the frame rate of image data being output by gaming application 112. For example, to adjust the frame rate of image data being output by gaming application 112 to match a target frame rate, computing device 102 may set the panel refresh rate of display 114 to match the target frame rate.
[0044] The computing device 102 may periodically determine one or more characteristics associated with the game application 112 while the game application 112 executes on the one or more processors 108, and adjust the frame rate of image data being output by the game application 112 based on the one or more characteristics. The computing device 102 may not necessarily perform such determination and adjustment at the same rate as the frame rate of image data being output by the game application 112. Instead, the computing device 102 may perform such determination of the gameplay state of the game application 112 and adjustment of the target frame rate of the game application 112 multiple times per second, such as 10 times per second, 15 times per second, and 20 times per second.
[0045] 1, game application 112 may be in a non-game state when game application 112 is outputting menu screen GUI 122A. Computing device 102 may determine one or more characteristics associated with game application 112 executing on one or more processors 108 and outputting menu screen GUI 122A, and may determine that game application 112 is in a non-game state based on the one or more characteristics associated with game application 112 executing on one or more processors 108. Thus, computing device 102 may adjust the target frame rate of image data being output by game application 112 based on the gameplay state that game application 112 is in a non-game state, such as by setting the target frame rate to a relatively low frame rate, such as 5 fps.
[0046] The game application 112 may transition from a non-game state to a non-game state by executing on one or more processors 108 to output a GUI 122B of an interactive gameplay environment for active gameplay by a user of the computing device 102. Once the game application 112 is executing on one or more processors 108 to output the GUI 122B, the computing device 102 may determine one or more characteristics associated with the game application 112 executing on the one or more processors 108 and determine that the game application 112 has transitioned from a non-game state to a game state based on the one or more characteristics associated with the game application 112 executing on the one or more processors 108. Accordingly, the computing device 102 may adjust the target frame rate of image data being output by the game application 112 based on the gameplay state of the game application 112 being a game state, such as by increasing the target frame rate from a previously adjusted target frame rate of 5 fps to a relatively faster frame rate, such as 144 fps.
[0047] 2 is a block diagram illustrating an example of a computing device in accordance with one or more aspects of the present disclosure. FIGURE 2 illustrates only one particular example of a computing device 102, and many other examples of computing device 102 may be used in other examples, may include a subset of the components included in the example computing device 102, or may include additional components not illustrated in FIGURE 2.
[0048] As shown in the example of FIG. 2, the computing device 202 includes one or more processors 240, one or more input devices 242, one or more communication units 244, one or more output devices 246, one or more storage devices 248, and one or more sensors 256. The one or more processors 240 may be examples of the one or more processors 108 of FIG. 1. The one or more input devices 242 and the one or more output devices 246 may be examples of the UIC 104 of FIG. 1. The storage device 248 of the computing device 202 also includes a UI module 222, a game application 212, an operating system 226, a game play state module 252, and a frame rate module 254. A communication channel 250 may interconnect (physically, communicatively, and / or operatively) each of the components 240, 242, 244, 246, 248, and 256 for inter-component communication. In some examples, communication channel 250 may include a system bus, a network connection, one or more inter-process communication data structures, or other components for communicating data between hardware and / or software.
[0049] One or more processors 240 may implement functions and / or execute instructions within the computing device 202. For example, the processor 240 on the computing device 102 may receive and execute instructions stored by the storage device 248 that provide the functionality of the UI module 222, the game application 212, the operating system 226, the game play state module 252, and the frame rate module 254. These instructions executed by the processor 240 may cause the computing device 202 to store and / or modify information within the storage device 48 during execution of the programs. The processor 240 may execute instructions of the UI module 222, the game application 212, the operating system 226, the game play state module 252, and the frame rate module 254. That is, the UI module 222, the game application 212, the operating system 226, the game play state module 252, and the frame rate module 254 may be operable by the processor 240 to perform various functions described herein.
[0050] The one or more processors 240 may include a CPU 218 and a GPU 220. The GPU 220 may be a processing unit configured to perform graphics-related functions, such as generating and outputting graphics data for presentation on a display, or may be a processing unit configured to perform non-graphics-related functions that utilize the massive processing parallelism provided by the GPU 220. Examples of the CPU 218 and the GPU 220 include, but are not limited to, a digital signal processor (DSP), a general-purpose microprocessor, an application specific integrated circuit (ASIC), a field programmable logic array (FPGA), or other equivalent integrated or discrete logic circuitry.
[0051] One or more input devices 242 of the computing device 202 may receive input. Examples of input are tactile input, voice input, kinetic input, and optical input, just to name a few. The input devices 242 of the computing device 202, in one example, include a mouse, a keyboard, a voice response system, a video camera, buttons, a control pad, a microphone, or other types of devices for detecting input from a human or machine. In some examples, the input devices 242 may be presence-sensitive input devices and may include a presence-sensitive screen, a touch-sensitive screen, or the like.
[0052] One or more output devices 246 of the computing device 102 may generate output. Examples of output are haptic output, audio output, and video output. The output devices 46 of the computing device 202, in one example, include a presence sensing screen such as the display 214, a sound card, a video graphics adapter card, a speaker, a cathode ray tube (CRT) monitor, a liquid crystal display (LCD), or other type of device for generating output to a human or machine. The output devices 246 may include the display 214, such as a cathode ray tube (CRT) monitor, a liquid crystal display (LCD), a light emitting diode (LED), or other type of device for generating haptic output, audio output, and / or visual output.
[0053] One or more communication units 244 of the computing device 202 may communicate with external devices by transmitting and / or receiving data. For example, the computing device 202 may use the communication unit 244 to transmit and / or receive radio signals over a wireless network, such as a cellular wireless network. In some examples, the communication unit 244 may transmit and / or receive satellite signals over a satellite network, such as a Global Positioning System (GPS) network. Examples of the communication unit 244 include a network interface card (e.g., an Ethernet card, etc.), an optical transceiver, a radio frequency transceiver, a GPS receiver, or other types of devices capable of transmitting and / or receiving information. Other examples of the communication unit 44 may include Bluetooth, GPS, 3G, 4G, and Wi-Fi radios found in mobile devices, as well as a universal serial bus (USB) controller, etc.
[0054] One or more storage devices 248 in computing device 202 may store information for processing during operation of computing device 202. In some examples, storage device 248 is temporary memory, meaning that the primary purpose of storage device 248 is not long-term storage. Storage device 248 on computing device 202 may be configured for short-term storage of information as volatile memory, and thus may not retain stored content upon shutdown. Examples of volatile memory include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), and other forms of volatile memory known in the art.
[0055] The storage device 248 also includes one or more computer readable storage media in some examples. The storage device 248 may be configured to store larger amounts of information than volatile memory. The storage device 248 may further be configured for long-term storage of information as a non-volatile memory space, retaining information after active / off cycles. Examples of non-volatile memory include magnetic hard disks, optical disks, floppy disks, flash memory, or forms of electrically programmable memory (EPROM) or electrically erasable and programmable (EEPROM) memory. The storage device 248 may store program instructions and / or data associated with the UI module 222, which may be an example of the UI module 106 of FIG. 1, the game application 212, which may be an example of the game application 112 of FIG. 1, the operating system 226, the game play state module 252, and the frame rate module 254.
[0056] As shown in FIG. 2, the computing device 102 may include one or more sensors 256. The sensors 256 may include an accelerometer that generates accelerometer data. The accelerometer data may indicate an acceleration and / or a change in acceleration of the computing device 202. The sensors 256 may include a gyroscope that generates gyroscope data. The gyroscope data may indicate a physical orientation and / or a change in physical orientation of the computing device 102. In some examples, the orientation may be relative to one or more reference points. The sensors 256 may include a magnetometer that generates magnetometer data. The magnetometer data may indicate the magnetization of an object touching or in proximity to the computing device 202. The magnetometer data may indicate the Earth's magnetic field and, in some examples, may provide a compass directional function. The sensors 256 may include an ambient light sensor that generates ambient light data. The ambient light data may indicate an intensity of light to which the computing device 202 is exposed. The sensors 256 may include a proximity sensor that generates proximity data. The proximity data may indicate whether an object is in proximity to the computing device 202. In some examples, the proximity data may indicate how close an object is to the computing device 202. In some examples, the sensor 256 may include a clock that generates a date and time. The date and time may be the current date and time.
[0057] As shown in FIG. 2, the computing device 102 may include a power source 257. In some examples, the power source 257 may be a battery. The power source 257 may provide power to one or more components of the computing device 202. Examples of the power source 257 may include, but are not necessarily limited to, batteries having zinc-carbon, lead-acid, nickel-cadmium (NiCd), nickel-metal hydride (NiMH), lithium-ion (Li-ion), and / or lithium-ion polymer (Li-ion polymer) chemistries. In some examples, the power source 257 may have a limited capacity (e.g., 1000-4000 mAh).
[0058] In accordance with the techniques of this disclosure, one or more processors 240 of computing device 202 are configured to execute gameplay state module 252 to determine a gameplay state of game application 212 as game application 212 executes on one or more processors 240. Gameplay state module 252 may be capable of determining a gameplay state of game application 212 without receiving an explicit indication of the gameplay state of game application 212 from game application 212. Instead, gameplay state module 252 may determine a gameplay state of game application 212 as game application 212 executes on one or more processors 240 based on one or more characteristics associated with game application 212 executing on one or more processors 240. One or more processors 240 may periodically execute gameplay state module 252 to determine a current gameplay state of game application 212 as game application 212 executes on one or more processors 240. For example, the one or more processors 240 may execute the game play state module 252 to determine a current game play state of the game application 212, such as 5 times / second and 10 times / second.
[0059] The game application 212 executes on the one or more processors 240 to perform the functions of a video game. In some examples, the game application 212 may be an action game that may emphasize hand-eye coordination and reaction time, such as a first-person shooter game, a battle royale game, etc. In some examples, the game application 212 may be a simulation game, such as a motorsports simulation game, an airplane simulation game, and a trucking simulation game. In other examples, the game application 212 may be a role-playing game (e.g., a massively multiplayer role-playing game), a networked multiplayer game, a single player game, etc.
[0060] When the game application 212 executes on the one or more processors 240, the game application 212 may output image data for display on the display 214. The image data may, in some examples, be frames of graphics that the game application 212 outputs for display on the display 214 during execution of the game application 212. For example, the image data may include frames of graphics of an interactive gameplay environment, frames of graphics of a loading screen, frames of graphics of a menu screen, etc.
[0061] When the game application 212 executes on one or more processors 240, the game application 212 may be in one of a number of states, and the game application 212 may transition between a number of gameplay states during execution on the one or more processors 240. Specifically, the game application 212 may be in one of a game state or a non-game state, and may transition between a game state and a non-game state during execution on the one or more processors 240.
[0062] The gaming application 212 may be in a gaming state when it is providing an interactive gameplay environment for active game play by a user of the computing device 202. That is, when in a gaming state, the gaming application 212 enables a user of the computing device 202 to actively provide user input on one or more input devices 242 to play a game in the interactive gameplay environment by providing user input on one or more input devices 242 in an attempt to complete a level of the game, achieve a high score, defeat a final boss, defeat an opponent in a game, cooperate with other players to complete an objective (e.g., a quest), simulate driving a motorcycle, etc.
[0063] The game application 212 may be in a non-game state when the game application 212 is not providing an interactive gameplay environment for active gameplay by a user of the computing device. For example, the game application 212 may be in a non-game state when the game application 212 is outputting a menu screen of the game application 212 or when the game application 212 is outputting a loading screen, such as a loading screen while the next level of the game is loading. A menu screen may be a GUI output by the game application 212, such as a GUI for a main menu of the game application 212, and may include one or more UI controls, such as buttons and menus, and may, in some examples, allow a user to quit a game, resume a currently saved game, start a new game, view high scores for the game, adjust game settings, etc. A loading screen may be a GUI output by the game application 212 while the game application 212 is loading the next level of the game, while the game application is saving the current state of the game, while the game application 212 is loading a menu screen, etc. In some examples, the game application 212 may be in a non-game state if the game application 212 is outputting other image data in addition to image data of an interactive gameplay environment for active gameplay by a user of the computing device 202.
[0064] The one or more characteristics associated with a game application 212 executing on one or more processors 240 may include characteristics and / or behaviors of components of the computing device 202 that may be indicative of differences in behavior of the game application 212 and / or components of the computing device 202 while the game application 212 is in different gameplay states. In some examples, the one or more characteristics may include a pattern of usage of one or more processors 240 by a running game application 212, such as a pattern of usage of the CPU 218 and GPU 220 by the game application 212. In some examples, the frequency of usage of the CPU 218 and GPU 220 may be relatively high when a game application, such as the game application 212, is in a game state and relatively low when the game application is in a non-game state. In this manner, a pattern of usage of one or more processors 240 by a running game application 212 may be indicative of a gameplay state of the game application 212, and the pattern of usage of one or more processors 240 included as one or more characteristics may also include an amount of usage of the CPU 218 and / or an amount of usage of the GPU 220 while the game application 212 is executing.
[0065] In some examples, the one or more characteristics may include a pattern of one or more graphical rendering commands invoked by a running game application 212. Examples of such graphical rendering commands may include OpenGL commands, DirectX commands, Metal commands, commands sent through a cross-platform graphics engine abstraction layer such as Almost Native Graphics Layer Engine (ANGLE), and the like. In some examples, a game application such as game application 212 may invoke a relatively greater variety of different graphical rendering commands and use a relatively greater number of different shaders while the game application is in a game state as compared to a game application in a non-game state. In some examples, a game application may also invoke a relatively greater amount of three-dimensional graphical rendering commands while in a game state as compared to a game application in a non-game state, and a graphical application may invoke a relatively greater amount of two-dimensional graphical rendering commands while in a non-game state as compared to a game application in a game state. Thus, the pattern of one or more graphical rendering commands invoked by the game application 212 included in the one or more characteristics may include the types of different graphical rendering commands invoked by the game application 212, the types of graphical rendering commands invoked by the game application 112, the number and types of different shaders used during execution of the game application 212, etc.
[0066] In some examples, the one or more characteristics may include a pattern of input received at one or more input devices 242 during execution of the game application 212. Typically, a user using a game application may provide user input more frequently during gameplay (i.e., when the game application is in a game state) as compared to while the game application is displaying a menu or loading screen (i.e., when the game application is in a non-game state). Additionally, if the computing device 202 is a mobile computing device that includes a presence-aware display, a user may provide user input in the form of touch-and-hold gestures (e.g., long press gestures) more frequently while the game application is in a game state as compared to while the game application is in a non-game state.
[0067] In this manner, the computing device 202 may receive user input at one or more input devices 242 more frequently while the game application 212 is in a gaming state compared to the frequency of user input received while the game application 212 is in a non-gaming state during execution of the game application 212. Similarly, the computing device 202 may receive user input in the form of touch-and-hold gestures more frequently while the game application 212 is in a gaming state compared to the frequency of user input in the form of touch-and-hold gestures received by the computing device 202 while the game application 212 is in a non-gaming state during execution of the game application 212. In this manner, the one or more characteristics may include an indication of the frequency of user input received by the computing device 202 while the game application 212 is executing and an indication of the frequency of touch-and-hold gestures received by the computing device 202 while the game application 212 is executing.
[0068] In some examples, the one or more characteristics may include image data output by a running game application 212 for display on a display 214. Image data output by the game application 212 for display on a display 214 that is relatively stable may indicate that the game application 212 is outputting a menu screen and therefore is in a non-gaming state, while image data output by the game application 212 for display on a display 214 that frequently changes from one frame to another may indicate that the game application 212 is in a gaming state.
[0069] Thus, the one or more characteristics may include an indication of the amount of change between frames of image data output by the game application 212. For example, the game play state module 252 may determine a histogram of the image data based on the frames of image data output by the game application 212, such as a histogram that counts the number of times that successive frames of image data output by the game application 212 do not change, and the number of times that successive frames of image data output by the game application 212 are different.
[0070] In some examples, the one or more characteristics may include information generated by profiling the game application 212 while the game application 212 is running. The gameplay state module 252 may profile the game application 212, which may analyze the call stack, GPU counters, of the game application 112. The information generated by profiling the game application 212 may include patterns between reasonably consistent work by the game application 212 (which may indicate that the game application 112 is in a game state) and inconsistent work by the game application 212 (which may indicate that the game application 212 is in a non-game state).
[0071] In some examples, the one or more characteristics may include patterns of network traffic sent and received by the computing device 202 during execution of the game application 212. If the game application is a network-based multiplayer game, the game play state module 252 may analyze the patterns of network traffic and / or inspect network packets sent and received by the computing device 102 to determine whether the game application 212 is in a game state or a non-game state.
[0072] For example, the game play state module 252 may perform stateful packet inspection to determine whether network packets sent and received by the computing device 202 during execution of the game application 212 include matchmaking information, active game play information, and the like. If the game play state module 252 determines that the network packets include matchmaking information, the game play state module 252 may determine that the game application 212 is in a non-game state. If the game play state module 252 determines that the network packets include active game play information, such as the positions of different players in a map of the game, the health levels of different players, and the amount of loot collected by each player, the game play state module 252 may determine that the game application 212 is in a non-game state.
[0073] In some examples, the consistency of network traffic transmitted and received by the computing device 202 during execution of the game application 212 may be indicative of a gameplay state of the game application 212. Specifically, sporadic but consistent network traffic may indicate that the game application 212 enters a game state, while sporadic and / or inconsistent network traffic may indicate that the game application 212 is in a non-game state. As such, the consistency of network traffic transmitted and received by the computing device 202 during execution of the game application 212 may be included in one or more characteristics indicative of whether the game application 212 is in a game state or a non-game state.
[0074] The gameplay state module 252 may execute on the one or more processors 240 to determine a gameplay state of the game application 212 based at least in part on one or more characteristics associated with the game application 212. As described above, the gameplay state module 252 may determine the gameplay state of the game application 212 without receiving an explicit indication of the gameplay state of the game application 212 from the game application 212 or the like.
[0075] In some examples, the gameplay state module 252 may implement and use one or more neural networks trained via machine learning to determine a gameplay state of the game application 212 based on one or more characteristics associated with the game application 212. In general, the one or more neural networks implemented by the gameplay state module 252 may include multiple interconnected nodes, where each node may apply one or more functions to a set of input values corresponding to the one or more characteristics and provide one or more corresponding output values. The one or more characteristics may be one or more characteristics associated with the game application 212, and the one or more corresponding output values of the one or more neural networks may be indicative of the gameplay state of the game application 212.
[0076] In some examples, one or more neural networks of the gameplay state module 252 are trained to determine gameplay states of a game application based on one or more characteristics associated with the game application. The one or more neural networks may perform such machine learning using training data that includes a set of characteristics associated with the gameplay states to learn connections between the characteristics and the gameplay states. In some examples, the one or more networks may be trained off-device (e.g., on an external computing system) and then installed and / or downloaded to the computing device 202. In some examples, the one or more neural networks may be trained on-device at the computing device 202.
[0077] The one or more corresponding output values may, in some examples, include a probability that the game application 212 is in each of a plurality of gameplay states. Thus, the gameplay state module 252 may implement one or more neural networks to determine the probabilities of the gameplay states of the game application 212 based on the one or more characteristics, and may determine and output an indication of the gameplay state of the game application 212 in which the game application 212 is most likely to be in based on the corresponding probabilities.
[0078] In some examples, the one or more corresponding output values of the one or more neural networks may include a respective confidence score for each of the multiple gameplay states. Thus, the gameplay state module 252 may implement one or more neural networks to determine a confidence score for the game application 212 being in a game state and a confidence score for the game application 212 being in a non-game state. Thus, in some examples, the gameplay state module 252 may determine the gameplay state of the game application 212 to be the game state associated with the highest confidence score.
[0079] In some examples, the gameplay state module 252 may use a combination of two or more models to determine a gameplay state of the game application 212 based on one or more characteristics of the game application 212 executing on one or more processors 240. For example, the gameplay state module 252 may use a first model to determine the probability that the game application 212 is in a game state using a single characteristic, such as a pattern of user input received during execution of the game application 212. In some examples, the first model may include one or more neural networks trained via machine learning as described above to take as inputs patterns of user input received during execution of the game application 212 to determine the probability that the game application 212 is in a game state.
[0080] In some examples, the first model may utilize a user input frequency threshold. In these examples, the gameplay state module 252 may compare a frequency of user input received during execution of the game application 212 to the user input frequency threshold to determine whether the game application 212 is likely to be in a gaming state. For example, if the gameplay state module 252 determines that a frequency of user input received during execution of the game application 212 exceeds the input frequency threshold, the gameplay state module 252 may determine that the game application 212 is likely to be in a gaming state.
[0081] If the game play state module 252 determines that the game application 212 is not likely to be in a game state based on the first model, e.g., if the probability that the game application 212 is in a game state as determined using the first model does not exceed a threshold likelihood percentage (e.g., 50%), the game play state module 252 may determine that the game application 212 is in a non-game state. Similarly, if the game play state module 252 determines that the game application is likely to be in a game state based on the first model, e.g., if the probability that the game application 212 is in a game state as determined using the first model exceeds a threshold likelihood percentage (e.g., 50%), the game play state module 252 may output a probability and / or confidence that the game application 212 is in a game state using a second model that takes as input one or more additional characteristics associated with the game application 212. Thus, the game play state module 252 may determine a game play state for the game application 212 based on the output of the second model.
[0082] The one or more processors 240 of the computing device 202 are configured to execute the frame rate module 254 to adjust a target frame rate of image data output by the game application 212 based at least in part on a gameplay state of the game application 212. The target frame rate of the game application 212 may be a frame rate that the game application 212 attempts to match when outputting image data. For example, if the target frame rate of the image data output by the game application 212 is 30 fps, the game application 212 may attempt to output the image data at 30 fps. If the frame rate module 254 adjusts the target frame rate of the image data output by the game application 212 from 30 fps to 45 fps, the game application 212 may attempt to increase the frame rate at which it outputs image data from 30 fps to 45 fps.
[0083] Different gameplay states of the gaming application 212 may be associated with different target frame rates. For example, a game target frame rate associated with a game state of the gaming application 212 may typically be higher than a non-game target frame rate associated with a non-game state of the gaming application 212. Examples of game target frame rates may include 60 fps, 120 fps, and 144 fps, etc., and examples of non-game target frame rates may include 5 fps, 10 fps, 20 fps, and 30 fps, etc. In some examples, the game target frame rate may depend on a panel refresh rate of the display 214. For example, the game target frame rate may not exceed the panel refresh rate of the display 214. Thus, if the panel refresh rate of the display 214 is 144 Hertz, the game target frame rate may not exceed 144 fps.
[0084] In some examples, the frame rate module 254 may adjust the target frame rate of image data output by the game application 212 by setting the target frame rate of image data output by the game application 212 to a target frame rate associated with a gameplay state of the game application 212 determined by the gameplay state module 252. That is, if the gameplay state module 252 determines that the gameplay state of the game application 212 is a game state, the frame rate module 254 may set the target frame rate of image data output by the game application 212 to a game target frame rate associated with the gameplay state of the game application 212. Similarly, if the gameplay state module 252 determines that the gameplay state of the game application 212 is a non-game state, the frame rate module 254 may set the target frame rate of image data output by the game application 212 to a non-game target frame rate associated with the non-game state of the game application 212.
[0085] The target frame rate of image data output by the game application 212 may be specific to the game application 212. That is, the target frame rate of image data output by the game application 212 may be different from the target frame rate of image data output by other applications. Similarly, the game target frame rate and non-game target frame rate of image data output by the game application 212 may be specific to the game application 212, and may be different from the game target frame rate and non-game target frame rate of image data output by other applications.
[0086] In some examples, the target frame rate of image data output by the game application 212 may be specific to the computing device 202 and / or one or more processors 240 on which the game application 212 executes. That is, the game target frame rate and non-game target frame rate of image data output by the game application 212 may be specific to the computing device 202 and / or one or more processors 240 and may differ from the game target frame rate and non-game target frame rate of image data output by the same game application executing on a different computing device. For example, when the game application 212 transitions from a non-game state to a game state, the frame rate module 254 may determine a game target frame rate associated with a gameplay state of the game application 212 specific to the computing device 202 and may set the target frame rate of the image data being output by the game application 212 to the game target frame rate.
[0087] In some examples, the frame rate module 254 may adjust a target frame rate for image data output by the game application 212 by profiling the game application 212 during execution on one or more processors 240. For example, the frame rate module 254 may determine a frame rate at which the game application 212 outputs image data during execution, such as when the game application 212 is in a gaming state, and may determine an associated target frame rate based on the frame rate at which the game application 212 output image data during a previous execution.
[0088] In some examples, the frame rate module 254 may determine a percentage of time that the game application 212 spends in a non-game state and a percentage of time that the game application 212 spends in a game state based on profiling of the game application 212 executing on one or more processors 240. The frame rate module 254 may also determine a frequency that the game application 212 is in a non-game state relative to a frequency that the game application 212 is in a game state (e.g., the percentage of time that the game application 212 is in a non-game state versus a game state) based on profiling of the game application 212.
[0089] Because the non-game target frame rate of the game application 212 may be significantly lower relative to the game target frame rate of the game application 212, while the game application 212 is in the non-game state, the one or more processors 240 may generally operate at a much lower clock speed than when in the game state. In this manner, being in the non-game state allows the computing device 202 to recover from a high internal temperature caused by the one or more processors 240 operating at a higher clock speed during the game state. Thus, the ratio of time the game application 212 is in the non-game state to the time in the game state may correspond to the clock speed at which the one or more processors 240 may operate while the game application 212 is in the game state.
[0090] For example, if the gaming application 212 frequently spends a relatively long time in a non-gaming state relative to a gaming state, the frequent and long time in the non-gaming state may cause the one or more processors 240 to operate at a lower clock speed for a relatively long time to provide a longer recovery period from a high internal temperature caused by the one or more processors 240 operating at a higher clock speed during the gaming state. In this manner, the internal temperature of the enclosure of the computing device 202 may be relatively lower when the gaming application 212 transitions from a non-gaming state to a gaming state, thereby allowing the frame rate module 254 to increase the clock speed of the one or more processors 240 to a relatively higher operating frequency as compared to a gaming application that spends a relatively short and less time in the non-gaming state relative to the gaming state.
[0091] For example, if the frame rate module 254 determines that the game application 212, while in a game state, outputs image data at a particular frame rate without causing the computing device 202 to exceed thermal requirements of the computing device 202 (e.g., the internal temperature within the housing of the computing device 202 is below a specified threshold temperature), the frame rate module 254 may determine a gameplay target frame rate associated with that gameplay state based on the particular frame rate at which the game application 212 output image data in a game state during a previous execution of the game application 212. For example, the frame rate module 254 may set the gameplay target frame rate associated with the game state to the particular frame rate at which the game application 212 output image data in the game state during the previous execution of the game application 212.
[0092] In some examples, the frame rate module 254 may determine a target frame rate for image data output by the game application 212 based at least in part on a fidelity setting associated with the image data output by the game application 212. The fidelity setting associated with the image data may be associated with a level of graphics detail in the image data output by the game application 212, a resolution of the image data output by the game application 212, etc.
[0093] The gaming application 212 may require more processing resources to output image data at a relatively high fidelity setting at a specified frame rate compared to outputting image data at a relatively low fidelity setting at the same frame rate. Due to factors such as the thermal requirements of the computing device 202, the processing power of the one or more processors 240, the amount of power available in the power source 257, etc., the gaming application 212 may sometimes be unable to output the relatively high fidelity image data at the same frame rate as the relatively low fidelity image data. Thus, in some examples, the frame rate module 254 may adjust the target frame rate to a game target frame rate associated with a fidelity setting associated with the gaming application 212 when the gaming application 212 transitions from a non-game state to a game state, and the game target frame rate associated with the relatively high fidelity setting may be a lower frame rate than the game target frame rate associated with the relatively low fidelity setting.
[0094] In response to determining the adjusted target frame rate, the frame rate module 254 may send an indication of the adjusted target frame rate to the game application 212. Thus, the game application 212 may output image data based at least in part on the adjusted target frame rate. In some examples, the game application 212 may output image data based on the adjusted target frame rate by setting a frame rate of image data output by the game application 212 to the target frame rate. That is, the game application 212 may attempt to output image data at a frame rate that matches the adjusted target frame rate, such as by increasing or decreasing the rate at which the game application 212 outputs image data, in order to output image data at a frame rate that matches the adjusted target frame rate.
[0095] In some examples, to enable the game application 212 to output image data at a frame rate that matches the adjusted target frame rate, the frame rate module 254 may adjust the clock speed of each of the CPUs 218 or GPUs 220 of the one or more processors 240 based at least in part on the gameplay state of the game application 212. For example, if the frame rate module 254 adjusts the target frame rate by increasing the target frame rate, the frame rate module 254 may increase the clock speed of each of the CPUs 218 or GPUs 220 of the one or more processors 240. Thus, if the gameplay state module 252 determines that the game application 212 is transitioning from a non-game state to a game state, the frame rate module 254 may increase the target frame rate of image data output by the game application 212 and increase the clock speed of each of the CPUs 218 or GPUs 220 of the one or more processors 240.
[0096] Similarly, if the frame rate module 254 adjusts the target frame rate by lowering the target frame rate, the frame rate module 254 may reduce the clock speed of at least one of the CPUs 218 or GPUs 220 of one or more processors 240. Thus, if the game play state module 252 determines that the game application 212 is transitioning from a gaming state to a non-gaming state, the frame rate module 254 may lower the target frame rate of image data output by the game application 212 and lower the clock speed of at least one of the CPUs 218 or GPUs 220 of one or more processors 240.
[0097] In some examples, in addition to adjusting the clock speed of at least one of the CPUs 218 or GPUs 220 of the one or more processors 240, the frame rate module 254 may also adjust the refresh rate of the display 214 so that the gaming application 212 can output image data based on the adjusted target frame rate. For example, the frame rate module 254 may set the panel refresh rate of the display 214 to the adjusted target frame rate of the image data output by the gaming application 212.
[0098] In some examples, in response to adjusting the target frame rate of image data output by the game application 212, the frame rate module 254 may determine whether the game application 212 is able to output image data at a frame rate that matches the adjusted target frame rate (e.g., whether the frame rate is the same as the adjusted target frame rate). The frame rate module 254 may determine that the game application 212 is unable to output image data at a frame rate that matches the adjusted target frame rate if the maximum frame rate of image data being output by the game application 212 never reaches the target frame rate and / or if the game application 212 is unable to consistently output image data at the target frame rate. For example, the frame rate module 254 may determine that the game application 212 is unable to consistently output image data at the target frame rate if the game application 212 is unable to output image data at the target frame rate for more than a threshold percentage of time, such as more than 5% of the time, more than 10% of the time, etc. If the frame rate module 254 determines that the game application 212 is unable to output image data at a frame rate that matches the adjusted target frame rate, the frame rate module 254 may take one or more actions to better enable the game application 212 to output image data at a frame rate that matches the adjusted target frame rate.
[0099] In some examples, in response to determining that the gaming application 212 is unable to output image data at a frame rate that matches the adjusted target frame rate, the frame rate module 254 may increase the clock speed of at least one of the CPUs 218 or GPUs 220 of one or more processors 240, respectively. For example, if the adjusted target frame rate is 60 fps and the gaming application 212 is only able to output image data at a frame rate of 55 fps, the frame rate module 254 may increase the clock speed of at least one of the CPUs 218 or GPUs 220 of one or more processors 240, respectively, in an attempt to enable the gaming application 212 to output image data at a frame rate that matches the adjusted target frame rate (e.g., 60 fps).
[0100] In some examples, in response to determining that the game application 212 is unable to output image data at a frame rate that matches the adjusted target frame rate of the image data output by the game application 212, the frame rate module 254 may further adjust the target frame rate of the image data output by the game application 212 to a target frame rate at which the game application 212 can output image data without increasing the clock speed of one or more processors 240. That is, in response to increasing the target frame rate of the image data output by the game application 212 based on the gameplay state of the game application 212, the frame rate module 254 may determine whether the game application 212 can output image data at a frame rate that matches the adjusted target frame rate without increasing the clock speed of one or more processors 240. The frame rate module 254 may, in some cases, refrain from increasing the clock speed of at least one of the CPU 218 or GPU 220 of one or more processors 240, respectively, in response to determining that the game application 212 is unable to output image data at a frame rate that matches the adjusted target frame rate. Alternatively, the frame rate module 254 may further adjust the target frame rate of image data output by the game application 212 by lowering the adjusted target frame rate to result in a target frame rate at which the game application 212 can output image data at the current clock speed of the one or more processors 240.
[0101] For example, the frame rate module 254 may determine whether increasing the clock speed of one or more processors 240 would exceed the thermal requirements of the computing device 202 (e.g., the internal temperature within the housing of the computing device 202). If the frame rate module 254 determines that increasing the clock speed of the one or more processors 240 to a rate that allows the gaming application 212 to output image data at the target frame rate would cause the computing device 202 to exceed its thermal requirements, the frame rate module 254 may decrease the target frame rate so that the gaming application 212 can output image data at the target frame rate without increasing the clock speed of the one or more processors 240.
[0102] In some examples, in response to determining that the game application 212 is unable to output image data at a frame rate that matches the adjusted target frame rate for the image data output by the game application 212, the frame rate module 254 may determine whether to increase the clock speed of at least one of the CPU 218 or GPU 220 of one or more processors 240 based at least in part on the difference between the adjusted target frame rate and the frame rate (e.g., a maximum frame rate) at which the game application 212 can output image data at the current clock speeds of the CPU 218 and GPU 220. In some examples, if the frame rate module 254 determines that the difference between the adjusted target frame rate and the frame rate at which the game application 212 can output image data at the current clock speeds of the CPU 218 and GPU 220 is greater than a specified frame rate threshold, which may be a specified percentage of the adjusted target frame rate (e.g., 10% of the adjusted target frame rate, 20% of the adjusted target frame rate), the frame rate module 254 may refrain from increasing the clock speed of at least one of the CPU 218 or GPU 220 of one or more processors 240. Alternatively, the frame rate module 254 may lower the target frame rate to correspond to the frame rate at which the game application 212 can output image data at the current clock speeds of the CPU 218 and GPU 220.
[0103] In some examples, in response to determining that the gaming application 212 is unable to output image data at a frame rate that matches the adjusted target frame rate of the image data output by the gaming application 212, the frame rate module 254 may determine whether to increase the clock speed of at least one of the CPU 218 or GPU 220 of the one or more processors 240 based at least in part on the amount of power available in the power source 257, such as the amount of battery power remaining in the power source 257. For example, if the frame rate module 254 determines that the amount of battery power remaining in the power source 257 is less than a specified threshold, such as less than 20% battery power and less than 10% battery power, the frame rate module 254 may refrain from increasing the clock speed of at least one of the CPU 218 or GPU 220 of the one or more processors 240. Alternatively, the frame rate module 254 may lower the target frame rate to correspond to a frame rate at which the gaming application 212 is able to output image data at the current clock speeds of the CPU 218 and GPU 220.
[0104] 3 is a block diagram illustrating an example of a computing device that outputs graphical content for display at a remote device, according to one or more techniques of this disclosure. Graphical content may generally include any visual information that may be output for display, such as text, images, video sequences, just to name a few. The example illustrated in FIG. 3 includes a computing device 360, a presence-aware display 364, a communication unit 370, a projector 380, a projector screen 382, a mobile device 386, and a visual display device 390. In some examples, the presence-aware display 364 may be an example of the display 114 illustrated in FIG. 1 and the display 214 illustrated in FIG. 2. Although illustrated as standalone computing device 102 and standalone computing device 202 for illustrative purposes in FIG. 1 and FIG. 2, a computing device such as computing device 360 may generally be any component or system that includes a processor or other suitable computing environment for executing software instructions, and need not include a presence-aware display, for example.
[0105] As shown in the example of FIG. 3, the computing device 360 may be an example of the computing device 102 of FIG. 1 or the computing device 202 of FIG. 2 and may include a processor including functionality as described with respect to the one or more processors 108 of FIG. 1 or the one or more processors 240 of FIG. 2. In such an example, the computing device 360 may be operably coupled to the presence awareness display 364 by a communication channel 362A, which may be a system bus or other suitable connection. The computing device 360 may also be operably coupled to a communication unit 370, further described below, by a communication channel 362B, which may be a system bus or other suitable connection. Although shown separately as an example in FIG. 3, the computing device 360 may be operably coupled to the presence awareness display 364 and the communication unit 370 by any number of one or more communication channels.
[0106] In other examples, such as those illustrated above by computing device 102 of Figure 1 and computing device 202 of Figure 2, a computing device may refer to a portable or mobile device such as a mobile phone (including a smartphone), a laptop computer, etc. In some examples, a computing device may be a desktop computer, a tablet computer, a smart television platform, a camera, a personal digital assistant (PDA), a server, or a mainframe.
[0107] The presence aware display 364 may include a display device 366 and a presence aware input device 368. The display device 366 may, for example, receive data from the computing device 360 and display graphical content. In some examples, the presence aware input device 368 may use capacitive, inductive, and / or optical recognition techniques to determine one or more user inputs (e.g., continuous gestures, multi-touch gestures, single-touch gestures) at the presence aware display 364 and transmit a representation of such user input to the computing device 360 using the communication channel 362A. In some examples, the presence aware input device 368 may be physically positioned on the display device 366 such that when a user places an input unit over a graphical element displayed by the display device 366, the position of the presence aware input device 368 corresponds to the location of the display device 366 where the graphical element is displayed.
[0108] As shown in FIG. 3, the computing device 360 may also include and / or be operatively coupled to a communication unit 370. The communication unit 370 may include the functionality of the communication unit 244 as described in FIG. 2. Examples of the communication unit 370 may include a network interface card, an Ethernet card, an optical transceiver, a radio frequency transceiver, or other types of devices capable of transmitting and receiving information. Other examples of such communication units may include Bluetooth, 3G, and WiFi radios, a universal serial bus (USB) interface, and the like. The computing device 360 may also include and / or be operatively coupled to one or more other devices (e.g., input devices, output devices, memory, storage devices) not shown in FIG. 3 for simplicity and illustration.
[0109] FIG. 3 also illustrates a projector 380 and a projector screen 382. Other such examples of projection devices may include electronic whiteboards, holographic display devices, and other suitable devices for displaying graphical content. The projector 380 and the projector screen 382 may include one or more communication units that enable the respective devices to communicate with the computing device 360. In some examples, the one or more communication units may enable communication between the projector 380 and the projector screen 382. The projector 380 may receive data including the graphical content from the computing device 360. In response to receiving the data, the projector 380 may project the graphical content onto the projector screen 382. In some examples, the projector 380 may determine one or more user inputs (e.g., continuous gestures, multi-touch gestures, single-touch gestures) at the projector screen using optical recognition techniques or other suitable techniques and transmit a representation of such user inputs to the computing device 360 using the one or more communication units. In such examples, projector screen 382 may not be required and projector 380 may project graphical content onto any suitable medium and detect one or more user inputs using optical recognition techniques or other such suitable techniques.
[0110] The projector screen 382 may include a presence aware display 384 in some examples. The presence aware display 384 may include a subset or all of the functionality of the presence aware displays 384 and / or 364 as described in this disclosure. In some examples, the presence aware display 384 may include additional functionality. The projector screen 382 (e.g., an electronic whiteboard) may receive data from the computing device 360 and display graphical content. In some examples, the presence aware display 384 may use capacitive, inductive, and / or optical recognition technology to determine one or more user inputs (e.g., continuous gestures, multi-touch gestures, single-touch gestures) at the projector screen 382 and send a representation of such user inputs to the computing device 360 using one or more communication units.
[0111] FIG. 3 also illustrates a mobile device 386 and a visual display device 390. Each of the mobile device 386 and the visual display device 390 may include computing and connectivity capabilities. Examples of the mobile device 386 may include e-book reader devices, convertible notebook devices, hybrid slate devices, and the like. Examples of the visual display device 390 may include other semi-stationary devices, such as televisions, computer monitors, and the like. As illustrated in FIG. 3, the mobile device 386 may include a presence aware display 388. The visual display device 390 may include a presence aware display 392. The presence aware displays 388 and 392 may include a subset or all of the functionality of the presence aware displays 384 and / or 364, as described in this disclosure. In some examples, the presence aware displays 388 and 392 may include additional functionality. In any case, the presence aware display 392 may receive data from the computing device 360, for example, and display graphical content. In some examples, the presence-aware display 392 may determine one or more user inputs (e.g., continuous gestures, multi-touch gestures, single-touch gestures) at the projector screen using capacitive, inductive, and / or optical recognition techniques and send an indication of such user inputs to the computing device 360 using one or more communication units.
[0112] As mentioned above, in some examples, the computing device 360 may output graphical content for display on a presence-aware display 364 coupled to the computing device 360 by a system bus or other suitable communication channel. The computing device 360 may also output graphical content for display on one or more remote devices, such as a projector 380, a projector screen 382, a mobile device 386, and a visual display device 390. For example, the computing device 360 may execute one or more instructions to generate and / or modify the graphical content in accordance with the techniques of this disclosure. The computing device 360 may output data including the graphical content to a communication unit (such as the communication unit 370) of the computing device 360. The communication unit 370 may transmit the data to one or more of the remote devices, such as the projector 380, the projector screen 382, the mobile device 386, and / or the visual display device 390. In this manner, the computing device 360 may output graphical content for display on one or more of the remote devices. In some examples, one or more of the remote devices may output graphical content on a presence aware display included in and / or operatively coupled to the respective remote device.
[0113] In some examples, the computing device 360 may not output graphical content on a presence aware display 364 operatively coupled to the computing device 360. In other examples, the computing device 360 may output graphical content for display on both the presence aware display 364 coupled to the computing device 360 by the communication channel 362A and one or more remote devices. In such examples, the graphical content may be displayed substantially contemporaneously on each device. For example, some delay may be introduced by communication latency for transmitting data including the graphical content to the remote device. In some examples, the graphical content generated by the computing device 360 and output for display on the presence aware display 364 may differ from the graphical content display output for display on the one or more remote devices.
[0114] The computing device 360 may transmit and receive data using any suitable communication technology. For example, the computing device 360 may be operatively coupled to an external network 374 using network link 372A. Each of the remote devices illustrated in FIG. 3 may be operatively coupled to the external network 374 by one of the respective network links 372B, 372C, or 372D. The external network 374 may include operatively interconnected network hubs, network switches, network routers, etc., thereby providing for the exchange of information between the computing device 360 and the remote devices illustrated in FIG. 3. In some examples, the network links 372A-372D may be Ethernet, ATM, or other network connections. Such connections may be wireless and / or wired connections.
[0115] In some examples, the computing device 360 may be operatively coupled to one or more of the remote devices included in FIG. 3 using direct device communication 378. Direct device communication 378 may include communication in which the computing device 360 sends and receives data directly to the remote device using wired or wireless communication. That is, in some examples of direct device communication 378, data transmitted by the computing device 360 may not have to be forwarded by one or more additional devices before being received at the remote device, and vice versa. Examples of direct device communication 378 may include Bluetooth, near field communication, universal serial bus, WiFi, infrared, etc. One or more of the remote devices illustrated in FIG. 3 may be operatively coupled to the computing device 360 by communication links 376A-376D. In some examples, the communication links 376A-376D may be connections using Bluetooth, near field communication, universal serial bus, infrared, etc. Such connections may be wireless and / or wired connections.
[0116] In accordance with the techniques of this disclosure, a gaming application may be executed on the computing device 360 and may output image data for display on the presence aware display 364, the presence aware display 384, the presence aware display 388, or the presence aware display 392. The computing device 360 may determine a gameplay state of the gaming application based at least in part on one or more characteristics associated with the gaming application executed on the computing device 360 and may adjust a target frame rate of image data being output by the gaming application. Accordingly, the gaming application may output image data for display on the presence aware display 364, the presence aware display 384, the presence aware display 388, or the presence aware display 392 based at least in part on the adjusted target frame rate.
[0117] FIG. 4 is a flow chart illustrating an example of an operational mode of a computing device that determines a gameplay state of a gaming application and adjusts a target frame rate of the gaming application based on the gameplay state, in accordance with one or more techniques of this disclosure. FIG. 4 is described below in the context of the computing device 202 of FIG. 2. As shown in FIG. 4, the computing device 202 may determine (402) one or more characteristics of a gaming application 212 executing on one or more processors 240 of the computing device 202. The computing device 202 may determine (404) a gameplay state of the gaming application 212 executing on the one or more processors 240 based at least in part on the one or more characteristics. The computing device 202 may adjust (406) a target frame rate of image data output by the gaming application 212 for display on the display device 214 based at least in part on the state of the gaming application 212. The computing device 202 may output (408) image data for display on the display device based at least in part on the adjusted target frame rate.
[0118] The disclosure includes the following examples. Example 1: A method comprises one or more processors of a computing device determining one or more characteristics of a game application executing on the one or more processors; the one or more processors determining a gameplay state of the game application executing on the one or more processors based at least in part on the one or more characteristics; the one or more processors adjusting a target frame rate of image data output by the game application for display on a display device based at least in part on the state of the game application; and the one or more processors outputting the image data for display on the display device based at least in part on the adjusted target frame rate.
[0119] Example 2: The method of Example 1, wherein the one or more characteristics include a pattern of usage of one or more processors by a running game application on one or more processors, and determining a gameplay state of the game application further includes the one or more processors determining a gameplay state of the game application based at least in part on the pattern of usage of the one or more processors by the game application.
[0120] Example 3: The method of Example 1 or 2, wherein the one or more characteristics include graphical rendering commands invoked by the game application during execution on the one or more processors, and determining a gameplay state of the game application further includes the one or more processors determining a gameplay state of the game application based at least in part on the graphical rendering commands invoked by the game application.
[0121] Example 4: The method of any one of Examples 1-4, wherein the one or more characteristics include a pattern of inputs received at an input device during execution of the game application on the one or more processors, and determining a gameplay state of the game application further includes the one or more processors determining a gameplay state of the game application based at least in part on the pattern of inputs received at the input device.
[0122] Example 5: The method of any one of Examples 1-4, wherein the one or more characteristics include image data output by the game application for display on the display device, and determining a gameplay state of the game application further includes one or more processors determining a gameplay state of the game application based at least in part on the image data output for display on the display device.
[0123] Example 6: The method of any one of Examples 1-5, wherein determining a gameplay state of the game application further includes one or more processors determining a gameplay state of the game application based at least in part on profiling of the game application during execution of the game application on the one or more processors.
[0124] Example 7: The method of any one of Examples 1-6, wherein determining a gameplay state of the game application further includes the one or more processors determining that the gameplay state of the game application is one of a game state or a non-game state, and the game application, in the game state, provides an interactive gameplay environment for active gameplay.
[0125] Example 8: The method of Example 7, wherein adjusting the target frame rate of the image data further includes, in response to determining that the gameplay state of the gaming application is a gaming state, the one or more processors increasing the target frame rate of the image data being output by the gaming application.
[0126] Example 9: The method of Example 7 or 8, wherein adjusting the target frame rate of the image data further includes, in response to determining that the gameplay state of the gaming application is a non-game state, the one or more processors reducing the target frame rate of the image data being output by the gaming application.
[0127] Example 10: The method of any one of Examples 1-9, wherein outputting image data for display on a display device based at least in part on the adjusted target frame rate further includes the one or more processors adjusting a respective clock speed of at least one of a central processing unit (CPU) or a graphics processing unit (GPU) of the one or more processors based at least in part on a gameplay state of the game application.
[0128] Example 11: A computing device comprises a memory and one or more processors operably coupled to the memory, the one or more processors configured to determine one or more characteristics of a game application executed on the one or more processors, determine a gameplay state of the game application executed on the one or more processors based at least in part on the one or more characteristics, adjust a target frame rate of image data output by the game application for display on a display device based at least in part on the state of the game application, and output image data for display on the display device based at least in part on the adjusted target frame rate.
[0129] Example 12: The computing device of Example 11, wherein the one or more characteristics include a pattern of usage of one or more processors by a running game application on one or more processors, and to determine a gameplay state of the game application, the one or more processors are further configured to determine a gameplay state of the game application based at least in part on the pattern of usage of the one or more processors by the game application.
[0130] Example 13: A computing device as described in Example 11 or 12, wherein the one or more characteristics include graphical rendering commands invoked by the game application during execution on the one or more processors, and to determine a gameplay state of the game application, the one or more processors are further configured to determine a gameplay state of the game application based at least in part on the graphical rendering commands invoked by the game application.
[0131] Example 14: A computing device described in any one of Examples 11 to 14, wherein the one or more characteristics include a pattern of inputs received at an input device during execution of a game application on the one or more processors, and to determine a gameplay state of the game application, the one or more processors are further configured to determine a gameplay state of the game application based at least in part on the pattern of inputs received at the input device.
[0132] Example 15: A computing device described in any one of Examples 11 to 14, wherein the one or more characteristics include image data output by the game application for display on the display device, and to determine a gameplay state of the game application, the one or more processors are further configured to determine a gameplay state of the game application based at least in part on the image data output for display on the display device.
[0133] Example 16: A computing device described in any one of Examples 11 to 15, wherein to determine a gameplay state of the game application, the one or more processors are further configured to determine a gameplay state of the game application based at least in part on profiling of the game application during execution of the game application on the one or more processors.
[0134] Example 17: A computing device described in any one of Examples 11 to 16, wherein to determine a gameplay state of the game application, the one or more processors are further configured to determine that the gameplay state of the game application is one of a game state or a non-game state, and the game application provides an interactive gameplay environment for active gameplay in the game state.
[0135] Example 18: The computing device of Example 17, wherein to adjust the target frame rate of the image data, the one or more processors are further configured to increase the target frame rate of the image data being output by the game application in response to determining that the gameplay state of the game application is a game state.
[0136] Example 19: A computing device as described in Example 17 or 18, wherein to adjust the target frame rate of the image data, the one or more processors are further configured to, in response to determining that the gameplay state of the game application is a non-game state, reduce the target frame rate of the image data being output by the game application.
[0137] Example 20: A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors of a computing device to determine one or more characteristics of a game application executing on the one or more processors; determine a game play state of the game application executing on the one or more processors based at least in part on the one or more characteristics; adjust a target frame rate of image data output by the game application for display on a display device based at least in part on the state of the game application; and output image data for display on the display device based at least in part on the adjusted target frame rate.
[0138] Example 21: A computing device comprising means for performing the method according to any one of Examples 1 to 10.
[0139] Example 22: A computer-readable storage medium encoded with instructions that cause one or more processors of a computing device to perform the method of any one of Examples 1-10.
[0140] By way of example and not limitation, such computer readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or other storage media that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly referred to as a computer readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio and microwave are also included in the definition of the medium. However, it should be understood that computer readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but are instead directed to non-transitory tangible storage media. Disk and disc as used herein include compact discs (CDs), laser discs, optical disks, digital versatile discs (DVDs), floppy disks and Blu-ray discs, where disks typically reproduce data magnetically and discs reproduce data optically using lasers, and combinations of the above are also intended to be included within the scope of computer readable media.
[0141] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Thus, the term "processor" as used herein may refer to any of the foregoing structures, or other structures suitable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein may be provided in dedicated hardware and / or software modules. Also, the techniques may be implemented entirely in one or more circuits or logic elements.
[0142] The techniques of the present disclosure may be implemented in a wide variety of devices or apparatuses, including wireless handsets, integrated circuits (ICs) or sets of ICs (e.g., chipsets). Various components, modules, or units are described in the present disclosure to highlight functional aspects of apparatuses configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a hardware unit or may be provided by a collection of interoperable hardware units including one or more processors as described above in combination with appropriate software and / or firmware.
[0143] Various embodiments have been described. These and other embodiments are within the scope of the following claims.
Claims
1. determining, by one or more processors of a computing device, one or more characteristics of a gaming application executing on the one or more processors, the one or more characteristics including a network traffic pattern of the gaming application; determining, by the one or more processors, a game play state of the game application executing on the one or more processors based at least in part on the one or more characteristics; adjusting, by the one or more processors, a target frame rate of image data output by the game application for display on a display device based at least in part on the gameplay state of the game application; The method further comprising: the one or more processors outputting the image data for display on the display device based at least in part on the adjusted target frame rate.
2. determining, by one or more processors of a computing device, one or more characteristics of a game application executing on the one or more processors, the one or more characteristics including at least one of a pattern of network traffic of the game application or an amount of change between frames of image data output by the game application; determining a game play state of the game application executing on the one or more processors based at least in part on the one or more characteristics; Determining the game play state of the gaming application includes: profiling the game application during execution of the game application on the one or more processors by analyzing call stacks and graphics processing unit (GPU) counters of the game application; and determining, by the one or more processors, the game play state of the gaming application based at least in part on the profiling; the one or more processors adjusting a target frame rate of the image data output by the game application for display on a display device based at least in part on the gameplay state of the game application; The method further comprising: the one or more processors outputting the image data for display on the display device based at least in part on the adjusted target frame rate.
3. determining, by one or more processors of a computing device, one or more characteristics of a game application executing on the one or more processors, the one or more characteristics including at least one of a pattern of network traffic of the game application or an amount of change between frames of image data output by the game application; determining a game play state of the game application executing on the one or more processors based at least in part on the one or more characteristics; Determining the game play state of the gaming application includes: the one or more processors analyzing the consistency of the network traffic or network packets contained in the network traffic; and determining, by the one or more processors, the game play state of the gaming application based at least in part on the network traffic patterns; the one or more processors adjusting a target frame rate of the image data output by the game application for display on a display device based at least in part on the gameplay state of the game application; The method further comprising: the one or more processors outputting the image data for display on the display device based at least in part on the adjusted target frame rate.
4. determining, by one or more processors of a computing device, one or more characteristics of a game application executing on the one or more processors, the one or more characteristics including at least one of a pattern of network traffic of the game application or an amount of change between frames of image data output by the game application; determining a game play state of the game application executing on the one or more processors based at least in part on the one or more characteristics; Determining the game play state of the gaming application includes: the one or more processors counting a number of changes in the frame of the image data using a histogram of the image data; the one or more processors determining the gameplay state of the gaming application based at least in part on the amount of change between the frames of the image data; the one or more processors adjusting a target frame rate of the image data output by the game application for display on a display device based at least in part on the gameplay state of the game application; The method further comprising: the one or more processors outputting the image data for display on the display device based at least in part on the adjusted target frame rate.
5. wherein the one or more characteristics include a pattern of usage of the one or more processors by the game application while executing on the one or more processors, and determining the game play state of the game application further comprises:
5. The method of claim 1, further comprising: the one or more processors determining the game play state of the game application based at least in part on a pattern of use of the one or more processors by the game application.
6. the one or more characteristics include graphical rendering commands invoked by the gaming application during execution on the one or more processors, and determining the gameplay state of the gaming application further comprises:
6. The method of claim 1, further comprising: the one or more processors determining the gameplay state of the game application based at least in part on the graphical rendering commands invoked by the game application.
7. the one or more characteristics include a pattern of inputs received at an input device during execution of the game application on the one or more processors, and determining the game play state of the game application further comprises:
7. The method of claim 1, further comprising: the one or more processors determining the gameplay state of the gaming application based at least in part on a pattern of the inputs received at an input device.
8. the one or more characteristics include the image data output by the gaming application for display on the display device, and determining the gameplay state of the gaming application further comprises:
8. The method of claim 1, further comprising: the one or more processors determining the gameplay state of the game application based at least in part on the image data output for display on the display device.
9. Determining the game play state of the gaming application further comprises:
9. The method of claim 1, further comprising: the one or more processors determining that the gameplay state of the game application is one of a game state or a non-game state, wherein in the game state, the game application provides an interactive gameplay environment for active gameplay, and in the non-game state, the game application displays a menu screen, a loading screen, a lobby screen, or a waiting room screen.
10. Adjusting the target frame rate of the image data further comprises:
10. The method of claim 9, further comprising: in response to determining that the gameplay state of the gaming application is the game state, the one or more processors increasing the target frame rate of the image data being output by the gaming application.
11. Adjusting the target frame rate of the image data further comprises:
10. The method of claim 9, further comprising: in response to determining that the gameplay state of the gaming application is the non-game state, the one or more processors reducing the target frame rate of the image data being output by the gaming application.
12. Outputting the image data for display on the display device based at least in part on the adjusted target frame rate further comprises:
12. The method of any one of claims 1 to 11, comprising the one or more processors adjusting a clock speed of at least one of a central processing unit (CPU) or a graphics processing unit (GPU) of the one or more processors based at least in part on the gameplay state of the game application.
13. 1. A computing device comprising: Memory, and one or more processors operably coupled to the memory, the one or more processors comprising: and configured to determine one or more characteristics of a gaming application executing on the one or more processors, the one or more characteristics including a pattern of network traffic of the gaming application, the one or more processors further comprising: determining a game play state of the game application executing on the one or more processors based at least in part on the one or more characteristics; adjusting a target frame rate of image data output by the gaming application for display on a display device based at least in part on the gameplay state of the gaming application; A computing device configured to output the image data for display on the display device based at least in part on the adjusted target frame rate.
14. 1. A computing device comprising: Memory, and one or more processors operably coupled to the memory, the one or more processors comprising: configured to determine one or more characteristics of a gaming application executed on the one or more processors, the one or more characteristics including at least one of a pattern of network traffic of the gaming application or an amount of change between frames of image data output by the gaming application, the one or more processors further comprising: configured to determine a gameplay state of the game application executing on the one or more processors based at least in part on the one or more characteristics; Determining the game play state of the gaming application includes: profiling the game application during execution of the game application on the one or more processors by analyzing call stacks and graphics processing unit (GPU) counters of the game application; determining the gameplay state of the gaming application based at least in part on the profiling; The one or more processors further comprise: adjusting a target frame rate of the image data output by the gaming application for display on a display device based at least in part on the gameplay state of the gaming application; A computing device configured to output the image data for display on the display device based at least in part on the adjusted target frame rate.
15. the one or more characteristics further include one or more of: a pattern of usage of the one or more processors by the game application while executing on the one or more processors; graphical rendering commands invoked by the game application while executing on the one or more processors; a pattern of inputs received at an input device while executing the game application on the one or more processors; or image data output by the game application for display on the display device; and to determine the game play state of the game application, the one or more processors further comprise:
15. The computing device of claim 14, configured to determine the gameplay state of the game application based at least in part on one or more of: a pattern of the use of the one or more processors by the game application, the graphical rendering commands invoked by the game application during execution of the one or more processors, a pattern of the inputs received at an input device during execution of the game application on the one or more processors, the image data output by the game application for display on the display device, a pattern of the network traffic of the game application, or the amount of change between the frames of the image data output by the game application.
16. To adjust the target frame rate of the image data, the one or more processors further comprise: responsive to determining that the gameplay state of the game application is a game state, increasing the target frame rate of the image data being output by the game application; 16. The computing device of claim 13, further configured to: reduce the target frame rate of the image data being output by the game application in response to determining that the gameplay state of the game application is a non-game state and is displaying a menu screen, a loading screen, a lobby screen, or a waiting room screen.
17. A program which, when executed, causes one or more processors of a computing device to carry out the method of any one of claims 1 to 12.
Citation Information
Patent Citations
Android system equipment power consumption optimization method based on game load prediction
CN105045367A
Program, image control method and game device
JP2020099517A
Display controller, control method, and control program
JP2021117305A
Resource Scheduling System and Method under Graphics Processing Unit Virtualization Based on Instant Feedback of Application Effect
US20180246770A1