Name

    ANGLE_copy_texture_3d

Name Strings

    GL_ANGLE_copy_texture_3d

Contributors

    Brandon Jones, Intel

Contacts

    Brandon Jones, Intel (brandon1.jones 'at' intel 'dot' com)

Status

    Implemented.

Version

    Version 1, 2018-8-8

Dependencies

    OpenGL ES 3.0 required.

Overview

    This extension adds 3D texture support to the functionality
    provided by the CHROMIUM_copy_texture extension. Two new
    functions are exported, glCopyTexture3DANGLE and
    glCopySubTexture3DANGLE that perform the same copy operations as
    glCopyTextureCHROMIUM and glCopySubTextureCHROMIUM, respectively,
    on GL_TEXTURE_3D and GL_TEXTURE_2D_ARRAY bound textures.

New Procedures and Functions

    void CopyTexture3DANGLE(uint sourceId,
                            int sourceLevel,
                            enum destTarget,
                            uint destId,
                            int destLevel,
                            int internalFormat,
                            enum destType,
                            boolean unpackFlipY,
                            boolean unpackPremultiplyAlpha,
                            boolean unpackUnmultiplyAlpha)

    void CopySubTexture3DANGLE(uint sourceId,
                               int sourceLevel,
                               enum destTarget,
                               uint destId,
                               int destLevel,
                               int xoffset,
                               int yoffset,
                               int zoffset,
                               int x,
                               int y,
                               int z,
                               sizei width,
                               sizei height,
                               sizei depth,
                               boolean unpackFlipY,
                               boolean unpackPremultiplyAlpha,
                               boolean unpackUnmultiplyAlpha)

Additions to the OpenGL ES 3.0 Specification

    The command

        CopyTexture3DANGLE

    All CopyTexture3DANGLE behavior is the same as
    CopyTextureCHROMIUM unless otherwise defined below.

    When source texture doesn't contain a superset of the component
    required by <internalFormat>, fill the components by the
    following rules.

       source format           color components
       ----------------------------------------
       RED                     (R, 0, 0, 1)
       RED_INTEGER             (R, 0, 0, 1)
       RG                      (R, G, 0, 1)
       RG_INTEGER              (R, G, 0, 1)
       RGB                     (R, G, B, 1)
       RGB_INTEGER             (R, G, B, 1)
       RGBA                    (R, G, B, A)
       RGBA_INTEGER            (R, G, B, A)
       LUMINANCE_ALPHA         (L, L, L, A)
       LUMINANCE               (L, L, L, 1)
       ALPHA                   (0, 0, 0, A)

    INVALID_OPERATION is generated if the format of <sourceId> is not
    one of formats in Table 1.1.

    INVALID_ENUM is generated if <destTarget> is not TEXTURE_3D or
    TEXTURE_2D_ARRAY.

    INVALID_VALUE is generated if the texture corresponding to
    <sourceId> has not been bound as <destTarget>.

    INVALID_OPERATION is generated if <internalFormat> is not one of
    the sized internal formats in Table 1.0.

    The command

        CopySubTexture3DANGLE

    All CopySubTexture3DANGLE behavior is the same as
    CopySubTextureCHROMIUM unless otherwise defined below.

    <zoffset> specifies a texel offset in the z direction
    respectively within the destination texture.

    <z> specifies a texel offset in the z direction respectively
    within the source texture.

    <depth> specifies the depth of the texture subimage.

    INVALID_ENUM is generated if <destTarget> is not TEXTURE_3D or
    TEXTURE_2D_ARRAY.

    INVALID_VALUE is generated if the texture corresponding to
    <sourceId> and <destId> have not been bound as <destTarget>.

    INVALID_VALUE is generated if either <sourceId> texture or
    <destId> texture is not defined.

    INVALID_OPERATION is generated if the format of <sourceId> or
    <destId> is not one of formats in Table 1.1.

    INVALID_VALUE is generated if zoffset is less than 0.

    INVALID_VALUE is generated if z is less than 0.

    INVALID_VALUE is generated if depth is less than 0.

    INVALID_VALUE is generated if (<z> + <depth>) > srcDepth.

    INVALID_VALUE is generated if (<zoffset> + <depth>) > destDepth.

    Table 1.0 internal formats for CopyTexture3DANGLE:

        <internalFormat>
        ---------------
        RGB
        RGBA
        LUMINANCE
        LUMINANCE_ALPHA
        ALPHA
        R8
        R8_SNORM
        R16F
        R32F
        R8UI
        R8I
        R16UI
        R16I
        R32UI
        R32I
        RG8
        RG8_SNORM
        RG16F
        RG32F
        RG8UI
        RG8I
        RG16UI
        RG16I
        RG32UI
        RG32I
        RGB8
        SRGB8
        RGB565
        RGB8_SNORM
        R11F_G11F_B10F
        RGB9_E5
        RGB16F
        RGB32F
        RGB8UI
        RGB8I
        RGB16UI
        RGB16I
        RGB32UI
        RGB32I
        RGBA8
        SRGB8_ALPHA8
        RGBA8_SNORM
        RGB5_A1
        RGBA4
        RGB10_A2
        RGBA16F
        RGBA32F
        RGBA8UI
        RGBA8I
        RGB10_A2UI
        RGBA16UI
        RGBA16I
        RGBA32I
        RGBA32UI

    Table 1.1 Valid source texture formats for
    CopyTexture3DANGLE and source and destination formats for
    CopySubTexture3DANGLE:

        Format
        ---------------
        RED
        RED_INTEGER
        RG
        RG_INTEGER
        RGB
        RGB_INTEGER
        RGBA
        RGBA_INTEGER
        LUMINANCE_ALPHA
        LUMINANCE
        ALPHA

Revision History

    Version 1, 2018-8-8 (Brandon Jones)
        - Initial implementation.