Name ANGLE_external_objects_fuchsia Name Strings GL_ANGLE_memory_object_fuchsia GL_ANGLE_semaphore_fuchsia Contributors Michael Spang, Google Contact Michael Spang, Google (spang 'at' google.com) Status Draft Version Last Modified Date: Feb 19, 2020 Revision: 1 Number TBD Dependencies Written against the OpenGL 4.5 and OpenGL ES 3.2 specifications GL_ANGLE_memory_object_fuchsia requires GL_EXT_memory_object GL_ANGLE_semaphore_fuchsia requires GL_EXT_semaphore Overview Building upon the OpenGL memory object and semaphore framework defined in EXT_external_objects, this extension enables an OpenGL application to import a memory object or semaphore from Zircon external handles. New Procedures and Functions If the GL_ANGLE_memory_object_fuchsia string is reported, the following commands are added: void ImportMemoryZirconHandleANGLE(uint memory, uint64 size, enum handleType, uint handle); If the GL_ANGLE_semaphore_fuchsia string is reported, the following commands are added: void ImportSemaphoreZirconHandleANGLE(uint semaphore, enum handleType, uint handle); New Tokens If the GL_ANGLE_memory_object_fuchsia string is reported, the following tokens are added: Accepted by the parameter of ImportMemoryZirconHandleANGLE(). HANDLE_TYPE_ZIRCON_VMO_ANGLE 0x93AE If the GL_ANGLE_semaphore_fuchsia string is reported, the following tokens are added: Accepted by the parameter of ImportSemaphoreZirconHandleANGLE(). HANDLE_TYPE_ZIRCON_EVENT_ANGLE 0x93AF Additions to Chapter 4 of the OpenGL 4.5 Specification (Event Model) Add the following entry to table 4.2 "Commands for importing external semaphore handles." | Handle Type | Import command | +--------------------------------+----------------------------------+ | HANDLE_TYPE_ZIRCON_EVENT_ANGLE | ImportSemaphoreZirconHandleANGLE | +--------------------------------+----------------------------------+ Replace the paragraph in section 4.2.1 beginning "External handles are often defined..." with the following The command ImportSemaphoreZirconHandleANGLE(uint semaphore, enum handleType, uint handle); imports a semaphore from the zircon handle . What type of handle refers to is determined by . A successful import operation transfers ownership of to the GL implementation, and performing any operation on in the application after an import results in undefined behavior. Additions to Chapter 6 of the OpenGL 4.5 Specification (Memory Objects) Add the following entry to table 6.2 "Commands for importing external memory handles." | Handle Type | Import command | +------------------------------+-------------------------------+ | HANDLE_TYPE_ZIRCON_VMO_ANGLE | ImportMemoryZirconHandleANGLE | +------------------------------+-------------------------------+ Replace the paragraph in section 6.1 beginning "External handles are often defined..." with the following The command void ImportMemoryZirconHandleANGLE(uint memory, uint64 size, enum handleType, uint handle); imports a memory object of length from the handle . What type of object refers to is determined by . A successful import operation transfers ownership of to the GL implementation, and performing any operation on in the application after an import results in undefined behavior. Revision History Revision 1, 2020-02-19 (Michael Spang) - Initial draft based closely on EXT_external_objects_fd.