| Name |
| |
| ANGLE_device_creation |
| |
| Name Strings |
| |
| EGL_ANGLE_device_creation |
| |
| Contributors |
| |
| Austin Kinross (aukinros 'at' microsoft.com) |
| |
| Contact |
| |
| Austin Kinross (aukinros 'at' microsoft.com) |
| |
| Status |
| |
| Draft |
| |
| Version |
| |
| Version 1, Nov 02, 2015 |
| |
| Number |
| |
| EGL Extension #XXX |
| |
| Extension Type |
| |
| EGL client extension |
| |
| Dependencies |
| |
| Requires EGL_EXT_device_query. |
| |
| Written against the wording of EGL 1.5 as modified by EGL_EXT_device_query. |
| |
| Overview |
| |
| Increasingly, EGL and its client APIs are being used in place of "native" |
| rendering APIs to implement the basic graphics functionality of native |
| windowing systems. This extension defines a way to create an EGL device |
| which maps to an inputted "native" rendering API device. |
| |
| This extension is intended to be used with EGL_EXT_platform_device to |
| initialize a display using an existing "native" rendering device, but |
| EGL_EXT_platform_device is not required. |
| |
| IP Status |
| |
| No known claims. |
| |
| New Types |
| |
| None. |
| |
| New Procedures and Functions |
| |
| EGLDeviceEXT eglCreateDeviceANGLE(EGLint device_type, |
| void *native_device, |
| cost EGLAttrib *attrib_list) |
| |
| EGLBoolean eglReleaseDeviceANGLE(EGLDeviceEXT device) |
| |
| New Tokens |
| |
| None. |
| |
| Changes to section 3.2 (Devices) |
| |
| Add the following after the final paragraph to section 3.2 (Devices): |
| |
| To create an EGL device wrapping an existing native rendering device, use: |
| |
| EGLDeviceEXT eglCreateDeviceANGLE(EGLint device_type, |
| void *native_device, |
| cost EGLAttrib *attrib_list); |
| |
| On success, a valid EGLDeviceEXT is returned. On failure, EGL_NO_DEVICE_EXT |
| is returned. |
| |
| An EGL_BAD_ATTRIBUTE error is generated if <device_type> is not a valid |
| device type. This extension defines no valid values for <device_type>. |
| |
| All attribute names in <attrib_list> are immediately followed by the |
| corresponding desired value. The list is terminated with EGL_NONE. The |
| <attrib_list> is considered empty if either <attrib_list> is NULL or if its |
| first element is EGL_NONE. This specification defines no valid attribute |
| names for inclusion in <attrib_list>. If <attrib_list> is not empty then |
| an EGL_BAD_ATTRIBUTE error is generated. |
| |
| If a device is created using eglCreateDeviceANGLE then it is the |
| caller's responsibility to manage the lifetime of the device, and to call |
| eglReleaseDeviceANGLE at an appropriate time. |
| |
| To release a device, use: |
| |
| EGLBoolean eglReleaseDeviceANGLE(EGLDeviceEXT device); |
| |
| On success, EGL_TRUE is returned. On failure, EGL_FALSE is returned. |
| |
| If <device> equals EGL_NO_DEVICE_EXT then an EGL_BAD_DEVICE_EXT error is |
| generated. If <device> is not a valid device then the behavior is undefined. |
| |
| <device> must have been created using eglGetDeviceANGLE. If <device> was |
| obtained by other means, such as through eglQueryDisplayAttribEXT, then an |
| EGL_BAD_DEVICE_EXT error is generated. |
| |
| If eglReleaseDeviceANGLE is called on a device that is still in use by other |
| EGL objects, then the resulting behavior of those objects is undefined. |
| |
| Issues |
| |
| None. |
| |
| Revision History |
| |
| Version 1, Nov 2, 2015 (Austin Kinross) |
| - Initial Draft |