IP Library Granted Patent US 7,830,395
Granted Patent B2
US 7,830,395 · App. 11/643,425 · Granted Nov 9, 2010

Virtualization of graphics resources

Assignee: Apple Inc.
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 7,830,395
App. No.
11/643,425
Granted
Nov 9, 2010
Kind
B2
Abstract

Graphics resources are virtualized through an interface between graphics hardware and graphics clients. The interface allocates the graphics resources across multiple graphics clients, processes commands for access to the graphics resources from the graphics clients, and resolves conflicts for the graphics resources among the clients.

Claims (91)

1. A computerized method of virtualizing graphics resources comprising:

allocating, by a data processing system, a graphics resource to a plurality of graphics clients, wherein the graphics resource comprises graphics hardware;

assigning an identifier to reference the graphics resource in a command;

sending the identifier to the graphics client that requested allocation of the graphics resource;

associating the identifier with an entry in a virtualization map containing information about the allocation of the graphics resource;

processing commands for access to the graphics resource from the plurality of graphics clients, wherein processing commands comprises:

locating the commands in a command stream;

replacing the identifier in the commands with an address for the graphics resource, wherein the identifier is different than the address; and

resolving, by a graphics kernel, a conflict for the graphics resource among the plurality of graphics clients.

2. The computerized method of claim 1 , wherein locating the commands comprises:

jumping to the commands using offset values specified in a series of jump packets in the command stream.

3. The computerized method of claim 1 , wherein resolving a conflict comprises:

determining the graphics resource has been used by a second graphics client when a first graphics client requests access to the graphics resource; and

refreshing the graphics resource with data for the first graphics client.

4. The computerized method of claim 3 , wherein refreshing the graphics resource comprises:

paging data in the graphics resource for the second graphics client into a backing store; and

paging the data for the first graphics client from the backing store into the graphics resource.

5. The computerized method of claim 3 , wherein refreshing the graphics resource comprises:

paging the data for the first graphics client from a backing store into a like graphics resource; and

assigning the like graphics resource an identifier that was previously assigned to the graphics resource.

6. The computerized method of claim 1 , wherein processing commands comprises:

inserting a reference to a graphics hardware semaphore before a command that causes the conflict for the graphics resource; and

clearing the graphics hardware semaphore when the conflict is resolved.

7. The computerized method of claim 1 further comprising:

creating a command requesting access to the graphics resource using the identifier.

8. The computerized method of claim 7 , wherein creating a command comprises:

inserting a jump packet to a next command containing an identifier.

9. A non-transitory machine-readable storage medium storing executable instructions to cause a processing system to perform a method comprising:

allocating a graphics resource to a plurality of graphics clients, wherein the graphics resource comprises graphics hardware;

assigning an identifier to reference the graphics resource in a command;

sending the identifier to the graphics client that requested allocation of the graphics resource;

associating the identifier with an entry in a virtualization map containing information about the allocation of the graphics resource;

processing commands for access to the graphics resource from the plurality of graphics clients, wherein processing commands comprises:

locating the commands in a command stream;

replacing the identifier in the commands with an address for the graphics resource, wherein the identifier is different than the address; and

resolving, by a graphics kernel, a conflict for the graphics resource among the plurality of graphics clients.

10. The non-transitory machine-readable storage medium of claim 9 , wherein locating the commands comprises:

jumping to the commands using offset values specified in a series of jump packets in the command stream.

11. The non-transitory machine-readable storage medium of claim 9 , wherein resolving a conflict comprises:

determining the graphics resource has been used by a second graphics client when a first graphics client requests access to the graphics resource; and

refreshing the graphics resource with data for the first graphics client.

12. The non-transitory machine-readable storage medium of claim 11 , wherein refreshing the graphics resource comprises:

paging data in the graphics resource for the second graphics client into a backing store; and

paging the data for the first graphics client from the backing store into the graphics resource.

13. The non-transitory machine-readable storage medium of claim 11 , wherein refreshing the graphics resource comprises:

paging the data for the first graphics client from a backing store into a like graphics resource; and

