Name

    EXT_create_context_robustness

Name Strings

    EGL_EXT_create_context_robustness

Contributors

    Daniel Koch, TransGaming
    Contributors to EGL_KHR_create_context

Contact

    Greg Roth (groth 'at' nvidia.com)

Status

    Complete.

Version

    Version 3, 2011/10/31

Number

    EGL Extension #37

Dependencies

    Requires EGL 1.4

    Written against the EGL 1.4 specification.

    An OpenGL implementation supporting GL_ARB_robustness, an OpenGL ES
    implementation supporting GL_EXT_robustness, or an implementation
    supporting equivalent functionality is required.

Overview

    This extension allows creating an OpenGL or OpenGL ES context
    supporting robust buffer access behavior and a specified graphics
    reset notification behavior.

New Procedures and Functions

    None

New Tokens

    Accepted as an attribute name in the <*attrib_list> argument to
    eglCreateContext:

        EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT    0x30BF
        EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT  0x3138

    Accepted as an attribute value for EGL_CONTEXT_RESET_NOTIFICATION_-
    STRATEGY_EXT in the <*attrib_list> argument to eglCreateContext:

        EGL_NO_RESET_NOTIFICATION_EXT           0x31BE
        EGL_LOSE_CONTEXT_ON_RESET_EXT           0x31BF

Additions to the EGL 1.4 Specification

    Replace section 3.7.1 "Creating Rendering Contexts" from the
    fifth paragraph through the seventh paragraph:

    <attrib_list> specifies a list of attributes for the context. The
    list has the same structure as described for eglChooseConfig. If an
    attribute is not specified in <attrib_list>, then the default value
    specified below is used instead. <attrib_list> may be NULL or empty
    (first attribute is EGL_NONE), in which case attributes assume their
    default values as described below. Most attributes are only meaningful
    for specific client APIs, and will generate an EGL_BAD_ATTRIBUTE
    error when specified to create for another client API context.

    Context Versions
    ----------------

    EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL ES
    context to create. This attribute may only be specified when creating
    an OpenGL ES context (e.g. when the current rendering API is
    EGL_OPENGL_ES_API). An attribute value of 1 specifies creation of an
    OpenGL ES 1.x context.  An attribute value of 2 specifies creation of an
    Open GL ES 2.x context. The default value for EGL_CONTEXT_CLIENT_VERSION
    is 1.

    Context Robust Access
    -------------

    EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT indicates whether <robust buffer
    access> should be enabled for the OpenGL ES context. Robust buffer
    access is defined in the GL_EXT_robustness extension specification,
    and the resulting context must support GL_EXT_robustness and robust
    buffer access as described therein. The default value of
    EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT is EGL_FALSE.

    Context Reset Notification
    --------------------------

    The attribute name EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_-
    EXT specifies the <reset notification behavior> of the rendering
    context. This attribute is only meaningful for OpenGL ES contexts,
    and specifying it for other types of contexts will generate an
    EGL_BAD_ATTRIBUTE error.

    Reset notification behavior is defined in the GL_EXT_robustness
    extension for OpenGL ES, and the resulting context must support
    GL_EXT_robustness and the specified reset strategy. The attribute
    value may be either EGL_NO_RESET_NOTIFICATION_EXT or EGL_LOSE_-
    CONTEXT_ON_RESET_EXT, which respectively result in disabling
    delivery of reset notifications or the loss of all context state
    upon reset notification as described by the GL_EXT_robustness. The
    default value for EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT
    is EGL_NO_RESET_NOTIFICATION_EXT.
    
    Add to the eglCreateContext context creation errors:

    * If <config> does not support a client API context compatible
      with the requested context flags and context reset notification
      behavior (for client API types where these attributes are
      supported), then an EGL_BAD_CONFIG error is generated.

    * If the reset notification behavior of <share_context> and the
      newly created context are different then an EGL_BAD_MATCH error is
      generated.


Errors

    EGL_BAD_CONFIG is generated if EGL_CONTEXT_OPENGL_ROBUST_ACCESS_-
    EXT is set to EGL_TRUE and no GL context supporting the GL_EXT_-
    robustness extension and robust access as described therein can be
    created.

    EGL_BAD_CONFIG is generated if no GL context supporting the
    GL_EXT_robustness extension and the specified reset notification
    behavior (the value of attribute EGL_CONTEXT_RESET_NOTIFICATION_-
    STRATEGY_EXT) can be created.

    BAD_MATCH is generated if the reset notification behavior of
    <share_context> does not match the reset notification behavior of
    the context being created.

New State

    None

Conformance Tests

    TBD

Sample Code

    TBD

Issues

    None

Revision History

    Rev.    Date       Author     Changes
    ----  ------------ ---------  ----------------------------------------
      3   31 Oct  2011 groth      Reverted to attribute for robust access. Now it's a
                                  companion to rather than subset of KHR_create_context
      2   11 Oct  2011 groth      Merged ANGLE and NV extensions.
      1   15 July 2011 groth      Initial version
