Name

    EXT_EGL_image_array

Name Strings

    GL_EXT_EGL_image_array

Contact

    Jeff Leger, Qualcomm Technologies Inc. (jleger@qti.qualcomm.com)

Contributors

    Sam Holmes
    Jesse Hall
    Tate Hornbeck
    Daniel Koch

Status

    Complete

Version

    Last Modified Date: July 28, 2017
    Revision: 0.5

Number

    OpenGL ES Extension #278

Dependencies

    OpenGL ES 2.0 is required.

    Requires EGL 1.2 and either the EGL_KHR_image or EGL_KHR_image_base
    extensions as well as OES_EGL_image.

    This extension is written against the OpenGL ES 2.0 specification and
    the OES_EGL_image extension.

Overview

    This extension adds functionality to that provided by OES_EGL_image in
    order to support EGLImage 2D arrays. It extends the existing
    EGLImageTargetTexture2DOES entry point from OES_EGL_image. Render buffers
    are not extended to include array support.

    EGLImage 2D arrays can be created using extended versions of eglCreateImageKHR.
    For example, EGL_ANDROID_image_native_buffer can import image array native buffers
    on devices where such native buffers can be created.

New Procedures and Functions

    None.

New Tokens

    None.

Additions to Chapter 3 of the OpenGL ES 2.0 Specification

    In section 3.8.2 within the specification added by OES_EGL_Image:

        "Currently, <target> must be TEXTURE_2D or TEXTURE_2D_ARRAY."

Errors

    GL_INVALID_ENUM is generated by EGLImageTargetTexture2DOES if
     <target> is not TEXTURE_2D or TEXTURE_2D_ARRAY

    GL_INVALID_OPERATION is generated by EGLImageTargetTexture2DOES if
    <target> is not TEXTURE_2D_ARRAY and <image> has more than 1 layer.

Issues

    None.

Revision History

      Rev.  Date        Author    Changes
      ----  ----------  --------  -----------------------------------------
      0.1   06/03/2016  Sam       Initial draft
      0.2   03/09/2017  Sam       Update contact
      0.3   03/21/2017  Tate      Update errors
      0.4   03/28/2017  Jeff      Minor formatting updates.
      0.5   07/28/2017  Jeff      Fix reference to external extension.
