blob: 5e7fad8c9932d247ca36607ad9c67340d15227d5 [file] [log] [blame]
Name
CHROMIUM_copy_texture
Name Strings
GL_CHROMIUM_copy_texture
Version
Last Modifed Date: March 24, 2017
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
void CopyTextureCHROMIUM(uint sourceId,
int sourceLevel,
enum destTarget,
uint destId,
int destLevel,
int internalFormat,
enum destType,
boolean unpackFlipY,
boolean unpackPremultiplyAlpha,
boolean unpackUnmultiplyAlpha)
void CopySubTextureCHROMIUM(uint sourceId,
int sourceLevel,
enum destTarget,
uint destId,
int destLevel,
int xoffset,
int yoffset,
int x,
int y,
sizei width,
sizei height,
boolean unpackFlipY,
boolean unpackPremultiplyAlpha,
boolean unpackUnmultiplyAlpha)
Additions to the OpenGL ES 2.0 Specification
The command
CopyTextureCHROMIUM
Copies the contents of <sourceLevel> level of <sourceId> texture to
<destLevel> level and <destTarget> target of <destId> texture.
<destTarget> must be TEXTURE_2D,
TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X,
TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y,
TEXTURE_CUBE_MAP_POSITIVE_Z, TEXTURE_CUBE_MAP_NEGATIVE_Z,
TEXTURE_RECTANGLE_ARB.
The internal format of the destination texture is converted to that
specified by <internalFormat>.
When source texture doens't contain a superset of the component
required by <internalFormat>, fill the components by following rules.
source format color components
----------------------------------------
ALPHA (0, 0, 0, A)
RED (R, 0, 0, 1)
LUMINANCE (L, L, L, 1)
LUMINANCE_ALPHA (L, L, L, A)
RGB (R, G, B, 1)
RGB8 (R, G, B, 1)
RGBA (R, G, B, A)
RGBA8 (R, G, B, A)
BGRA_EXT (R, G, B, A)
BGRA8_EXT (R, G, B, A)
RGB_YCBCR_420V_CHROMIUM (R, G, B, 1)
RGB_YCBCR_422_CHROMIUM (R, G, B, 1)
The format type of the destination texture is converted to that specified
by <destType>.
If <flipY> is true, vertically flip texture image data.
If <unpackPremultiplyAlpha> and <unpackUnmultiplyAlpha> are true,
no alpha processing occurs. This is the equivalent of having neither flag
set.
When <sourceId> refers to a stream texture, the texture matrix will be
applied as part of the copy operation.
INVALID_OPERATION is generated if <internalFormat> is not one of the
formats in Table 1.0.
INVALID_OPERATION is generated if the internal format of <sourceId> is not
one of formats in Table 1.1.
INVALID_VALUE is generated if <sourceId> or <destId> are not valid texture
objects.
INVALID_ENUM is generated if <destTarget> 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 <destId> have not
been bound as TEXTURE_2D, TEXTURE_CUBE_MAP, or
TEXTURE_RECTANGLE_ARB objects.
INVALID_VALUE is generated if textures corresponding to <sourceId> have not
been bound as TEXTURE_2D, TEXTURE_RECTANGLE_ARB or
TEXTURE_EXTERNAL_OES objects.
INVALID_VALUE is generated if <sourceLevel> is not 0 for ES 2.0, or if
<sourceLevel> or <destLevel> is less than 0 for ES 3.0.
INVALID_VALUE is generated if <sourceLevel> of the source texture is not
defined.
The command
CopySubTextureCHROMIUM
Copies the sub contents of texture referred to by <sourceId> to <destId>
texture without redefining <destId> texture.
See CopyTextureCHROMIUM for the interpretation of the <destTarget>,
<sourceLevel>, <destLevel>, <flipY>, <premultiplyAlpha>, and
<unmultiplyAlpha> 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 <sourceId> texture or <destId>
texture is not defined.
INVALID_OPERATION is generated if the internal format of <sourceId> or
<destId> is not one of formats in Table 1.1.
INVALID_OPERATION is generated if the destination texture array has not
been defined.
INVALID_VALUE is generated if <destId> texture is not bound as
TEXTURE_2D or 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> + <width>) > destWidth,
or (<yoffset> + <height>) > destHeight.
Table 1.0 Valid internal formats for CopyTextureCHROMIUM:
<internalFormat>
---------------
RGB
RGBA
RGB8
RGBA8
BGRA_EXT
BGRA8_EXT,
SRGB_EXT
SRGB_ALPHA_EXT
R8
R8UI
RG8
RG8UI
SRGB8
RGB565
RGB8UI
SRGB8_ALPHA8
RGB5_A1
RGBA4
RGBA4
RGBA8UI
RGB9_E5
R16F
R32F
RG16F
RG32F
RGB16F
RGB32F
RGBA16F
RGBA32F
R11F_G11F_B10F
Table 1.1 Valid source texture internal formats for CopyTextureCHROMIUM and
source and destination formats for CopySubTextureCHROMIUM:
internal format
---------------
RED
ALPHA
LUMINANCE
LUMINANCE_ALPHA
RGB
RGBA
RGB8
RGBA8
BGRA_EXT
BGRA8_EXT
RGB_YCBCR_420V_CHROMIUM
RGB_YCBCR_422_CHROMIUM.
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 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 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 TEXTURE_CUBE_MAP as valid dest_id target.
24/3/2017 Clean up naming and move formats into tables.