1*8975f5c5SAndroid Build Coastguard WorkerName 2*8975f5c5SAndroid Build Coastguard Worker 3*8975f5c5SAndroid Build Coastguard Worker ANGLE_external_objects_fuchsia 4*8975f5c5SAndroid Build Coastguard Worker 5*8975f5c5SAndroid Build Coastguard WorkerName Strings 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker GL_ANGLE_memory_object_fuchsia 8*8975f5c5SAndroid Build Coastguard Worker GL_ANGLE_semaphore_fuchsia 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard WorkerContributors 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Worker Michael Spang, Google 13*8975f5c5SAndroid Build Coastguard Worker 14*8975f5c5SAndroid Build Coastguard WorkerContact 15*8975f5c5SAndroid Build Coastguard Worker 16*8975f5c5SAndroid Build Coastguard Worker Michael Spang, Google (spang 'at' google.com) 17*8975f5c5SAndroid Build Coastguard Worker 18*8975f5c5SAndroid Build Coastguard WorkerStatus 19*8975f5c5SAndroid Build Coastguard Worker 20*8975f5c5SAndroid Build Coastguard Worker Draft 21*8975f5c5SAndroid Build Coastguard Worker 22*8975f5c5SAndroid Build Coastguard WorkerVersion 23*8975f5c5SAndroid Build Coastguard Worker 24*8975f5c5SAndroid Build Coastguard Worker Last Modified Date: Feb 19, 2020 25*8975f5c5SAndroid Build Coastguard Worker Revision: 1 26*8975f5c5SAndroid Build Coastguard Worker 27*8975f5c5SAndroid Build Coastguard WorkerNumber 28*8975f5c5SAndroid Build Coastguard Worker 29*8975f5c5SAndroid Build Coastguard Worker TBD 30*8975f5c5SAndroid Build Coastguard Worker 31*8975f5c5SAndroid Build Coastguard WorkerDependencies 32*8975f5c5SAndroid Build Coastguard Worker 33*8975f5c5SAndroid Build Coastguard Worker Written against the OpenGL 4.5 and OpenGL ES 3.2 specifications 34*8975f5c5SAndroid Build Coastguard Worker 35*8975f5c5SAndroid Build Coastguard Worker GL_ANGLE_memory_object_fuchsia requires GL_EXT_memory_object 36*8975f5c5SAndroid Build Coastguard Worker 37*8975f5c5SAndroid Build Coastguard Worker GL_ANGLE_semaphore_fuchsia requires GL_EXT_semaphore 38*8975f5c5SAndroid Build Coastguard Worker 39*8975f5c5SAndroid Build Coastguard WorkerOverview 40*8975f5c5SAndroid Build Coastguard Worker 41*8975f5c5SAndroid Build Coastguard Worker Building upon the OpenGL memory object and semaphore framework 42*8975f5c5SAndroid Build Coastguard Worker defined in EXT_external_objects, this extension enables an OpenGL 43*8975f5c5SAndroid Build Coastguard Worker application to import a memory object or semaphore from Zircon 44*8975f5c5SAndroid Build Coastguard Worker external handles. 45*8975f5c5SAndroid Build Coastguard Worker 46*8975f5c5SAndroid Build Coastguard WorkerNew Procedures and Functions 47*8975f5c5SAndroid Build Coastguard Worker 48*8975f5c5SAndroid Build Coastguard Worker If the GL_ANGLE_memory_object_fuchsia string is reported, the following 49*8975f5c5SAndroid Build Coastguard Worker commands are added: 50*8975f5c5SAndroid Build Coastguard Worker 51*8975f5c5SAndroid Build Coastguard Worker void ImportMemoryZirconHandleANGLE(uint memory, 52*8975f5c5SAndroid Build Coastguard Worker uint64 size, 53*8975f5c5SAndroid Build Coastguard Worker enum handleType, 54*8975f5c5SAndroid Build Coastguard Worker uint handle); 55*8975f5c5SAndroid Build Coastguard Worker 56*8975f5c5SAndroid Build Coastguard Worker If the GL_ANGLE_semaphore_fuchsia string is reported, the following commands 57*8975f5c5SAndroid Build Coastguard Worker are added: 58*8975f5c5SAndroid Build Coastguard Worker 59*8975f5c5SAndroid Build Coastguard Worker void ImportSemaphoreZirconHandleANGLE(uint semaphore, 60*8975f5c5SAndroid Build Coastguard Worker enum handleType, 61*8975f5c5SAndroid Build Coastguard Worker uint handle); 62*8975f5c5SAndroid Build Coastguard Worker 63*8975f5c5SAndroid Build Coastguard Worker 64*8975f5c5SAndroid Build Coastguard WorkerNew Tokens 65*8975f5c5SAndroid Build Coastguard Worker 66*8975f5c5SAndroid Build Coastguard Worker If the GL_ANGLE_memory_object_fuchsia string is reported, the following 67*8975f5c5SAndroid Build Coastguard Worker tokens are added: 68*8975f5c5SAndroid Build Coastguard Worker 69*8975f5c5SAndroid Build Coastguard Worker Accepted by the <handleType> parameter of ImportMemoryZirconHandleANGLE(). 70*8975f5c5SAndroid Build Coastguard Worker 71*8975f5c5SAndroid Build Coastguard Worker HANDLE_TYPE_ZIRCON_VMO_ANGLE 0x93AE 72*8975f5c5SAndroid Build Coastguard Worker 73*8975f5c5SAndroid Build Coastguard Worker If the GL_ANGLE_semaphore_fuchsia string is reported, the following 74*8975f5c5SAndroid Build Coastguard Worker tokens are added: 75*8975f5c5SAndroid Build Coastguard Worker 76*8975f5c5SAndroid Build Coastguard Worker Accepted by the <handleType> parameter of ImportSemaphoreZirconHandleANGLE(). 77*8975f5c5SAndroid Build Coastguard Worker 78*8975f5c5SAndroid Build Coastguard Worker HANDLE_TYPE_ZIRCON_EVENT_ANGLE 0x93AF 79*8975f5c5SAndroid Build Coastguard Worker 80*8975f5c5SAndroid Build Coastguard WorkerAdditions to Chapter 4 of the OpenGL 4.5 Specification (Event Model) 81*8975f5c5SAndroid Build Coastguard Worker 82*8975f5c5SAndroid Build Coastguard Worker Add the following entry to table 4.2 "Commands for importing 83*8975f5c5SAndroid Build Coastguard Worker external semaphore handles." 84*8975f5c5SAndroid Build Coastguard Worker 85*8975f5c5SAndroid Build Coastguard Worker | Handle Type | Import command | 86*8975f5c5SAndroid Build Coastguard Worker +--------------------------------+----------------------------------+ 87*8975f5c5SAndroid Build Coastguard Worker | HANDLE_TYPE_ZIRCON_EVENT_ANGLE | ImportSemaphoreZirconHandleANGLE | 88*8975f5c5SAndroid Build Coastguard Worker +--------------------------------+----------------------------------+ 89*8975f5c5SAndroid Build Coastguard Worker 90*8975f5c5SAndroid Build Coastguard Worker Replace the paragraph in section 4.2.1 beginning "External handles 91*8975f5c5SAndroid Build Coastguard Worker are often defined..." with the following 92*8975f5c5SAndroid Build Coastguard Worker 93*8975f5c5SAndroid Build Coastguard Worker The command 94*8975f5c5SAndroid Build Coastguard Worker 95*8975f5c5SAndroid Build Coastguard Worker ImportSemaphoreZirconHandleANGLE(uint semaphore, 96*8975f5c5SAndroid Build Coastguard Worker enum handleType, 97*8975f5c5SAndroid Build Coastguard Worker uint handle); 98*8975f5c5SAndroid Build Coastguard Worker 99*8975f5c5SAndroid Build Coastguard Worker imports a semaphore from the zircon handle <handle>. What type of 100*8975f5c5SAndroid Build Coastguard Worker handle <handle> refers to is determined by <handleType>. A successful 101*8975f5c5SAndroid Build Coastguard Worker import operation transfers ownership of <handle> to the GL 102*8975f5c5SAndroid Build Coastguard Worker implementation, and performing any operation on <handle> in the 103*8975f5c5SAndroid Build Coastguard Worker application after an import results in undefined behavior. 104*8975f5c5SAndroid Build Coastguard Worker 105*8975f5c5SAndroid Build Coastguard WorkerAdditions to Chapter 6 of the OpenGL 4.5 Specification (Memory Objects) 106*8975f5c5SAndroid Build Coastguard Worker 107*8975f5c5SAndroid Build Coastguard Worker Add the following entry to table 6.2 "Commands for importing 108*8975f5c5SAndroid Build Coastguard Worker external memory handles." 109*8975f5c5SAndroid Build Coastguard Worker 110*8975f5c5SAndroid Build Coastguard Worker | Handle Type | Import command | 111*8975f5c5SAndroid Build Coastguard Worker +------------------------------+-------------------------------+ 112*8975f5c5SAndroid Build Coastguard Worker | HANDLE_TYPE_ZIRCON_VMO_ANGLE | ImportMemoryZirconHandleANGLE | 113*8975f5c5SAndroid Build Coastguard Worker +------------------------------+-------------------------------+ 114*8975f5c5SAndroid Build Coastguard Worker 115*8975f5c5SAndroid Build Coastguard Worker Replace the paragraph in section 6.1 beginning "External handles are 116*8975f5c5SAndroid Build Coastguard Worker often defined..." with the following 117*8975f5c5SAndroid Build Coastguard Worker 118*8975f5c5SAndroid Build Coastguard Worker The command 119*8975f5c5SAndroid Build Coastguard Worker 120*8975f5c5SAndroid Build Coastguard Worker void ImportMemoryZirconHandleANGLE(uint memory, 121*8975f5c5SAndroid Build Coastguard Worker uint64 size, 122*8975f5c5SAndroid Build Coastguard Worker enum handleType, 123*8975f5c5SAndroid Build Coastguard Worker uint handle); 124*8975f5c5SAndroid Build Coastguard Worker 125*8975f5c5SAndroid Build Coastguard Worker imports a memory object of length <size> from the handle 126*8975f5c5SAndroid Build Coastguard Worker <handle>. What type of object <handle> refers to is determined by 127*8975f5c5SAndroid Build Coastguard Worker <handleType>. A successful import operation transfers ownership 128*8975f5c5SAndroid Build Coastguard Worker of <handle> to the GL implementation, and performing any operation on 129*8975f5c5SAndroid Build Coastguard Worker <handle> in the application after an import results in undefined 130*8975f5c5SAndroid Build Coastguard Worker behavior. 131*8975f5c5SAndroid Build Coastguard Worker 132*8975f5c5SAndroid Build Coastguard WorkerRevision History 133*8975f5c5SAndroid Build Coastguard Worker 134*8975f5c5SAndroid Build Coastguard Worker Revision 1, 2020-02-19 (Michael Spang) 135*8975f5c5SAndroid Build Coastguard Worker - Initial draft based closely on EXT_external_objects_fd. 136