1Name 2 3 CHROMIUM_copy_texture 4 5Name Strings 6 7 GL_CHROMIUM_copy_texture 8 9Version 10 11 Last Modifed Date: March 24, 2017 12 13Dependencies 14 15 OpenGL ES 2.0 or OpenGL ES 3.0 is required. 16 17 EXT_texture_format_BGRA8888 affects the definition of this extension. 18 ARB_texture_rg affects the definition of this extension. 19 CHROMIUM_ycbcr_422_image affects the definition of this extension. 20 21Overview 22 23 This extension expands on the functionality provided by the 24 glCopyTexImage2D command. A new function is exported, 25 glCopyTextureCHROMIUM, that performs the same copy operation as 26 glCopyTexImage2D. 27 28 The extension also supports copying BGRA textures and copying 29 EXTERNAL_OES texture to BGRA texture, which is not explicitly 30 granted by EXT_texture_format_BGRA8888. 31 32New Procedures and Functions 33 34 void CopyTextureCHROMIUM(uint sourceId, 35 int sourceLevel, 36 enum destTarget, 37 uint destId, 38 int destLevel, 39 int internalFormat, 40 enum destType, 41 boolean unpackFlipY, 42 boolean unpackPremultiplyAlpha, 43 boolean unpackUnmultiplyAlpha) 44 45 46 void CopySubTextureCHROMIUM(uint sourceId, 47 int sourceLevel, 48 enum destTarget, 49 uint destId, 50 int destLevel, 51 int xoffset, 52 int yoffset, 53 int x, 54 int y, 55 sizei width, 56 sizei height, 57 boolean unpackFlipY, 58 boolean unpackPremultiplyAlpha, 59 boolean unpackUnmultiplyAlpha) 60 61Additions to the OpenGL ES 2.0 Specification 62 63 The command 64 65 CopyTextureCHROMIUM 66 67 Copies the contents of <sourceLevel> level of <sourceId> texture to 68 <destLevel> level and <destTarget> target of <destId> texture. 69 70 <destTarget> must be TEXTURE_2D, 71 TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X, 72 TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y, 73 TEXTURE_CUBE_MAP_POSITIVE_Z, TEXTURE_CUBE_MAP_NEGATIVE_Z, 74 TEXTURE_RECTANGLE_ARB. 75 76 The internal format of the destination texture is converted to that 77 specified by <internalFormat>. 78 79 When source texture doens't contain a superset of the component 80 required by <internalFormat>, fill the components by following rules. 81 82 source format color components 83 ---------------------------------------- 84 ALPHA (0, 0, 0, A) 85 RED (R, 0, 0, 1) 86 LUMINANCE (L, L, L, 1) 87 LUMINANCE_ALPHA (L, L, L, A) 88 RGB (R, G, B, 1) 89 RGB8 (R, G, B, 1) 90 RGBA (R, G, B, A) 91 RGBA8 (R, G, B, A) 92 BGRA_EXT (R, G, B, A) 93 BGRA8_EXT (R, G, B, A) 94 RGB_YCBCR_420V_CHROMIUM (R, G, B, 1) 95 RGB_YCBCR_422_CHROMIUM (R, G, B, 1) 96 97 The format type of the destination texture is converted to that specified 98 by <destType>. 99 100 If <flipY> is true, vertically flip texture image data. 101 102 If <unpackPremultiplyAlpha> and <unpackUnmultiplyAlpha> are true, 103 no alpha processing occurs. This is the equivalent of having neither flag 104 set. 105 106 When <sourceId> refers to a stream texture, the texture matrix will be 107 applied as part of the copy operation. 108 109 INVALID_OPERATION is generated if <internalFormat> is not one of the 110 formats in Table 1.0. 111 112 INVALID_OPERATION is generated if the internal format of <sourceId> is not 113 one of formats in Table 1.1. 114 115 INVALID_VALUE is generated if <sourceId> or <destId> are not valid texture 116 objects. 117 118 INVALID_ENUM is generated if <destTarget> is not one of the valid targets 119 described above. 120 121 INVALID_OPERATION is generated if the bound target of destination texture 122 does not match <target>. 123 124 INVALID_VALUE is generated if textures corresponding to <destId> have not 125 been bound as TEXTURE_2D, TEXTURE_CUBE_MAP, or 126 TEXTURE_RECTANGLE_ARB objects. 127 128 INVALID_VALUE is generated if textures corresponding to <sourceId> have not 129 been bound as TEXTURE_2D, TEXTURE_RECTANGLE_ARB or 130 TEXTURE_EXTERNAL_OES objects. 131 132 INVALID_VALUE is generated if <sourceLevel> is not 0 for ES 2.0, or if 133 <sourceLevel> or <destLevel> is less than 0 for ES 3.0. 134 135 INVALID_VALUE is generated if <sourceLevel> of the source texture is not 136 defined. 137 138 The command 139 140 CopySubTextureCHROMIUM 141 142 Copies the sub contents of texture referred to by <sourceId> to <destId> 143 texture without redefining <destId> texture. 144 145 See CopyTextureCHROMIUM for the interpretation of the <destTarget>, 146 <sourceLevel>, <destLevel>, <flipY>, <premultiplyAlpha>, and 147 <unmultiplyAlpha> arguments. 148 149 <xoffset> and <yoffset> specify a texel offset in the x and y direction 150 respectively within the destination texture. 151 152 <x> and <y> specify specify a texel offset in the x and y direction 153 respectively within the source texture. 154 155 <width> specifies the width of the texture subimage. 156 157 <height> specifies the width of the texture subimage. 158 159 INVALID_VALUE is generated if either <sourceId> texture or <destId> 160 texture is not defined. 161 162 INVALID_OPERATION is generated if the internal format of <sourceId> or 163 <destId> is not one of formats in Table 1.1. 164 165 INVALID_OPERATION is generated if the destination texture array has not 166 been defined. 167 168 INVALID_VALUE is generated if <destId> texture is not bound as 169 TEXTURE_2D or TEXTURE_RECTANGLE_ARB. 170 171 INVALID_VALUE is generated if level 0 of the source texture or 172 the destination texture is not defined. 173 174 INVALID_VALUE is generated if (<xoffset> + <width>) > destWidth, 175 or (<yoffset> + <height>) > destHeight. 176 177 Table 1.0 Valid internal formats for CopyTextureCHROMIUM: 178 179 <internalFormat> 180 --------------- 181 RGB 182 RGBA 183 RGB8 184 RGBA8 185 BGRA_EXT 186 BGRA8_EXT 187 SRGB_EXT 188 SRGB_ALPHA_EXT 189 R8 190 R8UI 191 RG8 192 RG8UI 193 SRGB8 194 RGB565 195 RGB8UI 196 SRGB8_ALPHA8 197 RGB5_A1 198 RGBA4 199 RGBA8UI 200 RGB9_E5 201 R16F 202 R32F 203 RG16F 204 RG32F 205 RGB16F 206 RGB32F 207 RGBA16F 208 RGBA32F 209 R11F_G11F_B10F 210 211 Table 1.1 Valid source texture internal formats for CopyTextureCHROMIUM and 212 source and destination formats for CopySubTextureCHROMIUM: 213 214 internal format 215 --------------- 216 RED 217 ALPHA 218 LUMINANCE 219 LUMINANCE_ALPHA 220 RGB 221 RGBA 222 RGB8 223 RGBA8 224 BGRA_EXT 225 BGRA8_EXT 226 RGB_YCBCR_420V_CHROMIUM 227 RGB_YCBCR_422_CHROMIUM 228 229Dependencies on ARB_texture_rg 230 231 If ARB_texture_rg is not supported: 232 * delete any reference to the R8 format. 233 234Dependencies on CHROMIUM_ycbcr_422_image 235 236 If CHROMIUM_ycbcr_422_image is not supported: 237 * delete any reference to the RGB_YCBCR_422_CHROMIUM format. 238 239Errors 240 241 None. 242 243New Tokens 244 245 None. 246 247New State 248 249 None. 250 251Revision History 252 253 8/1/2011 Documented the extension 254 7/4/2013 Add a new parameter dest_type to glCopyTextureCHROMIUM() 255 16/7/2014 Add TEXTURE_RECTANGLE_ARB as valid source_id target 256 19/6/2015 Add arguments unpack_flip_y, unpack_premultiply_alpha, and 257 unpack_unmultiply_alpha to both commands. 258 4/1/2016 Removed the argument target. 259 4/1/2016 Added TEXTURE_RECTANGLE_ARB as valid dest_id target. 260 19/12/2016 Supported more ES 3.0 formats. 261 18/1/2017 Supported source_level and dest_level. 262 19/1/2017 Added TEXTURE_CUBE_MAP as valid dest_id target. 263 24/3/2017 Clean up naming and move formats into tables. 264