IP Library Granted Patent US 11,110,348
Granted Patent B2
US 11,110,348 · App. 16/380,831 · Granted Sep 7, 2021

Memory management in gaming rendering

Inventors: Paul Lalonde (Kitchener, CA); Paul Leventis (Toronto, CA); Jean-Francois Roy (San Francisco, CA)
Assignee: GOOGLE LLC
A63F13/355G06F12/123G06T1/20G06T1/60G06T15/005A63F2300/538
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,110,348
App. No.
16/380,831
Granted
Sep 7, 2021
Kind
B2
Abstract

Some implementations of this application are directed to a server system including one or more CPUs, a plurality of GPUs, main dynamic memory storing programs and data for use by the CPUs and/or GPUs during program execution, a static memory pool stored in a non-volatile memory, and a memory controller configured to manage the static memory pool. Each of the GPUs includes a local cache and is configured to access the static memory pool via the memory controller. The server system executes a plurality of gaming sessions for a gaming title in parallel on the one or more CPUs. Each of the plurality of gaming sessions is associated with a static data item stored in the static memory pool, and requires a graphics operation executable by a respective GPU using the static data item.

Claims (63)

1. A method of rendering image frames for online gaming sessions, comprising:

executing on one or more CPUs a plurality of online gaming sessions in parallel for a gaming title;

rendering by one or more GPUs a plurality of image frames for each of a plurality of online gaming sessions using a first sequence of compiled shaders;

identifying a performance criterion for the plurality of online gaming sessions associated with the gaming title;

collecting real-time usage statistics characterizing execution of each of the online gaming sessions; and

based on the real-time usage statistics, modifying a first shader in the first sequence of compiled shaders to improve performance of the first sequence of compiled shaders with respect to the performance criterion for the plurality of online gaming sessions, thereby creating a modified first sequence of compiled shaders;

establishing a shader hash table that associates each of a plurality of performance criteria with a respective sequence of compiled shaders, including associating the performance criterion and the first sequence of compiled shaders in the shader hash table; and

storing the shader hash table in a shader cache of a memory.

2. The method of claim 1 , further comprising:

replacing the first sequence of compiled shaders stored in a shader cache of the memory with the modified first sequence of compiled shaders.

3. The method of claim 1 , further comprising:

storing in a shader cache of the memory the first sequence of compiled shaders as a first version of the first sequence of compiled shaders;

storing in the shader cache the modified first sequence of compiled shaders as a second version of the first sequence of compiled shaders; and

collecting subsequent usage statistics characterizing execution of each of the online gaming sessions; and

in accordance with the subsequent usage statistics, selecting one of the first and second versions of the first sequence of compiled shaders to render the plurality of image frames for each of the plurality of online gaming sessions.

4. The method of claim 1 , wherein modifying the first shader in the first sequence of compiled shaders further comprises:

selecting an alternative shader from a group of alternative shader options to replace the first shader in the first sequence of compiled shaders, such that performance of the plurality of online gaming sessions satisfies the performance criterion, wherein the modified first sequence of compiled shaders includes the alternative shader.

5. The method of claim 1 , further comprising:

receiving a user instruction to modify the first shader in the first sequence of compiled shaders, wherein the first shader is modified in the first sequence of compiled shaders in response to the user instruction.

6. The method of claim 1 , wherein the first shader in the first sequence of compiled shaders is modified automatically and without user intervention to improve performance of the first sequence of compiled shaders with respect to the performance criterion.

7. The method of claim 1 , wherein creating the modified first sequence of compiled shaders further comprises:

modifying a second shader in the first sequence of compiled shaders to improve performance of the first sequence of compiled shaders with respect to the performance criterion.

8. The method of claim 1 , further comprising:

determining that the plurality of online gaming sessions need to be rendered in accordance with the performance criterion; and

identifying the first sequence of compiled shaders for rending the plurality of image frames for each of the plurality of online gaming sessions.

9. The method of claim 1 , wherein the performance criterion includes a first performance criterion, and the plurality of online gaming sessions are rendered and executed in accordance with a second performance criterion distinct from the first criterion, further comprising:

associating the first performance criterion with the modified first sequence of compiled shaders; and

associating the second performance criterion with the first sequence of compiled shaders.

10. A server system, comprising:

one or more CPUs;

one or more GPUs; and

memory storing one or more programs for execution by the one or more CPUs and/or GPUs, the one or more programs comprising instructions for:

executing on the one or more CPUs a plurality of online gaming sessions in parallel for a gaming title;

