15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci NV_copy_image 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_NV_copy_image 85bd8deadSopenharmony_ci WGL_NV_copy_image 95bd8deadSopenharmony_ci GLX_NV_copy_image 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ciContact 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ci Michael Gold, NVIDIA Corporation (gold 'at' nvidia.com) 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ciContributors 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ci Jeff Bolz, NVIDIA Corporation (jbolz 'at' nvidia.com) 185bd8deadSopenharmony_ci James Jones, NVIDIA Corporation (jajones 'at' nvidia.com) 195bd8deadSopenharmony_ci Joe Kain, NVIDIA Corporation (jkain 'at' nvidia.com) 205bd8deadSopenharmony_ci Benjamin Morris, NVIDIA Corporation (bmorris 'at' nvidia.com) 215bd8deadSopenharmony_ci Michael Morrison, NVIDIA Corporation (mmorrison 'at' nvidia.com) 225bd8deadSopenharmony_ci Aaron Plattner, NVIDIA Corporation (aplattner '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 Shazia Rahman, NVIDIA Corporation (srahman 'at' nvidia.com) 265bd8deadSopenharmony_ci 275bd8deadSopenharmony_ciStatus 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ci Shipping (July 2009, Release 190) 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ciVersion 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ci Last Modified Date: 8/7/2012 345bd8deadSopenharmony_ci NVIDIA revision: 5 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ciNumber 375bd8deadSopenharmony_ci 385bd8deadSopenharmony_ci 376 395bd8deadSopenharmony_ci 405bd8deadSopenharmony_ciDependencies 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ci OpenGL 1.1 is required. 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci The extension is written against the OpenGL 3.1 Specification. 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ciOverview 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ci This extension enables efficient image data transfer between image 495bd8deadSopenharmony_ci objects (i.e. textures and renderbuffers) without the need to bind 505bd8deadSopenharmony_ci the objects or otherwise configure the rendering pipeline. The 515bd8deadSopenharmony_ci WGL and GLX versions allow copying between images in different 525bd8deadSopenharmony_ci contexts, even if those contexts are in different sharelists or 535bd8deadSopenharmony_ci even on different physical devices. 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ciNew Procedures and Functions 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ci void CopyImageSubDataNV( 585bd8deadSopenharmony_ci uint srcName, enum srcTarget, int srcLevel, 595bd8deadSopenharmony_ci int srcX, int srcY, int srcZ, 605bd8deadSopenharmony_ci uint dstName, enum dstTarget, int dstLevel, 615bd8deadSopenharmony_ci int dstX, int dstY, int dstZ, 625bd8deadSopenharmony_ci sizei width, sizei height, sizei depth); 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ciNew Tokens 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci None 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 3.1 Specification (Per-Fragment 695bd8deadSopenharmony_ciOperations and the Frame Buffer) 705bd8deadSopenharmony_ci 715bd8deadSopenharmony_ci Append to section 4.3.3: 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ci The function 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci void CopyImageSubDataNV( 765bd8deadSopenharmony_ci uint srcName, enum srcTarget, int srcLevel, 775bd8deadSopenharmony_ci int srcX, int srcY, int srcZ, 785bd8deadSopenharmony_ci uint dstName, enum dstTarget, int dstLevel, 795bd8deadSopenharmony_ci int dstX, int dstY, int dstZ, 805bd8deadSopenharmony_ci sizei width, sizei height, sizei depth); 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci may be used to copy a region of texel data between two image 835bd8deadSopenharmony_ci objects. An image object may be either a texture or a 845bd8deadSopenharmony_ci renderbuffer. 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci The source object is identified by <srcName> and <srcTarget>. 875bd8deadSopenharmony_ci Similarly the destination object is identified by <dstName> and 885bd8deadSopenharmony_ci <dstTarget>. The interpretation of the name depends on the value 895bd8deadSopenharmony_ci of the corresponding target parameter. If the target parameter is 905bd8deadSopenharmony_ci RENDERBUFFER, the name is interpreted as the name of a 915bd8deadSopenharmony_ci renderbuffer object. If the target parameter is a texture target, 925bd8deadSopenharmony_ci the name is interpreted as a texture object. All non-proxy 935bd8deadSopenharmony_ci texture targets are accepted, with the exception of TEXTURE_BUFFER 945bd8deadSopenharmony_ci and the cubemap face selectors described in table 3.23. 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ci <srcLevel> and <dstLevel> identify the source and destination 975bd8deadSopenharmony_ci level of detail. For textures, this must be a valid level of 985bd8deadSopenharmony_ci detail in the texture object. For renderbuffers, this value must 995bd8deadSopenharmony_ci be zero. 1005bd8deadSopenharmony_ci 1015bd8deadSopenharmony_ci <srcX>, <srcY>, and <srcZ> specify the lower left texel 1025bd8deadSopenharmony_ci coordinates of a <width>-wide by <height>-high by <depth>-deep 1035bd8deadSopenharmony_ci rectangular subregion of the source texel array. Negative values 1045bd8deadSopenharmony_ci of <srcX>, <srcY>, and <srcZ> correspond to the coordinates of 1055bd8deadSopenharmony_ci border texels, addressed as in figure 3.10. Similarly, <dstX>, 1065bd8deadSopenharmony_ci <dstY> and <dstZ> specify the coordinates of a subregion of the 1075bd8deadSopenharmony_ci destination texel array. The source and destination subregions 1085bd8deadSopenharmony_ci must be contained entirely within the specified level of the 1095bd8deadSopenharmony_ci corresponding image objects. 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci Slices of a TEXTURE_1D_ARRAY, TEXTURE_2D_ARRAY, TEXTURE_3D and 1125bd8deadSopenharmony_ci faces of TEXTURE_CUBE_MAP are all compatible provided they share 1135bd8deadSopenharmony_ci an internal format, and multiple slices or faces may be copied 1145bd8deadSopenharmony_ci between these objects with a single call by specifying the 1155bd8deadSopenharmony_ci starting slice with <srcZ> and <dstZ>, and the number of slices to 1165bd8deadSopenharmony_ci be copied with <depth>. Cubemap textures always have six faces 1175bd8deadSopenharmony_ci which are selected by a zero-based face index, according to the 1185bd8deadSopenharmony_ci order specified in table 3.23. 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci CopyImageSubDataNV may fail with any of the following errors: 1215bd8deadSopenharmony_ci INVALID_ENUM is generated if either target is not RENDERBUFFER or 1225bd8deadSopenharmony_ci a valid non-proxy texture target, or is TEXTURE_BUFFER, or is one 1235bd8deadSopenharmony_ci of the cubemap face selectors described in table 3.23, or if the 1245bd8deadSopenharmony_ci target does not match the type of the object. INVALID_OPERATION 1255bd8deadSopenharmony_ci is generated if either object is a texture and the texture is not 1265bd8deadSopenharmony_ci consistent, or if the source and destination internal formats or 1275bd8deadSopenharmony_ci number of samples do not match. INVALID_VALUE is generated if 1285bd8deadSopenharmony_ci either name does not correspond to a valid renderbuffer or texture 1295bd8deadSopenharmony_ci object according to the corresponding target parameter, or if the 1305bd8deadSopenharmony_ci specified level is not a valid level for the image, or if the 1315bd8deadSopenharmony_ci dimensions of the either subregion exceeds the boundaries of the 1325bd8deadSopenharmony_ci corresponding image object, or if the image format is compressed 1335bd8deadSopenharmony_ci and the dimensions of the subregion fail to meet the alignment 1345bd8deadSopenharmony_ci constraints of the format. 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ci************************************************************************ 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ciAdditions to the WGL Specification 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci The function 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ci BOOL wglCopyImageSubDataNV( 1435bd8deadSopenharmony_ci HGLRC hSrcRC, uint srcName, enum srcTarget, int srcLevel, 1445bd8deadSopenharmony_ci int srcX, int srcY, int srcZ, 1455bd8deadSopenharmony_ci HGLRC hDstRC, uint dstName, enum dstTarget, int dstLevel, 1465bd8deadSopenharmony_ci int dstX, int dstY, int dstZ, 1475bd8deadSopenharmony_ci sizei width, sizei height, sizei depth); 1485bd8deadSopenharmony_ci 1495bd8deadSopenharmony_ci behaves identically to the core function glCopyImageSubDataNV, 1505bd8deadSopenharmony_ci except that the <hSrcRC> and <hDstRC> parameters specify the 1515bd8deadSopenharmony_ci contexts in which to look up the source and destination objects, 1525bd8deadSopenharmony_ci respectively. A value of zero indicates that the currently bound 1535bd8deadSopenharmony_ci context should be used instead. 1545bd8deadSopenharmony_ci 1555bd8deadSopenharmony_ci Upon success, the value TRUE is returned. Upon failure, the value 1565bd8deadSopenharmony_ci FALSE is returned, and the system error code will be set to one of 1575bd8deadSopenharmony_ci the following: 1585bd8deadSopenharmony_ci 1595bd8deadSopenharmony_ci ERROR_INVALID_HANDLE indicates that either of <hSrcRC> or 1605bd8deadSopenharmony_ci <hDstRC> is non-zero and is not recognized by the 1615bd8deadSopenharmony_ci implementation as a valid context, or is zero and there is no 1625bd8deadSopenharmony_ci valid context bound in the current thread. 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci ERROR_INVALID_OPERATION indicates that the call failed, and if 1655bd8deadSopenharmony_ci either the source or the destination context is bound in the 1665bd8deadSopenharmony_ci current thread, a GL error code is set to indicate the cause. 1675bd8deadSopenharmony_ci This error code may be retrieved by calling glGetError(). If 1685bd8deadSopenharmony_ci neither the source nor the destination context is bound in the 1695bd8deadSopenharmony_ci current thread, no GL error is set. 1705bd8deadSopenharmony_ci 1715bd8deadSopenharmony_ciAdditions to the GLX Specification 1725bd8deadSopenharmony_ci 1735bd8deadSopenharmony_ci The function 1745bd8deadSopenharmony_ci 1755bd8deadSopenharmony_ci void glXCopyImageSubDataNV(Display *dpy, 1765bd8deadSopenharmony_ci GLXContext srcCtx, uint srcName, enum srcTarget, int srcLevel, 1775bd8deadSopenharmony_ci int srcX, int srcY, int srcZ, 1785bd8deadSopenharmony_ci GLXContext dstCtx, uint dstName, enum dstTarget, int dstLevel, 1795bd8deadSopenharmony_ci int dstX, int dstY, int dstZ, 1805bd8deadSopenharmony_ci sizei width, sizei height, sizei depth); 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ci behaves identically to the core function glCopyImageSubDataNV, 1835bd8deadSopenharmony_ci except that the <srcCtx> and <dstCtx> parameters specify the 1845bd8deadSopenharmony_ci contexts in which to look up the source and destination objects, 1855bd8deadSopenharmony_ci respectively. A value of NULL for either context indicates that 1865bd8deadSopenharmony_ci the value which is returned by glXGetCurrentContext() should be 1875bd8deadSopenharmony_ci used instead. Both contexts must share the same address space, as 1885bd8deadSopenharmony_ci described in section 2.3. 1895bd8deadSopenharmony_ci 1905bd8deadSopenharmony_ci If either <srcCtx> or <dstCtx> is not a valid rendering context, 1915bd8deadSopenharmony_ci the error GLXBadContext is generated. 1925bd8deadSopenharmony_ci 1935bd8deadSopenharmony_ci If the server portion of the contexts do not share the same 1945bd8deadSopenharmony_ci address space, the error BadMatch is generated. 1955bd8deadSopenharmony_ci 1965bd8deadSopenharmony_ci If an error occurs due to GL parameter validation, the error 1975bd8deadSopenharmony_ci BadMatch will be generated. Additionally, if either the source or 1985bd8deadSopenharmony_ci destination context is bound to the current thread, a GL error is 1995bd8deadSopenharmony_ci set to indicate the cause. This error code may be retrieved by 2005bd8deadSopenharmony_ci calling glGetError(). If neither the source nor the destination 2015bd8deadSopenharmony_ci context is bound in the current thread, no GL error is set. 2025bd8deadSopenharmony_ci 2035bd8deadSopenharmony_ciGLX Protocol 2045bd8deadSopenharmony_ci 2055bd8deadSopenharmony_ci One new GLX protocol command is added. 2065bd8deadSopenharmony_ci 2075bd8deadSopenharmony_ci glXCopyImageSubDataNV 2085bd8deadSopenharmony_ci 1 CARD8 opcode (X assigned) 2095bd8deadSopenharmony_ci 1 16 GLX opcode (glXVendorPrivate) 2105bd8deadSopenharmony_ci 2 20 request length 2115bd8deadSopenharmony_ci 4 1360 vendor specific opcode 2125bd8deadSopenharmony_ci 4 unused 2135bd8deadSopenharmony_ci 4 GLX_CONTEXT src_context 2145bd8deadSopenharmony_ci 4 CARD32 src_name 2155bd8deadSopenharmony_ci 4 ENUM src_target 2165bd8deadSopenharmony_ci 4 INT32 src_level 2175bd8deadSopenharmony_ci 4 INT32 src_x 2185bd8deadSopenharmony_ci 4 INT32 src_y 2195bd8deadSopenharmony_ci 4 INT32 src_z 2205bd8deadSopenharmony_ci 4 GLX_CONTEXT dst_context 2215bd8deadSopenharmony_ci 4 CARD32 dst_name 2225bd8deadSopenharmony_ci 4 ENUM dst_target 2235bd8deadSopenharmony_ci 4 INT32 dst_level 2245bd8deadSopenharmony_ci 4 INT32 dst_x 2255bd8deadSopenharmony_ci 4 INT32 dst_y 2265bd8deadSopenharmony_ci 4 INT32 dst_z 2275bd8deadSopenharmony_ci 4 INT32 width 2285bd8deadSopenharmony_ci 4 INT32 height 2295bd8deadSopenharmony_ci 4 INT32 depth 2305bd8deadSopenharmony_ci 2315bd8deadSopenharmony_ci The following rendering command is sent to the server as a part of 2325bd8deadSopenharmony_ci glXRender request: 2335bd8deadSopenharmony_ci 2345bd8deadSopenharmony_ci CopyImageSubDataNV 2355bd8deadSopenharmony_ci 2 64 rendering command length 2365bd8deadSopenharmony_ci 2 4291 rendering command opcode 2375bd8deadSopenharmony_ci 4 CARD32 src_name 2385bd8deadSopenharmony_ci 4 ENUM src_target 2395bd8deadSopenharmony_ci 4 INT32 src_level 2405bd8deadSopenharmony_ci 4 INT32 src_x 2415bd8deadSopenharmony_ci 4 INT32 src_y 2425bd8deadSopenharmony_ci 4 INT32 src_z 2435bd8deadSopenharmony_ci 4 CARD32 dst_name 2445bd8deadSopenharmony_ci 4 ENUM dst_target 2455bd8deadSopenharmony_ci 4 INT32 dst_level 2465bd8deadSopenharmony_ci 4 INT32 dst_x 2475bd8deadSopenharmony_ci 4 INT32 dst_y 2485bd8deadSopenharmony_ci 4 INT32 dst_z 2495bd8deadSopenharmony_ci 4 INT32 width 2505bd8deadSopenharmony_ci 4 INT32 height 2515bd8deadSopenharmony_ci 4 INT32 depth 2525bd8deadSopenharmony_ci 2535bd8deadSopenharmony_ciDependencies on EXT_extension_name 2545bd8deadSopenharmony_ci 2555bd8deadSopenharmony_ci The list of supported image targets depends on the availability of 2565bd8deadSopenharmony_ci such targets in the implementation. 2575bd8deadSopenharmony_ci 2585bd8deadSopenharmony_ciErrors 2595bd8deadSopenharmony_ci 2605bd8deadSopenharmony_ci CopyImageSubDataNV may fail with any of the following errors: 2615bd8deadSopenharmony_ci INVALID_ENUM is generated if either target is not RENDERBUFFER or 2625bd8deadSopenharmony_ci a valid non-proxy texture target, or is TEXTURE_BUFFER, or is one 2635bd8deadSopenharmony_ci of the cubemap face selectors described in table 3.23, or if the 2645bd8deadSopenharmony_ci target does not match the type of the object. INVALID_OPERATION 2655bd8deadSopenharmony_ci is generated if either object is a texture and the texture is not 2665bd8deadSopenharmony_ci consistent, or if the source and destination internal formats or 2675bd8deadSopenharmony_ci number of samples do not match. INVALID_VALUE is generated if 2685bd8deadSopenharmony_ci either name does not correspond to a valid renderbuffer or texture 2695bd8deadSopenharmony_ci object according to the corresponding target parameter, or if the 2705bd8deadSopenharmony_ci specified level is not a valid level for the image, or if the 2715bd8deadSopenharmony_ci dimensions of the either subregion exceeds the boundaries of the 2725bd8deadSopenharmony_ci corresponding image object, or if the image format is compressed 2735bd8deadSopenharmony_ci and the dimensions of the subregion fail to meet the alignment 2745bd8deadSopenharmony_ci constraints of the format. 2755bd8deadSopenharmony_ci 2765bd8deadSopenharmony_ciSample Code 2775bd8deadSopenharmony_ci 2785bd8deadSopenharmony_ci TBD 2795bd8deadSopenharmony_ci 2805bd8deadSopenharmony_ciIssues 2815bd8deadSopenharmony_ci 2825bd8deadSopenharmony_ci1) Should there be a single function for all image types, or 2835bd8deadSopenharmony_ci "per-dimensional" functions? 2845bd8deadSopenharmony_ci 2855bd8deadSopenharmony_ci Resolved. 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ci A single function can support all image types. Not only are 2885bd8deadSopenharmony_ci per-dimensional functions an unnecessary convenience, they also 2895bd8deadSopenharmony_ci restrict some of the flexibility offered by this extension, 2905bd8deadSopenharmony_ci e.g. copying a slice of data between a 2D and a 3D image. 2915bd8deadSopenharmony_ci 2925bd8deadSopenharmony_ci2) Should the extension support "deep copies", i.e. multiple slices of 2935bd8deadSopenharmony_ci a 3D texture, a 2D array texture, or a cubemap? 2945bd8deadSopenharmony_ci 2955bd8deadSopenharmony_ci Resolved. 2965bd8deadSopenharmony_ci 2975bd8deadSopenharmony_ci Yes, there may be performance advantages in copying a multiple 2985bd8deadSopenharmony_ci slices in a single call. 2995bd8deadSopenharmony_ci 3005bd8deadSopenharmony_ci3) Should renderbuffers be supported by the same function as textures? 3015bd8deadSopenharmony_ci 3025bd8deadSopenharmony_ci Resolved. 3035bd8deadSopenharmony_ci 3045bd8deadSopenharmony_ci Yes, there is no fundamental difference between the two object 3055bd8deadSopenharmony_ci classes, and allowing them to be used interchangeably has the 3065bd8deadSopenharmony_ci advantage of allowing data transfers between them. 3075bd8deadSopenharmony_ci 3085bd8deadSopenharmony_ci4) Is the "target" parameter necessary? 3095bd8deadSopenharmony_ci 3105bd8deadSopenharmony_ci Resolved. 3115bd8deadSopenharmony_ci 3125bd8deadSopenharmony_ci Yes, given the current object model and texture API, there are two 3135bd8deadSopenharmony_ci obvious applications of the target parameter: 3145bd8deadSopenharmony_ci 3155bd8deadSopenharmony_ci 1) Allows the selection of a single cubemap face. 3165bd8deadSopenharmony_ci 2) Differentiate between TEXTURE and RENDERBUFFER targets. 3175bd8deadSopenharmony_ci 3185bd8deadSopenharmony_ci5) Should the target TEXTURE_CUBE_MAP be supported, and with what 3195bd8deadSopenharmony_ci behavior? 3205bd8deadSopenharmony_ci 3215bd8deadSopenharmony_ci Resolved. 3225bd8deadSopenharmony_ci 3235bd8deadSopenharmony_ci Given the resolution of issue 7, this is moot. The 3245bd8deadSopenharmony_ci TEXTURE_CUBE_MAP token is the only way to access a cubemap. 3255bd8deadSopenharmony_ci 3265bd8deadSopenharmony_ci6) Should the "extra" parameters for a given dimension be ignored, or 3275bd8deadSopenharmony_ci should there be required values? 3285bd8deadSopenharmony_ci 3295bd8deadSopenharmony_ci Resolved. 3305bd8deadSopenharmony_ci 3315bd8deadSopenharmony_ci All parameters are required to have sensible values, for the 3325bd8deadSopenharmony_ci simple reason that future extensions may give meaning to these 3335bd8deadSopenharmony_ci values. For dimensions which are currently superfluous, the 3345bd8deadSopenharmony_ci offset must be zero and the size must be one, e.g. if the target 3355bd8deadSopenharmony_ci is TEXTURE_2D, z must be 0 and depth must be 1. 3365bd8deadSopenharmony_ci 3375bd8deadSopenharmony_ci7) Should the per-face cubemap targets be accepted at all? Why not 3385bd8deadSopenharmony_ci use Z as the selector? 3395bd8deadSopenharmony_ci 3405bd8deadSopenharmony_ci Resolved. 3415bd8deadSopenharmony_ci 3425bd8deadSopenharmony_ci The existing per-face targets effectively define the face order: 3435bd8deadSopenharmony_ci 3445bd8deadSopenharmony_ci face_index = face_target - TEXTURE_CUBE_MAP_POSITIVE_X; 3455bd8deadSopenharmony_ci 3465bd8deadSopenharmony_ci Therefore it makes sense to generalize a cubemap as an array of 3475bd8deadSopenharmony_ci size 6, and use the Z parameter to select the face(s). 3485bd8deadSopenharmony_ci 3495bd8deadSopenharmony_ci8) Should the WGL/GLX functions accept a source context as well as a 3505bd8deadSopenharmony_ci destination context? 3515bd8deadSopenharmony_ci 3525bd8deadSopenharmony_ci Resolved. 3535bd8deadSopenharmony_ci 3545bd8deadSopenharmony_ci Yes, the symmetry and flexibility this offers has advantages, and 3555bd8deadSopenharmony_ci there is no obvious technical reason to disallow this. 3565bd8deadSopenharmony_ci 3575bd8deadSopenharmony_ciRevision History 3585bd8deadSopenharmony_ci 3595bd8deadSopenharmony_ci Rev. Date Author Changes 3605bd8deadSopenharmony_ci ---- -------- -------- ----------------------------------------- 3615bd8deadSopenharmony_ci 1 gold Internal revisions. 3625bd8deadSopenharmony_ci 2 09/09/09 mjk Assign number 3635bd8deadSopenharmony_ci 3 09/16/09 Jon Leech Fix hDstRC->hSrcRC in prototype. 3645bd8deadSopenharmony_ci 4 10/13/11 srahman Added protocol for the GL command. 3655bd8deadSopenharmony_ci 5 08/07/12 pbrown Fix the GLX protocol section to clarify that 3665bd8deadSopenharmony_ci the first set of protocol is for 3675bd8deadSopenharmony_ci glXCopyImageSubDataNV and not the GL command. 368