Edit

kc3-lang/angle/extensions/CHROMIUM_copy_texture.txt

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2016-04-20 10:42:34
    Hash : 97073d12
    Message : Implement CHROMIUM_copy_texture for D3D11. BUG=angleproject:1356 Change-Id: I70246762411dbeeb3e291e317854139a68d80070 Reviewed-on: https://chromium-review.googlesource.com/339434 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>

  • extensions/CHROMIUM_copy_texture.txt
  • 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