]>
Commit | Line | Data |
---|---|---|
60c5eb7d XL |
1 | // Licensed under the Apache License, Version 2.0 |
2 | // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
3 | // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. | |
4 | // All files in the project carrying such notice may not be copied, modified, or distributed | |
5 | // except according to those terms. | |
6 | //! Longhorn Display Driver Model (LDDM) user/kernel mode shared data type definitions. | |
7 | use shared::basetsd::{UINT64, ULONG_PTR}; | |
8 | use shared::guiddef::GUID; | |
9 | use shared::minwindef::{BOOL, UINT, ULONG}; | |
10 | use shared::ntdef::{HANDLE, LUID, ULONGLONG, VOID}; | |
11 | pub const DXGKDDI_INTERFACE_VERSION_VISTA: ULONG = 0x1052; | |
12 | pub const DXGKDDI_INTERFACE_VERSION_VISTA_SP1: ULONG = 0x1053; | |
13 | pub const DXGKDDI_INTERFACE_VERSION_WIN7: ULONG = 0x2005; | |
14 | pub const DXGKDDI_INTERFACE_VERSION_WIN8: ULONG = 0x300E; | |
15 | pub const DXGKDDI_INTERFACE_VERSION_WDDM1_3: ULONG = 0x4002; | |
16 | pub const DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION: ULONG = 0x4003; | |
17 | pub const DXGKDDI_INTERFACE_VERSION_WDDM2_0: ULONG = 0x5023; | |
18 | pub const DXGKDDI_INTERFACE_VERSION_WDDM2_1: ULONG = 0x6003; | |
19 | pub const DXGKDDI_INTERFACE_VERSION_WDDM2_1_5: ULONG = 0x6010; | |
20 | pub const DXGKDDI_INTERFACE_VERSION_WDDM2_2: ULONG = 0x700A; | |
21 | pub const DXGKDDI_INTERFACE_VERSION_WDDM2_3: ULONG = 0x8001; | |
22 | pub const DXGKDDI_INTERFACE_VERSION_WDDM2_4: ULONG = 0x9006; | |
23 | pub const DXGKDDI_INTERFACE_VERSION_WDDM2_5: ULONG = 0xA00B; | |
24 | #[inline] | |
25 | pub fn IS_OFFICIAL_DDI_INTERFACE_VERSION(version: ULONG) -> bool { | |
26 | (version == DXGKDDI_INTERFACE_VERSION_VISTA) || | |
27 | (version == DXGKDDI_INTERFACE_VERSION_VISTA_SP1) || | |
28 | (version == DXGKDDI_INTERFACE_VERSION_WIN7) || | |
29 | (version == DXGKDDI_INTERFACE_VERSION_WIN8) || | |
30 | (version == DXGKDDI_INTERFACE_VERSION_WDDM1_3) || | |
31 | (version == DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION) || | |
32 | (version == DXGKDDI_INTERFACE_VERSION_WDDM2_0) || | |
33 | (version == DXGKDDI_INTERFACE_VERSION_WDDM2_1) || | |
34 | (version == DXGKDDI_INTERFACE_VERSION_WDDM2_1_5) || | |
35 | (version == DXGKDDI_INTERFACE_VERSION_WDDM2_2) || | |
36 | (version == DXGKDDI_INTERFACE_VERSION_WDDM2_3) || | |
37 | (version == DXGKDDI_INTERFACE_VERSION_WDDM2_4) || | |
38 | (version == DXGKDDI_INTERFACE_VERSION_WDDM2_5) | |
39 | } | |
40 | pub const DXGKDDI_INTERFACE_VERSION: ULONG = DXGKDDI_INTERFACE_VERSION_WDDM2_5; | |
41 | pub const D3D_UMD_INTERFACE_VERSION_VISTA: ULONG = 0x000C; | |
42 | pub const D3D_UMD_INTERFACE_VERSION_WIN7: ULONG = 0x2003; | |
43 | pub const D3D_UMD_INTERFACE_VERSION_WIN8_M3: ULONG = 0x3001; | |
44 | pub const D3D_UMD_INTERFACE_VERSION_WIN8_CP: ULONG = 0x3002; | |
45 | pub const D3D_UMD_INTERFACE_VERSION_WIN8_RC: ULONG = 0x3003; | |
46 | pub const D3D_UMD_INTERFACE_VERSION_WIN8: ULONG = 0x3004; | |
47 | pub const D3D_UMD_INTERFACE_VERSION_WDDM1_3: ULONG = 0x4002; | |
48 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_0_M1: ULONG = 0x5000; | |
49 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_0_M1_3: ULONG = 0x5001; | |
50 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_0_M2_2: ULONG = 0x5002; | |
51 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_0: ULONG = 0x5002; | |
52 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_1_1: ULONG = 0x6000; | |
53 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_1_2: ULONG = 0x6001; | |
54 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_1_3: ULONG = 0x6002; | |
55 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_1_4: ULONG = 0x6003; | |
56 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_1: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_1_4; | |
57 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_2_1: ULONG = 0x7000; | |
58 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_2_2: ULONG = 0x7001; | |
59 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_2: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_2_2; | |
60 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_3_1: ULONG = 0x8000; | |
61 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_3_2: ULONG = 0x8001; | |
62 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_3: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_3_2; | |
63 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_4_1: ULONG = 0x9000; | |
64 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_4_2: ULONG = 0x9001; | |
65 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_4: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_4_2; | |
66 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_5_1: ULONG = 0xA000; | |
67 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_5_2: ULONG = 0xA001; | |
68 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_5_3: ULONG = 0xA002; | |
69 | pub const D3D_UMD_INTERFACE_VERSION_WDDM2_5: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_5_3; | |
70 | pub const D3D_UMD_INTERFACE_VERSION: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_5; | |
71 | pub type D3DGPU_VIRTUAL_ADDRESS = ULONGLONG; | |
72 | pub type D3DGPU_SIZE_T = ULONGLONG; | |
73 | pub const D3DGPU_UNIQUE_DRIVER_PROTECTION: ULONGLONG = 0x8000000000000000; | |
74 | pub const DXGK_MAX_PAGE_TABLE_LEVEL_COUNT: UINT = 6; | |
75 | pub const DXGK_MIN_PAGE_TABLE_LEVEL_COUNT: UINT = 2; | |
76 | STRUCT!{struct GPUP_DRIVER_ESCAPE_INPUT { | |
77 | vfLUID: LUID, | |
78 | }} | |
79 | pub type PGPUP_DRIVER_ESCAPE_INPUT = *mut GPUP_DRIVER_ESCAPE_INPUT; | |
80 | ENUM!{enum DXGKVGPU_ESCAPE_TYPE { | |
81 | DXGKVGPU_ESCAPE_TYPE_READ_PCI_CONFIG = 0, | |
82 | DXGKVGPU_ESCAPE_TYPE_WRITE_PCI_CONFIG = 1, | |
83 | DXGKVGPU_ESCAPE_TYPE_INITIALIZE = 2, | |
84 | DXGKVGPU_ESCAPE_TYPE_RELEASE = 3, | |
85 | DXGKVGPU_ESCAPE_TYPE_GET_VGPU_TYPE = 4, | |
86 | DXGKVGPU_ESCAPE_TYPE_POWERTRANSITIONCOMPLETE = 5, | |
87 | }} | |
88 | STRUCT!{struct DXGKVGPU_ESCAPE_HEAD { | |
89 | Luid: GPUP_DRIVER_ESCAPE_INPUT, | |
90 | Type: DXGKVGPU_ESCAPE_TYPE, | |
91 | }} | |
92 | STRUCT!{struct DXGKVGPU_ESCAPE_READ_PCI_CONFIG { | |
93 | Header: DXGKVGPU_ESCAPE_HEAD, | |
94 | Offset: UINT, | |
95 | Size: UINT, | |
96 | }} | |
97 | STRUCT!{struct DXGKVGPU_ESCAPE_WRITE_PCI_CONFIG { | |
98 | Header: DXGKVGPU_ESCAPE_HEAD, | |
99 | Offset: UINT, | |
100 | Size: UINT, | |
101 | }} | |
102 | STRUCT!{struct DXGKVGPU_ESCAPE_READ_VGPU_TYPE { | |
103 | Header: DXGKVGPU_ESCAPE_HEAD, | |
104 | }} | |
105 | STRUCT!{struct DXGKVGPU_ESCAPE_POWERTRANSITIONCOMPLETE { | |
106 | Header: DXGKVGPU_ESCAPE_HEAD, | |
107 | PowerState: UINT, | |
108 | }} | |
109 | STRUCT!{struct DXGKVGPU_ESCAPE_INITIALIZE { | |
110 | Header: DXGKVGPU_ESCAPE_HEAD, | |
111 | VmGuid: GUID, | |
112 | }} | |
113 | STRUCT!{struct DXGKVGPU_ESCAPE_RELEASE { | |
114 | Header: DXGKVGPU_ESCAPE_HEAD, | |
115 | }} | |
116 | ENUM!{enum DXGK_PTE_PAGE_SIZE { | |
117 | DXGK_PTE_PAGE_TABLE_PAGE_4KB = 0, | |
118 | DXGK_PTE_PAGE_TABLE_PAGE_64KB = 1, | |
119 | }} | |
120 | UNION!{union DXGK_PTE_u { | |
121 | [u64; 1], | |
122 | PageAddress PageAddress_mut: ULONGLONG, | |
123 | PageTableAddress PageTableAddress_mut: ULONGLONG, | |
124 | }} | |
125 | STRUCT!{struct DXGK_PTE { | |
126 | Flags: ULONGLONG, | |
127 | u: DXGK_PTE_u, | |
128 | }} | |
129 | BITFIELD!{DXGK_PTE Flags: ULONGLONG [ | |
130 | Valid set_Valid[0..1], | |
131 | Zero set_Zero[1..2], | |
132 | CacheCoherent set_CacheCoherent[2..3], | |
133 | ReadOnly set_ReadOnly[3..4], | |
134 | NoExecute set_NoExecute[4..5], | |
135 | Segment set_Segment[5..10], | |
136 | LargePage set_LargePage[10..11], | |
137 | PhysicalAdapterIndex set_PhysicalAdapterIndex[11..17], | |
138 | PageTablePageSize set_PageTablePageSize[17..19], | |
139 | SystemReserved0 set_SystemReserved0[19..20], | |
140 | Reserved set_Reserved[20..64], | |
141 | ]} | |
142 | pub const D3DGPU_NULL: D3DGPU_VIRTUAL_ADDRESS = 0; | |
143 | pub const D3DDDI_MAX_WRITTEN_PRIMARIES: usize = 16; | |
144 | pub const D3DDDI_MAX_MPO_PRESENT_DIRTY_RECTS: usize = 0xFFF; | |
145 | STRUCT!{struct D3DGPU_PHYSICAL_ADDRESS { | |
146 | SegmentId: UINT, | |
147 | SegmentOffset: UINT64, | |
148 | }} | |
149 | pub type D3DDDI_VIDEO_PRESENT_SOURCE_ID = UINT; | |
150 | pub type D3DDDI_VIDEO_PRESENT_TARGET_ID = UINT; | |
151 | pub type D3DKMT_HANDLE = UINT; | |
152 | STRUCT!{struct D3DDDI_RATIONAL { | |
153 | Numerator: UINT, | |
154 | Denominator: UINT, | |
155 | }} | |
156 | STRUCT!{struct D3DDDI_ALLOCATIONINFO { | |
157 | hAllocation: D3DKMT_HANDLE, | |
158 | pSystemMem: *const VOID, | |
159 | pPrivateDriverData: *mut VOID, | |
160 | PrivateDriverDataSize: UINT, | |
161 | VidPnSourceId: D3DDDI_VIDEO_PRESENT_SOURCE_ID, | |
162 | Flags: UINT, | |
163 | }} | |
164 | BITFIELD!{D3DDDI_ALLOCATIONINFO Flags: UINT [ | |
165 | Primary set_Primary[0..1], | |
166 | Stereo set_Stereo[1..2], | |
167 | Reserved set_Reserved[2..32], | |
168 | ]} | |
169 | UNION!{union D3DDDI_ALLOCATIONINFO2_u1 { | |
170 | [usize; 1], | |
171 | hSection hSection_mut: HANDLE, | |
172 | pSystemMem pSystemMem_mut: *const VOID, | |
173 | }} | |
174 | UNION!{union D3DDDI_ALLOCATIONINFO2_u2 { | |
175 | [usize; 1], | |
176 | Priority Priority_mut: UINT, | |
177 | Unused Unused_mut: ULONG_PTR, | |
178 | }} | |
179 | STRUCT!{struct D3DDDI_ALLOCATIONINFO2 { | |
180 | hAllocation: D3DKMT_HANDLE, | |
181 | u1: D3DDDI_ALLOCATIONINFO2_u1, | |
182 | pPrivateDriverData: *mut VOID, | |
183 | PrivateDriverDataSize: UINT, | |
184 | VidPnSourceId: D3DDDI_VIDEO_PRESENT_SOURCE_ID, | |
185 | Flags: UINT, | |
186 | GpuVirtualAddress: D3DGPU_VIRTUAL_ADDRESS, | |
187 | u2: D3DDDI_ALLOCATIONINFO2_u2, | |
188 | Reserved: [ULONG_PTR; 5], | |
189 | }} | |
190 | BITFIELD!{D3DDDI_ALLOCATIONINFO2 Flags: UINT [ | |
191 | Primary set_Primary[0..1], | |
192 | Stereo set_Stereo[1..2], | |
193 | OverridePriority set_OverridePriority[2..3], | |
194 | Reserved set_Reserved[3..32], | |
195 | ]} | |
196 | STRUCT!{struct D3DDDI_OPENALLOCATIONINFO { | |
197 | hAllocation: D3DKMT_HANDLE, | |
198 | pPrivateDriverData: *const VOID, | |
199 | PrivateDriverDataSize: UINT, | |
200 | }} | |
201 | STRUCT!{struct D3DDDI_OPENALLOCATIONINFO2 { | |
202 | hAllocation: D3DKMT_HANDLE, | |
203 | pPrivateDriverData: *const VOID, | |
204 | PrivateDriverDataSize: UINT, | |
205 | GpuVirtualAddress: D3DGPU_VIRTUAL_ADDRESS, | |
206 | Reserved: [ULONG_PTR; 6], | |
207 | }} | |
208 | ENUM!{enum D3DDDI_OFFER_PRIORITY { | |
209 | D3DDDI_OFFER_PRIORITY_NONE = 0, | |
210 | D3DDDI_OFFER_PRIORITY_LOW = 1, | |
211 | D3DDDI_OFFER_PRIORITY_NORMAL, | |
212 | D3DDDI_OFFER_PRIORITY_HIGH, | |
213 | D3DDDI_OFFER_PRIORITY_AUTO, | |
214 | }} | |
215 | STRUCT!{struct D3DDDI_ALLOCATIONLIST { | |
216 | hAllocation: D3DKMT_HANDLE, | |
217 | Value: UINT, | |
218 | }} | |
219 | BITFIELD!{D3DDDI_ALLOCATIONLIST Value: UINT [ | |
220 | WriteOperation set_WriteOperation[0..1], | |
221 | DoNotRetireInstance set_DoNotRetireInstance[1..2], | |
222 | OfferPriority set_OfferPriority[2..5], | |
223 | Reserved set_Reserved[5..32], | |
224 | ]} | |
225 | STRUCT!{struct D3DDDI_PATCHLOCATIONLIST { | |
226 | AllocationIndex: UINT, | |
227 | Value: UINT, | |
228 | DriverId: UINT, | |
229 | AllocationOffset: UINT, | |
230 | PatchOffset: UINT, | |
231 | SplitOffset: UINT, | |
232 | }} | |
233 | BITFIELD!{D3DDDI_PATCHLOCATIONLIST Value: UINT [ | |
234 | SlotId set_SlotId[0..24], | |
235 | Reserved set_Reserved[24..32], | |
236 | ]} | |
237 | STRUCT!{struct D3DDDICB_LOCKFLAGS { | |
238 | Value: UINT, | |
239 | }} | |
240 | BITFIELD!{D3DDDICB_LOCKFLAGS Value: UINT [ | |
241 | ReadOnly set_ReadOnly[0..1], | |
242 | WriteOnly set_WriteOnly[1..2], | |
243 | DonotWait set_DonotWait[2..3], | |
244 | IgnoreSync set_IgnoreSync[3..4], | |
245 | LockEntire set_LockEntire[4..5], | |
246 | DonotEvict set_DonotEvict[5..6], | |
247 | AcquireAperture set_AcquireAperture[6..7], | |
248 | Discard set_Discard[7..8], | |
249 | NoExistingReference set_NoExistingReference[8..9], | |
250 | UseAlternateVA set_UseAlternateVA[9..10], | |
251 | IgnoreReadSync set_IgnoreReadSync[10..11], | |
252 | Reserved set_Reserved[11..32], | |
253 | ]} | |
254 | STRUCT!{struct D3DDDICB_LOCK2FLAGS { | |
255 | Value: UINT, | |
256 | }} | |
60c5eb7d XL |
257 | STRUCT!{struct D3DDDICB_DESTROYALLOCATION2FLAGS { |
258 | Value: UINT, | |
259 | }} | |
260 | BITFIELD!{D3DDDICB_DESTROYALLOCATION2FLAGS Value: UINT [ | |
261 | AssumeNotInUse set_AssumeNotInUse[0..1], | |
262 | SynchronousDestroy set_SynchronousDestroy[1..2], | |
263 | Reserved set_Reserved[2..31], | |
264 | SystemUseOnly set_SystemUseOnly[31..32], | |
265 | ]} | |
266 | STRUCT!{struct D3DDDI_ESCAPEFLAGS { | |
267 | Value: UINT, | |
268 | }} | |
269 | BITFIELD!{D3DDDI_ESCAPEFLAGS Value: UINT [ | |
270 | HardwareAccess set_HardwareAccess[0..1], | |
271 | DeviceStatusQuery set_DeviceStatusQuery[1..2], | |
272 | ChangeFrameLatency set_ChangeFrameLatency[2..3], | |
273 | NoAdapterSynchronization set_NoAdapterSynchronization[3..4], | |
274 | Reserved set_Reserved[4..5], | |
275 | VirtualMachineData set_VirtualMachineData[5..6], | |
276 | DriverKnownEscape set_DriverKnownEscape[6..7], | |
277 | DriverCommonEscape set_DriverCommonEscape[7..8], | |
278 | Reserved2 set_Reserved2[8..24], | |
279 | ]} | |
280 | ENUM!{enum D3DDDI_DRIVERESCAPETYPE { | |
281 | D3DDDI_DRIVERESCAPETYPE_TRANSLATEALLOCATIONHANDLE = 0, | |
282 | D3DDDI_DRIVERESCAPETYPE_TRANSLATERESOURCEHANDLE = 1, | |
283 | D3DDDI_DRIVERESCAPETYPE_MAX, | |
284 | }} | |
285 | STRUCT!{struct D3DDDI_DRIVERESCAPE_TRANSLATEALLOCATIONEHANDLE { | |
286 | EscapeType: D3DDDI_DRIVERESCAPETYPE, | |
287 | hAllocation: D3DKMT_HANDLE, | |
288 | }} | |
289 | STRUCT!{struct D3DDDI_DRIVERESCAPE_TRANSLATERESOURCEHANDLE { | |
290 | EscapeType: D3DDDI_DRIVERESCAPETYPE, | |
291 | hResource: D3DKMT_HANDLE, | |
292 | }} | |
293 | STRUCT!{struct D3DDDI_CREATECONTEXTFLAGS { | |
294 | Value: UINT, | |
295 | }} | |
296 | BITFIELD!{D3DDDI_CREATECONTEXTFLAGS Value: UINT [ | |
297 | NullRendering set_NullRendering[0..1], | |
298 | InitialData set_InitialData[1..2], | |
299 | DisableGpuTimeout set_DisableGpuTimeout[2..3], | |
300 | SynchronizationOnly set_SynchronizationOnly[3..4], | |
301 | HwQueueSupported set_HwQueueSupported[4..5], | |
302 | Reserved set_Reserved[5..32], | |
303 | ]} | |
304 | //1188 | |
305 | STRUCT!{struct D3DDDICB_SIGNALFLAGS { | |
306 | Value: UINT, | |
307 | }} | |
308 | BITFIELD!{D3DDDICB_SIGNALFLAGS Value: UINT [ | |
309 | SignalAtSubmission set_SignalAtSubmission[0..1], | |
310 | EnqueueCpuEvent set_EnqueueCpuEvent[1..2], | |
311 | AllowFenceRewind set_AllowFenceRewind[2..3], | |
312 | Reserved set_Reserved[3..31], | |
313 | DXGK_SIGNAL_FLAG_INTERNAL0 set_DXGK_SIGNAL_FLAG_INTERNAL0[31..32], | |
314 | ]} | |
315 | pub const D3DDDI_MAX_OBJECT_WAITED_ON: usize = 32; | |
316 | pub const D3DDDI_MAX_OBJECT_SIGNALED: usize = 32; | |
317 | ENUM!{enum D3DDDI_SYNCHRONIZATIONOBJECT_TYPE { | |
318 | D3DDDI_SYNCHRONIZATION_MUTEX = 1, | |
319 | D3DDDI_SEMAPHORE = 2, | |
320 | D3DDDI_FENCE = 3, | |
321 | D3DDDI_CPU_NOTIFICATION = 4, | |
322 | D3DDDI_MONITORED_FENCE = 5, | |
323 | D3DDDI_PERIODIC_MONITORED_FENCE = 6, | |
324 | D3DDDI_SYNCHRONIZATION_TYPE_LIMIT, | |
325 | }} | |
326 | //1553 | |
327 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_SynchronizationMutex { | |
328 | InitialState: BOOL, | |
329 | }} | |
330 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_Semaphore { | |
331 | MaxCount: UINT, | |
332 | InitialCount: UINT, | |
333 | }} | |
334 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_Reserved { | |
335 | Reserved: [UINT; 16], | |
336 | }} | |
337 | UNION!{union D3DDDI_SYNCHRONIZATIONOBJECTINFO_u { | |
338 | [u32; 16], | |
339 | SynchronizationMutex SynchronizationMutex_mut: | |
340 | D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_SynchronizationMutex, | |
341 | Semaphore Semaphore_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_Semaphore, | |
342 | Reserved Reserved_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_Reserved, | |
343 | }} | |
344 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO { | |
345 | Type: D3DDDI_SYNCHRONIZATIONOBJECT_TYPE, | |
346 | u: D3DDDI_SYNCHRONIZATIONOBJECTINFO_u, | |
347 | }} | |
348 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS { | |
349 | Value: UINT, | |
350 | }} | |
351 | BITFIELD!{D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Value: UINT [ | |
352 | Shared set_Shared[0..1], | |
353 | NtSecuritySharing set_NtSecuritySharing[1..2], | |
354 | CrossAdapter set_CrossAdapter[2..3], | |
355 | TopOfPipeline set_TopOfPipeline[3..4], | |
356 | NoSignal set_NoSignal[4..5], | |
357 | NoWait set_NoWait[5..6], | |
358 | NoSignalMaxValueOnTdr set_NoSignalMaxValueOnTdr[6..7], | |
359 | NoGPUAccess set_NoGPUAccess[7..8], | |
360 | Reserved set_Reserved[8..31], | |
361 | D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0 | |
362 | set_D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0[31..32], | |
363 | ]} | |
364 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_SynchronizationMutex { | |
365 | InitialState: BOOL, | |
366 | }} | |
367 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Semaphore { | |
368 | MaxCount: UINT, | |
369 | InitialCount: UINT, | |
370 | }} | |
371 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Fence { | |
372 | FenceValue: UINT64, | |
373 | }} | |
374 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_CPUNotification { | |
375 | Event: HANDLE, | |
376 | }} | |
377 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_MonitoredFence { | |
378 | InitialFenceValue: UINT64, | |
379 | FenceValueCPUVirtualAddress: *mut VOID, | |
380 | FenceValueGPUVirtualAddress: D3DGPU_VIRTUAL_ADDRESS, | |
381 | EngineAffinity: UINT, | |
382 | }} | |
383 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_PeriodicMonitoredFence { | |
384 | hAdapter: D3DKMT_HANDLE, | |
385 | VidPnTargetId: D3DDDI_VIDEO_PRESENT_TARGET_ID, | |
386 | Time: UINT64, | |
387 | FenceValueCPUVirtualAddress: *mut VOID, | |
388 | FenceValueGPUVirtualAddress: D3DGPU_VIRTUAL_ADDRESS, | |
389 | EngineAffinity: UINT, | |
390 | }} | |
391 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Reserved { | |
392 | Reserved: [UINT64; 8], | |
393 | }} | |
394 | UNION!{union D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u { | |
395 | [u64; 8], | |
396 | SynchronizationMutex SynchronizationMutex_mut: | |
397 | D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_SynchronizationMutex, | |
398 | Semaphore Semaphore_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Semaphore, | |
399 | Fence Fence_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Fence, | |
400 | CPUNotification CPUNotification_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_CPUNotification, | |
401 | MonitoredFence MonitoredFence_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_MonitoredFence, | |
402 | PeriodicMonitoredFence PeriodicMonitoredFence_mut: | |
403 | D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_PeriodicMonitoredFence, | |
404 | Reserved Reserved_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Reserved, | |
405 | }} | |
406 | STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2 { | |
407 | Type: D3DDDI_SYNCHRONIZATIONOBJECT_TYPE, | |
408 | Flags: D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS, | |
409 | u: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u, | |
410 | SharedHandle: D3DKMT_HANDLE, | |
411 | }} | |
412 | //1778 | |
413 | pub const D3DDDI_MAX_BROADCAST_CONTEXT: usize = 64; |