System, method, and computer program product for remote graphics processing
First Claim
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.
8 Assignments
0 Petitions
Accused Products
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.
60 Citations
14 Claims
-
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. - View Dependent Claims (2, 3, 4, 5, 6)
-
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. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
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.
-
Specification