Detecting the loading status of game applications

By determining the loading state of game applications through processor characteristics and adjusting clock speed and priority, the computing device reduces loading time and enhances user experience while conserving battery life.

JP7804075B2Active Publication Date: 2026-01-21GOOGLE LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2024535924
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2021-12-17
Publication Date
2026-01-21
Estimated Expiration
2041-12-17

AI Technical Summary

Technical Problem

Game applications often enter a loading state during preparation for a game session, causing users to wait unnecessarily, as the application does not explicitly indicate its state to the operating system.

Method used

A computing device determines the loading state of a game application based on characteristics such as processor usage patterns, function calls, and image data, and adjusts processor clock speed and application priority to reduce loading time.

Benefits of technology

This approach allows the computing device to reduce the time spent in the loading state, enhancing user experience by enabling quicker game session initiation and conserving battery life.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007804075000001
    Figure 0007804075000001
  • Figure 0007804075000002
    Figure 0007804075000002
  • Figure 0007804075000003
    Figure 0007804075000003
Patent Text Reader

Abstract

The computing device may determine one or more characteristics of a gaming application executing on one or more processors of the computing device. The computing device may determine that the gaming application executing on the one or more processors is in a loading state based at least in part on the one or more characteristics. In response to determining that the gaming application is in a loading state, the computing device may adjust at least one of a clock speed of the one or more processors or a prioritization of the gaming application.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] Prior to entering a game session, the game application may enter a loading state and perform actions to prepare for the game session, such as loading assets and / or resources, setting up a multiplayer game session, and / or compiling shaders to be used by the game application during the game session. While the game application is performing such actions to prepare for entering a game session, the game application may output a loading screen to indicate to the user that the game application is in a loading state. Summary of the Invention

[0002] In general, the techniques of this disclosure are directed to determining whether a gaming application running on a computing device is in a loading state, and, in response to determining that the gaming application is in a loading state, taking one or more actions to reduce the time the gaming application spends in the loading state. For example, in response to determining that the gaming application is in a loading state, the computing device may increase the clock speed of one or more processors of the computing device and / or increase the priority of the gaming application, thereby allowing the computing device to reduce the time it takes for the gaming application to perform actions to prepare a game session, thereby reducing the amount of time a user of the gaming application may need to wait to start or resume a game session.

[0003] A computing device may determine whether a game application is in a loading state without receiving an explicit indication of the state of the game application. Instead, the computing device can determine whether a game application is in a loading state based on one or more characteristics associated with the running game application, thereby enabling the computing device to improve performance of game applications that do not explicitly indicate their state.

[0004] In one example, the present disclosure describes a method that includes determining, by one or more processors of a computing device, one or more characteristics of a gaming application running on the one or more processors; determining, by the one or more processors, that the gaming application is in a loading state based at least in part on the one or more characteristics; and, in response to determining that the gaming application is in a loading state, adjusting, by the one or more processors, at least one of a clock speed of the one or more processors or a prioritization of the gaming application.

[0005] In another example, the present disclosure describes a computing device that includes 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 running on the one or more processors, determine that the gaming application is in a loading state based at least in part on the one or more characteristics, and adjust at least one of a clock speed of the one or more processors or a prioritization of the gaming application in response to determining that the gaming application is in a loading state.

[0006] In another example, the present disclosure describes a computer-readable storage medium storing instructions that, when executed, cause one or more processors of a computing device to determine one or more characteristics of a gaming application running on the one or more processors, determine that the gaming application is in a loading state based at least in part on the one or more characteristics, and adjust at least one of a clock speed of the one or more processors or a prioritization of the gaming application in response to determining that the gaming application is in a loading state.

[0007] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims. [Brief explanation of the drawings]

[0008] [Figure 1] FIG. 1 is a conceptual diagram illustrating an example computing device configured to determine that a gaming application is in a loading state, in accordance with one or more aspects of the present disclosure. [Figure 2] FIG. 1 is a block diagram illustrating an exemplary computing device in accordance with one or more aspects of the present disclosure. [Figure 3] FIG. 1 is a block diagram illustrating an example computing device that outputs graphical content for display on a remote device, in accordance with one or more techniques of this disclosure. [Figure 4] 1 is a flowchart illustrating an example mode of operation of a computing device for determining whether a gaming application is in a loading state, in accordance with one or more techniques of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0009] In general, the techniques of this disclosure are directed to determining whether a game application running on a computing device is in a loading state and, in response to determining that the game application is in a loading state, taking one or more actions to reduce the amount of time the game application spends in the loading state. The computing device may determine whether the game application is in a loading state without receiving an explicit indication of the state of the game application. Alternatively, the computing device may determine whether the game application is in a loading state based on one or more characteristics associated with the running game application.

[0010] A game application may transition between multiple states during execution, such as a game state, a loading state, and a menu state. A game application may be in a game state when the game application is providing an interactive gameplay environment for active game play by a user of a computing device, also referred to herein as a game session. A game application may be in a menu state when the game application is outputting a menu screen. A game application may be in a loading state when the game application is performing operations in preparation for entering a game session, such as loading assets and / or resources for the game, loading and / or compiling shaders used during the game, setting up a multiplayer game session, etc. In some examples, a game application may be in a waiting state when players are in a lobby or waiting room.

[0011] When a game application is in a loading state to perform an action to enter a game session, a user of the game application may be forced to sit and wait until the game session begins so that the user can begin or resume game play. Therefore, being able to reduce the period of time that a game application is in a loading state may provide a better user experience by allowing a user to begin playing the game application more quickly.

[0012] According to aspects of the present disclosure, while executing a game application, a computing device may determine whether the game application is in a loading state, and in response to determining that the game application is in a loading state, take one or more actions to reduce the time the game application spends in the loading state. For example, in response to determining that the game application is in a loading state, the computing device may increase the clock speed of one or more processors of the computing device and / or increase the priority of the game application, thereby allowing the computing device to reduce the time it takes for the game application to perform actions to prepare for a game session.

[0013] A computing device may be able to determine whether a game application is in a loading state without receiving an explicit indication from the game application that the game application is in a loading state. Instead, a computing device may be able to determine whether a game application is in a loading state based on one or more characteristics associated with the running game application. Such characteristics may include a pattern of user input received during execution of the game application, a usage pattern of one or more processors of the computing device, functions issued by the running game application, image data output by the running game application, etc.

[0014] The techniques of this disclosure may provide one or more technical advantages. For example, by determining whether a gaming application is in a loading state and increasing the clock speed of one or more processors when the gaming application is in a loading state, the techniques of this disclosure enable a computing device to adaptively adjust the clock speed of one or more processors based on the state of the gaming application. This allows the computing device to increase the clock speed of one or more processors when an increased clock speed may be necessary to perform performance-critical tasks, and to decrease the clock speed of one or more processors when a higher clock speed may not be necessary.

[0015] Thus, by allowing a computing device to adaptively adjust the clock speed of one or more processors based on the state of a gaming application, the computing device may be able to reduce battery consumption while running the gaming application by avoiding always running one or more processors at the highest possible clock speed. Reducing battery consumption of a computing device may increase the battery life of the computing device if the computing device is a mobile computing device.

[0016] 1 is a conceptual diagram illustrating an example computing device configured to determine that a game application is in a loading state, in accordance with one or more aspects of the present disclosure. In the example of FIG. 1, computing device 102 may include, but is not limited to, portable or mobile devices such as 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, computing device 102 may include stationary computing devices such as desktop computers, servers, mainframes, etc.

