Name IMG_image_plane_attribs Name Strings EGL_IMG_image_plane_attribs Contributors Ben Bowman Alistair Strachan Contacts Tobias Hector, Imagination Technologies (tobias 'dot' hector 'at' imgtec 'dot' com) Status Complete Version Version 0.4, October 18, 2015 Number EGL Extension #95 Dependencies EGL_KHR_image_base is required. One of EGL_KHR_image, EGL_KHR_image_pixmap or EGL_ANDROID_image_native_buffer is required. This extension is written against the wording of the EGL 1.2 Specification as modified by EGL_KHR_image_base, EGL_ANDROID_image_native_buffer and EGL_KHR_image_pixmap. This extension interacts with GL_OES_EGL_image and GL_EXT_texture_rg. Overview This extension allows creating an EGLImage from a single plane of a multi-planar Android native image buffer (ANativeWindowBuffer) or a native pixmap (EGLNativePixmap). New Types None New Procedures and Functions None New Tokens Accepted by the parameter of eglCreateImageKHR: EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105 EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106 Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation) Add to section 2.5.1 "EGLImage Specification" (as defined by the EGL_KHR_image_base specification), in the description of eglCreateImageKHR: Add the following to Table bbb (Legal attributes for eglCreateImageKHR parameter), Section 2.5.1 (EGLImage Specification) +-----------------------------+-------------------------+---------------------------+---------------+ | Attribute | Description | Valid s | Default Value | +-----------------------------+-------------------------+---------------------------+---------------+ | EGL_NATIVE_BUFFER_MULTI | Whether a multiplane | EGL_NATIVE_BUFFER_ANDROID | EGL_FALSE | | PLANE_SEPARATE_IMG | native buffer should be | EGL_NATIVE_PIXMAP_KHR | | | | treated as separate | | | | | buffers | | | | | | | | | EGL_NATIVE_BUFFER_ | Which plane of a multi- | EGL_NATIVE_BUFFER_ANDROID | 0 | | PLANE_OFFSET_IMG | plane native buffer is | EGL_NATIVE_PIXMAP_KHR | | | | used as the EGLImage | | | | | source | | | +-----------------------------+-------------------------+---------------------------+---------------+ Table bbb. Legal attributes for eglCreateImageKHR parameter ... If is EGL_NATIVE_BUFFER_ANDROID or EGL_NATIVE_PIXMAP_KHR, and is a handle to a valid multi-planar surface, such as a YUV420 2 or 3 planar video surface, an EGLImage will be created from only one of the planes, as opposed to a single image representing all of the planes as is normally the case. The intention of this extension is that a call to glEGLImageTargetTexture2DOES or EGLImageTargetRenderbufferStorageOES with an EGLImage created from a single plane of a multiplanar buffer will result in a GL_RED or GL_RG texture or renderbuffer, depending on the format of the multiplanar buffer. This allows an application to work directly in the YUV colorspace, rather than forcing a conversion to the linear RGB colorspace, potentially losing precision. The size of each image will represent the actual size of the data buffer for that plane which may mean that the size of an EGLImage created from plane 0 of a multi-planar buffer may not be the same as that of one created from plane 1, which is determined by the YUV's sampling ratio (e.g. a 420 will have planes 1 and 2, if present, represented by an image of half the width). Add to the list of error conditions for eglCreateImageKHR: "* If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_TRUE, and is not EGL_NATIVE_BUFFER_ANDROID or EGL_NATIVE_PIXMAP_KHR, the error EGL_BAD_PARAMETER is generated. * If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_TRUE, and EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG is greater than or equal to the number of planes in , the error EGL_BAD_MATCH is generated. * If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_FALSE, and EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG is greater than 0, the error EGL_BAD_PARAMETER is generated. * If EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG is EGL_TRUE, and the format of is not supported by the implementation, EGL_BAD_PARAMETER is generated." Dependencies on EGL_KHR_image_pixmap or EGL_KHR_image If neither of these extensions are supported, remove all references to native pixmaps and EGL_NATIVE_PIXMAP_KHR. Dependencies on EGL_ANDROID_image_native_buffer If this extension is not supported, remove all references to ANativeWindowBuffer and EGL_NATIVE_BUFFER_ANDROID. Issues None Revision History #0.4 (Tobias Hector, October, 2015) - Add interactions with EGL_KHR_image_pixmap/EGL_KHR_image - Added error language for unsupported formats #0.3 (Jon Leech, June 13, 2013) - Add a "Valid Targets" column to table bbb for new attributes, matching proposed changes in EGL_KHR_image_base (Bug 10151). Note that this change implies a new error will be generated when is not EGL_NATIVE_BUFFER_ANDROID and EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG is specified in ; this falls out from the generic target-attribute matching error added to EGL_KHR_image_base. #0.2 (Ben Bowman, May 30, 2012) - Fixed some typos #0.1 (Ben Bowman, May 30, 2012) - First draft of extension .