Name

    ANGLE_explicit_context

Name Strings

    EGL_ANGLE_explicit_context

Contributors

    Brandon Jones, Intel

Contacts

    Brandon Jones, Intel (brandon1.jones 'at' intel 'dot' com)

Status

    Complete.

Version

    Version 1, 2018-5-22

Number

    EGL Extension XXX

Extension Type

    EGL Client Extension

Dependencies

    OpenGL ES 3.1 is required.

    EGL_KHR_get_all_proc_addresses is required.

    EGL_EXT_client_extensions is required.

Overview

    This extension adds new OpenGL ES entry points that allow the user to pass the current EGL
    context as a function parameter. This allows users to skip lookup of the thread's current
    context upon entry.

New Types

    None.

New Procedures and Functions

    For every OpenGL ES entry point available through eglGetProcAddress, an additional entry point
    is made available. The entry points have the form of:

    <return value> gl<entry point name>ContextANGLE(GLeglContextANGLE context, <entry point parameters>)

    If a function already has an extension suffix, this form still applies.

New Tokens

    None.

Additions to the EGL Specification

    When using OpenGL ES as a client library, the ContextANGLE entry points allow the user to
    pass the current EGL context as a function parameter to provide better performance than
    looking up the current EGL context at every GL entry point.

    Calls made with an explicit context provide no additional validation for the passed context
    parameter.

    Calls made with an explicit context will generate errors under the same conditions as they
    would without an explicit context. Any instances of undefined behaviour without specifying
    an explicit context are still undefined when specifying an explicit context.

    When an EGL context that is not current is explicitly passed, the resulting behavior is
    undefined.

Issues

    None.

Revision History

    Version 1, 2018-5-22 (Brandon Jones)
        - Initial draft