[0017] 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 mixture of both hardware, software, and firmware and may reside and execute 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 using one or more processors 108. Computing device 102 may execute either modules 106 and game application 112 as or within a virtual machine running on underlying hardware. UI module 106 and game application 112 may be implemented in a variety of ways. For example, either the modules 106 and / or the game application 112 may be implemented as a downloadable or pre-installed application, i.e., an "app." In another example, either the modules 106 and the game 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. 1.

[0018] One or more processors 108 may implement functions and / or execute instructions within computing device 102. For example, one or more processors 108 may receive and execute instructions to perform one or more operations that provide functionality for UI module 106 and game application 112. That is, UI module 106 and game application 112 may be operable by 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. 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, as well as non-graphics-related functions that leverage the massive processing parallelism provided by GPU 120. Examples of CPU 118 and 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.

[0019] The UIC 104 of the computing device 102 may function as an input device and 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, an electrostatic touchscreen, a projected capacitive touchscreen, a pressure-sensitive screen, an acoustic pulse recognition touchscreen, or another 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, a mini LED, an organic light-emitting diode (OLED) display, an electronic ink, or similar monochrome or color display capable of outputting visible information to a user of the computing device 102. For example, the UIC 104 includes a display 114.

[0020] In some examples, display 114 may be a presence-sensing screen capable of receiving tactile user input from a user of computing device 102. UIC 104 may receive tactile user input by detecting one or more taps and / or gestures from a user of computing device 102 (e.g., a user touching or pointing at one or more locations on UIC 104 with a finger or a stylus). The presence-sensing screen of UIC 104 may present output to the user. UIC 104 may present the output as a user interface that may be associated with functionality provided by computing device 102. For example, UIC 104 may present various functions and applications running on computing device 102, such as an electronic message application, a messaging application, a map application, etc.

[0021] 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 another example, the UI module 106 may be implemented as part of a hardware unit of the computing device 102. In another example, 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 any other module described in this disclosure, may be implemented across any combination of an application, a hardware unit, and an operating system.

[0022] UI module 106 may interpret input detected at UIC 104 (e.g., when a user provides one or more gestures at the location on UIC 104 where user interface 14A or another exemplary user interface is displayed). UI module 106 may relay information about the input detected at UIC 104 to one or more associated platforms, operating systems, applications, and / or services running on computing device 102, causing computing device 102 to perform functions. UI module 106 may also receive information and instructions from one or more associated platforms, operating systems, applications, and / or services running on computing device 102 (e.g., gaming application 112) to generate a graphical user interface (GUI). Additionally, UI module 106 may act as an intermediary between one or more associated platforms, operating systems, applications, and / or services running on computing device 102 and various output devices (e.g., speakers, LED indicators, vibrators, etc.) of computing device 102 to produce output (e.g., graphical, audible, tactile, etc.) using computing device 102.

[0023] 1 , computing device 102 includes a game application 112 that executes on one or more processors 108 to perform the functionality of a video game. While shown as operable by computing device 102, game application 112 may, in some examples, be operable by a remote computing device communicatively coupled to computing device 102. In such examples, the game application running on the remote computing device may cause content and intent information to be transmitted to the remote computing device using any suitable form of data communication (e.g., a wired or wireless network, short-range wireless communication such as near-field communication or Bluetooth, etc.). In some examples, the remote computing device may be a computing device separate from computing device 102.

[0024] 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 states while executing on one or more processors 108. For example, the game application 112 may be in one of a game state, a menu state, or a loading state, and may transition between different states while executing on one or more processors 108.

[0025] The game application 112 may be in a game state when it is providing an interactive gameplay environment, such as a game session, for active game play by a user of the computing device 102. That is, when the game application 112 is in a game state, the game application 112 enables a user of the computing device 102 to actively provide user input at the UIC 104 to play a game in the interactive gameplay environment, 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 driving a car, etc.

[0026] When the game application 112 is not providing an interactive gameplay environment for active game play by a user of the computing device, the game application 112 may not be in a game state. For example, when the game application 112 is outputting a menu screen for the game application 112, the game application 112 may be in a menu state. In another example, the game application 112 may be in a loading state when the game application 112 is performing actions in preparation for entering a game session, such as when the game application 112 is loading assets and resources used in the game session and / or compiling shaders used in the game session. For example, when a user of the game application 112 completes a level of a game, the game application 112 may transition from the game state to a loading state so that the game application 112 can perform actions in preparation for loading the next level of the game. In another example, when a user of the game application 112 starts or resumes a game, the game application 112 may enter a loading state to perform actions in preparation for loading the game. Generally, the game application 112 may transition from the loading state to the gaming state once the game application 112 has performed actions to prepare to enter a game session.

[0027] The game application 112 may not explicitly indicate the current state of the game application 112 to the operating system of the computing device 102, and the game application 112 may not explicitly indicate when the game application 112 has left one state and entered a different state. That is, when the game application 112 is in a loading state, the game application 112 may not provide an explicit indication to the operating system of the computing device 102 that the game application 112 is in a loading state. Similarly, when the game application 112 is in a gaming state, the game application 112 may not provide an explicit indication to the operating system of the computing device 102 that the game application 112 is in a gaming state.

[0028] Thus, according to aspects of the present disclosure, computing device 102 may determine the current state of game application 112 without receiving an explicit indication of the current state of game application 112 from game application 112. Instead, when game application 112 executes on one or more processors 108, computing device 102 may determine one or more characteristics associated with game application 112 and may determine the current state of game application 112 based at least in part on the one or more characteristics. In response to determining that game application 112 is in a loading state, computing device 102 may take one or more actions without user intervention to reduce the time that game application 112 spends in the loading state, such as by increasing the clock speed of CPU 118 and / or GPU 120 and / or increasing the execution priority of game application 112 on computing device 102.

[0029] The one or more characteristics associated with a game application 112 executing on one processor 108 may include any characteristics and / or behavior of the computing device 102 attributable to or otherwise associated with the game application 112 executing on one or more processors 108, other than an explicit indication of the state of the game application 112 received from the game application 112. Specifically, the one or more characteristics may include characteristics of components of the computing device 102 that indicate a difference in the behavior of the game application 112 and / or the computing device 102 while the game application 112 is in a loading state compared to the game application 112 in other states.

[0030] In some examples, the one or more characteristics may include one or more of: a usage pattern of one or more processors 108 by the running game application 112; functions called by the game application 112 and executed by the one or more processors 108 during execution of the game application 112; characteristics of image data output by the running game application 112 for display on the display 114; system log output of the running game application 112; the name of the game application 112; etc. The computing device 102 may determine whether the game application 112 is in a loading state 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 whether the game application 112 is in a loading state without the operating system of the computing device 102 receiving an explicit indication from the game application 112 that the game application 112 is in a loading state.

[0031] The computing device 102 may use any suitable technique to determine whether the game application 112 is in a loading state based on one or more characteristics associated with the game application 112. In some examples, the computing device 102 may determine that the game application 112 is in a loading state if at least one of the one or more characteristics associated with the game application 112 indicates that the game application 112 is in a loading state. In some examples, the computing device 102 may determine that the game application 112 is in a loading state if a majority of the one or more characteristics associated with the game application 112 indicate that the game application 112 is in a loading state.

[0032] In some examples, the computing device 102 may implement and use one or more neural networks trained via machine learning to determine whether the game application 112 is in a loading state based on one or more characteristics associated with the game application 112. Generally, the one or more neural networks implemented by the computing device 102 may include multiple interconnected nodes, each of which may apply one or more functions to a set of input values ​​corresponding to 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 an indication of whether the game application 112 is in a loading state.

[0033] The one or more corresponding output values, in some examples, may include a probability that the game application 112 is in a loading state. 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 states. Thus, the computing device 102 may determine that the game application 112 is in a loading state if the probability that the game application 112 is in the loading state is greater than the probability that the game application 112 is in any other state.

