| Name | 
 |  | 
 |     ARM_mali_program_binary | 
 |  | 
 | Name Strings | 
 |  | 
 |     GL_ARM_mali_program_binary | 
 |  | 
 | Contributors | 
 |  | 
 |     Jan-Harald Fredriksen, ARM | 
 |     Tom Olson, ARM | 
 |  | 
 | Contact | 
 |  | 
 |     Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com) | 
 |  | 
 | Status | 
 |  | 
 |     Shipping as of August 2012. | 
 |  | 
 | Version | 
 |  | 
 |     Last Modified Date: June 26, 2015 | 
 |  | 
 | Number | 
 |  | 
 |     OpenGL ES Extension #120 | 
 |  | 
 | Dependencies | 
 |  | 
 |     OpenGL ES 2.0 is required. | 
 |     OES_get_program_binary is required. | 
 |  | 
 |     This extension is written based on the wording of the OpenGL ES 2.0.25 | 
 |     specification and the OES_get_program_binary extension. | 
 |  | 
 | Overview | 
 |  | 
 |     The OES_get_program_binary extension enables applications to retrieve program | 
 |     binaries using GetProgramBinaryOES and reload them using ProgramBinaryOES. | 
 |  | 
 |     The mechanism for retrieval and reloading of program binaries is vendor | 
 |     agnostic, but the binary format itself is vendor specific. | 
 |  | 
 |     This extension adds a token to identify program binaries that are | 
 |     compatible with the ARM Mali family of GPUs. | 
 |  | 
 | Issues | 
 |  | 
 |     1. When should applications recompile and relink program binaries? | 
 |  | 
 |     UNRESOLVED: ProgramBinaryOES may fail after a driver update. In this | 
 |     case, it may be useful for applications to know whether all program | 
 |     binaries need to be recompiled and/or relinked. There is no language | 
 |     mechanism other than the program object info log to provide this | 
 |     information to the application. However, it is expected that if any | 
 |     binary fails to load after a driver update, then all programs binaries | 
 |     retrieved prior to the driver update will fail to load. | 
 |  | 
 | New Procedures and Functions | 
 |  | 
 |     None | 
 |  | 
 | New Tokens | 
 |  | 
 |     Accepted by the <binaryFormat> parameter of ProgramBinaryOES: | 
 |  | 
 |         MALI_PROGRAM_BINARY_ARM              0x8F61 | 
 |  | 
 | Additions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL ES Operation) | 
 |  | 
 |     At the end of the section called Program Binaries, add: | 
 |  | 
 |     "The format MALI_PROGRAM_BINARY_ARM will be present in the list of | 
 |     program binary formats returned when querying PROGRAM_BINARY_FORMATS_OES. | 
 |     This format will be returned in <binaryFormat> by GetProgramBinaryOES, and | 
 |     may be used as the <binaryFormat> in calls to ProgramBinaryOES. | 
 |  | 
 |     ProgramBinaryOES may reject a MALI_PROGRAM_BINARY_ARM program binary. This | 
 |     can happen if <binary> is not a valid Mali program binary, if <binary> has | 
 |     been compiled for an incompatible Mali GPU, if <binary> has been compiled | 
 |     for a different API version, or if <binary> has been produced by an | 
 |     incompatible version of the shader compiler or driver. If <binary> is | 
 |     rejected for any of these reasons, the LINK_STATUS will be set to FALSE | 
 |     and the program object's info log will be updated with a reason for the | 
 |     rejection. | 
 |  | 
 |     If <binary> was rejected because it was produced by an incompatible version | 
 |     of the shader compiler or driver, applications should recompile and relink | 
 |     all programs produced with the previous version of the shader compiler and | 
 |     driver." | 
 |  | 
 | Additions to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization) | 
 |  | 
 |     None | 
 |  | 
 | Additions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment Operations and the Frame Buffer) | 
 |  | 
 |     None | 
 |  | 
 | Additions to Chapter 5 of the OpenGL ES 2.0 Specification (Special Functions) | 
 |  | 
 |     None | 
 |  | 
 | Additions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State Requests) | 
 |  | 
 |     None | 
 |  | 
 | Errors | 
 |  | 
 |     None | 
 |  | 
 | New State | 
 |  | 
 |     None | 
 |  | 
 | New Implementation Dependent State | 
 |  | 
 |     None | 
 |  | 
 | Revision History | 
 |  | 
 |     #1  21/03/2012   Jan-Harald Fredriksen    First draft. | 
 |     #2  26/03/2012   Jan-Harald Fredriksen    Completed internal review. | 
 |     #3  24/06/2012   Jan-Harald Fredriksen    Clarified behavior for incompatible binaries. | 
 |     #4  01/09/2012   Jan-Harald Fredriksen    Updated status. | 
 |     #5  25/06/2015   Jan-Harald Fredriksen    Fixed typo. |