15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci OES_EGL_image 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_OES_EGL_image 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContributors 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Gary King 125bd8deadSopenharmony_ci Acorn Pooley 135bd8deadSopenharmony_ci Jon Leech 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ciContacts 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ci Gary King, NVIDIA Corporation (gking 'at' nvidia.com) 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ciNotice 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ci Copyright (c) 2006-2014 The Khronos Group Inc. Copyright terms at 225bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ciSpecification Update Policy 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ci Khronos-approved extension specifications are updated in response to 275bd8deadSopenharmony_ci issues and bugs prioritized by the Khronos OpenGL ES Working Group. For 285bd8deadSopenharmony_ci extensions which have been promoted to a core Specification, fixes will 295bd8deadSopenharmony_ci first appear in the latest version of that core Specification, and will 305bd8deadSopenharmony_ci eventually be backported to the extension document. This policy is 315bd8deadSopenharmony_ci described in more detail at 325bd8deadSopenharmony_ci https://www.khronos.org/registry/OpenGL/docs/update_policy.php 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ciStatus 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ci Approved by the Khronos OpenKODE Working Group in January, 2007 375bd8deadSopenharmony_ci as part of OpenKODE 1.0 Provisional. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciVersion 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci April 23, 2015 (version 8) 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ciNumber 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ci OpenGL ES Extension #23 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ciDependencies 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ci Requires OpenGL-ES 1.1 or OpenGL-ES 2.0. 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci Requires EGL 1.2 and either the EGL_OES_image or EGL_OES_image_base 525bd8deadSopenharmony_ci extensions. 535bd8deadSopenharmony_ci 545bd8deadSopenharmony_ci The EGL_KHR_gl_texture_2D_image, EGL_KHR_gl_texture_cubemap_image, 555bd8deadSopenharmony_ci EGL_KHR_gl_texture_3D_image, EGL_KHR_gl_renderbuffer_image, and 565bd8deadSopenharmony_ci EGL_KHR_vg_parent_image extensions provide additional functionality 575bd8deadSopenharmony_ci layered on EGL_OES_image_base and related to this extension 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ci OES_framebuffer_object affects the wording of this specification 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ci This extension is written based on the wording of the OpenGL 2.0 625bd8deadSopenharmony_ci Specification and the EXT_framebuffer_object extension. 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ciOverview 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci This extension provides a mechanism for creating texture and 675bd8deadSopenharmony_ci renderbuffer objects sharing storage with specified EGLImage objects 685bd8deadSopenharmony_ci (such objects are referred to as "EGLImage targets"). 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci The companion EGL_KHR_image_base and EGL_KHR_image extensions 715bd8deadSopenharmony_ci provide the definition and rationale for EGLImage objects. 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ci Other EGL extensions, such as EGL_KHR_gl_texture_2D_image, 745bd8deadSopenharmony_ci EGL_KHR_gl_texture_cubemap_image, EGL_KHR_gl_texture_3D_image, 755bd8deadSopenharmony_ci EGL_KHR_gl_renderbuffer_image, and EGL_KHR_vg_parent_image, define 765bd8deadSopenharmony_ci the related functionality of creating EGLImage objects from 775bd8deadSopenharmony_ci "EGLImage sources" such as OpenGL ES texture or renderbuffers or 785bd8deadSopenharmony_ci OpenVG VGImage objects. 795bd8deadSopenharmony_ci 805bd8deadSopenharmony_ci EGL extension specifications are located in the EGL Registry at 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci http://www.khronos.org/registry/egl/ 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ciGlossary 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci Please see the EGL_KHR_image specification for a list of terms 875bd8deadSopenharmony_ci used by this specification. 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ciNew Types 905bd8deadSopenharmony_ci 915bd8deadSopenharmony_ci /* 925bd8deadSopenharmony_ci * GLeglImageOES is an opaque handle to an EGLImage 935bd8deadSopenharmony_ci */ 945bd8deadSopenharmony_ci typedef void* GLeglImageOES; 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ci 975bd8deadSopenharmony_ciNew Procedures and Functions 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci void EGLImageTargetTexture2DOES(enum target, eglImageOES image) 1005bd8deadSopenharmony_ci 1015bd8deadSopenharmony_ci void EGLImageTargetRenderbufferStorageOES(enum target, 1025bd8deadSopenharmony_ci eglImageOES image) 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ciNew Tokens 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ci None. 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization) 1095bd8deadSopenharmony_ci 1105bd8deadSopenharmony_ci - (3.8.2, p. 160) Insert the following text after the end of the 1115bd8deadSopenharmony_ci first paragraph (before the discussion of {Copy}TexSubImage): 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ci "Another way of specifying two-dimensional texture images is to 1145bd8deadSopenharmony_ci reference them from existing EGLImage objects. Images specified 1155bd8deadSopenharmony_ci this way will be EGLImage siblings with the original EGLImage 1165bd8deadSopenharmony_ci source and any other EGLImage targets. 1175bd8deadSopenharmony_ci 1185bd8deadSopenharmony_ci The command 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci void EGLImageTargetTexture2DOES(enum target, eglImageOES image); 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ci defines an entire two-dimensional texture array. All properties 1235bd8deadSopenharmony_ci of the texture images (including width, height, format, border, mipmap 1245bd8deadSopenharmony_ci levels of detail, and image data) are taken from the specified 1255bd8deadSopenharmony_ci eglImageOES <image>, rather than from the client or the framebuffer. 1265bd8deadSopenharmony_ci Any existing image arrays associated with any mipmap levels in the texture 1275bd8deadSopenharmony_ci object are freed (as if TexImage was called for each, with an image of 1285bd8deadSopenharmony_ci zero size). As a result of this referencing operation, all of the pixel 1295bd8deadSopenharmony_ci data in the <buffer> used as the EGLImage source resource (i.e., the 1305bd8deadSopenharmony_ci <buffer> parameter passed to the CreateImageOES command that returned 1315bd8deadSopenharmony_ci <image>) will become undefined. 1325bd8deadSopenharmony_ci 1335bd8deadSopenharmony_ci Currently, <target> must be TEXTURE_2D. <image> must be the 1345bd8deadSopenharmony_ci handle of a valid EGLImage resource, cast into the type eglImageOES. 1355bd8deadSopenharmony_ci Assuming no errors are generated in EGLImageTargetTexture2DOES, the 1365bd8deadSopenharmony_ci newly specified texture object will be an EGLImage target of the 1375bd8deadSopenharmony_ci specified eglImageOES. If an application later respecifies any image 1385bd8deadSopenharmony_ci array in the texture object (through mechanisms such as calls to 1395bd8deadSopenharmony_ci TexImage2D and/or GenerateMipmapOES, or setting the 1405bd8deadSopenharmony_ci SGIS_GENERATE_MIPMAP parameter to TRUE), implementations should allocate 1415bd8deadSopenharmony_ci additional space for all specified (and respecified) image arrays, 1425bd8deadSopenharmony_ci and copy any existing image data to the newly (re)specified texture 1435bd8deadSopenharmony_ci object (as if TexImage was called for every level-of-detail in the 1445bd8deadSopenharmony_ci texture object). The respecified texture object will not be an 1455bd8deadSopenharmony_ci EGLImage target. 1465bd8deadSopenharmony_ci 1475bd8deadSopenharmony_ci If the GL is unable to specify a texture object using the supplied 1485bd8deadSopenharmony_ci eglImageOES <image> (if, for example, <image> refers to a multisampled 1495bd8deadSopenharmony_ci eglImageOES), the error INVALID_OPERATION is generated. 1505bd8deadSopenharmony_ci 1515bd8deadSopenharmony_ci If <image> does not refer to a valid eglImageOES object, the error 1525bd8deadSopenharmony_ci INVALID_VALUE is generated. 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ci If <target> is not TEXTURE_2D, the error INVALID_ENUM is generated. 1555bd8deadSopenharmony_ci 1565bd8deadSopenharmony_ciAdditions to the EXT_framebuffer_object extension 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci - (4.4.2.1) Add the following text at the end of section 4.4.2.1 1595bd8deadSopenharmony_ci (Renderbuffer Objects) 1605bd8deadSopenharmony_ci 1615bd8deadSopenharmony_ci The command 1625bd8deadSopenharmony_ci 1635bd8deadSopenharmony_ci void EGLImageTargetRenderbufferStorageOES(enum target, 1645bd8deadSopenharmony_ci eglImageOES image) 1655bd8deadSopenharmony_ci 1665bd8deadSopenharmony_ci establishes the data storage, format, and dimensions of a 1675bd8deadSopenharmony_ci renderbuffer object's image, using the parameters and storage 1685bd8deadSopenharmony_ci associated with the eglImageOES <image>. Assuming no errors 1695bd8deadSopenharmony_ci are generated in this process, the resulting renderbuffer 1705bd8deadSopenharmony_ci will be an EGLImage target of the specifed eglImageOES <image>. 1715bd8deadSopenharmony_ci The renderbuffer will remain an EGLImage target until it is 1725bd8deadSopenharmony_ci deleted or respecified by a call to 1735bd8deadSopenharmony_ci {Reference}RenderbufferStorageOES. As a result of this referencing 1745bd8deadSopenharmony_ci operation, all of the pixel data in the <buffer> used as the 1755bd8deadSopenharmony_ci EGLImage source resource (i.e., the <buffer> parameter passed to 1765bd8deadSopenharmony_ci the CreateImageOES command that returned <image>) will become 1775bd8deadSopenharmony_ci undefined. 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_ci <target> must be RENDERBUFFER_OES, and <image> must be the 1805bd8deadSopenharmony_ci handle of a valid EGLImage resource, cast into the type 1815bd8deadSopenharmony_ci eglImageOES. 1825bd8deadSopenharmony_ci 1835bd8deadSopenharmony_ci If the GL is unable to create a renderbuffer using the specified 1845bd8deadSopenharmony_ci eglImageOES, the error INVALID_OPERATION is generated. If <image> 1855bd8deadSopenharmony_ci does not refer to a valid eglImageOES object, the error 1865bd8deadSopenharmony_ci INVALID_VALUE is generated. 1875bd8deadSopenharmony_ci 1885bd8deadSopenharmony_ciIssues 1895bd8deadSopenharmony_ci 1905bd8deadSopenharmony_ci 1. What happens if an application tries to specify a new mipmap 1915bd8deadSopenharmony_ci level (or respecify an existing mipmap level) for a texture 1925bd8deadSopenharmony_ci object that was originally specified using 1935bd8deadSopenharmony_ci EGLImageTargetTexture2D (e.g., by subsequent calls to 1945bd8deadSopenharmony_ci {Copy}TexImage, GenerateMipmapOES, and/or setting the 1955bd8deadSopenharmony_ci texture's GENERATE_MIPMAP_SGIS parameter to TRUE) ? 1965bd8deadSopenharmony_ci 1975bd8deadSopenharmony_ci RESOLVED: If the application respecifies any properties of 1985bd8deadSopenharmony_ci an EGLImage target texture, the GL should allocate additional 1995bd8deadSopenharmony_ci memory for the respecified object, copying any data from 2005bd8deadSopenharmony_ci previously-specified levels (including those in the EGLImage 2015bd8deadSopenharmony_ci source). The respecified texture object will not be an 2025bd8deadSopenharmony_ci EGLImage target, potentially orphaning the EGLImage. 2035bd8deadSopenharmony_ci 2045bd8deadSopenharmony_ci 2. What happens if multiple texture or renderbuffer objects, which 2055bd8deadSopenharmony_ci are each EGLImage siblings, are attached to multiple attachment 2065bd8deadSopenharmony_ci points of a framebuffer object? 2075bd8deadSopenharmony_ci 2085bd8deadSopenharmony_ci RESOLVED: There are several possibilities for handling this 2095bd8deadSopenharmony_ci situation, listed below. The primary goal for any solution 2105bd8deadSopenharmony_ci should be minimizing the required run-time error checking & 2115bd8deadSopenharmony_ci validation, since determining that two objects refer to the same 2125bd8deadSopenharmony_ci parent resource is a complex operation. 2135bd8deadSopenharmony_ci 2145bd8deadSopenharmony_ci i. Generate an error if a context share group attempts to create 2155bd8deadSopenharmony_ci two EGLImage siblings (either source or target) . 2165bd8deadSopenharmony_ci 2175bd8deadSopenharmony_ci This limits error checking to just EGLImageTargetTexture / 2185bd8deadSopenharmony_ci EGLImageTargetRenderbufferStorage, which should be infrequent 2195bd8deadSopenharmony_ci calls, particularly during run-time. However, some potentially 2205bd8deadSopenharmony_ci valuable use cases are restricted with this approach, such 2215bd8deadSopenharmony_ci as referencing 2D texture objects from cube map EGLImage sources 2225bd8deadSopenharmony_ci in the same context share group. 2235bd8deadSopenharmony_ci 2245bd8deadSopenharmony_ci ii. Add a new clause to the framebuffer completeness test that 2255bd8deadSopenharmony_ci disallows multiple EGLImage siblings being attached to the 2265bd8deadSopenharmony_ci same framebuffer object. 2275bd8deadSopenharmony_ci 2285bd8deadSopenharmony_ci This would be in the spirit of the OES_framebuffer_object 2295bd8deadSopenharmony_ci extension and does not limit any valuable use cases; however, 2305bd8deadSopenharmony_ci it has the potential to significantly increase runtime 2315bd8deadSopenharmony_ci overhead, given the complexity of this completeness check 2325bd8deadSopenharmony_ci and the potential frequency that framebuffer completeness 2335bd8deadSopenharmony_ci may need to be checked. 2345bd8deadSopenharmony_ci 2355bd8deadSopenharmony_ci iii. Leave the rendering results undefined, but require that 2365bd8deadSopenharmony_ci behavior be limited to undefined rendering results (i.e., 2375bd8deadSopenharmony_ci the application and/or system may not crash as a result 2385bd8deadSopenharmony_ci of this operation). 2395bd8deadSopenharmony_ci 2405bd8deadSopenharmony_ci This solution allows implementations the opportunity to have 2415bd8deadSopenharmony_ci virtually no additional run-time validation overhead, nor 2425bd8deadSopenharmony_ci are any valuable use cases restricted. Implementations 2435bd8deadSopenharmony_ci may consider framebuffer objects which contain multiple 2445bd8deadSopenharmony_ci EGLImage siblings as incomplete framebuffers if necessary to 2455bd8deadSopenharmony_ci ensure application & system stability. 2465bd8deadSopenharmony_ci 2475bd8deadSopenharmony_ci SUGGESTION: Solution (iii). The only reasonable well-defined 2485bd8deadSopenharmony_ci behavior for this type of API usage is an error; however, given 2495bd8deadSopenharmony_ci the potential for the error check to noticeably increase validation 2505bd8deadSopenharmony_ci overhead, leaving this behavior undefined seems like the best 2515bd8deadSopenharmony_ci choice. 2525bd8deadSopenharmony_ci 2535bd8deadSopenharmony_ci 3. What about portability problems introduced by allowing implementation- 2545bd8deadSopenharmony_ci dependent failures? 2555bd8deadSopenharmony_ci 2565bd8deadSopenharmony_ci UNRESOLVED: This is the same issue described in Issue 14 of the 2575bd8deadSopenharmony_ci EGL_KHR_image_base specification. Like the resolution for that 2585bd8deadSopenharmony_ci issue, this specification should include some minimum 2595bd8deadSopenharmony_ci requirements, but leave the larger portability problem 2605bd8deadSopenharmony_ci unresolved at the moment. 2615bd8deadSopenharmony_ci 2625bd8deadSopenharmony_ci 4. Should EGLImageTargetTexture2DOES and 2635bd8deadSopenharmony_ci EGLImageTargetRenderBufferStorageOES result in undefined pixel data, 2645bd8deadSopenharmony_ci as with calls to eglCreateImageOES? 2655bd8deadSopenharmony_ci 2665bd8deadSopenharmony_ci UNRESOLVED: One of the problems with allowing the referencing 2675bd8deadSopenharmony_ci functions to result in undefined pixel data is that the EGLImage 2685bd8deadSopenharmony_ci source object may be part of a larger image structure (such as 2695bd8deadSopenharmony_ci an array of mipmap levels-of-detail, or cube map faces). While we 2705bd8deadSopenharmony_ci can specify that the pixel data in the EGLImage become undefined 2715bd8deadSopenharmony_ci quite easily, specifying that the pixel data in other images become 2725bd8deadSopenharmony_ci undefined is more difficult. So, with that discussion, the following 2735bd8deadSopenharmony_ci options were considered: 2745bd8deadSopenharmony_ci 2755bd8deadSopenharmony_ci i. Specify that the pixel data in the EGLImage, and other image 2765bd8deadSopenharmony_ci arrays associated with the EGLImage source, become undefined 2775bd8deadSopenharmony_ci as a result of referencing. 2785bd8deadSopenharmony_ci 2795bd8deadSopenharmony_ci ii. Specify that only the pixel data in the EGLImage becomes 2805bd8deadSopenharmony_ci undefined; any data in other image arrays associated with the 2815bd8deadSopenharmony_ci EGLImage source must not be affected by the referencing 2825bd8deadSopenharmony_ci operation. 2835bd8deadSopenharmony_ci 2845bd8deadSopenharmony_ci iii. Specify that the pixel data in the EGLImage is unaffected as 2855bd8deadSopenharmony_ci a result of the referencing operation. 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ci Option (i) gives the greatest flexibility (and potentially ease- 2885bd8deadSopenharmony_ci of implementation) to implementers, which should may result in 2895bd8deadSopenharmony_ci implementations exporting a larger number of compatible configurations 2905bd8deadSopenharmony_ci than the other, stricter options. Additionally, for well-behaved 2915bd8deadSopenharmony_ci applications (i.e., applications which perform all resource creation 2925bd8deadSopenharmony_ci and referencing prior to use), making the image data undefined will 2935bd8deadSopenharmony_ci not have any adverse side effects. 2945bd8deadSopenharmony_ci 2955bd8deadSopenharmony_ci Option (ii) provides option (i)'s benefits if the EGLImage source 2965bd8deadSopenharmony_ci is a trivial image (i.e., no additional mipmap levels-of-detail, 2975bd8deadSopenharmony_ci 3D texture slices, etc.); however, some implementations may be 2985bd8deadSopenharmony_ci required to implement potentially-expensive copy operations to support 2995bd8deadSopenharmony_ci complex EGLImage source images. 3005bd8deadSopenharmony_ci 3015bd8deadSopenharmony_ci Option (iii) is the strictest, and may significantly impede 3025bd8deadSopenharmony_ci implementers' ability to expose compatible configurations. 3035bd8deadSopenharmony_ci 3045bd8deadSopenharmony_ci Weighing the benefits (increased configuration compatibility and ease- 3055bd8deadSopenharmony_ci / performance- of implementation) versus the costs (specification 3065bd8deadSopenharmony_ci ugliness), the specification has currently selected option (i), 3075bd8deadSopenharmony_ci favoring compatibility and performance. 3085bd8deadSopenharmony_ci 3095bd8deadSopenharmony_ci 3105bd8deadSopenharmony_ci 5. What should the entry point for referencing 2D textures be named? 3115bd8deadSopenharmony_ci 3125bd8deadSopenharmony_ci UNRESOLVED: Unfortunately, OpenGL is not particularly consistent 3135bd8deadSopenharmony_ci with texture naming conventions. However, most texture function 3145bd8deadSopenharmony_ci names have followed the convention of using a verb- or adjective- 3155bd8deadSopenharmony_ci specifier followed by the object type, e.g. : CopyTexImage, 3165bd8deadSopenharmony_ci CompressedTexImage, DrawPixels, etc. 3175bd8deadSopenharmony_ci 3185bd8deadSopenharmony_ci Therefore, this issue can be broken into two sub-issues: naming 3195bd8deadSopenharmony_ci the verb or adjective and naming the object type. 3205bd8deadSopenharmony_ci 3215bd8deadSopenharmony_ci The following options were considered for the verb or adjective: 3225bd8deadSopenharmony_ci a1) Reference / Referenced 3235bd8deadSopenharmony_ci a2) EGLImageTarget 3245bd8deadSopenharmony_ci 3255bd8deadSopenharmony_ci Reference (a1) is the verb for creating EGLImage targets from 3265bd8deadSopenharmony_ci EGLImages (defined in the EGL_OES_image specification), but 3275bd8deadSopenharmony_ci "Reference<blah>" might confuse some developers, since the 3285bd8deadSopenharmony_ci direction of the verb sounds backwards. 3295bd8deadSopenharmony_ci 3305bd8deadSopenharmony_ci Therefore, option (a2) has been selected, since the newly- 3315bd8deadSopenharmony_ci specified texture object will be an EGLImage target. 3325bd8deadSopenharmony_ci 3335bd8deadSopenharmony_ci And the following options were considered for the object type: 3345bd8deadSopenharmony_ci b1) TexImage 3355bd8deadSopenharmony_ci b2) Texture 3365bd8deadSopenharmony_ci b3) TextureObject 3375bd8deadSopenharmony_ci 3385bd8deadSopenharmony_ci (b1) follows the convention used by other texture specification 3395bd8deadSopenharmony_ci functions; however, unlike {Copy,Compressed}TexImage, which 3405bd8deadSopenharmony_ci specify only a single mipmap level-of-detail, the referencing 3415bd8deadSopenharmony_ci entry point respecifies all image arrays in the texture object. 3425bd8deadSopenharmony_ci 3435bd8deadSopenharmony_ci (b2) and (b3) address the issues with (b1). The OpenGL 3445bd8deadSopenharmony_ci specification interchangeably uses "texture" and "texture object" 3455bd8deadSopenharmony_ci to refer to the entire collection of image arrays, so either 3465bd8deadSopenharmony_ci choice seems reasonable. For brevity, (b2) has been used 3475bd8deadSopenharmony_ci in this specification. 3485bd8deadSopenharmony_ci 3495bd8deadSopenharmony_ci Note, though, that eglBindTexImage also respecifies all image 3505bd8deadSopenharmony_ci arrays in the texture object, but it does not change the 3515bd8deadSopenharmony_ci TexImage suffix. 3525bd8deadSopenharmony_ci 3535bd8deadSopenharmony_ci Another option would be to treat the referencing function as an 3545bd8deadSopenharmony_ci attachment, rather than a specification, in which case a more 3555bd8deadSopenharmony_ci appropriate name would follow the convention used in the 3565bd8deadSopenharmony_ci OES_framebuffer_object extension, such as Texture2DeglImageOES. 3575bd8deadSopenharmony_ci 3585bd8deadSopenharmony_ci 6. What should the entry point for referencing renderbuffers be named? 3595bd8deadSopenharmony_ci 3605bd8deadSopenharmony_ci UNRESOLVED: There are far fewer conventions for renderbuffer 3615bd8deadSopenharmony_ci function names than there are for textures, so the naming for 3625bd8deadSopenharmony_ci this function should use whichever convention is selected 3635bd8deadSopenharmony_ci to resolve Issue 5. Given the current selections in that issue, 3645bd8deadSopenharmony_ci EGLImageTargetRenderbufferStorage is being used. 3655bd8deadSopenharmony_ci 3665bd8deadSopenharmony_ciDependencies on EGL_KHR_image, EGL_KHR_image_base, and EGL 1.2 3675bd8deadSopenharmony_ci 3685bd8deadSopenharmony_ci If EGL 1.2 is not supported, or if neither the EGL_OES_image nor 3695bd8deadSopenharmony_ci EGL_OES_image_base extensions is supported, all discussion of 3705bd8deadSopenharmony_ci EGLImages should be ignored, and any calls to either 3715bd8deadSopenharmony_ci EGLImageTargetTexture2DOES or EGLImageTargetRenderbufferStorageOES 3725bd8deadSopenharmony_ci should generate the error INVALID_OPERATION. 3735bd8deadSopenharmony_ci 3745bd8deadSopenharmony_ciDependencies on OES_framebuffer_object 3755bd8deadSopenharmony_ci 3765bd8deadSopenharmony_ci If the OES_framebuffer_object extension is not supported, all 3775bd8deadSopenharmony_ci discussion of renderbuffers should be ignored, and all calls to 3785bd8deadSopenharmony_ci EGLImageTargetRenderbufferStorageOES should generate the error 3795bd8deadSopenharmony_ci INVALID_OPERATION. 3805bd8deadSopenharmony_ci 3815bd8deadSopenharmony_ciRevision History 3825bd8deadSopenharmony_ci 3835bd8deadSopenharmony_ci #8 (April 23, 2015, Jon Leech) 3845bd8deadSopenharmony_ci - Fix typo EGLImageTargetTexImage2DOES -> EGLImageTargetTexture2DOES 3855bd8deadSopenharmony_ci (Bug 8114). 3865bd8deadSopenharmony_ci 3875bd8deadSopenharmony_ci #7 (April 17, 2014, Jon Leech) 3885bd8deadSopenharmony_ci - Add missing error for invalid <image> parameter to 3895bd8deadSopenharmony_ci EGLImageTargetTexture2DOES (Bug 5164). 3905bd8deadSopenharmony_ci 3915bd8deadSopenharmony_ci #6 (April 1, 2009, Acorn Pooley, Jon Leech) 3925bd8deadSopenharmony_ci - Fix dependancy typo. Mention EGL_KHR_image_base. Correct 3935bd8deadSopenharmony_ci spelling of EGL_KHR_image and refer to alternate 3945bd8deadSopenharmony_ci EGL_KHR_image_base. Correct dependency on EGL from 1.1 to 1.2. 3955bd8deadSopenharmony_ci Change filename in the registry to correspond to capitalization 3965bd8deadSopenharmony_ci of the extension string. Don't update the version number 3975bd8deadSopenharmony_ci further until all internal edits are completed. 3985bd8deadSopenharmony_ci 3995bd8deadSopenharmony_ci #5 (April 1, 2009, Jon Leech) 4005bd8deadSopenharmony_ci - Added more overview pointing to companion EGL extensions. 4015bd8deadSopenharmony_ci 4025bd8deadSopenharmony_ci #4 (April 22, 2007, Jon Leech) 4035bd8deadSopenharmony_ci - Added updated 'Status' to reflect OpenKODE 1.0 Provisional. 4045bd8deadSopenharmony_ci 4055bd8deadSopenharmony_ci #3 (December 14, 2006) 4065bd8deadSopenharmony_ci - Changed requirement to egl 1.2 to include EGLClientBuffer type. 4075bd8deadSopenharmony_ci 4085bd8deadSopenharmony_ci #2 (October 20, 2006) 4095bd8deadSopenharmony_ci - Reworded phrasing describing undefined pixel data as a 4105bd8deadSopenharmony_ci result of EGLImageTarget* commands 4115bd8deadSopenharmony_ci 4125bd8deadSopenharmony_ci #1 - Original Release 413