| Name |
| |
| ANGLE_platform_angle_d3d |
| |
| Name Strings |
| |
| EGL_ANGLE_platform_angle_d3d |
| |
| Contributors |
| |
| Shannon Woods, Google |
| Geoff Lang, Google |
| |
| Contacts |
| |
| Geoff Lang, Google (geofflang 'at' chromium 'dot' org) |
| |
| Status |
| |
| Draft |
| |
| Version |
| |
| Version 3, 2014-11-26 |
| |
| Number |
| |
| EGL Extension XXX |
| |
| Extension Type |
| |
| EGL client extension |
| |
| Dependencies |
| |
| Requires ANGLE_platform_angle. |
| |
| Overview |
| |
| This extension enables selection of D3D display types. |
| |
| New Types |
| |
| None |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted as values for the EGL_PLATFORM_ANGLE_TYPE_ANGLE attribute: |
| |
| EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE 0x3207 |
| EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE 0x3208 |
| |
| Accepted as an attribute name in the <attrib_list> argument of |
| eglGetPlatformDisplayEXT: |
| |
| EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE 0x3209 |
| EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE 0x320F |
| |
| Accepted as values for the EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE attribute: |
| |
| EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE 0x320B |
| EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE 0x320C |
| |
| Additions to the EGL Specification |
| |
| None. |
| |
| New Behavior |
| |
| To request a display that is backed by Direct3D resources, the value of |
| EGL_PLATFORM_ANGLE_TYPE_ANGLE should be: |
| - EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE for a D3D9 display, |
| - EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE for a D3D11 display. |
| |
| To request a specific maximum feature level to be used by the D3D11 |
| display, EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE and |
| EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE can be used. Only feature |
| levels that are capable of supporting all available client APIs will be |
| used unless explicitly requested. |
| EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE and |
| EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE have no effect when requesting |
| a D3D9 display. |
| |
| 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. |
| - EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE to request an |
| optimized software rasterizer. |
| - EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE to request a |
| reference rasterizer. |
| |
| If EGL_PLATFORM_ANGLE_TYPE_ANGLE is set to |
| EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, the display can automatically respond |
| to trim events from the operating system. If the attribute |
| EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE is unspecified, it is |
| implicitly set to EGL_FALSE. Otherwise, the value of |
| EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE should be EGL_TRUE or |
| EGL_FALSE. |
| |
| If EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE is set to |
| EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE and EGL_PLATFORM_ANGLE_TYPE_ANGLE |
| is not set to EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, an EGL_BAD_ATTRIBUTE |
| error is generated and EGL_NO_DISPLAY is returned. |
| |
| If EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE is specified when |
| EGL_PLATFORM_ANGLE_TYPE_ANGLE is not EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE |
| or a value other than EGL_TRUE or EGL_FALSE is used, an EGL_BAD_ATTRIBUTE |
| error is generated and EGL_NO_DISPLAY is returned. |
| |
| Issues |
| |
| 1) Some multithreaded applications can crash if the display automatically |
| responds to trim events while the application is rendering from another |
| thread. |
| |
| RESOLVED: Added an EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE |
| enum to specify if the display should respond to trim events. |
| Applications that do multithreaded rendering should disable automatic |
| trim and handle the trim events on their own. |
| |
| Revision History |
| |
| Version 1, 2014-06-05 (Geoff Lang) |
| - Initial draft |
| Version 2, 2014-10-27 (Geoff Lang) |
| - Separate WARP devices into a new attribute instead of a platform type. |
| - Moved descriptions of platforms and major/minor versions from |
| EGL_ANGLE_platform_angle spec to EGL_ANGLE_platform_angle_d3d. |
| Version 3, 2014-11-26 (Geoff Lang) |
| - Remove the USE_WARP bool and replace it with a DEVICE_TYPE enum. |
| Version 4, 2015-03-11 (Geoff Lang) |
| - Add the ENABLE_AUTOMATIC_TRIM enum. |