Name

    ANGLE_platform_angle_device_context_volatile_eagl

Name Strings

    EGL_ANGLE_platform_angle_device_context_volatile_eagl

Contributors
    Kimmo Kinnunen, Apple
    Kenneth Russell, Google

Contacts
    Kimmo Kinnunen, Apple (kkinnunen 'at' apple 'dot' org)
    Kenneth Russell, Google (kbr 'at' chromium 'dot' org)

Status

    Draft

Version

    Version 1, 2020-09-30

Number

    EGL Extension XXX

Extension Type

    EGL client extension

Dependencies

    Requires ANGLE_platform_angle.

Overview

    This extension allows the client to request a Display that internally
    is able to function even if client changes current EAGL context of the
    thread. Requesting a volatile device context contexts may impact performance.
    The extension is useful for using EGL in a library that cannot guarantee
    which platform APIs its clients will use.

New Types

    None

New Procedures and Functions

    None

New Tokens

    Accepted as an attribute name in the <attrib_list> argument of
    eglGetPlatformDisplayEXT:

        EGL_PLATFORM_ANGLE_DEVICE_CONTEXT_VOLATILE_EAGL_ANGLE    0x34A2

Additions to the EGL Specification

    None.

New Behavior

    To request a display that internally supports the feature,
    use the attribute EGL_PLATFORM_ANGLE_DEVICE_CONTEXT_VOLATILE_EAGL_ANGLE.
    EGL_TRUE enables volatile EAGL device context and EGL_FALSE disables it.
    Any value other than these will result in an error.
    The default value for EGL_PLATFORM_ANGLE_DEVICE_CONTEXT_VOLATILE_EAGL_ANGLE
    is EGL_FALSE.

    When the device context of the display is set as volatile EAGL, then
    each EGL function will change the current EAGL context state accordingly
    to use the internal device context, if needed. If the internal device context
    is not using EAGL, the property has no effect.

    Calls to OpenGL or OpenGL ES functions will not ensure the underlying device
    context is correct. If the state of the current EAGL context is unknown,
    clients should call MakeCurrent to ensure that the internal device
    context is made current.

Issues

    None

Revision History

    Version 1, 2020-09-30 (Kimmo Kinnunen)
      - Initial draft
