# US 8,570,331 B1 · System, method, and computer program product for policy-based routing of objects in a multi-graphics processor environment

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

- Number: US 8,570,331 B1
- Document ID: US8570331B1
- Status: Granted
- Kind: B1
- Application number: 11/843,506
- Filed: 2007-08-22
- Granted: 2013-10-29
- Earliest claimed: 2006-08-24
- Assignees: NVIDIA Corporation
- Applicants: David Wyatt; Lieven P. Leroy; Franck R. Diard
- Inventors: David Wyatt; Lieven P. Leroy; Franck R. Diard
- Web page: https://patentgrep.com/patent/US8570331B1

## CPC

- G09G 5/363: {Graphics controllers}
- G06F 1/3203: Power management, i.e. event-based initiation of a power-saving mode
- G06F 1/3206: Monitoring of events, devices or parameters that trigger a change in power modality
- G06F 1/3218: of display devices
- G06F 1/3293: by switching to a less power-consuming processor, e.g. sub-CPU
- G09G 5/39: Control of the bit-mapped memory
- G09G 5/36: characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G 2360/06: Use of more than one graphics processor to process data before displaying to one or more screens
- G09G 2360/121: using a cache memory
- G09G 2360/123: using interleaving
- G09G 2360/127: Updating a frame memory using a transfer of data from a source area to a destination area
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G09G: ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION (arrangements for transferring data between digital computers and displays G06F3/14; static indicating arrangements comprising an association of a number of separate sources or light control cells G09F9/00; static indicating arrangements comprising integral associations of a number of light sources H01J, H01K, H10H, H05B33/12; scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission, details thereof H04N1/00)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

A software layer is disposed between an application and a driver. In use, the software layer is adapted to receive an object from the application intended to be rendered by a first graphics processor. Such software layer, in turn, routes the object to a second graphics processor, based on a policy.

## Claims

### Claim 1

A computer program product embodied on a non-transitory computer readable medium, comprising:
a software layer disposed between an application and a plurality of drivers associated with a first graphics processor and a second graphics processor, where the first graphics processor and the second graphics processor share a memory, the software layer adapted to:
receive an object from the application, the object designated by the application as to be rendered by the first graphics processor,
determine that a display to which the first graphics processor is attached is a low voltage differential signaling display,
determine a policy governing a routing of the object received from the application based on the determination that the display to which the first graphics processor is attached is the low voltage differential signaling display, and
route, from the application, the object designated for rendering by the first graphics processor to the second graphics processor based on the policy determined for the low voltage differential signaling display, for rendering of the object by the second graphics processor and storage of the rendered object in the shared memory;
wherein the first graphics processor retrieves from the shared memory the object rendered by the second graphics processor and outputs the retrieved rendered object to the low voltage differential signaling display.

### Claim 2 (depends on 1)

The computer program product as recited in claim 1, wherein at least one of the first graphics processor and the second graphics processor includes a graphics processing unit.

### Claim 3 (depends on 1)

The computer program product as recited in claim 1, wherein the second graphics processor is asymmetric in capabilities or performance with respect to the first graphics processor.

### Claim 4 (depends on 1)

The computer program product as recited in claim 1, wherein the memory shared by the first graphics processor and the second graphics processor includes at least a portion of a frame buffer of the first graphics processor.

### Claim 5 (depends on 1)

The computer program product as recited in claim 1, wherein the software layer interfaces an operating system application program interface.

### Claim 6 (depends on 1)

The computer program product as recited in claim 1, wherein the software layer includes an additional driver.

### Claim 7 (depends on 1)

The computer program product as recited in claim 1, wherein the policy is power related.

### Claim 8 (depends on 7)

The computer program product as recited in claim 7, wherein the policy is a function of an existence of an alternating current source.

### Claim 9 (depends on 1)

The computer program product as recited in claim 1, wherein the policy is object related.

### Claim 10 (depends on 9)

The computer program product as recited in claim 9, wherein the policy is a function of a format of the object to be rendered.

### Claim 11 (depends on 1)

The computer program product as recited in claim 1, wherein the policy is user configured.

### Claim 12 (depends on 1)

The computer program product as recited in claim 1, wherein the policy is application related.

### Claim 13 (depends on 12)

The computer program product as recited in claim 12, wherein the policy is a function of a type of the application.

### Claim 14 (depends on 12)

The computer program product as recited in claim 12, wherein the policy is a function of a processor load of the application.

### Claim 15 (depends on 12)

The computer program product as recited in claim 12, wherein the policy is a function of an operating system on which the application is executed.

