1Name 2 3 ANGLE_platform_angle_d3d 4 5Name Strings 6 7 EGL_ANGLE_platform_angle_d3d 8 9Contributors 10 11 Shannon Woods, Google 12 Geoff Lang, Google 13 14Contacts 15 16 Geoff Lang, Google (geofflang 'at' chromium 'dot' org) 17 18Status 19 20 Draft 21 22Version 23 24 Version 3, 2014-11-26 25 26Number 27 28 EGL Extension XXX 29 30Extension Type 31 32 EGL client extension 33 34Dependencies 35 36 Requires ANGLE_platform_angle. 37 38Overview 39 40 This extension enables selection of D3D display types. 41 42New Types 43 44 None 45 46New Procedures and Functions 47 48 None 49 50New Tokens 51 52 Accepted as values for the EGL_PLATFORM_ANGLE_TYPE_ANGLE attribute: 53 54 EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE 0x3207 55 EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE 0x3208 56 57 Accepted as an attribute name in the <attrib_list> argument of 58 eglGetPlatformDisplayEXT: 59 60 EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE 0x3209 61 EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE 0x320F 62 63 Accepted as values for the EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE attribute: 64 65 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE 0x320B 66 EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE 0x320C 67 68Additions to the EGL Specification 69 70 None. 71 72New Behavior 73 74 To request a display that is backed by Direct3D resources, the value of 75 EGL_PLATFORM_ANGLE_TYPE_ANGLE should be: 76 - EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE for a D3D9 display, 77 - EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE for a D3D11 display. 78 79 To request a specific maximum feature level to be used by the D3D11 80 display, EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE and 81 EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE can be used. Only feature 82 levels that are capable of supporting all available client APIs will be 83 used unless explicitly requested. 84 EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE and 85 EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE have no effect when requesting 86 a D3D9 display. 87 88 If no <attrib_list> is specified to eglGetPlatformDisplayEXT, the value of 89 EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE is implicitly set to 90 EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE. Otherwise, the value of 91 EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE should be: 92 - EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE to request a hardware 93 accelerated device. 94 - EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE to request a no-op driver 95 for testing. 96 - EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE to request an 97 optimized software rasterizer. 98 - EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_REFERENCE_ANGLE to request a 99 reference rasterizer. 100 101 If EGL_PLATFORM_ANGLE_TYPE_ANGLE is set to 102 EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, the display can automatically respond 103 to trim events from the operating system. If the attribute 104 EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE is unspecified, it is 105 implicitly set to EGL_FALSE. Otherwise, the value of 106 EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE should be EGL_TRUE or 107 EGL_FALSE. 108 109 If EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE is set to 110 EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE and EGL_PLATFORM_ANGLE_TYPE_ANGLE 111 is not set to EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, an EGL_BAD_ATTRIBUTE 112 error is generated and EGL_NO_DISPLAY is returned. 113 114 If EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE is specified when 115 EGL_PLATFORM_ANGLE_TYPE_ANGLE is not EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE 116 or a value other than EGL_TRUE or EGL_FALSE is used, an EGL_BAD_ATTRIBUTE 117 error is generated and EGL_NO_DISPLAY is returned. 118 119Issues 120 121 1) Some multithreaded applications can crash if the display automatically 122 responds to trim events while the application is rendering from another 123 thread. 124 125 RESOLVED: Added an EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE 126 enum to specify if the display should respond to trim events. 127 Applications that do multithreaded rendering should disable automatic 128 trim and handle the trim events on their own. 129 130Revision History 131 132 Version 1, 2014-06-05 (Geoff Lang) 133 - Initial draft 134 Version 2, 2014-10-27 (Geoff Lang) 135 - Separate WARP devices into a new attribute instead of a platform type. 136 - Moved descriptions of platforms and major/minor versions from 137 EGL_ANGLE_platform_angle spec to EGL_ANGLE_platform_angle_d3d. 138 Version 3, 2014-11-26 (Geoff Lang) 139 - Remove the USE_WARP bool and replace it with a DEVICE_TYPE enum. 140 Version 4, 2015-03-11 (Geoff Lang) 141 - Add the ENABLE_AUTOMATIC_TRIM enum. 142