Alexis Hetu | c80eada | 2018-02-13 15:02:40 -0500 | [diff] [blame] | 1 | Name |
| 2 | |
| 3 | ANGLE_iosurface_client_buffer |
| 4 | |
| 5 | Name Strings |
| 6 | |
| 7 | EGL_ANGLE_iosurface_client_buffer |
| 8 | |
| 9 | Contributors |
| 10 | |
| 11 | Corentin Wallez |
| 12 | Geoff Lang |
| 13 | |
| 14 | Contacts |
| 15 | |
| 16 | Corentin Wallez, Google Inc. (cwallez 'at' google.com) |
| 17 | |
| 18 | Status |
| 19 | |
| 20 | Draft |
| 21 | |
| 22 | Version |
| 23 | |
| 24 | Version 1, Dec 6, 2017 |
| 25 | |
| 26 | Number |
| 27 | |
| 28 | EGL Extension #?? |
| 29 | |
| 30 | Dependencies |
| 31 | |
| 32 | This extension is written against the wording of the EGL 1.4 |
| 33 | Specification. |
| 34 | |
| 35 | Overview |
| 36 | |
| 37 | This extension allows creating EGL surfaces from IOSurface objects. |
| 38 | |
| 39 | New Types |
| 40 | |
| 41 | None |
| 42 | |
| 43 | New Procedures and Functions |
| 44 | |
| 45 | None |
| 46 | |
| 47 | New 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 | |
| 57 | Additions 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 | |
| 116 | Issues |
| 117 | |
| 118 | There are no issues, please move on. |
| 119 | |
| 120 | Revision History |
| 121 | |
| 122 | Version 1, 2017/12/06 - first draft. |