| 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 <handleType> 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 <handleType> 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 <handle>. What type of |
| handle <handle> refers to is determined by <handleType>. A successful |
| import operation transfers ownership of <handle> to the GL |
| implementation, and performing any operation on <handle> 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 <size> from the handle |
| <handle>. What type of object <handle> refers to is determined by |
| <handleType>. A successful import operation transfers ownership |
| of <handle> to the GL implementation, and performing any operation on |
| <handle> 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. |