15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    KHR_context_flush_control
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_KHR_context_flush_control
85bd8deadSopenharmony_ci    EGL_KHR_context_flush_control
95bd8deadSopenharmony_ci    GLX_ARB_context_flush_control
105bd8deadSopenharmony_ci    WGL_ARB_context_flush_control
115bd8deadSopenharmony_ci
125bd8deadSopenharmony_ciContact
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ci    Graham Sellers (graham.sellers 'at' amd.com)
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ciContributors
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ci    Graham Sellers, AMD
195bd8deadSopenharmony_ci    Jon Leech
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ciNotice
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ci    Copyright (c) 2014 The Khronos Group Inc. Copyright terms at
245bd8deadSopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ciSpecification Update Policy
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ci    Khronos-approved extension specifications are updated in response to
295bd8deadSopenharmony_ci    issues and bugs prioritized by the Khronos OpenGL and OpenGL ES Working Groups. For
305bd8deadSopenharmony_ci    extensions which have been promoted to a core Specification, fixes will
315bd8deadSopenharmony_ci    first appear in the latest version of that core Specification, and will
325bd8deadSopenharmony_ci    eventually be backported to the extension document. This policy is
335bd8deadSopenharmony_ci    described in more detail at
345bd8deadSopenharmony_ci        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ciStatus
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ci    Complete.
395bd8deadSopenharmony_ci    Approved by the ARB on June 26, 2014.
405bd8deadSopenharmony_ci    Approved by the OpenGL ES Working Group on August 6, 2014.
415bd8deadSopenharmony_ci    Ratified by the Khronos Board of Promoters on August 7, 2014 (non-EGL
425bd8deadSopenharmony_ci    extensions, and on September 26, 2014 (EGL extension).
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ciVersion
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ci    Last Modified Date:         9/28/2016
475bd8deadSopenharmony_ci    Author Revision:            8
485bd8deadSopenharmony_ci
495bd8deadSopenharmony_ciNumber
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ci    ARB Extension #168
525bd8deadSopenharmony_ci    OpenGL ES Extension #191 (for GL_KHR_context_flush_control only)
535bd8deadSopenharmony_ci    EGL Extension #102 (for EGL_KHR_context_flush_control only)
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ciDependencies
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci    GL_KHR_context_flush_control is written against the OpenGL 4.4 (Core
585bd8deadSopenharmony_ci    Profile) specification, but can be implemented against any version of
595bd8deadSopenharmony_ci    OpenGL or OpenGL ES.
605bd8deadSopenharmony_ci
615bd8deadSopenharmony_ci    EGL_KHR_context_flush_control is written against the EGL 1.5
625bd8deadSopenharmony_ci    Specification, but can be implemented against any version of EGL.
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ci    GLX_ARB_context_flush_control is written against the GLX 1.4 and
655bd8deadSopenharmony_ci    GLX_ARB_create_context specifications. Both are required.
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ci    WGL_ARB_context_flush_control is written against the
685bd8deadSopenharmony_ci    WGL_ARB_create_context specification, which is required.
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ciOverview
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci    OpenGL and OpenGL ES have long supported multiple contexts. The
735bd8deadSopenharmony_ci    semantics of switching contexts is generally left to window system
745bd8deadSopenharmony_ci    binding APIs such as WGL, GLX and EGL. Most of these APIs (if not all)
755bd8deadSopenharmony_ci    specify that when the current context for a thread is changed, the
765bd8deadSopenharmony_ci    outgoing context performs an implicit flush of any commands that have
775bd8deadSopenharmony_ci    been issued to that point. OpenGL and OpenGL ES define a flush as
785bd8deadSopenharmony_ci    sending any pending commands for execution and that this action will
795bd8deadSopenharmony_ci    result in their completion in finite time.
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci    This behavior has subtle consequences. For example, if an application is
825bd8deadSopenharmony_ci    rendering to the front buffer and switches contexts, it may assume that
835bd8deadSopenharmony_ci    any rendering performed thus far will eventually be visible to the user.
845bd8deadSopenharmony_ci    With recent introduction of shared memory buffers, there become inumerable
855bd8deadSopenharmony_ci    ways in which applications may observe side effects of an implicit flush
865bd8deadSopenharmony_ci    (or lack thereof).
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci    In general, a full flush is not the desired behavior of the application.
895bd8deadSopenharmony_ci    Nonetheless, applications that switch contexts frequently suffer the
905bd8deadSopenharmony_ci    performance consequences of this unless implementations make special
915bd8deadSopenharmony_ci    considerations for them, which is generally untenable.
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ci    The EGL, GLX, and WGL extensions add new context creation parameters
945bd8deadSopenharmony_ci    that allow an application to specify the behavior that is desired when a
955bd8deadSopenharmony_ci    context is made non-current, and specifically to opt out of the implicit
965bd8deadSopenharmony_ci    flush behavior. The GL extension allows querying the context flush
975bd8deadSopenharmony_ci    behavior.
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ciNew Procedures and Functions
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ci    None.
1025bd8deadSopenharmony_ci
1035bd8deadSopenharmony_ciNew Tokens (GL)
1045bd8deadSopenharmony_ci
1055bd8deadSopenharmony_ci    NOTE: when implemented in an OpenGL ES context, all tokens defined by
1065bd8deadSopenharmony_ci    this extension must have a "_KHR" suffix. When implemented in an OpenGL
1075bd8deadSopenharmony_ci    context, all tokens must have NO suffix, as described below.
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetIntegerv, GetFloatv, GetBooleanv
1105bd8deadSopenharmony_ci    GetDoublev and GetInteger64v:
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci        GL_CONTEXT_RELEASE_BEHAVIOR                         0x82FB
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ci    Returned in <data> by GetIntegerv, GetFloatv, GetBooleanv
1155bd8deadSopenharmony_ci    GetDoublev and GetInteger64v when <pname> is
1165bd8deadSopenharmony_ci    GL_CONTEXT_RELEASE_BEHAVIOR:
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci        GL_NONE                                             0x0000
1195bd8deadSopenharmony_ci        GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH                   0x82FC
1205bd8deadSopenharmony_ci
1215bd8deadSopenharmony_ciNew Tokens (EGL)
1225bd8deadSopenharmony_ci
1235bd8deadSopenharmony_ci    Accepted as an attribute name in the <*attrib_list> argument to
1245bd8deadSopenharmony_ci    eglCreateContext:
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ci        EGL_CONTEXT_RELEASE_BEHAVIOR_KHR                    0x2097
1275bd8deadSopenharmony_ci
1285bd8deadSopenharmony_ci    Accepted as an attribute value for EGL_CONTEXT_RELEASE_BEHAVIOR_KHR in
1295bd8deadSopenharmony_ci    the <*attrib_list> argument to eglCreateContext:
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ci        EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR               0x0000
1325bd8deadSopenharmony_ci        EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR              0x2098
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ciNew Tokens (GLX)
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ci    Accepted as an attribute name in the <*attrib_list> argument to
1375bd8deadSopenharmony_ci    glXCreateContextAttribsARB:
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci        GLX_CONTEXT_RELEASE_BEHAVIOR_ARB                    0x2097
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci    Accepted as an attribute value for GLX_CONTEXT_RELEASE_BEHAVIOR_ARB in
1425bd8deadSopenharmony_ci    the <*attrib_list> argument to glXCreateContextAttribsARB:
1435bd8deadSopenharmony_ci
1445bd8deadSopenharmony_ci        GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB               0x0000
1455bd8deadSopenharmony_ci        GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB              0x2098
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ciNew Tokens (WGL)
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci    Accepted as an attribute name in the <*attrib_list> argument to
1505bd8deadSopenharmony_ci    wglCreateContextAttribsARB:
1515bd8deadSopenharmony_ci
1525bd8deadSopenharmony_ci        WGL_CONTEXT_RELEASE_BEHAVIOR_ARB                    0x2097
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ci    Accepted as an attribute value for WGL_CONTEXT_RELEASE_BEHAVIOR_ARB in
1555bd8deadSopenharmony_ci    the <*attrib_list> argument to wglCreateContextAttribsARB:
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci        WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB               0x0000
1585bd8deadSopenharmony_ci        WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB              0x2098
1595bd8deadSopenharmony_ci
1605bd8deadSopenharmony_ciAdditions to Chapter 22 of the OpenGL 4.4 Core Pofile Specification (Context
1615bd8deadSopenharmony_ciState Queries)
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    In Subsection 22.2, "String Queries", after the description of
1645bd8deadSopenharmony_ci    CONTEXT_FLAGS, insert the following:
1655bd8deadSopenharmony_ci
1665bd8deadSopenharmony_ci    The behavior of the context when it is made no longer current (released)
1675bd8deadSopenharmony_ci    by the platform binding may be queried by calling GetIntegerv with
1685bd8deadSopenharmony_ci    <value> CONTEXT_RELEASE_BEHAVIOR. If the behavior is
1695bd8deadSopenharmony_ci    CONTEXT_RELEASE_BEHAVIOR_FLUSH, any pending commands on the context will
1705bd8deadSopenharmony_ci    be flushed. If the behavior is NONE, pending commands are not flushed.
1715bd8deadSopenharmony_ci
1725bd8deadSopenharmony_ci    The default value is CONTEXT_RELEASE_BEHAVIOR_FLUSH, and may in some
1735bd8deadSopenharmony_ci    cases be changed using platform-specific context creation extensions.
1745bd8deadSopenharmony_ci
1755bd8deadSopenharmony_ci
1765bd8deadSopenharmony_ciAdditions to the EGL 1.5 Specification
1775bd8deadSopenharmony_ci
1785bd8deadSopenharmony_ci    Add a new subsection to the description of eglCreateContext,
1795bd8deadSopenharmony_ci    following section 3.7.1.6 "OpenGL and OpenGL ES Reset Notification
1805bd8deadSopenharmony_ci    Strategy":
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ci   "3.7.1.7 OpenGL and OpenGL ES Context Flush Behavior
1835bd8deadSopenharmony_ci
1845bd8deadSopenharmony_ci    The attribute name EGL_CONTEXT_RELEASE_BEHAVIOR_KHR specifies the
1855bd8deadSopenharmony_ci    behavior of the rendering context when it is made non-current, as
1865bd8deadSopenharmony_ci    described in section 3.7.3. The attribute value may be one of
1875bd8deadSopenharmony_ci    EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR or
1885bd8deadSopenharmony_ci    EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR. The default value is
1895bd8deadSopenharmony_ci    EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR."
1905bd8deadSopenharmony_ci
1915bd8deadSopenharmony_ci
1925bd8deadSopenharmony_ci    Modify section 3.7.3 "Binding Contexts and Drawables", on p. 58:
1935bd8deadSopenharmony_ci
1945bd8deadSopenharmony_ci    Replace the fourth paragraph in the description of eglMakeCurrent,
1955bd8deadSopenharmony_ci    starting "If the calling thread already has a current context...":
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci   "If the calling thread already has a current context of the same
1985bd8deadSopenharmony_ci    client API type as <ctx>, behavior is determined as follows:
1995bd8deadSopenharmony_ci
2005bd8deadSopenharmony_ci    The current context is flushed if any of the following conditions
2015bd8deadSopenharmony_ci    are true:
2025bd8deadSopenharmony_ci
2035bd8deadSopenharmony_ci    - The client API type of the current context is not OpenGL or OpenGL
2045bd8deadSopenharmony_ci      ES;
2055bd8deadSopenharmony_ci    - The client API type of the current context is OpenGL or OpenGL ES,
2065bd8deadSopenharmony_ci      and the context does not support the GL_KHR_context_flush_control
2075bd8deadSopenharmony_ci      extension
2085bd8deadSopenharmony_ci    - The client API type of the current context is OpenGL or OpenGL ES,
2095bd8deadSopenharmony_ci      the context supports the GL_KHR_context_flush_control extension,
2105bd8deadSopenharmony_ci      and the <release behavior> (the value of the
2115bd8deadSopenharmony_ci      EGL_CONTEXT_RELEASE_BEHAVIOR_KHR parameter) of the current context
2125bd8deadSopenharmony_ci      is EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR.
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ci    The only remaining case is treated differently. In this case, the client
2155bd8deadSopenharmony_ci    API type of the current context must be OpenGL or OpenGL ES; the context
2165bd8deadSopenharmony_ci    must support the GL_KHR_context_flush_control extension; and the release
2175bd8deadSopenharmony_ci    behavior must be EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR. In this case no
2185bd8deadSopenharmony_ci    action is taken, and it is as if the application simply stops making GL
2195bd8deadSopenharmony_ci    commands on the current context.
2205bd8deadSopenharmony_ci
2215bd8deadSopenharmony_ci    After flushing (if appropriate) is performed, the current context is
2225bd8deadSopenharmony_ci    marked as no longer current. <ctx> is then made the current context
2235bd8deadSopenharmony_ci    for the calling thread. For purposes of ..."
2245bd8deadSopenharmony_ci
2255bd8deadSopenharmony_ci
2265bd8deadSopenharmony_ciAdditions to WGL_ARB_create_context and wglMakeCurrent
2275bd8deadSopenharmony_ci
2285bd8deadSopenharmony_ci    Add a new paragraph to the description of wglCreateContextAttribsARB, as
2295bd8deadSopenharmony_ci    defined by WGL_ARB_create_context:
2305bd8deadSopenharmony_ci
2315bd8deadSopenharmony_ci    "The attribute name WGL_MAKE_NON_CONTEXT_BEHAVIOR_ARB specifies the
2325bd8deadSopenharmony_ci    behavior of the rendering context when it is made non-current. The
2335bd8deadSopenharmony_ci    attribute value may be one of WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB or
2345bd8deadSopenharmony_ci    WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB. The default value of
2355bd8deadSopenharmony_ci    WGL_MAKE_NON_CONTEXT_BEHAVIOR_ARB is
2365bd8deadSopenharmony_ci    WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB."
2375bd8deadSopenharmony_ci
2385bd8deadSopenharmony_ci    Define flushing behavior for wglMakeCurrent (there is no WGL
2395bd8deadSopenharmony_ci    specification; this language replaces the sentence "Before switching to
2405bd8deadSopenharmony_ci    the new rendering context, OpenGL flushes any previous rendering context
2415bd8deadSopenharmony_ci    that was current to the calling thread." in the Microsoft wglMakeCurrent
2425bd8deadSopenharmony_ci    reference page):
2435bd8deadSopenharmony_ci
2445bd8deadSopenharmony_ci    "If the calling thread already has a current rendering context, behavior
2455bd8deadSopenharmony_ci    is determined by the <release behavior> (the value of the
2465bd8deadSopenharmony_ci    WGL_CONTEXT_RELEASE_BEHAVIOR_ARB parameter) of the current context. If
2475bd8deadSopenharmony_ci    the release behavior is WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB, pending
2485bd8deadSopenharmony_ci    commands to the previous context are flushed; if the release behavior is
2495bd8deadSopenharmony_ci    WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB, then no action is taken, and it
2505bd8deadSopenharmony_ci    is as if the application simply stops making GL commands on that
2515bd8deadSopenharmony_ci    context. That context is marked as no longer current, and <ctx> is made
2525bd8deadSopenharmony_ci    the current context for the calling thread."
2535bd8deadSopenharmony_ci
2545bd8deadSopenharmony_ciAdditions to the GLX 1.4 Specification and GLX_ARB_create_context
2555bd8deadSopenharmony_ci
2565bd8deadSopenharmony_ci    Add a new paragraph to the description of glXCreateContextAttribsARB,
2575bd8deadSopenharmony_ci    as defined by GLX_ARB_create_context:
2585bd8deadSopenharmony_ci
2595bd8deadSopenharmony_ci    "The attribute name GLX_CONTEXT_RELEASE_BEHAVIOR_ARB specifies the
2605bd8deadSopenharmony_ci    behavior of the rendering context when it is made non-current. The
2615bd8deadSopenharmony_ci    attribute value may be one of GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB or
2625bd8deadSopenharmony_ci    GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB. The default value of
2635bd8deadSopenharmony_ci    GLX_CONTEXT_RELEASE_BEHAVIOR_ARB is GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB."
2645bd8deadSopenharmony_ci
2655bd8deadSopenharmony_ci    Modify section 3.3.7 "Rendering Contexts" on p. 27:
2665bd8deadSopenharmony_ci
2675bd8deadSopenharmony_ci    Replace the third paragraph in the description of glXMakeContextCurrent,
2685bd8deadSopenharmony_ci    starting "If the calling thread already has a current rendering
2695bd8deadSopenharmony_ci    context...":
2705bd8deadSopenharmony_ci
2715bd8deadSopenharmony_ci    "If the calling thread already has a current rendering context, behavior
2725bd8deadSopenharmony_ci    is determined by the <release behavior> (the value of the
2735bd8deadSopenharmony_ci    GLX_CONTEXT_RELEASE_BEHAVIOR_ARB parameter) of the current context. If
2745bd8deadSopenharmony_ci    the release behavior is GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB, pending
2755bd8deadSopenharmony_ci    commands to the previous context are flushed; if the release behavior is
2765bd8deadSopenharmony_ci    GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB, then no action is taken, and it
2775bd8deadSopenharmony_ci    is as if the application simply stops making GL commands on that
2785bd8deadSopenharmony_ci    context. That context is marked as no longer current, and <ctx> is made
2795bd8deadSopenharmony_ci    the current context for the calling thread."
2805bd8deadSopenharmony_ci
2815bd8deadSopenharmony_ci
2825bd8deadSopenharmony_ciGLX Protocol
2835bd8deadSopenharmony_ci
2845bd8deadSopenharmony_ci    TBD.
2855bd8deadSopenharmony_ci
2865bd8deadSopenharmony_ciErrors
2875bd8deadSopenharmony_ci
2885bd8deadSopenharmony_ci    The errors defined for eglCreateContext, glXCreateContextAttribsARB, and
2895bd8deadSopenharmony_ci    wglCreateContextAttribsARB already describe the situations where invalid
2905bd8deadSopenharmony_ci    attribute values for the context release behavior are specified, and
2915bd8deadSopenharmony_ci    where no context can be created satisfying the specified behavior, so no
2925bd8deadSopenharmony_ci    new errors are added.
2935bd8deadSopenharmony_ci
2945bd8deadSopenharmony_ciNew State
2955bd8deadSopenharmony_ci
2965bd8deadSopenharmony_ci    None.
2975bd8deadSopenharmony_ci
2985bd8deadSopenharmony_ciNew Implementation Dependent State
2995bd8deadSopenharmony_ci
3005bd8deadSopenharmony_ci    Append to Table 23.54, "Implementation Dependent State" of the OpenGL 4.4 Specification:
3015bd8deadSopenharmony_ci
3025bd8deadSopenharmony_ci    +-------------------------------+-------+--------------------+------------------------------------------+------------------------------------+---------+
3035bd8deadSopenharmony_ci    | Get Value                     | Type  | Get Command        | Initial Value                            | Description                        | Sec.    |
3045bd8deadSopenharmony_ci    +-------------------------------+-------+--------------------+------------------------------------------+------------------------------------+---------+
3055bd8deadSopenharmony_ci    | CONTEXT_RELEASE_BEHAVIOR      | E     | GetIntegerv        | See sec. 2.22                            | Specifies flush behavior when      | 22.2    |
3065bd8deadSopenharmony_ci    |                               |       |                    |                                          | the context is released.           |         |
3075bd8deadSopenharmony_ci    +-------------------------------+-------+--------------------+------------------------------------------+------------------------------------+---------+
3085bd8deadSopenharmony_ci
3095bd8deadSopenharmony_ciUsage Examples
3105bd8deadSopenharmony_ci
3115bd8deadSopenharmony_ci    TBD
3125bd8deadSopenharmony_ci
3135bd8deadSopenharmony_ciIssues
3145bd8deadSopenharmony_ci
3155bd8deadSopenharmony_ci    1) What happens when you switch between contexts that have the new
3165bd8deadSopenharmony_ci       CONTEXT_RELEASE_BEHAVIOR_NONE behavior?
3175bd8deadSopenharmony_ci
3185bd8deadSopenharmony_ci       Nothing. It is as if the thread simply stopped calling functions on
3195bd8deadSopenharmony_ci       one context and started calling functions on another. If, for
3205bd8deadSopenharmony_ci       example, an application is rendering to multiple windows or multiple
3215bd8deadSopenharmony_ci       framebuffer objects, it may not care what order commands are executed
3225bd8deadSopenharmony_ci       across the contexts. This extension allows the application to rapidly
3235bd8deadSopenharmony_ci       switch between contexts that may or may not share objects without any
3245bd8deadSopenharmony_ci       implied flushes.
3255bd8deadSopenharmony_ci
3265bd8deadSopenharmony_ci    2) Does this extension affect or change sharing semantics?
3275bd8deadSopenharmony_ci
3285bd8deadSopenharmony_ci       RESOLVED: No. There is no intention to do so. From the client's
3295bd8deadSopenharmony_ci       perspective, at least, changes made to objects on one context should
3305bd8deadSopenharmony_ci       be visible to other contexts whenever they would have before.
3315bd8deadSopenharmony_ci       However, there may be some subtle interaction here that we haven't
3325bd8deadSopenharmony_ci       thought of yet.
3335bd8deadSopenharmony_ci
3345bd8deadSopenharmony_ci    3) Do we need to be able to query the context behavior?
3355bd8deadSopenharmony_ci
3365bd8deadSopenharmony_ci       RESOLVED. Yes. Added a state query for GL_CONTEXT_RELEASE_BEHAVIOR.
3375bd8deadSopenharmony_ci
3385bd8deadSopenharmony_ci    4) Should EGL/GLX/WGL/GL enum values for similar tokens be shared?
3395bd8deadSopenharmony_ci
3405bd8deadSopenharmony_ci       RESOLVED: the developing tradition is for window system binding enums
3415bd8deadSopenharmony_ci       for context creation to share the same values, but GL to have its own
3425bd8deadSopenharmony_ci       values lying in the traditional GL enum ranges.
3435bd8deadSopenharmony_ci
3445bd8deadSopenharmony_ci    5) Should there be a GL extension string corresponding to
3455bd8deadSopenharmony_ci       the window system binding extension strings?
3465bd8deadSopenharmony_ci
3475bd8deadSopenharmony_ci       RESOLVED: Yes. This is how we've always done it. Added
3485bd8deadSopenharmony_ci       GL_KHR_context_flush_control to Name Strings in revision 3.
3495bd8deadSopenharmony_ci
3505bd8deadSopenharmony_ci    6) Should there be an EGL equivalent of this functionality? Should the
3515bd8deadSopenharmony_ci       GL extension be KHR or ARB?
3525bd8deadSopenharmony_ci
3535bd8deadSopenharmony_ci       RESOLVED: Yes, there should be an EGL extension, but it will be
3545bd8deadSopenharmony_ci       approved on a different schedule by EGL and GL WGs. The GL extension
3555bd8deadSopenharmony_ci       should be KHR, since ES is also interested in this functionality.
3565bd8deadSopenharmony_ci
3575bd8deadSopenharmony_ci    7) When the release behavior of an OpenGL compatibility profile context
3585bd8deadSopenharmony_ci       or an OpenGL ES 1.x context is to not flush, should it be possible to
3595bd8deadSopenharmony_ci       make a context non-current within a glBegin/glEnd pair?
3605bd8deadSopenharmony_ci
3615bd8deadSopenharmony_ci       RESOLVED: No. Only GLX (not EGL or WGL) specifies this constraint,
3625bd8deadSopenharmony_ci       and hypothetical immediate-mode paths would have difficulty
3635bd8deadSopenharmony_ci       supporting MakeCurrent between Begin and End whether or not a flush
3645bd8deadSopenharmony_ci       is done.
3655bd8deadSopenharmony_ci
3665bd8deadSopenharmony_ci
3675bd8deadSopenharmony_ciRevision History
3685bd8deadSopenharmony_ci
3695bd8deadSopenharmony_ci Rev.   Date     Author    Changes
3705bd8deadSopenharmony_ci ---- ---------  --------  ---------------------------------------------
3715bd8deadSopenharmony_ci   8  9/28/2016  Jon Leech Merge EGL_KHR_context_flush_control language,
3725bd8deadSopenharmony_ci                           which was ratified more than two years ago but
3735bd8deadSopenharmony_ci                           which we forgot to post until now.
3745bd8deadSopenharmony_ci   7  8/11/2014  Jon Leech Add issue 7, minor wording tweaks to include
3755bd8deadSopenharmony_ci                           GL and ES as peer APIs.
3765bd8deadSopenharmony_ci   6  8/06/2014  Jon Leech Change GL extension to KHR instead of ARB.
3775bd8deadSopenharmony_ci   5  6/26/2014  Jon Leech Remove ARB suffixes from GL tokens (only, Bug
3785bd8deadSopenharmony_ci                           12299) and clarify the initial value of the
3795bd8deadSopenharmony_ci                           GL flush behavior query.
3805bd8deadSopenharmony_ci   4  6/25/2014  Jon Leech Rewrite spec changes to be against the actual
3815bd8deadSopenharmony_ci                           GLX/WGL API and extension specification
3825bd8deadSopenharmony_ci                           documents, where possible.
3835bd8deadSopenharmony_ci   3  6/24/2014  Jon Leech Assign enum values, add issues 4/5.
3845bd8deadSopenharmony_ci   2  6/05/2014  gsellers  Add state query for retrieving context behavior.
3855bd8deadSopenharmony_ci                           Rename "lose-context" to "context release". This
3865bd8deadSopenharmony_ci                           is the terminology in the existing GLX spec. The
3875bd8deadSopenharmony_ci                           WGL spec doesn't appear to use a concrete term.
3885bd8deadSopenharmony_ci                           Update state table.
3895bd8deadSopenharmony_ci                           Renumbered issues to be contiguous.
3905bd8deadSopenharmony_ci   1  4/17/2014  gsellers  Initial revision based on earlier extension.
391