Name

    ANGLE_robust_resource_initialization

Name Strings

    GL_ANGLE_robust_resource_initialization

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

    Accepted by the <pname> parameter of GetTexParameteriv,
    GetTexParameterfv, GetTexLevelParameteriv, GetTexLevelParameterfv,
    GetRenderbufferParameteriv, GetBufferParameteriv and
    GetBufferParameteri64v:

        RESOURCE_INITIALIZED_ANGLE           0x969F


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.

    Add to Table 6.2: Buffer object parameters and their values:

    Name                        Type     Initial Value  Legal Values
    ----                        ----     -------------  ------------
    RESOURCE_INITIALIZED_ANGLE  boolean  TRUE           TRUE, FALSE

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.

    Add to Table 8.20: Texture parameters and their values:

    Name                        Type     Legal Values
    ----                        ----     ------------
    RESOURCE_INITIALIZED_ANGLE  boolean  TRUE, FALSE

    Add to the end of section 8.10.3 "Texture Level Parameter Queries":

    Queries of pname RESOURCE_INITIALIZED_ANGLE return the initialization
    state of the image.

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.

    Add to the end of section 9.2.6 "Renderbuffer Object Queries":

    If pname is RESOURCE_INITIALIZED_ANGLE then params will contain the
    initialization state of the renderbuffer currently bound to target.

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.

New State

    (add to Table 20.4: Buffer Object State)

                                                                          Initial
    Get Value                            Type   Get Command                Value   Description                  Sec.
    ----------------------               ----   -------------------        ------  ---------------------------  ------
    RESOURCE_INITIALIZED_ANGLE            B     GetBufferParameteriv       TRUE    Buffer data has been         6.6
                                                                                   initialized

    (add to Table 20.9: Textures (state per texture object))

                                                                          Initial
    Get Value                            Type   Get Command                Value   Description                  Sec.
    ----------------------               ----   -------------------        ------  ---------------------------  ------
    RESOURCE_INITIALIZED_ANGLE            B     GetTexParameteriv          TRUE    All specified images have    8.10.2
                                                                                   been initialized

    (add to Table 20.10 Textures (state per texture image))

                                                                          Initial
    Get Value                            Type   Get Command                Value   Description                  Sec.
    ----------------------               ----   -------------------        ------  ---------------------------  ------
    RESOURCE_INITIALIZED_ANGLE            B     GetTexLevelParameteriv     TRUE    Image data has been          8.10.3
                                                                                   initialized

    (add to Table 20.16: Renderbuffer (state per renderbuffer object))

                                                                          Initial
    Get Value                            Type   Get Command                Value   Description                  Sec.
    ----------------------               ----   -------------------        ------  ---------------------------  ------
    RESOURCE_INITIALIZED_ANGLE            B     GetRenderbufferParameteriv TRUE    Renderbuffer data has been   9.2.6
                                                                                   initialized

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.
    Version 4, 2020/10/12 - Add RESOURCE_INITIALIZED_ANGLE queries.
