IP Library Granted Patent US 8,851,999
Granted Patent B2
US 8,851,999 · App. 13/232,985 · Granted Oct 7, 2014

System and method for improving the graphics performance of hosted applications

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 8,851,999
App. No.
13/232,985
Granted
Oct 7, 2014
Kind
B2
Abstract

A system for hosting video games comprising: a game server comprising a central processing unit to process video game program code and a graphics processing unit (GPU) to process graphics commands; one or more back buffers to store video frames in response to the execution of the graphics commands; a front buffer to receive a video frame for rendering on a display and outputting the video frame for display one scan line at a time at a designated scan out frequency, a subset of scan lines stored in the front buffer being associated with a vertical blanking interval (VBI); a frame processing module to increase the number of scan lines associated with the VBI to increase the likelihood that a new frame will be completed in a back buffer and ready for transfer to the front buffer at a time during the VBI.

Claims (43)

1. A server-based system for hosting applications/video games for a plurality of clients comprising:

an application/game server comprising a central processing unit to process application/video game program code and a graphics processing unit (GPU) to process graphics commands and generate a series of video frames for the application/video game;

one or more back buffers to store video frames as the video frames are being created in response to the execution of the graphics commands;

a front buffer to receive a video frame for rendering on a display after the video frame has been completed in one of the one or more back buffers, the front buffer outputting the video frame for display one scan line at a time at a designated scan out frequency, a subset of scan lines stored in the front buffer being associated with a specified time interval;

a frame processing module to perform real-time profiling of the GPU by performing the operations of:

tracking how long it takes the GPU to execute certain types of operations while in a current mode of operation; and

updating a benchmark data structure with values representing an amount of time needed for each specified type of operation.

2. The system as in claim 1 wherein the certain types of operations comprises rendering of triangles.

3. The system as in claim 1 wherein the certain types of operations comprises rendering of polygons.

4. The system as in claim 1 wherein the frame processing module inserts timestamp fences around work being inserted into a GPU command queue, determines the amount of time consumed performing the work based on differences between the timestamps, and continually updates the values to include an average per-operation time.

5. The system as in claim 1 wherein the current mode of operation comprises depth-only rendering; lighting; alpha blending; or image processing.

6. The system as in claim 1 wherein the frame processing module subsequently queries the benchmark data structure to determine the amount of GPU work remaining in a GPU command queue, and/or the number of busy work operations needed to reach a specified scan out region.

7. The system as in claim 6 wherein the specified scan out region comprises a vertical blanking interval (VBI) or a region outside of a designated region of the front buffer.

8. The system as in claim 6 wherein the frame processing module inserts a number of busy work operations in the GPU command queue needed to reach the specified scan out region.

9. The system as in claim 1 wherein the benchmark data structure is indexed, at least in part, by different values associated with different GPU modes of operation.

10. The system as in claim 9 further comprising:

determining a current mode in which the GPU is operating and using a value associated with the current mode to index the benchmark data structure.

11. The system as in claim 10 wherein the value comprises a hash value.

12. The system as in claim 11 wherein the specified time interval comprises a vertical blanking interval (VBI).

13. The system as in claim 12 wherein the benchmark data structure comprises a database.

14. A method for hosting applications/video games for a plurality of clients comprising:

processing application/video game program code by a central processor of an application/game server and processing graphics commands by a graphics unit (GPU) to generate a series of video frames for the application/video game;

storing video frames in one or more back buffers as the video frames are being created in response to the execution of the graphics commands;

receiving a video frame for rendering on a display in a front buffer after the video frame has been completed in one of the one or more back buffers, the front buffer outputting the video frame for display one scan line at a time at a designated scan out frequency, a subset of scan lines stored in the front buffer being associated with a specified time interval;

performing real-time profiling of the GPU by performing the operations of:

tracking how long it takes the GPU to execute certain types of operations while in a current mode of operation; and

updating a benchmark data structure with values representing an amount of time needed for each specified type of operation.

15. The method as in claim 14 wherein the certain types of operations comprises rendering of triangles.

16. The method as in claim 14 wherein the certain types of operations comprises rendering of polygons.

17. The method as in claim 14 further comprising:

inserting timestamp fences around work being inserted into a GPU command queue, determining the amount of time consumed performing the work based on differences between the timestamps, and continually updating the values to include an average per-operation time.

18. The method as in claim 14 wherein the current mode of operation comprises depth-only rendering; lighting; alpha blending; or image processing.

19. The method as in claim 14 further comprising:

subsequently querying the benchmark data structure to determine the amount of GPU work remaining in a GPU command queue, and/or the number of busy work operations needed to reach a specified scan out region.

20. The method as in claim 19 wherein the specified scan out region comprises a vertical blanking interval (VBI) or a region outside of a designated center region of the front buffer.

21. The method as in claim 19 further comprising:

inserting a number of busy work operations in the GPU command queue needed to reach the specified scan out region.

22. The method as in claim 14 wherein the benchmark data structure is indexed, at least in part, by different values associated with different GPU modes of operation.

23. The method as in claim 22 further comprising:

determining a current mode in which the GPU is operating and using a value associated with the current mode to index the benchmark data structure.

24. The method as in claim 23 wherein the value comprises a hash value.

25. The method as in claim 24 wherein the specified time interval comprises a vertical blanking interval (VBI).

26. The method as in claim 25 wherein the benchmark data structure comprises a database.

Assignments (5)
MERGER Recorded Mar 30, 2020
From: SONY INTERACTIVE ENTERTAINMENT AMERICA LLC
To: SONY INTERACTIVE ENTERTAINMENT LLC
Reel/Frame 053323/0567 →
CHANGE OF NAME Recorded May 5, 2016
From: SONY COMPUTER ENTERTAINMENT AMERICA LLC
To: SONY INTERACTIVE ENTERTAINMENT AMERICA LLC
Reel/Frame 038617/0474 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 1, 2015
From: OL2, INC.
To: SONY COMPUTER ENTERTAINMENT AMERICA LLC
Reel/Frame 035354/0237 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2012
From: INSOLVENCY SERVICES GROUP, INC.
To: OL2, INC.
Reel/Frame 028912/0053 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2012
From: ONLIVE, INC.
To: INSOLVENCY SERVICES GROUP, INC.
Reel/Frame 028884/0120 →