IP Library Granted Patent US 9,811,366
Granted Patent B2
US 9,811,366 · App. 14/485,084 · Granted Nov 7, 2017

Dynamically using system memory as video memory for virtual graphics processing units

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,811,366
App. No.
14/485,084
Granted
Nov 7, 2017
Kind
B2
Abstract

Techniques for dynamically using system (i.e., VM guest) memory as video memory for virtual graphics processing units (VGPUs) are provided. In one embodiment, a guest graphics driver running within a virtual machine (VM) of a host system can receive, from a guest application of the VM, a request to create a graphics resource. The guest graphics driver can then dynamically allocate, in response to the request, a memory object for the graphics resource in a guest memory space of the VM.

Claims (66)

1. A method comprising:

receiving, by a host system, a request to create a graphics resource from a guest application of a virtual machine (VM) running on the host system; and

in response to the request, dynamically allocating, by the host system via a guest graphics driver running within the VM, a memory object for the graphics resource in a guest memory space of the VM.

2. The method of claim 1 further comprising, prior to the dynamically allocating:

transmitting, by the guest graphics driver to a virtual graphics processing unit (VGPU) of the host system, a command to store metadata for the graphics resource; and

storing, by the VGPU in response to the command, the metadata for the graphics resource in an entry of a metadata table maintained in the guest memory space.

3. The method of claim 2 wherein the memory object is bound to the entry of the metadata table after the memory object is allocated.

4. The method of claim 1 wherein the memory object comprises scatter-gathered memory pages in the guest memory space.

5. The method of claim 1 further comprising:

receiving, by a VGPU of the host system, a command from the guest graphics driver indicating that the memory object has been modified;

invalidating, by the VGPU, any previously cached copies of the memory object;

propagating, by the VGPU, the modified version of the memory object to a graphics processing unit (GPU) of the host system; and

caching, by the VGPU, the modified version of the memory object.

6. The method of claim 5 further comprising:

updating, by the VGPU, its cached copy of the memory object in response to modifications to the memory object made by the GPU;

determining, by the VGPU, that the GPU-modified version of the memory object should be synchronized back to the guest memory space of the VM; and

overwriting, by the VGPU, the memory object in the guest memory space with the GPU-modified version.

7. The method of claim 5 further comprising:

receiving, by the VGPU, a command from the guest graphics driver indicating that the memory object is no longer needed by the guest application; and

binding, by the VGPU, a newly allocated memory object for the graphics resource to the entry of the metadata table.

8. A non-transitory computer readable storage medium having stored thereon program code executable by a host system, the program code embodying a method that comprises:

receiving, by a guest graphics driver running within a virtual machine (VM) of the host system, a request to create a graphics resource from a guest application of the VM; and

dynamically allocating, by the guest graphics driver in response to the request, a memory object for the graphics resource in a guest memory space of the VM.

9. The non-transitory computer readable storage medium of claim 8 wherein the method further comprises, prior to the dynamically allocating:

transmitting, by the guest graphics driver to a virtual graphics processing unit (VGPU) of the host system, a command to store metadata for the graphics resource; and

storing, by the VGPU in response to the command, the metadata for the graphics resource in an entry of a metadata table maintained in the guest memory space.

10. The non-transitory computer readable storage medium of claim 9 wherein the memory object is bound to the entry of the metadata table after the memory object is allocated.

11. The non-transitory computer readable storage medium of claim 8 wherein the memory object comprises scatter-gathered memory pages in the guest memory space.

12. The non-transitory computer readable storage medium of claim 8 wherein the method further comprises:

receiving, by a VGPU of the host system, a command from the guest graphics driver indicating that the memory object has been modified;

invalidating, by the VGPU, any previously cached copies of the memory object;

propagating, by the VGPU, the modified version of the memory object to a graphics processing unit (GPU) of the host system; and

caching, by the VGPU, the modified version of the memory object.

13. The non-transitory computer readable storage medium of claim 12 wherein the method further comprises:

updating, by the VGPU, its cached copy of the memory object in response to modifications to the memory object made by the GPU;

determining, by the VGPU, that the GPU-modified version of the memory object should be synchronized back to the guest memory space of the VM; and

overwriting, by the VGPU, the memory object in the guest memory space with the GPU-modified version.

14. The non-transitory computer readable storage medium of claim 12 wherein the method further comprises:

receiving, by the VGPU, a command from the guest graphics driver indicating that the memory object is no longer needed by the guest application; and

binding, by the VGPU, a newly allocated memory object for the graphics resource to the entry of the metadata table.

15. A host system comprising:

a processor;

a virtual machine (VM);

a guest graphics driver running within the VM;

a graphics processing unit (GPU);

a virtual graphics processing unit (VGPU); and

a non-transitory computer readable medium having stored thereon program code that, when executed by the processor, causes the processor to:

receive, via the guest graphics driver from a guest application running within the VM, a request to create a graphics resource in a guest memory space of the VM; and

dynamically allocate, via the guest graphics driver in response to the request, a memory object for the graphics resource in the guest memory space.

16. The host system of claim 15 wherein the program code further causes the processor to, prior to the dynamically allocating:

define metadata for the graphics resource; and

store the metadata in an entry of a metadata table maintained in the guest memory space.

17. The host system of claim 16 wherein the memory object is bound to the entry of the metadata table after the memory object is allocated.

18. The host system of claim 15 wherein the memory object comprises scatter-gathered memory pages in the guest memory space.

19. The host system of claim 15 wherein the program code further causes the processor to:

receive, via the VGPU, a command from the guest graphics driver indicating that the memory object has been modified;

invalidate any previously cached copies of the memory object;

propagate the modified version of the memory object to the GPU; and

cache the modified version of the memory object.

20. The host system of claim 19 wherein the program code further causes the processor to:

update, via the VGPU, the cached copy of the memory object in response to modifications to the memory object made by the GPU;

determine that the GPU-modified version of the memory object should be synchronized back to the guest memory space of the VM; and

overwrite the memory object in the guest memory space with the GPU-modified version.

21. The host system of claim 19 wherein the program code further causes the processor to:

receive, via the VGPU, a command from the guest graphics driver indicating that the memory object is no longer needed by the guest application; and

bind a newly allocated memory object to the entry of the metadata table.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2014
From: SHELDON, MARK; SHELDON, JEFFREY W; BANACK, MICHAEL
To: VMWARE, INC.
Reel/Frame 033732/0703 →