15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci ARB_copy_image 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_ARB_copy_image 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Michael Gold, NVIDIA Corporation (gold 'at' nvidia.com) 125bd8deadSopenharmony_ci Graham Sellers, AMD (graham.sellers 'at' amd.com) 135bd8deadSopenharmony_ci 145bd8deadSopenharmony_ciContributors 155bd8deadSopenharmony_ci 165bd8deadSopenharmony_ci Jeff Bolz, NVIDIA Corporation (jbolz 'at' nvidia.com) 175bd8deadSopenharmony_ci James Jones, NVIDIA Corporation (jajones 'at' nvidia.com) 185bd8deadSopenharmony_ci Joe Kain, NVIDIA Corporation (jkain 'at' nvidia.com) 195bd8deadSopenharmony_ci Benjamin Morris, NVIDIA Corporation (bmorris 'at' nvidia.com) 205bd8deadSopenharmony_ci Michael Morrison, NVIDIA Corporation (mmorrison 'at' nvidia.com) 215bd8deadSopenharmony_ci Aaron Plattner, NVIDIA Corporation (aplattner 'at' nvidia.com) 225bd8deadSopenharmony_ci Mathias Schott, NVIDIA Corporation (mschott 'at' nvidia.com) 235bd8deadSopenharmony_ci Thomas Volk, NVIDIA Corporation (tvolk 'at' nvidia.com) 245bd8deadSopenharmony_ci Eric Werness, NVIDIA Corporation (ewerness 'at' nvidia.com) 255bd8deadSopenharmony_ci Daniel Koch, TransGaming Inc. (daniel 'at' transgaming.com) 265bd8deadSopenharmony_ci 275bd8deadSopenharmony_ciNotice 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ci Copyright (c) 2012-2013 The Khronos Group Inc. Copyright terms at 305bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 315bd8deadSopenharmony_ci 325bd8deadSopenharmony_ciSpecification Update Policy 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ci Khronos-approved extension specifications are updated in response to 355bd8deadSopenharmony_ci issues and bugs prioritized by the Khronos OpenGL Working Group. For 365bd8deadSopenharmony_ci extensions which have been promoted to a core Specification, fixes will 375bd8deadSopenharmony_ci first appear in the latest version of that core Specification, and will 385bd8deadSopenharmony_ci eventually be backported to the extension document. This policy is 395bd8deadSopenharmony_ci described in more detail at 405bd8deadSopenharmony_ci https://www.khronos.org/registry/OpenGL/docs/update_policy.php 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ciStatus 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci Complete. 455bd8deadSopenharmony_ci Approved by the ARB on 2012/06/12. 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ciVersion 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ci Last Modified Date: May 10, 2012 505bd8deadSopenharmony_ci Revision: 3 515bd8deadSopenharmony_ci 525bd8deadSopenharmony_ciNumber 535bd8deadSopenharmony_ci 545bd8deadSopenharmony_ci ARB Extension #123 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ciDependencies 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ci OpenGL 1.1 is required. 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ci The extension is written against the OpenGL 4.2 (Core Profile) Specification. 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ci This extension interacts with OpenGL 4.3 and ARB_texture_view. 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ci This extension interacts with the Compatibility Profile. 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci This extension interacts with EXT_texture_compression_s3tc. 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ci This extension interacts with OpenGL 3.0 and ARB_texture_compression_rgtc. 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci This extension interacts with OpenGL 4.2 and ARB_texture_compression_bptc. 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ciOverview 735bd8deadSopenharmony_ci 745bd8deadSopenharmony_ci This extension enables efficient image data transfer between image 755bd8deadSopenharmony_ci objects (i.e. textures and renderbuffers) without the need to bind 765bd8deadSopenharmony_ci the objects or otherwise configure the rendering pipeline. 775bd8deadSopenharmony_ci 785bd8deadSopenharmony_ci This is accomplised by adding a new entry-point CopyImageSubData, 795bd8deadSopenharmony_ci which takes a named source and destination. 805bd8deadSopenharmony_ci 815bd8deadSopenharmony_ci CopyImageSubData does not perform general-purpose conversions 825bd8deadSopenharmony_ci such as scaling, resizing, blending, color-space, or format 835bd8deadSopenharmony_ci conversions. It should be considered to operate in a manner 845bd8deadSopenharmony_ci similar to a CPU memcpy, but using the GPU for the copy. 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci CopyImageSubData supports copies between images with different 875bd8deadSopenharmony_ci internal formats, if the formats are compatible for TextureViews. 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ci CopyImageSubData also supports copying between compressed and 905bd8deadSopenharmony_ci uncompressed images if the compressed block / uncompressed texel 915bd8deadSopenharmony_ci sizes are the same. 925bd8deadSopenharmony_ci 935bd8deadSopenharmony_ciNew Procedures and Functions 945bd8deadSopenharmony_ci 955bd8deadSopenharmony_ci void CopyImageSubData( 965bd8deadSopenharmony_ci uint srcName, enum srcTarget, int srcLevel, 975bd8deadSopenharmony_ci int srcX, int srcY, int srcZ, 985bd8deadSopenharmony_ci uint dstName, enum dstTarget, int dstLevel, 995bd8deadSopenharmony_ci int dstX, int dstY, int dstZ, 1005bd8deadSopenharmony_ci sizei srcWidth, sizei srcHeight, sizei srcDepth); 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ciNew Tokens 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ci None 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 4.2 (Core Profile) Specification (Per-Fragment 1075bd8deadSopenharmony_ciOperations and the Frame Buffer) 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ci Append to section 4.3.2 (Copying Pixels): 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci The function 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ci void CopyImageSubData( 1145bd8deadSopenharmony_ci uint srcName, enum srcTarget, int srcLevel, 1155bd8deadSopenharmony_ci int srcX, int srcY, int srcZ, 1165bd8deadSopenharmony_ci uint dstName, enum dstTarget, int dstLevel, 1175bd8deadSopenharmony_ci int dstX, int dstY, int dstZ, 1185bd8deadSopenharmony_ci sizei srcWidth, sizei srcHeight, sizei srcDepth); 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci may be used to copy a region of texel data between two image 1215bd8deadSopenharmony_ci objects. An image object may be either a texture or a 1225bd8deadSopenharmony_ci renderbuffer. 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci CopyImageSubData does not perform general-purpose conversions 1255bd8deadSopenharmony_ci such as scaling, resizing, blending, color-space, or format 1265bd8deadSopenharmony_ci conversions. It should be considered to operate in a manner 1275bd8deadSopenharmony_ci similar to a CPU memcpy. CopyImageSubData can copy between 1285bd8deadSopenharmony_ci images with different internal formats, provided 1295bd8deadSopenharmony_ci the formats are compatible. 1305bd8deadSopenharmony_ci 1315bd8deadSopenharmony_ci CopyImageSubData also allows copying between certain 1325bd8deadSopenharmony_ci types of compressed and uncompressed internal formats as detailed 1335bd8deadSopenharmony_ci in Table 4.X.1. This copy does not perform on-the-fly compression 1345bd8deadSopenharmony_ci or decompression. When copying from an uncompressed internal format 1355bd8deadSopenharmony_ci to a compressed internal format, each texel of uncompressed data 1365bd8deadSopenharmony_ci becomes a single block of compressed data. When copying from a 1375bd8deadSopenharmony_ci compressed internal format to an uncompressed internal format, 1385bd8deadSopenharmony_ci a block of compressed data becomes a single texel of uncompressed 1395bd8deadSopenharmony_ci data. The texel size of the uncompressed format must be the same 1405bd8deadSopenharmony_ci size the block size of the compressed formats. Thus it is permitted 1415bd8deadSopenharmony_ci to copy between a 128-bit uncompressed format and a compressed 1425bd8deadSopenharmony_ci format which uses 8-bit 4x4 blocks, or between a 64-bit uncompressed 1435bd8deadSopenharmony_ci format and a compressed format which uses 4-bit 4x4 blocks. 1445bd8deadSopenharmony_ci INVALID_OPERATION is generated if the texel size of 1455bd8deadSopenharmony_ci the uncompressed image is not equal to the block size of the 1465bd8deadSopenharmony_ci compressed image. 1475bd8deadSopenharmony_ci 1485bd8deadSopenharmony_ci The source object is identified by <srcName> and <srcTarget>. 1495bd8deadSopenharmony_ci Similarly the destination object is identified by <dstName> and 1505bd8deadSopenharmony_ci <dstTarget>. The interpretation of the name depends on the value 1515bd8deadSopenharmony_ci of the corresponding target parameter. If the target parameter is 1525bd8deadSopenharmony_ci RENDERBUFFER, the name is interpreted as the name of a 1535bd8deadSopenharmony_ci renderbuffer object. If the target parameter is a texture target, 1545bd8deadSopenharmony_ci the name is interpreted as a texture object. All non-proxy 1555bd8deadSopenharmony_ci texture targets are accepted, with the exception of TEXTURE_BUFFER 1565bd8deadSopenharmony_ci and the cubemap face selectors described in table 3.17. 1575bd8deadSopenharmony_ci INVALID_ENUM is generated if either target is not RENDERBUFFER 1585bd8deadSopenharmony_ci or a valid non-proxy texture target, or is TEXTURE_BUFFER, or is one 1595bd8deadSopenharmony_ci of the cubemap face selectors described in table 3.17, or if the 1605bd8deadSopenharmony_ci target does not match the type of the object. INVALID_OPERATION 1615bd8deadSopenharmony_ci is generated if either object is a texture and the texture is 1625bd8deadSopenharmony_ci not complete (as defined in section 3.9.14), if the source and 1635bd8deadSopenharmony_ci destination internal formats are not compatible (see below), 1645bd8deadSopenharmony_ci or if the number of samples do not match. 1655bd8deadSopenharmony_ci INVALID_VALUE is generated if either name does not correspond to a 1665bd8deadSopenharmony_ci valid renderbuffer or texture object according to the corresponding 1675bd8deadSopenharmony_ci target parameter. 1685bd8deadSopenharmony_ci 1695bd8deadSopenharmony_ci <srcLevel> and <dstLevel> identify the source and destination 1705bd8deadSopenharmony_ci level of detail. For textures, this must be a valid level of 1715bd8deadSopenharmony_ci detail in the texture object. For renderbuffers, this value must 1725bd8deadSopenharmony_ci be zero. INVALID_VALUE is generated if the specified level is not 1735bd8deadSopenharmony_ci a valid level for the image. 1745bd8deadSopenharmony_ci 1755bd8deadSopenharmony_ci <srcX>, <srcY>, and <srcZ> specify the lower left texel 1765bd8deadSopenharmony_ci coordinates of a <srcWidth>-wide by <srcHeight>-high by 1775bd8deadSopenharmony_ci <srcDepth>-deep rectangular subregion of the source texel array. 1785bd8deadSopenharmony_ci (Compatibility Only: Negative values 1795bd8deadSopenharmony_ci of <srcX>, <srcY>, and <srcZ> correspond to the coordinates of 1805bd8deadSopenharmony_ci border texels, addressed as in figure 3.10.) Similarly, <dstX>, 1815bd8deadSopenharmony_ci <dstY> and <dstZ> specify the coordinates of a subregion of the 1825bd8deadSopenharmony_ci destination texel array. The source and destination subregions 1835bd8deadSopenharmony_ci must be contained entirely within the specified level of the 1845bd8deadSopenharmony_ci corresponding image objects. 1855bd8deadSopenharmony_ci The dimensions are always specified in texels, even for compressed 1865bd8deadSopenharmony_ci texture formats. But it should be noted that if only one of the 1875bd8deadSopenharmony_ci source and destination textures is compressed then the number of 1885bd8deadSopenharmony_ci texels touched in the compressed image will be a factor of the 1895bd8deadSopenharmony_ci block size larger than in the uncompressed image. 1905bd8deadSopenharmony_ci INVALID_VALUE is generated if the 1915bd8deadSopenharmony_ci dimensions of the either subregion exceeds the boundaries of the 1925bd8deadSopenharmony_ci corresponding image object, or if the image format is compressed 1935bd8deadSopenharmony_ci and the dimensions of the subregion fail to meet the alignment 1945bd8deadSopenharmony_ci constraints of the format. 1955bd8deadSopenharmony_ci 1965bd8deadSopenharmony_ci Slices of a TEXTURE_1D_ARRAY, TEXTURE_2D_ARRAY, TEXTURE_CUBE_MAP_ARRAY 1975bd8deadSopenharmony_ci TEXTURE_3D and faces of TEXTURE_CUBE_MAP are all compatible provided 1985bd8deadSopenharmony_ci they share a compatible internal format, and multiple slices or faces 1995bd8deadSopenharmony_ci may be copied between these objects with a single call by specifying the 2005bd8deadSopenharmony_ci starting slice with <srcZ> and <dstZ>, and the number of slices to 2015bd8deadSopenharmony_ci be copied with <srcDepth>. Cubemap textures always have six faces 2025bd8deadSopenharmony_ci which are selected by a zero-based face index, according to the 2035bd8deadSopenharmony_ci order specified in table 3.17. 2045bd8deadSopenharmony_ci 2055bd8deadSopenharmony_ci For the purposes of CopyImageSubData, two internal formats 2065bd8deadSopenharmony_ci are considered compatible if any of the following conditions are 2075bd8deadSopenharmony_ci met: 2085bd8deadSopenharmony_ci * the formats are the same, 2095bd8deadSopenharmony_ci * the formats are considered compatible according to the 2105bd8deadSopenharmony_ci compatibility rules used for texture views as defined in 2115bd8deadSopenharmony_ci section 3.9.X. In particular, if both internal formats are listed 2125bd8deadSopenharmony_ci in the same entry of Table 3.X.2, they are considered compatible, or 2135bd8deadSopenharmony_ci * one format is compressed and the other is uncompressed and 2145bd8deadSopenharmony_ci Table 4.X.1 lists the two formats in the same row. 2155bd8deadSopenharmony_ci If the formats are not compatible INVALID_OPERATION is generated. 2165bd8deadSopenharmony_ci 2175bd8deadSopenharmony_ci ------------------------------------------------------------------------ 2185bd8deadSopenharmony_ci | Texel / | Uncompressed | | 2195bd8deadSopenharmony_ci | Block | internal format | Compressed internal format | 2205bd8deadSopenharmony_ci | size | | | 2215bd8deadSopenharmony_ci ------------------------------------------------------------------------ 2225bd8deadSopenharmony_ci | 128-bit | RGBA32UI, | COMPRESSED_RGBA_S3TC_DXT3_EXT, | 2235bd8deadSopenharmony_ci | | RGBA32I, | COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,| 2245bd8deadSopenharmony_ci | | RGBA32F | COMPRESSED_RGBA_S3TC_DXT5_EXT, | 2255bd8deadSopenharmony_ci | | | COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,| 2265bd8deadSopenharmony_ci | | | COMPRESSED_RG_RGTC2, | 2275bd8deadSopenharmony_ci | | | COMPRESSED_SIGNED_RG_RGTC2, | 2285bd8deadSopenharmony_ci | | | COMPRESSED_RGBA_BPTC_UNORM, | 2295bd8deadSopenharmony_ci | | | COMPRESSED_SRGB_ALPHA_BPTC_UNORM, | 2305bd8deadSopenharmony_ci | | | COMPRESSED_RGB_BPTC_SIGNED_FLOAT, | 2315bd8deadSopenharmony_ci | | | COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT | 2325bd8deadSopenharmony_ci ------------------------------------------------------------------------ 2335bd8deadSopenharmony_ci | 64-bit | RGBA16F, RG32F, | COMPRESSED_RGB_S3TC_DXT1_EXT, | 2345bd8deadSopenharmony_ci | | RGBA16UI, RG32UI, | COMPRESSED_SRGB_S3TC_DXT1_EXT, | 2355bd8deadSopenharmony_ci | | RGBA16I, RG32I, | COMPRESSED_RGBA_S3TC_DXT1_EXT, | 2365bd8deadSopenharmony_ci | | RGBA16, RGBA16_SNORM | COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,| 2375bd8deadSopenharmony_ci | | | COMPRESSED_RED_RGTC1, | 2385bd8deadSopenharmony_ci | | | COMPRESSED_SIGNED_RED_RGTC1 | 2395bd8deadSopenharmony_ci ------------------------------------------------------------------------ 2405bd8deadSopenharmony_ci 2415bd8deadSopenharmony_ci Table 4.X.1: Compatible internal formats for copying between 2425bd8deadSopenharmony_ci compressed and uncompressed internal formats with CopyImageSubData. 2435bd8deadSopenharmony_ci Formats in the same row can be copied between each other. 2445bd8deadSopenharmony_ci 2455bd8deadSopenharmony_ci 2465bd8deadSopenharmony_ciDependencies on OpenGL 4.3 and ARB_texture_view: 2475bd8deadSopenharmony_ci 2485bd8deadSopenharmony_ci If OpenGL 4.3 or later and ARB_texture_view are not supported, 2495bd8deadSopenharmony_ci any references to view-compatible image formats should be removed. 2505bd8deadSopenharmony_ci 2515bd8deadSopenharmony_ciDependencies on the Compatibility Profile: 2525bd8deadSopenharmony_ci 2535bd8deadSopenharmony_ci If the Compatibility Profile is not supported, remove any 2545bd8deadSopenharmony_ci references to negative values for the source dimensions and 2555bd8deadSopenharmony_ci to border texels. 2565bd8deadSopenharmony_ci 2575bd8deadSopenharmony_ciDependencies on EXT_texture_compression_s3tc: 2585bd8deadSopenharmony_ci 2595bd8deadSopenharmony_ci If EXT_texture_compression_s3tc is not supported, remove any 2605bd8deadSopenharmony_ci references to S3TC compressed texture formats. 2615bd8deadSopenharmony_ci 2625bd8deadSopenharmony_ciDependencies on OpenGL 3.0 and ARB_texture_compression_rgtc: 2635bd8deadSopenharmony_ci 2645bd8deadSopenharmony_ci If OpenGL 3.0 or later, and ARB_texture_compression_rgtc is not 2655bd8deadSopenharmony_ci supported, remove any references to the RGTC compressed texture 2665bd8deadSopenharmony_ci formats. 2675bd8deadSopenharmony_ci 2685bd8deadSopenharmony_ciDependencies on OpenGL 4.2 and ARB_texture_compression_bptc: 2695bd8deadSopenharmony_ci 2705bd8deadSopenharmony_ci If OpenGL 4.2 or later, and ARB_texture_compression_bptc is not 2715bd8deadSopenharmony_ci supported, remove any references to the BPTC compressed texture 2725bd8deadSopenharmony_ci formats. 2735bd8deadSopenharmony_ci 2745bd8deadSopenharmony_ciErrors 2755bd8deadSopenharmony_ci 2765bd8deadSopenharmony_ci CopyImageSubData may fail with any of the following errors: 2775bd8deadSopenharmony_ci 2785bd8deadSopenharmony_ci INVALID_ENUM is generated 2795bd8deadSopenharmony_ci * if either <srcTarget> or <dstTarget> 2805bd8deadSopenharmony_ci - is not RENDERBUFFER or a valid non-proxy texture target 2815bd8deadSopenharmony_ci - is TEXTURE_BUFFER, or 2825bd8deadSopenharmony_ci - is one of the cubemap face selectors described in table 3.17, 2835bd8deadSopenharmony_ci * if the target does not match the type of the object. 2845bd8deadSopenharmony_ci 2855bd8deadSopenharmony_ci INVALID_OPERATION is generated 2865bd8deadSopenharmony_ci * if either object is a texture and the texture is not complete, 2875bd8deadSopenharmony_ci * if the source and destination formats are not compatible, 2885bd8deadSopenharmony_ci * if the source and destination number of samples do not match, 2895bd8deadSopenharmony_ci * if one image is compressed and the other is uncompressed and the 2905bd8deadSopenharmony_ci block size of compressed image is not equal to the texel size 2915bd8deadSopenharmony_ci of the compressed image. 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ci INVALID_VALUE is generated 2945bd8deadSopenharmony_ci * if either <srcName> or <dstName> does not correspond to a valid 2955bd8deadSopenharmony_ci renderbuffer or texture object according to the corresponding 2965bd8deadSopenharmony_ci target parameter, or 2975bd8deadSopenharmony_ci * if the specified level is not a valid level for the image, or 2985bd8deadSopenharmony_ci * if the dimensions of the either subregion exceeds the boundaries 2995bd8deadSopenharmony_ci of the corresponding image object, or 3005bd8deadSopenharmony_ci * if the image format is compressed and the dimensions of the 3015bd8deadSopenharmony_ci subregion fail to meet the alignment constraints of the format. 3025bd8deadSopenharmony_ci 3035bd8deadSopenharmony_ciSample Code 3045bd8deadSopenharmony_ci 3055bd8deadSopenharmony_ci TBD 3065bd8deadSopenharmony_ci 3075bd8deadSopenharmony_ciIssues 3085bd8deadSopenharmony_ci 3095bd8deadSopenharmony_ci 1) Should there be a single function for all image types, or 3105bd8deadSopenharmony_ci "per-dimensional" functions? 3115bd8deadSopenharmony_ci 3125bd8deadSopenharmony_ci RESOLVED: A single function can support all image types. Not only are 3135bd8deadSopenharmony_ci per-dimensional functions an unnecessary convenience, they also 3145bd8deadSopenharmony_ci restrict some of the flexibility offered by this extension, 3155bd8deadSopenharmony_ci e.g. copying a slice of data between a 2D and a 3D image. 3165bd8deadSopenharmony_ci 3175bd8deadSopenharmony_ci 2) Should the extension support "deep copies", i.e. multiple slices of 3185bd8deadSopenharmony_ci a 3D texture, a 2D array texture, or a cubemap? 3195bd8deadSopenharmony_ci 3205bd8deadSopenharmony_ci RESOLVED: Yes, there may be performance advantages in copying a multiple 3215bd8deadSopenharmony_ci slices in a single call. 3225bd8deadSopenharmony_ci 3235bd8deadSopenharmony_ci 3) Should renderbuffers be supported by the same function as textures? 3245bd8deadSopenharmony_ci 3255bd8deadSopenharmony_ci RESOLVED: Yes, there is no fundamental difference between the two object 3265bd8deadSopenharmony_ci classes, and allowing them to be used interchangeably has the 3275bd8deadSopenharmony_ci advantage of allowing data transfers between them. 3285bd8deadSopenharmony_ci 3295bd8deadSopenharmony_ci 4) Is the "target" parameter necessary? 3305bd8deadSopenharmony_ci 3315bd8deadSopenharmony_ci RESOLVED: Yes, given the current object model and texture API, there are 3325bd8deadSopenharmony_ci two obvious applications of the target parameter: 3335bd8deadSopenharmony_ci 3345bd8deadSopenharmony_ci 1) Allows the selection of a single cubemap face. 3355bd8deadSopenharmony_ci 2) Differentiate between TEXTURE and RENDERBUFFER targets. 3365bd8deadSopenharmony_ci 3375bd8deadSopenharmony_ci 5) Should the target TEXTURE_CUBE_MAP be supported, and with what 3385bd8deadSopenharmony_ci behavior? 3395bd8deadSopenharmony_ci 3405bd8deadSopenharmony_ci RESOLVED: Given the resolution of issue 7, this is moot. The 3415bd8deadSopenharmony_ci TEXTURE_CUBE_MAP token is the only way to access a cubemap. 3425bd8deadSopenharmony_ci 3435bd8deadSopenharmony_ci 6) Should the "extra" parameters for a given dimension be ignored, or 3445bd8deadSopenharmony_ci should there be required values? 3455bd8deadSopenharmony_ci 3465bd8deadSopenharmony_ci Resolved. 3475bd8deadSopenharmony_ci 3485bd8deadSopenharmony_ci All parameters are required to have sensible values, for the 3495bd8deadSopenharmony_ci simple reason that future extensions may give meaning to these 3505bd8deadSopenharmony_ci values. For dimensions which are currently superfluous, the 3515bd8deadSopenharmony_ci offset must be zero and the size must be one, e.g. if the target 3525bd8deadSopenharmony_ci is TEXTURE_2D, z must be 0 and depth must be 1. 3535bd8deadSopenharmony_ci 3545bd8deadSopenharmony_ci 7) Should the per-face cubemap targets be accepted at all? Why not 3555bd8deadSopenharmony_ci use Z as the selector? 3565bd8deadSopenharmony_ci 3575bd8deadSopenharmony_ci Resolved. 3585bd8deadSopenharmony_ci 3595bd8deadSopenharmony_ci The existing per-face targets effectively define the face order: 3605bd8deadSopenharmony_ci 3615bd8deadSopenharmony_ci face_index = face_target - TEXTURE_CUBE_MAP_POSITIVE_X; 3625bd8deadSopenharmony_ci 3635bd8deadSopenharmony_ci Therefore it makes sense to generalize a cubemap as an array of 3645bd8deadSopenharmony_ci size 6, and use the Z parameter to select the face(s). 3655bd8deadSopenharmony_ci 3665bd8deadSopenharmony_ci 8) How is this extension different from NV_copy_image? 3675bd8deadSopenharmony_ci 3685bd8deadSopenharmony_ci RESOLVED: This extension does not include the WGL/GLX windowing- 3695bd8deadSopenharmony_ci layer copy functions. This extension adds the ability to copy 3705bd8deadSopenharmony_ci between images which have different formats where the formats 3715bd8deadSopenharmony_ci are compatible for texture views. This extension adds the ability 3725bd8deadSopenharmony_ci to copy between uncompressed and compressed images if the texel 3735bd8deadSopenharmony_ci and block sizes are the same. 3745bd8deadSopenharmony_ci 3755bd8deadSopenharmony_ci 9) Please explain copying between compressed and uncompressed images. 3765bd8deadSopenharmony_ci Is the copy doing compression/decompression on the fly? 3775bd8deadSopenharmony_ci 3785bd8deadSopenharmony_ci DISCUSSION. The CopyImageSubData does NOT provide any on-the-fly 3795bd8deadSopenharmony_ci compression, decompression, or even any format conversions. 3805bd8deadSopenharmony_ci Instead, it provides the ability for an application to implement 3815bd8deadSopenharmony_ci it's own compressor in a shader by constructing the blocks and 3825bd8deadSopenharmony_ci writing them out as texels and then copying them to a compressed 3835bd8deadSopenharmony_ci texture so that it can in turn be used for sampling. 3845bd8deadSopenharmony_ci 3855bd8deadSopenharmony_ci (10) Is copying from/to images with ETC2/EAC compressed texture formats 3865bd8deadSopenharmony_ci defined? 3875bd8deadSopenharmony_ci 3885bd8deadSopenharmony_ci RESOLVED: Only when the source and destination formats are identical, 3895bd8deadSopenharmony_ci because texture view classes for ETC2/EAC are not defined (see issue 13 3905bd8deadSopenharmony_ci of the ARB_texture_view specification). 3915bd8deadSopenharmony_ci 3925bd8deadSopenharmony_ciRevision History 3935bd8deadSopenharmony_ci 3945bd8deadSopenharmony_ci Rev. Date Author Changes 3955bd8deadSopenharmony_ci ---- -------- -------- ----------------------------------------- 3965bd8deadSopenharmony_ci 1 04/26/2012 gsellers Initial revision based on NV_copy_image. 3975bd8deadSopenharmony_ci 2 05/08/2012 dgkoch Update some references for 4.2 spec 3985bd8deadSopenharmony_ci Allow copies between view-compatible images. 3995bd8deadSopenharmony_ci Allow copies between compressed/uncompressed images. 4005bd8deadSopenharmony_ci Clarify errors, updated overview. 4015bd8deadSopenharmony_ci 3 05/10/2012 dgkoch Clarify dimensions refer to texels in the src image. 4025bd8deadSopenharmony_ci Re-order/reflow text to make it read better. 4035bd8deadSopenharmony_ci Add mention of TEXTURE_CUBE_MAP_ARRAY. 4045bd8deadSopenharmony_ci 4 10/08/2013 Jon Leech Add issue 10 discussing why copying 4055bd8deadSopenharmony_ci involving conversions between ETC2/EAC 4065bd8deadSopenharmony_ci compressed formats is not supported (Bug 4075bd8deadSopenharmony_ci 11011). 408