You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
8.1 KiB
210 lines
8.1 KiB
4 months ago
|
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.
|