rendering by the one or more GPUs a plurality of image frames for each of the plurality of online gaming sessions using a first sequence of compiled shaders;

identifying a performance criterion for the plurality of online gaming sessions associated with the gaming title;

collecting real-time usage statistics characterizing execution of each of the online gaming sessions; and

based on the real-time usage statistics, modifying a first shader in the first sequence of compiled shaders to improve performance of the first sequence of compiled shaders with respect to the performance criterion for the plurality of online gaming sessions, thereby creating a modified first sequence of compiled shaders;

establishing a shader hash table that associates each of a plurality of performance criteria with a respective sequence of compiled shaders, including associating the performance criterion and the first sequence of compiled shaders in the shader hash table; and

storing the shader hash table in a shader cache of the memory.

11. The server system of claim 10 , wherein the performance criterion includes a first performance criterion, further comprising:

storing the modified first sequence of compiled shaders in association with the first performance criterion in a shader cache of the memory.

12. The server system of claim 11 , further comprising:

while executing the plurality of online gaming sessions:

identifying a second performance criterion for the plurality of online gaming sessions associated with the gaming title;

determining a second sequence of compiled shaders to improve performance of the first sequence of compiled shaders with respect to the second performance criterion; and

storing in the shader cache the second sequence of compiled shaders in association with the second performance criterion.

13. The server system of claim 12 , wherein the usage statistics includes a total power consumption of the plurality of online gaming sessions, and the first performance criterion and the second performance criterion optimize response times and power usage of the plurality of online gaming sessions, respectively, further comprising:

in accordance with a determination that the total power consumption of the plurality of online gaming sessions exceeds a predefined power threshold, selecting the second sequence of compiled shaders and rendering the plurality of image frames for each of the plurality of online gaming sessions using the second sequence of compiled shaders.

14. The server system of claim 10 , wherein the usage statistics include information of user inputs, further comprising:

associating in the shader hash table a plurality of versions of the first sequence of compiled shaders with the information of user inputs.

15. The server system of claim 10 , further comprising:

dynamically updating the shader hash table according to the usage statistics, including replacing the first sequence of compiled shaders in the shader cache with the modified first sequence of compiled shaders.

16. A non-transitory computer readable storage medium storing one or more programs configured for execution by one or more processors of a server system, the one or more programs comprising instructions for:

executing on one or more CPUs a plurality of online gaming sessions in parallel for a gaming title;

rendering by one or more GPUs a plurality of image frames for each of the plurality of online gaming sessions using a first sequence of compiled shaders;

identifying a performance criterion for the plurality of online gaming sessions associated with the gaming title;

collecting real-time usage statistics characterizing execution of each of the online gaming sessions; and

based on the real-time usage statistics, modifying a first shader in the first sequence of compiled shaders to improve performance of the first sequence of compiled shaders with respect to the performance criterion for the plurality of online gaming sessions, thereby creating a modified first sequence of compiled shaders;

establishing a shader hash table that associates each of a plurality of performance criteria with a respective sequence of compiled shaders, including associating the performance criterion and the first sequence of compiled shaders in the shader hash table; and

storing the shader hash table in a shader cache of a memory.

17. The non-transitory computer readable storage medium of claim 16 , wherein the usage statistics include at least one or all of user inputs, power consumption, one or more gaming latencies, code size, memory usage and cache usage of the first sequence of compiled shaders corresponding to each of the plurality of online gaming sessions.

18. The non-transitory computer readable storage medium of claim 16 , wherein the performance criterion corresponds to one or more of total power consumption, a code size, an average latency, total cache usage, and total memory usage of the first sequence of compiled shaders during the course of executing the plurality of online gaming sessions.

19. The non-transitory computer readable storage medium of claim 16 , wherein the plurality of online gaming sessions is sampled from all online gaming sessions that are processed by the CPUs and GPUs for the gaming title.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE SPELLING OF INVENTOR'S FIRST NAME PREVIOUSLY RECORDED AT REEL: 053266 FRAME: 0309. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 6, 2021
From: LALONDE, PAUL; LEVENTIS, PAUL; ROY, JEAN-FRANCOIS
To: GOOGLE LLC
Reel/Frame 054912/0297 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 21, 2020
From: LALONDE, PAUL; LEVENTIS, PAUL; ROY, JEAN-FRANCOIS
To: GOOGLE LLC
Reel/Frame 053266/0309 →
Continuity (3)
Continuation PCTUS2019026611 · Apr 9, 2019
Provisional Application 62655688 · Apr 10, 2018
Related Publication 20190308099A1 · Oct 10, 2019