[0034] In some examples, the one or more corresponding output values ​​may include a confidence score associated with each of the states of the game application 112. Thus, the computing device 102 may use one or more neural networks to determine each confidence score that the game application 112 is in each of a plurality of states based on one or more characteristics. Thus, the computing device 102 may determine that the game application 112 is in a loading state if the confidence score that the game application 112 is in the loading state is greater than the confidence score that the game application 112 is in any other state.

[0035] In response to determining that game application 112 is in a loading state, computing device 102 may adjust at least one of the clock speed of one or more processors 108 or the prioritization of game application 112. For example, in response to determining that game application 112 is in a loading state, computing device 102 may increase the amount of game application 112 instructions that may be executed by CPU 118 and / or GPU 120, and may adjust the clock speed of CPU 118 and / or GPU 120, such as by increasing the clock speed of CPU 118 and / or GPU 120 to shorten the amount of time that game application 112 remains in a loading state before transitioning to a gaming state.

[0036] In some examples, the computing device 102 may increase the execution priority of the game application 112 in response to determining that the game application 112 is in a loading state. That is, the computing device 102 may prioritize the execution of instructions of the game application 112 by one or more processors 108 relative to the execution of other processes also executing on one or more processors 108. Increasing the prioritization of the game application 112 may increase the amount of instructions of the game application 112 executed by the one or more processors 108 in a given period of time, thereby allowing the computing device 102 to reduce the amount of time the game application 112 remains in a loading state before transitioning to a gaming state.

[0037] 1 , while the game application 112 is in a loading state, the game application 112 may output a loading screen GUI 122A. While the game application 112 is in a loading state, the computing device 102 may continuously determine one or more characteristics associated with the game application 112 executing on the one or more processors 108 and may determine that the game application 112 is in a loading 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 at least one of the clock speed of the one or more processors 108 or the prioritization of the game application 112 to reduce the amount of time the game application 112 remains in the loading state. The game application 112 may transition from the loading state to a gaming state. During or after the transition to the gaming state, the game application 112 may output a GUI 122B of an interactive gameplay environment for active gameplay by the user of the computing device 102.

[0038] 2 is a block diagram illustrating an exemplary computing device in accordance with one or more aspects of the present disclosure. FIG. 2 illustrates only one particular example of a computing device 102; many other examples of computing device 102 may be used in other instances, and may include a subset of the components included in the exemplary computing device 102, or may include additional components not illustrated in FIG. 2.

[0039] 2, 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 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 UIC 104 of FIG. 1. Storage device 248 of computing device 202 also includes UI module 222, game application 212, operating system 226, state module 252, and loading performance module 254. Communication channel 250 may interconnect (physically, communicatively, and / or operatively) each of components 240, 242, 244, 246, 248, and 256 for communication between the components. In some examples, communication channel 250 may include a system bus, a network connection, one or more inter-process communication data structures, or any other component for communicating data between hardware and / or software.

[0040] One or more processors 240 may implement functions and / or execute instructions within computing device 202. For example, processor 240 on computing device 102 may receive and execute instructions stored by storage device 248, which provide the functionality of UI module 222, game application 212, operating system 226, state module 252, and loading performance module 254. These instructions, executed by processor 240, may cause computing device 202 to store and / or modify information within storage device 248 during program execution. Processor 240 may execute the instructions of UI module 222, game application 212, operating system 226, state module 252, and loading performance module 254. That is, UI module 222, game application 212, operating system 226, state module 252, and loading performance module 254 may be operable by processor 240 to perform various functions described herein.

[0041] 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 for generating and outputting graphics data for presentation on a display, as well as non-graphics-related functions that leverage 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.

[0042] One or more input devices 242 of computing device 202 can receive input. Examples of input include, but are not limited to, tactile input, audio input, kinematic input, and optical input. The input devices 242 of computing device 202, in one example, include a mouse, keyboard, voice response system, video camera, buttons, control pad, microphone, or any other type of device for detecting input from a human or machine. In some examples, input device 242 may be a presence-sensing input device, which may include a presence-sensing screen, a touch-sensitive screen, or the like.

[0043] One or more output devices 246 of computing device 102 may generate output. Examples of output include haptic output, audio output, and video output. The output devices 246 of computing device 202, in one example, include a presence-sensing screen such as display 214, a sound card, a video graphics adapter card, speakers, or any other type of device for generating haptic, audio, and / or visual output. Display 214 may use any one or more of a liquid crystal display (LCD), a dot-matrix display, a light-emitting diode (LED) display, a micro-LED, a mini-LED, an organic light-emitting diode (OLED) display, an electronic ink, or similar monochrome or color display capable of outputting visible information to a user of computing device 202.

[0044] One or more communication units 244 of computing device 202 may communicate with external devices by transmitting and / or receiving data. For example, computing device 202 may use communication unit 244 to transmit and / or receive radio signals over a wireless network, such as a cellular wireless network. In some examples, communication unit 244 may transmit and / or receive satellite signals over a satellite network, such as a Global Positioning System (GPS) network. Examples of communication unit 244 include a network interface card (e.g., an Ethernet card), an optical transceiver, a radio frequency transceiver, a GPS receiver, or any other type of device capable of transmitting and / or receiving information. Other examples of communication unit 244 may include Bluetooth, GPS, 3G, 4G, and Wi-Fi radios, as well as a universal serial bus (USB) controller, etc., present in a mobile device.

[0045] 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 to store information short-term as volatile memory and therefore may not retain its stored contents when deactivated. 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.

[0046] 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 also be configured for long-term storage of information as non-volatile memory space and may retain information after activation / deactivation 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 state module 252, and the loading performance module 254.

[0047] As shown in FIG. 2 , the computing device 202 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 in contact with or in proximity to the computing device 202. The magnetometer data may indicate the Earth's magnetic field and, in some examples, may provide compass direction functionality. The sensors 256 may include an ambient light sensor that generates ambient light data. The ambient light data may indicate the 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 within proximity range of the computing device 202. In some examples, the proximity data may indicate how close the 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.

[0048] 2, computing device 202 may include a power source 257. In some examples, power source 257 may be a battery. Power source 257 may provide power to one or more components of computing device 202. Examples of 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, power source 257 may have a limited capacity (e.g., 1000-4000 mAh).

[0049] In accordance with the techniques of this disclosure, one or more processors 240 of computing device 202 are configured to execute state module 252 to determine the state of game application 212 when game application 212 executes on one or more processors 240. When game application 212 executes on one or more processors 240, game application 212 may be in one of a number of states, including a game state, a loading state, a menu state, etc.

[0050] The state module 252 may be able to determine the current state of the game application 212 without receiving an explicit indication of the state of the game application 212 from the game application 212. Instead, the state module 252, when the game application 212 executes on the one or more processors 240, may determine the state of the game application 212 based on one or more characteristics associated with the game application 212 executing on the one or more processors 240. The one or more processors 240 may periodically execute the state module 252 to determine the current state of the game application 212 when the game application 212 executes on the one or more processors 240. For example, the one or more processors 240 may execute the state module 252 to determine the current state of the game application 212 once per second, five times per second, ten times per second, etc.

[0051] 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, such as a first-person shooter game, a battle royale game, or the like, which may emphasize hand-eye coordination and reaction time. In some examples, the game application 212 may be a simulation game, such as a motorsports simulation game, an airplane simulation game, or a truck driving 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, or the like.

[0052] 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, in some examples, may 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.

[0053] 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 states while executing on 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 the game state and the non-game state while executing on one or more processors 240.

