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