blob: 692f721e82f94db40b4090dba135c4e549d6ef7c [file] [log] [blame]
Alexis Hetuc80eada2018-02-13 15:02:40 -05001Name
2
3 ANGLE_iosurface_client_buffer
4
5Name Strings
6
7 EGL_ANGLE_iosurface_client_buffer
8
9Contributors
10
11 Corentin Wallez
12 Geoff Lang
13
14Contacts
15
16 Corentin Wallez, Google Inc. (cwallez 'at' google.com)
17
18Status
19
20 Draft
21
22Version
23
24 Version 1, Dec 6, 2017
25
26Number
27
28 EGL Extension #??
29
30Dependencies
31
32 This extension is written against the wording of the EGL 1.4
33 Specification.
34
35Overview
36
37 This extension allows creating EGL surfaces from IOSurface objects.
38
39New Types
40
41 None
42
43New Procedures and Functions
44
45 None
46
47New Tokens
48
49 Accepted in the <buftype> parameter of eglCreatePbufferFromClientBuffer:
50
51 EGL_IOSURFACE_ANGLE 0x3454
52 EGL_IOSURFACE_PLANE_ANGLE 0x345A
53 EGL_TEXTURE_RECTANGLE_ANGLE 0x345B
54 EGL_TEXTURE_TYPE_ANGLE 0x345C
55 EGL_TEXTURE_INTERNAL_FORMAT_ANGLE 0x345D
56
57Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
58
59 Replace the last sentence of paragraph 1 of Section 3.5.3 with the
60 following text.
61 "Currently, the only client API resources which may be bound in this
62 fashion are OpenVG VGImage objects and IOSurface objects."
63
64 Replace the third paragraph of Section 3.5.3 with the following text.
65 "<buftype> specifies the type of buffer to be bound. The only allowed values
66 of <buftype> are EGL_OPENVG_IMAGE and EGL_IOSURFACE_ANGLE".
67
68 Append the following text to the fourth paragraph of Section 3.5.3.
69 "When <buftype> is EGL_IOSURFACE_ANGLE, <buffer> must be a valid IOSurface
70 object case into the type EGLClientBuffer."
71
72 Append to the end of Section 3.5.3.
73 "When <buftype> is EGL_IOSURFACE_ANGLE, <attrib_list> must contain all the
74 following attributes otherwise EGL_BAD_PARAMETER is generated. The
75 attributes must satisfy the following constraints otherwise
76 EGL_BAD_ATTRIBUTE is generated:
77 - EGL_TEXTURE_TYPE_ANGLE, and EGL_TEXTURE_INTERNAL_FORMAT_ANGLE followed
78 by OpenGL enums for texture types, and texture internal format
79 respectively.
80 - EGL_TEXTURE_FORMAT with a value of EGL_TEXTURE_RGBA
81 - EGL_WIDTH with a value between 1 and the width of <buffer>.
82 - EGL_HEIGHT with a value between 1 and the height of <buffer>.
83 - EGL_TEXTURE_TARGET with a value of EGL_TEXTURE_RECTANGLE_ANGLE
84 - EGL_IOSURFACE_PLANE_ANGLE with a value between 0 and the number of
85 planes of <buffer> (exclusive).
86
87 In addition the EGL_TEXTURE_TYPE_ANGLE and
88 EGL_TEXTURE_INTERNAL_FORMAT_ANGLE attributes must be one of the
89 combinations listed in table egl.iosurface.formats or an
90 EGL_BAD_PARAMETER is generated. The combination must also be a valid
91 combinations for glTexImage2D or EGL_BAD_PARAMETER is generated."
92
93 ---------------------------------------------------------------------------
94 Texture Type Texture Internal Format
95 ---------------------------------------------------------------------------
96 GL_UNSIGNED_BYTE GL_RED
97 GL_UNSIGNED_SHORT GL_R16UI
98 GL_UNSIGNED_BYTE GL_RG
99 GL_UNSIGNED_BYTE GL_BGRA_EXT
100 GL_HALF_FLOAT GL_RGBA
101 ---------------------------------------------------------------------------
102 Table egl.iosurface.formats - Valid combinations of format, type and
103 internal format for IOSurface-backed pbuffers.
104 ---------------------------------------------------------------------------
105
106 Append to the end of Section 3.5.3.
107 "When a pbuffer is created with type EGL_IOSURFACE_ANGLE, the contents
108 of the associcated IOSurface object are undefined while the pbuffer is
109 bound to a client texture."
110
111 Append to the list of errors generated by eglMakeCurrent in Section 3.7.3:
112 " - If either draw or read are pbuffers created with
113 eglCreatePbufferFromClientBuffer with <buftype> set to EGL_IOSURFACE_ANGLE,
114 an EGL_BAD_SURFACE is generated."
115
116Issues
117
118 There are no issues, please move on.
119
120Revision History
121
122 Version 1, 2017/12/06 - first draft.