Hardware processing of commands within virtual client computing environment
First Claim
1. A server computing device comprising:
- graphics hardware for processing graphics-related commands into graphics-related command responses;
a first queue and a second queue;
a guest operating system;
a virtual client computing environment that is to run as a session within the guest operating system and that is for interacting with a remote client computing device that is not part of but that is communicatively coupled to the server computing device, the virtual computing environment corresponding to the remote client computing device such that input and output with a user of the remote client computing device is performed at the remote client computing device, and such that processing of the input to provide the output is performed at the virtual client computing environment, the virtual client computing environment comprising;
an encoding application, the encoding application being run within the virtual client computing environment for the user of the remote client computing device such that the user of the remote client computing device interacts with the remote client computing device as if the encoding application were running on an operating system installed on the remote client computing device whereas in actuality the operating system is installed on the server computing device, and such that the remote client computing device acts as a dumb terminal, the encoding application to issue the graphics-related commands and comprising;
a first thread to receive the graphics-related commands and to place the graphics-related commands onto the first queue; and
,a second thread to receive the graphics-related command responses from the second queue and to communicate the graphics-related command responses to a display device of the remote client computing device;
a server computing environment for managing the virtual client computing environment, the server computing environment not part of the virtual client computing environment, the virtual client computing environment not part of the server computing environment, and the server computing environment comprising;
a decoding application comprising a third thread to receive the graphics-related commands from the first queue, to communicate the graphics-related commands to the graphics hardware for processing, to receive the graphics-related command responses from the graphics hardware, and to place the graphics-related command responses onto the second queue,wherein the graphics-related commands comprises a synchronous graphics-related command, the first thread is to place the synchronous graphics-related command onto the first queue and wait to place any further graphics-related commands onto the first queue until the second thread has received a graphics-related command response from the second queue and that is associated with the synchronous graphics-related command.
1 Assignment
0 Petitions
Accused Products
Abstract
Commands are processed by hardware within a virtual client computing environment, such as graphics-related commands processed by graphics hardware. A server computing device includes graphics hardware, a virtual client computing environment, and a server computing environment. The graphics hardware processes graphics-related commands into responses. The virtual client computing environment includes an encoding application that issues the commands. The server computing environment includes a decoding application. The encoding application includes a first thread that receives the commands and places them onto a first queue. The encoding application includes a second thread that receives the responses from a second queue and communicates the responses to a remote display device. The decoding application includes a third thread that receives the commands from the first queue, communicates the commands to the graphics hardware, receives the responses from the graphics hardware, and places the responses onto the second queue.
497 Citations
16 Claims
-
1. A server computing device comprising:
-
graphics hardware for processing graphics-related commands into graphics-related command responses; a first queue and a second queue; a guest operating system; a virtual client computing environment that is to run as a session within the guest operating system and that is for interacting with a remote client computing device that is not part of but that is communicatively coupled to the server computing device, the virtual computing environment corresponding to the remote client computing device such that input and output with a user of the remote client computing device is performed at the remote client computing device, and such that processing of the input to provide the output is performed at the virtual client computing environment, the virtual client computing environment comprising; an encoding application, the encoding application being run within the virtual client computing environment for the user of the remote client computing device such that the user of the remote client computing device interacts with the remote client computing device as if the encoding application were running on an operating system installed on the remote client computing device whereas in actuality the operating system is installed on the server computing device, and such that the remote client computing device acts as a dumb terminal, the encoding application to issue the graphics-related commands and comprising; a first thread to receive the graphics-related commands and to place the graphics-related commands onto the first queue; and
,a second thread to receive the graphics-related command responses from the second queue and to communicate the graphics-related command responses to a display device of the remote client computing device; a server computing environment for managing the virtual client computing environment, the server computing environment not part of the virtual client computing environment, the virtual client computing environment not part of the server computing environment, and the server computing environment comprising; a decoding application comprising a third thread to receive the graphics-related commands from the first queue, to communicate the graphics-related commands to the graphics hardware for processing, to receive the graphics-related command responses from the graphics hardware, and to place the graphics-related command responses onto the second queue, wherein the graphics-related commands comprises a synchronous graphics-related command, the first thread is to place the synchronous graphics-related command onto the first queue and wait to place any further graphics-related commands onto the first queue until the second thread has received a graphics-related command response from the second queue and that is associated with the synchronous graphics-related command. - View Dependent Claims (2, 3, 4)
-
-
5. A server computing device comprising:
-
hardware for processing specific commands into responses; a guest operating system; a virtual client computing environment that is to run as a session within the guest operating system and that is for interacting with a remote client computing device that is not part of but that is communicatively coupled to the server computing device, the virtual computing environment corresponding to the remote client computing device such that input and output with a user of the remote client computing device is performed at the remote client computing device, and such that processing of the input to provide the output is performed at the virtual client computing environment, the virtual client computing environment to issue the specific commands and comprising; a first thread to receive the specific commands issued within the virtual client computing environment and to place the specific commands onto a first queue; and
,a second thread to receive the responses from a second queue and to communicate the responses to corresponding hardware of the remote client computing device; a server computing environment for managing the virtual client computing environment, the server computing environment not part of the virtual client computing environment, the virtual client computing environment not part of the server computing environment, and the server computing environment comprising; a third thread to receive the specific commands from the first queue, to communicate the specific commands to the hardware for processing, to receive the responses from the hardware, and to place the responses onto the second queue, wherein applications are run within the virtual client computing environment for the user of the remote client computing device such that the user of the remote client computing device interacts with the remote client computing device as if the applications were running on an operating system installed on the remote client computing device whereas in actuality the operating system is installed on the server computing device, and such that the remote client computing device acts as a dumb terminal, and wherein the graphics-related commands comprises a synchronous graphics-related command, the first thread is to place the synchronous graphics-related command onto the first queue and wait to place any further graphics-related commands onto the first queue until the second thread has received a graphics-related command response from the second queue and that is associated with the synchronous graphics-related command. - View Dependent Claims (6, 7, 8)
-
-
9. A method comprising:
-
receiving a graphics-related command by a first thread of a virtual client computing environment running as a session of a guest operating system of a server computing device as issued by an encoding application running within a virtual client computing environment of the server computing device, the virtual client computing environment for interacting with a remote client computing device that is not part of but that is communicatively coupled to the server computing device, the virtual computing environment corresponding to the remote client computing device such that input and output with a user of the remote client computing device is performed at the remote client computing device, and such that processing of the input to provide the output is performed at the virtual client computing environment, the server computing environment for managing the virtual client computing environment, the server computing environment not part of the virtual client computing environment, and the virtual client computing environment not part of the server computing environment; placing the graphics-related command by the first thread onto a first queue; receiving the graphics-related command from the first queue by a third thread of the server computing environment; communicating the graphics-related command by the third thread to graphics hardware of the server computing device for processing into a graphics-related command response; receiving the graphics-related command response by the third thread from the graphics hardware; placing the graphics-related command response by the third thread onto a second queue; receiving the graphics-related command response from the second queue by a second thread of the virtual client computing environment; communicating the graphics-related command response by the second thread to a display device of the remote client computing device, wherein the encoding application is run within the virtual client computing environment for the user of the remote client computing device such that the user of the remote client computing device interacts with the remote client computing device as if the encoding application were running on an operating system installed on the remote client computing device whereas in actuality the operating system is installed on the server computing device, and such that the remote client computing device acts as a dumb terminal; after placing the graphics-related command by the first thread onto the first queue; determining by the first thread that the graphics-related command is a synchronous graphics-related command; in response, the first thread blocking such that the first thread does not place any further graphics-related commands onto the first queue; after receiving the graphics-related command response from the second queue by the second thread; determining by the second thread that the graphics-related command response is a synchronous graphics-related command response; and
,in response, the second thread waking the first thread so that the first thread can again begin to place any further graphics-related commands onto the first queue. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. An article of manufacture comprising:
-
a non-transitory computer-readable recordable data storage medium; first means in the medium for receiving commands issued within a virtual client computing environment and for placing the commands onto a first queue, the virtual client computing environment running as a session of a guest operating system of a server computing device; second means in the medium for receiving responses from a second queue and for communicating the responses to corresponding hardware of a remote client computing device associated with the virtual client computing environment; and
,third means in the medium for receiving the commands from the first queue, for communicating the commands to hardware for processing the commands into the responses, for receiving the responses from the hardware, and for placing the responses onto the second queue, wherein the third means is a server computing environment for managing the virtual client computing environment, the server computing environment and the virtual client computing environment both being part of the server computing device that is not part of but that is communicatively coupled to the remote computing device, wherein the virtual computing environment corresponds to the remote client computing device such that input and output with a user of the remote client computing device is performed at the remote client computing device, and such that processing of the input to provide the output is performed at the virtual client computing environment, the server computing environment for managing the virtual client computing environment, the server computing environment not part of the virtual client computing environment, and the virtual client computing environment not part of the server computing environment, wherein applications are run within the virtual client computing environment for the user of the remote client computing device such that the user of the remote client computing device interacts with the remote client computing device as if the applications were running on an operating system installed on the remote client computing device whereas in actuality the operating system is installed on the server computing device, and such that the remote client computing device acts as a dumb terminal, and wherein the graphics-related commands comprises a synchronous graphics-related command, the first thread is to place the synchronous graphics-related command onto the first queue and wait to place any further graphics-related commands onto the first queue until the second thread has received a graphics-related command response from the second queue and that is associated with the synchronous graphics-related command. - View Dependent Claims (16)
-
Specification