Name

    CHROMIUM_copy_texture

Name Strings

    GL_CHROMIUM_copy_texture

Version

    Last Modifed Date: July 16, 2014

Dependencies

    OpenGL ES 2.0 is required.

    EXT_texture_format_BGRA8888 affects the definition of this extension.
    ARB_texture_rg affects the definition of this extension.
    CHROMIUM_ycbcr_422_image affects the definition of this extension.

Overview

    This extension expands on the functionality provided by the
    glCopyTexImage2D command.  A new function is exported,
    glCopyTextureCHROMIUM, that performs the same copy operation as
    glCopyTexImage2D.

    The extension also supports copying BGRA textures and copying
    EXTERNAL_OES texture to BGRA texture, which is not explicitly
    granted by EXT_texture_format_BGRA8888.

New Procedures and Functions

    The command

        void glCopyTextureCHROMIUM (GLuint source_id,
                                    GLuint dest_id,
                                    GLint internal_format, GLenum dest_type,
                                    GLboolean unpack_flip_y,
                                    GLboolean unpack_premultiply_alpha,
                                    GLboolean unpack_unmultiply_alpha)

    Copies the contents of <source_id> texture to <dest_id> texture.

    Texture level 0 is copied from the source image to level 0 of the
    destination texture.

    The internal format of the destination texture is converted to that
    specified by <internal_format>. Must be one of the following symbolic
    constants: GL_RGB, GL_RGBA
    The internal format of <source_id> texture must be one of the following
    symbolic constants: GL_R8, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA,
    GL_RGB, GL_RGBA, GL_BGRA_EXT, GL_RGB_YCBCR_422_CHROMIUM
    When <source_id> texture doens't contain a superset of the component
    required by <internal_format>, fill the components by following rules.

                   source format              color components
             =====================================================
                   GL_ALPHA                   (0, 0, 0, A)
                   GL_R8                      (R, 0, 0, 1)
                   GL_LUMINANCE               (L, L, L, 1)
                   GL_LUMINANCE_ALPHA         (L, L, L, A)
                   GL_RGB                     (R, G, B, 1)
                   GL_RGBA                    (R, G, B, A)
                   GL_BGRA_EXT                (R, G, B, A)
                   GL_RGB_YCBCR_422_CHROMIUM  (R, G, B, 1)

    The format type of the destination texture is converted to that specified
    by <dest_type>.

    If <flip_y> is true, vertically flip texture image data.

    If <unpack_premultiply_alpha> and <unpack_unmultiply_alpha> are true,
    no alpha processing occurs.  This is the equivalent of having neither flag
    set.

    When <source_id> refers to a stream texture, the texture matrix will be
    applied as part of the copy operation.

    INVALID_OPERATION is generated if <internal_format> is not one of the valid formats
    described above.

    INVALID_OPERATION is generated if the internal format of <source_id> is not one of
    formats from the table above.

    INVALID_VALUE is generated if <source_id> or <dest_id> are not valid texture
    objects.

    INVALID_VALUE is generated if textures corresponding to <dest_id> have not
    been bound as GL_TEXTURE_2D or GL_TEXTURE_RECTANGLE_ARB objects.

    INVALID_VALUE is generated if textures corresponding to <source_id> have not
    been bound as GL_TEXTURE_2D, GL_TEXTURE_RECTANGLE_ARB or
    GL_TEXTURE_EXTERNAL_OES objects.

    INVALID_VALUE is generated if level 0 of the source texture is not defined.

    The command

        void glCopySubTextureCHROMIUM (GLuint source_id,
                                       GLuint dest_id,
                                       GLint xoffset, GLint yoffset,
                                       GLint x, GLint y,
                                       GLsizei width, GLsizei height,
                                       GLboolean unpack_flip_y,
                                       GLboolean unpack_premultiply_alpha,
                                       GLboolean unpack_unmultiply_alpha)

    Copies the sub contents of texture referred to by <source_id> to <dest_id>
    texture without redefining <dest_id> texture.

    See CopyTextureCHROMIUM for the interpretation of the <flip_y>,
    <premultiply_alpha>, and <unmultiply_alpha> arguments.

    <xoffset> and <yoffset> specify a texel offset in the x and y direction
    respectively within the destination texture.

    <x> and <y> specify specify a texel offset in the x and y direction
    respectively within the source texture.

    <width> specifies the width of the texture subimage.

    <height> specifies the width of the texture subimage.

    INVALID_VALUE is generated if either <source_id> texture or <dest_id>
    texture is not defined.

    INVALID_OPERATION is generated if source internal_format and destination
    internal_format are not one of the valid formats described above.

    INVALID_OPERATION is generated if the destination texture has not been
    defined.

    INVALID_VALUE is generated if <dest_id> texture is not bound as
    GL_TEXTURE_2D or GL_TEXTURE_RECTANGLE_ARB.

    INVALID_VALUE is generated if level 0 of the source texture or
    the destination texture is not defined.

    INVALID_VALUE is generated if <xoffset> < 0 , or <yoffset> < 0.

    INVALID_VALUE is generated if (<xoffset> + <width>) > dest_width,
    or (<yoffset> + <height>) > dest_height.

Dependencies on ARB_texture_rg

    If ARB_texture_rg is not supported:
     * delete any reference to the R8 format.

Dependencies on CHROMIUM_ycbcr_422_image

    If CHROMIUM_ycbcr_422_image is not supported:
     * delete any reference to the RGB_YCBCR_422_CHROMIUM format.

Errors

    None.

New Tokens

    None.

New State

    None.

Revision History

    8/1/2011    Documented the extension
    7/4/2013    Add a new parameter dest_type to glCopyTextureCHROMIUM()
    16/7/2014   Add GL_TEXTURE_RECTANGLE_ARB as valid source_id target
    19/6/2015   Add arguments unpack_flip_y, unpack_premultiply_alpha, and
                unpack_unmultiply_alpha to both commands.
    4/1/2016    Removed the argument target.
    4/1/2016    Added GL_TEXTURE_RECTANGLE_ARB as valid dest_id target
