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