15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci ARM_mali_program_binary 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_ARM_mali_program_binary 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContributors 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Jan-Harald Fredriksen, ARM 125bd8deadSopenharmony_ci Tom Olson, ARM 135bd8deadSopenharmony_ci 145bd8deadSopenharmony_ciContact 155bd8deadSopenharmony_ci 165bd8deadSopenharmony_ci Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com) 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ciStatus 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ci Shipping as of August 2012. 215bd8deadSopenharmony_ci 225bd8deadSopenharmony_ciVersion 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ci Last Modified Date: June 26, 2015 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ciNumber 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ci OpenGL ES Extension #120 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ciDependencies 315bd8deadSopenharmony_ci 325bd8deadSopenharmony_ci OpenGL ES 2.0 is required. 335bd8deadSopenharmony_ci OES_get_program_binary is required. 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ci This extension is written based on the wording of the OpenGL ES 2.0.25 365bd8deadSopenharmony_ci specification and the OES_get_program_binary extension. 375bd8deadSopenharmony_ci 385bd8deadSopenharmony_ciOverview 395bd8deadSopenharmony_ci 405bd8deadSopenharmony_ci The OES_get_program_binary extension enables applications to retrieve program 415bd8deadSopenharmony_ci binaries using GetProgramBinaryOES and reload them using ProgramBinaryOES. 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ci The mechanism for retrieval and reloading of program binaries is vendor 445bd8deadSopenharmony_ci agnostic, but the binary format itself is vendor specific. 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ci This extension adds a token to identify program binaries that are 475bd8deadSopenharmony_ci compatible with the ARM Mali family of GPUs. 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ciIssues 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci 1. When should applications recompile and relink program binaries? 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ci UNRESOLVED: ProgramBinaryOES may fail after a driver update. In this 545bd8deadSopenharmony_ci case, it may be useful for applications to know whether all program 555bd8deadSopenharmony_ci binaries need to be recompiled and/or relinked. There is no language 565bd8deadSopenharmony_ci mechanism other than the program object info log to provide this 575bd8deadSopenharmony_ci information to the application. However, it is expected that if any 585bd8deadSopenharmony_ci binary fails to load after a driver update, then all programs binaries 595bd8deadSopenharmony_ci retrieved prior to the driver update will fail to load. 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ciNew Procedures and Functions 625bd8deadSopenharmony_ci 635bd8deadSopenharmony_ci None 645bd8deadSopenharmony_ci 655bd8deadSopenharmony_ciNew Tokens 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ci Accepted by the <binaryFormat> parameter of ProgramBinaryOES: 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ci MALI_PROGRAM_BINARY_ARM 0x8F61 705bd8deadSopenharmony_ci 715bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL ES Operation) 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ci At the end of the section called Program Binaries, add: 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci "The format MALI_PROGRAM_BINARY_ARM will be present in the list of 765bd8deadSopenharmony_ci program binary formats returned when querying PROGRAM_BINARY_FORMATS_OES. 775bd8deadSopenharmony_ci This format will be returned in <binaryFormat> by GetProgramBinaryOES, and 785bd8deadSopenharmony_ci may be used as the <binaryFormat> in calls to ProgramBinaryOES. 795bd8deadSopenharmony_ci 805bd8deadSopenharmony_ci ProgramBinaryOES may reject a MALI_PROGRAM_BINARY_ARM program binary. This 815bd8deadSopenharmony_ci can happen if <binary> is not a valid Mali program binary, if <binary> has 825bd8deadSopenharmony_ci been compiled for an incompatible Mali GPU, if <binary> has been compiled 835bd8deadSopenharmony_ci for a different API version, or if <binary> has been produced by an 845bd8deadSopenharmony_ci incompatible version of the shader compiler or driver. If <binary> is 855bd8deadSopenharmony_ci rejected for any of these reasons, the LINK_STATUS will be set to FALSE 865bd8deadSopenharmony_ci and the program object's info log will be updated with a reason for the 875bd8deadSopenharmony_ci rejection. 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ci If <binary> was rejected because it was produced by an incompatible version 905bd8deadSopenharmony_ci of the shader compiler or driver, applications should recompile and relink 915bd8deadSopenharmony_ci all programs produced with the previous version of the shader compiler and 925bd8deadSopenharmony_ci driver." 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization) 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ci None 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment Operations and the Frame Buffer) 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ci None 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL ES 2.0 Specification (Special Functions) 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ci None 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State Requests) 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ci None 1095bd8deadSopenharmony_ci 1105bd8deadSopenharmony_ciErrors 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci None 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ciNew State 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci None 1175bd8deadSopenharmony_ci 1185bd8deadSopenharmony_ciNew Implementation Dependent State 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci None 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ciRevision History 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci #1 21/03/2012 Jan-Harald Fredriksen First draft. 1255bd8deadSopenharmony_ci #2 26/03/2012 Jan-Harald Fredriksen Completed internal review. 1265bd8deadSopenharmony_ci #3 24/06/2012 Jan-Harald Fredriksen Clarified behavior for incompatible binaries. 1275bd8deadSopenharmony_ci #4 01/09/2012 Jan-Harald Fredriksen Updated status. 1285bd8deadSopenharmony_ci #5 25/06/2015 Jan-Harald Fredriksen Fixed typo. 129