IP Library Granted Patent US 8,760,456
Granted Patent B2
US 8,760,456 · App. 14/042,659 · Granted Jun 24, 2014

System, method, and computer program product for remote graphics processing

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,760,456
App. No.
14/042,659
Granted
Jun 24, 2014
Kind
B2
Abstract

A system, method, and computer program product are provided for remote rendering of computer graphics. The system includes a graphics application program resident at a remote server. The graphics application is invoked by a user or process located at a client. The invoked graphics application proceeds to issue graphics instructions. The graphics instructions are received by a remote rendering control system. Given that the client and server differ with respect to graphics context and image processing capability, the remote rendering control system modifies the graphics instructions in order to accommodate these differences. The modified graphics instructions are sent to graphics rendering resources, which produce one or more rendered images. Data representing the rendered images is written to one or more frame buffers. The remote rendering control system then reads this image data from the frame buffers. The image data is transmitted to the client for display or processing. In an embodiment of the system, the image data is compressed before being transmitted to the client. In such an embodiment, the steps of rendering, compression, and transmission can be performed asynchronously in a pipelined manner.

Claims (54)

1. A system for compressing data, comprising:

a server system including a processor and memory storing one or more programs executable by the processor, the one or more programs including instructions for:

identifying by the server its available compression algorithms and the available algorithms available to the client;

receiving by the server a compression algorithm selected by the client;

receiving, at a graphics application on the server system, a command from a client, the command related to a graphics rendering operation of the graphics application;

generating an application programming interface call for producing rendered image data in response to the command;

modifying a parameter of the application programming interface call based upon a graphics difference between the client and the server;

receiving, at the server system, a list of graphics processing capabilities of the client;

merging, with a remote rendering control system, the list of graphics processing capabilities of the client and a list of graphics capabilities of the server system to create a merged list of graphics processing capabilities; and

generating, using the merged list of graphics processing capabilities, a routine for converting graphics processing capabilities of the server to graphics processing capabilities of the client;

performing the rendering operation using the modified parameters; and

transmitting the rendered image data to the client for display.

2. The system of claim 1 , wherein the application programming interface is an OPENGL application programming interface.

3. The system of claim 1 , wherein the command corresponds to a command requesting the rendered image data for display on the client.

4. The system of claim 1 , wherein the list of graphics processing capabilities of the client are selected from a group consisting of: color mapping range; ability to represent opacity; and ability to perform stenciling.

5. The system of claim 1 , wherein the one or more programs further comprising instructions for modifying the parameter of the application programming interface call by converting a graphics processing capability of the server system appearing in the application programming interface call to a graphics processing capability of the client.

6. The system of claim 1 , wherein the one or more programs further comprising instructions for modifying the parameter of the application programming interface call by converting a graphics context of the server system appearing in the application programming interface call to a graphics context of the client.

7. A system for compressing data, comprising:

a server system including a processor and memory storing one or more programs executable by the processor, the one or more programs including instructions for:

identifying by the server its available compression algorithms and the available algorithms available to the client;

receiving by the server a compression algorithm selected by the client;

receiving, at a graphics application on the server system, a command from a client, the command related to a graphics rendering operation of the graphics application;

generating an application programming interface call for producing rendered image data in response to the command;

modifying a parameter of the application programming interface call based upon a graphics difference between the client and the server;

performing the rendering operation using the modified parameters; and

transmitting the rendered image data to the client for display,

compressing the image data by a compression process of the remote rendering control system, wherein the rendering process of a first block of data occurs during a first time period, the compression process of a second block of data occurs during a second time period, and the transmission process of a third block of data occurs during a third time period so that the rendering process, the compression process, and the transmission process are pipelined,

discarding, by the remote rendering control system, the first block of data when the rendering process of the first block of data is completed before the compression process of the second block of data; and

discarding, by the remote rendering control system, the second block of data when the compression process of the second block of data is completed before the transmission process of the third block of data.

8. A method for compressing data, comprising:

identifying available compression algorithms at a sever and the available algorithms available to a client in communication with the server;

receiving by the server a compression algorithm selected by the client;

receiving a command from a client, the command related to a graphics rendering operation of the graphics application;

generating an application programming interface call for producing rendered image data in response to the command;

modifying a parameter of the application programming interface call based upon a graphics difference between the client and the server;

receiving a list of graphics processing capabilities of the client;

merging the list of graphics processing capabilities of the client and a list of graphics capabilities of the server system to create a merged list of graphics processing capabilities;

generating, using the merged list of graphics processing capabilities, a routine for converting graphics processing capabilities of the server to graphics processing capabilities of the client; and

performing the rendering operation using the modified parameters; and transmitting the rendered image data to the client for display.

9. The method of claim 8 , wherein the application programming interface is an OPENGL application programming interface.

10. The method of claim 8 , wherein the command corresponds to a command requesting the rendered image data for display on the client.

11. The method of claim 8 , wherein the list of graphics processing capabilities of the client are selected from a group consisting of: color mapping range; ability to represent opacity; and ability to perform stenciling.

12. The method of claim 8 , wherein the one or more programs further comprising instructions for modifying the parameter of the application programming interface call by converting a graphics processing capability of the server system appearing in the application programming interface call to a graphics processing capability of the client.

13. The method of claim 8 , wherein the one or more programs further comprising instructions for modifying the parameter of the application programming interface call by converting a graphics context of the server system appearing in the application programming interface call to a graphics context of the client.

14. A method for compressing data, comprising:

identifying available compression algorithms at a sever and the available algorithms available to a client in communication with the server;

receiving by the server a compression algorithm selected by the client;

receiving a command from a client, the command related to a graphics rendering operation of the graphics application;

generating an application programming interface call for producing rendered image data in response to the command;

modifying a parameter of the application programming interface call based upon a graphics difference between the client and the server;

performing the rendering operation using the modified parameters;

transmitting the rendered image data to the client for display compressing the image data by a compression process of the remote rendering control system, wherein the rendering process of a first block of data occurs during a first time period, the compression process of a second block of data occurs during a second time period, and the transmission process of a third block of data occurs during a third time period so that the rendering process, the compression process, and the transmission process are pipelined; and

discarding the first block of data when the rendering process of the first block of data is completed before the compression process of the second block of data; and

discarding, by the remote rendering control system, the second block of data when the compression process of the second block of data is completed before the transmission process of the third block of data.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 30, 2018
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
To: GOOGLE LLC
Reel/Frame 045933/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2017
From: SILICON GRAPHICS INTERNATIONAL CORP.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 044128/0149 →
RELEASE OF SECURITY INTEREST Recorded Nov 2, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC., AS AGENT
To: SILICON GRAPHICS INTERNATIONAL CORP.
Reel/Frame 040545/0362 →
SECURITY INTEREST Recorded Mar 13, 2015
From: SILICON GRAPHICS INTERNATIONAL CORP.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 035200/0722 →
CHANGE OF NAME Recorded Apr 16, 2014
From: SILICON GRAPHICS INTERNATIONAL, INC.
To: SGI INTERNATIONAL, INC.
Reel/Frame 032706/0777 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2014
From: SILICON GRAPHICS, INC.
To: SILICON GRAPHICS INTERNATIONAL, INC.
Reel/Frame 032692/0721 →
MERGER Recorded Apr 16, 2014
From: SGI INTERNATIONAL, INC.
To: SILICON GRAPHICS INTERNATIONAL CORP.
Reel/Frame 032692/0890 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2014
From: KESLIN, PHILLIP C.
To: SILICON GRAPHICS, INC.
Reel/Frame 032587/0295 →