Memory management in gaming rendering

US11110348B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11110348-B2
Application numberUS-201916380831-A
CountryUS
Kind codeB2
Filing dateApr 10, 2019
Priority dateApr 10, 2018
Publication dateSep 7, 2021
Grant dateSep 7, 2021

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

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.

First claim

Opening claim text (preview).

What is claimed is: 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 execut

Assignees

Inventors

Classifications

  • Processor architectures; Processor configuration, e.g. pipelining · CPC title

  • for performing operations on behalf of the game client, e.g. rendering · CPC title

  • Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs (mappping at compile time, see G06F8/451) · CPC title

  • Energy efficient computing, e.g. low power processors, power management or thermal management · CPC title

  • in hierarchically structured memory systems, e.g. virtual memory systems · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US11110348B2 cover?
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 c…
Who is the assignee on this patent?
Google Llc
What technology area does this patent fall under?
Primary CPC classification A63F13/355. Mapped technology areas include Human Necessities.
When was this patent published?
Publication date Tue Sep 07 2021 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 12 related publications on this page (citations in our corpus or others sharing the same primary CPC).