IP Library › Granted Patent US 9,582,849
Granted Patent B2
US 9,582,849 · App. 14/065,309 · Granted Feb 28, 2017

Method and system to virtualize graphic processing services

Inventors: Sébastien Baudouin (Grenoble, FR); Cyprien Laplace (Grenoble, FR); Damien Dejean (Grenoble, FR); Eric Donnat (Grenoble, FR)
Assignee: VMware, Inc.
G06T1/60G06F9/45533G06F9/3851G06F9/45508G06T1/00G06T1/20G06T15/00G06T15/005G06T15/04G06T15/10G06T17/00G06T17/20G09G5/363
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,582,849
App. No.
14/065,309
Granted
Feb 28, 2017
Kind
B2
Abstract

Methods and systems configured to virtualize graphic processing services in a virtual machine environment are disclosed. A virtual machine monitor (VMM) may be configured to maintain a virtual machine (VM) based on a host operating system (OS) executing in the system. The VM may contain a virtualized graphics library (vGLib) configured to support a graphic command from an application executing in the VM. The host OS may contain a graphics library (GLib) configured to support the graphic command and utilize a graphics processing unit (GPU) in the system to process the graphic command. Upon receiving the graphic command from the application, the vGLib may be configured to allocate a memory section in the VM to store the graphic command. And the VMM may be further configured to share access to the memory section with the host OS, thereby allowing the host OS to retrieve the graphic command from the memory section and deliver the graphic command to the GLib for processing.

Claims (53)

1. A system configured to virtualize graphic processing services in a virtual machine environment, the system comprising a processor and memory coupled with the processor, wherein the memory is configured to provide the processor with instructions that cause the processor to execute stages comprising:

maintaining, by a virtual machine monitor (VMM), a virtual machine (VM) based on a host operating system (OS) executing in the system, wherein the VM contains a virtualized graphics library (vGLib) configured to support a graphic command from an application executing in the VM, and the host OS contains a graphics library (GLib) configured to support the graphic command and utilize a graphics processing unit (GPU) in the system to process the graphic command;

upon receiving the graphic command from the application, allocating, by the vGLib, a virtual command buffer as a memory section in the VM to store the graphic command, without transmitting the command to the VMM; and

sharing, by the VMM, access to the virtual command buffer with the host OS, thereby allowing the host OS to retrieve the graphic command from the memory section and deliver the graphic command to the GLib for processing.

2. The system of claim 1 , wherein the memory is further configured to provide the processor with instructions for:

retrieving, by the host OS, the graphic command from the shared memory section; and

processing, by the GLib, the graphic command using the GPU.

3. The system of claim 2 , wherein the memory is further configured to provide the processor with instructions for:

generating, by the GLib, a graphic result based on the processing of the graphic command using the GPU; and

storing, by the host OS, the graphic result in the shared memory section.

4. The system of claim 3 , wherein the memory is further configured to provide the processor with instructions for:

retrieving, by the vGLib, the graphic result from the shared memory section; and

returning, by the vGLib, the graphic result to the application as a response to the graphic command.

5. The system of claim 1 , wherein the memory is further configured to provide the processor with instructions for:

upon a determination that the graphic command involves accessing a front buffer or a back buffer, ignoring, by the vGLib, allocating memory of the VM to the front buffer or the back buffer; and

allocating, by the GLib, a frame buffer object for the processing of the graphic command by the Glib.

6. The system of claim 5 , wherein the memory is further configured to provide the processor with instructions for:

utilizing, by the GLib, the frame buffer object as a rendering target to process the graphic command.

7. The system of claim 1 , wherein the memory is further configured to provide the processor with instructions for:

storing, by the vGLib, a plurality of command buffers to the memory section, wherein each of the plurality of command buffers is associated with a corresponding priority value; and

processing, by the host OS, the plurality of command buffers retrieved from the memory section based on their corresponding priority values.

8. The system of claim 1 , where the allocating the memory section in the VM comprises:

storing, by the vGLib, image data associated with the graphic command in the memory section; and

processing, by the host OS, the graphic command utilizing the image data retrieved from the memory section.

