IP Library Granted Patent US 9,092,249
Granted Patent B2
US 9,092,249 · App. 12/881,119 · Granted Jul 28, 2015

Remote rendering of three-dimensional images using virtual machines

Inventor: David Stone (Lauderdale By-The-Sea, FL)
Assignee: CITRIX SYSTEMS, INC.
G06F9/45541G06T15/00
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 9,092,249
App. No.
12/881,119
Granted
Jul 28, 2015
Kind
B2
Abstract

Remote rendering of three-dimensional images using virtual machines includes using a hypervisor executing on a physical computer to allocate exclusive and direct access to a graphics processing unit in the physical computer, to a first virtual machine. An agent executing on a second virtual machine intercepts three-dimensional draw commands generated by a three-dimensional application and forwards the intercepted draw commands to a rendering agent executing on the first virtual machine. The rendering agent then transmits the intercepted draw commands to the graphics processing unit for rendering upon which the graphics processing unit renders a three-dimensional image from the draw commands. The rendering agent obtains the rendered image from the graphics processing unit and forwards the image to the second virtual machine. Upon receiving the rendered image, the second virtual machine transmits the rendered image to another remote, physical computer where the rendered image is displayed to a user.

Claims (36)

1. A method for remotely rendering three-dimensional draw commands generated by an application executed by a virtual machine executing a non-paravirtualized operating system, the method comprising:

allocating, by a hypervisor executing on a first physical computer executing a first virtual machine and a second virtual machine, to a paravirtualized operating system executing on the first virtual machine, direct access to a graphics processing unit of the first physical computer;

intercepting, by an agent executing on the second virtual machine, three-dimensional draw commands generated by an application executing on the second virtual machine;

receiving, by the agent executing on the second virtual machine, a notification denying the agent access to the graphics processing, the notification including an identification of the first virtual machine that is allocated direct access to the graphics processing unit;

redirecting, by the agent executing on the second virtual machine, the intercepted three-dimensional draw commands to a rendering agent executing on the first virtual machine;

rendering, by the graphics processing unit responsive to receiving the three-dimensional draw commands from the rendering agent, an image based on the three-dimensional draw commands;

forwarding, by the rendering agent executing on the first virtual machine responsive to receiving the rendered image from the graphics processing unit, the rendered image to the agent executing on the second virtual machine that intercepted the three-dimensional draw commands generated by the application; and

transmitting, from the second virtual machine responsive to receiving the rendered image from the rendering agent executing on the first virtual machine, the rendered image to a second physical computer over a communication channel established between the first physical computer and the second physical computer.

2. The method of claim 1 , wherein intercepting the three-dimensional draw commands further comprises intercepting three-dimensional draw commands generated by an application executing on the second virtual machine executing a non-paravirtualized operating system.

3. The method of claim 1 , wherein transmitting the rendered image to the second physical computer further comprises transmitting, by a remoting agent executing on the second virtual machine, the rendered image to the second physical computer.

4. The method of claim 1 , further comprising transmitting, by the rendering agent responsive to receiving the three-dimensional draw commands from the second virtual machine, the three-dimensional draw commands to the graphics processing unit of the first physical computer.

5. The method of claim 4 , wherein transmitting the three-dimensional draw commands to the graphics processing unit further comprises transmitting the three-dimensional draw commands to the graphics processing unit with an instruction to render the three-dimensional draw commands.

6. The method of claim 1 , further comprising receiving, by the second virtual machine, a request from an application executing on the second physical computer for application output generated by the application executing on the second virtual machine.

7. The method of claim 6 , wherein transmitting the rendered image to the second physical computer further comprises transmitting the rendered image to the second physical computer in response to receiving the application output request from the second physical computer.

8. The method of claim 1 , wherein allocating direct access to the graphics processing unit further comprises preventing the second virtual machine from accessing the graphics processing unit.

9. The method of claim 1 , wherein intercepting the three-dimensional draw commands further comprises requesting access to the graphics processing unit.

10. The method of claim 9 , wherein redirecting the intercepted three-dimensional draw commands further comprises redirecting the intercepted three-dimensional draw commands responsive to receiving a notification from the hypervisor denying the second virtual machine access to the graphics processing unit.

11. A system for remotely rendering three-dimensional draw commands generated by an application executed by a virtual machine executing a non-paravirtualized operating system, the system comprising:

a first physical computer having a graphics processing unit and executing a first virtual machine and a second virtual machine;

a second physical computer communicating with the first physical computer over a communications channel;

a hypervisor executing on the first physical computer to allocate to a paravirtualized operating system executing on the first virtual machine, direct access to the graphics processing unit;

an agent executing on the second virtual machine to:

intercept three-dimensional draw commands generated by an application executing on the second virtual machine,

receive a notification denying the agent access to the graphics processing, the notification including an identification of the first virtual machine that is allocated direct access to the graphics processing unit, and

redirect the intercepted three-dimensional draw commands to a rendering agent executing on the first virtual machine,

wherein the graphics processing unit renders an image from the three-dimensional draw commands upon receiving the three-dimensional draw commands from the rendering agent; and

the rendering agent executing on the first virtual machine forwarding the rendered image to the agent executing on the second virtual machine that intercepted the three-dimensional draw commands generated by the application responsive to receiving the rendered image from the graphics processing unit, the rendered image transmitted from the second virtual machine to the second physical computer responsive to receiving the rendered image from the rendering agent executing on the first virtual machine.

12. The system of claim 11 , wherein the second virtual machine executes a non-paravirtualized operating system.

13. The system of claim 11 , further comprising a remoting agent executing on the second virtual machine, the remoting agent transmitting the rendered image from the second virtual machine to the second physical computer.

14. The system of claim 11 , wherein the rendering agent transmits the three-dimensional draw commands to the graphics processing unit of the first physical computer upon receiving the three-dimensional draw commands from the second virtual machine.

15. The system of claim 14 , wherein the rendering agent transmits an instruction to render the three-dimensional draw commands together with the three-dimensional draw commands.

16. The system of claim 11 , wherein the second virtual machine receives a request from an application executing on the second physical computer for application output generated by the application executing on the second virtual machine.

17. The system of claim 16 , wherein the second virtual machine transmits the rendered image to the second physical computer in response to receiving the application output request from the second physical computer.

18. The system of claim 11 , wherein the hypervisor prevents the second virtual machine from accessing the graphics processing unit upon allocating direct access to the graphics processing unit to the first virtual machine.

19. The system of claim 11 , wherein the second virtual machine requests access to the graphics processing unit.

20. The system of claim 19 , wherein the agent executing on the second virtual machine redirects the intercepted three-dimensional draw commands responsive to receiving a notification from the hypervisor denying the second virtual machine access to the graphics processing unit.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2011
From: STONE, DAVID
To: CITRIX SYSTEMS, INC.
Reel/Frame 025843/0605 →
Continuity (2)
Provisional Application 61241420 · Sep 11, 2009
Related Publication 20110134111A1 · Jun 9, 2011