• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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