Chromium Code Reviews| Index: gpu/GLES2/extensions/CHROMIUM/CHROMIUM_copy_texture.txt |
| diff --git a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_copy_texture.txt b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_copy_texture.txt |
| index 3accfa87c8fbefd4ffcc4bf3e121adcc9fdf6e0d..0c85ec5e87826da09b566f1df2ed8f1dda8573eb 100644 |
| --- a/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_copy_texture.txt |
| +++ b/gpu/GLES2/extensions/CHROMIUM/CHROMIUM_copy_texture.txt |
| @@ -12,7 +12,7 @@ Version |
| Dependencies |
| - OpenGL ES 2.0 is required. |
| + 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. |
| @@ -34,7 +34,10 @@ 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, |
| @@ -42,27 +45,45 @@ New Procedures and Functions |
| 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. |
| + <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 |
| - 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 |
| + 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_R8 (R, 0, 0, 1) |
| + 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 |
| @@ -77,28 +98,42 @@ New Procedures and Functions |
| 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 <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_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 or GL_TEXTURE_RECTANGLE_ARB objects. |
| + 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 level 0 of the source texture is not defined. |
| + 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, |
|
Zhenyao Mo
2017/01/19 18:58:31
We should also consider support uploading to a 3D
|
| GLint x, GLint y, |
| GLsizei width, GLsizei height, |
| @@ -109,8 +144,9 @@ New Procedures and Functions |
| 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. |
| + 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. |
| @@ -128,8 +164,8 @@ New Procedures and Functions |
| 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_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. |
| @@ -172,4 +208,7 @@ Revision History |
| 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 |
| + 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. |