| Name |
| |
| ANGLE_external_context_and_surface |
| |
| Name Strings |
| |
| EGL_ANGLE_external_context_and_surface |
| |
| Contributors |
| |
| Peng Huang |
| Shahbaz Youssefi |
| |
| Contacts |
| |
| Shahbaz Youssefi, Google (syoussefi 'at' google.com) |
| |
| Status |
| |
| Draft |
| |
| Version |
| |
| Version 2, July 24, 2023 |
| |
| Number |
| |
| EGL Extension #?? |
| |
| Dependencies |
| |
| This extension is written against the wording of the EGL 1.4 |
| Specification. |
| |
| Overview |
| |
| This extension allows plugging an external OpenGL context and surface to |
| the OpenGL backend of ANGLE. |
| |
| New Types |
| |
| None |
| |
| New Procedures and Functions |
| |
| void eglAcquireExternalContextANGLE( |
| EGLDisplay dpy); |
| void eglReleaseExternalContextANGLE( |
| EGLDisplay dpy); |
| |
| New Tokens |
| |
| Accepted as an attribute name in the <*attrib_list> argument to |
| eglCreateContext: |
| |
| EGL_EXTERNAL_CONTEXT_ANGLE 0x348E |
| |
| Accepted in the <buftype> parameter of eglCreatePbufferFromClientBuffer: |
| |
| EGL_EXTERNAL_SURFACE_ANGLE 0x348F |
| |
| Additions to the EGL 1.4 Specification |
| |
| Add the following to section 3.7.1 "Creating Rendering Contexts": |
| |
| EGL_EXTERNAL_CONTEXT_ANGLE indicates whether the context is externally |
| managed, and that no internal context is created. |
| In this case, the context must be made current by the application before |
| calling other EGL or GL functions that may access the context. |
| |
| Add the following to section 3.5.3 "Binding Off-Screen Rendering Surfaces |
| To Client Buffers": |
| |
| EGL_EXTERNAL_SURFACE_ANGLE indicates whether the surface is externally |
| managed, and that no internal surface is created. |
| In this case, the surface must be made current by the application before |
| calling other EGL or GL functions that may access the surface. |
| |
| Add the following to section 3.7.3 "Binding Contexts and Drawables": |
| |
| Before making a call that uses a context created with |
| EGL_EXTERNAL_CONTEXT_ANGLE, the context must be synchronized from external. |
| eglAcquireExternalContextANGLE can be called to perform this |
| synchronization, ensuring that the implementation is up-to-date with |
| respect to changes that external has made to the context. |
| |
| Before the application (external) can continue using the context after the |
| implementation has modified it, the context must be synchronized to |
| external, restoring the state from when the external context was |
| "acquired". |
| eglReleaseExternalContextANGLE can be called to perform this |
| synchronization, ensuring that the context is restored to its original |
| state from before the eglAcquireExternalContextANGLE call. |
| |
| Issues |
| |
| None yet. |
| |
| Revision History |
| |
| Rev. Date Author Changes |
| ---- ------------- --------- ---------------------------------------- |
| 1 Jan 7, 2021 penghuang Initial version |
| 2 July 24, 2023 syoussefi Add eglAcquireExternalContextANGLE, and |
| eglReleaseExternalContextANGLE |
| 3 July 27, 2023 syoussefi Remove EGL_EXTERNAL_CONTEXT_SAVE_STATE_ANGLE |