[0054] The game application 212 may be in a gaming state when the game application 212 is providing an interactive gameplay environment for active game play by a user of the computing device 202. That is, when the game application 212 is in a gaming state, the game application 212 enables a user of the computing device 202 to actively provide user input at one or more input devices 242 to play a game in the interactive gameplay environment, such as by providing user input at 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 the game, cooperate with other players to complete an objective (e.g., a quest), simulate driving a car, etc.

[0055] The game application 212 may be in a loading state when the game application is performing operations in preparation for entering a game session, such as loading assets and / or resources for the game, loading and / or compiling shaders used during the game, setting up a multiplayer game session, etc. For example, when a user of the game application 212 completes a level of a game, the game application 212 may transition from a gaming state to a loading state so that the game application 212 may perform actions in preparation for loading the next level of the game. In another example, when a user of the game application 212 starts or resumes a game, the game application 212 may enter a loading state to perform actions in preparation for loading the game. In general, the game application 212 may transition from a loading state to a gaming state once the game application 212 has finished performing actions in preparation for entering a game session.

[0056] One or more characteristics associated with the game application 212 executing on one or more processors 240 may include any characteristics and / or behavior of the components of the computing device 202 and / or the game application 212 that may indicate differences in the behavior of the game application 212 and / or the behavior of the components of the computing device 202 while the game application 212 is in various states.

[0057] In some examples, the one or more characteristics may include a usage pattern of one or more processors 240 by the running game application 212, such as a usage pattern of the CPU 218 and GPU 220 by the game application 212. The usage of the CPU 218 and GPU 220, such as the types of instructions executed by the CPU 218 and / or GPU 220, the amount of instructions of the game application 212 executed by the CPU 218 and / or GPU 220, etc., may be different when the game application 212 is in a loading state compared to when the game application 212 is in another state.

[0058] When the game application 212 is in the loading state, the game application 212 may be performing actions to prepare the game application 212 to enter a game state and provide an interactive gameplay environment for active gameplay (e.g., start a new game, start a new level of a game, resume a game from the last save location, etc.). Such actions may include loading assets for the game, making network calls to set up a multiplayer game session, and / or compiling shaders to render graphics when the game application 212 is in the game state. The game application 212 may use the GPU 220 to compile shaders, while the game application 212 may use the CPU 218 to perform other actions, such as loading assets for the game, setting up a multiplayer game session, etc.

[0059] Thus, when the game application 212 is in a loading state, the game application 212 may utilize the CPU 218 more heavily compared to the GPU 220. That is, when the game application 212 is in a loading state, the game application 212 may call more functions performed by the CPU 218 compared to functions performed by the GPU 220, thereby increasing the usage of the CPU 218 compared to the GPU 220. Furthermore, when the game application 212 is in a loading state, the game application 212 may utilize the CPU 218 more heavily compared to when the game application 212 is in a gaming state, and the game application 212 may utilize the GPU 220 less heavily when the game application 212 is in a loading state compared to when the game application 212 is in a gaming state.

[0060] In some examples, one or more processors 240 may determine the workload of CPU 218 and / or GPU 220 by using hardware performance counters. Such hardware performance counters may track information such as the number of cache misses, the number of instructions issued, and the number of instructions executed for each of CPU 218 and GPU 220. For example, if the number of instructions executed by CPU 218, as indicated by the value of the hardware performance counter for CPU 218, is much greater than the number of instructions executed by GPU 220, as indicated by the value of the hardware performance counter for GPU 220, the difference between the number of instructions executed by CPU 218 and GPU 220 may indicate that gaming application 212 is in a loading state.

[0061] As such, the usage pattern of one or more processors 240 by a running game application 212 may indicate the state of the game application 212. The usage pattern of one or more processors 240 may include the usage of the CPU 218 and / or the GPU 220 during the execution of the game application 212, such as the values ​​of hardware performance counters of the CPU 218 and GPU 220.

[0062] In some examples, the one or more characteristics may include a pattern of one or more functions called by the running game application 212. When the game application 212 is in a loading state, the game application 212 calls relatively more initialization functions, network functions, and shader compilation functions to prepare for transition to a gaming state compared to the game application 212 in another, non-loading state. Thus, if the functions called by the game application 212 primarily include initialization functions, network functions, and shader compilation functions, such a pattern of functions called by the game application 212 may indicate that the game application 212 is in a loading state. Thus, the pattern of one or more functions called by the game application 212 included in the one or more characteristics may include a pattern of functions called by the game application 212, the types of functions called by the game application 212, etc.

[0063] In some examples, the one or more characteristics may include a pattern of network usage by the running game application 212. When the game application 212 is in a loading state, the game application 212 may receive a relatively large amount of data over the network, such as for receiving assets over the network, but may transmit a relatively small amount of data over the network. Thus, if the network usage of the game application 212 primarily involves receiving data over the network, the network usage of the game application 212 may indicate that the game application 212 is in a loading state.

[0064] 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 the game application may provide less input (e.g., no input) while the game application is in a loading state compared to while the game application is in a game state or a menu state. Thus, the computing device 202 may receive less user input at one or more input devices 242 during execution of the game application 212 while the game application 212 is in a loading state compared to the frequency of user input received while the game application 212 is in other states. Thus, the one or more characteristics may include an indication of the frequency of user input received by the computing device 202 during execution of the game application 212.

[0065] In some examples, the pattern of inputs may also include locations of inputs received at one or more input devices 242. For example, if UI elements corresponding to controls of the game application 212 are output at known locations on the presence-sensing display, inputs received at such locations of the UI elements corresponding to the controls of the game application 212 may indicate that the game application 212 is in a game play state, while inputs received outside the locations of the UI elements corresponding to the controls of the game application 212 may indicate that the game application 212 is in a non-game play state.

[0066] In some examples, the one or more characteristics may include image data output by the game application 212 for display on the display 214 during execution. When the game application 212 is in a loading mode, the image data output by the game application 212 for display on the display 214 may be relatively stable. That is, when the game application 212 is in a loading state, the game application 212 may not frequently change the image data output for display on the display 214. Furthermore, when the game application 212 is in a loading mode, the game application 212 may often output image data for display on the display 214 that is all uniform in one color, such as black or white. This is in contrast to when the game application 212 is in a gaming state. In a gaming state, the game application 212 may frequently change the image data output to the display 214, and the game application 212 is more likely to output image data of a variety of different colors. The computing device 202 may be able to use image data output for display on the display 214 as part of determining whether it is a game application 212 without recognizing any characters, words, or sentences that may be present in the image data output for display, and without performing, for example, image recognition on the image data.

[0067] As such, the one or more characteristics may include an indication of an amount of change between frames of image data output by the game application 212. For example, the 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 consecutive frames of image data output by the game application 212 remain unchanged and the number of times consecutive frames of image data output by the game application 212 differ. If the number of times consecutive frames of image data output by the game application 212 remain unchanged exceeds a predetermined threshold, such lack of change in image data by the game application 212 may be an indication that the game application 212 is in a loading state.

[0068] In some examples, the one or more characteristics may include logging of the game application 212 during execution of the game application 212. As the game application 212 executes, the game application 212 may write information to one or more logs, such as a system log. For example, when the game application 212 enters and remains in a loading state, the game application 212 may write an indication to one or more logs that the game application 212 has entered and / or is in a loading state. Additionally, when the game application 212 exits a loading state, the game application 212 may write an indication to one or more logs that the game application 212 has exited the loading state and / or that the game application 212 is no longer in a loading state.

