• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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