### Claim 16 (depends on 1)

The computer program product as recited in claim 1, wherein a user input provided via a button, a system setup option, or a runtime user interface affects the determination of the policy.

### Claim 17 (depends on 16)

The computer program product as recited in claim 16, wherein the user input indicates a preference for performance versus battery efficiency.

### Claim 18 (depends on 17)

The computer program product as recited in claim 17, wherein the user input affects a preference between the first graphics processor and the second graphics processor.

### Claim 19 (depends on 1)

The computer program product as recited in claim 1, wherein the software layer that is disposed between the application and the plurality of drivers is exposed to the application as a single driver, and the plurality of drivers are loaded as a plurality of driver modules of the single driver.

### Claim 20 (depends on 1)

The computer program product as recited in claim 1, wherein the policy is utilized for routing the object as a function of multiple aspects of a system including a type of the display, the software layer, the application, the drivers, the first graphics processor and the second graphics processor.

### Claim 21 (depends on 1)

The computer program product as recited in claim 1, wherein the software layer is further adapted to:
intercept a vertical blanking signal triggering an interrupt service routine for flipping a back buffer and a front buffer, and
initiate an additional interrupt service routine for flipping the back buffer and the front buffer, and for synchronizing at least one of the first graphics processor and the second graphics processor.

### Claim 22 (depends on 1)

The computer program product as recited in claim 1, wherein the shared memory outputs to a display timing controller of the first graphics processor and the display, such that upon rendering the object by the second graphics processor the rendered object is stored to a first buffer of the shared memory, where the first buffer of the shared memory outputs to a second buffer of the shared memory, and the second buffer of the shared memory makes available the rendered object via a display back-end of the first graphics processor.

### Claim 23 (depends on 22)

The computer program product as recited in claim 22, wherein the first graphics processor is used exclusively to feed the display.

### Claim 24 (depends on 23)

The computer program product as recited in claim 23, wherein a vertical blanking signal is fed to the second graphics processor by the software layer, and the second graphics processor stores the rendered object into the first buffer of the shared memory in synchronicity with a display of other objects managed by the first graphics processor.

### Claim 25

A method, comprising:
receiving an object from an application, the object designated by the application as to be rendered by a first graphics processor, at a software layer disposed between the application and a plurality of drivers associated with the first graphics processor and a second graphics processor, where the first graphics processor and the second graphics processor share a memory;
determining that a display to which the first graphics processor is attached is a low voltage differential signaling display;
determining a policy governing a routing of the object received from the application based on the determination that the display to which the first graphics processor is attached is the low voltage differential signaling display; and
routing, from the application, the object designated for rendering by the first graphics processor to the second graphics processor based on the policy determined for the low voltage differential signaling display, for rendering of the object by the second graphics processor and storage of the rendered object in the shared memory;
wherein the first graphics processor retrieves from the shared memory the object rendered by the second graphics processor and outputs the retrieved rendered object to the low voltage differential signaling display.

### Claim 26

A system, comprising:
a first graphics processor;
a second graphics processor;
a memory, the memory shared between the first graphics processor and the second graphics processor; and
a software layer disposed between an application and a plurality of drivers associated with the first graphics processor and the second graphics processor, the software layer adapted to:
receive an object from the application, the object designated by the application as to be rendered by the first graphics processor,
determine that a display to which the first graphics processor is attached is a low voltage differential signaling display,
determine a policy governing a routing of the object received from the application based on the determination that the display to which the first graphics processor is attached is the low voltage differential signaling display, and
route, from the application, the object designated for rendering by the first graphics processor to the second graphics processor based on the policy determined for the low voltage differential signaling display, for rendering of the object by the second graphics processor and storage of the rendered object in the shared memory;
wherein the first graphics processor retrieves from the shared memory the object rendered by the second graphics processor and outputs the retrieved rendered object to the low voltage differential signaling display.

### Claim 27 (depends on 26)

A system recited in claim 26, wherein at least one of the first graphics processor and the second graphics processor is in communication with the display and a central processing unit via a bus.

### Claim 28 (depends on 27)

A system recited in claim 27, wherein the first graphics processor and the second graphics processor map common system memory pages via the bus to facilitate sharing graphical objects in the shared memory.

### Claim 29 (depends on 28)

A system recited in claim 28, wherein the first graphics processor and the second graphics processor enforce mutually exclusive ownership of the shared graphics-memory to facilitate cooperative use of the shared memory.

### Claim 30 (depends on 26)

The system as recited in claim 26, wherein the policy includes a table that correlates at least one aspect of the system with one of the first graphics processor and the second graphics processor.
