1Name 2 3 ANGLE_device_creation 4 5Name Strings 6 7 EGL_ANGLE_device_creation 8 9Contributors 10 11 Austin Kinross (aukinros 'at' microsoft.com) 12 13Contact 14 15 Austin Kinross (aukinros 'at' microsoft.com) 16 17Status 18 19 Draft 20 21Version 22 23 Version 1, Nov 02, 2015 24 25Number 26 27 EGL Extension #XXX 28 29Extension Type 30 31 EGL client extension 32 33Dependencies 34 35 Requires EGL_EXT_device_query. 36 37 Written against the wording of EGL 1.5 as modified by EGL_EXT_device_query. 38 39Overview 40 41 Increasingly, EGL and its client APIs are being used in place of "native" 42 rendering APIs to implement the basic graphics functionality of native 43 windowing systems. This extension defines a way to create an EGL device 44 which maps to an inputted "native" rendering API device. 45 46 This extension is intended to be used with EGL_EXT_platform_device to 47 initialize a display using an existing "native" rendering device, but 48 EGL_EXT_platform_device is not required. 49 50IP Status 51 52 No known claims. 53 54New Types 55 56 None. 57 58New Procedures and Functions 59 60 EGLDeviceEXT eglCreateDeviceANGLE(EGLint device_type, 61 void *native_device, 62 cost EGLAttrib *attrib_list) 63 64 EGLBoolean eglReleaseDeviceANGLE(EGLDeviceEXT device) 65 66New Tokens 67 68 None. 69 70Changes to section 3.2 (Devices) 71 72 Add the following after the final paragraph to section 3.2 (Devices): 73 74 To create an EGL device wrapping an existing native rendering device, use: 75 76 EGLDeviceEXT eglCreateDeviceANGLE(EGLint device_type, 77 void *native_device, 78 cost EGLAttrib *attrib_list); 79 80 On success, a valid EGLDeviceEXT is returned. On failure, EGL_NO_DEVICE_EXT 81 is returned. 82 83 An EGL_BAD_ATTRIBUTE error is generated if <device_type> is not a valid 84 device type. This extension defines no valid values for <device_type>. 85 86 All attribute names in <attrib_list> are immediately followed by the 87 corresponding desired value. The list is terminated with EGL_NONE. The 88 <attrib_list> is considered empty if either <attrib_list> is NULL or if its 89 first element is EGL_NONE. This specification defines no valid attribute 90 names for inclusion in <attrib_list>. If <attrib_list> is not empty then 91 an EGL_BAD_ATTRIBUTE error is generated. 92 93 If a device is created using eglCreateDeviceANGLE then it is the 94 caller's responsibility to manage the lifetime of the device, and to call 95 eglReleaseDeviceANGLE at an appropriate time. 96 97 To release a device, use: 98 99 EGLBoolean eglReleaseDeviceANGLE(EGLDeviceEXT device); 100 101 On success, EGL_TRUE is returned. On failure, EGL_FALSE is returned. 102 103 If <device> equals EGL_NO_DEVICE_EXT then an EGL_BAD_DEVICE_EXT error is 104 generated. If <device> is not a valid device then the behavior is undefined. 105 106 <device> must have been created using eglGetDeviceANGLE. If <device> was 107 obtained by other means, such as through eglQueryDisplayAttribEXT, then an 108 EGL_BAD_DEVICE_EXT error is generated. 109 110 If eglReleaseDeviceANGLE is called on a device that is still in use by other 111 EGL objects, then the resulting behavior of those objects is undefined. 112 113Issues 114 115 None. 116 117Revision History 118 119 Version 1, Nov 2, 2015 (Austin Kinross) 120 - Initial Draft 121