[0069] In some examples, the one or more characteristics may include the name of the game application 212. The name of the game application 212 may be the name of the application, the name of the package, the executable name, etc. Because game applications such as the game application 212 tend to have the same or similar names across different devices, the state module 252 may be able to determine whether the game application 212 is a game application that may be in a loading state based on the name of the game application 212. For example, the state module 252 may be able to access a list of names of game applications, and the state module 252 may determine whether the name of the game application 212 matches one of the entries in the list of names of game applications. If the state module 252 determines that the name of the game application 212 matches one of the entries in the list of names of game applications, the gameplay state module 252 may be able to determine whether the game application 212 is in a loading state based on one or more other characteristics associated with the game application 212, etc.

[0070] The state module 252 may be executed on one or more processors 240 to determine whether the game application 212 is in a loading state based at least in part on one or more characteristics associated with the game application 212. As described above, the state module 252 may determine whether the game application 212 is in a loading state without receiving an explicit indication from the game application 212 or the like that the game application 212 is in a loading state.

[0071] The state module 252 may use any suitable technique to determine whether the game application 212 is in a loading state based on one or more characteristics associated with the game application 212. In some examples, the state module 252 may determine that the game application 212 is in a loading state if at least one of the one or more characteristics associated with the game application 212 indicates that the game application 212 is in a loading state. In some examples, the state module 252 may determine that the game application 212 is in a loading state if the state module 252 determines that a majority of the one or more characteristics associated with the game application 212 indicate that the game application 212 is in a loading state.

[0072] In some examples, the state module 252 may implement and use one or more neural networks trained via machine learning to determine whether the game application 212 is in a loading state based on one or more characteristics associated with the game application 212. Generally, the one or more neural networks implemented by the state module 252 may include multiple interconnected nodes, each of which may apply one or more functions to a set of input values ​​corresponding to 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 an indication of the state of the game application 212.

[0073] In some examples, one or more neural networks of state module 252 are trained to determine the state 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 including sets of characteristics associated with states to learn the relationship between the characteristics and states. In some examples, one or more networks may be trained off-device (e.g., on an external computing system) and then installed and / or downloaded to computing device 202. In some examples, one or more neural networks may be trained on-device at computing device 202.

[0074] The one or more corresponding output values, in some examples, may include a probability that the game application 212 is in each of a plurality of states. Thus, the state module 252 may implement one or more neural networks to determine the probabilities of the states of the game application 212 based on the one or more characteristics, determine that the state of the game application 212 is the most probable state of the game application 212 based on the corresponding probabilities, and output an indication. If the state module 252 determines that the loading state is the most probable state of the game application 212, the state module 252 may determine that the game application 212 is in the loading state.

[0075] 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 plurality of states. Thus, the state module 252 may implement the one or more neural networks to determine a respective confidence score when the game application 212 is in each of the plurality of states. Thus, in some examples, the state module 252 may determine the state of the game application 212 to be the state associated with the highest confidence score. For example, if the state module 252 determines that the loading state is associated with the highest confidence score, the state module 252 may determine that the game application 212 is in the loading state.

[0076] In some examples, the state module 252 may use a combination of two or more models to determine the 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 state module 252 may use a first model to determine whether the game application 212 is a game application using a single characteristic, such as the name of the game application 212. If the state module 252 determines that the game application 212 is a game application, the state module 252 may use a second model. This second model takes as input one or more additional characteristics associated with the game application 212 and outputs a probability and / or confidence that the game application 212 is in a loading state. Thus, the state module 252 may determine the state of the game application 212, such as whether the game application 212 is in a gaming state, based on the output of the second model. In some examples, the second model may be trained specifically for a particular game application, such as the game application 212. A second model trained specifically for a particular game application may be trained using training data after running a copy of the particular game application.

[0077] In response to determining that the game application 212 is in a loading state, one or more processors 240 of the computing device 202 are configured to execute a loading performance module 254 to adjust at least one of the clock speed of the one or more processors 208 or the prioritization of the game application 212 to reduce the amount of time the game application 212 spends in the loading state. For example, in response to determining that the game application 212 is in a loading state, the loading performance module 254 may adjust the clock speed of the CPU 218 and / or the clock speed of the GPU 220, such as by increasing the clock speed of the CPU 218 and / or the clock speed of the GPU 220. The CPU 218 and / or the GPU 220 may operate at the increased clock speed until the game application 212 is no longer in the loading state.

[0078] The loading performance module 254 may determine how much to increase the clock speed of the CPU 218 and / or the GPU 220 when the game application 212 is in a loading state. In some examples, the loading performance module 254 may increase the clock speed of the CPU 218 and the GPU 220 by different amounts when the game application 212 is in a loading state, or may adjust the clock speed of the CPU 218 and / or the GPU 220 so that the CPU 218 and the GPU 220 operate at different clock speeds when the game application 212 is in a loading state. The loading performance module 254 may determine the respective workloads of the CPU 218 and the GPU 220 while the game application 212 is in a loading state and may adjust the clock speeds of the CPU 218 and / or the GPU 220 based on the respective workloads of the CPU 218 and the GPU 220 while the game application 212 is in a loading state.

[0079] For example, if loading performance module 254 determines that the workload of CPU 218 is higher than the workload of GPU 220 while gaming application 212 is in a loading state, loading performance module 254 may increase the clock speed of CPU 218 more than the increase in the clock speed of GPU 220 when gaming application 212 is in a loading state, may set the clock speed of CPU 218 to a clock speed higher than the clock speed of GPU 220, or may increase the clock speed of CPU 218 while not increasing the clock speed of GPU 220. In another example, if loading performance module 254 determines that the workload of CPU 218 is lower than the workload of GPU 220 while gaming application 212 is in a loading state, loading performance module 254 may increase the clock speed of GPU 220 more than the increase in the clock speed of CPU 218 when gaming application 212 is in a loading state, may set the clock speed of GPU 220 to a clock speed higher than the clock speed of CPU 218, or may increase the clock speed of GPU 220 while not increasing the clock speed of CPU 218.

[0080] Loading performance module 254 may use hardware counters of CPU 218 and GPU 220 to determine the respective workloads of CPU 218 and GPU 220 while game application 212 is in a loading state. For example, when game application 212 is executed while in a loading state, the hardware counters of CPU 218 and GPU 220 may count the number of instructions and / or functions executed by CPU 218 and GPU 220, respectively. Thus, loading performance module 254 may determine the respective workloads of CPU 218 and GPU 220 when game application 212 is executed while in a loading state based on the values ​​of the hardware counters of CPU 218 and GPU 220.

[0081] In some examples, loading performance module 254 may increase the clock speed of CPU 218 and / or GPU 220 by setting the clock speed of CPU 218 and / or GPU 220 to the maximum clock speed allowed by computing device 202 for CPU 218 and / or GPU 220, respectively. In some examples, in response to determining that gaming application 212 is in a loading state, loading performance module 254 may increase the clock speed of CPU 218 and / or GPU 220 to a clock speed that exceeds a clock speed threshold specified by computing device 202. For example, when computing device 202 is running on battery power, computing device 202 may set the maximum clock speed of CPU 218 and / or GPU 220 to be lower than the maximum clock speed of CPU 218 and / or GPU 220 when computing device 202 is connected to utility power (e.g., when computing device 202 is plugged into a power outlet). Thus, in some examples, when computing device 202 is running on battery power, loading performance module 254, in response to determining that gaming application 212 is in a loading state, may increase the clock speed of CPU 218 and / or the clock speed of GPU 220 to a clock speed that exceeds the maximum clock speed set by computing device 202 for when computing device 202 is running on battery power.

