Name

    ANGLE_explicit_context

Name Strings

    GL_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

    GL Extension XXX

Dependencies

    OpenGL ES 3.1 is required.

    EGL_ANGLE_explicit_context 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

    typedef void* GLeglContextANGLE

New Procedures and Functions

    For every OpenGL ES entry point available in OpenGL ES 2.0, 3.0 and 3.1, 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 Chapter 2 of the OpenGL ES 3.1 Specification (OpenGL ES Fundamentals)

    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