blob: 30372ec8c676e7edc86e231fbd889409bf820f2d [file] [log] [blame]
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 <value> 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 <data> 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 <data> 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 <target>, <level>,
<internalformat>, <border>, <width>, <height>, and <depth>. 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 <internalformat>. 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 <target>.
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 <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.