blob: a78f8789ea180feb3fa812e455d25026fc6104ad [file] [log] [blame]
daniel@transgaming.com5933c442011-11-12 04:44:03 +00001Name
2
3 EXT_create_context_robustness
4
5Name Strings
6
7 EGL_EXT_create_context_robustness
8
9Contributors
10
11 Daniel Koch, TransGaming
12 Contributors to EGL_KHR_create_context
13
14Contact
15
16 Greg Roth (groth 'at' nvidia.com)
17
18Status
19
20 Complete.
21
22Version
23
24 Version 3, 2011/10/31
25
26Number
27
daniel@transgaming.com55693832012-01-17 14:28:13 +000028 EGL Extension #37
daniel@transgaming.com5933c442011-11-12 04:44:03 +000029
30Dependencies
31
32 Requires EGL 1.4
33
34 Written against the EGL 1.4 specification.
35
36 An OpenGL implementation supporting GL_ARB_robustness, an OpenGL ES
37 implementation supporting GL_EXT_robustness, or an implementation
38 supporting equivalent functionality is required.
39
40Overview
41
42 This extension allows creating an OpenGL or OpenGL ES context
43 supporting robust buffer access behavior and a specified graphics
44 reset notification behavior.
45
46New Procedures and Functions
47
48 None
49
50New Tokens
51
52 Accepted as an attribute name in the <*attrib_list> argument to
53 eglCreateContext:
54
55 EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
56 EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
57
58 Accepted as an attribute value for EGL_CONTEXT_RESET_NOTIFICATION_-
59 STRATEGY_EXT in the <*attrib_list> argument to eglCreateContext:
60
61 EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
62 EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
63
64Additions to the EGL 1.4 Specification
65
66 Replace section 3.7.1 "Creating Rendering Contexts" from the
67 fifth paragraph through the seventh paragraph:
68
69 <attrib_list> specifies a list of attributes for the context. The
70 list has the same structure as described for eglChooseConfig. If an
71 attribute is not specified in <attrib_list>, then the default value
72 specified below is used instead. <attrib_list> may be NULL or empty
73 (first attribute is EGL_NONE), in which case attributes assume their
74 default values as described below. Most attributes are only meaningful
75 for specific client APIs, and will generate an EGL_BAD_ATTRIBUTE
76 error when specified to create for another client API context.
77
78 Context Versions
79 ----------------
80
81 EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL ES
82 context to create. This attribute may only be specified when creating
83 an OpenGL ES context (e.g. when the current rendering API is
84 EGL_OPENGL_ES_API). An attribute value of 1 specifies creation of an
85 OpenGL ES 1.x context. An attribute value of 2 specifies creation of an
86 Open GL ES 2.x context. The default value for EGL_CONTEXT_CLIENT_VERSION
87 is 1.
88
89 Context Robust Access
90 -------------
91
92 EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT indicates whether <robust buffer
93 access> should be enabled for the OpenGL ES context. Robust buffer
94 access is defined in the GL_EXT_robustness extension specification,
95 and the resulting context must support GL_EXT_robustness and robust
96 buffer access as described therein. The default value of
97 EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT is EGL_FALSE.
98
99 Context Reset Notification
100 --------------------------
101
102 The attribute name EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_-
103 EXT specifies the <reset notification behavior> of the rendering
104 context. This attribute is only meaningful for OpenGL ES contexts,
105 and specifying it for other types of contexts will generate an
106 EGL_BAD_ATTRIBUTE error.
107
108 Reset notification behavior is defined in the GL_EXT_robustness
109 extension for OpenGL ES, and the resulting context must support
110 GL_EXT_robustness and the specified reset strategy. The attribute
111 value may be either EGL_NO_RESET_NOTIFICATION_EXT or EGL_LOSE_-
112 CONTEXT_ON_RESET_EXT, which respectively result in disabling
113 delivery of reset notifications or the loss of all context state
114 upon reset notification as described by the GL_EXT_robustness. The
115 default value for EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT
116 is EGL_NO_RESET_NOTIFICATION_EXT.
117
118 Add to the eglCreateContext context creation errors:
119
120 * If <config> does not support a client API context compatible
121 with the requested context flags and context reset notification
122 behavior (for client API types where these attributes are
123 supported), then an EGL_BAD_CONFIG error is generated.
124
125 * If the reset notification behavior of <share_context> and the
126 newly created context are different then an EGL_BAD_MATCH error is
127 generated.
128
129
130Errors
131
132 EGL_BAD_CONFIG is generated if EGL_CONTEXT_OPENGL_ROBUST_ACCESS_-
133 EXT is set to EGL_TRUE and no GL context supporting the GL_EXT_-
134 robustness extension and robust access as described therein can be
135 created.
136
137 EGL_BAD_CONFIG is generated if no GL context supporting the
138 GL_EXT_robustness extension and the specified reset notification
139 behavior (the value of attribute EGL_CONTEXT_RESET_NOTIFICATION_-
140 STRATEGY_EXT) can be created.
141
142 BAD_MATCH is generated if the reset notification behavior of
143 <share_context> does not match the reset notification behavior of
144 the context being created.
145
146New State
147
148 None
149
150Conformance Tests
151
152 TBD
153
154Sample Code
155
156 TBD
157
158Issues
159
160 None
161
162Revision History
163
164 Rev. Date Author Changes
165 ---- ------------ --------- ----------------------------------------
166 3 31 Oct 2011 groth Reverted to attribute for robust access. Now it's a
167 companion to rather than subset of KHR_create_context
168 2 11 Oct 2011 groth Merged ANGLE and NV extensions.
169 1 15 July 2011 groth Initial version