]> git.proxmox.com Git - rustc.git/blob - vendor/winapi/src/km/d3dkmthk.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / vendor / winapi / src / km / d3dkmthk.rs
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 kernel mode thunk interfaces
7 use shared::basetsd::{UINT32, UINT64};
8 use shared::d3dukmdt::{
9 D3DDDICB_SIGNALFLAGS, D3DDDI_ALLOCATIONLIST, D3DDDI_CREATECONTEXTFLAGS,
10 D3DDDI_MAX_BROADCAST_CONTEXT, D3DDDI_MAX_OBJECT_SIGNALED, D3DDDI_MAX_OBJECT_WAITED_ON,
11 D3DDDI_PATCHLOCATIONLIST, D3DDDI_SYNCHRONIZATIONOBJECTINFO,
12 D3DDDI_SYNCHRONIZATIONOBJECTINFO2, D3DDDI_VIDEO_PRESENT_SOURCE_ID, D3DGPU_VIRTUAL_ADDRESS,
13 D3DKMT_HANDLE,
14 };
15 use shared::minwindef::{BOOL, UCHAR, UINT, ULONG};
16 use shared::ntdef::{HANDLE, LUID, PCWSTR, ULONGLONG, VOID, WCHAR};
17 use shared::windef::HDC;
18 STRUCT!{struct D3DKMT_CREATEDEVICEFLAGS {
19 bitfield: UINT,
20 }}
21 BITFIELD!{D3DKMT_CREATEDEVICEFLAGS bitfield: UINT [
22 LegacyMode set_LegacyMode[0..1],
23 RequestVSync set_RequestVSync[1..2],
24 DisableGpuTimeout set_DisableGpuTimeout[2..3],
25 Reserved set_Reserved[3..32],
26 ]}
27 UNION!{union D3DKMT_CREATEDEVICE_u {
28 [usize; 1],
29 hAdapter hAdapter_mut: D3DKMT_HANDLE,
30 pAdapter pAdapter_mut: *mut VOID,
31 }}
32 STRUCT!{struct D3DKMT_CREATEDEVICE {
33 u: D3DKMT_CREATEDEVICE_u,
34 Flags: D3DKMT_CREATEDEVICEFLAGS,
35 hDevice: D3DKMT_HANDLE,
36 pCommandBuffer: *mut VOID,
37 CommandBufferSize: UINT,
38 pAllocationList: *mut D3DDDI_ALLOCATIONLIST,
39 AllocationListSize: UINT,
40 pPatchLocationList: *mut D3DDDI_PATCHLOCATIONLIST,
41 PatchLocationListSize: UINT,
42 }}
43 STRUCT!{struct D3DKMT_DESTROYDEVICE {
44 hDevice: D3DKMT_HANDLE,
45 }}
46 ENUM!{enum D3DKMT_CLIENTHINT {
47 D3DKMT_CLIENTHINT_UNKNOWN = 0,
48 D3DKMT_CLIENTHINT_OPENGL = 1,
49 D3DKMT_CLIENTHINT_CDD = 2,
50 D3DKMT_CLIENTHINT_DX7 = 7,
51 D3DKMT_CLIENTHINT_DX8 = 8,
52 D3DKMT_CLIENTHINT_DX9 = 9,
53 D3DKMT_CLIENTHINT_DX10 = 10,
54 }}
55 STRUCT!{struct D3DKMT_CREATECONTEXT {
56 hDevice: D3DKMT_HANDLE,
57 NodeOrdinal: UINT,
58 EngineAffinity: UINT,
59 Flags: D3DDDI_CREATECONTEXTFLAGS,
60 pPrivateDriverData: *mut VOID,
61 PrivateDriverDataSize: UINT,
62 ClientHint: D3DKMT_CLIENTHINT,
63 hContext: D3DKMT_HANDLE,
64 pCommandBuffer: *mut VOID,
65 CommandBufferSize: UINT,
66 pAllocationList: *mut D3DDDI_ALLOCATIONLIST,
67 AllocationListSize: UINT,
68 pPatchLocationList: *mut D3DDDI_PATCHLOCATIONLIST,
69 PatchLocationListSize: UINT,
70 CommandBuffer: D3DGPU_VIRTUAL_ADDRESS,
71 }}
72 STRUCT!{struct D3DKMT_DESTROYCONTEXT {
73 hContext: D3DKMT_HANDLE,
74 }}
75 STRUCT!{struct D3DKMT_CREATESYNCHRONIZATIONOBJECT {
76 hDevice: D3DKMT_HANDLE,
77 Info: D3DDDI_SYNCHRONIZATIONOBJECTINFO,
78 hSyncObject: D3DKMT_HANDLE,
79 }}
80 STRUCT!{struct D3DKMT_CREATESYNCHRONIZATIONOBJECT2 {
81 hDevice: D3DKMT_HANDLE,
82 Info: D3DDDI_SYNCHRONIZATIONOBJECTINFO2,
83 hSyncObject: D3DKMT_HANDLE,
84 }}
85 STRUCT!{struct D3DKMT_DESTROYSYNCHRONIZATIONOBJECT {
86 hSyncObject: D3DKMT_HANDLE,
87 }}
88 STRUCT!{struct D3DKMT_OPENSYNCHRONIZATIONOBJECT {
89 hSharedHandle: D3DKMT_HANDLE,
90 hSyncObject: D3DKMT_HANDLE,
91 Reserved: [UINT64; 8],
92 }}
93 STRUCT!{struct D3DKMT_WAITFORSYNCHRONIZATIONOBJECT {
94 hContext: D3DKMT_HANDLE,
95 ObjectCount: UINT,
96 ObjectHandleArray: [D3DKMT_HANDLE; D3DDDI_MAX_OBJECT_WAITED_ON],
97 }}
98 STRUCT!{struct D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2_Fence {
99 FenceValue: UINT64,
100 }}
101 UNION!{union D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2_u {
102 [u64; 8],
103 Fence Fence_mut: D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2_Fence,
104 Reserved Reserved_mut: [UINT64; 8],
105 }}
106 STRUCT!{struct D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2 {
107 hContext: D3DKMT_HANDLE,
108 ObjectCount: UINT,
109 ObjectHandleArray: [D3DKMT_HANDLE; D3DDDI_MAX_OBJECT_WAITED_ON],
110 u: D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2_u,
111 }}
112 STRUCT!{struct D3DKMT_SIGNALSYNCHRONIZATIONOBJECT {
113 hContext: D3DKMT_HANDLE,
114 ObjectCount: UINT,
115 ObjectHandleArray: [D3DKMT_HANDLE; D3DDDI_MAX_OBJECT_SIGNALED],
116 Flags: D3DDDICB_SIGNALFLAGS,
117 }}
118 STRUCT!{struct D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2_Fence {
119 FenceValue: UINT64,
120 }}
121 UNION!{union D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2_u {
122 [u64; 8],
123 Fence Fence_mut: D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2_Fence,
124 CpuEventHandle CpuEventHandle_mut: HANDLE,
125 Reserved Reserved_mut: [UINT64; 8],
126 }}
127 STRUCT!{struct D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2 {
128 hContext: D3DKMT_HANDLE,
129 ObjectCount: UINT,
130 ObjectHandleArray: [D3DKMT_HANDLE; D3DDDI_MAX_OBJECT_SIGNALED],
131 Flags: D3DDDICB_SIGNALFLAGS,
132 BroadcastContextCount: ULONG,
133 BroadcastContext: [D3DKMT_HANDLE; D3DDDI_MAX_BROADCAST_CONTEXT],
134 u: D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2_u,
135 }}
136 //1512
137 STRUCT!{struct D3DKMT_SEGMENTSIZEINFO {
138 DedicatedVideoMemorySize: ULONGLONG,
139 DedicatedSystemMemorySize: ULONGLONG,
140 SharedSystemMemorySize: ULONGLONG,
141 }}
142 //1617
143 STRUCT!{struct D3DKMT_ADAPTERTYPE {
144 Value: UINT,
145 }}
146 BITFIELD!{D3DKMT_ADAPTERTYPE Value: UINT [
147 RenderSupported set_RenderSupported[0..1],
148 DisplaySupported set_DisplaySupported[1..2],
149 SoftwareDevice set_SoftwareDevice[2..3],
150 PostDevice set_PostDevice[3..4],
151 HybridDiscrete set_HybridDiscrete[4..5],
152 HybridIntegrated set_HybridIntegrated[5..6],
153 IndirectDisplayDevice set_IndirectDisplayDevice[6..7],
154 Paravirtualized set_Paravirtualized[7..8],
155 ACGSupported set_ACGSupported[8..9],
156 SupportSetTimingsFromVidPn set_SupportSetTimingsFromVidPn[9..10],
157 Detachable set_Detachable[10..11],
158 Reserved set_Reserved[11..32],
159 ]}
160 //1852
161 STRUCT!{struct D3DKMT_NODE_PERFDATA {
162 NodeOrdinal: UINT32,
163 PhysicalAdapterIndex: UINT32,
164 Frequency: ULONGLONG,
165 MaxFrequency: ULONGLONG,
166 MaxFrequencyOC: ULONGLONG,
167 Voltage: ULONG,
168 VoltageMax: ULONG,
169 VoltageMaxOC: ULONG,
170 MaxTransitionLatency: ULONGLONG,
171 }}
172 STRUCT!{struct D3DKMT_ADAPTER_PERFDATA {
173 PhysicalAdapterIndex: UINT32,
174 MemoryFrequency: ULONGLONG,
175 MaxMemoryFrequency: ULONGLONG,
176 MaxMemoryFrequencyOC: ULONGLONG,
177 MemoryBandwidth: ULONGLONG,
178 PCIEBandwidth: ULONGLONG,
179 FanRPM: ULONG,
180 Power: ULONG,
181 Temperature: ULONG,
182 PowerStateOverride: UCHAR,
183 }}
184 STRUCT!{struct D3DKMT_ADAPTER_PERFDATACAPS {
185 PhysicalAdapterIndex: UINT32,
186 MaxMemoryBandwidth: ULONGLONG,
187 MaxPCIEBandwidth: ULONGLONG,
188 MaxFanRPM: ULONG,
189 TemperatureMax: ULONG,
190 TemperatureWarning: ULONG,
191 }}
192 pub const DXGK_MAX_GPUVERSION_NAME_LENGTH: usize = 32;
193 STRUCT!{struct D3DKMT_GPUVERSION {
194 PhysicalAdapterIndex: UINT32,
195 BiosVersion: [WCHAR; DXGK_MAX_GPUVERSION_NAME_LENGTH],
196 GpuArchitecture: [WCHAR; DXGK_MAX_GPUVERSION_NAME_LENGTH],
197 }}
198 ENUM!{enum KMTQUERYADAPTERINFOTYPE {
199 KMTQAITYPE_UMDRIVERPRIVATE = 0,
200 KMTQAITYPE_UMDRIVERNAME = 1,
201 KMTQAITYPE_UMOPENGLINFO = 2,
202 KMTQAITYPE_GETSEGMENTSIZE = 3,
203 KMTQAITYPE_ADAPTERGUID = 4,
204 KMTQAITYPE_FLIPQUEUEINFO = 5,
205 KMTQAITYPE_ADAPTERADDRESS = 6,
206 KMTQAITYPE_SETWORKINGSETINFO = 7,
207 KMTQAITYPE_ADAPTERREGISTRYINFO = 8,
208 KMTQAITYPE_CURRENTDISPLAYMODE = 9,
209 KMTQAITYPE_MODELIST = 10,
210 KMTQAITYPE_CHECKDRIVERUPDATESTATUS = 11,
211 KMTQAITYPE_VIRTUALADDRESSINFO = 12,
212 KMTQAITYPE_DRIVERVERSION = 13,
213 KMTQAITYPE_ADAPTERTYPE = 15,
214 KMTQAITYPE_OUTPUTDUPLCONTEXTSCOUNT = 16,
215 KMTQAITYPE_WDDM_1_2_CAPS = 17,
216 KMTQAITYPE_UMD_DRIVER_VERSION = 18,
217 KMTQAITYPE_DIRECTFLIP_SUPPORT = 19,
218 KMTQAITYPE_MULTIPLANEOVERLAY_SUPPORT = 20,
219 KMTQAITYPE_DLIST_DRIVER_NAME = 21,
220 KMTQAITYPE_WDDM_1_3_CAPS = 22,
221 KMTQAITYPE_MULTIPLANEOVERLAY_HUD_SUPPORT = 23,
222 KMTQAITYPE_WDDM_2_0_CAPS = 24,
223 KMTQAITYPE_NODEMETADATA = 25,
224 KMTQAITYPE_CPDRIVERNAME = 26,
225 KMTQAITYPE_XBOX = 27,
226 KMTQAITYPE_INDEPENDENTFLIP_SUPPORT = 28,
227 KMTQAITYPE_MIRACASTCOMPANIONDRIVERNAME = 29,
228 KMTQAITYPE_PHYSICALADAPTERCOUNT = 30,
229 KMTQAITYPE_PHYSICALADAPTERDEVICEIDS = 31,
230 KMTQAITYPE_DRIVERCAPS_EXT = 32,
231 KMTQAITYPE_QUERY_MIRACAST_DRIVER_TYPE = 33,
232 KMTQAITYPE_QUERY_GPUMMU_CAPS = 34,
233 KMTQAITYPE_QUERY_MULTIPLANEOVERLAY_DECODE_SUPPORT = 35,
234 KMTQAITYPE_QUERY_HW_PROTECTION_TEARDOWN_COUNT = 36,
235 KMTQAITYPE_QUERY_ISBADDRIVERFORHWPROTECTIONDISABLED = 37,
236 KMTQAITYPE_MULTIPLANEOVERLAY_SECONDARY_SUPPORT = 38,
237 KMTQAITYPE_INDEPENDENTFLIP_SECONDARY_SUPPORT = 39,
238 KMTQAITYPE_PANELFITTER_SUPPORT = 40,
239 KMTQAITYPE_PHYSICALADAPTERPNPKEY = 41,
240 KMTQAITYPE_GETSEGMENTGROUPSIZE = 42,
241 KMTQAITYPE_MPO3DDI_SUPPORT = 43,
242 KMTQAITYPE_HWDRM_SUPPORT = 44,
243 KMTQAITYPE_MPOKERNELCAPS_SUPPORT = 45,
244 KMTQAITYPE_MULTIPLANEOVERLAY_STRETCH_SUPPORT = 46,
245 KMTQAITYPE_GET_DEVICE_VIDPN_OWNERSHIP_INFO = 47,
246 KMTQAITYPE_QUERYREGISTRY = 48,
247 KMTQAITYPE_KMD_DRIVER_VERSION = 49,
248 KMTQAITYPE_BLOCKLIST_KERNEL = 50,
249 KMTQAITYPE_BLOCKLIST_RUNTIME = 51,
250 KMTQAITYPE_ADAPTERGUID_RENDER = 52,
251 KMTQAITYPE_ADAPTERADDRESS_RENDER = 53,
252 KMTQAITYPE_ADAPTERREGISTRYINFO_RENDER = 54,
253 KMTQAITYPE_CHECKDRIVERUPDATESTATUS_RENDER = 55,
254 KMTQAITYPE_DRIVERVERSION_RENDER = 56,
255 KMTQAITYPE_ADAPTERTYPE_RENDER = 57,
256 KMTQAITYPE_WDDM_1_2_CAPS_RENDER = 58,
257 KMTQAITYPE_WDDM_1_3_CAPS_RENDER = 59,
258 KMTQAITYPE_QUERY_ADAPTER_UNIQUE_GUID = 60,
259 KMTQAITYPE_NODEPERFDATA = 61,
260 KMTQAITYPE_ADAPTERPERFDATA = 62,
261 KMTQAITYPE_ADAPTERPERFDATA_CAPS = 63,
262 KMTQUITYPE_GPUVERSION = 64,
263 }}
264 STRUCT!{struct D3DKMT_QUERYADAPTERINFO {
265 hAdapter: D3DKMT_HANDLE,
266 Type: KMTQUERYADAPTERINFOTYPE,
267 pPrivateDriverData: *mut VOID,
268 PrivateDriverDataSize: UINT,
269 }}
270 STRUCT!{struct D3DKMT_OPENADAPTERFROMHDC {
271 hDc: HDC,
272 hAdapter: D3DKMT_HANDLE,
273 AdapterLuid: LUID,
274 VidPnSourceId: D3DDDI_VIDEO_PRESENT_SOURCE_ID,
275 }}
276 STRUCT!{struct D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME {
277 DeviceName: [WCHAR; 32],
278 hAdapter: D3DKMT_HANDLE,
279 AdapterLuid: LUID,
280 VidPnSourceId: D3DDDI_VIDEO_PRESENT_SOURCE_ID,
281 }}
282 STRUCT!{struct D3DKMT_OPENADAPTERFROMDEVICENAME {
283 pDeviceName: PCWSTR,
284 hAdapter: D3DKMT_HANDLE,
285 AdapterLuid: LUID,
286 }}
287 pub const MAX_ENUM_ADAPTERS: usize = 16;
288 STRUCT!{struct D3DKMT_ADAPTERINFO {
289 hAdapter: D3DKMT_HANDLE,
290 AdapterLuid: LUID,
291 NumOfSources: ULONG,
292 bPresentMoveRegionsPreferred: BOOL,
293 }}
294 STRUCT!{struct D3DKMT_ENUMADAPTERS {
295 NumAdapters: ULONG,
296 Adapters: [D3DKMT_ADAPTERINFO; MAX_ENUM_ADAPTERS],
297 }}
298 STRUCT!{struct D3DKMT_ENUMADAPTERS2 {
299 NumAdapters: ULONG,
300 pAdapters: *mut D3DKMT_ADAPTERINFO,
301 }}
302 STRUCT!{struct D3DKMT_OPENADAPTERFROMLUID {
303 AdapterLuid: LUID,
304 hAdapter: D3DKMT_HANDLE,
305 }}
306 STRUCT!{struct D3DKMT_QUERYREMOTEVIDPNSOURCEFROMGDIDISPLAYNAME {
307 DeviceName: [WCHAR; 32],
308 VidPnSourceId: D3DDDI_VIDEO_PRESENT_SOURCE_ID,
309 }}
310 STRUCT!{struct D3DKMT_CLOSEADAPTER {
311 hAdapter: D3DKMT_HANDLE,
312 }}