1Name 2 3 WGL_EXT_create_context_es_profile 4 WGL_EXT_create_context_es2_profile 5 6Name Strings 7 8 WGL_EXT_create_context_es_profile 9 WGL_EXT_create_context_es2_profile 10 11 NOTE: implementations of this extension must export BOTH extension 12 strings, for backwards compatibility with applications written 13 against version 1 of this extension. 14 15Contact 16 17 Jon Leech (jon 'at' alumni.caltech.edu) 18 Piers Daniell (pdaniell 'at' nvidia.com) 19 20IP Status 21 22 No known IP claims. 23 24Status 25 26 Complete. 27 28Version 29 30 Version 5, April 6, 2012 31 32Number 33 34 400 35 36Dependencies 37 38 WGL_ARB_extensions_string is required. 39 40 WGL_ARB_create_context is required. 41 42 WGL_ARB_create_context_profile is required. 43 44 An OpenGL ES implementation is required. 45 46Overview 47 48 This extension allows creating an OpenGL ES context. 49 50New Procedures and Functions 51 52 None 53 54New Tokens 55 56 Accepted as a bit in the attribute value for 57 WGL_CONTEXT_PROFILE_MASK_ARB in <*attribList>: 58 59 WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004 60 WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 61 62Additions to the OpenGL / GLX / GLX Protocol Specificaitons 63 64 None. This specification is written for WGL. 65 66Additions to the WGL specification 67 68 This extension modifies language specified in the 69 WGL_ARB_create_context and WGL_ARB_create_context_profile 70 extensions. 71 72 In the description of wglCreateContextAttribsARB, replace the 73 sentence 74 75 "... If a version less than or equal to 3.0 is requested, the context 76 returned may implement any of the following versions:" 77 78 with 79 80 "... If the version requested is a valid and supported OpenGL-ES version, 81 and the WGL_CONTEXT_ES_PROFILE_BIT_EXT bit is set in the 82 WGL_CONTEXT_PROFILE_MASK_ARB attribute (see below), then the context 83 returned will implement the OpenGL ES version requested. 84 85 Otherwise, if a version less than or equal to 3.0 is requested, the 86 context returned may implement any of the following versions:" 87 88 89 Replace the sentence 90 91 "... If the requested OpenGL version is less than 3.2, 92 WGL_CONTEXT_PROFILE_MASK_ARB is ignored and the functionality of the 93 context is determined solely by the requested version." 94 95 with 96 97 "... If the WGL_CONTEXT_ES_PROFILE_BIT_EXT bit is set, and the 98 requested version is a valid and supported OpenGL-ES implementation, 99 then a context implementing that OpenGL ES version is returned; 100 otherwise, if the requested OpenGL version is less than 101 3.2, WGL_CONTEXT_PROFILE_MASK_ARB is ignored and the functionality 102 of the context is determined solely by the requested version." 103 104 Add prior to the sentence 105 106 "The attribute name WGL_CONTEXT_FLAGS_ARB specifies a set of flag 107 bits affecting the rendering context.": 108 109 "If an OpenGL ES profile is requested, then the context returned 110 cannot implement additional functionality, including functionality 111 defined only by the core or compatibility profiles, unless such 112 functionality is defined by extensions that are themselves specified 113 relative to that specific OpenGL ES version[*]. 114 [*] Such functionality should have a corresponding extension 115 specification in the OpenGL ES Registry. In some 116 implementations, vendor extensions defined relative to the OpenGL ES 117 version, but not yet added to the OpenGL ES Registry, may also be 118 supported." 119 120 Replace the bullet point starting "* If attribute 121 WGL_CONTEXT_PROFILE_MASK_ARB has no bits set;..." with 122 123 "* If attribute WGL_CONTEXT_PROFILE_MASK_ARB has no bits set; has any 124 bits set other than WGL_CONTEXT_CORE_PROFILE_BIT_ARB, 125 WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB, or 126 WGL_CONTEXT_ES_PROFILE_BIT_EXT; has more than one of these bits 127 set; or if the implementation does not supported the requested 128 profile, then ERROR_INVALID_PROFILE_ARB is generated." 129 130Dependencies on WGL_ARB_extensions_string 131 132 Because there is no way to extend WGL, these calls are defined in 133 the ICD and can be called by obtaining the address with 134 wglGetProcAddress. Because this extension is a WGL extension, it is 135 not included in the GL_EXTENSIONS string. Its existence can be 136 determined with the WGL_ARB_extensions_string extension. 137 138Errors 139 140 ERROR_INVALID_PROFILE_ARB is generated if the value of 141 WGL_CONTEXT_PROFILE_MASK_ARB contains more than a single valid 142 profile bit. 143 144New State 145 146 None 147 148New Implementation Dependent State 149 150 None 151 152Conformance Tests 153 154 TBD 155 156Sample Code 157 158 TBD 159 160Issues 161 162 1) How is an OpenGL ES 2.0 "profile" defined in a desktop OpenGL 163 implementation? 164 165 OpenGL ES 2.0 is essentially a stripped-down version of OpenGL 2.0 166 with a few added features, so it is natural to consider it a profile 167 of OpenGL 2.0. This is potentially confusing, in that the API 168 profile mechanism was not introduced until OpenGL 3.2. However, the 169 extended context creation mechanism operates outside the scope of a 170 GL context, and we can define the meaning of "version 2.0, profile 171 ES2" to be an OpenGL ES 2.0 context. 172 173 2) May an OpenGL ES 2.0 "profile" include OpenGL functionality 174 introduced by OpenGL 2.1 and later versions? 175 176 PROPOSED: NO, except in the form of extensions that are themselves 177 defined relative to OpenGL ES 2.0. This restriction is intended to 178 make it difficult to create ill-defined conglomerations of OpenGL ES 179 and OpenGL features and to eliminate subjective interpretations of 180 what it means to subset a GL extension for implementation against 181 OpenGL ES. 182 183 If features specific to OpenGL ES 2.0 are required together with 184 features from recent versions of OpenGL, a different mechanism, such 185 as an OpenGL extension defining those OpenGL ES 2.0 features, may be 186 appropriate. 187 188 3) Is implementation of an OpenGL ES 2.0 profile mandatory for a 189 desktop OpenGL implementation? 190 191 RESOLVED: NO. The ARB considered making support for an ES 2.0 192 profile mandatory for an OpenGL 4.1 implementation, but decided 193 against it. Most ARB members would prefer that people use EGL to 194 access OpenGL ES 2.0, whether on the desktop or on mobile devices. 195 196 4) Do we need a GL_CONTEXT_ES2_PROFILE_BIT_EXT token? 197 198 RESOLVED: NO. The GL_CONTEXT_PROFILE_MASK query only exists in 199 desktop GL, while creating an ES2 "profile" results in an OpenGL ES 200 2.0 context, which does not have the query. Therefore at present, 201 it's not possible to ever return this bit from the query and it is 202 not needed. 203 204 If, in the future, ES and GL are unified under the profile mechanism 205 such that there is an actual "embedded" profile of GL, then this 206 resolution may need to change. 207 2085) Do we need a new extension and new profile bit for every different 209 version of OpenGL-ES the desktop OpenGL implementation wants to 210 support? 211 212 RESOLVED: No. This extension has been modified since version #3 to 213 support and requested version of OpenGL-ES that is supported by 214 the desktop OpenGL implementation. This can include more than just 215 OpenGL-ES 2.0 that was originally specified. 216 217 The name string has been generalized from "es2_profile" to 218 "es_profile" for future use, but for backwards compatibility with 219 applications expecting the initial name string, implementations are 220 required to export both name strings. 221 222Revision History 223 224 Version 5, 2012/04/06 - Specify that both name strings must be 225 exported for backwards compatibility and expand issue 5 226 accordingly. 227 228 Version 4, 2012/03/28 - Add support for any OpenGL-ES version, not just 229 version 2.0. Alias WGL_CONTEXT_ES2_PROFILE_BIT_EXT with 230 WGL_CONTEXT_ES_PROFILE_BIT_EXT and the extension name 231 WGL_EXT_create_context_es2_profile with 232 WGL_EXT_create_context_es_profile. Added issue 5. 233 234 Version 3, 2010/08/09 - Added issue 4 resolution. 235 236 Version 2, 2010/08/04 - Fix typos and assign extension number. 237 238 Version 1, 2010/05/18 - Recast the OpenGL ES 2.0 "profile" mechanism 239 into a separate EXT layered on the ARB profiled context creation 240 mechanism. 241