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