| Name |
| |
| WGL_EXT_create_context_es_profile |
| WGL_EXT_create_context_es2_profile |
| |
| Name Strings |
| |
| WGL_EXT_create_context_es_profile |
| WGL_EXT_create_context_es2_profile |
| |
| NOTE: implementations of this extension must export BOTH extension |
| strings, for backwards compatibility with applications written |
| against version 1 of this extension. |
| |
| Contact |
| |
| Jon Leech (jon 'at' alumni.caltech.edu) |
| Piers Daniell (pdaniell 'at' nvidia.com) |
| |
| IP Status |
| |
| No known IP claims. |
| |
| Status |
| |
| Complete. |
| |
| Version |
| |
| Version 5, April 6, 2012 |
| |
| Number |
| |
| 400 |
| |
| Dependencies |
| |
| WGL_ARB_extensions_string is required. |
| |
| WGL_ARB_create_context is required. |
| |
| WGL_ARB_create_context_profile is required. |
| |
| An OpenGL ES implementation is required. |
| |
| Overview |
| |
| This extension allows creating an OpenGL ES context. |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted as a bit in the attribute value for |
| WGL_CONTEXT_PROFILE_MASK_ARB in <*attribList>: |
| |
| WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004 |
| WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 |
| |
| Additions to the OpenGL / GLX / GLX Protocol Specificaitons |
| |
| None. This specification is written for WGL. |
| |
| Additions to the WGL specification |
| |
| This extension modifies language specified in the |
| WGL_ARB_create_context and WGL_ARB_create_context_profile |
| extensions. |
| |
| In the description of wglCreateContextAttribsARB, replace the |
| sentence |
| |
| "... If a version less than or equal to 3.0 is requested, the context |
| returned may implement any of the following versions:" |
| |
| with |
| |
| "... If the version requested is a valid and supported OpenGL-ES version, |
| and the WGL_CONTEXT_ES_PROFILE_BIT_EXT bit is set in the |
| WGL_CONTEXT_PROFILE_MASK_ARB attribute (see below), then the context |
| returned will implement the OpenGL ES version requested. |
| |
| Otherwise, if a version less than or equal to 3.0 is requested, the |
| context returned may implement any of the following versions:" |
| |
| |
| Replace the sentence |
| |
| "... If the requested OpenGL version is less than 3.2, |
| WGL_CONTEXT_PROFILE_MASK_ARB is ignored and the functionality of the |
| context is determined solely by the requested version." |
| |
| with |
| |
| "... If the WGL_CONTEXT_ES_PROFILE_BIT_EXT bit is set, and the |
| requested version is a valid and supported OpenGL-ES implementation, |
| then a context implementing that OpenGL ES version is returned; |
| otherwise, if the requested OpenGL version is less than |
| 3.2, WGL_CONTEXT_PROFILE_MASK_ARB is ignored and the functionality |
| of the context is determined solely by the requested version." |
| |
| Add prior to the sentence |
| |
| "The attribute name WGL_CONTEXT_FLAGS_ARB specifies a set of flag |
| bits affecting the rendering context.": |
| |
| "If an OpenGL ES profile is requested, then the context returned |
| cannot implement additional functionality, including functionality |
| defined only by the core or compatibility profiles, unless such |
| functionality is defined by extensions that are themselves specified |
| relative to that specific OpenGL ES version[*]. |
| [*] Such functionality should have a corresponding extension |
| specification in the OpenGL ES Registry. In some |
| implementations, vendor extensions defined relative to the OpenGL ES |
| version, but not yet added to the OpenGL ES Registry, may also be |
| supported." |
| |
| Replace the bullet point starting "* If attribute |
| WGL_CONTEXT_PROFILE_MASK_ARB has no bits set;..." with |
| |
| "* If attribute WGL_CONTEXT_PROFILE_MASK_ARB has no bits set; has any |
| bits set other than WGL_CONTEXT_CORE_PROFILE_BIT_ARB, |
| WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB, or |
| WGL_CONTEXT_ES_PROFILE_BIT_EXT; has more than one of these bits |
| set; or if the implementation does not supported the requested |
| profile, then ERROR_INVALID_PROFILE_ARB is generated." |
| |
| Dependencies on WGL_ARB_extensions_string |
| |
| Because there is no way to extend WGL, these calls are defined in |
| the ICD and can be called by obtaining the address with |
| wglGetProcAddress. Because this extension is a WGL extension, it is |
| not included in the GL_EXTENSIONS string. Its existence can be |
| determined with the WGL_ARB_extensions_string extension. |
| |
| Errors |
| |
| ERROR_INVALID_PROFILE_ARB is generated if the value of |
| WGL_CONTEXT_PROFILE_MASK_ARB contains more than a single valid |
| profile bit. |
| |
| New State |
| |
| None |
| |
| New Implementation Dependent State |
| |
| None |
| |
| Conformance Tests |
| |
| TBD |
| |
| Sample Code |
| |
| TBD |
| |
| Issues |
| |
| 1) How is an OpenGL ES 2.0 "profile" defined in a desktop OpenGL |
| implementation? |
| |
| OpenGL ES 2.0 is essentially a stripped-down version of OpenGL 2.0 |
| with a few added features, so it is natural to consider it a profile |
| of OpenGL 2.0. This is potentially confusing, in that the API |
| profile mechanism was not introduced until OpenGL 3.2. However, the |
| extended context creation mechanism operates outside the scope of a |
| GL context, and we can define the meaning of "version 2.0, profile |
| ES2" to be an OpenGL ES 2.0 context. |
| |
| 2) May an OpenGL ES 2.0 "profile" include OpenGL functionality |
| introduced by OpenGL 2.1 and later versions? |
| |
| PROPOSED: NO, except in the form of extensions that are themselves |
| defined relative to OpenGL ES 2.0. This restriction is intended to |
| make it difficult to create ill-defined conglomerations of OpenGL ES |
| and OpenGL features and to eliminate subjective interpretations of |
| what it means to subset a GL extension for implementation against |
| OpenGL ES. |
| |
| If features specific to OpenGL ES 2.0 are required together with |
| features from recent versions of OpenGL, a different mechanism, such |
| as an OpenGL extension defining those OpenGL ES 2.0 features, may be |
| appropriate. |
| |
| 3) Is implementation of an OpenGL ES 2.0 profile mandatory for a |
| desktop OpenGL implementation? |
| |
| RESOLVED: NO. The ARB considered making support for an ES 2.0 |
| profile mandatory for an OpenGL 4.1 implementation, but decided |
| against it. Most ARB members would prefer that people use EGL to |
| access OpenGL ES 2.0, whether on the desktop or on mobile devices. |
| |
| 4) Do we need a GL_CONTEXT_ES2_PROFILE_BIT_EXT token? |
| |
| RESOLVED: NO. The GL_CONTEXT_PROFILE_MASK query only exists in |
| desktop GL, while creating an ES2 "profile" results in an OpenGL ES |
| 2.0 context, which does not have the query. Therefore at present, |
| it's not possible to ever return this bit from the query and it is |
| not needed. |
| |
| If, in the future, ES and GL are unified under the profile mechanism |
| such that there is an actual "embedded" profile of GL, then this |
| resolution may need to change. |
| |
| 5) Do we need a new extension and new profile bit for every different |
| version of OpenGL-ES the desktop OpenGL implementation wants to |
| support? |
| |
| RESOLVED: No. This extension has been modified since version #3 to |
| support and requested version of OpenGL-ES that is supported by |
| the desktop OpenGL implementation. This can include more than just |
| OpenGL-ES 2.0 that was originally specified. |
| |
| The name string has been generalized from "es2_profile" to |
| "es_profile" for future use, but for backwards compatibility with |
| applications expecting the initial name string, implementations are |
| required to export both name strings. |
| |
| Revision History |
| |
| Version 5, 2012/04/06 - Specify that both name strings must be |
| exported for backwards compatibility and expand issue 5 |
| accordingly. |
| |
| Version 4, 2012/03/28 - Add support for any OpenGL-ES version, not just |
| version 2.0. Alias WGL_CONTEXT_ES2_PROFILE_BIT_EXT with |
| WGL_CONTEXT_ES_PROFILE_BIT_EXT and the extension name |
| WGL_EXT_create_context_es2_profile with |
| WGL_EXT_create_context_es_profile. Added issue 5. |
| |
| Version 3, 2010/08/09 - Added issue 4 resolution. |
| |
| Version 2, 2010/08/04 - Fix typos and assign extension number. |
| |
| Version 1, 2010/05/18 - Recast the OpenGL ES 2.0 "profile" mechanism |
| into a separate EXT layered on the ARB profiled context creation |
| mechanism. |