[0082] In some examples, in response to determining that game application 212 is in a loading state, loading performance module 254 may determine whether to increase the clock speed of CPU 218 and / or the clock speed of GPU 220 and the amount by which to increase the clock speed of CPU 218 and / or the clock speed of GPU 220 based at least in part on the pattern of functions called by game application 212 in the loading state. For example, if the functions called by game application 212 in the loading state are primarily functions to be performed by CPU 218, such as functions for loading assets, networking functions, etc., loading performance module 254 may increase the clock speed of CPU 218. In another example, if the functions called by game application 212 in the loading state also include functions to be performed by GPU 220, such as shader compilation functions, loading performance module 254 may also increase the clock speed of GPU 220.

[0083] In some examples, different game applications may cause the loading performance module 254 to increase the clock speed of the CPU 218 / GPU 220 to different clock speeds when those game applications are in a loading state, and / or the loading performance module 254 may ramp the clock speed of the CPU 218 / GPU 220 at different rates. In some examples, each of multiple different game applications may be associated with a loading-state CPU clock speed and / or a loading-state GPU clock speed. Thus, when the game application 212 is in a loading state, the loading performance module 254 may reference the loading-state CPU clock speed and / or the loading-state GPU clock speed associated with the game application 212. Thus, the loading performance module 254 may set the clock speed of the CPU 218 to the loading CPU clock speed associated with the game application 212 and / or set the clock speed of the GPU 220 to the loading GPU clock speed associated with the game application 212 when the game application 212 enters a loading state.

[0084] A loaded CPU clock speed and / or a loaded GPU clock speed associated with a game application may be determined by profiling the execution of the game application. In the example of a game application 212 running on one or more processors 240, the loading performance module 254 may collect information, such as hardware counter values, about the execution of the loaded game application 212 at different clock speeds of the CPU 218 and / or GPU 220 by varying the clock speed of the CPU 218 and / or GPU 220 when the game application 212 is in a loaded state and varying how quickly the clock speed of the CPU 218 and / or GPU 220 increases when the game application 212 is executed.

[0085] Loading performance module 254 may analyze collected information, such as hardware counter values, to determine a loading state CPU clock speed and / or a loading state GPU clock speed associated with gaming application 212. For example, loading performance module 254 may determine that if the hardware counter values ​​of CPU 218 do not vary between the maximum clock speed of CPU 218 and a lower clock speed of CPU 218, then loading performance module 254 may be able to set the clock speed of CPU 218 to the lower clock speed when gaming application 212 is in a loading state without impairing performance and without otherwise increasing the time that gaming application 212 spends in a loading state.

[0086] In another example, the loading performance module 254 may determine that if the hardware counter value of the CPU 218 does not change between a faster increase in the CPU 218 clock speed and a slower increase in the CPU 218 clock speed, then when the gaming application 212 is in a loading state, the loading performance module 254 may be able to ramp the clock speed for the CPU 218 at the slower rate of increase without impairing performance or otherwise increasing the time the gaming application 212 spends in the loading state.

[0087] In another example, in addition to or as an alternative to increasing the clock speed of CPU 218 and / or the clock speed of GPU 220, loading performance module 254 may increase the priority of gaming application 212 by operating system 226. That is, if operating system 226 assigns a priority to each of the processes running on one or more processors 240, operating system 226 may increase the priority of one or more processes of gaming application 212. If operating system 226 schedules the execution of processes based on the priority of each of the processes, increasing the priority of gaming application 212 may enable operating system 226 to schedule the execution of gaming application 212 ahead of other lower priority processes, thereby enabling gaming application 212 to more quickly load assets and perform other actions to transition from a loading state, for example, to a gaming state. In some examples, instead of or in addition to increasing the priority of gaming application 212, loading performance module 254 may decrease the priority of one or more other processes running on one or more processors 240.

[0088] FIG. 3 is a block diagram illustrating an exemplary computing device that outputs graphical content for display on a remote device in accordance with one or more techniques of this disclosure. In general, the graphical content may include any visual information that can be output for display, such as text, an image, a group of moving images, etc., but these are merely examples. The example illustrated in FIG. 3 includes a computing device 360, a presence-sensing 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-sensing display 364 may be an example of the display 114 shown in FIG. 1 and the display 214 shown in FIG. 2. While shown in FIGS. 1 and 2 as standalone computing devices 102 and 202 for illustrative purposes, 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, for example, include a presence-sensing display.

[0089] As shown in the example of Figure 3, computing device 360 ​​may be an example of computing device 102 of Figure 1 or computing device 202 of Figure 2 and may include a processor having functionality as described with respect to one or more processors 108 of Figure 1 or one or more processors 240 of Figure 2. In such an example, computing device 360 ​​may be operatively coupled to presence sensing display 364 by communication channel 362A, which may be a system bus or other suitable connection. Computing device 360 ​​may also be operatively coupled to communication unit 370, described further below, by communication channel 362B, which may also be a system bus or other suitable connection. Although shown alone as an example in Figure 3, computing device 360 ​​may be operatively coupled to presence sensing display 364 and communication unit 370 by any number of one or more communication channels.

[0090] In other examples, such as those previously illustrated 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, a wearable device, etc. In some examples, a computing device may be a desktop computer, a tablet computer, a smart television platform, a camera, a server, or a mainframe.

[0091] The presence sensing display 364 may include a display device 366 and a presence sensing 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 sensing input device 368 may use electrostatic, 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 sensing display 364 and send an indication of such user input to the computing device 360 ​​using the communication channel 362A. In some examples, the presence sensing input device 368 may be physically positioned above the display device 366 such that when a user positions an input unit over a graphical element displayed by the display device 366, the position of the presence sensing input device 368 corresponds to the position of the display device 366 where the graphical element is being displayed.

[0092] As shown in FIG. 3, computing device 360 ​​may also include and / or be operatively coupled to a communications unit 370. Communications unit 370 may include the functionality of communications unit 244 as described in FIG. 2. Examples of communications unit 370 may include a network interface card, an Ethernet card, an optical transceiver, a radio frequency transceiver, or any other type of device capable of transmitting and receiving information. Other examples of such communications units may include Bluetooth, 3G, and WiFi radios, a universal serial bus (USB) interface, etc. 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 illustrative purposes.

[0093] Also shown in FIG. 3 is a projector 380 and a projector screen 382. Other examples of such projection devices may include electronic whiteboards, holographic display devices, and any 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 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 use optical recognition or other suitable technology to determine one or more user inputs (e.g., continuous gestures, multi-touch gestures, single-touch gestures) at the projector screen and send an indication 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 necessary, and projector 380 may project graphical content onto any suitable medium and detect one or more user inputs using optical recognition or other such suitable technology.

[0094] The projector screen 382, ​​in some examples, may include a presence-sensing display 384. The presence-sensing display 384 may include a subset of or all of the functionality of the presence-sensing displays 384 and / or 364 as described in this disclosure. In some examples, the presence-sensing 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-sensing display 384 may use electrostatic, 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 projector screen 382 and may send indications of such user inputs to the computing device 360 ​​using one or more communication units.

[0095] Also shown in FIG. 3 are a mobile device 386 and a visual display device 390. The mobile device 386 and the visual display device 390 may each include computing and connectivity capabilities. Examples of the mobile device 386 may include an e-reader device, a convertible notebook device, a hybrid slate device, etc. Examples of the visual display device 390 may include other semi-stationary devices, such as a television or a computer monitor. As shown in FIG. 3, the mobile device 386 may include a presence sensing display 388. The visual display device 390 may include a presence sensing display 392. The presence sensing displays 388 and 392 may include a subset of or all of the functionality of the presence sensing displays 384 and / or 364 as described in this disclosure. In some examples, the presence sensing displays 388 and 392 may include additional functionality. In any case, the presence sensing display 392 may receive data from the computing device 360 ​​and display graphical content, for example. In some examples, the presence sensing display 392 may use electrostatic, 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 projector screen and may send indications of such user inputs to the computing device 360 ​​using one or more communication units.