assigning the like graphics resource an identifier that was previously assigned to the graphics resource.

14. The non-transitory machine-readable storage medium of claim 9 , wherein processing commands comprises:

inserting a reference to a graphics hardware semaphore before a command that causes the conflict for the graphics resource; and

clearing the graphics hardware semaphore when the conflict is resolved.

15. The non-transitory machine-readable storage medium of claim 9 further comprising:

creating a command requesting access to the graphics resource using the identifier.

16. The non-transitory machine-readable storage medium of claim 15 , wherein creating a command comprises:

inserting a jump packet to a next command containing an identifier.

17. A computer system comprising:

a processor coupled to a memory through a bus;

a graphics processor coupled to the processor through the bus and associated with graphics resources; and

a kernel driver executed by the graphics processor to cause the graphics processor to

allocate a graphics resource to a plurality of graphics clients, wherein the graphics resource comprises graphics hardware,

assign an identifier to reference the graphics resource in a command,

send the identifier to the graphics client that requested allocation of the graphics resource,

associate the identifier with an entry in a virtualization map containing information about the allocation of the graphics resource,

process commands for access to the graphics resource from the plurality of graphics clients, wherein the kernel driver, when processing commands, further causes the graphics processor to:

locate the commands in a command stream,

replace the identifier in the commands with an address for the graphics resource, wherein the identifier is different than the address, and

resolve, by the kernel driver, a conflict for the graphics resource among the plurality of graphics clients.

18. The computer system of claim 17 , wherein the kernel driver, when locating the commands, further causes the graphics processor to jump to the commands using offset values specified in a series of jump packets in the command stream.

19. The computer system of claim 17 , wherein the kernel driver, when resolving a conflict, further causes the graphics processor to

determine the graphics resource has been used by a second graphics client when a first graphics client requests access to the graphics resource, and

refresh the graphics resource with data for the first graphics client.

20. The computer system of claim 19 , wherein the kernel driver, when refreshing the graphics resource, further causes the graphics processor to

page data in the graphics resource for the second graphics client into a backing store, and

page the data for the first graphics client from the backing store into the graphics resource.

21. The computer system of claim 19 , wherein the kernel driver, when refreshing the graphics resource, further causes the graphics processor to

page the data for the first graphics client from a backing store into a like graphics resource, and

assign the like graphics resource an identifier that was previously assigned to the graphics resource.

22. The computer system of claim 17 , wherein the kernel driver, when processing commands, further causes the graphics processor to

insert a reference to a graphics hardware semaphore before a command that causes the conflict for the graphics resource, and

clear the graphics hardware semaphore when the conflict is resolved.

23. The computer system of claim 17 further comprising:

a client driver executed by the processor from the memory to cause the processor to create a command requesting access to the graphics resource using the identifier.

24. The computer system of claim 23 , wherein the client driver further causes the processor to insert a jump packet to a next command containing an identifier when creating a command.

25. A data processing system comprising:

means for allocating, by a hardware device, a graphics resource to a plurality of graphics clients, wherein the graphics resource comprises graphics hardware;

means for assigning an identifier to reference the graphics resource in a command;

means for sending the identifier to the graphics client that requested allocation of the graphics resource;

means for associating the identifier with an entry in a virtualization map containing information about the allocation of the graphics resource;

means for processing commands for access to the graphics resource from the plurality of graphics clients, wherein the means for processing commands comprises:

means for locating the commands in a command stream;

means for replacing the identifier in the commands with an address for the graphics resource, wherein the identifier is different than the address; and

means for resolving, by a graphics kernel, a conflict for the graphics resource among the plurality of graphics clients.

Assignments (1)
CHANGE OF NAME Recorded May 7, 2007
From: APPLE COMPUTER, INC., A CALIFORNIA CORPORATION
To: APPLE INC.
Reel/Frame 019281/0699 →
Continuity (3)
Continuation 1096422000 · Oct 12, 2004
Division 1004301800 · Jan 8, 2002
Related Publication 20070097133A1 · May 3, 2007