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