Name ANGLE_robust_resource_initialization Name Strings EGL_ANGLE_robust_resource_initialization Contributors Geoff Lang, Google Ken Russell, Google Contacts Shannon Woods, Google (shannonwoods 'at' google.com) Status Draft Version Version 4, September 19, 2017 Number EGL Extension TBD Dependencies This extension is written against the wording of the EGL 1.5 specification. An OpenGL ES implementation supporting ANGLE_robust_resource_initialization or an implementation supporting equivalent functionality is required. Overview This extension allows creating an OpenGL ES context or EGL surface supporting robust resource initialization. New Types None New Procedures and Functions None New Tokens Accepted as an attribute name by eglCreateContext, eglQueryContext, eglCreateWindowSurface, eglCreatePbufferSurface, eglCreatePixmapSurface, and eglQuerySurface: EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE 0x3453 Additions to the EGL 1.5 Specification Add a new section entitled "OpenGL ES Robust Resource Initialization" to section 3.7.1: "If the attribute EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is set to EGL_TRUE, a context supporting will be created. OpenGL ES contexts must support the ANGLE_robust_resource_initialization extension, or equivalent core API functionality. This attribute is supported only for OpenGL ES contexts. The default value of EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is EGL_FALSE." Add a new paragraph to section 3.7.4 "Context Queries" under eglQueryContext: "Querying EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE returns if the context was created using robust initialization." Add a new paragrah to section 3.5.1 "Creating On-Screen Rendering Surfaces" and section 3.5.2 "Creating Off-Screen Rendering Surfaces": "EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE specifies if the pixel values of the surface are initialized. If its value is EGL_TRUE then all pixel values in the surface are initialized to zero, otherwise the contents are undefined. The default value of EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is EGL_FALSE." Add a new paragrah to section 3.5.6 "Surface Attributes" under eglQuerySurface: "Querying EGL_CONTEXT_ROBUST_RESOURCE_INITIALIZATION_ANGLE returns if the surface was created using robust initialization." Modify the 2nd paragraph of section 3.10.1 "Posting to a Window": "... The contents of the color buffer are undefined if the value of the EGL_SWAP_BEHAVIOR attribute of surface is not EGL_BUFFER_PRESERVED and the value of the EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is EGL_FALSE. ..." Issues (1) Should this be a Display or Context creation extension? RESOLVED (3): Making this a Context creation extension has complications in the implementation - what happens to resources shared between Contexts with and without the extension enabled? Also for display-created resources, such as those used in the D3D11 SwapChain, there's no way to specify if we want them robustly initialized. Hence it is clearer to specify this extension as a Display extension. RESOLVED (4): This extension has been moved back to a context/surface creation attribute. This makes the extension much easier to detect before the GL context is created. Revision History Version 1, 2015/01/07 - first draft. Version 2, 2017/03/01 - renamed extension and enum. Version 3, 2017/05/31 - renamed extension and made into display extension. Version 4, 2017/09/19 - renamed extension and changed into a context/surface creation attribute.