[0096] As mentioned above, in some examples, computing device 360 ​​may output graphical content for display on presence-sensing display 364 coupled to computing device 360 ​​by a system bus or other suitable communication channel. Computing device 360 ​​may also output graphical content for display on one or more remote devices, such as projector 380, projector screen 382, ​​mobile device 386, and visual display device 390. For example, computing device 360 ​​may execute one or more instructions for generating and / or modifying graphical content in accordance with the techniques of this disclosure. Computing device 360 ​​may output data including the graphical content to a communication unit of computing device 360, such as communication unit 370. Communication unit 370 may transmit the data to one or more of the remote devices, such as projector 380, projector screen 382, ​​mobile device 386, and / or visual display device 390. In this manner, 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 to a presence-sensing display included in and / or operatively coupled to each remote device.

[0097] In some examples, the computing device 360 ​​may not output graphical content to a presence sensing 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 sensing display 364 coupled to the computing device 360 ​​by communication channel 362A and one or more remote devices. In such examples, the graphical content may be displayed substantially simultaneously on each respective device. For example, some delay may occur due to 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 sensing display 364 may differ from the display of the graphical content output for display on the one or more remote devices.

[0098] Computing device 360 ​​may transmit and receive data using any suitable communications technology. For example, computing device 360 ​​may be operably coupled to external network 374 using network link 372A. Each of the remote devices depicted in FIG. 3 may be operably coupled to external network 374 by one of respective network links 372B, 372C, or 372D. External network 374 may include operably interconnected network hubs, network switches, network routers, etc., thereby enabling the exchange of information between computing device 360 ​​and the remote devices depicted in FIG. 3. In some examples, network links 372A-372D may be Ethernet, ATM, or other network connections. Such connections may be wireless and / or wired connections.

[0099] In some examples, 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 computing device 360 ​​sends and receives data directly to a remote device using wired or wireless communication. That is, in some examples of direct device communication 378, data transmitted by computing device 360 ​​may not be forwarded by one or more additional devices before being received at the remote device, or 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 shown in FIG. 3 may be operatively coupled to computing device 360 ​​by communication links 376A-376D. In some examples, communication links 376A-376D may be connections using Bluetooth, near field communication, universal serial bus, infrared, etc., and such connections may be wireless and / or wired connections.

[0100] In accordance with the techniques of this disclosure, a game application may execute on computing device 360 ​​and output image data for display on presence sensing display 364, presence sensing display 384, presence sensing display 388, or presence sensing display 392. Computing device 360 ​​may determine whether the game application is in a loading state based at least in part on one or more characteristics associated with the game application running on computing device 360. In response to determining that the game application is in a loading state, computing device 360 ​​adjusts at least one of the clock speed of one or more processors of computing device 360 ​​or the prioritization of the game application to enable the game application to transition more quickly from the loading state to another state, such as a gaming state.

[0101] 4 is a flowchart illustrating an example operating mode of a computing device for determining whether a game application is in a loading state in accordance with one or more techniques of this disclosure. FIG. 4 is described below in the context of computing device 202 of FIG. 2. As shown in FIG. 4, computing device 202 may determine one or more characteristics of game application 212 executing on one or more processors 240 of computing device 202 (402). Computing device 202 may determine that game application 212 executing on one or more processors 240 is in a loading state based at least in part on the one or more characteristics (404). In response to determining that game application 212 is in a loading state, computing device 202 may adjust at least one of the clock speed of one or more processors 240 or the prioritization of game application 212 (406).

[0102] The present disclosure includes the following examples. Example 1: A method includes determining, by one or more processors of a computing device, one or more characteristics of a gaming application running on the one or more processors; determining, by the one or more processors, that the gaming application is in a loading state; and, in response to determining that the gaming application is in the loading state, adjusting, by the one or more processors, at least one of a clock speed of the one or more processors or a prioritization of the gaming application.

[0103] Example 2: The method of Example 1, wherein the one or more characteristics include a usage pattern of the one or more processors by the game application running on the one or more processors, and determining that the game application is in the loading state further includes determining, by the one or more processors, that the game application is in the loading state based at least in part on the usage pattern of the one or more processors by the game application.

[0104] Example 3: The method of any one of Examples 1 and 2, wherein the one or more characteristics include a pattern of functions called by the game application while it is running on the one or more processors, and determining that the game application is in the loading state further includes determining, by the one or more processors, that the game application is in the loading state based at least in part on the pattern of functions called by the game application.

[0105] Example 4: The method of any one of Examples 1-4, wherein the one or more characteristics include a pattern of input received at an input device while the one or more processors are executing the game application, and determining that the game application is in the loading state further includes determining, by the one or more processors, that the game application is in the loading state based at least in part on the pattern of input received at the input device.

[0106] 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 a display device, and determining that the game application is in the loading state further includes determining, by the one or more processors, that the game application is in the loading state based at least in part on the image data output for display on the display device.

[0107] Example 6: The method of any one of Examples 1-5, wherein determining that the game application is in the loading state further includes determining, by the one or more processors, that the game application is performing one or more actions to prepare to provide an interactive gameplay environment for active gameplay.

[0108] Example 7: The method of any of Examples 1-6, wherein adjusting at least one of the clock speeds of the one or more processors or the prioritization of the gaming application further includes adjusting, by the one or more processors, a clock speed of each of at least one of a central processing unit (CPU) or a graphics processing unit (GPU) of the one or more processors.

[0109] Example 8: The method of Example 7, wherein adjusting the respective clock speeds of at least one of the CPUs or the GPUs of the one or more processors further includes adjusting, by the one or more processors, the respective clock speeds of at least one of the CPUs or the GPUs of the one or more processors to exceed a clock speed threshold associated with the computing device running on battery power.

[0110] Example 9: The method of Example 7, wherein adjusting the respective clock speeds of at least one of the CPUs or the GPUs of the one or more processors further includes adjusting the respective clock speeds of at least one of the CPUs or the GPUs of the one or more processors based at least in part on a function called by the gaming application in the loading state.

[0111] Example 10: The method of Example 7, wherein adjusting the respective clock speeds of at least one of the CPU or the GPU of the one or more processors further includes: referencing, by the one or more processors, at least one of a CPU clock speed in a loading state associated with the gaming application or a GPU clock speed in a loading state associated with the gaming application; and adjusting, by the one or more processors, the respective clock speeds of at least one of the CPU or the GPU of the one or more processors based at least in part on at least one of the CPU clock speed in the loading state or the GPU clock speed in the loading state.

[0112] Example 11: A computing device includes 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 running on the one or more processors, determine that the gaming application is in a loading state based at least in part on the one or more characteristics, and adjust at least one of a clock speed of the one or more processors or a prioritization of the gaming application in response to determining that the gaming application is in the loading state.

[0113] Example 12: The computing device of Example 11, wherein the one or more characteristics include one or more of a usage pattern of the one or more processors by the game application while executing on the one or more processors, a pattern of functions called 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 that the game application is in the loading state, the one or more processors are further configured to determine that the game application is in the loading state based at least in part on one or more of the usage pattern of the one or more processors by the game application, the pattern of functions called by the game application while executing on the one or more processors, the pattern of inputs received at the input device while executing the game application on the one or more processors, or the image data output by the game application for display on the display device.

[0114] Example 13: A computing device described in any one of Examples 11 and 12, wherein to determine that the game application is in the loading state, the one or more processors are further configured to determine that the game application is performing one or more actions to prepare to provide an interactive gameplay environment for active gameplay.

