blob: 65aad5911d35a295c81cf88fc3e565c92d8bd5ec [file] [log] [blame]
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 <robust resource initialization>
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 and
stencil values in the surface are initialized to zero, depth values are
initialized to 1.0. 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":
"... If EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is EGL_TRUE, following
conditions apply. If EGL_SWAP_BEHAVIOR attribute is not
EGL_BUFFER_PRESERVED, color and stencil buffer values are set to zero, depth
buffer values are set to 1.0. Otherwise, color and ancillary buffer values
preserved.
If EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE is EGL_FALSE, the contents of
ancillary buffers are always undefined after calling eglSwapBuffers. ...
"
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.
Version 5, 2024/09/21 - specified that depth values are initialized to 1.0
specified that stencil values are initialized to 0.0