Name

    ANGLE_program_binary_readiness_query

Name Strings

    GL_ANGLE_program_binary_readiness_query

Contributors

    Shahbaz Youssefi, Google

Contact

    Shahbaz Youssefi (syoussefi 'at' google.com)

Notice

    Copyright (c) 2024 The Khronos Group Inc. Copyright terms at
        http://www.khronos.org/registry/speccopyright.html

Status

    Draft

Version

    Version 1, April 9, 2024

Number

    OpenGL ES Extension #??

Dependencies

    Requires OpenGL ES 2.0

    Written against the OpenGL ES 2.0 specification.

Overview

    After a program is linked, its binary can be queried by a call to
    GetProgramBinary.  In ANGLE, binary data may not necessarily be readily
    available after link, for example because post-link tasks are filling in
    caches that make the binary more useful.  Calling GetProgramBinary in
    such cases can lead to a CPU wait.

    Ideally, applications should query the program binary after having used the
    program with all graphics states it may be used in during the lifetime of
    the application (often, that is after one frame).  In that case, any binary
    that may be generated and cached due to the state combinations is
    associated with program's binary, making the next run of the application
    fully hit the caches.

    Nevertheless, this extension provides a query for the application to know
    when ANGLE's best-guess binaries are cached and the program binary is ready
    for retrieval.  As long as this query returns FALSE, the application should
    defer calling GetProgramBinary, or GetProgramiv with PROGRAM_BINARY_LENGTH
    to avoid getting blocked on the CPU.

New Procedures and Functions

    None

New Tokens

    Accepted by the <pname> parameters of GetProgramiv:

    PROGRAM_BINARY_READY_ANGLE            0x96BE

Additions to the OpenGL ES Specification

    Append to paragraph 8 of section 6.1.8 "Shader and Program Queries"
    (description of GetProgramiv):

    If pname is PROGRAM_BINARY_READY_ANGLE, TRUE is returned if a call to
    GetProgramBinary will not block, and FALSE is returned otherwise.

New State

    None

Conformance Tests

    TBD

Issues

    None

Revision History

    Rev.    Date         Author                 Changes
    ----  -------------  ---------              ----------------------------------------
      1   Apr 09, 2024   syoussefi              Initial version
