IP Library Granted Patent US 8,840,477
Granted Patent B2
US 8,840,477 · App. 13/232,963 · Granted Sep 23, 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,840,477
App. No.
13/232,963
Granted
Sep 23, 2014
Kind
B2
Abstract

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-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); and a frame processing module to begin copying a newly completed frame from the back buffer to the front buffer before the video data for a prior video frame stored in the front buffer has not been fully scanned out.

Claims (38)

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 vertical blanking interval (VBI); and

a frame processing module to begin copying a newly completed frame from the back buffer to the front buffer before the video data for a prior video frame stored in the front buffer has been fully scanned out.

2. The system as in claim 1 wherein the frame processing module comprises program code for performing the additional operations of:

determining the most recent scan line output from the front buffer;

copying the completed video frame from the back buffer to the front buffer only if the most recent scan line output from the front buffer is outside of a designated center region of the video frame.

3. The system as in claim 1 wherein the frame processing module comprises program code for performing the additional operations of:

executing a video frame mixing operation to combine the newly completed frame with the prior video frame in the front buffer.

4. The system as in claim 3 wherein the mixing operation comprises a cross-fade operation.

5. The system as in claim 3 wherein the mixing operation is a blend operation.

6. The system as in claim 2 wherein, if the current scan line is within the designated center region of the display, the frame processing module waits a period of time until the current scan line has moved outside of the designated center region before copying the newly completed frame from the back buffer to the front buffer.

7. The system as in claim 6 wherein the frame processing module comprises program code for performing the additional operations of:

inserting busy work into a command queue of the GPU based on the period of time to be waited, the amount of busy work approximating the period of time.

8. The system as in claim 7 wherein the busy work comprises a plurality of operations which have no effect on the visual appearance of the frame in the front buffer.

9. The system as in claim 8 wherein the busy work comprises a plurality of invisible triangles.

10. The system as in claim 8 wherein the busy work comprises a series of vertical quads which miss all of the pixel centers.

11. The system as in claim 8 wherein the busy work comprises a series of long polygons with long shaders that perform trivial math.

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

processing graphics commands and generating 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 completed video frames in a front buffer for rendering on a display after the video frame has been completed in one of the one or more back buffers, outputting the video frames from the front buffer 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); and

initiating copying a newly completed frame from the back buffer to the front buffer before the video data for a prior video frame stored in the front buffer has been fully scanned out.

13. The method as in claim 12 further comprising:

determining the most recent scan line output from the front buffer; and

copying the completed video frame from the back buffer to the front buffer only if the most recent scan line output from the front buffer is outside of a designated center region of the video frame.

14. The method as in claim 12 further comprising:

executing a video frame mixing operation to combine the newly completed frame with the prior video frame in the front buffer.

15. The method as in claim 14 wherein the mixing operation comprises a cross-fade operation.

16. The method as in claim 14 wherein the mixing operation is a blend operation.

17. The method as in claim 13 wherein, if the current scan line is within the designated center region of the display, waiting a period of time until the current scan line has moved outside of the designated center region before copying the newly completed frame from the back buffer to the front buffer.

18. The method as in claim 17 wherein the frame processing module comprises program code for performing the additional operations of:

inserting busy work into a command queue of the GPU based on the period of time to be waited, the amount of busy work approximating the period of time.

19. The method as in claim 18 wherein the busy work comprises a plurality of operations which have no effect on the visual appearance of the frame in the front buffer.

20. The method as in claim 18 wherein the busy work comprises a plurality of invisible triangles.

21. The method as in claim 18 wherein the busy work comprises a series of vertical quads which miss all of the pixel centers.

22. The method as in claim 18 wherein the busy work comprises a series of long polygons with long shaders that perform trivial math.

Assignments (6)
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 May 18, 2015
From: DIETRICH, DOUGLAS SIM; BENITEZ, NICO; COTTER, TIMOTHY
To: OL2, INC.
Reel/Frame 035663/0255 →
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 →