xref: /aosp_15_r20/external/angle/extensions/ANGLE_external_objects_fuchsia.txt (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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