blob: 0c85ec5e87826da09b566f1df2ed8f1dda8573eb [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 or OpenGL ES 3.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 source_id,
GLint source_level,
GLenum dest_target,
GLenum dest_id,
GLint dest_level,
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.
<source_level> specifies the level of the source texture which is copied
from.
<dest_level> specifies the level of the destination texture which is copied
to.
<dest_target> specifies the target of destination texture. Must be
GL_TEXTURE_2D,
GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
GL_TEXTURE_RECTANGLE_ARB.
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, GL_RGB8, GL_RGBA8, GL_BGRA_EXT, GL_BGRA8_EXT,
GL_SRGB_EXT, GL_SRGB_ALPHA_EXT, GL_R8, GL_R8UI, GL_RG8, GL_RG8UI, GL_SRGB8,
GL_RGB565, GL_RGB8UI, GL_SRGB8_ALPHA8, GL_RGB5_A1, GL_RGBA4, GL_RGBA4,
GL_RGBA8UI, GL_RGB9_E5, GL_R16F, GL_R32F, GL_RG16F, GL_RG32F, GL_RGB16F,
GL_RGB32F, GL_RGBA16F, GL_RGBA32F, GL_R11F_G11F_B10F.
The internal format of source texture must be one of the following
symbolic constants: GL_RED, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA,
GL_RGB, GL_RGBA, GL_RGB8, GL_RGBA8, GL_BGRA_EXT, GL_BGRA8_EXT,
GL_RGB_YCBCR_420V_CHROMIUM, GL_RGB_YCBCR_422_CHROMIUM.
When source 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_RED (R, 0, 0, 1)
GL_LUMINANCE (L, L, L, 1)
GL_LUMINANCE_ALPHA (L, L, L, A)
GL_RGB (R, G, B, 1)
GL_RGB8 (R, G, B, 1)
GL_RGBA (R, G, B, A)
GL_RGBA8 (R, G, B, A)
GL_BGRA_EXT (R, G, B, A)
GL_BGRA8_EXT (R, G, B, A)
GL_RGB_YCBCR_420V_CHROMIUM (R, G, B, 1)
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_ENUM is generated if <dest_target> is not one of the valid targets
described above.
INVALID_OPERATION is generated if the bound target of destination texture
does not match <target>.
INVALID_VALUE is generated if textures corresponding to <dest_id> have not
been bound as GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP, 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 <source_level> is not 0 for ES 2.0, or if
<source_level> or <dest_level> is less than 0 for ES 3.0.
INVALID_VALUE is generated if <source_level> of the source texture is not
defined.
The command
void glCopySubTextureCHROMIUM (GLenum source_id,
GLint source_level,
GLenum dest_target,
GLenum dest_id,
GLint dest_level,
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 <dest_target>,
<source_level>, <dest_level>, <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 array 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.
19/12/2016 Supported more ES 3.0 formats.
18/1/2017 Supported source_level and dest_level.
19/1/2017 Added GL_TEXTURE_CUBE_MAP as valid dest_id target.