102f4aeb0Sopenharmony_ciName
202f4aeb0Sopenharmony_ci
302f4aeb0Sopenharmony_ci    KHR_create_context
402f4aeb0Sopenharmony_ci
502f4aeb0Sopenharmony_ciName Strings
602f4aeb0Sopenharmony_ci
702f4aeb0Sopenharmony_ci    EGL_KHR_create_context
802f4aeb0Sopenharmony_ci
902f4aeb0Sopenharmony_ciContact
1002f4aeb0Sopenharmony_ci
1102f4aeb0Sopenharmony_ci    Jon Leech (jon 'at' alumni.caltech.edu)
1202f4aeb0Sopenharmony_ci
1302f4aeb0Sopenharmony_ciNotice
1402f4aeb0Sopenharmony_ci
1502f4aeb0Sopenharmony_ci    Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
1602f4aeb0Sopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
1702f4aeb0Sopenharmony_ci
1802f4aeb0Sopenharmony_ciIP Status
1902f4aeb0Sopenharmony_ci
2002f4aeb0Sopenharmony_ci    No known IP claims.
2102f4aeb0Sopenharmony_ci
2202f4aeb0Sopenharmony_ciStatus
2302f4aeb0Sopenharmony_ci
2402f4aeb0Sopenharmony_ci    Approved by the Khronos Board of Promoters on February 3, 2012
2502f4aeb0Sopenharmony_ci    Updated in version 14 to add ES3 context creation bit - see Issue 8
2602f4aeb0Sopenharmony_ci
2702f4aeb0Sopenharmony_ciVersion
2802f4aeb0Sopenharmony_ci
2902f4aeb0Sopenharmony_ci    Version 16, 2015/01/15
3002f4aeb0Sopenharmony_ci
3102f4aeb0Sopenharmony_ciNumber
3202f4aeb0Sopenharmony_ci
3302f4aeb0Sopenharmony_ci    EGL Extension #39
3402f4aeb0Sopenharmony_ci
3502f4aeb0Sopenharmony_ciDependencies
3602f4aeb0Sopenharmony_ci
3702f4aeb0Sopenharmony_ci    EGL 1.4 is required.
3802f4aeb0Sopenharmony_ci
3902f4aeb0Sopenharmony_ci    Some of the capabilities of these extensions are only available when
4002f4aeb0Sopenharmony_ci    OpenGL and OpenGL ES contexts supporting specific versions, specific
4102f4aeb0Sopenharmony_ci    profiles, or specific extensions can be created. All such restrictions
4202f4aeb0Sopenharmony_ci    are documented in the body of this extension specification.
4302f4aeb0Sopenharmony_ci
4402f4aeb0Sopenharmony_ciOverview
4502f4aeb0Sopenharmony_ci
4602f4aeb0Sopenharmony_ci    With the advent of new versions of OpenGL which deprecate features
4702f4aeb0Sopenharmony_ci    and/or break backward compatibility with older versions, there is a need
4802f4aeb0Sopenharmony_ci    and desire to indicate at context creation which interface will be used.
4902f4aeb0Sopenharmony_ci    This extension adds a new context creation routine with attributes
5002f4aeb0Sopenharmony_ci    specifying the OpenGL version, context properties, and profile requested
5102f4aeb0Sopenharmony_ci    for the context. It also allows making an OpenGL 3.0 or later context
5202f4aeb0Sopenharmony_ci    (or other client API context supporting the ability) current without
5302f4aeb0Sopenharmony_ci    providing a default framebuffer. The new context creation attributes
5402f4aeb0Sopenharmony_ci    are also defined to work for OpenGL ES context creation when that
5502f4aeb0Sopenharmony_ci    makes sense, and the extension has been augmented to allow configs to
5602f4aeb0Sopenharmony_ci    advertise support for creating OpenGL ES 3.0 contexts.
5702f4aeb0Sopenharmony_ci
5802f4aeb0Sopenharmony_ci
5902f4aeb0Sopenharmony_ciNew Procedures and Functions
6002f4aeb0Sopenharmony_ci
6102f4aeb0Sopenharmony_ci    None.
6202f4aeb0Sopenharmony_ci
6302f4aeb0Sopenharmony_ciNew Tokens
6402f4aeb0Sopenharmony_ci
6502f4aeb0Sopenharmony_ci    Accepted as an attribute name in the <*attrib_list> argument of
6602f4aeb0Sopenharmony_ci    eglCreateContext:
6702f4aeb0Sopenharmony_ci
6802f4aeb0Sopenharmony_ci        EGL_CONTEXT_MAJOR_VERSION_KHR           0x3098
6902f4aeb0Sopenharmony_ci            (this token is an alias for EGL_CONTEXT_CLIENT_VERSION)
7002f4aeb0Sopenharmony_ci        EGL_CONTEXT_MINOR_VERSION_KHR           0x30FB
7102f4aeb0Sopenharmony_ci        EGL_CONTEXT_FLAGS_KHR                   0x30FC
7202f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR     0x30FD
7302f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR  0x31BD
7402f4aeb0Sopenharmony_ci
7502f4aeb0Sopenharmony_ci    Accepted as a bitfield value in the EGL_RENDERABLE_TYPE config
7602f4aeb0Sopenharmony_ci    attribute to eglChooseConfig:
7702f4aeb0Sopenharmony_ci
7802f4aeb0Sopenharmony_ci        EGL_OPENGL_ES3_BIT_KHR                  0x0040
7902f4aeb0Sopenharmony_ci
8002f4aeb0Sopenharmony_ci    Accepted as attribute values for
8102f4aeb0Sopenharmony_ci    EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR:
8202f4aeb0Sopenharmony_ci
8302f4aeb0Sopenharmony_ci        EGL_NO_RESET_NOTIFICATION_KHR           0x31BE
8402f4aeb0Sopenharmony_ci        EGL_LOSE_CONTEXT_ON_RESET_KHR           0x31BF
8502f4aeb0Sopenharmony_ci
8602f4aeb0Sopenharmony_ci    Accepted as bits in the attribute value for EGL_CONTEXT_FLAGS_KHR in
8702f4aeb0Sopenharmony_ci    <*attrib_list>:
8802f4aeb0Sopenharmony_ci
8902f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR               0x00000001
9002f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR  0x00000002
9102f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR       0x00000004
9202f4aeb0Sopenharmony_ci
9302f4aeb0Sopenharmony_ci    Accepted as bits in the attribute value for
9402f4aeb0Sopenharmony_ci    EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR in <*attrib_list>:
9502f4aeb0Sopenharmony_ci
9602f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR          0x00000001
9702f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
9802f4aeb0Sopenharmony_ci
9902f4aeb0Sopenharmony_ciAdditions to the OpenGL / WGL / GLX Specifications
10002f4aeb0Sopenharmony_ci
10102f4aeb0Sopenharmony_ci    None. This specification is written for EGL.
10202f4aeb0Sopenharmony_ci
10302f4aeb0Sopenharmony_ciAdditions to the EGL 1.4 Specification
10402f4aeb0Sopenharmony_ci
10502f4aeb0Sopenharmony_ci    Add to table 3.3 "Types of client APIs supported by an EGLConfig"
10602f4aeb0Sopenharmony_ci
10702f4aeb0Sopenharmony_ci       "EGL Token Name          Client API and Version Supported
10802f4aeb0Sopenharmony_ci        ----------------------  --------------------------------
10902f4aeb0Sopenharmony_ci        EGL_OPENGL_ES3_BIT_KHR  OpenGL ES 3.x"
11002f4aeb0Sopenharmony_ci
11102f4aeb0Sopenharmony_ci    Modify the last sentence of section 3.5.2 "Creating Off-Screen
11202f4aeb0Sopenharmony_ci    Rendering Surfaces"
11302f4aeb0Sopenharmony_ci
11402f4aeb0Sopenharmony_ci   "Finally, an EGL_BAD_ATTRIBUTE error is generated if ... <config> does
11502f4aeb0Sopenharmony_ci    not support OpenGL ES rendering (e.g. the EGL_RENDERABLE_TYPE
11602f4aeb0Sopenharmony_ci    attribute does not include at least one of EGL_OPENGL_ES_BIT,
11702f4aeb0Sopenharmony_ci    EGL_OPENGL_ES2_BIT, or EGL_OPENGL_ES3_BIT_KHR."
11802f4aeb0Sopenharmony_ci
11902f4aeb0Sopenharmony_ci    Modify section 3.7 "Rendering Contexts" in the paragraph near
12002f4aeb0Sopenharmony_ci    the top of page 42:
12102f4aeb0Sopenharmony_ci
12202f4aeb0Sopenharmony_ci   "Only one OpenGL or OpenGL ES context may be current to a particular
12302f4aeb0Sopenharmony_ci    thread, even if the implementation supports OpenGL and one or more
12402f4aeb0Sopenharmony_ci    versions of OpenGL ES in the same runtime [fn12]."
12502f4aeb0Sopenharmony_ci
12602f4aeb0Sopenharmony_ci    Replace section 3.7.1 "Creating Rendering Contexts" from the
12702f4aeb0Sopenharmony_ci    sixth paragraph through the end of the subsection with:
12802f4aeb0Sopenharmony_ci
12902f4aeb0Sopenharmony_ci   "<attrib_list> specifies a list of attributes for the context. The
13002f4aeb0Sopenharmony_ci    list has the same structure as described for eglChooseConfig. If an
13102f4aeb0Sopenharmony_ci    attribute is not specified in <attrib_list>, then the default value
13202f4aeb0Sopenharmony_ci    specified below is used instead. Most attributes are only meaningful
13302f4aeb0Sopenharmony_ci    for specific client APIs, and will generate an error when specified
13402f4aeb0Sopenharmony_ci    to create for another client API context.
13502f4aeb0Sopenharmony_ci
13602f4aeb0Sopenharmony_ci    OpenGL and OpenGL ES Context Versions
13702f4aeb0Sopenharmony_ci    -------------------------------------
13802f4aeb0Sopenharmony_ci
13902f4aeb0Sopenharmony_ci    The values for attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
14002f4aeb0Sopenharmony_ci    EGL_CONTEXT_MINOR_VERSION_KHR specify the requested client API
14102f4aeb0Sopenharmony_ci    version. They are only meaningful for OpenGL and OpenGL ES contexts,
14202f4aeb0Sopenharmony_ci    and specifying them for other types of contexts will generate an
14302f4aeb0Sopenharmony_ci    error.
14402f4aeb0Sopenharmony_ci
14502f4aeb0Sopenharmony_ci    When the current rendering API is EGL_OPENGL_ES_API or
14602f4aeb0Sopenharmony_ci    EGL_OPENGL_API, the values of EGL_CONTEXT_MAJOR_VERSION_KHR (the
14702f4aeb0Sopenharmony_ci    <major version> and EGL_CONTEXT_MINOR_VERSION_KHR (the <minor
14802f4aeb0Sopenharmony_ci    version>) request creation of an OpenGL ES or OpenGL context,
14902f4aeb0Sopenharmony_ci    respectively, supporting the specified version (<major>.<minor>) of
15002f4aeb0Sopenharmony_ci    that client API.
15102f4aeb0Sopenharmony_ci       [fn: the EGL 1.4 token EGL_CONTEXT_CLIENT_VERSION is an alias for
15202f4aeb0Sopenharmony_ci        EGL_CONTEXT_MAJOR_VERSION_KHR, and the tokens may be used
15302f4aeb0Sopenharmony_ci        interchangeably.]
15402f4aeb0Sopenharmony_ci    If successful, the context returned must be <backwards compatible>
15502f4aeb0Sopenharmony_ci    with the requested version. Backwards compatibility is determined as
15602f4aeb0Sopenharmony_ci    follows:
15702f4aeb0Sopenharmony_ci
15802f4aeb0Sopenharmony_ci    If the current rendering API is EGL_OPENGL_ES_API, then:
15902f4aeb0Sopenharmony_ci
16002f4aeb0Sopenharmony_ci      * If version 1.0 is requested, the context returned may implement
16102f4aeb0Sopenharmony_ci        either OpenGL ES 1.0 or OpenGL ES 1.1.
16202f4aeb0Sopenharmony_ci
16302f4aeb0Sopenharmony_ci      * If version 1.1 is requested, the context returned must implement
16402f4aeb0Sopenharmony_ci        OpenGL ES 1.1.
16502f4aeb0Sopenharmony_ci
16602f4aeb0Sopenharmony_ci      * If version 2.0, version 3.0, or a later version (when later
16702f4aeb0Sopenharmony_ci        versions are defined by Khronos) is requested, the context
16802f4aeb0Sopenharmony_ci        returned must implement the requested OpenGL ES version, or any
16902f4aeb0Sopenharmony_ci        later version which is backwards compatible with the requested
17002f4aeb0Sopenharmony_ci        version.
17102f4aeb0Sopenharmony_ci
17202f4aeb0Sopenharmony_ci    If the current rendering API is EGL_OPENGL_API, then:
17302f4aeb0Sopenharmony_ci
17402f4aeb0Sopenharmony_ci      * If a version less than or equal to OpenGL 3.0 is requested, the
17502f4aeb0Sopenharmony_ci        context returned may implement any of the following versions:
17602f4aeb0Sopenharmony_ci
17702f4aeb0Sopenharmony_ci          * Any version no less than that requested and no greater than
17802f4aeb0Sopenharmony_ci            3.0.
17902f4aeb0Sopenharmony_ci          * Version 3.1, if the GL_ARB_compatibility extension is also
18002f4aeb0Sopenharmony_ci            implemented.
18102f4aeb0Sopenharmony_ci          * The compatibility profile of version 3.2 or greater.
18202f4aeb0Sopenharmony_ci
18302f4aeb0Sopenharmony_ci      * If OpenGL 3.1 is requested, the context returned may implement
18402f4aeb0Sopenharmony_ci        any of the following versions:
18502f4aeb0Sopenharmony_ci
18602f4aeb0Sopenharmony_ci          * Version 3.1. The GL_ARB_compatibility extension may or may
18702f4aeb0Sopenharmony_ci            not be implemented, as determined by the implementation.
18802f4aeb0Sopenharmony_ci          * The core profile of version 3.2 or greater.
18902f4aeb0Sopenharmony_ci
19002f4aeb0Sopenharmony_ci      * If OpenGL 3.2 or greater is requested, the context returned may
19102f4aeb0Sopenharmony_ci        implement any of the following versions:
19202f4aeb0Sopenharmony_ci
19302f4aeb0Sopenharmony_ci          * The requested profile (see
19402f4aeb0Sopenharmony_ci            EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR below) of the requested
19502f4aeb0Sopenharmony_ci            version.
19602f4aeb0Sopenharmony_ci          * The requested profile of any later version, so long as no
19702f4aeb0Sopenharmony_ci            features have been removed from that later version and
19802f4aeb0Sopenharmony_ci            profile.
19902f4aeb0Sopenharmony_ci
20002f4aeb0Sopenharmony_ci    Typically, the implementation will return the most recent version of
20102f4aeb0Sopenharmony_ci    OpenGL it supports which is backwards compatible with the requested
20202f4aeb0Sopenharmony_ci    version.
20302f4aeb0Sopenharmony_ci
20402f4aeb0Sopenharmony_ci    Querying the GL_VERSION string with glGetString in either OpenGL or
20502f4aeb0Sopenharmony_ci    OpenGL ES (or the GL_MAJOR_VERSION and GL_MINOR_VERSION values with
20602f4aeb0Sopenharmony_ci    glGetIntegerv, in an OpenGL 3.0 or later context) will return the
20702f4aeb0Sopenharmony_ci    actual version supported by a context.
20802f4aeb0Sopenharmony_ci
20902f4aeb0Sopenharmony_ci    The default values for EGL_CONTEXT_MAJOR_VERSION_KHR and
21002f4aeb0Sopenharmony_ci    EGL_CONTEXT_MINOR_VERSION_KHR are 1 and 0 respectively.
21102f4aeb0Sopenharmony_ci
21202f4aeb0Sopenharmony_ci    OpenGL Context Profiles
21302f4aeb0Sopenharmony_ci    -----------------------
21402f4aeb0Sopenharmony_ci
21502f4aeb0Sopenharmony_ci    The value for attribute EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR
21602f4aeb0Sopenharmony_ci    specifies a <profile> of the OpenGL API. This attribute is only
21702f4aeb0Sopenharmony_ci    meaningful for OpenGL contexts, and specifying it for other types of
21802f4aeb0Sopenharmony_ci    contexts, including OpenGL ES contexts, will generate an error.
21902f4aeb0Sopenharmony_ci
22002f4aeb0Sopenharmony_ci    When the current rendering API is EGL_OPENGL_API, the value of
22102f4aeb0Sopenharmony_ci    EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR requests an OpenGL context
22202f4aeb0Sopenharmony_ci    supporting the corresponding profile. If the
22302f4aeb0Sopenharmony_ci    EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR bit is set in the attribute
22402f4aeb0Sopenharmony_ci    value, then a context implementing the <core> profile of OpenGL is
22502f4aeb0Sopenharmony_ci    returned. If the EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR
22602f4aeb0Sopenharmony_ci    bit is set, then a context implementing the <compatibility> profile
22702f4aeb0Sopenharmony_ci    is returned. If the requested OpenGL version is less than 3.2,
22802f4aeb0Sopenharmony_ci    EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR is ignored and the functionality
22902f4aeb0Sopenharmony_ci    of the context is determined solely by the requested version.
23002f4aeb0Sopenharmony_ci
23102f4aeb0Sopenharmony_ci    Querying the value of GL_CONTEXT_PROFILE_MASK with glGetIntegerv
23202f4aeb0Sopenharmony_ci    will return the profile mask used to create the context. This query
23302f4aeb0Sopenharmony_ci    is only supported in an OpenGL 3.2 or later context.
23402f4aeb0Sopenharmony_ci
23502f4aeb0Sopenharmony_ci    The default value for EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR is
23602f4aeb0Sopenharmony_ci    EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR. All OpenGL 3.2 and later
23702f4aeb0Sopenharmony_ci    implementations are required to implement the core profile, but
23802f4aeb0Sopenharmony_ci    implementation of the compatibility profile is optional.
23902f4aeb0Sopenharmony_ci
24002f4aeb0Sopenharmony_ci    If the core profile is requested, then the context returned cannot
24102f4aeb0Sopenharmony_ci    implement functionality defined only by the compatibility profile.
24202f4aeb0Sopenharmony_ci
24302f4aeb0Sopenharmony_ci    OpenGL and OpenGL ES Context Flags
24402f4aeb0Sopenharmony_ci    ----------------------------------
24502f4aeb0Sopenharmony_ci
24602f4aeb0Sopenharmony_ci    The value for attribute EGL_CONTEXT_FLAGS_KHR specifies a set of flag
24702f4aeb0Sopenharmony_ci    bits affecting the context. Flag bits are only meaningful when creating
24802f4aeb0Sopenharmony_ci    certain types of contexts, as described for each bit below, and
24902f4aeb0Sopenharmony_ci    specifying such a flag bit when creating another type of context will
25002f4aeb0Sopenharmony_ci    generate an error.
25102f4aeb0Sopenharmony_ci
25202f4aeb0Sopenharmony_ci    If the EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR flag bit is set in
25302f4aeb0Sopenharmony_ci    EGL_CONTEXT_FLAGS_KHR, then a <debug context> will be created. Debug
25402f4aeb0Sopenharmony_ci    contexts are intended for use during application development, to
25502f4aeb0Sopenharmony_ci    provide additional runtime checking, validation, and logging
25602f4aeb0Sopenharmony_ci    functionality while possibly incurring performance penalties. The
25702f4aeb0Sopenharmony_ci    additional functionality provided by debug contexts may vary
25802f4aeb0Sopenharmony_ci    according to the implementation(fn). In some cases a debug context
25902f4aeb0Sopenharmony_ci    may be identical to a non-debug context. This bit is supported for
26002f4aeb0Sopenharmony_ci    OpenGL and OpenGL ES contexts.
26102f4aeb0Sopenharmony_ci        [fn: Khronos is still defining the expected and required
26202f4aeb0Sopenharmony_ci             features of debug contexts, so implementations are
26302f4aeb0Sopenharmony_ci             currently free to implement "debug contexts" with little or
26402f4aeb0Sopenharmony_ci             no debug functionality. However, OpenGL and OpenGL ES
26502f4aeb0Sopenharmony_ci             implementations supporting the GL_KHR_debug extension
26602f4aeb0Sopenharmony_ci             should enable it when this bit is set.]
26702f4aeb0Sopenharmony_ci        [fn2: See issue 9 below for discussion of backwards
26802f4aeb0Sopenharmony_ci             compatibility issues with the debug bit and OpenGL ES
26902f4aeb0Sopenharmony_ci             contexts.]
27002f4aeb0Sopenharmony_ci
27102f4aeb0Sopenharmony_ci    If the EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR flag bit is set
27202f4aeb0Sopenharmony_ci    in EGL_CONTEXT_FLAGS_KHR, then a <forward-compatible> context will
27302f4aeb0Sopenharmony_ci    be created. Forward-compatible contexts are defined only for OpenGL
27402f4aeb0Sopenharmony_ci    versions 3.0 and later. They must not support functionality marked
27502f4aeb0Sopenharmony_ci    as <deprecated> by that version of the API, while a
27602f4aeb0Sopenharmony_ci    non-forward-compatible context must support all functionality in
27702f4aeb0Sopenharmony_ci    that version, deprecated or not. This bit is supported for OpenGL
27802f4aeb0Sopenharmony_ci    contexts, and requesting a forward-compatible context for OpenGL
27902f4aeb0Sopenharmony_ci    versions less than 3.0 will generate an error.
28002f4aeb0Sopenharmony_ci
28102f4aeb0Sopenharmony_ci    If the EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR bit is set in
28202f4aeb0Sopenharmony_ci    EGL_CONTEXT_FLAGS_KHR, then a context supporting <robust buffer
28302f4aeb0Sopenharmony_ci    access> will be created. Robust buffer access is defined in the
28402f4aeb0Sopenharmony_ci    GL_ARB_robustness extension specification, and the resulting context
28502f4aeb0Sopenharmony_ci    must also support either the GL_ARB_robustness extension, or a
28602f4aeb0Sopenharmony_ci    version of OpenGL incorporating equivalent functionality. This bit
28702f4aeb0Sopenharmony_ci    is supported for OpenGL contexts.
28802f4aeb0Sopenharmony_ci
28902f4aeb0Sopenharmony_ci    The default value of EGL_CONTEXT_FLAGS_KHR is zero.
29002f4aeb0Sopenharmony_ci
29102f4aeb0Sopenharmony_ci    OpenGL Context Reset Notification
29202f4aeb0Sopenharmony_ci    ---------------------------------
29302f4aeb0Sopenharmony_ci
29402f4aeb0Sopenharmony_ci    The attribute name
29502f4aeb0Sopenharmony_ci    EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR specifies the
29602f4aeb0Sopenharmony_ci    <reset notification behavior> of the rendering context. This
29702f4aeb0Sopenharmony_ci    attribute is only meaningful for OpenGL contexts, and specifying it
29802f4aeb0Sopenharmony_ci    for other types of contexts, including OpenGL ES contexts, will
29902f4aeb0Sopenharmony_ci    generate an error.
30002f4aeb0Sopenharmony_ci
30102f4aeb0Sopenharmony_ci    Reset notification behavior is defined in the GL_ARB_robustness
30202f4aeb0Sopenharmony_ci    extension specification, and the resulting context must also support
30302f4aeb0Sopenharmony_ci    either the GL_ARB_robustness extension, or a version of OpenGL or
30402f4aeb0Sopenharmony_ci    incorporating equivalent functionality. The attribute value may be
30502f4aeb0Sopenharmony_ci    either EGL_NO_RESET_NOTIFICATION_KHR or
30602f4aeb0Sopenharmony_ci    EGL_LOSE_CONTEXT_ON_RESET_KHR, which respectively result in reset
30702f4aeb0Sopenharmony_ci    notification behavior of GL_NO_RESET_NOTIFICATION_ARB and
30802f4aeb0Sopenharmony_ci    GL_LOSE_CONTEXT_ON_RESET_ARB, as described by GL_ARB_robustness. The
30902f4aeb0Sopenharmony_ci    default value for EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR
31002f4aeb0Sopenharmony_ci    is EGL_NO_RESET_NOTIFICATION_KHR.
31102f4aeb0Sopenharmony_ci
31202f4aeb0Sopenharmony_ci    Errors
31302f4aeb0Sopenharmony_ci    ------
31402f4aeb0Sopenharmony_ci
31502f4aeb0Sopenharmony_ci    On failure eglCreateContext returns EGL_NO_CONTEXT and generates an
31602f4aeb0Sopenharmony_ci    EGL error with extended error information. Conditions that cause
31702f4aeb0Sopenharmony_ci    failure include:
31802f4aeb0Sopenharmony_ci
31902f4aeb0Sopenharmony_ci      * If an attribute is specified that is not meaningful for the
32002f4aeb0Sopenharmony_ci        client API type determined by the current rendering API, an
32102f4aeb0Sopenharmony_ci        EGL_BAD_ATTRIBUTE error is generated.
32202f4aeb0Sopenharmony_ci
32302f4aeb0Sopenharmony_ci      * If the current rendering api is EGL_NONE, then an EGL_BAD_MATCH
32402f4aeb0Sopenharmony_ci        error is generated (this situation can only arise in an
32502f4aeb0Sopenharmony_ci        implementation which does not support OpenGL ES 1.x, and prior to
32602f4aeb0Sopenharmony_ci        the first call to eglBindAPI).
32702f4aeb0Sopenharmony_ci
32802f4aeb0Sopenharmony_ci      * If share_context is neither EGL_NO_CONTEXT nor a valid context
32902f4aeb0Sopenharmony_ci        of the same client API type as the newly created context, then
33002f4aeb0Sopenharmony_ci        an EGL_BAD_CONTEXT error is generated.
33102f4aeb0Sopenharmony_ci
33202f4aeb0Sopenharmony_ci      * If <config> is not a valid EGLConfig, or does not support the
33302f4aeb0Sopenharmony_ci        requested client API, then an EGL_BAD_CONFIG error is generated
33402f4aeb0Sopenharmony_ci        (this includes requesting creation of an OpenGL ES 1.x, 2.0, or
33502f4aeb0Sopenharmony_ci        3.0 context when the EGL_RENDERABLE_TYPE attribute of <config>
33602f4aeb0Sopenharmony_ci        does not contain EGL_OPENGL_ES_BIT, EGL_OPENGL_ES2_BIT, or
33702f4aeb0Sopenharmony_ci        EGL_OPENGL_ES3_BIT_KHR respectively).
33802f4aeb0Sopenharmony_ci
33902f4aeb0Sopenharmony_ci      * If <config> does not support a client API context compatible
34002f4aeb0Sopenharmony_ci        with the requested API major and minor version, context flags,
34102f4aeb0Sopenharmony_ci        and context reset notification behavior (for client API types
34202f4aeb0Sopenharmony_ci        where these attributes are supported), then an EGL_BAD_MATCH
34302f4aeb0Sopenharmony_ci        error is generated.
34402f4aeb0Sopenharmony_ci
34502f4aeb0Sopenharmony_ci      * If an OpenGL context is requested, the requested version is
34602f4aeb0Sopenharmony_ci        greater than 3.2, and the value for attribute
34702f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR has no bits set; has any
34802f4aeb0Sopenharmony_ci        bits set other than EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR and
34902f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR; has more than
35002f4aeb0Sopenharmony_ci        one of these bits set; or if the implementation does not support
35102f4aeb0Sopenharmony_ci        the requested profile, then an EGL_BAD_MATCH error is generated.
35202f4aeb0Sopenharmony_ci
35302f4aeb0Sopenharmony_ci      * If an OpenGL or OpenGL ES context is requested and the server
35402f4aeb0Sopenharmony_ci        context state for <share_context> exists in an address space
35502f4aeb0Sopenharmony_ci        that cannot be shared with the newly created context, if
35602f4aeb0Sopenharmony_ci        <share_context> was created on a different display than the one
35702f4aeb0Sopenharmony_ci        referenced by <config>, if the reset notification behavior of
35802f4aeb0Sopenharmony_ci        <share_context> and the newly created context are different, or
35902f4aeb0Sopenharmony_ci        if the contexts are otherwise incompatible (for example, one
36002f4aeb0Sopenharmony_ci        context being associated with a hardware device driver and the
36102f4aeb0Sopenharmony_ci        other with a software renderer), then an EGL_BAD_MATCH error is
36202f4aeb0Sopenharmony_ci        generated.
36302f4aeb0Sopenharmony_ci
36402f4aeb0Sopenharmony_ci      * If the server does not have enough resources to allocate the new
36502f4aeb0Sopenharmony_ci        context, then an EGL_BAD_ALLOC error is generated.
36602f4aeb0Sopenharmony_ci
36702f4aeb0Sopenharmony_ci      * If an OpenGL context is requested and the values for attributes
36802f4aeb0Sopenharmony_ci        EGL_CONTEXT_MAJOR_VERSION_KHR and EGL_CONTEXT_MINOR_VERSION_KHR,
36902f4aeb0Sopenharmony_ci        when considered together with the value for attribute
37002f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR, specify an OpenGL
37102f4aeb0Sopenharmony_ci        version and feature set that are not defined, than an
37202f4aeb0Sopenharmony_ci        EGL_BAD_MATCH error is generated.
37302f4aeb0Sopenharmony_ci
37402f4aeb0Sopenharmony_ci        The defined versions of OpenGL at the time of writing are OpenGL
37502f4aeb0Sopenharmony_ci        1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 2.0, 2.1, 3.0, 3.1, 3.2, 4.0, 4.1,
37602f4aeb0Sopenharmony_ci        4.2, and 4.3. Feature deprecation was introduced with OpenGL
37702f4aeb0Sopenharmony_ci        3.0, so forward-compatible contexts may only be requested for
37802f4aeb0Sopenharmony_ci        OpenGL 3.0 and above. Thus, examples of invalid combinations of
37902f4aeb0Sopenharmony_ci        attributes include:
38002f4aeb0Sopenharmony_ci
38102f4aeb0Sopenharmony_ci          - Major version < 1 or > 4
38202f4aeb0Sopenharmony_ci          - Major version == 1 and minor version < 0 or > 5
38302f4aeb0Sopenharmony_ci          - Major version == 2 and minor version < 0 or > 1
38402f4aeb0Sopenharmony_ci          - Major version == 3 and minor version < 0 or > 2
38502f4aeb0Sopenharmony_ci          - Major version == 4 and minor version < 0 or > 3
38602f4aeb0Sopenharmony_ci          - Forward-compatible flag set and major version < 3
38702f4aeb0Sopenharmony_ci
38802f4aeb0Sopenharmony_ci        Because the purpose of forward-compatible contexts is to allow
38902f4aeb0Sopenharmony_ci        application development on a specific OpenGL version with the
39002f4aeb0Sopenharmony_ci        knowledge that the app will run on a future version, context
39102f4aeb0Sopenharmony_ci        creation will fail if
39202f4aeb0Sopenharmony_ci        EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR is set and the
39302f4aeb0Sopenharmony_ci        context version returned cannot implement exactly the requested
39402f4aeb0Sopenharmony_ci        version.
39502f4aeb0Sopenharmony_ci
39602f4aeb0Sopenharmony_ci      * If an OpenGL ES context is requested and the values for
39702f4aeb0Sopenharmony_ci        attributes EGL_CONTEXT_MAJOR_VERSION_KHR and
39802f4aeb0Sopenharmony_ci        EGL_CONTEXT_MINOR_VERSION_KHR specify an OpenGL ES version that
39902f4aeb0Sopenharmony_ci        is not defined, than an EGL_BAD_MATCH error is generated.
40002f4aeb0Sopenharmony_ci
40102f4aeb0Sopenharmony_ci        The defined versions of OpenGL ES at the time of writing are
40202f4aeb0Sopenharmony_ci        OpenGL ES 1.0, 1.1, 2.0, and 3.0. Examples of invalid
40302f4aeb0Sopenharmony_ci        combinations of attributes include:
40402f4aeb0Sopenharmony_ci
40502f4aeb0Sopenharmony_ci          - Major version < 1 or > 3
40602f4aeb0Sopenharmony_ci          - Major version == 1 and minor version < 0 or > 1
40702f4aeb0Sopenharmony_ci          - Major version == 2 and minor version != 0
40802f4aeb0Sopenharmony_ci          - Major version == 3 and minor version != 0
40902f4aeb0Sopenharmony_ci
41002f4aeb0Sopenharmony_ci      * If an attribute name or attribute value in <attrib_list> is not
41102f4aeb0Sopenharmony_ci        recognized (including undefined or unsupported bits in bitmask
41202f4aeb0Sopenharmony_ci        attributes), then an EGL_BAD_ATTRIBUTE error is generated."
41302f4aeb0Sopenharmony_ci
41402f4aeb0Sopenharmony_ci    In section 3.7.3, replace the following two error conditions in the
41502f4aeb0Sopenharmony_ci    list of eglMakeCurrent errors:
41602f4aeb0Sopenharmony_ci
41702f4aeb0Sopenharmony_ci   "  * If <ctx> is not a valid context, an EGL_BAD_CONTEXT error is
41802f4aeb0Sopenharmony_ci        generated.
41902f4aeb0Sopenharmony_ci      * If either <draw> or <read> are not valid EGL surfaces, an
42002f4aeb0Sopenharmony_ci        EGL_BAD_SURFACE error is generated."
42102f4aeb0Sopenharmony_ci
42202f4aeb0Sopenharmony_ci    with the following error conditions:
42302f4aeb0Sopenharmony_ci
42402f4aeb0Sopenharmony_ci   "  * If <ctx> is not a valid context and is not EGL_NO_CONTEXT, an
42502f4aeb0Sopenharmony_ci        EGL_BAD_CONTEXT error is generated.
42602f4aeb0Sopenharmony_ci      * If either <draw> or <read> are not valid EGL surfaces and are
42702f4aeb0Sopenharmony_ci        not EGL_NO_SURFACE, an EGL_BAD_SURFACE error is generated.
42802f4aeb0Sopenharmony_ci      * If <ctx> is EGL_NO_CONTEXT and either <draw> or <read> are not
42902f4aeb0Sopenharmony_ci        EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated.
43002f4aeb0Sopenharmony_ci      * If either of <draw> or <read> is a valid surface and the other
43102f4aeb0Sopenharmony_ci        is EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated.
43202f4aeb0Sopenharmony_ci      * If <ctx> does not support being bound without read and draw
43302f4aeb0Sopenharmony_ci        surfaces, and both <draw> and <read> are EGL_NO_SURFACE, an
43402f4aeb0Sopenharmony_ci        EGL_BAD_MATCH error is generated."
43502f4aeb0Sopenharmony_ci
43602f4aeb0Sopenharmony_ci    Replace the paragraph starting "If <ctx> is EGL_NO_CONTEXT and
43702f4aeb0Sopenharmony_ci    <draw> and <read> are not EGL_NO_SURFACE..." with
43802f4aeb0Sopenharmony_ci
43902f4aeb0Sopenharmony_ci   "If both <draw> and <read> are EGL_NO_SURFACE, and <ctx> is an OpenGL
44002f4aeb0Sopenharmony_ci    context supporting version 3.0 or later of the OpenGL API, then no
44102f4aeb0Sopenharmony_ci    error is generated and the context is made current without a
44202f4aeb0Sopenharmony_ci    <default framebuffer>. The meaning of this is defined in chapter 4
44302f4aeb0Sopenharmony_ci    of the OpenGL 3.0 Specification."
44402f4aeb0Sopenharmony_ci
44502f4aeb0Sopenharmony_ci    Append to the paragraph starting "The first time an OpenGL or OpenGL
44602f4aeb0Sopenharmony_ci    ES context is made current..." with
44702f4aeb0Sopenharmony_ci
44802f4aeb0Sopenharmony_ci   "If the first time <ctx> is made current, it is without a default
44902f4aeb0Sopenharmony_ci    framebuffer (e.g. both <draw> and <read> are EGL_NO_SURFACE), then
45002f4aeb0Sopenharmony_ci    the viewport and scissor regions are set as though
45102f4aeb0Sopenharmony_ci    glViewport(0,0,0,0) and glScissor(0,0,0,0) were called."
45202f4aeb0Sopenharmony_ci
45302f4aeb0Sopenharmony_ci
45402f4aeb0Sopenharmony_ciErrors
45502f4aeb0Sopenharmony_ci
45602f4aeb0Sopenharmony_ci    EGL errors for eglCreateContext as described in the body of the
45702f4aeb0Sopenharmony_ci    specification.
45802f4aeb0Sopenharmony_ci
45902f4aeb0Sopenharmony_ci    eglMakeCurrent error behavior is relaxed to allow making an OpenGL
46002f4aeb0Sopenharmony_ci    3.0 or later context current without a default read or draw
46102f4aeb0Sopenharmony_ci    framebuffer.
46202f4aeb0Sopenharmony_ci
46302f4aeb0Sopenharmony_ciConformance Tests
46402f4aeb0Sopenharmony_ci
46502f4aeb0Sopenharmony_ci    TBD
46602f4aeb0Sopenharmony_ci
46702f4aeb0Sopenharmony_ciSample Code
46802f4aeb0Sopenharmony_ci
46902f4aeb0Sopenharmony_ci    TBD
47002f4aeb0Sopenharmony_ci
47102f4aeb0Sopenharmony_ciIssues
47202f4aeb0Sopenharmony_ci
47302f4aeb0Sopenharmony_ci    Non-window-system dependent issues described in the
47402f4aeb0Sopenharmony_ci    WGL_ARB_create_context extension specification in the OpenGL
47502f4aeb0Sopenharmony_ci    Registry apply to EGL_KHR_create_context.
47602f4aeb0Sopenharmony_ci
47702f4aeb0Sopenharmony_ci 1) Do enumerant values need to be shared with the equivalent WGL / GLX
47802f4aeb0Sopenharmony_ci    extensions?
47902f4aeb0Sopenharmony_ci
48002f4aeb0Sopenharmony_ci    Mostly not. The only case where it's fairly important that the
48102f4aeb0Sopenharmony_ci    values be identical is the EGL_CONTEXT_FLAGS_KHR attribute bitmask
48202f4aeb0Sopenharmony_ci    values, which are also exposed through an OpenGL query.
48302f4aeb0Sopenharmony_ci
48402f4aeb0Sopenharmony_ci 2) Why are some attribute values named EGL_CONTEXT_OPENGL_*?
48502f4aeb0Sopenharmony_ci
48602f4aeb0Sopenharmony_ci    It is possible that context flags and profiles will eventually be
48702f4aeb0Sopenharmony_ci    defined for client APIs other than OpenGL. To allow for this
48802f4aeb0Sopenharmony_ci    possibility, the names of the corresponding attribute values are
48902f4aeb0Sopenharmony_ci    distinguished. For example, EGL_CONTEXT_FLAGS_KHR currently only has
49002f4aeb0Sopenharmony_ci    flags defined for OpenGL context creation, and those flags are named
49102f4aeb0Sopenharmony_ci    EGL_CONTEXT_OPENGL_*_BIT_KHR, but in time OpenVG context creation
49202f4aeb0Sopenharmony_ci    might allow flags as well. Such flags would be named
49302f4aeb0Sopenharmony_ci    EGL_CONTEXT_OPENVG_*_BIT_KHR.
49402f4aeb0Sopenharmony_ci
49502f4aeb0Sopenharmony_ci 3) Why does EGL_CONTEXT_MAJOR_VERSION_KHR have a distinct numeric token
49602f4aeb0Sopenharmony_ci    value when it is functionally equivalent to
49702f4aeb0Sopenharmony_ci    EGL_CONTEXT_CLIENT_VERSION?
49802f4aeb0Sopenharmony_ci
49902f4aeb0Sopenharmony_ci    It no longer has a distinct token value; see issue 1.
50002f4aeb0Sopenharmony_ci
50102f4aeb0Sopenharmony_ci 4) How will future versions of OpenGL ES interact with this extension?
50202f4aeb0Sopenharmony_ci
50302f4aeb0Sopenharmony_ci    Later context versions which are backwards compatibile with the
50402f4aeb0Sopenharmony_ci    requested version can be returned, just as with OpenGL contexts.
50502f4aeb0Sopenharmony_ci
50602f4aeb0Sopenharmony_ci 5) What happens when requesting a context requiring OpenGL functionality
50702f4aeb0Sopenharmony_ci    that cannot be supported by the underlying GL implementation, such as
50802f4aeb0Sopenharmony_ci    requesting lost context reset notification and/or robust buffer access
50902f4aeb0Sopenharmony_ci    when the implementation does not support the functionality defined by
51002f4aeb0Sopenharmony_ci    GL_ARB_robustness?
51102f4aeb0Sopenharmony_ci
51202f4aeb0Sopenharmony_ci    Context creation will fail and an EGL_BAD_MATCH error will be
51302f4aeb0Sopenharmony_ci    generated. This case is included under the general language of the
51402f4aeb0Sopenharmony_ci    fifth bullet point under "Errors" but this issue is added to for
51502f4aeb0Sopenharmony_ci    clarity.
51602f4aeb0Sopenharmony_ci
51702f4aeb0Sopenharmony_ci 6) How is robust buffer access and reset notification supported under
51802f4aeb0Sopenharmony_ci    OpenGL ES?
51902f4aeb0Sopenharmony_ci
52002f4aeb0Sopenharmony_ci    RESOLVED: It is an error to request robust buffer access and/or reset
52102f4aeb0Sopenharmony_ci    notification for OpenGL ES contexts. Exposing robust buffer access and
52202f4aeb0Sopenharmony_ci    reset notification for OpenGL ES contexts may be defined in a future EGL
52302f4aeb0Sopenharmony_ci    extension.
52402f4aeb0Sopenharmony_ci
52502f4aeb0Sopenharmony_ci 7) Future support for OpenGL ES context creation.
52602f4aeb0Sopenharmony_ci
52702f4aeb0Sopenharmony_ci    If and when features available for OpenGL context creation are defined
52802f4aeb0Sopenharmony_ci    for OpenGL ES context creation in the future, debug contexts, forward
52902f4aeb0Sopenharmony_ci    compatible contexts, and robust buffer access contexts may be specified
53002f4aeb0Sopenharmony_ci    using separate attributes rather than bitmasks. The reset notification
53102f4aeb0Sopenharmony_ci    behavior attribute may be extended to cover OpenGL ES as well as OpenGL.
53202f4aeb0Sopenharmony_ci
53302f4aeb0Sopenharmony_ci 8) Why was the EGL_OPENGL_ES3_BIT_KHR added in version 13 of the
53402f4aeb0Sopenharmony_ci    extension? Doesn't this break backwards compatibility with older
53502f4aeb0Sopenharmony_ci    versions of the extension?
53602f4aeb0Sopenharmony_ci
53702f4aeb0Sopenharmony_ci    Applications need the functionality to be confident that context
53802f4aeb0Sopenharmony_ci    creation of an OpenGL ES 3.0 context will succeed (rather than trying
53902f4aeb0Sopenharmony_ci    it with different configs until one that succeeds is found).
54002f4aeb0Sopenharmony_ci
54102f4aeb0Sopenharmony_ci    If this bit is passed into eglChooseConfig and the implementation
54202f4aeb0Sopenharmony_ci    supports only an older version of the extension, an EGL_BAD_ATTIBUTE
54302f4aeb0Sopenharmony_ci    error should be generated. Since no matching configs will be found, a
54402f4aeb0Sopenharmony_ci    robustly-written application will fail (or fall back to an ES 2.0
54502f4aeb0Sopenharmony_ci    rendering path) at this point. This is the same application behavior
54602f4aeb0Sopenharmony_ci    that should result from not finding a matching config on an
54702f4aeb0Sopenharmony_ci    implementation supporting version 13 of the extension, even though the
54802f4aeb0Sopenharmony_ci    failure mode is different (EGL error vs. returning no matching
54902f4aeb0Sopenharmony_ci    configs). The EGL Working Group considers this sufficiently benign
55002f4aeb0Sopenharmony_ci    behavior, and the functionality important enough, to make the change.
55102f4aeb0Sopenharmony_ci
55202f4aeb0Sopenharmony_ci 9) Why was OpenGL ES support for EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR added
55302f4aeb0Sopenharmony_ci    in version 15 of the extension? Doesn't this break backwards
55402f4aeb0Sopenharmony_ci    compatibility with older versions of the extension?
55502f4aeb0Sopenharmony_ci
55602f4aeb0Sopenharmony_ci    Now that the GL_KHR_debug extension is ratified and available,
55702f4aeb0Sopenharmony_ci    OpenGL ES implementers needed a way to enable debug functionality,
55802f4aeb0Sopenharmony_ci    and wanted to use the same mechanism as OpenGL. There is no
55902f4aeb0Sopenharmony_ci    discovery mechanism for this capability, so an application creating
56002f4aeb0Sopenharmony_ci    a OpenGL ES context with the debug bit set and running against an
56102f4aeb0Sopenharmony_ci    older EGL driver should generate an error. The OpenGL ES Working
56202f4aeb0Sopenharmony_ci    Group considers this benign behavior.
56302f4aeb0Sopenharmony_ci
56402f4aeb0Sopenharmony_ci 10) Which error should be generated if robust buffer access or reset
56502f4aeb0Sopenharmony_ci     notifications are requested under OpenGL ES?
56602f4aeb0Sopenharmony_ci
56702f4aeb0Sopenharmony_ci    As per Issue 6, this extension does not support creating robust contexts
56802f4aeb0Sopenharmony_ci    for OpenGL ES. This is only supported via the EGL_EXT_create_context_-
56902f4aeb0Sopenharmony_ci    robustness extension.
57002f4aeb0Sopenharmony_ci
57102f4aeb0Sopenharmony_ci    Attempting to use this extension to create robust OpenGL ES context
57202f4aeb0Sopenharmony_ci    will generate an EGL_BAD_ATTRIBUTE error. This specific error is generated
57302f4aeb0Sopenharmony_ci    because this extension does not define the EGL_CONTEXT_OPENGL_ROBUST_-
57402f4aeb0Sopenharmony_ci    ACCESS_BIT_KHR and EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR bits
57502f4aeb0Sopenharmony_ci    for OpenGL ES contexts. Thus, use of these bits fall under condition
57602f4aeb0Sopenharmony_ci    described by: "If an attribute is specified that is not meaningful for
57702f4aeb0Sopenharmony_ci    the client API type.." in the above specification.
57802f4aeb0Sopenharmony_ci
57902f4aeb0Sopenharmony_ciRevision History
58002f4aeb0Sopenharmony_ci
58102f4aeb0Sopenharmony_ci    Version 16, 2015/01/15
58202f4aeb0Sopenharmony_ci      - Add issue 10.
58302f4aeb0Sopenharmony_ci
58402f4aeb0Sopenharmony_ci    Version 15, 2013/03/27
58502f4aeb0Sopenharmony_ci      - Add OpenGL ES support for debug contexts (Bug 10035).
58602f4aeb0Sopenharmony_ci
58702f4aeb0Sopenharmony_ci    Version 14, 2012/09/19
58802f4aeb0Sopenharmony_ci      - Assign enum value to new bit and published updated extension.
58902f4aeb0Sopenharmony_ci
59002f4aeb0Sopenharmony_ci    Version 13, 2012/07/29
59102f4aeb0Sopenharmony_ci      - Add EGL_OPENGL_ES3_BIT_KHR to table 3.3 and sections 3.5.2, 3.7,
59202f4aeb0Sopenharmony_ci        and 3.7.1. Add issue 8 explaining the addition.
59302f4aeb0Sopenharmony_ci
59402f4aeb0Sopenharmony_ci    Version 12, 2012/07/25
59502f4aeb0Sopenharmony_ci      - Explicitly describe new OpenGL 4.3 and OpenGL ES 3.0 versions.
59602f4aeb0Sopenharmony_ci        This is not a behavior change (Khronos Bug 9136).
59702f4aeb0Sopenharmony_ci      - Make spec consistent so that asking for a forward-compatible GL
59802f4aeb0Sopenharmony_ci        context for versions less than 3.0 is an error (Bug 9314).
59902f4aeb0Sopenharmony_ci      - Change nonexistent EGL_BAD_PROFILE_KHR error generated when
60002f4aeb0Sopenharmony_ci        asking for an unsupported or nonexistent GL profile to an
60102f4aeb0Sopenharmony_ci        EGL_BAD_MATCH error (Bug 9314).
60202f4aeb0Sopenharmony_ci      - Fix typos in spec body for several new tokens of form
60302f4aeb0Sopenharmony_ci        "EGL_CONTEXT_OPENGL_*" which were missing the "OPENGL_" part
60402f4aeb0Sopenharmony_ci        (Bug 9314).
60502f4aeb0Sopenharmony_ci
60602f4aeb0Sopenharmony_ci    Version 11, 2012/07/09 - change nonexistent EGL_BAD_VALUE error
60702f4aeb0Sopenharmony_ci    to EGL_BAD_ATTRIBUTE (Khronos Bug 9269).
60802f4aeb0Sopenharmony_ci
60902f4aeb0Sopenharmony_ci    Version 10, 2011/11/22 - fix typo.
61002f4aeb0Sopenharmony_ci
61102f4aeb0Sopenharmony_ci    Version 9, 2011/11/09 - resolve issue 6 and add issue 7, limiting
61202f4aeb0Sopenharmony_ci    various context creation attributes to apply only to OpenGL and not
61302f4aeb0Sopenharmony_ci    to OpenGL ES.
61402f4aeb0Sopenharmony_ci
61502f4aeb0Sopenharmony_ci    Version 8, 2011/10/20 - change spec body to match BAD_MATCH error
61602f4aeb0Sopenharmony_ci    returned in issue 5 when specifying context version and attributes
61702f4aeb0Sopenharmony_ci    that collectively cannot be satisfied.
61802f4aeb0Sopenharmony_ci
61902f4aeb0Sopenharmony_ci    Version 7, 2011/10/19 - add issue 5 clarifying context creation
62002f4aeb0Sopenharmony_ci    failures when requesting functionality that cannot be supported by a
62102f4aeb0Sopenharmony_ci    GL or ES context, and issue 6 discussing the meaning of "equivalent
62202f4aeb0Sopenharmony_ci    to GL_ARB_robustness".
62302f4aeb0Sopenharmony_ci
62402f4aeb0Sopenharmony_ci    Version 6, 2011/10/19 - minor cleanup & clarification of OpenGL ES
62502f4aeb0Sopenharmony_ci    version requests.
62602f4aeb0Sopenharmony_ci
62702f4aeb0Sopenharmony_ci    Version 5, 2010/09/22 - add context reset notification strategy
62802f4aeb0Sopenharmony_ci    attributes from GLX/WGL context creation extensions.
62902f4aeb0Sopenharmony_ci
63002f4aeb0Sopenharmony_ci    Version 4, 2010/09/22 - fix typo. Assign enumerant values and update
63102f4aeb0Sopenharmony_ci    issue 1 to match. Add caveat to errors section so that invalid
63202f4aeb0Sopenharmony_ci    attribute values for EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR only raise
63302f4aeb0Sopenharmony_ci    errors when requesting an OpenGL context of version 3.2 or greater
63402f4aeb0Sopenharmony_ci    (bug 6374). Add issue 4 and allow ES 2.0 context creation requests
63502f4aeb0Sopenharmony_ci    to return later versions that are backwards-compatible (bug 6374).
63602f4aeb0Sopenharmony_ci
63702f4aeb0Sopenharmony_ci    Version 3, 2010/07/21 - remove surfaceless bit in favor of separate
63802f4aeb0Sopenharmony_ci    per-client-API extensions which promise that contexts of a given
63902f4aeb0Sopenharmony_ci    client API type can be bound without surfaces on that display. Add
64002f4aeb0Sopenharmony_ci    robust buffer access bit from equivalent WGL/GLX context creation
64102f4aeb0Sopenharmony_ci    extensions. Rename EGL_CONTEXT_FLAGS_KHR so it's not specific to
64202f4aeb0Sopenharmony_ci    OpenGL.
64302f4aeb0Sopenharmony_ci
64402f4aeb0Sopenharmony_ci    Version 2, 2010/06/29 - add EGL_CONTEXT_OPENGL_SURFACELESS_BIT_KHR
64502f4aeb0Sopenharmony_ci    context flag bit (bug 6082).
64602f4aeb0Sopenharmony_ci
64702f4aeb0Sopenharmony_ci    Version 1, 2010/06/29 - Initial version based on equivalent
64802f4aeb0Sopenharmony_ci    WGL_ARB_create_context and GLX_ARB_create_context extensions.
649