• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    ANGLE_platform_angle
4
5Name Strings
6
7    EGL_ANGLE_platform_angle
8
9Contributors
10
11    Scott Graham, Google
12    Shannon Woods, Google
13    Geoff Lang, Google
14
15Contacts
16
17    Scott Graham, Google (scottmg 'at' google 'dot' com)
18
19Status
20
21    Draft
22
23Version
24
25    Version 5, 2017-12-28
26
27Number
28
29    EGL Extension XXX
30
31Extension Type
32
33    EGL client extension
34
35Dependencies
36
37    Requires EGL_EXT_client_extensions to query its existence without
38    a display.
39
40    Requires EGL_EXT_platform_base.
41
42    This extension is written against the wording of version 9 of the
43    EGL_EXT_platform_base specification.
44
45    ANGLE_platform_angle_d3d affects the definition of this extension.
46    ANGLE_platform_angle_opengl affects the definition of this extension.
47
48Overview
49
50    This extension defines how to create EGL resources from native resources
51    using the functions defined by EGL_EXT_platform_base.
52
53New Types
54
55    None
56
57New Procedures and Functions
58
59    None
60
61New Tokens
62
63    Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
64
65        EGL_PLATFORM_ANGLE_ANGLE                           0x3202
66
67    Accepted as an attribute name in the <attrib_list> argument of
68    eglGetPlatformDisplayEXT:
69
70        EGL_PLATFORM_ANGLE_TYPE_ANGLE                      0x3203
71        EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE         0x3204
72        EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE         0x3205
73        EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED            0x3451
74
75    Accepted as values for the EGL_PLATFORM_ANGLE_TYPE_ANGLE attribute:
76
77        EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE              0x3206
78
79    Accepted as values for the EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE attribute:
80
81        EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE      0x320A
82        EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE          0x345E
83
84    Accepted as values for the EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE
85    attribute:
86
87        EGL_PLATFORM_X11_EXT                               0x31D5
88        EGL_PLATFORM_DEVICE_EXT                            0x313F
89        EGL_PLATFORM_SURFACELESS_MESA                      0x31DD
90
91Additions to the EGL Specification
92
93    None.
94
95New Behavior
96
97    To determine if the EGL implementation supports this extension, clients
98    should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
99
100    To obtain an EGLDisplay backed by a ANGLE display, call
101    eglGetPlatformDisplayEXT with <platform> set to EGL_PLATFORM_ANGLE_ANGLE.
102
103    The <native_display> parameter is of type EGLNativeDisplayType. If
104    <native_display> is EGL_DEFAULT_DISPLAY a default display is returned.
105    Multiple calls with the same <native_display> will return the same
106    EGLDisplay handle. If <platform> is set to EGL_PLATFORM_ANGLE_ANGLE and
107    the returned display is in an uninitialized state, its attributes are
108    overwritten by those provided in the <attrib_list>, if any.
109
110    If no <attrib_list> is specified, the value of
111    EGL_PLATFORM_ANGLE_TYPE_ANGLE is implicitly set to
112    EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE.
113
114    If no <attrib_list> is specified, the values of
115    EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE and
116    EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE are implicitly set to
117    EGL_DONT_CARE.
118
119    If no <attrib_list> is specified, the value of
120    EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED is implicitly set to
121    EGL_DONT_CARE.
122
123    If no <attrib_list> is specified to eglGetPlatformDisplayEXT, the value of
124    EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE is implicitly set to
125    EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE. Otherwise, the value of
126    EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE should be:
127      - EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE to request a hardware
128        accelerated device.
129      - EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE to request a no-op driver
130        for testing. If unavailable, the implementation will fall back to
131        EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE.
132
133    If EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE is set to EGL_DONT_CARE and
134    EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE is not set to EGL_DONT_CARE,
135    an EGL_BAD_ATTRIBUTE error is generated and EGL_NO_DISPLAY is returned.
136
137    If no display matching the requested <native_display> or of the type
138    requested by the value of EGL_PLATFORM_ANGLE_TYPE_ANGLE is available,
139    EGL_NO_DISPLAY is returned. No error condition is raised in this case.
140
141    If EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED is specified, it
142    controls enabling back-end validation layers. EGL_TRUE enables
143    validation and EGL_FALSE disables it. If it is set to EGL_DONT_CARE, the
144    default setting depends on the implementation. Any value other than these
145    will result in an error.
146
147    EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE is an additional optional
148    attribute that helps ANGLE to identify what native underlaying platform
149    it should use. If no display matching the requested type of native platform
150    found, EGL_NO_DISPLAY should be returned. if no <attrib_list> is specified
151    to eglGetPlatformDisplayEXT, ANGLE is free to make the choice.
152
153Issues
154
155    1) Should the validation layers default to on, off, or no guarantee?
156
157       Defaulting to off offers some consistency. However, it's customary for
158       some applications like ANGLE to turn on debugging features by default
159       in Debug builds.
160
161       RESOLVED: default to implementation-dependent behaviour.
162
163Revision History
164
165    Version 1, 2014-02-04 (Scott Graham)
166      - Initial draft
167    Version 2, 2014-06-05 (Geoff Lang)
168      - Rename extension from ANGLE_platform_angle_d3d to ANGLE_platform_angle.
169      - Add sub-extensions for specific platforms.
170    Version 3, 2014-10-20 (Geoff Lang)
171      - Add attributes to request specific feature level and context versions.
172      - Moved descriptions of platforms to child extension specs.
173    Version 4, 2017-07-19 (Jamie Madill)
174      - Add a debug layers enabled attribute to control runtime validation.
175    Version 5, 2017-12-28 (Jamie Madill)
176      - Expose device type selection.
177    Version 6, 2020-05-28 (Maksim Sisov)
178      - Add EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE attribute.
179