1Name 2 3 ANGLE_robust_resource_initialization 4 5Name Strings 6 7 GL_ANGLE_robust_resource_intialization 8 9Contributors 10 11 Geoff Lang, Google 12 Ken Russell, Google 13 14Contacts 15 16 Shannon Woods, Google (shannonwoods 'at' google.com) 17 18Status 19 20 Draft 21 22Version 23 24 Version 3, September 19, 2017 25 26Number 27 28 OpenGL ES Extension TBD 29 30Dependencies 31 32 OpenGL ES 2.0 is required. 33 34 This extension is written against the wording of the OpenGL ES 35 3.1 specification. 36 37 EGL_ANGLE_robust_initialization is required to request a 38 context that supports this extension, and resource initialization. 39 40Overview 41 42 This extension specifies the behavior for initialization of 43 resources such as textures and buffers to default values. This 44 initialization ensures that access will not be provided by the 45 GL to previously allocated data not owned by the application. 46 47New Types 48 49 None 50 51New Procedures and Functions 52 53 None 54 55New Tokens 56 57 Accepted by the <value> parameter of GetBooleanv, GetIntegerv, 58 GetFloatv, GetDoublev, GetInteger64v, and IsEnabled: 59 60 ROBUST_RESOURCE_INITIALIZATION_ANGLE 0x93A7 61 62Additions to Chapter 6 of the OpenGL ES 3.1 Specification (Buffer 63Objects) 64 65 Replace the last sentence of the first paragraph of section 6.2 66 "BufferData": 67 68 If <data> is NULL, and robust resource initialization is enabled, 69 the contents of the buffer object's data store are set to zero. 70 Otherwise, the contents of the buffer object's data store are 71 undefined. 72 73Additions to Chapter 8 of the OpenGL ES 3.1 Specification (Textures and 74Samplers) 75 76 Replace the first two sentances of the final paragraph in section 77 8.5.3 "Texture Image Structure": 78 79 If the <data> argument of TexImage2D or TexImage3D is NULL, and the 80 pixel unpack buffer object is zero, a two- or three-dimensional 81 texel array is created with the specified <target>, <level>, 82 <internalformat>, <border>, <width>, <height>, and <depth>. If 83 robust resource initialization is enabled, the contents of the image 84 are initialized as though a zero value were provided for each 85 component of each pixel, and processed and transferred to the GL 86 as described above. The components comprising this zero-filled data 87 are determined by <internalformat>. If robust resource 88 initialization is not enabled, the image contents are undefined, and 89 no pixel processing is performed. In either case, no pixel values 90 are accessed in client memory. 91 92 Replace the first sentence of the fifth paragraph in section 8.8 93 "Multisample Textures": 94 95 Upon success, TexStorage2DMultisample deletes any existing image 96 for target. If robust resource initialization is enabled, the 97 contents of each texel are initialized as though a zero value were 98 written to each channel of each sample; otherwise the contents of 99 texels are undefined. 100 101 Add to the final paragraph of section 8.17 "Immutable-Format Texture 102 Images": 103 104 If robust resource initialization is enabled, the contents of each 105 texel is initialized as though a zero value were provided for each 106 component of each pixel, and processed and transferred to the GL 107 as for a call to the appropriate TexSubImage* call for <target>. 108 Otherwise, the contents of texels are undefined. 109 110Additions to Chapter 9 of the OpenGL ES 3.1 Specification (Framebuffers 111and Framebuffer Objects) 112 113 Replace the sentence in section 9.2.4 "Renderbuffer Objects" 114 beginning "Upon success, RenderbufferStorageMultisample": 115 116 Upon success, RenderbufferStorageMultisample deletes any existing 117 data store for the renderbuffer image. If robust resource 118 initialization is enabled, the contents of each pixel in the data 119 store are initialized as though a zero value was written to each 120 channel of each sample; otherwise, the contents of the data store 121 are undefined. 122 123Interactions with EGL_ANGLE_create_context_robust_resource_initialization 124 125 If the EGL window-system binding API is used to create a context, 126 the EGL_ANGLE_create_context_robust_initialization extension is 127 supported, and the attribute 128 EGL_CONTEXT_ROBUST_RESOURCE_INITIALIZATION_ANGLE is set to 129 EGL_TRUE when eglCreateContext is called, the resulting context 130 will perform robust resource initialization as described above in 131 section <section>, and the 132 CONTEXT_ROBUST_RESOURCE_INITIALIZATION_ANGLE 133 query will return GL_TRUE as described above in section 2.6.1.1. 134 Otherwise queries will return GL_FALSE. 135 136Issues 137 138 None 139 140Revision History 141 142 Version 1, 2015/01/07 - first draft. 143 Version 2, 2017/03/07 - fixed EGL naming and added IsEnabled. 144 Version 3, 2017/09/19 - name cleanup. 145