[0115] Example 14: A computing device described in any one of Examples 11 to 13, wherein, to adjust at least one of the clock speeds of the one or more processors or the prioritization of the gaming application, the one or more processors are further configured to adjust the clock speed of each of at least one of a central processing unit (CPU) or a graphics processing unit (GPU) of the one or more processors.

[0116] Example 15: The computing device of Example 14, wherein, to adjust the respective clock speeds of at least one of the CPUs or the GPUs of the one or more processors, the one or more processors are further configured to adjust the respective clock speeds of at least one of the CPUs or the GPUs of the one or more processors based at least in part on a function called by the gaming application in the loading state.

[0117] Example 16: The computing device of Example 14, wherein, to adjust the respective clock speeds of at least one of the CPUs or the GPUs of the one or more processors, the one or more processors are further configured to adjust the respective clock speeds of at least one of the CPUs or the GPUs of the one or more processors based at least in part on a function called by the gaming application in the loading state.

[0118] Example 17: The computing device of Example 14, wherein, to adjust the respective clock speeds of at least one of the CPU or the GPU of the one or more processors, the one or more processors are further configured to reference at least one of a CPU clock speed in a loading state associated with the game application or a GPU clock speed in a loading state associated with the game application, and adjust the respective clock speeds of at least one of the CPU or the GPU of the one or more processors based at least in part on at least one of the CPU clock speed in the loading state or the GPU clock speed in the loading state.

[0119] Example 18: A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a computing device to perform any one of the methods described in Examples 1-10.

[0120] Example 19: A computing device comprising means for performing the method of any one of Examples 1-10.

[0121] Example 20: 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.

[0122] 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 any other storage medium usable to store desired program code in the form of instructions or data structures and accessible by a computer. Also, any connection is properly referred to as a computer-readable medium. For example, if instructions are sent 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 waves, and microwaves, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio waves, and microwaves are included within the definition of medium. However, it should be understood that one or more computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transitory media, but instead cover non-transitory tangible storage media. As used herein, disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0123] 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 any other structure suitable for implementing the techniques described herein. Additionally, 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.

[0124] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC), or a set of ICs (e.g., a chipset). Various components, modules, or units are described in this disclosure to highlight functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by various hardware units. Rather, as described above, the various units may be combined within a hardware unit or may be provided by a collection of interoperating hardware units, including one or more processors, as described above, in combination with appropriate software and / or firmware.

[0125] 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 said one or more processors; determining, by the one or more processors, that the gaming application is in a loading state based at least in part on the one or more characteristics; and in response to determining that the gaming application is in the loading state, performing, by the one or more processors, at least one of increasing a clock speed of the one or more processors or increasing a priority of the gaming application.

2. The one or more characteristics include a usage pattern of the one or more processors by the gaming application running on the one or more processors, and determining that the gaming application is in the loading state includes:

2. The method of claim 1, further comprising determining, by the one or more processors, that the gaming application is in the loading state based at least in part on the usage pattern of the one or more processors by the gaming application.

3. The one or more characteristics include a pattern of functions called by the gaming application executing on the one or more processors, and determining that the gaming application is in the loading state includes:

3. The method of claim 1, further comprising determining, by the one or more processors, that the game application is in the loading state based at least in part on a pattern of the functions called by the game application.

4. The one or more characteristics include a pattern of input received at an input device while the one or more processors are executing the game application, and determining that the game application is in the loading state includes:

4. The method of claim 1, further comprising determining, by the one or more processors, that the gaming application is in the loading state based at least in part on a pattern of the inputs received at the input device.

5. The one or more characteristics include image data output by the game application for display on a display device, and determining that the game application is in the loading state includes:

5. The method of claim 1, further comprising determining that the game application is in the loading state based at least in part on the image data output by the one or more processors for display on the display device.

6. Determining that the game application is in the loading state includes:

6. The method of claim 1, further comprising determining, by the one or more processors, that the game application is performing one or more actions to prepare to provide an interactive gameplay environment for active gameplay.

7. Increasing the clock speed of the one or more processors comprises:

7. The method of claim 1, comprising increasing, by the one or more processors, a clock speed of each of at least one of a central processing unit (CPU) or a graphics processing unit (GPU) of the one or more processors.

8. Increasing the respective clock speeds of at least one of the CPU or the GPU of the one or more processors comprises:

8. The method of claim 7, comprising increasing, by the one or more processors, the respective clock speeds of at least one of the CPU or the GPU of the one or more processors to exceed a clock speed threshold associated with the computing device running on battery power.

9. Increasing the respective clock speeds of at least one of the CPU or the GPU of the one or more processors comprises:

8. The method of claim 7, comprising increasing the respective clock speed of at least one of the CPU or the GPU of the one or more processors based at least in part on a function called by the gaming application in the loading state by the one or more processors.

10. Increasing the respective clock speeds of at least one of the CPU or the GPU of the one or more processors comprises: referencing, by the one or more processors, at least one of a CPU clock speed in a loading state associated with the gaming application or a GPU clock speed in a loading state associated with the gaming application; and increasing, by the one or more processors, the respective clock speeds of at least one of the CPU or the GPU of the one or more processors based at least in part on at least one of a CPU clock speed in the loading state or a GPU clock speed in the loading state.

11. Memory and one or more processors operably coupled to the memory, the one or more processors: determining one or more characteristics of a gaming application executing on said one or more processors; determining that the gaming application is in a loading state based at least in part on the one or more characteristics; In response to determining that the gaming application is in the loading state, the computing device is configured to at least one of: increase a clock speed of the one or more processors or increase a priority of the gaming application.

12. further comprising a display device; the one or more characteristics include one or more of a usage pattern of the one or more processors by the game application while executing on the one or more processors, a pattern of functions called by the game application while executing on the one or more processors, a pattern of inputs received at an input device while the game application is executing on the one or more processors, or image data output by the game application for display on the display device, and to determine that the game application is in the loading state, the one or more processors:

12. The computing device of claim 11, further configured to determine that the game application is in the loading state based at least in part on one or more of the pattern of usage of the one or more processors by the game application, a pattern of the functions called by the game application while executing on the one or more processors, a pattern of the inputs received at the input device while the game application is executing on the one or more processors, or the image data output by the game application for display on the display device.

13. To determine that the game application is in the loading state, the one or more processors:

13. The computing device of claim 11, further configured to determine that the game application is performing one or more actions to prepare to provide an interactive gameplay environment for active gameplay.

14. To increase the clock speed of the one or more processors, the one or more processors:

14. The computing device of claim 11, configured to increase the clock speed of at least one of a central processing unit (CPU) or a graphics processing unit (GPU) of the one or more processors.

15. To increase the respective clock speed of at least one of the CPU or the GPU of the one or more processors, the one or more processors:

15. The computing device of claim 14, configured to increase the respective clock speed of at least one of the CPU or the GPU of the one or more processors based at least in part on a function called by the gaming application in the loading state.

16. To increase the respective clock speed of at least one of the CPU or the GPU of the one or more processors, the one or more processors:

15. The computing device of claim 14, configured to increase the respective clock speed of at least one of the CPU or the GPU of the one or more processors based at least in part on a function called by the gaming application in the loading state.

17. To increase the respective clock speed of at least one of the CPU or the GPU of the one or more processors, the one or more processors: referencing at least one of a CPU clock speed in a loading state associated with the game application or a GPU clock speed in a loading state associated with the game application; 15. The computing device of claim 14, configured to increase the respective clock speed of at least one of the CPU or the GPU of the one or more processors based at least in part on at least one of a CPU clock speed in the loading state or a GPU clock speed in the loading state.

18. A program for causing a computer to execute the method according to any one of claims 1 to 10.

Citation Information

Patent Citations

  • Information processing terminal, information processing system, and information processing program

    JP2012018657A