blob: b6d9d7bf49f747111bda4a06039427b43d9bfee9 [file] [log] [blame]
Name
ANGLE_platform_angle
Name Strings
EGL_ANGLE_platform_angle
Contributors
Scott Graham, Google
Shannon Woods, Google
Geoff Lang, Google
Contacts
Scott Graham, Google (scottmg 'at' google 'dot' com)
Status
Draft
Version
Version 5, 2017-12-28
Number
EGL Extension XXX
Extension Type
EGL client extension
Dependencies
Requires EGL_EXT_client_extensions to query its existence without
a display.
Requires EGL_EXT_platform_base.
This extension is written against the wording of version 9 of the
EGL_EXT_platform_base specification.
ANGLE_platform_angle_d3d affects the definition of this extension.
ANGLE_platform_angle_opengl affects the definition of this extension.
Overview
This extension defines how to create EGL resources from native resources
using the functions defined by EGL_EXT_platform_base.
New Types
None
New Procedures and Functions
None
New Tokens
Accepted as the <platform> argument of eglGetPlatformDisplayEXT:
EGL_PLATFORM_ANGLE_ANGLE 0x3202
Accepted as an attribute name in the <attrib_list> argument of
eglGetPlatformDisplayEXT:
EGL_PLATFORM_ANGLE_TYPE_ANGLE 0x3203
EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE 0x3204
EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE 0x3205
EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED 0x3451
EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE 0x348F
Accepted as values for the EGL_PLATFORM_ANGLE_TYPE_ANGLE attribute:
EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE 0x3206
Accepted as values for the EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE attribute:
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE 0x320A
EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE 0x345E
Accepted as values for the EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE
attribute:
EGL_PLATFORM_X11_EXT 0x31D5
EGL_PLATFORM_DEVICE_EXT 0x313F
EGL_PLATFORM_SURFACELESS_MESA 0x31DD
Additions to the EGL Specification
None.
New Behavior
To determine if the EGL implementation supports this extension, clients
should query the EGL_EXTENSIONS string of EGL_NO_DISPLAY.
To obtain an EGLDisplay backed by a ANGLE display, call
eglGetPlatformDisplayEXT with <platform> set to EGL_PLATFORM_ANGLE_ANGLE.
The <native_display> parameter is of type EGLNativeDisplayType. If
<native_display> is EGL_DEFAULT_DISPLAY a default display is returned.
Multiple calls with the same parameters will return the same EGLDisplay
handle. If <platform> is set to EGL_PLATFORM_ANGLE_ANGLE and the returned
display is in an uninitialized state, its attributes are overwritten by
those provided in the <attrib_list>, if any.
If no <attrib_list> is specified, the value of
EGL_PLATFORM_ANGLE_TYPE_ANGLE is implicitly set to
EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE.
If no <attrib_list> is specified, the values of
EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE and
EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE are implicitly set to
EGL_DONT_CARE.
If no <attrib_list> is specified, the value of
EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED is implicitly set to
EGL_DONT_CARE.
If no <attrib_list> is specified to eglGetPlatformDisplayEXT, the value of
EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE is implicitly set to
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE. Otherwise, the value of
EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE should be:
- EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE to request a hardware
accelerated device.
- EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE to request a no-op driver
for testing. If unavailable, the implementation will fall back to
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE.
If EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE is set to EGL_DONT_CARE and
EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE is not set to EGL_DONT_CARE,
an EGL_BAD_ATTRIBUTE error is generated and EGL_NO_DISPLAY is returned.
If no display matching the requested <native_display> or of the type
requested by the value of EGL_PLATFORM_ANGLE_TYPE_ANGLE is available,
EGL_NO_DISPLAY is returned. No error condition is raised in this case.
If EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED is specified, it
controls enabling back-end validation layers. EGL_TRUE enables
validation and EGL_FALSE disables it. If it is set to EGL_DONT_CARE, the
default setting depends on the implementation. Any value other than these
will result in an error.
EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE is an additional optional
attribute that helps ANGLE to identify what native underlaying platform
it should use. If no display matching the requested type of native platform
found, EGL_NO_DISPLAY should be returned. if no <attrib_list> is specified
to eglGetPlatformDisplayEXT, ANGLE is free to make the choice.
Issues
1) Should the validation layers default to on, off, or no guarantee?
Defaulting to off offers some consistency. However, it's customary for
some applications like ANGLE to turn on debugging features by default
in Debug builds.
RESOLVED: default to implementation-dependent behaviour.
Revision History
Version 1, 2014-02-04 (Scott Graham)
- Initial draft
Version 2, 2014-06-05 (Geoff Lang)
- Rename extension from ANGLE_platform_angle_d3d to ANGLE_platform_angle.
- Add sub-extensions for specific platforms.
Version 3, 2014-10-20 (Geoff Lang)
- Add attributes to request specific feature level and context versions.
- Moved descriptions of platforms to child extension specs.
Version 4, 2017-07-19 (Jamie Madill)
- Add a debug layers enabled attribute to control runtime validation.
Version 5, 2017-12-28 (Jamie Madill)
- Expose device type selection.
Version 6, 2020-05-28 (Maksim Sisov)
- Add EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE attribute.