Add the EGL_ANGLE_iosurface_client_buffer extension text
BUG=angleproject:1649
Change-Id: Ie613ae835ea3e7c590f74429bdd36f7a42045131
Reviewed-on: https://chromium-review.googlesource.com/811905
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/extensions/EGL_ANGLE_d3d_texture_client_buffer.txt b/extensions/EGL_ANGLE_d3d_texture_client_buffer.txt
index df3201c..1b0a99f 100644
--- a/extensions/EGL_ANGLE_d3d_texture_client_buffer.txt
+++ b/extensions/EGL_ANGLE_d3d_texture_client_buffer.txt
@@ -89,7 +89,7 @@
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
DXGI_FORMAT_R16G16B16A16_FLOAT or
DXGI_FORMAT_R32G32B32A32_FLOAT.
- --------------------------------------------------------------------------
+ --------------------------------------------------------------------------
Table egl.restrictions - Restrictions on D3D resources that can be used
as a <buffer>.
--------------------------------------------------------------------------
diff --git a/extensions/EGL_ANGLE_iosurface_client_buffer.txt b/extensions/EGL_ANGLE_iosurface_client_buffer.txt
new file mode 100644
index 0000000..dcbcc48
--- /dev/null
+++ b/extensions/EGL_ANGLE_iosurface_client_buffer.txt
@@ -0,0 +1,122 @@
+Name
+
+ ANGLE_iosurface_client_buffer
+
+Name Strings
+
+ EGL_ANGLE_iosurface_client_buffer
+
+Contributors
+
+ Corentin Wallez
+ Geoff Lang
+
+Contacts
+
+ Corentin Wallez, Google Inc. (cwallez 'at' google.com)
+
+Status
+
+ Draft
+
+Version
+
+ Version 1, Dec 6, 2017
+
+Number
+
+ EGL Extension #??
+
+Dependencies
+
+ This extension is written against the wording of the EGL 1.4
+ Specification.
+
+Overview
+
+ This extension allows creating EGL surfaces from IOSurface objects.
+
+New Types
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted in the <buftype> parameter of eglCreatePbufferFromClientBuffer:
+
+ EGL_IOSURFACE_ANGLE 0x3454
+ EGL_IOSURFACE_PLANE_ANGLE 0x345A
+ EGL_TEXTURE_RECTANGLE_ANGLE 0x345B
+ EGL_TEXTURE_TYPE_ANGLE 0x345C
+ EGL_TEXTURE_INTERNAL_FORMAT_ANGLE 0x345D
+
+Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
+
+ Replace the last sentence of paragraph 1 of Section 3.5.3 with the
+ following text.
+ "Currently, the only client API resources which may be bound in this
+ fashion are OpenVG VGImage objects and IOSurface objects."
+
+ Replace the third paragraph of Section 3.5.3 with the following text.
+ "<buftype> specifies the type of buffer to be bound. The only allowed values
+ of <buftype> are EGL_OPENVG_IMAGE and EGL_IOSURFACE_ANGLE".
+
+ Append the following text to the fourth paragraph of Section 3.5.3.
+ "When <buftype> is EGL_IOSURFACE_ANGLE, <buffer> must be a valid IOSurface
+ object case into the type EGLClientBuffer."
+
+ Append to the end of Section 3.5.3.
+ "When <buftype> is EGL_IOSURFACE_ANGLE, <attrib_list> must contain all the
+ following attributes under the following constraints otherwise
+ EGL_BAD_PARAMETER is generated:
+ - EGL_TEXTURE_FORMAT, EGL_TEXTURE_TYPE_ANGLE, and
+ EGL_TEXTURE_INTERNAL_FORMAT_ANGLE followed by OpenGL enums for texture
+ formats, texture types, and texture internal format respectively.
+ - EGL_WIDTH with a value between 1 and the width of <buffer>.
+ - EGL_HEIGHT with a value between 1 and the width of <buffer>.
+ - EGL_TEXTURE_TARGET with a value of EGL_TEXTURE_RECTANGLE_ANGLE
+ - EGL_IOSURFACE_PLANE_ANGLE with a value between 0 and the number of
+ planes of <buffer> (exclusive).
+
+ In addition the EGL_TEXTURE_FORMAT, EGL_TEXTURE_TYPE_ANGLE and
+ EGL_TEXTURE_INTERNAL_FORMAT_ANGLE attributes must be one of the
+ combinations listed in table egl.iosurface.formats or an
+ EGL_BAD_PARAMETER is generated. The combination must also be a valid
+ combinations for glTexImage2D or EGL_BAD_PARAMETER is generated."
+
+ ---------------------------------------------------------------------------
+ Texture Format Texture Type Texture Internal Format
+ ---------------------------------------------------------------------------
+ GL_RED GL_UNSIGNED_BYTE GL_RED
+ GL_RED GL_UNSIGNED_SHORT GL_R16UI
+ GL_RG GL_UNSIGNED_BYTE GL_RG
+ GL_BGRA GL_UNSIGNED_INT_8_8_8_8_REV GL_RGBA
+ GL_BGRA GL_UNSIGNED_INT_8_8_8_8_REV GL_RGBA
+ GL_BGRA GL_UNSIGNED_INT_8_8_8_8_REV GL_RGBA
+ GL_RGBA GL_HALF_FLOAT GL_RGBA
+ ---------------------------------------------------------------------------
+ Table egl.iosurface.formats - Valid combinations of format, type and
+ internal format for IOSurface-backed pbuffers.
+ ---------------------------------------------------------------------------
+
+ Append to the end of Section 3.5.3.
+ "When a pbuffer is created with type EGL_IOSURFACE_ANGLE, the contents
+ of the associcated IOSurface object are undefined while the pbuffer is
+ bound to a client texture."
+
+ Append to the list of errors generated by eglMakeCurrent in Section 3.7.3:
+ " - If either draw or read are pbuffers created with
+ eglCreatePbufferFromClientBuffer with <buftype> set to EGL_IOSURFACE_ANGLE,
+ an EGL_BAD_SURFACE is generated."
+
+Issues
+
+ There are no issues, please move on.
+
+Revision History
+
+ Version 1, 2017/12/06 - first draft.