Game application loading state detection
Computing devices determine game application loading states through processor characteristics and adjust speed/priority to reduce loading times, improving user experience and battery life.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- GOOGLE LLC
- Filing Date
- 2026-01-07
- Publication Date
- 2026-05-26
AI Technical Summary
Game applications often enter a loading state during preparation for a session, causing users to wait unnecessarily, and existing methods lack efficient ways to determine and reduce this loading time without explicit application state indications.
Computing devices can determine a game application's loading state based on characteristics such as processor usage patterns, function calls, and image data, and respond by increasing processor clock speed or priority to shorten loading times.
This approach reduces loading time, enhances user experience by allowing quicker gameplay initiation, and conserves battery life by adaptively adjusting processor speed based on application state.
Smart Images

Figure 2026086403000001_ABST
Abstract
Description
Background Art
[0001] Before entering a game session, a game application can 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 used by the game application during the game session. While the game application is performing such actions to prepare for the game session, the game application may output a loading screen to indicate to the user that the game application is in the loading state.
Summary of the Invention
[0002] Generally, the technology of the present disclosure is directed to determining whether a game application running on a computing device is in a loading state, and taking one or more actions to reduce the time spent by the game application in the loading state in response to determining that the game application is in the loading state. For example, in response to determining that the game application is in the loading state, the computing device can increase the clock speed of one or more processors of the computing device and / or raise the priority of the game application, whereby the computing device can shorten the time it takes for the game application to perform actions to prepare for the game session, thereby reducing the time that a user of the game 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 explicit indication of the game application's state. Instead, the computing device may 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 the performance of game applications that do not explicitly indicate those states.
[0004] As an example, the disclosure describes a method that includes: one or more processors of a computing device determining one or more characteristics of a game application running on one or more processors; one or more processors determining, at least in part, that the game application is in a loading state; and one or more processors adjusting, in response to the determination that the game application is in a loading state, at least one of the clock speeds of one or more processors or the prioritization of the game application.
[0005] In another example, the disclosure describes a computing device comprising memory and one or more processors operably coupled to the memory, each processor being configured to determine one or more characteristics of a game application running on the one or more processors, to determine, at least in part, that the game application is in a loading state, and to adjust, in response to the determination that the game application is in a loading state, the clock speed of the one or more processors or the prioritization of the game application.
[0006] In another example, this disclosure refers to one or more processors of a computing device at runtime. The present invention relates to a computer-readable storage medium that stores instructions for determining one or more characteristics of a game application running on one or more processors, determining, at least partially based on one or more characteristics, that the game application is in a loading state, and for adjusting at least one of the clock speeds of one or more processors or the prioritization of the game application in response to the determination that the game application is in a loading state.
[0007] Details of one or more examples are described in the accompanying drawings and the following description. Other features, purposes, and advantages of this disclosure will become apparent from the description and drawings, as well as the claims. [Brief explanation of the drawing]
[0008] [Figure 1] This is a conceptual diagram illustrating an exemplary computing device configured to determine that a game application is in a loading state, according to one or more aspects of the present disclosure. [Figure 2] This is a block diagram showing an exemplary computing device according to one or more aspects of the present disclosure. [Figure 3] This block diagram shows an exemplary computing device that outputs graphical content for display on a remote device, in accordance with one or more of the technologies of this disclosure. [Figure 4] This flowchart shows exemplary operating modes of a computing device for determining whether a game application is in a loading state, in accordance with one or more of the technologies of this disclosure. [Modes for carrying out the invention]
[0009] Generally, the techniques of this disclosure relate 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 time the game application spends in the loading state. A computing device may determine whether a game application is in a loading state without receiving an explicit indication of the game application's state. Alternatively, a computing device may determine whether a 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 several states during execution, including a game state, a loading state, and a menu state. A game application may be in a game state when it provides an interactive gameplay environment for active gameplay 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 it is displaying a menu screen. A game application may be in a loading state when it is performing actions such as loading game assets and / or resources, loading and / or compiling shaders used during the game, or setting up a multiplayer game session, in preparation for entering a game session. In some examples, a game application may be in a waiting state when a player is in a lobby or waiting room.
[0011] When a game application is in a loading state to perform actions to enter a game session, the user of the game application may be forced to sit and wait until the game session begins before they can start or resume gameplay. Therefore, shortening the time that the game application is in a loading state is important. If this is possible, it could provide a better user experience by allowing users to start playing game applications more quickly.
[0012] In accordance with aspects of this disclosure, a computing device may, while a game application is running, 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 enabling the computing device to reduce the time it takes for the game application to perform actions to prepare the game session.
[0013] Computing devices may be able to determine whether a game application is loading without receiving any explicit indication from the game application that it is loading. Instead, computing devices may be able to determine whether a game application is loading based on one or more characteristics associated with the running game application. Such characteristics may include patterns of user input received while the game application is running, patterns of usage of one or more processors on the computing device, functions issued by the running game application, and image data output by the running game application.
[0014] The technology of this disclosure may provide one or more technical advantages. For example, by determining whether a game application is in a loading state and increasing the clock speed of one or more processors when the game application is in a loading state, the technology of this disclosure enables a computing device to adaptively adjust the clock speed of one or more processors based on the state of the game application. This allows the computing device to increase the clock speed of one or more processors when an increase in clock speed may be necessary to perform a performance-critical task, and to decrease the clock speed of one or more processors when a higher clock speed may no longer be necessary.
[0015] Therefore, by enabling a computing device to adaptively adjust the clock speed of one or more processors based on the state of the game application, the computing device may be able to reduce battery consumption while the game application is running by preventing one or more processors from constantly operating at the highest possible clock speed. Reducing the battery consumption of the computing device may increase the battery life of the computing device, especially if it is a mobile computing device.
[0016] Figure 1 is a conceptual diagram showing an exemplary computing device configured to determine that a game application is in a loading state, according to one or more aspects of this disclosure. In the example of Figure 1, computing device 102 may include, but is not limited to, a mobile phone (including a smartphone), a laptop computer, a tablet computer, a wearable computing device such as a smartwatch or computerized eyewear, a smart TV platform, a camera, or a personal digital assistant (PDA). In that example, computing device 102 may include stationary computing devices such as desktop computers, servers, and mainframes.
[0017] As shown in Figure 1, the computing device 102 includes a user interface component 104 ("UIC104"), a user interface module 106 ("UI module 106"), and a game application 112. The UI module 106 and the game application 112 can perform the operations described herein using software, hardware, firmware, or a combination of both hardware, software, and firmware, and reside and run on the computing device 102 or one or more other remote computing devices. In some examples, the UI module 106 and the game application 112 may be implemented as hardware, software, and / or a combination of hardware and software. The computing device 102 can run the module 106 and the game application 112 using one or more processors 108. The computing device 102 may run either the module 106 or the game application 112 as a virtual machine running on underlying hardware, or within such a virtual machine. The UI module 106 and the game application 112 can be implemented in a variety of ways. For example, either module 106 and / or game application 112 may be implemented as a downloadable or pre-installed application, i.e., an “app.” In another example, either module 106 and game application 112 may be implemented as part of the operating system of computing device 102. Other examples of computing device 102 implementing the technology of this disclosure may include additional components not shown in Figure 1.
[0018] One or more processors 108 can implement functions and / or execute instructions within the computing device 102. For example, one or more processors 108 may perform one or more operations by receiving and executing instructions that provide functions for the UI module 106 and the game application 112. That is, the UI module 106 and the game application 112 may be operable by processor 40 to perform various functions described herein. In the example of Figure 1, one or more processors include a central processing unit (CPU) 118 and a graphics processing unit (GPU) 120. The GPU 120 may be a processing unit configured not only to perform graphics-related functions such as generating and outputting graphics data for presentation on a display, but also to perform non-graphics-related functions that leverage the large processing parallelism provided by the GPU 120. Examples of CPU 118 and GPU 120 include, but are not limited to, digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits.
[0019] The UIC 104 of computing device 102 can function as an input and output device for computing device 102. For example, the UIC 104 can function as an input device using a resistive touchscreen, surface acoustic wave touchscreen, electrostatic touchscreen, projected capacitive touchscreen, pressure-sensitive screen, acoustic pulse recognition touchscreen, or other presence-sensing screen technology. The UIC 104 uses one or more of the following: liquid crystal display (LCD), dot matrix display, light-emitting diode (LED) display, micro-LED, mini-LED, organic light-emitting diode (OLED) display, electronic ink, or similar monochrome or color display capable of outputting visible information to the user of computing device 102. It can function as an output device. For example, UIC104 includes a display 114.
[0020] In some examples, the display 114 may be a presence-sensing screen capable of receiving haptic user input from a user of the computing device 102. The UIC 104 may receive haptic user input by detecting one or more taps and / or gestures from a user of the computing device 102 (for example, the user touching or pointing to one or more locations on the UIC 104 with a finger or stylus pen). The presence-sensing screen of the UIC 104 may present output to the user. The UIC 104 may present its output as a user interface that may be related to a function provided by the computing device 102. For example, the UIC 104 may present various functions and applications that run on the computing device 102, such as electronic messaging applications, messaging applications, and map applications.
[0021] The UI module 106 can be implemented in various ways. For example, the UI module 106 can be implemented as a downloadable or pre-installed application, i.e., an "app". In another example, the UI module 106 can be implemented as part of a hardware unit of a computing device 102. In yet another example, the UI module 106 can be implemented as part of the operating system of a computing device 102. In some examples, some of the functionality of the UI module 106 or any other module described herein can be implemented across any combination of applications, hardware units, and operating systems.
[0022] The UI module 106 may interpret input detected by the UIC 104 (for example, when a user provides one or more gestures at the location of the UIC 104 where user interface 14A or another exemplary user interface is displayed). The UI module 106 may relay information about the input detected by the UIC 104 to one or more relevant platforms, operating systems, applications and / or services running on the computing device 102, thereby causing the computing device 102 to perform functions. The UI module 106 may also receive information and instructions from one or more relevant platforms, operating systems, applications and / or services running on the computing device 102 (e.g., a game application 112) to generate a graphical user interface (GUI). In addition, the UI module 106 may act as an intermediary between one or more relevant platforms, operating systems, applications and / or services running on the computing device 102 and various output devices of the computing device 102 (e.g., speakers, LED indicators, vibrators, etc.) that use the computing device 102 to produce output (e.g., graphical, audible, haptic, etc.).
[0023] In the example of FIG. 1, computing device 102 includes a game application 112 that is executed by one or more processors 108 to perform the functions of a video game. Although shown to be operable by computing device 102, in some examples, game application 112 may 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 send content and intent information to the remote computing device using any suitable form of data communication (e.g., wired or wireless network, short-range wireless communication such as near-field wireless communication or Bluetooth®). In some examples, the remote computing device may be a computing device different from computing device 102.
[0024] When game application 112 is executed by one or more processors 108, game application 112 may be in one of a plurality of states, and game application 112 may transition between the plurality of states during execution by one or more processors 108. For example, game application 112 may be in a game state, a menu state, or a loading state, and may transition between different states during execution by one or more processors 108.
[0025] When game application 112 provides an interactive game play environment for active game play by a user of computing device 102, such as during a game session, game application 112 may be in a game state. That is, when game application 112 is in a game state, the user of computing device 102 can actively provide user input at UIC 104 to play the game in the interactive game play environment by, for example, attempting to complete a certain level of the game, achieve a high score, defeat a final boss, defeat an opponent in the game, cooperate with other players to complete a goal (e.g., quest), simulate driving a vehicle, etc.
[0026] The game application 112 may not be in a game state when it is not providing an interactive gameplay environment for active gameplay by a user of a computing device. For example, the game application 112 may be in a menu state when it is outputting its menu screen. In another example, the game application 112 may be in a loading state when it is performing actions to prepare to enter a game session, for example, when it 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 the game, the game application 112 may transition from a game state to a loading state so that it can perform actions to prepare to load the next level of the game. In yet another example, when a user of the game application 112 starts or resumes the game, the game application 112 may enter a loading state to perform actions to prepare to load the game. Generally, a game application 112 may transition from a loading state to a game state once it has finished performing actions to prepare to enter a game session.
[0027] The game application 112 does not need to explicitly indicate its current state to the operating system of the computing device 102, nor does it need to explicitly indicate that it has left one state and entered a different state. That is, when the game application 112 is in a loading state, it does not need to provide an explicit indication to the operating system of the computing device 102 that it is in a loading state. Similarly, when the game application 112 is in a game state, it does not need to provide an explicit indication to the operating system of the computing device 102 that it is in a game state.
[0028] Therefore, in accordance with the embodiments of this disclosure, the computing device 102 may determine the current state of the game application 112 without receiving an explicit indication of the game application 112's current state from the game application 112. Alternatively, when the game application 112 is running on one or more processors 108, the computing device 102 may determine one or more characteristics associated with the game application 112 and determine the current state of the game application 112 based at least in part on one or more characteristics. In response to determining that the game application 112 is in a loading state, the computing device 102 may take one or more actions without user intervention, such as increasing the clock speed of the CPU 118 and / or the GPU 120, and / or increasing the execution priority of the game application 112 on the computing device 102, to reduce the time the game application 112 spends in the loading state.
[0029] One or more characteristics associated with a game application 112 running on one processor 108 may include any characteristics and / or behaviors of the computing device 102 that are caused by, or otherwise associated with, a game application 112 running on one or more processors 108, other than explicit indications of the state of the game application 112 received from the game application 112. Specifically, 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 compared to the game application 112 in other states while the game application 112 is in a loading state.
[0030] In some examples, one or more characteristics may include one or more of the following: the usage pattern of one or more processors 108 by the running game application 112; functions called by the game application 112 while the game application 112 is running and executed by one or more processors 108; 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 one or more characteristics associated with the game application 112. As described above, the computing device 102's operating system may determine whether the game application 112 is in a loading state without 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 appropriate 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 most 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 node which may apply one or more functions to a set of input values corresponding to one or more features and provide one or more corresponding output values. The one or more features 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] One or more corresponding output values may, in some examples, include the 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 several states. Consequently, 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 a loading state is greater than the probability that the game application 112 is in any other state.
[0034] In some examples, one or more corresponding output values may include confidence scores associated with each state of the game application 112. Thus, the computing device 102 may use one or more neural networks to determine each confidence score for each of the multiple states in which the game application 112 is, based on one or more characteristics. Consequently, the computing device 102 may determine that the game application 112 is in the loading state if the confidence score for the game application 112 being in the loading state is greater than the confidence scores for any other state in which the game application 112 is.
[0035] The computing device 102 can adjust at least one of the clock speeds of one or more processors 108 or the prioritization of the game application 112 in response to determining that the game application 112 is in a loading state. For example, the computing device 102 can adjust the clock speeds of the CPU 118 and / or the GPU 120 by increasing the number of instructions for the game application 112 that can be executed by the CPU 118 and / or the GPU 120 in response to determining that the game application 112 is in a loading state, or by increasing the clock speeds of the CPU 118 and / or the GPU 120 in order to reduce the time that the game application 112 remains in a loading state before transitioning to a game state.
[0036] In some cases, 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 for the game application 112 by one or more processors 108 over the execution of other processes similarly running on one or more processors 108. By increasing the priority of the game application 112, the number of instructions for the game application 112 executed by one or more processors 108 over a given period may increase, thereby allowing the computing device 102 to reduce the time the game application 112 remains in a loading state before transitioning to a game state.
[0037] In the example in Figure 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 running on one or more processors 108, and may determine that the game application 112 is in a loading state based on one or more characteristics associated with the game application 112 running on one or more processors 108. Therefore, the computing device 102 may adjust at least one of the clock speeds of one or more processors 108 or the prioritization of the game application 112 to reduce the time the game application 112 remains in a loading state. The game application 112 may transition from the loading state to the game state. During or after the transition to the game 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] Figure 2 is a block diagram illustrating an exemplary computing device according to one or more aspects of the present disclosure. Figure 2 shows only one specific example of computing device 102, and many other examples of computing device 102 may be used in other cases, and may include a subset of the components included in the exemplary computing device 102, or additional components not shown in Figure 2.
[0039] As shown in the example in Figure 2, the computing device 202 includes one or more processors 240, one or more input devices 242, one or more communication units 244, one or more output devices 246, one or more storage devices 248, and one or more sensors 256. The one or more processors 240 may be the example of one or more processors 108 in Figure 1. The one or more input devices 242 and one or more output devices 246 may be the example of UIC 104 in Figure 1. The storage device 248 of the computing device 202 also includes a UI module 222, a game application 212, an operating system 226, a state module 252, and a loading performance module 254. The communication channel 250 can interconnect each of the components 240, 242, 244, 246, 248, and 256 (physically, communicatively, and / or operationally) for communication between 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 components for communicating data between hardware and / or software.
[0040] One or more processors 240 may implement functions and / or execute instructions within the computing device 202. For example, a processor 240 on computing device 102 may receive and execute instructions stored by a storage device 248 that provides functions for the UI module 222, the game application 212, the operating system 226, the state module 252, and the loading performance module 254. These instructions executed by processor 240 may allow computing device 202 to store information in storage device 48 and / or modify that information during program execution. Processor 240 may execute instructions for the UI module 222, the game application 212, the operating system 226, the state module 252, and the loading performance module 254. That is, the UI module 222, the game application 212, the operating system 226, the state module 252, and the loading performance module 254 may be operable by processor 240 to perform various functions described herein.
[0041] One or more processors 240 may include CPU 218 and GPU 220. 20 may be a processing unit configured not only to perform graphics-related functions such as generating and outputting graphics data for display on a display, but also to perform non-graphics-related functions that leverage the large processing parallelism provided by the GPU 220. Examples of CPU 218 and GPU 220 include, but are not limited to, digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits.
[0042] One or more input devices 242 of the computing device 202 can receive input. Examples of inputs include tactile input, voice input, motor input, and optical input, but these are only examples. The input devices 242 of the computing device 202 may include, for example, a mouse, keyboard, voice response system, video camera, button, control pad, microphone, or any other type of device for detecting input from a human or machine. In some examples, the input devices 242 may be presence-sensing input devices, which may include presence-sensing screens, touch-sensing screens, and so on.
[0043] One or more output devices 246 of computing device 102 may generate outputs. Examples of outputs include haptic outputs, audio outputs, and video outputs. Output devices 246 of computing device 202 may include, for example, a presence-sensing screen such as a display 214, a sound card, a video graphics adapter card, a speaker, or any other type of device for generating haptic outputs, audio outputs, and / or visual outputs. Display 214 may use one or more of the following: liquid crystal displays (LCDs), dot matrix displays, light-emitting diode (LED) displays, micro-LEDs, mini-LEDs, organic light-emitting diode (OLED) displays, electronic inks, or similar monochrome or color displays capable of outputting visible information to the user of computing device 202.
[0044] One or more communication units 244 of the computing device 202 may communicate with external devices by transmitting and / or receiving data. For example, the computing device 202 may use the communication units 244 to transmit and / or receive radio signals over a radio network, such as a cellular radio network. In some examples, the communication units 244 may transmit and / or receive satellite signals over a satellite network, such as a Global Positioning System (GPS) network. Examples of communication units 244 include network interface cards (e.g., Ethernet® cards), optical transceivers, radio frequency transceivers, GPS receivers, or any other type of device capable of transmitting and / or receiving information. Other examples of communication units 44 may include Bluetooth®, GPS, 3G, 4G, and Wi-Fi® radios, as well as Universal Serial Bus (USB) controllers, which are installed in mobile devices.
[0045] One or more storage devices 248 within the computing device 202 may store information for processing during the operation of the computing device 202. In some examples, the storage device 248 is temporary memory, meaning that the primary purpose of the storage device 248 is not long-term storage. The storage device 248 on the computing device 202 may be configured to store information as volatile memory for short periods, 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, in some examples, one or more computer-readable storage media. The storage device 248 may be configured to store larger amounts of information than volatile memory. The storage device 248 may further be configured to store information long-term as a non-volatile memory space, and may retain information after activation / off-cycle. Examples of non-volatile memory include magnetic hard disks, optical disks, floppy disks, flash memory, or electrically programmable memory (EPROM) or electrically erasable and programmable (EEPROM) memory. The storage device 248 may store program instructions and / or data associated with a UI module 222, which may be an example of a UI module 106 in Figure 1; a game application 212, which may be an example of a game application 112 in Figure 1; an operating system 226; a state module 252; and a loading performance module 254.
[0047] As shown in Figure 2, the computing device 202 may include one or more sensors 256. Sensor 256 may include an accelerometer that generates accelerometer data. The accelerometer data may indicate the acceleration of the computing device 202 and / or changes in acceleration. Sensor 256 may include a gyroscope that generates gyroscope data. The gyroscope data may indicate the physical orientation of the computing device 202 and / or changes in physical orientation. In some examples, the orientation may be relative to one or more reference points. Sensor 256 may include a magnetometer that generates magnetometer data. The magnetometer data may indicate the magnetization of an object that is in contact with or near the computing device 202. The magnetometer data may indicate the Earth's magnetic field and, in some examples, may provide compass direction functionality. Sensor 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. Sensor 256 may include a proximity sensor that generates proximity data. Proximity data may indicate whether an object is present within proximity of the computing device 202. In some examples, proximity data may indicate how close the object is to the computing device 202. In some examples, sensor 256 may include a clock that generates a date and time. The date and time may be the current date and time.
[0048] As shown in Figure 2, the computing device 202 may include a power supply 257. In some examples, the power supply 257 may be a battery. The power supply 257 may supply power to one or more components of the computing device 202. Examples of power supply 257 may include, but are not limited to, batteries having the chemical properties of zinc carbon, lead acid, nickel cadmium (NiCd), nickel metal hydride (NiMH), lithium ion (Li-ion), and / or lithium ion polymer (Li-ion polymer). In some examples, the power supply 257 may have a limited capacity (e.g., 1000-4000 mAh).
[0049] In accordance with the technology of this disclosure, one or more processors 240 of a computing device 202 are configured to run a state module 252 to determine the state of a game application 212 when the game application 212 is running on one or more processors 240. When the game application 212 is running on one or more processors 240, the game application 212 may be in one of several states, including a game state, a loading state, a menu state, and so on.
[0050] The state module 252 may be able to determine the current state of the game application 212 without receiving explicit indication of the game application 212's state from the game application 212. Instead, the state module 252 can determine the state of the game application 212 when it is running on one or more processors 240. The state of a game application 212 can be determined based on one or more characteristics associated with the game application 212 running on one or more processors 240. One or more processors 240 may periodically execute the state module 252 when the game application 212 is running on one or more processors 240 to determine the current state of the game application 212. For example, one or more processors 240 may execute the state module 252 to determine the current state of the game application 212 at a rate such as once per second, five times per second, or ten times per second.
[0051] The game application 212 runs on one or more processors 240 to perform the functions of a video game. In some examples, the game application 212 may be an action game that may emphasize hand-eye coordination and reaction time, such as a first-person shooter or a battle royale game. In some examples, the game application 212 may be a simulation game, such as a motorsport 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 large-scale multiplayer role-playing game), a network multiplayer game, a single-player game, etc.
[0052] When the game application 212 runs on one or more processors 240, the game application 212 may output image data for display on the display 214. In some examples, the image data may be frames of graphics that the game application 212 outputs for display on the display 214 during the execution of the game application 212. For example, the image data may include frames of graphics for the interactive gameplay environment, frames of graphics for loading screens, frames of graphics for menu screens, and so on.
[0053] When the game application 212 is executed on one or more processors 240, the game application 212 may be in one of several states, and the game application 212 may transition between several states while being executed on one or more processors 240. Specifically, the game application 212 may be in either a game state or a non-game state, and may transition between a game state and a non-game state while being executed on one or more processors 240.
[0054] The game application 212 may be in a game state when it is providing an interactive gameplay environment for active gameplay by the user of the computing device 202. That is, when the game application 212 is in a game state, the game application 212 enables the user of the computing device 202 to actively provide user input on one or more input devices 242 in order to play the game in an interactive gameplay environment, such as by providing user input on one or more input devices 242 to attempt to complete a level of the game, achieve a high score, defeat the final boss, defeat opponents in the game, cooperate with other players to complete objectives (e.g., quests), or simulate driving a car.
[0055] The game application 212 may be in a loading state when it is performing actions to prepare the game application to enter a game session, such as loading assets and / or resources for the game, loading and / or compiling shaders used during the game, or setting up a multiplayer game session. For example, when a user of the game application 212 completes a certain level of the game, the game application 212 performs actions to prepare to load the next level of the game. The game application 212 may transition from a game state to a loading state, as it is capable of doing so. In another example, when a user of the game application 212 starts or resumes the game, the game application 212 may enter a loading state to perform actions to prepare for loading the game. Generally, the game application 212 may transition from a loading state to a game state once it has finished performing actions to prepare for entering a game session.
[0056] One or more characteristics associated with a game application 212 running on one or more processors 240 may include any characteristics and / or behaviors of the computing device 202 and / or components of the game application 212 that may indicate differences in the behavior of the game application 212 while the game application 212 is in various states and / or differences in the behavior of components of the computing device 202.
[0057] In some examples, one or more characteristics may include the usage patterns of one or more processors 240 by the running game application 212, such as the usage patterns 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, and the number of instructions executed by the game application 212 by the CPU 218 and / or GPU 220, may differ when the game application 212 is in a loading state compared to when the game application 212 is in another state.
[0058] While game application 212 is in a loading state, game application 212 may perform actions to prepare it to provide an interactive gameplay environment for active gameplay by entering a game state (e.g., starting a new game, starting a new level of the game, resuming the game from the last save position). Such actions may include loading assets for the game, making network calls to set up a multiplayer game session, and / or compiling shaders for rendering graphics when game application 212 is in a game state. Game application 212 may use the GPU 220 to compile shaders, while game application 212 may use the CPU 218 to perform other actions such as loading assets for the game and setting up a multiplayer game session.
[0059] Therefore, when game application 212 is in a loading state, it is likely to use the CPU 218 more than the GPU 220. In other words, when game application 212 is in a loading state, it is likely to call more functions executed by the CPU 218 compared to functions executed by the GPU 220, thereby increasing the usage of the CPU 218 compared to the GPU 220. Furthermore, when game application 212 is in a loading state, it is likely to use the CPU 218 more than when game application 212 is in a game state, and when game application 212 is in a loading state, it is likely to use the GPU 220 less than when game application 212 is in a game state.
[0060] In some examples, one or more processors 240 may determine the workload of the CPU 218 and / or GPU 220 by using hardware performance counters. Such hardware performance counters are used for each of the CPU 218 and GPU 220. This allows tracking information such as the number of cache misses, the number of instructions issued, and the number of instructions executed. For example, if the number of instructions executed by CPU218, as indicated by the CPU218's hardware performance counter value, is much larger than the number of instructions executed by GPU220, as indicated by the GPU220's hardware performance counter value, the difference in the number of instructions executed by CPU218 and GPU220 may indicate that the game application 212 is in a loading state.
[0061] Therefore, the state of the running game application 212 can be indicated by the usage patterns of one or more processors 240 by the running game application 212. The usage patterns of one or more processors 240 may include the usage of the CPU 218 and / or the GPU 220 while the game application 212 is running, such as the values of the hardware performance counters for the CPU 218 and GPU 220.
[0062] In some examples, one or more characteristics may include a pattern of one or more functions called by the running game application 212. When game application 212 is in a loading state, it calls relatively more initialization functions, network functions, and shader compilation functions to prepare for the transition to the game state compared to another game application 212 in a non-loading state. Therefore, if the functions called by game application 212 mainly consist of initialization functions, network functions, and shader compilation functions, such a pattern of functions called by game application 212 may indicate that game application 212 is in a loading state. Thus, a pattern of one or more functions called by game application 212 included in one or more characteristics may include the pattern of functions called by game application 212, the types of functions called by game application 212, and so on.
[0063] In some examples, one or more characteristics may include patterns of network usage by the running game application 212. When the game application 212 is in a loading state, it may receive relatively large amounts of data over the network, such as receiving assets over the network, but may also send relatively small amounts of data over the network. Therefore, if the network usage of the game application 212 mainly 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, one or more characteristics may include patterns of input received by one or more input devices 242 while the game application 212 is running. Typically, the input provided by a user of the game application may be less (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 menu state. Therefore, the computing device 202 may receive very little user input from one or more input devices 242 while the game application 212 is running compared to the frequency of user input received while the game application 212 is in a loading state or in other states. Thus, one or more characteristics may include those indicating the frequency of user input received by the computing device 202 while the game application 212 is running.
[0065] In some examples, the input pattern may also include the positions of inputs received by one or more input devices 242. For example, if a UI element corresponding to a control of a game application 212 is output to a known position on the presence detection display, the game Input received at such a location on the UI element corresponding to the control of the game application 212 may indicate that the game application 212 is in a gameplay state, while input received outside the location of the UI element corresponding to the control of the game application 212 may indicate that the game application 212 is not in a gameplay state.
[0066] In some cases, 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 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 loading mode, the game application 212 may often output image data that is uniformly one color, such as black or white, for display on the display 214. This is in contrast to when the game application 212 is in game mode. In game mode, the game application 212 may frequently change the image data output to the display 214, and the game application 212 has a stronger tendency to output image data of various different colors. The computing device 202 may be able to use the 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 image recognition on the image data, for example.
[0067] Therefore, one or more characteristics may include an indication of the amount of change between frames of image data output by the game application 212. For example, the state module 252 can obtain an image data histogram, such as a histogram that counts the number of times consecutive frames of image data output by the game application 212 do not change and the number of times consecutive frames of image data output by the game application 212 are different, based on the frames of image data output by the game application 212. If the number of times consecutive frames of image data output by the game application 212 do not change exceeds a predetermined threshold, such lack of change in image data by the game application 212 may indicate that the game application 212 is in a loading state.
[0068] In some examples, one or more characteristics may include logging output of the running game application 212. When the game application 212 is running, it may write information to one or more logs, such as a system log. For example, when the game application 212 enters a loading state and is in the loading state, the game application may write an indication to one or more logs that the game application 212 has entered and / or is in the loading state. Furthermore, when the game application 212 exits the 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 an indication that the game application 212 is no longer in the loading state.
[0069] In some examples, 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 name of the executable, etc. Because applications tend to have the same or similar names across different devices, the state module 252 may be able to determine, based on the name of the game application 212, whether the game application 212 is a game application that may be in a loading state. For example, the state module 252 may be able to access a list of game application names and determine whether the name of the game application 212 matches one of the entries in the list of game application names. If the state module 252 determines that the name of the game application 212 matches one of the entries in the list of game application names, 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.
[0070] The state module 252 may run on one or more processors 240 to determine whether the game application 212 is in a loading state, 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 any 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 appropriate 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 it determines that the 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 node which may apply one or more functions to a set of input values corresponding to one or more features and provide one or more corresponding output values. The one or more features 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 indications of the state of the game application 212.
[0073] In some examples, one or more neural networks in state module 252 are trained to determine the state of a game application based on one or more characteristics associated with the game application. One or more neural networks may perform such machine learning using training data containing a set of characteristics associated with states in order to learn the relationship between 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 cases, one or more neural networks can be trained on-device on computing device 202.
[0074] One or more corresponding output values may, in some examples, include the probability that the game application 212 is in each of several states. Therefore, the state module 252 may implement one or more neural networks to determine the probability of the game application 212's state based on one or more characteristics, and may determine that the state of the game application 212 is the state with the highest probability based on the corresponding probabilities, and output an indication. If the state module 252 determines that the loading state is the state of the game application 212 with the highest probability, the state module 252 may determine that the game application 212 is in the loading state.
[0075] In some examples, one or more corresponding output values of one or more neural networks may include each confidence score for each of multiple states. Thus, the state module 252 may implement one or more neural networks to determine each confidence score for each of multiple states in which the game application 212 is. Therefore, in some examples, the state module 252 may determine that the state of the game application 212 is 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 a game application 212 based on one or more characteristics of the game application 212 running on one or more processors 240. For example, the state module 252 may use a first model to determine whether a 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 a game application 212 is a game application, it may use a second model. This second model takes one or more additional characteristics associated with the game application 212 as input and outputs the 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 game state, based on the output of the second model. In some examples, the second model may be specifically trained for a particular game application, such as game application 212. The second model specifically trained for a particular game application may be trained using training data after running a copy of the particular game application.
[0077] One or more processors 240 of the computing device 202 are configured to run a loading performance module 254 in response to determining that the game application 212 is in a loading state, and to adjust at least one of the clock speeds of one or more processors 208 or the prioritization of the game application 212 in order to reduce the time the game application 212 spends in the loading state. For example, the loading performance module 254 may adjust the clock speed of the CPU 218 and / or the GPU 220 in response to determining that the game application 212 is in a loading state, by increasing the clock speed of the CPU 218 and / or the GPU 220. The CPU 218 and / or GPU 220 may operate at the increased clock speed until the game application 212 is no longer in a loading state.
[0078] The loading performance module 254 may determine how much to increase the clock speed of the CPU 218 and / or 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 GPU 220 by different amounts when the game application 212 is in a loading state, or it may adjust the clock speed of the CPU 218 and / or GPU 220 so that they operate at different clock speeds when the game application 212 is in a loading state. The loading performance module 254 may also determine the respective workload of the CPU 218 and GPU 220 while the game application 212 is in a loading state, and may adjust the clock speed of the CPU 218 and / or GPU 220 based on the respective workload of the CPU 218 and GPU 220 while the game application 212 is in a loading state.
[0079] For example, if the loading performance module 254 determines that the workload of the CPU 218 is higher than the workload of the GPU 220 while the game application 212 is loading, the loading performance module 254 may increase the clock speed of the CPU 218 by a larger amount than the increase in the clock speed of the GPU 220, set the clock speed of the CPU 218 to a higher clock speed than the clock speed of the GPU 220, or increase the clock speed of the CPU 218 while not increasing the clock speed of the GPU 220. In another example, if the loading performance module 254 determines that the workload of the CPU 218 is lower than the workload of the GPU 220 while the game application 212 is loading, the loading performance module 254 may increase the clock speed of the GPU 220 by a larger amount than the increase in the clock speed of the CPU 218, set the clock speed of the GPU 220 to a higher clock speed than the clock speed of the CPU 218, or increase the clock speed of the GPU 220 while not increasing the clock speed of the CPU 218.
[0080] The loading performance module 254 can use hardware counters of the CPU 218 and GPU 220 to determine the respective workloads of the CPU 218 and GPU 220 while the game application 212 is in a loading state. For example, when the game application 212 is running while in a loading state, the hardware counters of the CPU 218 and GPU 220 can count the number of instructions and / or functions executed by the CPU 218 and GPU 220, respectively. Therefore, based on the values of the hardware counters of the CPU 218 and GPU 220, the loading performance module 254 can determine the respective workloads of the CPU 218 and GPU 220 when the game application 212 is running while in a loading state.
[0081] In some examples, the loading performance module 254 may increase the clock speeds of the CPU 218 and / or the GPU 220 by setting them to the maximum clock speeds allowed by the computing device 202 for the CPU 218 and / or the GPU 220, respectively. In some examples, the loading performance module 254 may increase the clock speeds of the CPU 218 and / or the GPU 220 to a clock speed exceeding a clock speed threshold specified by the computing device 202 in response to determining that the game application 212 is in a loading state. For example, if the computing device 202 is operating on battery power, the computing device 202 may increase the clock speeds of the CPU 218 and / or the GPU 220 to a clock speed exceeding a clock speed threshold specified by the computing device 202. The maximum clock speeds of the CPU 218 and / or GPU 220 can be set to be lower than the maximum clock speed of the CPU 218 and / or GPU 220 when connected. Therefore, in some examples, when the computing device 202 is running on battery power, the loading performance module 254 may, in response to determining that the game application 212 is in a loading state, increase the clock speed of the CPU 218 and / or GPU 220 to a clock speed that exceeds the maximum clock speed set by the computing device 202 when the computing device 202 is running on battery power.
[0082] In some examples, the loading performance module 254 may, in response to determining that the game application 212 is in a loading state, determine whether to increase the clock speed of the CPU 218 and / or the GPU 220, and by how much to increase the clock speed of the CPU 218 and / or the GPU 220, based at least in part on the pattern of functions called by the game application 212 in the loading state. For example, if the functions called by the game application 212 in the loading state are mainly functions that should be executed by the CPU 218, such as functions for loading assets and network functions, the loading performance module 254 may increase the clock speed of the CPU 218. In another example, if the functions called by the game application 212 in the loading state also include functions that should be executed by the GPU 220, such as shader compilation functions, the loading performance module 254 may also increase the clock speed of the GPU 220.
[0083] In some examples, depending on the game application, the loading performance module 254 may 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 gradient the clock speed of the CPU 218 / GPU 220 by different rates. In some examples, each of several different game applications may be associated with a loading state CPU clock speed and / or a loading state GPU clock speed. Thus, when game application 212 is in a loading state, the loading performance module 254 may refer to the loading state CPU clock speed and / or loading state GPU clock speed associated with game application 212. Thus, when game application 212 enters a loading state, the loading performance module 254 may set the clock speed of the CPU 218 to the loading CPU clock speed associated with game application 212, and / or set the clock speed of the GPU 220 to the loading GPU clock speed associated with game application 212.
[0084] The CPU clock speed and / or GPU clock speed during loading associated with a game application can 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 can collect information such as hardware counter values regarding the execution of the game application 212 during loading by changing the clock speeds of the CPU 218 and / or GPU 220 when the game application 212 is running and by changing how quickly the clock speeds of the CPU 218 and / or GPU 220 are increased.
[0085] The loading performance module 254 collects information such as hardware counter values. By analyzing this, the CPU clock speed and / or GPU clock speed during loading associated with the game application 212 can be determined. For example, if the hardware counter value of the CPU 218 does not change between the maximum clock speed of the CPU 218 and the low clock speed of the CPU 218, the loading performance module 254 may determine that it is possible to set the clock speed of the CPU 218 to a low clock speed without compromising performance when the game application 212 is in a loading state, and otherwise without increasing the time the game 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 remains constant between the faster and slower increases in the CPU 218's clock speed, it may be possible to slope the clock speed for the CPU 218 at the slower rate of increase without compromising performance when the game application 212 is loading, and without increasing the time the game application 212 spends loading otherwise.
[0087] In another example, in addition to or as an alternative to increasing the clock speed of the CPU 218 and / or the GPU 220, the loading performance module 254 may increase the priority of the game application 212 by the operating system 226. That is, if the operating system 226 assigns a priority to each of the processes running on one or more processors 240, the operating system 226 may increase the priority of one or more processes of the game application 212. If the operating system 226 schedules the execution of processes based on the priority of each process, increasing the priority of the game application 212 may allow the operating system 226 to schedule the execution of the game application 212 before other lower-priority processes, thereby enabling the game application 212 to load assets more quickly and perform other actions, such as transitioning from a loading state to a game state. In some examples, instead of or in addition to increasing the priority of the game application 212, the loading performance module 254 may decrease the priority of one or more other processes running on one or more processors 240.
[0088] Figure 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 the present disclosure. Generally, graphical content may include any visual information that can be output for display, such as text, images, or groups of moving images, but these are only examples. The example shown in Figure 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 Figure 1 and the display 214 shown in Figure 2. In Figures 1 and 2, they are shown as standalone computing devices 102 and 202 for illustrative purposes, but 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 does not necessarily have to include, for example, a presence-sensing display.
[0089] As shown in the example in Figure 3, the computing device 360 is the computer in Figure 1 The computing device 360 may be an example of a presence detection device 102 or a computing device 202 in Figure 2, and may include a processor having the functions described with respect to one or more processors 108 in Figure 1 or one or more processors 240 in Figure 2. In such an example, the computing device 360 may be operably coupled to the presence detection display 364 by a communication channel 362A, which may be a system bus or other suitable connection. The computing device 360 may also be operably coupled to a communication unit 370, which will be described later, by a communication channel 362B, which may also be a system bus or other suitable connection. Although shown alone as an example in Figure 3, the computing device 360 may be operably coupled to the presence detection display 364 and the communication unit 370 by any number of one or more communication channels.
[0090] In other examples, such as those previously shown by computing device 102 in Figure 1 and computing device 202 in Figure 2, a computing device may refer to a portable or mobile device, such as a mobile phone (including a smartphone), laptop computer, or wearable device. In some examples, a computing device may be a desktop computer, tablet computer, smart TV platform, camera, server, or 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 a 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 on the presence-sensing display 364 (e.g., continuous gestures, multi-touch gestures, single-touch gestures) and transmit indications of such user inputs to the computing device 360 using a communication channel 362A. In some examples, the presence-sensing input device 368 may be physically positioned on the display device 366 such that when a user places an input unit over a graphical element displayed by the display device 366, the position of the presence-sensing input device 368 corresponds to the position of the display device 366 where the graphical element is displayed.
[0092] As shown in Figure 3, the computing device 360 may also include and / or be operably coupled with a communication unit 370. The communication unit 370 may include the functionality of the communication unit 244 as described in Figure 2. Examples of the communication 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 communication units may include Bluetooth, 3G, and WiFi radios, a Universal Serial Bus (USB) interface, and the like. The computing device 360 may also include and / or be operably coupled with one or more other devices (e.g., input devices, output devices, memory, storage devices) that are not shown in Figure 3 for simplification and illustrative purposes.
[0093] Figure 3 also shows 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 each device to communicate with the computing device 360. In some examples, one or more communication units may enable communication between the projector 380 and the projector screen 382. The projector 380 sends data containing graphical content to the computing device 360. Data may be received from 60. In response to the reception of data, the projector 380 may project its graphical content onto the projector screen 382. In some examples, the projector 380 may use optical recognition or other suitable techniques to determine one or more user inputs on the projector screen (e.g., continuous gestures, multi-touch gestures, single-touch gestures) and use one or more communication units to transmit indications of such user inputs to the computing device 360. In such examples, the projector screen 382 may not be necessary, and the projector 380 may project graphical content onto any suitable medium and detect one or more user inputs using optical recognition or other such suitable techniques.
[0094] In some examples, the projector screen 382 may include a presence-sensing display 384. The presence-sensing display 384 may include a subset or all of the functions of the presence-sensing displays 384 and / or 364 as described herein. In some examples, the presence-sensing display 384 may include additional functions. 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 on the projector screen 382 (e.g., continuous gestures, multi-touch gestures, single-touch gestures) and may use one or more communication units to transmit indications of such user inputs to the computing device 360.
[0095] Figure 3 also shows a mobile device 386 and a visual display device 390. The mobile device 386 and the visual display device 390 may include computing capabilities and connectivity capabilities, respectively. Examples of the mobile device 386 may include an e-reader device, a convertible notebook device, a hybrid slate device, and the like. Examples of the visual display device 390 may include other semi-stationary devices such as a television or a computer monitor. As shown in Figure 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 or all of the functions 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 functions. In any case, the presence-sensing display 392 may, for example, receive data from a computing device 360 and display graphical content. In some examples, the presence-sensing display 392 may use electrostatic, inductive, and / or optical recognition techniques to determine one or more user inputs on the projector screen (e.g., continuous gestures, multi-touch gestures, single-touch gestures) and may use one or more communication units to transmit indications of such user inputs to the computing device 360.
[0096] As described above, in some examples, the computing device 360 may output graphical content for display on a presence-sensing display 364 coupled to the computing device 360 by a system bus or other appropriate communication channel. The computing device 360 may also output graphical content for display on one or more remote devices, such as a projector 380, a projector screen 382, a mobile device 386, and a visual display device 390. For example, the computing device 360 may execute one or more instructions to generate and / or modify graphical content in accordance with the technology of this disclosure. The computing device 360 may output data containing graphical content to a communication unit of the computing device 360, such as a communication unit 370. The communication unit 370 The data may be transmitted to one or more remote devices, such as a projector 380, a projector screen 382, a mobile device 386, and / or a visual display device 390. In this way, the computing device 360 may output graphical content for display on one or more remote devices. In some examples, one or more remote devices may output graphical content to presence-sensing displays included in and / or operably coupled with each remote device.
[0097] In some examples, the computing device 360 may not output graphical content to the presence-sensing display 364 which is operablely 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, which is 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 of the respective devices. For example, there may be some delay due to communication latency for sending data containing the graphical content to the remote devices. 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 graphical content output for display on one or more remote devices.
[0098] The computing device 360 can send and receive data using any suitable communication technology. For example, the computing device 360 may be operably coupled to an external network 374 using network link 372A. Each of the remote devices shown in Figure 3 may be operably coupled to the external network 374 by one of the respective network links 372B, 372C, or 372D. The external network 374 may include operably interconnected network hubs, network switches, network routers, etc., thereby enabling the exchange of information between the computing device 360 and the remote devices shown in Figure 3. In some examples, network links 372A-372D may be Ethernet, ATM, or other network connections. Such connections may be wireless and / or wired.
[0099] In some examples, computing device 360 may be operably coupled to one or more of the remote devices shown in Figure 3 using direct device communication 378. Direct device communication 378 may include communication in which computing device 360 directly sends and receives data with the remote devices 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 devices, and vice versa. Examples of direct device communication 378 may include Bluetooth, near-field communication, universal serial bus, WiFi, infrared, etc. One or more of the remote devices shown in Figure 3 may be operably 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.
[0100] In accordance with the technology of this disclosure, a game application may run on a computing device 360 and output image data for display on presence-sensing displays 364, 384, 388, or 392. Computing device 360 may determine whether a game application is in a loading state, at least in part, based 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 may enable the game application to transition more quickly from the loading state to another state, such as the game state, by adjusting at least one of the clock speeds of one or more processors of computing device 360 or the prioritization of the game application.
[0101] Figure 4 is a flowchart illustrating exemplary operating modes of a computing device for determining whether a game application is in a loading state, according to one or more techniques of the present disclosure. Figure 4 is described below in the context of the computing device 202 of Figure 2. As shown in Figure 4, the computing device 202 may determine one or more characteristics of a game application 212 running on one or more processors 240 of the computing device 202 (402). The computing device 202 may determine that a game application 212 running on one or more processors 240 is in a loading state, based at least in part on one or more characteristics (404). In response to determining that a game application 212 is in a loading state, the computing device 202 may adjust at least one of the clock speeds of one or more processors 240 or the prioritization of the game application 212 (406).
[0102] This disclosure includes the following examples: Example 1: The method includes: determining one or more characteristics of a game application running on one or more processors of a computing device; determining that the game application is in a loading state; and, in response to the determination that the game application is in a loading state, adjusting at least one of the clock speeds of the one or more processors or the prioritization of the game application.
[0103] Example 2: The method according to 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 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 according to either Example 1 or 2, wherein the one or more characteristics include a pattern of functions called by the game application running on the one or more processors, and determining that the game application is in the loading state further includes the one or more processors determining 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 one or more characteristics include a pattern of input received by an input device while the game application is running on the one or more processors, and determining that the game application is in the loading state means that the one or more processors determine that the game application is in the loading state based at least partially on the pattern of input received by the input device. Including the method described in any one of Examples 1-4.
[0106] Example 5: The method according to any one of Examples 1 to 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 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 by the one or more processors.
[0107] Example 6: The method according to any one of Examples 1 to 5, further comprising determining that the game application is in the loading state, by determining that the game application is performing one or more actions by one or more processors to prepare to provide an interactive gameplay environment for active gameplay.
[0108] Example 7: The method according to any one of Examples 1 to 6, wherein adjusting the clock speed of one or more processors or the prioritization of the game application further includes adjusting the clock speed of at least one of the central processing units (CPUs) or graphics processing units (GPUs) of the one or more processors.
[0109] Example 8: The method according to Example 7, further comprising adjusting the respective clock speed of at least one of the CPUs or GPUs of the one or more processors so that the one or more processors exceed a clock speed threshold associated with the computing device operating on battery power.
[0110] Example 9: The method according to Example 7, further comprising adjusting the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors based at least in part on a function called by the game application in the loading state.
[0111] Example 10: The method according to Example 7, further comprising: adjusting the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors by referring to at least one of the CPU clock speeds or GPU clock speeds in a loading state associated with the game application by the one or more processors; and adjusting the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors at least in part on at least one of the CPU clock speeds or GPU clock speeds in a loading state by the one or more processors.
[0112] Example 11: A computing device includes memory and one or more processors operably coupled to the memory, which determine one or more characteristics of a game application running on the one or more processors, determines that the game application is in a loading state based at least in part on the one or more characteristics, and in response to the determination that the game application is in a loading state, at least the clock speed of the one or more processors or the priority of the game application The system includes one or more processors configured to adjust one of the other.
[0113] Example 12: The computing device according to Example 11, wherein the one or more characteristics include one or more of the usage patterns of the one or more processors by the game application running on the one or more processors, the patterns of functions called by the game application running on the one or more processors, the patterns of inputs received by an input device while the game application is running on the one or more processors, or image data output by the game application for display on the display device, and in order 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 patterns of the one or more processors by the game application, the patterns of functions called by the game application running on the one or more processors, the patterns of inputs received by an input device while the game application is running 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 according to any one of Examples 11 and 12, wherein, in order to determine that the game application is in the loading state, 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 according to any one of Examples 11 to 13, wherein the one or more processors are further configured to adjust the clock speed of at least one of the central processing units (CPUs) or graphics processing units (GPUs) of the one or more processors in order to adjust at least one of the clock speeds of the one or more processors or the prioritization of the game application.
[0116] Example 15: The computing device according to Example 14, wherein, in order to adjust the respective clock speed of at least one of the CPUs or GPUs of the one or more processors, the one or more processors are further configured to adjust the respective clock speed of at least one of the CPUs or GPUs of the one or more processors, at least in part, based on a function called by the game application in the loading state.
[0117] Example 16: The computing device according to Example 14, wherein, in order to adjust the respective clock speed of at least one of the CPUs or GPUs of the one or more processors, the one or more processors are further configured to adjust the respective clock speed of at least one of the CPUs or GPUs of the one or more processors, at least in part, based on a function called by the game application in the loading state.
[0118] Example 17: In order to adjust the respective clock speeds of at least one of the CPU or GPU of the one or more processors, the one or more processors refer to at least one of the CPU clock speed or GPU clock speed in a loading state associated with the game application and adjust the clock speed of at least one of the CPU clock speed or GPU clock speed in a loading state based at least partially on the one or more of the CPU clock speed or GPU clock speed in a loading state. A computing device according to Example 14, further configured to adjust the respective clock speeds of at least one of the CPU or GPU of the processor above.
[0119] Example 18: A computer-readable storage medium that stores instructions causing one or more processors of a computing device to execute one of the methods described in Examples 1-10 at runtime.
[0120] Example 19: A computing device comprising means for performing a method described in any one of Examples 1-10.
[0121] Example 20: A computer-readable storage medium coded with instructions that cause one or more processors in a computing device to perform an action as described in any one of Examples 1-10.
[0122] Such computer-readable storage media can include, but are not limited to, computer-readable storage media, such as RAM, ROM, EEPROM, CD-ROM or other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, flash memory, or any other storage media that can be used to store desired program code in the form of instructions or data structures and are accessible by a computer. Also, any connection is precisely called computer-readable media. 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, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio waves and microwaves are included in the definition of media. However, it should be understood that one or more computer-readable storage media and data storage media do not include connections, carriers, signals or other temporary media, but instead refer to non-temporary tangible storage media. As used herein, the terms "disk" and "disc" include compact discs (CDs), laserdiscs (registered trademarks), optical discs, digital multipurpose discs (DVDs), floppy disks, and Blu-ray discs. Disks typically reproduce data magnetically, while discs reproduce data optically using a laser. Any combination of the above should also be included in the scope of computer-readable media.
[0123] Instructions can be executed by one or more processors, such as digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, the term “processor” as used herein may refer to any of the aforementioned structures, or any other structure suitable for implementing the technology described herein. In addition, in some embodiments, the functions described herein may be provided within dedicated hardware and / or software modules. Furthermore, the technology may be fully implemented in one or more circuits or logic elements.
[0124] The technology disclosed herein can be implemented in a wide variety of devices or apparatus, including wireless handsets, integrated circuits (ICs), or sets of ICs (e.g., chipsets). Various components, modules, or units are described herein to highlight the functional aspects of devices configured to perform the disclosed technology, but implementation by various hardware units is not necessarily required. Rather, as described above, various units may be combined within hardware units, or combined with appropriate software and / or firmware to perform one or more of the processes described above. It may be provided by a collection of interconnected hardware units, including S.
[0125] Various embodiments have been described. These and other embodiments are within the scope of the following claims.
Claims
1. One or more processors of a computing device determine one or more characteristics of a game application running on said one or more processors, The one or more processors determine, at least partially, that the game application is in a loading state, A method comprising: determining that the game application is in the loading state, adjusting the clock speed of one or more processors or the prioritization of the game application by one or more processors.
2. 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 means The method according to claim 1, further comprising determining, by one or more processors, that the game application is in the loading state, at least in part, based on the usage pattern of the one or more processors by the game application.
3. The one or more characteristics include a pattern of functions called by the game application running on the one or more processors, and determining that the game application is in the loading state means The method according to any one of claims 1 and 2, further comprising determining, by one or more processors, that the game application is in the loading state, at least in part, based on a pattern of functions called by the game application.
4. The one or more characteristics include a pattern of input received by an input device while the game application is running on the one or more processors, and determining that the game application is in the loading state means The method according to any one of claims 1 to 4, further comprising determining, by one or more processors, that the game application is in the loading state based at least in part on the pattern of input received by the input device.
5. The one or more of the above characteristics include image data output by the game application for display on the display device, and the determination that the game application is in the loading state is, The method according to any one of claims 1 to 4, further comprising determining that the game application is in the loading state based at least in part on the image data output by one or more processors for display on the display device.
6. Determining that the aforementioned game application is in the loading state means The method according to any one of claims 1 to 5, further comprising determining by 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. Adjusting at least one of the clock speeds of one or more processors or the prioritization of the game application is: The method according to any one of claims 1 to 6, further comprising adjusting the clock speed of at least one of the central processing units (CPUs) or graphics processing units (GPUs) of the one or more processors.
8. Adjusting the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors is: The method according to claim 7, further comprising adjusting the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors so that the one or more processors exceed a clock speed threshold associated with the computing device operating on battery power.
9. Adjusting the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors is: The method according to claim 7, further comprising adjusting the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors, at least in part, based on a function called by the game application in the loading state.
10. Adjusting the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors is: The one or more processors refer to at least one of the CPU clock speed in the loading state associated with the game application or the GPU clock speed in the loading state associated with the game application, The method according to claim 7, further comprising adjusting the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors based at least partially on at least one of the CPU clock speeds or the GPU clock speeds in the loading state.
11. Memory and The memory comprises one or more processors operably coupled to the memory, and the one or more processors Determine one or more characteristics of a game application running on one or more of the aforementioned processors, The game application is determined to be in a loading state based at least partially on one or more of the aforementioned characteristics. A computing device configured to adjust at least one of the clock speeds of one or more processors or the prioritization of the game application in response to the determination that the game application is in the loading state.
12. Including display devices, The one or more characteristics include one or more of the following: the usage pattern of the one or more processors by the game application running on the one or more processors; the pattern of functions called by the game application running on the one or more processors; the pattern of input received by the input device while the game application is running on the one or more processors; or image data output by the game application for display on the display device. In order to determine that the game application is in the loading state, the one or more processors: The usage pattern of one or more processors by the game application, and the previous calls made by the game application while running on one or more processors. The computing device according to claim 11, further configured to determine that the game application is in the loading state based at least partially on one or more of the following: a pattern of a function, a pattern of the input received by the input device while the game application is running on the one or more processors, or the image data output by the game application for display on the display device.
13. In order to determine that the game application is in the loading state, one or more processors The computing device according to any one of claims 11 and 12, further configured to determine that the game application is performing one or more actions to prepare for providing an interactive gameplay environment for active gameplay.
14. In order to adjust at least one of the clock speeds of the one or more processors or the prioritization of the game application, the one or more processors The computing device according to any one of claims 11 to 13, further configured to adjust the clock speed of at least one of the central processing units (CPUs) or graphics processing units (GPUs) of the one or more processors.
15. In order to adjust the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors, the one or more processors The computing device according to claim 14, further configured to adjust the respective clock speeds of at least one of the CPUs or GPUs of one or more processors, at least in part, based on a function called by the game application in the loading state.
16. In order to adjust the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors, the one or more processors The computing device according to claim 14, further configured to adjust the respective clock speeds of at least one of the CPUs or GPUs of one or more processors, at least in part, based on a function called by the game application in the loading state.
17. In order to adjust the respective clock speeds of at least one of the CPUs or GPUs of the one or more processors, the one or more processors Referencing at least one of the CPU clock speed in the loading state associated with the game application or the GPU clock speed in the loading state associated with the game application, The computing device according to claim 14, further configured to adjust the respective clock speeds of at least one of the CPU or GPU of one or more processors based at least partially on at least one of the CPU clock speed or the GPU clock speed in the loading state.
18. A computer-readable storage medium that stores instructions causing one or more processors of a computing device to execute any one of the methods according to claims 1 to 10 during runtime.