Method and mechanism for delivering applications over a wan
First Claim
Patent Images
1. A computer implemented method for implementing remotegraphics rendering, comprising:
- a) generating, at a server CPU, a set of graphics commands to be transmitted from a server to a client, wherein the set of graphics commands are commands to be executed by a client GPU to generate pixels for display;
b) optimizing the set of graphics commands at the server CPU by;
1) eliminating some or all primitive data, that need not be executed by the client GPU to generate pixels for rendering one or more images, from the set of graphics commands to be transmitted to the client;
2) applying precision changes to the set of graphics commands to be transmitted to the client; and
3) performing one or more data type compression algorithms on the set of graphics commands, including;
i) separating the set of graphics commands into a plurality of data streams based on individual data types, the individual data types comprising vertex position data, API calls, and texture coordinate data; and
ii) performing a different customized compression algorithm on each of the plurality of data streams to generate a corresponding plurality of compressed data streams representing the set of graphics commands; and
c) transmitting the plurality of compressed data streams representing the optimized set of graphics commands to the client, wherein the plurality of compressed data streams representing the optimized set of graphics commands is executed by the client GPU to render the one or more images.
3 Assignments
0 Petitions
Accused Products
Abstract
An improved approach for a remote graphics rendering system that can utilize both server-side processing and client-side processing for the same display frame. Some techniques for optimizing a set of graphics command data to be sent from the server to the client include: eliminating some or all data, that is not needed by a client GPU to render one or more images, from the set of graphics command data to be transmitted to the client; applying precision changes to the set of graphics command data to be transmitted to the client; and performing one or more data type compression algorithms on the set of graphics command data.
-
Citations
28 Claims
-
1. A computer implemented method for implementing remote
graphics rendering, comprising: -
a) generating, at a server CPU, a set of graphics commands to be transmitted from a server to a client, wherein the set of graphics commands are commands to be executed by a client GPU to generate pixels for display; b) optimizing the set of graphics commands at the server CPU by; 1) eliminating some or all primitive data, that need not be executed by the client GPU to generate pixels for rendering one or more images, from the set of graphics commands to be transmitted to the client; 2) applying precision changes to the set of graphics commands to be transmitted to the client; and 3) performing one or more data type compression algorithms on the set of graphics commands, including; i) separating the set of graphics commands into a plurality of data streams based on individual data types, the individual data types comprising vertex position data, API calls, and texture coordinate data; and ii) performing a different customized compression algorithm on each of the plurality of data streams to generate a corresponding plurality of compressed data streams representing the set of graphics commands; and c) transmitting the plurality of compressed data streams representing the optimized set of graphics commands to the client, wherein the plurality of compressed data streams representing the optimized set of graphics commands is executed by the client GPU to render the one or more images. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A computer implemented method for implementing remote graphics rendering, comprising:
-
a) receiving, at a client, a set of optimized graphics commands from a server, the set of optimized graphics commands including a plurality of compressed data streams corresponding to individual data types, the individual data types comprising vertex position data, API calls, and texture coordinate data, wherein the set of optimized graphics commands is executed by a client GPU at the client to generate pixels for rendering one or more images; b) parsing the received set of optimized graphics commands to separate the set of optimized graphics commands into the individual data types; and c) applying a decompression algorithms based at least in part on data type to each of the plurality of data streams representing the set of optimized graphics commands to form a set of uncompressed optimized graphics commands; and d) assembling API streams for the uncompressed optimized graphics commands. - View Dependent Claims (18, 19)
-
-
20. A remote graphics rendering system, comprising:
-
a server comprising a server CPU, wherein the server is configured to perform a method for implementing remote graphics rendering, comprising; a) generating, at the server CPU, a set of graphics commands to be transmitted from the server to a client, wherein the set of graphics commands are commands to be executed by a GPU to generate pixels for display; b) optimizing the set of graphics commands at the server CPU by; 1) eliminating some or all primitive data, that does not need to be executed by a client GPU to generate pixels for rendering one or more images, from the set of graphics commands to be transmitted to the client; 2) applying precision changes to the set of graphics commands to be transmitted to the client; and 3) performing one or more data type compression algorithms on the set of graphics commands, including performing a different customized compression algorithm on each of a plurality of individual data streams of the set of graphics commands, the plurality of individual data streams comprising vertex position data, API calls, and texture coordinate data, to generate a plurality of compressed data streams representing the set of graphics commands; and c) transmitting the plurality of compressed data streams representing the optimized set of graphics commands to the client, wherein the optimized set of graphics commands is executed by the client GPU to generate pixels for rendering the one or more images. - View Dependent Claims (21, 22, 23, 24)
-
-
25. A remote graphics rendering system, comprising:
-
a client, comprising; a client CPU; and a client GPU, wherein the client is configured to perform a method for implementing remote graphics rendering, comprising; a) receiving a set of optimized graphics commands from a server, wherein the set of optimized graphics commands includes a plurality of data streams based on data types, the plurality of data streams comprising vertex position data, API calls, and texture coordinate data, the plurality of data streams to be executed by the client GPU at the client to generate pixels for rendering one or more images; b) parsing the received set of optimized graphics commands using the client CPU to separate the set of optimized graphics commands into the plurality of data streams based on data types; and c) applying one or more decompression algorithms based at least in part on data type to the plurality of data streams representing the set of optimized graphics commands using the client CPU to form a set of uncompressed optimized graphics commands; and d) assembling API streams for the uncompressed optimized graphics commands data using the client CPU. - View Dependent Claims (26)
-
-
27. A computer program product that includes a non-transitory computer readable medium, the non-transitory computer readable medium comprising a plurality of computer instructions which, when executed by at least one processor, cause the at least one processor to execute a method for implementing remote graphics rendering, the method comprising:
-
a) generating, at a server CPU, a set of graphics commands to be transmitted from a server to a client, wherein the set of graphics commands are commands to be executed by a GPU to generate pixels for display; b) optimizing the set of graphics commands at the server CPU by; 1) eliminating some or all primitive data, that need not be executed by a client GPU to generate pixels for rendering one or more images, from the set of graphics commands to be transmitted to the client; 2) applying precision changes to the set of graphics commands to be transmitted to the client; and 3) performing one or more data type compression algorithms on the set of graphics commands, including performing a different customized compression algorithm on each of a plurality of data streams of the set of graphics commands, the plurality of data streams comprising vertex position data, API calls, and texture coordinate data, to generate a plurality of compressed data streams representing the set of graphics commands; and c) transmitting the plurality of compressed data streams representing the optimized set of graphics commands to the client, wherein the optimized set of graphics commands is executed by the client GPU to generate pixels for rendering the one or more images.
-
-
28. A computer program product that includes a non-transitory computer readable medium, the non-transitory computer readable medium comprising a plurality of computer instructions which, when executed by at least one processor, cause the at least one processor to execute a method for implementing remote graphics rendering, the method comprising:
-
a) receiving, at a client, a set of optimized graphics commands from a server, wherein the set of optimized graphics commands includes a plurality of data streams each corresponding to a different data type, the plurality of data streams comprising vertex position data, API calls, and texture coordinate data, the optimized set of graphics commands to be executed by a client GPU at the client to generate pixels for rendering one or more images; b) parsing the received set of optimized graphics commands using the client CPU to separate the set of optimized graphics commands into the plurality of data streams based on data types; and c) applying one or more decompression algorithms based at least in part on data type to the plurality of data streams representing the set of optimized graphics commands using the client CPU to form a set of uncompressed optimized graphics commands; and d) assembling API streams for the uncompressed optimized graphics commands using the client CPU.
-
Specification