blob: 101c0f6491d16f4d01d8d7c79b2e39942ea021cc [file] [log] [blame]
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 (GLenum target, GLenum source_id,
GLenum dest_id,
GLint internal_format, GLenum dest_type,
GLboolean unpack_flip_y,
GLboolean unpack_premultiply_alpha,
GLboolean unpack_unmultiply_alpha)
Copies the contents of texture referred to by <source_id> to <dest_id>
texture. If <source_id> texture is not defined or has different dimension
to <dest_id> texture, define <source_id> texture same 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>.
<target> uses the same parameters as TexImage2D.
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.
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 <target> is not GL_TEXTURE_2D.
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 object.
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 (GLenum target, GLenum source_id,
GLenum 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 <target>, <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_OPERATION is generated if source internal_format and destination
internal_format are not one of the valid formats described above.
INVALID_VALUE is generated if <target> is not GL_TEXTURE_2D.
INVALID_OPERATION is generated if the destination texture has not been
defined.
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.