1Name 2 3 ANGLE_robust_resource_initialization 4 5Name Strings 6 7 EGL_ANGLE_robust_resource_initialization 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 4, September 19, 2017 25 26Number 27 28 EGL Extension TBD 29 30Dependencies 31 32 This extension is written against the wording of the EGL 1.5 33 specification. 34 35 An OpenGL ES implementation supporting ANGLE_robust_resource_initialization 36 or an implementation supporting equivalent functionality is required. 37 38Overview 39 40 This extension allows creating an OpenGL ES context or EGL surface 41 supporting robust resource initialization. 42 43New Types 44 45 None 46 47New Procedures and Functions 48 49 None 50 51New Tokens 52 53 Accepted as an attribute name by eglCreateContext, eglQueryContext, 54 eglCreateWindowSurface, eglCreatePbufferSurface, eglCreatePixmapSurface, 55 and eglQuerySurface: 56 57 EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE 0x3453 58 59Additions to the EGL 1.5 Specification 60 61 Add a new section entitled "OpenGL ES Robust Resource Initialization" 62 to section 3.7.1: 63 64 "If the attribute EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE 65 is set to EGL_TRUE, a context supporting <robust resource initialization> 66 will be created. OpenGL ES contexts must support the 67 ANGLE_robust_resource_initialization extension, or equivalent core API 68 functionality. This attribute is supported only for OpenGL ES contexts. 69 The default value of EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE 70 is EGL_FALSE." 71 72 Add a new paragraph to section 3.7.4 "Context Queries" under 73 eglQueryContext: 74 75 "Querying EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE returns if 76 the context was created using robust initialization." 77 78 Add a new paragrah to section 3.5.1 "Creating On-Screen Rendering 79 Surfaces" and section 3.5.2 "Creating Off-Screen Rendering Surfaces": 80 81 "EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE specifies if the pixel 82 values of the surface are initialized. If its value is EGL_TRUE then all 83 pixel values in the surface are initialized to zero, otherwise the contents 84 are undefined. The default value of 85 EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is EGL_FALSE." 86 87 Add a new paragrah to section 3.5.6 "Surface Attributes" under 88 eglQuerySurface: 89 90 "Querying EGL_CONTEXT_ROBUST_RESOURCE_INITIALIZATION_ANGLE returns if 91 the surface was created using robust initialization." 92 93 Modify the 2nd paragraph of section 3.10.1 "Posting to a Window": 94 95 "... The contents of the color buffer are undefined if the value of the 96 EGL_SWAP_BEHAVIOR attribute of surface is not EGL_BUFFER_PRESERVED and 97 the value of the EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is 98 EGL_FALSE. ..." 99 100Issues 101 102 (1) Should this be a Display or Context creation extension? 103 104 RESOLVED (3): Making this a Context creation extension has complications in 105 the implementation - what happens to resources shared between Contexts 106 with and without the extension enabled? Also for display-created resources, 107 such as those used in the D3D11 SwapChain, there's no way to specify if 108 we want them robustly initialized. Hence it is clearer to specify this 109 extension as a Display extension. 110 111 RESOLVED (4): This extension has been moved back to a context/surface 112 creation attribute. This makes the extension much easier to detect before 113 the GL context is created. 114 115Revision History 116 117 Version 1, 2015/01/07 - first draft. 118 Version 2, 2017/03/01 - renamed extension and enum. 119 Version 3, 2017/05/31 - renamed extension and made into display extension. 120 Version 4, 2017/09/19 - renamed extension and changed into a 121 context/surface creation attribute.