daniel@transgaming.com | 5933c44 | 2011-11-12 04:44:03 +0000 | [diff] [blame] | 1 | Name |
| 2 | |
| 3 | EXT_create_context_robustness |
| 4 | |
| 5 | Name Strings |
| 6 | |
| 7 | EGL_EXT_create_context_robustness |
| 8 | |
| 9 | Contributors |
| 10 | |
| 11 | Daniel Koch, TransGaming |
| 12 | Contributors to EGL_KHR_create_context |
| 13 | |
| 14 | Contact |
| 15 | |
| 16 | Greg Roth (groth 'at' nvidia.com) |
| 17 | |
| 18 | Status |
| 19 | |
| 20 | Complete. |
| 21 | |
| 22 | Version |
| 23 | |
| 24 | Version 3, 2011/10/31 |
| 25 | |
| 26 | Number |
| 27 | |
daniel@transgaming.com | 5569383 | 2012-01-17 14:28:13 +0000 | [diff] [blame] | 28 | EGL Extension #37 |
daniel@transgaming.com | 5933c44 | 2011-11-12 04:44:03 +0000 | [diff] [blame] | 29 | |
| 30 | Dependencies |
| 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 | |
| 40 | Overview |
| 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 | |
| 46 | New Procedures and Functions |
| 47 | |
| 48 | None |
| 49 | |
| 50 | New 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 | |
| 64 | Additions 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 | |
| 130 | Errors |
| 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 | |
| 146 | New State |
| 147 | |
| 148 | None |
| 149 | |
| 150 | Conformance Tests |
| 151 | |
| 152 | TBD |
| 153 | |
| 154 | Sample Code |
| 155 | |
| 156 | TBD |
| 157 | |
| 158 | Issues |
| 159 | |
| 160 | None |
| 161 | |
| 162 | Revision 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 |