• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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