xref: /aosp_15_r20/external/angle/extensions/EGL_ANGLE_robust_resource_initialization.txt (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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 values of
82    the surface are initialized.  If its value is EGL_TRUE then all pixel and
83    stencil values in the surface are initialized to zero, depth values are
84    initialized to 1.0. Otherwise the contents are undefined. The default value
85    of 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    "... If EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is EGL_TRUE, following
96    conditions apply. If EGL_SWAP_BEHAVIOR attribute is not
97    EGL_BUFFER_PRESERVED, color and stencil buffer values are set to zero, depth
98    buffer values are set to 1.0. Otherwise, color and ancillary buffer values
99    preserved.
100
101    If EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is EGL_FALSE, the contents of
102    ancillary buffers are always undefined after calling eglSwapBuffers. ...
103    "
104
105Issues
106
107    (1) Should this be a Display or Context creation extension?
108
109    RESOLVED (3): Making this a Context creation extension has complications in
110    the implementation - what happens to resources shared between Contexts
111    with and without the extension enabled? Also for display-created resources,
112    such as those used in the D3D11 SwapChain, there's no way to specify if
113    we want them robustly initialized. Hence it is clearer to specify this
114    extension as a Display extension.
115
116    RESOLVED (4): This extension has been moved back to a context/surface
117    creation attribute. This makes the extension much easier to detect before
118    the GL context is created.
119
120Revision History
121
122    Version 1, 2015/01/07 - first draft.
123    Version 2, 2017/03/01 - renamed extension and enum.
124    Version 3, 2017/05/31 - renamed extension and made into display extension.
125    Version 4, 2017/09/19 - renamed extension and changed into a
126                            context/surface creation attribute.
127    Version 5, 2024/09/21 - specified that depth values are initialized to 1.0
128                            specified that stencil values are initialized to 0.0
129