# US 10,504,203 B2 · Virtual graphics device driver

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,504,203 B2
- Document ID: US10504203B2
- Status: Granted
- Kind: B2
- Application number: 15/150,060
- Filed: 2016-05-09
- Published: 2016-11-10
- Granted: 2019-12-10
- Earliest claimed: 2009-06-25
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: David J. Redman; Changki Min; Phillip J. Churchill; Adrian T. Sheppard; David A. Leech; Unmesh Sahasrabuddhe; Ian Hendry; Eve Brasfield
- Web page: https://patentgrep.com/patent/US10504203B2

## CPC

- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06F 9/4411: {Configuring for operating with peripheral devices; Loading of device drivers}
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods are disclosed to enable switching of graphics processing unit (GPU) resources based on different factors. Embodiments include a virtual graphics driver as an interface between GPU drivers and the applications or graphics framework executing on an electronic device. The virtual graphics driver may switch GPU resources from a first GPU to a second GPU by routing function calls to the first GPU or the second GPU. The switching of GPU resources may be based on power management, system events such as hot-plug events, load management, user requests, any other factor, or any combination thereof. In some embodiments, a virtual frame buffer driver is provided that interfaces with the frame buffer of the GPU and provides a virtual view of the frame buffer to manage additional system application programming interfaces (APIs) during the switch.

## Claims

### Claim 1

A system, comprising:
an electronic device comprising:
a first graphic processing unit (GPU);
a first frame buffer configured to store image data for the first GPU;
a second GPU;
a second frame buffer configured to store image data for the second GPU;
a non-transitory tangible machine-readable storage medium comprising instructions to:
receive graphics function calls by graphics driver software from a framework, wherein the graphics driver software is configured to route the graphics function calls to the first GPU or the second GPU;
route the graphics function calls for execution by the first GPU;
provide the image data to a display from the first frame buffer when the graphics function calls are routed to the first GPU, wherein the provision of the image data to the display from the first frame buffer is provided via a frame buffer application programming interface through the graphics driver software;
determine to switch the graphics function calls from the first GPU to the second GPU using the graphics driver software, wherein the graphics driver software determines when to switch the graphic function calls;
in response to the determination to switch, switch the graphics function calls to the second GPU;
route subsequent graphics function calls for execution by the second GPU; and
provide the image data to the display from the second frame buffer when the graphics function calls are routed to the second GPU, wherein the provision of the image data to the display from the second frame buffer is provided via the frame buffer application programming interface through the graphics driver software.

### Claim 2 (depends on 1)

The system of claim 1, wherein the first GPU is configured execute the graphics function calls to render graphics for display on the display.

### Claim 3 (depends on 2)

The system of claim 2, wherein the first GPU is configured to transmit the image data to the display.

### Claim 4 (depends on 2)

The system of claim 2, wherein the second GPU is configured to execute the graphics function calls to render second graphics for display on the display.

### Claim 5 (depends on 1)

The system of claim 1, wherein the first GPU comprises an integrated GPU.

### Claim 6 (depends on 1)

The system of claim 1, wherein the second GPU comprises a dedicated GPU.

### Claim 7 (depends on 1)

The system of claim 1, wherein switching the graphics function calls to the second GPU is based upon a type of graphic function call received.

### Claim 8 (depends on 7)

The system of claim 7, wherein the type of graphics function call received corresponds to an amount of processing required to render an image.

### Claim 9 (depends on 1)

The system of claim 1, wherein the graphics driver software comprises a plurality of graphics drivers.

### Claim 10

A method, comprising:
routing, using graphics driver software, first function calls received from a framework to a first graphics processing unit (GPU) of an electronic device for execution of the first function calls by the first GPU;
rendering an image for display on a display of the electronic device via the first GPU by providing image data to the display from a first frame buffer when the first function calls are routed to the first GPU, wherein the provision of the image data to the display from the first frame buffer is provided via a frame buffer application programming interface through the graphics driver software;
determining, using the graphics driver software, whether to switch rendering from the first GPU to a second GPU, wherein when it is determined to switch rendering from the first GPU to the second GPU;
in response to the determination to switch and using the graphics driver software, routing second function calls received from the framework to the second GPU of the electronic device for execution of the second function calls by the second GPU, wherein the second function calls are subsequent to the first function calls; and
rendering a second image for display on the display by providing the image data to the display from a second frame buffer when the second function calls are routed to the second GPU, wherein the provision of the image data to the display from the second frame buffer is provided via the frame buffer application programming interface through the graphics driver software.

### Claim 11 (depends on 10)

The method of claim 10, comprising receiving the first and the second function calls from an application executing on the electronic device.

### Claim 12 (depends on 10)

The method of claim 10, wherein determining whether to switch is based on the first or the second function calls.

### Claim 13 (depends on 10)

The method of claim 10, wherein determining whether to switch is based on processing power required to render the second image.

### Claim 14

A non-transitory tangible machine-readable storage medium comprising instructions for:
determining to switch graphics function calls from a first graphics processing unit (GPU) to a second GPU using graphics driver software, wherein the graphics driver software determines when to switch the graphic function calls;
receiving, at the graphics driver software, a function call based at least in part on a type of function call;
routing, using the graphics driver software, the function call to a selected one of the first GPU or the second GPU for processing therein;
providing image data to a display from a first frame buffer when the graphics function calls are routed to the first GPU, wherein the provision of the image data to the display from the first frame buffer is provided via a frame buffer application programming interface through the graphics driver software; and
providing the image data to the display from a second frame buffer when the graphics function calls are routed to the second GPU, wherein the provision of the image data to the display from the second frame buffer is provided via the frame buffer application programming interface through the graphics driver software.

### Claim 15 (depends on 14)

The non-transitory tangible machine-readable storage medium of claim 14, wherein the type of function call received corresponds to an amount of processing required to render an image.

### Claim 16 (depends on 14)

The non-transitory tangible machine-readable storage medium of claim 14, comprising selecting the second GPU for processing of the function call when the type of the function call received is correlated with rendering of 3D images.

### Claim 17 (depends on 14)

The non-transitory tangible machine-readable storage medium of claim 14, comprising selecting the second GPU for processing of the function call when the type of the function call received corresponds to rendering images for a game.

### Claim 18 (depends on 14)

The non-transitory tangible machine-readable storage medium of claim 14, comprising routing the received function call to the first GPU when received function call is determined not to correspond to a particular type of function calls.

### Claim 19 (depends on 18)

The non-transitory tangible machine-readable storage medium of claim 18, wherein the particular type of function calls correspond to rendering of a 3D image or an image for a game.

### Claim 20 (depends on 18)

The non-transitory tangible machine-readable storage medium of claim 18, wherein the particular type of function calls correspond to Direct X encoded instructions.
