1Name 2 3 EXT_device_enumeration 4 5Name Strings 6 7 EGL_EXT_device_enumeration 8 9Contributors 10 11 James Jones 12 Jamie Madill 13 14Contacts 15 16 James Jones, NVIDIA (jajones 'at' nvidia.com) 17 18Status 19 20 Complete. 21 22Version 23 24 Version 1 - March 24th, 2015 25 26Number 27 28 EGL Extension #88 29 30Extension Type 31 32 EGL client extension 33 34Dependencies 35 36 Written against the wording of EGL 1.5. 37 38 Requires EGL 1.5 or an earlier verison of EGL with the 39 EGL_EXT_client_extensions extension. 40 41 Requires the EGL_EXT_device_query extension. 42 43Overview 44 45 Increasingly, EGL and its client APIs are being used in place of 46 "native" rendering APIs to implement the basic graphics 47 functionality of native windowing systems. This creates demand 48 for a method to initialize EGL displays and surfaces directly on 49 top of native GPU or device objects rather than native window 50 system objects. The mechanics of enumerating the underlying 51 native devices and constructing EGL displays and surfaces from 52 them have been solved in various platform and implementation- 53 specific ways. The EGL device family of extensions offers a 54 standardized framework for bootstrapping EGL without the use of 55 any underlying "native" APIs or functionality. 56 57 The original EGL_EXT_device_base extension combined the conceptually 58 separate operations of querying the underlying device used by a 59 given EGLDisplay and enumerating devices from scratch. It was later 60 identified that the former is useful even in EGL implementations 61 that have no need or ability to allow enumerating all the devices 62 available on a system. To accommodate this, the extension was 63 split in two. 64 65New Types 66 67 None 68 69New Functions 70 71 EGLBoolean eglQueryDevicesEXT(EGLint max_devices, 72 EGLDeviceEXT *devices, 73 EGLint *num_devices); 74 75Add the following at the beginning of section "3.2 Devices" 76 77 "EGL devices can be enumerated before EGL is initialized. Use: 78 79 EGLBoolean eglQueryDevicesEXT(EGLint max_devices, 80 EGLDeviceEXT *devices, 81 EGLint *num_devices); 82 83 "to obtain a list of all supported devices in the system. On 84 success, EGL_TRUE is returned, and <num_devices> devices are 85 stored in the array pointed to by <devices>. <num_devices> will 86 be less than or equal to <max_devices>. If <devices> is NULL, 87 then <max_devices> will be ignored, no devices will be returned in 88 <devices>, and <num_devices> will be set to the number of 89 supported devices in the system. All implementations must support 90 at least one device. 91 92 "On failure, EGL_FALSE is returned. An EGL_BAD_PARAMETER error is 93 generated if <max_devices> is less than or equal to zero unless 94 <devices> is NULL, or if <num_devices> is NULL." 95 96Remove the following paragraph from section "3.4 Display Attributes" 97 98 "Because the EGLDeviceEXT is a property of <dpy>, any use of an 99 associated EGLDeviceEXT after <dpy> has been terminated gives 100 undefined results. Querying an EGL_DEVICE_EXT from <dpy> after a 101 call to eglTerminate() (and subsequent re-initialization) may 102 return a different value." 103 104Issues 105 106 None 107 108Revision History: 109 110 #1 (March 24th, 2015) James Jones 111 - Initial branch from EGL_EXT_device_base version #8 112