IP Library › Granted Patent US 9,214,005
Granted Patent B2
US 9,214,005 · App. 13/718,120 · Granted Dec 15, 2015

Methods and systems for overriding graphics commands

Inventors: Baback Elmieh (Palo Alto, CA); Maha Deva Guruji Panda (Sunnyvale, CA); James Paul Ritts (Los Angeles, CA); David Lock (Felton, CA)
Assignee: Google Technology Holdings LLC
G06T1/20G06F3/14G09G5/363G09G2320/0261G09G2340/0435G09G2350/00
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,214,005
App. No.
13/718,120
Granted
Dec 15, 2015
Kind
B2
Abstract

Disclosed are “graphics overrides.” An override accepts a stream of graphics commands as produced by an application and then modifies the stream before it is rendered by the GPU. Different overrides perform different modifications. One override can modify a stream of graphics commands in response to another stream. Overrides can enforce conformity with a visual paradigm and, by being modified, can support a change to that paradigm without requiring the applications to change. Overrides can monitor the entire computing environment and improve the response to that environment of a particular application: For example, an override monitors frames as they are produced by an application. If the application cannot keep up with a fixed frame rate, then the override produces “synthetic” frames to take the place of missing frames. Overrides are not restricted to fixing existing problems. Rather, applications can be developed that depend upon the presence of overrides.

Claims (51)

1. On a computing device with a central processing unit (CPU) and a graphics processing unit (GPU) distinct from, but operatively connected to, the CPU, a method for presenting graphical information, the method comprising:

sending, by the CPU to the GPU, an override module;

sending, by the CPU to the GPU, a stream of graphics commands;

intercepting, by the override module on the GPU, the stream of graphics commands;

amending, by the override module on the GPU, the stream of graphics commands, the amending comprising at least one graphics modification; and

providing, by the override module on the GPU, the amended stream of graphics commands for rendering by the GPU.

2. The method of claim 1 wherein the stream of graphics commands consists of a single graphics command.

3. The method of claim 1 wherein the amending comprises a single graphics modification.

4. The method of claim 1 wherein the at least one graphics modification is an addition of a new graphics command, a deletion of a graphics command, an amendment to a graphics command, or a re-ordering of graphics commands.

5. The method of claim 1 wherein amending the stream of graphics commands comprises creating a new output frame.

6. The method of claim 5 wherein creating a new output frame is based, at least in part, on a current time or a desired output frame rate.

7. The method of claim 1 wherein amending the stream of graphics commands comprises adding motion to the stream of graphics commands.

8. The method of claim 1 wherein amending the stream of graphics commands comprises:

generating an input scene graph based, at least in part, on the stream of graphics commands; and

amending, by the override module, the input scene graph to create an output scene graph, wherein providing the amended stream of graphics commands is based, at least in part, on the output scene graph.

9. The method of claim 8 wherein amending, by the override module, the input scene graph comprises applying an element identifier, a shader, a properties module, or a physics engine.

10. The method of claim 1 wherein the amended stream of graphics commands consists of a single graphics command.

11. The method of claim 1 further comprising:

sending, by the CPU to the GPU, an additional stream of graphics commands distinct from the stream of graphics commands;

intercepting, by the override module on the GPU, the additional stream of graphics commands;

amending, by the override module on the GPU, the additional stream of graphics commands; and

providing, by the override module on the GPU, the additional amended stream of graphics commands for rendering by the GPU.

12. The method of claim 11 wherein the amendment to the stream of graphics commands is based, at least in part, on the additional stream of graphics commands.

13. A system comprising:

a computing device configured for presenting graphical information;

a central processing unit (CPU);

a graphics processing unit (GPU) distinct from, but operatively connected to, the CPU; and

one or more computer-readable storage media devices comprising instructions that are executable by the CPU to cause the computing device to perform a process comprising:

sending, by the CPU to the GPU, an override module;

sending, by the CPU to the GPU, a stream of graphics commands;

intercepting, by the override module on the GPU, the stream of graphics commands;

amending, by the override module on the GPU, the stream of graphics commands, the amending comprising at least one graphics modification; and

providing, by the override module on the GPU, the amended stream of graphics commands for rendering by the GPU.

14. The system of claim 13 wherein the computing device is a set-top box, a personal communications device, a mobile telephone, a personal digital assistant, a personal computer, a tablet computer, a gaming console, a server, or a plurality of servers.

15. The system of claim 13 :

wherein the computing device comprises a display; and

wherein rendering the amended stream of graphics commands comprises rendering graphical information to the display.

16. The system of claim 13 :

wherein the computing device comprises a communications interface; and

wherein rendering the amended stream of graphics commands comprises transmitting, via the communications interface, a rendering of the amended stream of graphics commands.

17. The system of claim 13 :

wherein the computing device comprises a memory; and

wherein presenting the amended stream of graphics commands comprises writing a rendering of the amended stream of graphics commands to the memory.

18. The system of claim 13 wherein the CPU comprises a plurality of processors.

19. A computing device configured for presenting graphical information, the computing device comprising:

a central processing unit (CPU) configured to send an override module and to execute instructions to provide a stream of graphics commands; and

a graphics processing unit (GPU) distinct from, but operatively connected to, the CPU and configured to receive the override module and render the stream of graphics commands provided by the CPU, the override module hosted on the GPU and configured to:

intercept the stream of graphics commands provided by the CPU prior to the stream of graphics commands being rendered by the GPU;

amend the stream of graphics commands, the amendment comprising at least one graphics modification; and

provide the amended stream of graphics commands to the GPU to be rendered.

20. The computing device of claim 19 wherein the instructions to provide a stream of graphics commands are received from a process running on the central processing unit.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 24, 2014
From: MOTOROLA MOBILITY LLC
To: GOOGLE TECHNOLOGY HOLDINGS LLC
Reel/Frame 034457/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2012
From: ELMIEH, BABACK; PANDA, MAHA DEVA GURUJI; RITTS, JAMES PAUL; LOCK, DAVID
To: MOTOROLA MOBILITY LLC
Reel/Frame 029489/0738 →
Continuity (1)
Related Publication 20140168239A1 · Jun 19, 2014