IP Library Granted Patent US 9,367,947
Granted Patent B2
US 9,367,947 · App. 14/748,796 · Granted Jun 14, 2016

Remote rendering of three-dimensional images using virtual machines

Inventor: David Stone (Lauderdale By-The-Sea, FL)
Assignee: Citrix Systems, Inc.
G06T15/005G06F9/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,367,947
App. No.
14/748,796
Granted
Jun 14, 2016
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 (31)

1. A method for rendering draw commands generated by an application, the method comprising:

intercepting, by an agent executing on a first virtual machine, draw commands generated by an application on the first virtual machine;

receiving, by the agent, a notification denying the agent access to a graphics processing unit, the notification identifying a second virtual machine allocated with the graphics processing unit;

redirecting, by the agent, the intercepted draw commands to a rendering agent on the second virtual machine;

rendering, by the graphics processing unit, an image based on the redirected draw commands; and

forwarding, by the rendering agent on the second virtual machine, the rendered image from the graphics processing unit to the agent executing on the first virtual machine.

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

3. The method of claim 1 , further comprising transmitting, from the first virtual machine responsive to receiving the rendered image from the rendering agent, the rendered image to a second physical computer over a communication channel established between the second physical computer and a first physical computer hosting the first virtual machine.

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

5. The method of claim 1 , further comprising transmitting, by the rendering agent responsive to receiving the redirected draw commands, the redirected draw commands to the graphics processing unit.

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

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

8. The method of claim 1 , further comprising allocating to the second virtual machine, by a hypervisor executing on a first physical computer executing the first virtual machine and the second virtual machine, direct access to the graphics processing unit of the first physical computer.

9. The method of claim 1 , further comprising requesting, by the agent, access to the graphics processing unit responsive to intercepting the draw commands.

10. The method of claim 1 , wherein redirecting the intercepted draw commands further comprises redirecting the intercepted draw commands responsive to receiving the notification, the notification comprising a message from a hypervisor denying the first virtual machine access to the graphics processing unit.

11. A system for remotely rendering draw commands generated by an application, the system comprising:

a graphics processing unit; and

an agent executing on a first virtual machine of a first physical computer, the agent configured to:

intercept draw commands generated by an application executing on the first virtual machine;

receive a notification denying the agent access to the graphics processing unit, the notification identifying a second virtual machine allocated with the graphics processing unit; and

redirect the intercepted draw commands to a rendering agent on the second virtual machine;

wherein the graphics processing unit is configured to render an image based on the redirected draw commands, and the rendering agent is configured to forward the rendered image from the graphics processing unit to the agent executing on the first virtual machine.

12. The system of claim 11 , wherein the agent is configured to intercept three-dimensional draw commands generated by the application on the first virtual machine, the first virtual machine executing a non-paravirtualized operating system.

13. The system of claim 11 , further comprising a remoting agent executing on the first virtual machine, the remoting agent configured to transmit, responsive to receiving the rendered image from the rendering agent, the rendered image to a second physical computer over a communication channel established between the second physical computer and the first physical computer.

14. The system of claim 13 , wherein the remoting agent is configured to transmit the rendered image to the second physical computer responsive to receiving the rendered image from the rendering agent.

15. The system of claim 11 , wherein the rendering agent is configured to transmit the draw commands to the graphics processing unit responsive to receiving the draw commands from the agent.

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

17. The system of claim 16 , further comprising a remoting agent executing on the first virtual machine, the remoting agent configured to transmit the rendered image to the second physical computer in response to receiving the request from the second physical computer.

18. The system of claim 11 , further comprising a hypervisor executing on the first physical computer, the hypervisor configured to allocate to the second virtual machine direct access to the graphics processing unit of the first physical computer.

19. The system of claim 11 , wherein the agent is further configured to request access to the graphics processing unit responsive to intercepting the draw commands.

20. The system of claim 11 , wherein the agent is configured to redirect the intercepted draw commands responsive to receiving the notification, the notification comprising a message from a hypervisor denying the first 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: 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 →
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 →
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 Jun 24, 2015
From: STONE, DAVID
To: CITRIX SYSTEMS, INC.
Reel/Frame 035895/0887 →
Continuity (3)
Continuation 12881119 · Sep 13, 2010
Provisional Application 61241420 · Sep 11, 2009
Related Publication 20150294494A1 · Oct 15, 2015