1Name 2 3 KHR_create_context_no_error 4 5Name Strings 6 7 EGL_KHR_create_context_no_error 8 9Contributors 10 11 Maurice Ribble 12 Dominik Witczak 13 Christophe Riccio 14 Piers Daniell 15 Jon Leech 16 James Jones 17 Daniel Kartch 18 Steve Hill 19 Jan-Harald Fredriksen 20 21Contact 22 23 Maurice Ribble (mribble 'at' qti.qualcomm.com) 24 25Status 26 27 Complete. 28 Approved by the Khronos Board of Promoters on May 8, 2015. 29 30Version 31 32 Version 6, May 8, 2015 33 34Number 35 36 EGL Extension #91 37 38Dependencies 39 40 Requires EGL 1.4. 41 42 Written against the EGL 1.4 specification. 43 44 This spec interacts with GL_KHR_no_error (or equivalent) extension. 45 46Overview 47 48 This extension allows the creation of an OpenGL or OpenGL ES context that 49 doesn't generate errors if the context supports a no error mode. The 50 implications of this feature are discussed in the GL_KHR_no_error 51 extension. 52 53New Procedures and Functions 54 55 None 56 57New Tokens 58 59 Accepted as an attribute name in the <*attrib_list> argument to 60 eglCreateContext: 61 62 EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3 63 64Additions to the EGL 1.4 Specification 65 66 Add the following to section 3.7.1 "Creating Rendering Contexts": 67 68 EGL_CONTEXT_OPENGL_NO_ERROR_KHR indicates whether a faster and lower power 69 mode should be enabled for the OpenGL ES context. In this mode instead of 70 GL errors occurring as defined in the OpenGL ES spec those errors will 71 result in undefined behavior. The default value of 72 EGL_CONTEXT_OPENGL_NO_ERROR_KHR is EGL_FALSE. 73 74Errors 75 76 BAD_MATCH is generated if the value of EGL_CONTEXT_OPENGL_NO_ERROR_KHR 77 used to create <share_context> does not match the value of 78 EGL_CONTEXT_OPENGL_NO_ERROR_KHR for the context being created. 79 80 BAD_MATCH is generated if the EGL_CONTEXT_OPENGL_NO_ERROR_KHR is TRUE at 81 the same time as a debug or robustness context is specified. 82 83New State 84 85 None 86 87Conformance Tests 88 89 TBD 90 91Issues 92 93 (1) How does this extension interact with debug and robust contexts? 94 95 RESOLVED: We decided it is an error in EGL if these bits were set at the same 96 time. 97 98 (2) Can a EGL_CONTEXT_OPENGL_NO_ERROR_KHR contexts share resources with 99 normal contexts? 100 101 RESOLVED: To join a share group all the contexts in that share group must 102 have this set the same or creation of the context fails. 103 104 (3) Can we also do this on GLX/WGL? 105 106 RESOLVED: This is an EGL extension. GLX/WGL should be handled with separate 107 extensions. 108 109 (4) Should this extension also expose a "no thread safety" mode? For example 110 to do the rendering on one thread but uploading data or compiling shaders 111 from others threads without having the cost of threaded safety kicking in 112 because none of these tasks overlap so we can handle with sync objects. 113 Compiling shaders, loading data and rendering are areas that removed 114 threading may help. 115 116 RESOLVED: No, this should be done as a separate extension. 117 118 (5) Should this be GL specific? 119 120 RESOLVED: Yes, because other context creation tokens have been API specific. 121 This is also the safer path since it's unknown if other APIs might want to do 122 this slightly differently. 123 124 (6) Should creating a context fail if the context created context does not 125 support a no error mode? 126 127 RESOLVED: No. Expect context creation to succeed even if the implementation 128 can't honor the request for a no error context. This reduces the number of 129 reasons creating a context can fail and seems to be a more forward looking 130 resolution considering context flags allow GL apps to query what context 131 flags are set. 132 133Revision History 134 135 Rev. Date Author Changes 136 ---- ------------ --------- ---------------------------------------- 137 1 Jan 28, 2015 ribble Initial version 138 2 Jan 29, 2015 ribble Added issues list 139 3 Jan 30, 2015 ribble Split into separate GL and EGL extensions 140 4 Feb 18, 2015 ribble Resolved issues and cleanup 141 5 Feb 25, 2015 ribble Rename, better define errors and cleanup 142 6 May 8, 2015 Jon Leech Assign enum value and release. 143