9. The system of claim 1 , wherein the sharing the memory segment with the host OS comprises:

upon a determination that a command buffer in the shared memory section is full, generating, by the VMM, a memory pointer configured to address the command buffer in the host OS; and

transmitting, by the VMM, an event with the memory pointer to the host OS, wherein the host OS is configured to retrieve the memory pointer upon receiving the event.

10. The system of claim 9 , where the sharing the memory section with the host OS further comprises:

utilizing, by the GLib, the memory pointer to access the command buffer and process the graphic command.

11. A non-transitory computer-readable storage medium, containing a set of instructions which, when executed by a processor, cause the processor to virtualize graphic processing services in a virtual machine environment, the method comprising:

maintaining, by a virtual machine monitor (VMM), a virtual machine (VM) based on a host operating system (OS) executing in the system, wherein the VM contains a virtualized graphics library (vGLib) configured to support a graphic command from an application executing in the VM, and the host OS contains a graphics library (GLib) configured to support the graphic command and utilize a graphics processing unit (GPU) in the system to process the graphic command;

upon receiving the graphic command from the application, allocating, by the vGLib, a virtual command buffer as a memory section in the VM to store the graphic command, without transmitting the command to the VMM; and

sharing, by the VMM, access to the virtual command buffer with the host OS, thereby allowing the host OS to retrieve the graphic command from the memory section and deliver the graphic command to the GLib for processing.

12. The non-transitory computer-readable storage medium of claim 11 , the method further comprising:

upon a determination that the graphic command involves accessing a front buffer or a back buffer, ignoring, by the vGLib, allocating memory of the VM to the front buffer or the back buffer; and

allocating, by the GLib, a frame buffer object for the processing of the graphic command by the GLib.

13. The non-transitory computer-readable storage medium of claim 11 , the method further comprising:

storing, by the vGLib, image data associated with the graphic command in the memory section; and processing, by the host OS, the graphic command utilizing the image data retrieved from the memory section.

14. The non-transitory computer-readable storage medium of claim 11 , wherein creating the target device interface comprises:

storing, by the vGLib, a plurality of command buffers to the memory section, wherein each of the plurality of command buffers is associated with a corresponding priority value; and

processing, by the host OS, the plurality of command buffers retrieved from the memory section based on their corresponding priority values.

15. A method to virtualize graphic processing services in a virtual machine environment, the method comprising:

maintaining, by a virtual machine monitor (VMM), a virtual machine (VM) based on a host operating system (OS) executing in the system, wherein the VM contains a virtualized graphics library (vGLib) configured to support a graphic command from an application executing in the VM, and the host OS contains a graphics library (GLib) configured to support the graphic command and utilize a graphics processing unit (GPU) in the system to process the graphic command;

upon receiving the graphic command from the application, allocating, by the vGLib, a virtual command buffer as a memory section in the VM to store the graphic command, without transmitting the command to the VMM; and

sharing, by the VMM, access to the virtual command buffer with the host OS, thereby allowing the host OS to retrieve the graphic command from the memory section and deliver the graphic command to the GLib for processing.

16. The method of claim 15 , further comprising:

upon a determination that the graphic command involves accessing a front buffer or a back buffer, ignoring, by the vGLib, allocating memory of the VM to the front buffer or the back buffer; and

allocating, by the GLib, a frame buffer object for the processing of the graphic command by the GLib.

17. The method of claim 16 , further comprising:

storing, by the vGLib, image data associated with the graphic command in the memory section; and processing, by the host OS, the graphic command utilizing the image data retrieved from the memory section.

18. The method of claim 15 , wherein creating the target device interface comprises:

storing, by the vGLib, a plurality of command buffers to the memory section, wherein each of the plurality of command buffers is associated with a corresponding priority value; and

processing, by the host OS, the plurality of command buffers retrieved from the memory section based on their corresponding priority values.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067103/0030 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2013
From: BAUDOUIN, S?BASTIEN; LAPLACE, CYPRIEN; DEJEAN, DAMIEN; DONNAT, ERIC
To: VMWARE, INC.
Reel/Frame 031493/0732 →
Continuity (1)
Related Publication 20150116310A1 · Apr 30, 2015