Name ANGLE_vulkane_image Name Strings GL_ANGLE_vulkane_image Contributors Peng Huang, Google Contact Peng Huang, Google (penghuang 'at' chromium.com) Status Draft Version Last Modified Date: Nov 19, 2021 Revision: 1 Number TBD Dependencies Written against the OpenGL 4.5 and OpenGL ES 3.2 specifications GL_ANGLE_vulkane_image requires GL_EXT_external_objects Overview Building upon the OpenGL memory object and semaphore framework defined in EXT_external_objects, this extension enables an OpenGL application to share textures with an external API. New Procedures and Functions If the GL_ANGLE_vulkane_image string is reported, the following commands are added: void AcquireTexturesANGLE(uint numTextures, const uint *textures, const GLenum *layouts); void ReleaseTexturesANGLE(uint numTextures, const uint *textures, GLenum *layouts); New Tokens None Additions to Chapter 4 of the OpenGL 4.5 Specification (Event Model) The command void AcquireTexturesANGLE(uint numTextures, const uint *textures, const GLenum *layouts); will acquire ownership of textures. Since the texture layout state is managed internally by the GL, but may have been modified by an external API, the current layout of the textures must be specified to initialize internal GL state prior to correspond to those specified by the Vulkan API as described in table 4.4. However, the layouts do not necessarily correspond to an optimal state for any particular GL operation. The GL will simply perform appropriate transitions internally as necessary based on the specified current layout of the texture. The command void ReleaseTexturesANGLE(uint numTextures, const uint *textures, GLenum *layouts); will release ownership of textures. The current texture layouts will be returned, so an external API can perform appropriate transitions as necessary based on the returned current layout of the textures. Revision History Revision 1, 2021-11-19 (Peng Huang) - Initial draft based closely on EXT_external_objects_fd.