Name ANGLE_robust_resource_initialization Name Strings GL_ANGLE_robust_resource_intialization Contributors Geoff Lang, Google Ken Russell, Google Contacts Shannon Woods, Google (shannonwoods 'at' google.com) Status Draft Version Version 3, September 19, 2017 Number OpenGL ES Extension TBD Dependencies OpenGL ES 2.0 is required. This extension is written against the wording of the OpenGL ES 3.1 specification. EGL_ANGLE_robust_initialization is required to request a context that supports this extension, and resource initialization. Overview This extension specifies the behavior for initialization of resources such as textures and buffers to default values. This initialization ensures that access will not be provided by the GL to previously allocated data not owned by the application. New Types None New Procedures and Functions None New Tokens Accepted by the parameter of GetBooleanv, GetIntegerv, GetFloatv, GetDoublev, GetInteger64v, and IsEnabled: ROBUST_RESOURCE_INITIALIZATION_ANGLE 0x93A7 Additions to Chapter 6 of the OpenGL ES 3.1 Specification (Buffer Objects) Replace the last sentence of the first paragraph of section 6.2 "BufferData": If is NULL, and robust resource initialization is enabled, the contents of the buffer object's data store are set to zero. Otherwise, the contents of the buffer object's data store are undefined. Additions to Chapter 8 of the OpenGL ES 3.1 Specification (Textures and Samplers) Replace the first two sentances of the final paragraph in section 8.5.3 "Texture Image Structure": If the argument of TexImage2D or TexImage3D is NULL, and the pixel unpack buffer object is zero, a two- or three-dimensional texel array is created with the specified , , , , , , and . If robust resource initialization is enabled, the contents of the image are initialized as though a zero value were provided for each component of each pixel, and processed and transferred to the GL as described above. The components comprising this zero-filled data are determined by . If robust resource initialization is not enabled, the image contents are undefined, and no pixel processing is performed. In either case, no pixel values are accessed in client memory. Replace the first sentence of the fifth paragraph in section 8.8 "Multisample Textures": Upon success, TexStorage2DMultisample deletes any existing image for target. If robust resource initialization is enabled, the contents of each texel are initialized as though a zero value were written to each channel of each sample; otherwise the contents of texels are undefined. Add to the final paragraph of section 8.17 "Immutable-Format Texture Images": If robust resource initialization is enabled, the contents of each texel is initialized as though a zero value were provided for each component of each pixel, and processed and transferred to the GL as for a call to the appropriate TexSubImage* call for . Otherwise, the contents of texels are undefined. Additions to Chapter 9 of the OpenGL ES 3.1 Specification (Framebuffers and Framebuffer Objects) Replace the sentence in section 9.2.4 "Renderbuffer Objects" beginning "Upon success, RenderbufferStorageMultisample": Upon success, RenderbufferStorageMultisample deletes any existing data store for the renderbuffer image. If robust resource initialization is enabled, the contents of each pixel in the data store are initialized as though a zero value was written to each channel of each sample; otherwise, the contents of the data store are undefined. Interactions with EGL_ANGLE_create_context_robust_resource_initialization If the EGL window-system binding API is used to create a context, the EGL_ANGLE_create_context_robust_initialization extension is supported, and the attribute EGL_CONTEXT_ROBUST_RESOURCE_INITIALIZATION_ANGLE is set to EGL_TRUE when eglCreateContext is called, the resulting context will perform robust resource initialization as described above in section
, and the CONTEXT_ROBUST_RESOURCE_INITIALIZATION_ANGLE query will return GL_TRUE as described above in section 2.6.1.1. Otherwise queries will return GL_FALSE. Issues None Revision History Version 1, 2015/01/07 - first draft. Version 2, 2017/03/07 - fixed EGL naming and added IsEnabled. Version 3, 2017/09/19 - name cleanup.