102f4aeb0Sopenharmony_ciName 202f4aeb0Sopenharmony_ci 302f4aeb0Sopenharmony_ci KHR_create_context 402f4aeb0Sopenharmony_ci 502f4aeb0Sopenharmony_ciName Strings 602f4aeb0Sopenharmony_ci 702f4aeb0Sopenharmony_ci EGL_KHR_create_context 802f4aeb0Sopenharmony_ci 902f4aeb0Sopenharmony_ciContact 1002f4aeb0Sopenharmony_ci 1102f4aeb0Sopenharmony_ci Jon Leech (jon 'at' alumni.caltech.edu) 1202f4aeb0Sopenharmony_ci 1302f4aeb0Sopenharmony_ciNotice 1402f4aeb0Sopenharmony_ci 1502f4aeb0Sopenharmony_ci Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at 1602f4aeb0Sopenharmony_ci http://www.khronos.org/registry/speccopyright.html 1702f4aeb0Sopenharmony_ci 1802f4aeb0Sopenharmony_ciIP Status 1902f4aeb0Sopenharmony_ci 2002f4aeb0Sopenharmony_ci No known IP claims. 2102f4aeb0Sopenharmony_ci 2202f4aeb0Sopenharmony_ciStatus 2302f4aeb0Sopenharmony_ci 2402f4aeb0Sopenharmony_ci Approved by the Khronos Board of Promoters on February 3, 2012 2502f4aeb0Sopenharmony_ci Updated in version 14 to add ES3 context creation bit - see Issue 8 2602f4aeb0Sopenharmony_ci 2702f4aeb0Sopenharmony_ciVersion 2802f4aeb0Sopenharmony_ci 2902f4aeb0Sopenharmony_ci Version 16, 2015/01/15 3002f4aeb0Sopenharmony_ci 3102f4aeb0Sopenharmony_ciNumber 3202f4aeb0Sopenharmony_ci 3302f4aeb0Sopenharmony_ci EGL Extension #39 3402f4aeb0Sopenharmony_ci 3502f4aeb0Sopenharmony_ciDependencies 3602f4aeb0Sopenharmony_ci 3702f4aeb0Sopenharmony_ci EGL 1.4 is required. 3802f4aeb0Sopenharmony_ci 3902f4aeb0Sopenharmony_ci Some of the capabilities of these extensions are only available when 4002f4aeb0Sopenharmony_ci OpenGL and OpenGL ES contexts supporting specific versions, specific 4102f4aeb0Sopenharmony_ci profiles, or specific extensions can be created. All such restrictions 4202f4aeb0Sopenharmony_ci are documented in the body of this extension specification. 4302f4aeb0Sopenharmony_ci 4402f4aeb0Sopenharmony_ciOverview 4502f4aeb0Sopenharmony_ci 4602f4aeb0Sopenharmony_ci With the advent of new versions of OpenGL which deprecate features 4702f4aeb0Sopenharmony_ci and/or break backward compatibility with older versions, there is a need 4802f4aeb0Sopenharmony_ci and desire to indicate at context creation which interface will be used. 4902f4aeb0Sopenharmony_ci This extension adds a new context creation routine with attributes 5002f4aeb0Sopenharmony_ci specifying the OpenGL version, context properties, and profile requested 5102f4aeb0Sopenharmony_ci for the context. It also allows making an OpenGL 3.0 or later context 5202f4aeb0Sopenharmony_ci (or other client API context supporting the ability) current without 5302f4aeb0Sopenharmony_ci providing a default framebuffer. The new context creation attributes 5402f4aeb0Sopenharmony_ci are also defined to work for OpenGL ES context creation when that 5502f4aeb0Sopenharmony_ci makes sense, and the extension has been augmented to allow configs to 5602f4aeb0Sopenharmony_ci advertise support for creating OpenGL ES 3.0 contexts. 5702f4aeb0Sopenharmony_ci 5802f4aeb0Sopenharmony_ci 5902f4aeb0Sopenharmony_ciNew Procedures and Functions 6002f4aeb0Sopenharmony_ci 6102f4aeb0Sopenharmony_ci None. 6202f4aeb0Sopenharmony_ci 6302f4aeb0Sopenharmony_ciNew Tokens 6402f4aeb0Sopenharmony_ci 6502f4aeb0Sopenharmony_ci Accepted as an attribute name in the <*attrib_list> argument of 6602f4aeb0Sopenharmony_ci eglCreateContext: 6702f4aeb0Sopenharmony_ci 6802f4aeb0Sopenharmony_ci EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098 6902f4aeb0Sopenharmony_ci (this token is an alias for EGL_CONTEXT_CLIENT_VERSION) 7002f4aeb0Sopenharmony_ci EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB 7102f4aeb0Sopenharmony_ci EGL_CONTEXT_FLAGS_KHR 0x30FC 7202f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD 7302f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD 7402f4aeb0Sopenharmony_ci 7502f4aeb0Sopenharmony_ci Accepted as a bitfield value in the EGL_RENDERABLE_TYPE config 7602f4aeb0Sopenharmony_ci attribute to eglChooseConfig: 7702f4aeb0Sopenharmony_ci 7802f4aeb0Sopenharmony_ci EGL_OPENGL_ES3_BIT_KHR 0x0040 7902f4aeb0Sopenharmony_ci 8002f4aeb0Sopenharmony_ci Accepted as attribute values for 8102f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR: 8202f4aeb0Sopenharmony_ci 8302f4aeb0Sopenharmony_ci EGL_NO_RESET_NOTIFICATION_KHR 0x31BE 8402f4aeb0Sopenharmony_ci EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF 8502f4aeb0Sopenharmony_ci 8602f4aeb0Sopenharmony_ci Accepted as bits in the attribute value for EGL_CONTEXT_FLAGS_KHR in 8702f4aeb0Sopenharmony_ci <*attrib_list>: 8802f4aeb0Sopenharmony_ci 8902f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001 9002f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002 9102f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004 9202f4aeb0Sopenharmony_ci 9302f4aeb0Sopenharmony_ci Accepted as bits in the attribute value for 9402f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR in <*attrib_list>: 9502f4aeb0Sopenharmony_ci 9602f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001 9702f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002 9802f4aeb0Sopenharmony_ci 9902f4aeb0Sopenharmony_ciAdditions to the OpenGL / WGL / GLX Specifications 10002f4aeb0Sopenharmony_ci 10102f4aeb0Sopenharmony_ci None. This specification is written for EGL. 10202f4aeb0Sopenharmony_ci 10302f4aeb0Sopenharmony_ciAdditions to the EGL 1.4 Specification 10402f4aeb0Sopenharmony_ci 10502f4aeb0Sopenharmony_ci Add to table 3.3 "Types of client APIs supported by an EGLConfig" 10602f4aeb0Sopenharmony_ci 10702f4aeb0Sopenharmony_ci "EGL Token Name Client API and Version Supported 10802f4aeb0Sopenharmony_ci ---------------------- -------------------------------- 10902f4aeb0Sopenharmony_ci EGL_OPENGL_ES3_BIT_KHR OpenGL ES 3.x" 11002f4aeb0Sopenharmony_ci 11102f4aeb0Sopenharmony_ci Modify the last sentence of section 3.5.2 "Creating Off-Screen 11202f4aeb0Sopenharmony_ci Rendering Surfaces" 11302f4aeb0Sopenharmony_ci 11402f4aeb0Sopenharmony_ci "Finally, an EGL_BAD_ATTRIBUTE error is generated if ... <config> does 11502f4aeb0Sopenharmony_ci not support OpenGL ES rendering (e.g. the EGL_RENDERABLE_TYPE 11602f4aeb0Sopenharmony_ci attribute does not include at least one of EGL_OPENGL_ES_BIT, 11702f4aeb0Sopenharmony_ci EGL_OPENGL_ES2_BIT, or EGL_OPENGL_ES3_BIT_KHR." 11802f4aeb0Sopenharmony_ci 11902f4aeb0Sopenharmony_ci Modify section 3.7 "Rendering Contexts" in the paragraph near 12002f4aeb0Sopenharmony_ci the top of page 42: 12102f4aeb0Sopenharmony_ci 12202f4aeb0Sopenharmony_ci "Only one OpenGL or OpenGL ES context may be current to a particular 12302f4aeb0Sopenharmony_ci thread, even if the implementation supports OpenGL and one or more 12402f4aeb0Sopenharmony_ci versions of OpenGL ES in the same runtime [fn12]." 12502f4aeb0Sopenharmony_ci 12602f4aeb0Sopenharmony_ci Replace section 3.7.1 "Creating Rendering Contexts" from the 12702f4aeb0Sopenharmony_ci sixth paragraph through the end of the subsection with: 12802f4aeb0Sopenharmony_ci 12902f4aeb0Sopenharmony_ci "<attrib_list> specifies a list of attributes for the context. The 13002f4aeb0Sopenharmony_ci list has the same structure as described for eglChooseConfig. If an 13102f4aeb0Sopenharmony_ci attribute is not specified in <attrib_list>, then the default value 13202f4aeb0Sopenharmony_ci specified below is used instead. Most attributes are only meaningful 13302f4aeb0Sopenharmony_ci for specific client APIs, and will generate an error when specified 13402f4aeb0Sopenharmony_ci to create for another client API context. 13502f4aeb0Sopenharmony_ci 13602f4aeb0Sopenharmony_ci OpenGL and OpenGL ES Context Versions 13702f4aeb0Sopenharmony_ci ------------------------------------- 13802f4aeb0Sopenharmony_ci 13902f4aeb0Sopenharmony_ci The values for attributes EGL_CONTEXT_MAJOR_VERSION_KHR and 14002f4aeb0Sopenharmony_ci EGL_CONTEXT_MINOR_VERSION_KHR specify the requested client API 14102f4aeb0Sopenharmony_ci version. They are only meaningful for OpenGL and OpenGL ES contexts, 14202f4aeb0Sopenharmony_ci and specifying them for other types of contexts will generate an 14302f4aeb0Sopenharmony_ci error. 14402f4aeb0Sopenharmony_ci 14502f4aeb0Sopenharmony_ci When the current rendering API is EGL_OPENGL_ES_API or 14602f4aeb0Sopenharmony_ci EGL_OPENGL_API, the values of EGL_CONTEXT_MAJOR_VERSION_KHR (the 14702f4aeb0Sopenharmony_ci <major version> and EGL_CONTEXT_MINOR_VERSION_KHR (the <minor 14802f4aeb0Sopenharmony_ci version>) request creation of an OpenGL ES or OpenGL context, 14902f4aeb0Sopenharmony_ci respectively, supporting the specified version (<major>.<minor>) of 15002f4aeb0Sopenharmony_ci that client API. 15102f4aeb0Sopenharmony_ci [fn: the EGL 1.4 token EGL_CONTEXT_CLIENT_VERSION is an alias for 15202f4aeb0Sopenharmony_ci EGL_CONTEXT_MAJOR_VERSION_KHR, and the tokens may be used 15302f4aeb0Sopenharmony_ci interchangeably.] 15402f4aeb0Sopenharmony_ci If successful, the context returned must be <backwards compatible> 15502f4aeb0Sopenharmony_ci with the requested version. Backwards compatibility is determined as 15602f4aeb0Sopenharmony_ci follows: 15702f4aeb0Sopenharmony_ci 15802f4aeb0Sopenharmony_ci If the current rendering API is EGL_OPENGL_ES_API, then: 15902f4aeb0Sopenharmony_ci 16002f4aeb0Sopenharmony_ci * If version 1.0 is requested, the context returned may implement 16102f4aeb0Sopenharmony_ci either OpenGL ES 1.0 or OpenGL ES 1.1. 16202f4aeb0Sopenharmony_ci 16302f4aeb0Sopenharmony_ci * If version 1.1 is requested, the context returned must implement 16402f4aeb0Sopenharmony_ci OpenGL ES 1.1. 16502f4aeb0Sopenharmony_ci 16602f4aeb0Sopenharmony_ci * If version 2.0, version 3.0, or a later version (when later 16702f4aeb0Sopenharmony_ci versions are defined by Khronos) is requested, the context 16802f4aeb0Sopenharmony_ci returned must implement the requested OpenGL ES version, or any 16902f4aeb0Sopenharmony_ci later version which is backwards compatible with the requested 17002f4aeb0Sopenharmony_ci version. 17102f4aeb0Sopenharmony_ci 17202f4aeb0Sopenharmony_ci If the current rendering API is EGL_OPENGL_API, then: 17302f4aeb0Sopenharmony_ci 17402f4aeb0Sopenharmony_ci * If a version less than or equal to OpenGL 3.0 is requested, the 17502f4aeb0Sopenharmony_ci context returned may implement any of the following versions: 17602f4aeb0Sopenharmony_ci 17702f4aeb0Sopenharmony_ci * Any version no less than that requested and no greater than 17802f4aeb0Sopenharmony_ci 3.0. 17902f4aeb0Sopenharmony_ci * Version 3.1, if the GL_ARB_compatibility extension is also 18002f4aeb0Sopenharmony_ci implemented. 18102f4aeb0Sopenharmony_ci * The compatibility profile of version 3.2 or greater. 18202f4aeb0Sopenharmony_ci 18302f4aeb0Sopenharmony_ci * If OpenGL 3.1 is requested, the context returned may implement 18402f4aeb0Sopenharmony_ci any of the following versions: 18502f4aeb0Sopenharmony_ci 18602f4aeb0Sopenharmony_ci * Version 3.1. The GL_ARB_compatibility extension may or may 18702f4aeb0Sopenharmony_ci not be implemented, as determined by the implementation. 18802f4aeb0Sopenharmony_ci * The core profile of version 3.2 or greater. 18902f4aeb0Sopenharmony_ci 19002f4aeb0Sopenharmony_ci * If OpenGL 3.2 or greater is requested, the context returned may 19102f4aeb0Sopenharmony_ci implement any of the following versions: 19202f4aeb0Sopenharmony_ci 19302f4aeb0Sopenharmony_ci * The requested profile (see 19402f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR below) of the requested 19502f4aeb0Sopenharmony_ci version. 19602f4aeb0Sopenharmony_ci * The requested profile of any later version, so long as no 19702f4aeb0Sopenharmony_ci features have been removed from that later version and 19802f4aeb0Sopenharmony_ci profile. 19902f4aeb0Sopenharmony_ci 20002f4aeb0Sopenharmony_ci Typically, the implementation will return the most recent version of 20102f4aeb0Sopenharmony_ci OpenGL it supports which is backwards compatible with the requested 20202f4aeb0Sopenharmony_ci version. 20302f4aeb0Sopenharmony_ci 20402f4aeb0Sopenharmony_ci Querying the GL_VERSION string with glGetString in either OpenGL or 20502f4aeb0Sopenharmony_ci OpenGL ES (or the GL_MAJOR_VERSION and GL_MINOR_VERSION values with 20602f4aeb0Sopenharmony_ci glGetIntegerv, in an OpenGL 3.0 or later context) will return the 20702f4aeb0Sopenharmony_ci actual version supported by a context. 20802f4aeb0Sopenharmony_ci 20902f4aeb0Sopenharmony_ci The default values for EGL_CONTEXT_MAJOR_VERSION_KHR and 21002f4aeb0Sopenharmony_ci EGL_CONTEXT_MINOR_VERSION_KHR are 1 and 0 respectively. 21102f4aeb0Sopenharmony_ci 21202f4aeb0Sopenharmony_ci OpenGL Context Profiles 21302f4aeb0Sopenharmony_ci ----------------------- 21402f4aeb0Sopenharmony_ci 21502f4aeb0Sopenharmony_ci The value for attribute EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 21602f4aeb0Sopenharmony_ci specifies a <profile> of the OpenGL API. This attribute is only 21702f4aeb0Sopenharmony_ci meaningful for OpenGL contexts, and specifying it for other types of 21802f4aeb0Sopenharmony_ci contexts, including OpenGL ES contexts, will generate an error. 21902f4aeb0Sopenharmony_ci 22002f4aeb0Sopenharmony_ci When the current rendering API is EGL_OPENGL_API, the value of 22102f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR requests an OpenGL context 22202f4aeb0Sopenharmony_ci supporting the corresponding profile. If the 22302f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR bit is set in the attribute 22402f4aeb0Sopenharmony_ci value, then a context implementing the <core> profile of OpenGL is 22502f4aeb0Sopenharmony_ci returned. If the EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 22602f4aeb0Sopenharmony_ci bit is set, then a context implementing the <compatibility> profile 22702f4aeb0Sopenharmony_ci is returned. If the requested OpenGL version is less than 3.2, 22802f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR is ignored and the functionality 22902f4aeb0Sopenharmony_ci of the context is determined solely by the requested version. 23002f4aeb0Sopenharmony_ci 23102f4aeb0Sopenharmony_ci Querying the value of GL_CONTEXT_PROFILE_MASK with glGetIntegerv 23202f4aeb0Sopenharmony_ci will return the profile mask used to create the context. This query 23302f4aeb0Sopenharmony_ci is only supported in an OpenGL 3.2 or later context. 23402f4aeb0Sopenharmony_ci 23502f4aeb0Sopenharmony_ci The default value for EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR is 23602f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR. All OpenGL 3.2 and later 23702f4aeb0Sopenharmony_ci implementations are required to implement the core profile, but 23802f4aeb0Sopenharmony_ci implementation of the compatibility profile is optional. 23902f4aeb0Sopenharmony_ci 24002f4aeb0Sopenharmony_ci If the core profile is requested, then the context returned cannot 24102f4aeb0Sopenharmony_ci implement functionality defined only by the compatibility profile. 24202f4aeb0Sopenharmony_ci 24302f4aeb0Sopenharmony_ci OpenGL and OpenGL ES Context Flags 24402f4aeb0Sopenharmony_ci ---------------------------------- 24502f4aeb0Sopenharmony_ci 24602f4aeb0Sopenharmony_ci The value for attribute EGL_CONTEXT_FLAGS_KHR specifies a set of flag 24702f4aeb0Sopenharmony_ci bits affecting the context. Flag bits are only meaningful when creating 24802f4aeb0Sopenharmony_ci certain types of contexts, as described for each bit below, and 24902f4aeb0Sopenharmony_ci specifying such a flag bit when creating another type of context will 25002f4aeb0Sopenharmony_ci generate an error. 25102f4aeb0Sopenharmony_ci 25202f4aeb0Sopenharmony_ci If the EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR flag bit is set in 25302f4aeb0Sopenharmony_ci EGL_CONTEXT_FLAGS_KHR, then a <debug context> will be created. Debug 25402f4aeb0Sopenharmony_ci contexts are intended for use during application development, to 25502f4aeb0Sopenharmony_ci provide additional runtime checking, validation, and logging 25602f4aeb0Sopenharmony_ci functionality while possibly incurring performance penalties. The 25702f4aeb0Sopenharmony_ci additional functionality provided by debug contexts may vary 25802f4aeb0Sopenharmony_ci according to the implementation(fn). In some cases a debug context 25902f4aeb0Sopenharmony_ci may be identical to a non-debug context. This bit is supported for 26002f4aeb0Sopenharmony_ci OpenGL and OpenGL ES contexts. 26102f4aeb0Sopenharmony_ci [fn: Khronos is still defining the expected and required 26202f4aeb0Sopenharmony_ci features of debug contexts, so implementations are 26302f4aeb0Sopenharmony_ci currently free to implement "debug contexts" with little or 26402f4aeb0Sopenharmony_ci no debug functionality. However, OpenGL and OpenGL ES 26502f4aeb0Sopenharmony_ci implementations supporting the GL_KHR_debug extension 26602f4aeb0Sopenharmony_ci should enable it when this bit is set.] 26702f4aeb0Sopenharmony_ci [fn2: See issue 9 below for discussion of backwards 26802f4aeb0Sopenharmony_ci compatibility issues with the debug bit and OpenGL ES 26902f4aeb0Sopenharmony_ci contexts.] 27002f4aeb0Sopenharmony_ci 27102f4aeb0Sopenharmony_ci If the EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR flag bit is set 27202f4aeb0Sopenharmony_ci in EGL_CONTEXT_FLAGS_KHR, then a <forward-compatible> context will 27302f4aeb0Sopenharmony_ci be created. Forward-compatible contexts are defined only for OpenGL 27402f4aeb0Sopenharmony_ci versions 3.0 and later. They must not support functionality marked 27502f4aeb0Sopenharmony_ci as <deprecated> by that version of the API, while a 27602f4aeb0Sopenharmony_ci non-forward-compatible context must support all functionality in 27702f4aeb0Sopenharmony_ci that version, deprecated or not. This bit is supported for OpenGL 27802f4aeb0Sopenharmony_ci contexts, and requesting a forward-compatible context for OpenGL 27902f4aeb0Sopenharmony_ci versions less than 3.0 will generate an error. 28002f4aeb0Sopenharmony_ci 28102f4aeb0Sopenharmony_ci If the EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR bit is set in 28202f4aeb0Sopenharmony_ci EGL_CONTEXT_FLAGS_KHR, then a context supporting <robust buffer 28302f4aeb0Sopenharmony_ci access> will be created. Robust buffer access is defined in the 28402f4aeb0Sopenharmony_ci GL_ARB_robustness extension specification, and the resulting context 28502f4aeb0Sopenharmony_ci must also support either the GL_ARB_robustness extension, or a 28602f4aeb0Sopenharmony_ci version of OpenGL incorporating equivalent functionality. This bit 28702f4aeb0Sopenharmony_ci is supported for OpenGL contexts. 28802f4aeb0Sopenharmony_ci 28902f4aeb0Sopenharmony_ci The default value of EGL_CONTEXT_FLAGS_KHR is zero. 29002f4aeb0Sopenharmony_ci 29102f4aeb0Sopenharmony_ci OpenGL Context Reset Notification 29202f4aeb0Sopenharmony_ci --------------------------------- 29302f4aeb0Sopenharmony_ci 29402f4aeb0Sopenharmony_ci The attribute name 29502f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR specifies the 29602f4aeb0Sopenharmony_ci <reset notification behavior> of the rendering context. This 29702f4aeb0Sopenharmony_ci attribute is only meaningful for OpenGL contexts, and specifying it 29802f4aeb0Sopenharmony_ci for other types of contexts, including OpenGL ES contexts, will 29902f4aeb0Sopenharmony_ci generate an error. 30002f4aeb0Sopenharmony_ci 30102f4aeb0Sopenharmony_ci Reset notification behavior is defined in the GL_ARB_robustness 30202f4aeb0Sopenharmony_ci extension specification, and the resulting context must also support 30302f4aeb0Sopenharmony_ci either the GL_ARB_robustness extension, or a version of OpenGL or 30402f4aeb0Sopenharmony_ci incorporating equivalent functionality. The attribute value may be 30502f4aeb0Sopenharmony_ci either EGL_NO_RESET_NOTIFICATION_KHR or 30602f4aeb0Sopenharmony_ci EGL_LOSE_CONTEXT_ON_RESET_KHR, which respectively result in reset 30702f4aeb0Sopenharmony_ci notification behavior of GL_NO_RESET_NOTIFICATION_ARB and 30802f4aeb0Sopenharmony_ci GL_LOSE_CONTEXT_ON_RESET_ARB, as described by GL_ARB_robustness. The 30902f4aeb0Sopenharmony_ci default value for EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 31002f4aeb0Sopenharmony_ci is EGL_NO_RESET_NOTIFICATION_KHR. 31102f4aeb0Sopenharmony_ci 31202f4aeb0Sopenharmony_ci Errors 31302f4aeb0Sopenharmony_ci ------ 31402f4aeb0Sopenharmony_ci 31502f4aeb0Sopenharmony_ci On failure eglCreateContext returns EGL_NO_CONTEXT and generates an 31602f4aeb0Sopenharmony_ci EGL error with extended error information. Conditions that cause 31702f4aeb0Sopenharmony_ci failure include: 31802f4aeb0Sopenharmony_ci 31902f4aeb0Sopenharmony_ci * If an attribute is specified that is not meaningful for the 32002f4aeb0Sopenharmony_ci client API type determined by the current rendering API, an 32102f4aeb0Sopenharmony_ci EGL_BAD_ATTRIBUTE error is generated. 32202f4aeb0Sopenharmony_ci 32302f4aeb0Sopenharmony_ci * If the current rendering api is EGL_NONE, then an EGL_BAD_MATCH 32402f4aeb0Sopenharmony_ci error is generated (this situation can only arise in an 32502f4aeb0Sopenharmony_ci implementation which does not support OpenGL ES 1.x, and prior to 32602f4aeb0Sopenharmony_ci the first call to eglBindAPI). 32702f4aeb0Sopenharmony_ci 32802f4aeb0Sopenharmony_ci * If share_context is neither EGL_NO_CONTEXT nor a valid context 32902f4aeb0Sopenharmony_ci of the same client API type as the newly created context, then 33002f4aeb0Sopenharmony_ci an EGL_BAD_CONTEXT error is generated. 33102f4aeb0Sopenharmony_ci 33202f4aeb0Sopenharmony_ci * If <config> is not a valid EGLConfig, or does not support the 33302f4aeb0Sopenharmony_ci requested client API, then an EGL_BAD_CONFIG error is generated 33402f4aeb0Sopenharmony_ci (this includes requesting creation of an OpenGL ES 1.x, 2.0, or 33502f4aeb0Sopenharmony_ci 3.0 context when the EGL_RENDERABLE_TYPE attribute of <config> 33602f4aeb0Sopenharmony_ci does not contain EGL_OPENGL_ES_BIT, EGL_OPENGL_ES2_BIT, or 33702f4aeb0Sopenharmony_ci EGL_OPENGL_ES3_BIT_KHR respectively). 33802f4aeb0Sopenharmony_ci 33902f4aeb0Sopenharmony_ci * If <config> does not support a client API context compatible 34002f4aeb0Sopenharmony_ci with the requested API major and minor version, context flags, 34102f4aeb0Sopenharmony_ci and context reset notification behavior (for client API types 34202f4aeb0Sopenharmony_ci where these attributes are supported), then an EGL_BAD_MATCH 34302f4aeb0Sopenharmony_ci error is generated. 34402f4aeb0Sopenharmony_ci 34502f4aeb0Sopenharmony_ci * If an OpenGL context is requested, the requested version is 34602f4aeb0Sopenharmony_ci greater than 3.2, and the value for attribute 34702f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR has no bits set; has any 34802f4aeb0Sopenharmony_ci bits set other than EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR and 34902f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR; has more than 35002f4aeb0Sopenharmony_ci one of these bits set; or if the implementation does not support 35102f4aeb0Sopenharmony_ci the requested profile, then an EGL_BAD_MATCH error is generated. 35202f4aeb0Sopenharmony_ci 35302f4aeb0Sopenharmony_ci * If an OpenGL or OpenGL ES context is requested and the server 35402f4aeb0Sopenharmony_ci context state for <share_context> exists in an address space 35502f4aeb0Sopenharmony_ci that cannot be shared with the newly created context, if 35602f4aeb0Sopenharmony_ci <share_context> was created on a different display than the one 35702f4aeb0Sopenharmony_ci referenced by <config>, if the reset notification behavior of 35802f4aeb0Sopenharmony_ci <share_context> and the newly created context are different, or 35902f4aeb0Sopenharmony_ci if the contexts are otherwise incompatible (for example, one 36002f4aeb0Sopenharmony_ci context being associated with a hardware device driver and the 36102f4aeb0Sopenharmony_ci other with a software renderer), then an EGL_BAD_MATCH error is 36202f4aeb0Sopenharmony_ci generated. 36302f4aeb0Sopenharmony_ci 36402f4aeb0Sopenharmony_ci * If the server does not have enough resources to allocate the new 36502f4aeb0Sopenharmony_ci context, then an EGL_BAD_ALLOC error is generated. 36602f4aeb0Sopenharmony_ci 36702f4aeb0Sopenharmony_ci * If an OpenGL context is requested and the values for attributes 36802f4aeb0Sopenharmony_ci EGL_CONTEXT_MAJOR_VERSION_KHR and EGL_CONTEXT_MINOR_VERSION_KHR, 36902f4aeb0Sopenharmony_ci when considered together with the value for attribute 37002f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR, specify an OpenGL 37102f4aeb0Sopenharmony_ci version and feature set that are not defined, than an 37202f4aeb0Sopenharmony_ci EGL_BAD_MATCH error is generated. 37302f4aeb0Sopenharmony_ci 37402f4aeb0Sopenharmony_ci The defined versions of OpenGL at the time of writing are OpenGL 37502f4aeb0Sopenharmony_ci 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 2.0, 2.1, 3.0, 3.1, 3.2, 4.0, 4.1, 37602f4aeb0Sopenharmony_ci 4.2, and 4.3. Feature deprecation was introduced with OpenGL 37702f4aeb0Sopenharmony_ci 3.0, so forward-compatible contexts may only be requested for 37802f4aeb0Sopenharmony_ci OpenGL 3.0 and above. Thus, examples of invalid combinations of 37902f4aeb0Sopenharmony_ci attributes include: 38002f4aeb0Sopenharmony_ci 38102f4aeb0Sopenharmony_ci - Major version < 1 or > 4 38202f4aeb0Sopenharmony_ci - Major version == 1 and minor version < 0 or > 5 38302f4aeb0Sopenharmony_ci - Major version == 2 and minor version < 0 or > 1 38402f4aeb0Sopenharmony_ci - Major version == 3 and minor version < 0 or > 2 38502f4aeb0Sopenharmony_ci - Major version == 4 and minor version < 0 or > 3 38602f4aeb0Sopenharmony_ci - Forward-compatible flag set and major version < 3 38702f4aeb0Sopenharmony_ci 38802f4aeb0Sopenharmony_ci Because the purpose of forward-compatible contexts is to allow 38902f4aeb0Sopenharmony_ci application development on a specific OpenGL version with the 39002f4aeb0Sopenharmony_ci knowledge that the app will run on a future version, context 39102f4aeb0Sopenharmony_ci creation will fail if 39202f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR is set and the 39302f4aeb0Sopenharmony_ci context version returned cannot implement exactly the requested 39402f4aeb0Sopenharmony_ci version. 39502f4aeb0Sopenharmony_ci 39602f4aeb0Sopenharmony_ci * If an OpenGL ES context is requested and the values for 39702f4aeb0Sopenharmony_ci attributes EGL_CONTEXT_MAJOR_VERSION_KHR and 39802f4aeb0Sopenharmony_ci EGL_CONTEXT_MINOR_VERSION_KHR specify an OpenGL ES version that 39902f4aeb0Sopenharmony_ci is not defined, than an EGL_BAD_MATCH error is generated. 40002f4aeb0Sopenharmony_ci 40102f4aeb0Sopenharmony_ci The defined versions of OpenGL ES at the time of writing are 40202f4aeb0Sopenharmony_ci OpenGL ES 1.0, 1.1, 2.0, and 3.0. Examples of invalid 40302f4aeb0Sopenharmony_ci combinations of attributes include: 40402f4aeb0Sopenharmony_ci 40502f4aeb0Sopenharmony_ci - Major version < 1 or > 3 40602f4aeb0Sopenharmony_ci - Major version == 1 and minor version < 0 or > 1 40702f4aeb0Sopenharmony_ci - Major version == 2 and minor version != 0 40802f4aeb0Sopenharmony_ci - Major version == 3 and minor version != 0 40902f4aeb0Sopenharmony_ci 41002f4aeb0Sopenharmony_ci * If an attribute name or attribute value in <attrib_list> is not 41102f4aeb0Sopenharmony_ci recognized (including undefined or unsupported bits in bitmask 41202f4aeb0Sopenharmony_ci attributes), then an EGL_BAD_ATTRIBUTE error is generated." 41302f4aeb0Sopenharmony_ci 41402f4aeb0Sopenharmony_ci In section 3.7.3, replace the following two error conditions in the 41502f4aeb0Sopenharmony_ci list of eglMakeCurrent errors: 41602f4aeb0Sopenharmony_ci 41702f4aeb0Sopenharmony_ci " * If <ctx> is not a valid context, an EGL_BAD_CONTEXT error is 41802f4aeb0Sopenharmony_ci generated. 41902f4aeb0Sopenharmony_ci * If either <draw> or <read> are not valid EGL surfaces, an 42002f4aeb0Sopenharmony_ci EGL_BAD_SURFACE error is generated." 42102f4aeb0Sopenharmony_ci 42202f4aeb0Sopenharmony_ci with the following error conditions: 42302f4aeb0Sopenharmony_ci 42402f4aeb0Sopenharmony_ci " * If <ctx> is not a valid context and is not EGL_NO_CONTEXT, an 42502f4aeb0Sopenharmony_ci EGL_BAD_CONTEXT error is generated. 42602f4aeb0Sopenharmony_ci * If either <draw> or <read> are not valid EGL surfaces and are 42702f4aeb0Sopenharmony_ci not EGL_NO_SURFACE, an EGL_BAD_SURFACE error is generated. 42802f4aeb0Sopenharmony_ci * If <ctx> is EGL_NO_CONTEXT and either <draw> or <read> are not 42902f4aeb0Sopenharmony_ci EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated. 43002f4aeb0Sopenharmony_ci * If either of <draw> or <read> is a valid surface and the other 43102f4aeb0Sopenharmony_ci is EGL_NO_SURFACE, an EGL_BAD_MATCH error is generated. 43202f4aeb0Sopenharmony_ci * If <ctx> does not support being bound without read and draw 43302f4aeb0Sopenharmony_ci surfaces, and both <draw> and <read> are EGL_NO_SURFACE, an 43402f4aeb0Sopenharmony_ci EGL_BAD_MATCH error is generated." 43502f4aeb0Sopenharmony_ci 43602f4aeb0Sopenharmony_ci Replace the paragraph starting "If <ctx> is EGL_NO_CONTEXT and 43702f4aeb0Sopenharmony_ci <draw> and <read> are not EGL_NO_SURFACE..." with 43802f4aeb0Sopenharmony_ci 43902f4aeb0Sopenharmony_ci "If both <draw> and <read> are EGL_NO_SURFACE, and <ctx> is an OpenGL 44002f4aeb0Sopenharmony_ci context supporting version 3.0 or later of the OpenGL API, then no 44102f4aeb0Sopenharmony_ci error is generated and the context is made current without a 44202f4aeb0Sopenharmony_ci <default framebuffer>. The meaning of this is defined in chapter 4 44302f4aeb0Sopenharmony_ci of the OpenGL 3.0 Specification." 44402f4aeb0Sopenharmony_ci 44502f4aeb0Sopenharmony_ci Append to the paragraph starting "The first time an OpenGL or OpenGL 44602f4aeb0Sopenharmony_ci ES context is made current..." with 44702f4aeb0Sopenharmony_ci 44802f4aeb0Sopenharmony_ci "If the first time <ctx> is made current, it is without a default 44902f4aeb0Sopenharmony_ci framebuffer (e.g. both <draw> and <read> are EGL_NO_SURFACE), then 45002f4aeb0Sopenharmony_ci the viewport and scissor regions are set as though 45102f4aeb0Sopenharmony_ci glViewport(0,0,0,0) and glScissor(0,0,0,0) were called." 45202f4aeb0Sopenharmony_ci 45302f4aeb0Sopenharmony_ci 45402f4aeb0Sopenharmony_ciErrors 45502f4aeb0Sopenharmony_ci 45602f4aeb0Sopenharmony_ci EGL errors for eglCreateContext as described in the body of the 45702f4aeb0Sopenharmony_ci specification. 45802f4aeb0Sopenharmony_ci 45902f4aeb0Sopenharmony_ci eglMakeCurrent error behavior is relaxed to allow making an OpenGL 46002f4aeb0Sopenharmony_ci 3.0 or later context current without a default read or draw 46102f4aeb0Sopenharmony_ci framebuffer. 46202f4aeb0Sopenharmony_ci 46302f4aeb0Sopenharmony_ciConformance Tests 46402f4aeb0Sopenharmony_ci 46502f4aeb0Sopenharmony_ci TBD 46602f4aeb0Sopenharmony_ci 46702f4aeb0Sopenharmony_ciSample Code 46802f4aeb0Sopenharmony_ci 46902f4aeb0Sopenharmony_ci TBD 47002f4aeb0Sopenharmony_ci 47102f4aeb0Sopenharmony_ciIssues 47202f4aeb0Sopenharmony_ci 47302f4aeb0Sopenharmony_ci Non-window-system dependent issues described in the 47402f4aeb0Sopenharmony_ci WGL_ARB_create_context extension specification in the OpenGL 47502f4aeb0Sopenharmony_ci Registry apply to EGL_KHR_create_context. 47602f4aeb0Sopenharmony_ci 47702f4aeb0Sopenharmony_ci 1) Do enumerant values need to be shared with the equivalent WGL / GLX 47802f4aeb0Sopenharmony_ci extensions? 47902f4aeb0Sopenharmony_ci 48002f4aeb0Sopenharmony_ci Mostly not. The only case where it's fairly important that the 48102f4aeb0Sopenharmony_ci values be identical is the EGL_CONTEXT_FLAGS_KHR attribute bitmask 48202f4aeb0Sopenharmony_ci values, which are also exposed through an OpenGL query. 48302f4aeb0Sopenharmony_ci 48402f4aeb0Sopenharmony_ci 2) Why are some attribute values named EGL_CONTEXT_OPENGL_*? 48502f4aeb0Sopenharmony_ci 48602f4aeb0Sopenharmony_ci It is possible that context flags and profiles will eventually be 48702f4aeb0Sopenharmony_ci defined for client APIs other than OpenGL. To allow for this 48802f4aeb0Sopenharmony_ci possibility, the names of the corresponding attribute values are 48902f4aeb0Sopenharmony_ci distinguished. For example, EGL_CONTEXT_FLAGS_KHR currently only has 49002f4aeb0Sopenharmony_ci flags defined for OpenGL context creation, and those flags are named 49102f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENGL_*_BIT_KHR, but in time OpenVG context creation 49202f4aeb0Sopenharmony_ci might allow flags as well. Such flags would be named 49302f4aeb0Sopenharmony_ci EGL_CONTEXT_OPENVG_*_BIT_KHR. 49402f4aeb0Sopenharmony_ci 49502f4aeb0Sopenharmony_ci 3) Why does EGL_CONTEXT_MAJOR_VERSION_KHR have a distinct numeric token 49602f4aeb0Sopenharmony_ci value when it is functionally equivalent to 49702f4aeb0Sopenharmony_ci EGL_CONTEXT_CLIENT_VERSION? 49802f4aeb0Sopenharmony_ci 49902f4aeb0Sopenharmony_ci It no longer has a distinct token value; see issue 1. 50002f4aeb0Sopenharmony_ci 50102f4aeb0Sopenharmony_ci 4) How will future versions of OpenGL ES interact with this extension? 50202f4aeb0Sopenharmony_ci 50302f4aeb0Sopenharmony_ci Later context versions which are backwards compatibile with the 50402f4aeb0Sopenharmony_ci requested version can be returned, just as with OpenGL contexts. 50502f4aeb0Sopenharmony_ci 50602f4aeb0Sopenharmony_ci 5) What happens when requesting a context requiring OpenGL functionality 50702f4aeb0Sopenharmony_ci that cannot be supported by the underlying GL implementation, such as 50802f4aeb0Sopenharmony_ci requesting lost context reset notification and/or robust buffer access 50902f4aeb0Sopenharmony_ci when the implementation does not support the functionality defined by 51002f4aeb0Sopenharmony_ci GL_ARB_robustness? 51102f4aeb0Sopenharmony_ci 51202f4aeb0Sopenharmony_ci Context creation will fail and an EGL_BAD_MATCH error will be 51302f4aeb0Sopenharmony_ci generated. This case is included under the general language of the 51402f4aeb0Sopenharmony_ci fifth bullet point under "Errors" but this issue is added to for 51502f4aeb0Sopenharmony_ci clarity. 51602f4aeb0Sopenharmony_ci 51702f4aeb0Sopenharmony_ci 6) How is robust buffer access and reset notification supported under 51802f4aeb0Sopenharmony_ci OpenGL ES? 51902f4aeb0Sopenharmony_ci 52002f4aeb0Sopenharmony_ci RESOLVED: It is an error to request robust buffer access and/or reset 52102f4aeb0Sopenharmony_ci notification for OpenGL ES contexts. Exposing robust buffer access and 52202f4aeb0Sopenharmony_ci reset notification for OpenGL ES contexts may be defined in a future EGL 52302f4aeb0Sopenharmony_ci extension. 52402f4aeb0Sopenharmony_ci 52502f4aeb0Sopenharmony_ci 7) Future support for OpenGL ES context creation. 52602f4aeb0Sopenharmony_ci 52702f4aeb0Sopenharmony_ci If and when features available for OpenGL context creation are defined 52802f4aeb0Sopenharmony_ci for OpenGL ES context creation in the future, debug contexts, forward 52902f4aeb0Sopenharmony_ci compatible contexts, and robust buffer access contexts may be specified 53002f4aeb0Sopenharmony_ci using separate attributes rather than bitmasks. The reset notification 53102f4aeb0Sopenharmony_ci behavior attribute may be extended to cover OpenGL ES as well as OpenGL. 53202f4aeb0Sopenharmony_ci 53302f4aeb0Sopenharmony_ci 8) Why was the EGL_OPENGL_ES3_BIT_KHR added in version 13 of the 53402f4aeb0Sopenharmony_ci extension? Doesn't this break backwards compatibility with older 53502f4aeb0Sopenharmony_ci versions of the extension? 53602f4aeb0Sopenharmony_ci 53702f4aeb0Sopenharmony_ci Applications need the functionality to be confident that context 53802f4aeb0Sopenharmony_ci creation of an OpenGL ES 3.0 context will succeed (rather than trying 53902f4aeb0Sopenharmony_ci it with different configs until one that succeeds is found). 54002f4aeb0Sopenharmony_ci 54102f4aeb0Sopenharmony_ci If this bit is passed into eglChooseConfig and the implementation 54202f4aeb0Sopenharmony_ci supports only an older version of the extension, an EGL_BAD_ATTIBUTE 54302f4aeb0Sopenharmony_ci error should be generated. Since no matching configs will be found, a 54402f4aeb0Sopenharmony_ci robustly-written application will fail (or fall back to an ES 2.0 54502f4aeb0Sopenharmony_ci rendering path) at this point. This is the same application behavior 54602f4aeb0Sopenharmony_ci that should result from not finding a matching config on an 54702f4aeb0Sopenharmony_ci implementation supporting version 13 of the extension, even though the 54802f4aeb0Sopenharmony_ci failure mode is different (EGL error vs. returning no matching 54902f4aeb0Sopenharmony_ci configs). The EGL Working Group considers this sufficiently benign 55002f4aeb0Sopenharmony_ci behavior, and the functionality important enough, to make the change. 55102f4aeb0Sopenharmony_ci 55202f4aeb0Sopenharmony_ci 9) Why was OpenGL ES support for EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR added 55302f4aeb0Sopenharmony_ci in version 15 of the extension? Doesn't this break backwards 55402f4aeb0Sopenharmony_ci compatibility with older versions of the extension? 55502f4aeb0Sopenharmony_ci 55602f4aeb0Sopenharmony_ci Now that the GL_KHR_debug extension is ratified and available, 55702f4aeb0Sopenharmony_ci OpenGL ES implementers needed a way to enable debug functionality, 55802f4aeb0Sopenharmony_ci and wanted to use the same mechanism as OpenGL. There is no 55902f4aeb0Sopenharmony_ci discovery mechanism for this capability, so an application creating 56002f4aeb0Sopenharmony_ci a OpenGL ES context with the debug bit set and running against an 56102f4aeb0Sopenharmony_ci older EGL driver should generate an error. The OpenGL ES Working 56202f4aeb0Sopenharmony_ci Group considers this benign behavior. 56302f4aeb0Sopenharmony_ci 56402f4aeb0Sopenharmony_ci 10) Which error should be generated if robust buffer access or reset 56502f4aeb0Sopenharmony_ci notifications are requested under OpenGL ES? 56602f4aeb0Sopenharmony_ci 56702f4aeb0Sopenharmony_ci As per Issue 6, this extension does not support creating robust contexts 56802f4aeb0Sopenharmony_ci for OpenGL ES. This is only supported via the EGL_EXT_create_context_- 56902f4aeb0Sopenharmony_ci robustness extension. 57002f4aeb0Sopenharmony_ci 57102f4aeb0Sopenharmony_ci Attempting to use this extension to create robust OpenGL ES context 57202f4aeb0Sopenharmony_ci will generate an EGL_BAD_ATTRIBUTE error. This specific error is generated 57302f4aeb0Sopenharmony_ci because this extension does not define the EGL_CONTEXT_OPENGL_ROBUST_- 57402f4aeb0Sopenharmony_ci ACCESS_BIT_KHR and EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR bits 57502f4aeb0Sopenharmony_ci for OpenGL ES contexts. Thus, use of these bits fall under condition 57602f4aeb0Sopenharmony_ci described by: "If an attribute is specified that is not meaningful for 57702f4aeb0Sopenharmony_ci the client API type.." in the above specification. 57802f4aeb0Sopenharmony_ci 57902f4aeb0Sopenharmony_ciRevision History 58002f4aeb0Sopenharmony_ci 58102f4aeb0Sopenharmony_ci Version 16, 2015/01/15 58202f4aeb0Sopenharmony_ci - Add issue 10. 58302f4aeb0Sopenharmony_ci 58402f4aeb0Sopenharmony_ci Version 15, 2013/03/27 58502f4aeb0Sopenharmony_ci - Add OpenGL ES support for debug contexts (Bug 10035). 58602f4aeb0Sopenharmony_ci 58702f4aeb0Sopenharmony_ci Version 14, 2012/09/19 58802f4aeb0Sopenharmony_ci - Assign enum value to new bit and published updated extension. 58902f4aeb0Sopenharmony_ci 59002f4aeb0Sopenharmony_ci Version 13, 2012/07/29 59102f4aeb0Sopenharmony_ci - Add EGL_OPENGL_ES3_BIT_KHR to table 3.3 and sections 3.5.2, 3.7, 59202f4aeb0Sopenharmony_ci and 3.7.1. Add issue 8 explaining the addition. 59302f4aeb0Sopenharmony_ci 59402f4aeb0Sopenharmony_ci Version 12, 2012/07/25 59502f4aeb0Sopenharmony_ci - Explicitly describe new OpenGL 4.3 and OpenGL ES 3.0 versions. 59602f4aeb0Sopenharmony_ci This is not a behavior change (Khronos Bug 9136). 59702f4aeb0Sopenharmony_ci - Make spec consistent so that asking for a forward-compatible GL 59802f4aeb0Sopenharmony_ci context for versions less than 3.0 is an error (Bug 9314). 59902f4aeb0Sopenharmony_ci - Change nonexistent EGL_BAD_PROFILE_KHR error generated when 60002f4aeb0Sopenharmony_ci asking for an unsupported or nonexistent GL profile to an 60102f4aeb0Sopenharmony_ci EGL_BAD_MATCH error (Bug 9314). 60202f4aeb0Sopenharmony_ci - Fix typos in spec body for several new tokens of form 60302f4aeb0Sopenharmony_ci "EGL_CONTEXT_OPENGL_*" which were missing the "OPENGL_" part 60402f4aeb0Sopenharmony_ci (Bug 9314). 60502f4aeb0Sopenharmony_ci 60602f4aeb0Sopenharmony_ci Version 11, 2012/07/09 - change nonexistent EGL_BAD_VALUE error 60702f4aeb0Sopenharmony_ci to EGL_BAD_ATTRIBUTE (Khronos Bug 9269). 60802f4aeb0Sopenharmony_ci 60902f4aeb0Sopenharmony_ci Version 10, 2011/11/22 - fix typo. 61002f4aeb0Sopenharmony_ci 61102f4aeb0Sopenharmony_ci Version 9, 2011/11/09 - resolve issue 6 and add issue 7, limiting 61202f4aeb0Sopenharmony_ci various context creation attributes to apply only to OpenGL and not 61302f4aeb0Sopenharmony_ci to OpenGL ES. 61402f4aeb0Sopenharmony_ci 61502f4aeb0Sopenharmony_ci Version 8, 2011/10/20 - change spec body to match BAD_MATCH error 61602f4aeb0Sopenharmony_ci returned in issue 5 when specifying context version and attributes 61702f4aeb0Sopenharmony_ci that collectively cannot be satisfied. 61802f4aeb0Sopenharmony_ci 61902f4aeb0Sopenharmony_ci Version 7, 2011/10/19 - add issue 5 clarifying context creation 62002f4aeb0Sopenharmony_ci failures when requesting functionality that cannot be supported by a 62102f4aeb0Sopenharmony_ci GL or ES context, and issue 6 discussing the meaning of "equivalent 62202f4aeb0Sopenharmony_ci to GL_ARB_robustness". 62302f4aeb0Sopenharmony_ci 62402f4aeb0Sopenharmony_ci Version 6, 2011/10/19 - minor cleanup & clarification of OpenGL ES 62502f4aeb0Sopenharmony_ci version requests. 62602f4aeb0Sopenharmony_ci 62702f4aeb0Sopenharmony_ci Version 5, 2010/09/22 - add context reset notification strategy 62802f4aeb0Sopenharmony_ci attributes from GLX/WGL context creation extensions. 62902f4aeb0Sopenharmony_ci 63002f4aeb0Sopenharmony_ci Version 4, 2010/09/22 - fix typo. Assign enumerant values and update 63102f4aeb0Sopenharmony_ci issue 1 to match. Add caveat to errors section so that invalid 63202f4aeb0Sopenharmony_ci attribute values for EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR only raise 63302f4aeb0Sopenharmony_ci errors when requesting an OpenGL context of version 3.2 or greater 63402f4aeb0Sopenharmony_ci (bug 6374). Add issue 4 and allow ES 2.0 context creation requests 63502f4aeb0Sopenharmony_ci to return later versions that are backwards-compatible (bug 6374). 63602f4aeb0Sopenharmony_ci 63702f4aeb0Sopenharmony_ci Version 3, 2010/07/21 - remove surfaceless bit in favor of separate 63802f4aeb0Sopenharmony_ci per-client-API extensions which promise that contexts of a given 63902f4aeb0Sopenharmony_ci client API type can be bound without surfaces on that display. Add 64002f4aeb0Sopenharmony_ci robust buffer access bit from equivalent WGL/GLX context creation 64102f4aeb0Sopenharmony_ci extensions. Rename EGL_CONTEXT_FLAGS_KHR so it's not specific to 64202f4aeb0Sopenharmony_ci OpenGL. 64302f4aeb0Sopenharmony_ci 64402f4aeb0Sopenharmony_ci Version 2, 2010/06/29 - add EGL_CONTEXT_OPENGL_SURFACELESS_BIT_KHR 64502f4aeb0Sopenharmony_ci context flag bit (bug 6082). 64602f4aeb0Sopenharmony_ci 64702f4aeb0Sopenharmony_ci Version 1, 2010/06/29 - Initial version based on equivalent 64802f4aeb0Sopenharmony_ci WGL_ARB_create_context and GLX_ARB_create_context extensions. 649