IP Library Granted Patent US 9,747,084
Granted Patent B2
US 9,747,084 · App. 14/839,059 · Granted Aug 29, 2017

Offline shader compilation

Inventor: Jesse David Hall (Santa Clara, CA)
Assignee: GOOGLE INC.
G06F8/41G06F8/61G06F8/71G06T1/20
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,747,084
App. No.
14/839,059
Granted
Aug 29, 2017
Kind
B2
Abstract

Systems and techniques are provided that allow for installation of an application on a mobile device using a shader executable suitable for execution by the mobile device. When a request to install an application is received by an application distribution platform, a shader configured for the device is generated by the platform and provided with the application package for installation on the device. Thus, launch-time compilation and just-in-time re-compilation may be avoided.

Claims (63)

1. A method comprising:

receiving a request to install an application comprising one or more shader compiler inputs on a mobile device;

receiving a plurality of pipeline configuration files, wherein the pipeline configuration files comprise references to the one or more shader compiler inputs;

identifying a compiler associated with a configuration of the mobile device;

extracting the pipeline configuration files;

obtaining shader source code and state information from an application package of the application;

compiling the shader source code using the compiler, the state information, and the extracted pipeline configuration files to generate a shader executable for the mobile device;

providing a primary application package and an auxiliary application package to the mobile device, the auxiliary application package comprising the shader executable;

receiving a request for a compiled first pipeline configuration from the application on the mobile device;

determining that the compiled first pipeline configuration file is not within the auxiliary application package;

compiling a first pipeline configuration file using an on-device compiler; and

providing the compiled first pipeline configuration file.

2. The method of claim 1 , wherein the shader executable is configured to perform each shader operation required by the application during execution of the application on the mobile device.

3. The method of claim 1 , wherein the configuration of the device comprises an indication of a driver available on the device.

4. The method of claim 1 , wherein the configuration of the device comprises an indication of a hardware version of the device.

5. The method of claim 1 , further comprising obtaining the configuration from the mobile device.

6. The method of claim 1 , wherein obtaining the shader source code and the state information from the application package further comprises extracting a plurality of pipeline configuration files from the application package.

7. The method of claim 6 , wherein compiling the shader source code further comprises receiving the pipeline configuration files as inputs to the compiler.

8. The method of claim 1 , further comprising:

caching, at an application distribution system, the auxiliary application package; and

storing a record associating the auxiliary application package with the application and the configuration of the mobile device.

9. An application distribution platform, comprising:

a computer-readable storage storing:

a plurality of application packages, each application package associated with one of a plurality of applications; and

a plurality of compilers; and

a processor configured to:

receive a request to install one of the plurality of applications comprising one or more shader compiler inputs on a mobile device;

receive a plurality of pipeline configuration files, wherein the pipeline configuration files comprise references to the one or more shader compiler inputs;

identify one of the plurality of compilers based upon a configuration of the mobile device;

extract the pipeline configuration files;

obtain shader source code and state information from one of the plurality of application packages based upon the application for which the request was received;

compile the shader source code using the compiler, the state information, and the extracted pipeline configuration files to generate a shader executable for the mobile device;

provide a primary application package and an auxiliary application package to the mobile device, the auxiliary application package comprising the shader executable;

receive a request for a compiled first pipeline configuration from an application active on the mobile device;

determine that the compiled first pipeline configuration file is not within the auxiliary application package;

compile a first pipeline configuration file using an on-device compiler; and

provide the compiled first pipeline configuration file.

10. A method comprising:

receiving an application package comprising one or more shader compiler inputs at an application distribution platform;

receiving a plurality of pipeline configuration files, wherein the pipeline configuration files comprise references to the one or more shader compiler inputs;

receiving a shader compiler, for a first device version, at the application distribution platform;

determining that a device version of a user device is the first device version;

extracting the pipeline configuration files;

providing the extracted pipeline configuration files as inputs to the shader compiler;

receiving a compiled output from the shader compiler based on the provided pipeline configuration files;

generating an auxiliary application package based on the compiled output of the shader compiler; and

providing the application package and the auxiliary application package to the user device;

receiving a request for a compiled first pipeline configuration from an application active on the user device;

determining that the compiled first pipeline configuration file is not within the auxiliary application package;

compiling a first pipeline configuration file using an on-device compiler; and

providing the compiled first pipeline configuration file.

11. The method of claim 10 , further comprising:

receiving a request for a compiled first pipeline configuration from an application active on the user device;

determining that the compiled first pipeline configuration file is within the auxiliary application package; and

providing the compiled first pipeline configuration file to the application active on the user device.

12. The method of claim 10 , wherein the shader compiler input comprises text in a graphical application programming interface language accepted by the platform.

13. The method of claim 10 , wherein the device version is selected based on one or more selected from the group consisting of: a device stock keeping unit, unique identifier, and device software version.

14. The method of claim 10 , wherein the extracted pipeline configuration files are provided to the shader compiler in a first to last order.

15. The method of claim 10 , wherein the application package further comprises an application code and a data file.

16. The method of claim 10 , wherein at least a portion of the application package is machine readable.

17. The method of claim 10 , further comprising storing the compiled output at a remote server.

18. The method of claim 17 , wherein the remote server is a cloud server.

19. The method of claim 17 , further comprising providing the compiled output to a second user device.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044097/0658 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2015
From: HALL, JESSE DAVID
To: GOOGLE INC.
Reel/Frame 036449/0359 →
Continuity (2)
Provisional Application 62048131 · Sep 9, 2014
Related Publication 20160070549A1 · Mar 10, 2016