aboutsummaryrefslogtreecommitdiff
path: root/vendor/winapi/src/shared/d3dukmdt.rs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2024-01-08 00:21:28 +0300
committerValentin Popov <valentin@popov.link>2024-01-08 00:21:28 +0300
commit1b6a04ca5504955c571d1c97504fb45ea0befee4 (patch)
tree7579f518b23313e8a9748a88ab6173d5e030b227 /vendor/winapi/src/shared/d3dukmdt.rs
parent5ecd8cf2cba827454317368b68571df0d13d7842 (diff)
downloadfparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.tar.xz
fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.zip
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
Diffstat (limited to 'vendor/winapi/src/shared/d3dukmdt.rs')
-rw-r--r--vendor/winapi/src/shared/d3dukmdt.rs413
1 files changed, 413 insertions, 0 deletions
diff --git a/vendor/winapi/src/shared/d3dukmdt.rs b/vendor/winapi/src/shared/d3dukmdt.rs
new file mode 100644
index 0000000..24bfc50
--- /dev/null
+++ b/vendor/winapi/src/shared/d3dukmdt.rs
@@ -0,0 +1,413 @@
+// Licensed under the Apache License, Version 2.0
+// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// All files in the project carrying such notice may not be copied, modified, or distributed
+// except according to those terms.
+//! Longhorn Display Driver Model (LDDM) user/kernel mode shared data type definitions.
+use shared::basetsd::{UINT64, ULONG_PTR};
+use shared::guiddef::GUID;
+use shared::minwindef::{BOOL, UINT, ULONG};
+use shared::ntdef::{HANDLE, LUID, ULONGLONG, VOID};
+pub const DXGKDDI_INTERFACE_VERSION_VISTA: ULONG = 0x1052;
+pub const DXGKDDI_INTERFACE_VERSION_VISTA_SP1: ULONG = 0x1053;
+pub const DXGKDDI_INTERFACE_VERSION_WIN7: ULONG = 0x2005;
+pub const DXGKDDI_INTERFACE_VERSION_WIN8: ULONG = 0x300E;
+pub const DXGKDDI_INTERFACE_VERSION_WDDM1_3: ULONG = 0x4002;
+pub const DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION: ULONG = 0x4003;
+pub const DXGKDDI_INTERFACE_VERSION_WDDM2_0: ULONG = 0x5023;
+pub const DXGKDDI_INTERFACE_VERSION_WDDM2_1: ULONG = 0x6003;
+pub const DXGKDDI_INTERFACE_VERSION_WDDM2_1_5: ULONG = 0x6010;
+pub const DXGKDDI_INTERFACE_VERSION_WDDM2_2: ULONG = 0x700A;
+pub const DXGKDDI_INTERFACE_VERSION_WDDM2_3: ULONG = 0x8001;
+pub const DXGKDDI_INTERFACE_VERSION_WDDM2_4: ULONG = 0x9006;
+pub const DXGKDDI_INTERFACE_VERSION_WDDM2_5: ULONG = 0xA00B;
+#[inline]
+pub fn IS_OFFICIAL_DDI_INTERFACE_VERSION(version: ULONG) -> bool {
+ (version == DXGKDDI_INTERFACE_VERSION_VISTA) ||
+ (version == DXGKDDI_INTERFACE_VERSION_VISTA_SP1) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WIN7) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WIN8) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WDDM1_3) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WDDM2_0) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WDDM2_1) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WDDM2_1_5) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WDDM2_2) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WDDM2_3) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WDDM2_4) ||
+ (version == DXGKDDI_INTERFACE_VERSION_WDDM2_5)
+}
+pub const DXGKDDI_INTERFACE_VERSION: ULONG = DXGKDDI_INTERFACE_VERSION_WDDM2_5;
+pub const D3D_UMD_INTERFACE_VERSION_VISTA: ULONG = 0x000C;
+pub const D3D_UMD_INTERFACE_VERSION_WIN7: ULONG = 0x2003;
+pub const D3D_UMD_INTERFACE_VERSION_WIN8_M3: ULONG = 0x3001;
+pub const D3D_UMD_INTERFACE_VERSION_WIN8_CP: ULONG = 0x3002;
+pub const D3D_UMD_INTERFACE_VERSION_WIN8_RC: ULONG = 0x3003;
+pub const D3D_UMD_INTERFACE_VERSION_WIN8: ULONG = 0x3004;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM1_3: ULONG = 0x4002;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_0_M1: ULONG = 0x5000;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_0_M1_3: ULONG = 0x5001;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_0_M2_2: ULONG = 0x5002;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_0: ULONG = 0x5002;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_1_1: ULONG = 0x6000;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_1_2: ULONG = 0x6001;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_1_3: ULONG = 0x6002;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_1_4: ULONG = 0x6003;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_1: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_1_4;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_2_1: ULONG = 0x7000;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_2_2: ULONG = 0x7001;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_2: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_2_2;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_3_1: ULONG = 0x8000;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_3_2: ULONG = 0x8001;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_3: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_3_2;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_4_1: ULONG = 0x9000;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_4_2: ULONG = 0x9001;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_4: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_4_2;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_5_1: ULONG = 0xA000;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_5_2: ULONG = 0xA001;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_5_3: ULONG = 0xA002;
+pub const D3D_UMD_INTERFACE_VERSION_WDDM2_5: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_5_3;
+pub const D3D_UMD_INTERFACE_VERSION: ULONG = D3D_UMD_INTERFACE_VERSION_WDDM2_5;
+pub type D3DGPU_VIRTUAL_ADDRESS = ULONGLONG;
+pub type D3DGPU_SIZE_T = ULONGLONG;
+pub const D3DGPU_UNIQUE_DRIVER_PROTECTION: ULONGLONG = 0x8000000000000000;
+pub const DXGK_MAX_PAGE_TABLE_LEVEL_COUNT: UINT = 6;
+pub const DXGK_MIN_PAGE_TABLE_LEVEL_COUNT: UINT = 2;
+STRUCT!{struct GPUP_DRIVER_ESCAPE_INPUT {
+ vfLUID: LUID,
+}}
+pub type PGPUP_DRIVER_ESCAPE_INPUT = *mut GPUP_DRIVER_ESCAPE_INPUT;
+ENUM!{enum DXGKVGPU_ESCAPE_TYPE {
+ DXGKVGPU_ESCAPE_TYPE_READ_PCI_CONFIG = 0,
+ DXGKVGPU_ESCAPE_TYPE_WRITE_PCI_CONFIG = 1,
+ DXGKVGPU_ESCAPE_TYPE_INITIALIZE = 2,
+ DXGKVGPU_ESCAPE_TYPE_RELEASE = 3,
+ DXGKVGPU_ESCAPE_TYPE_GET_VGPU_TYPE = 4,
+ DXGKVGPU_ESCAPE_TYPE_POWERTRANSITIONCOMPLETE = 5,
+}}
+STRUCT!{struct DXGKVGPU_ESCAPE_HEAD {
+ Luid: GPUP_DRIVER_ESCAPE_INPUT,
+ Type: DXGKVGPU_ESCAPE_TYPE,
+}}
+STRUCT!{struct DXGKVGPU_ESCAPE_READ_PCI_CONFIG {
+ Header: DXGKVGPU_ESCAPE_HEAD,
+ Offset: UINT,
+ Size: UINT,
+}}
+STRUCT!{struct DXGKVGPU_ESCAPE_WRITE_PCI_CONFIG {
+ Header: DXGKVGPU_ESCAPE_HEAD,
+ Offset: UINT,
+ Size: UINT,
+}}
+STRUCT!{struct DXGKVGPU_ESCAPE_READ_VGPU_TYPE {
+ Header: DXGKVGPU_ESCAPE_HEAD,
+}}
+STRUCT!{struct DXGKVGPU_ESCAPE_POWERTRANSITIONCOMPLETE {
+ Header: DXGKVGPU_ESCAPE_HEAD,
+ PowerState: UINT,
+}}
+STRUCT!{struct DXGKVGPU_ESCAPE_INITIALIZE {
+ Header: DXGKVGPU_ESCAPE_HEAD,
+ VmGuid: GUID,
+}}
+STRUCT!{struct DXGKVGPU_ESCAPE_RELEASE {
+ Header: DXGKVGPU_ESCAPE_HEAD,
+}}
+ENUM!{enum DXGK_PTE_PAGE_SIZE {
+ DXGK_PTE_PAGE_TABLE_PAGE_4KB = 0,
+ DXGK_PTE_PAGE_TABLE_PAGE_64KB = 1,
+}}
+UNION!{union DXGK_PTE_u {
+ [u64; 1],
+ PageAddress PageAddress_mut: ULONGLONG,
+ PageTableAddress PageTableAddress_mut: ULONGLONG,
+}}
+STRUCT!{struct DXGK_PTE {
+ Flags: ULONGLONG,
+ u: DXGK_PTE_u,
+}}
+BITFIELD!{DXGK_PTE Flags: ULONGLONG [
+ Valid set_Valid[0..1],
+ Zero set_Zero[1..2],
+ CacheCoherent set_CacheCoherent[2..3],
+ ReadOnly set_ReadOnly[3..4],
+ NoExecute set_NoExecute[4..5],
+ Segment set_Segment[5..10],
+ LargePage set_LargePage[10..11],
+ PhysicalAdapterIndex set_PhysicalAdapterIndex[11..17],
+ PageTablePageSize set_PageTablePageSize[17..19],
+ SystemReserved0 set_SystemReserved0[19..20],
+ Reserved set_Reserved[20..64],
+]}
+pub const D3DGPU_NULL: D3DGPU_VIRTUAL_ADDRESS = 0;
+pub const D3DDDI_MAX_WRITTEN_PRIMARIES: usize = 16;
+pub const D3DDDI_MAX_MPO_PRESENT_DIRTY_RECTS: usize = 0xFFF;
+STRUCT!{struct D3DGPU_PHYSICAL_ADDRESS {
+ SegmentId: UINT,
+ SegmentOffset: UINT64,
+}}
+pub type D3DDDI_VIDEO_PRESENT_SOURCE_ID = UINT;
+pub type D3DDDI_VIDEO_PRESENT_TARGET_ID = UINT;
+pub type D3DKMT_HANDLE = UINT;
+STRUCT!{struct D3DDDI_RATIONAL {
+ Numerator: UINT,
+ Denominator: UINT,
+}}
+STRUCT!{struct D3DDDI_ALLOCATIONINFO {
+ hAllocation: D3DKMT_HANDLE,
+ pSystemMem: *const VOID,
+ pPrivateDriverData: *mut VOID,
+ PrivateDriverDataSize: UINT,
+ VidPnSourceId: D3DDDI_VIDEO_PRESENT_SOURCE_ID,
+ Flags: UINT,
+}}
+BITFIELD!{D3DDDI_ALLOCATIONINFO Flags: UINT [
+ Primary set_Primary[0..1],
+ Stereo set_Stereo[1..2],
+ Reserved set_Reserved[2..32],
+]}
+UNION!{union D3DDDI_ALLOCATIONINFO2_u1 {
+ [usize; 1],
+ hSection hSection_mut: HANDLE,
+ pSystemMem pSystemMem_mut: *const VOID,
+}}
+UNION!{union D3DDDI_ALLOCATIONINFO2_u2 {
+ [usize; 1],
+ Priority Priority_mut: UINT,
+ Unused Unused_mut: ULONG_PTR,
+}}
+STRUCT!{struct D3DDDI_ALLOCATIONINFO2 {
+ hAllocation: D3DKMT_HANDLE,
+ u1: D3DDDI_ALLOCATIONINFO2_u1,
+ pPrivateDriverData: *mut VOID,
+ PrivateDriverDataSize: UINT,
+ VidPnSourceId: D3DDDI_VIDEO_PRESENT_SOURCE_ID,
+ Flags: UINT,
+ GpuVirtualAddress: D3DGPU_VIRTUAL_ADDRESS,
+ u2: D3DDDI_ALLOCATIONINFO2_u2,
+ Reserved: [ULONG_PTR; 5],
+}}
+BITFIELD!{D3DDDI_ALLOCATIONINFO2 Flags: UINT [
+ Primary set_Primary[0..1],
+ Stereo set_Stereo[1..2],
+ OverridePriority set_OverridePriority[2..3],
+ Reserved set_Reserved[3..32],
+]}
+STRUCT!{struct D3DDDI_OPENALLOCATIONINFO {
+ hAllocation: D3DKMT_HANDLE,
+ pPrivateDriverData: *const VOID,
+ PrivateDriverDataSize: UINT,
+}}
+STRUCT!{struct D3DDDI_OPENALLOCATIONINFO2 {
+ hAllocation: D3DKMT_HANDLE,
+ pPrivateDriverData: *const VOID,
+ PrivateDriverDataSize: UINT,
+ GpuVirtualAddress: D3DGPU_VIRTUAL_ADDRESS,
+ Reserved: [ULONG_PTR; 6],
+}}
+ENUM!{enum D3DDDI_OFFER_PRIORITY {
+ D3DDDI_OFFER_PRIORITY_NONE = 0,
+ D3DDDI_OFFER_PRIORITY_LOW = 1,
+ D3DDDI_OFFER_PRIORITY_NORMAL,
+ D3DDDI_OFFER_PRIORITY_HIGH,
+ D3DDDI_OFFER_PRIORITY_AUTO,
+}}
+STRUCT!{struct D3DDDI_ALLOCATIONLIST {
+ hAllocation: D3DKMT_HANDLE,
+ Value: UINT,
+}}
+BITFIELD!{D3DDDI_ALLOCATIONLIST Value: UINT [
+ WriteOperation set_WriteOperation[0..1],
+ DoNotRetireInstance set_DoNotRetireInstance[1..2],
+ OfferPriority set_OfferPriority[2..5],
+ Reserved set_Reserved[5..32],
+]}
+STRUCT!{struct D3DDDI_PATCHLOCATIONLIST {
+ AllocationIndex: UINT,
+ Value: UINT,
+ DriverId: UINT,
+ AllocationOffset: UINT,
+ PatchOffset: UINT,
+ SplitOffset: UINT,
+}}
+BITFIELD!{D3DDDI_PATCHLOCATIONLIST Value: UINT [
+ SlotId set_SlotId[0..24],
+ Reserved set_Reserved[24..32],
+]}
+STRUCT!{struct D3DDDICB_LOCKFLAGS {
+ Value: UINT,
+}}
+BITFIELD!{D3DDDICB_LOCKFLAGS Value: UINT [
+ ReadOnly set_ReadOnly[0..1],
+ WriteOnly set_WriteOnly[1..2],
+ DonotWait set_DonotWait[2..3],
+ IgnoreSync set_IgnoreSync[3..4],
+ LockEntire set_LockEntire[4..5],
+ DonotEvict set_DonotEvict[5..6],
+ AcquireAperture set_AcquireAperture[6..7],
+ Discard set_Discard[7..8],
+ NoExistingReference set_NoExistingReference[8..9],
+ UseAlternateVA set_UseAlternateVA[9..10],
+ IgnoreReadSync set_IgnoreReadSync[10..11],
+ Reserved set_Reserved[11..32],
+]}
+STRUCT!{struct D3DDDICB_LOCK2FLAGS {
+ Value: UINT,
+}}
+STRUCT!{struct D3DDDICB_DESTROYALLOCATION2FLAGS {
+ Value: UINT,
+}}
+BITFIELD!{D3DDDICB_DESTROYALLOCATION2FLAGS Value: UINT [
+ AssumeNotInUse set_AssumeNotInUse[0..1],
+ SynchronousDestroy set_SynchronousDestroy[1..2],
+ Reserved set_Reserved[2..31],
+ SystemUseOnly set_SystemUseOnly[31..32],
+]}
+STRUCT!{struct D3DDDI_ESCAPEFLAGS {
+ Value: UINT,
+}}
+BITFIELD!{D3DDDI_ESCAPEFLAGS Value: UINT [
+ HardwareAccess set_HardwareAccess[0..1],
+ DeviceStatusQuery set_DeviceStatusQuery[1..2],
+ ChangeFrameLatency set_ChangeFrameLatency[2..3],
+ NoAdapterSynchronization set_NoAdapterSynchronization[3..4],
+ Reserved set_Reserved[4..5],
+ VirtualMachineData set_VirtualMachineData[5..6],
+ DriverKnownEscape set_DriverKnownEscape[6..7],
+ DriverCommonEscape set_DriverCommonEscape[7..8],
+ Reserved2 set_Reserved2[8..24],
+]}
+ENUM!{enum D3DDDI_DRIVERESCAPETYPE {
+ D3DDDI_DRIVERESCAPETYPE_TRANSLATEALLOCATIONHANDLE = 0,
+ D3DDDI_DRIVERESCAPETYPE_TRANSLATERESOURCEHANDLE = 1,
+ D3DDDI_DRIVERESCAPETYPE_MAX,
+}}
+STRUCT!{struct D3DDDI_DRIVERESCAPE_TRANSLATEALLOCATIONEHANDLE {
+ EscapeType: D3DDDI_DRIVERESCAPETYPE,
+ hAllocation: D3DKMT_HANDLE,
+}}
+STRUCT!{struct D3DDDI_DRIVERESCAPE_TRANSLATERESOURCEHANDLE {
+ EscapeType: D3DDDI_DRIVERESCAPETYPE,
+ hResource: D3DKMT_HANDLE,
+}}
+STRUCT!{struct D3DDDI_CREATECONTEXTFLAGS {
+ Value: UINT,
+}}
+BITFIELD!{D3DDDI_CREATECONTEXTFLAGS Value: UINT [
+ NullRendering set_NullRendering[0..1],
+ InitialData set_InitialData[1..2],
+ DisableGpuTimeout set_DisableGpuTimeout[2..3],
+ SynchronizationOnly set_SynchronizationOnly[3..4],
+ HwQueueSupported set_HwQueueSupported[4..5],
+ Reserved set_Reserved[5..32],
+]}
+//1188
+STRUCT!{struct D3DDDICB_SIGNALFLAGS {
+ Value: UINT,
+}}
+BITFIELD!{D3DDDICB_SIGNALFLAGS Value: UINT [
+ SignalAtSubmission set_SignalAtSubmission[0..1],
+ EnqueueCpuEvent set_EnqueueCpuEvent[1..2],
+ AllowFenceRewind set_AllowFenceRewind[2..3],
+ Reserved set_Reserved[3..31],
+ DXGK_SIGNAL_FLAG_INTERNAL0 set_DXGK_SIGNAL_FLAG_INTERNAL0[31..32],
+]}
+pub const D3DDDI_MAX_OBJECT_WAITED_ON: usize = 32;
+pub const D3DDDI_MAX_OBJECT_SIGNALED: usize = 32;
+ENUM!{enum D3DDDI_SYNCHRONIZATIONOBJECT_TYPE {
+ D3DDDI_SYNCHRONIZATION_MUTEX = 1,
+ D3DDDI_SEMAPHORE = 2,
+ D3DDDI_FENCE = 3,
+ D3DDDI_CPU_NOTIFICATION = 4,
+ D3DDDI_MONITORED_FENCE = 5,
+ D3DDDI_PERIODIC_MONITORED_FENCE = 6,
+ D3DDDI_SYNCHRONIZATION_TYPE_LIMIT,
+}}
+//1553
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_SynchronizationMutex {
+ InitialState: BOOL,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_Semaphore {
+ MaxCount: UINT,
+ InitialCount: UINT,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_Reserved {
+ Reserved: [UINT; 16],
+}}
+UNION!{union D3DDDI_SYNCHRONIZATIONOBJECTINFO_u {
+ [u32; 16],
+ SynchronizationMutex SynchronizationMutex_mut:
+ D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_SynchronizationMutex,
+ Semaphore Semaphore_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_Semaphore,
+ Reserved Reserved_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO_u_Reserved,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO {
+ Type: D3DDDI_SYNCHRONIZATIONOBJECT_TYPE,
+ u: D3DDDI_SYNCHRONIZATIONOBJECTINFO_u,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS {
+ Value: UINT,
+}}
+BITFIELD!{D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Value: UINT [
+ Shared set_Shared[0..1],
+ NtSecuritySharing set_NtSecuritySharing[1..2],
+ CrossAdapter set_CrossAdapter[2..3],
+ TopOfPipeline set_TopOfPipeline[3..4],
+ NoSignal set_NoSignal[4..5],
+ NoWait set_NoWait[5..6],
+ NoSignalMaxValueOnTdr set_NoSignalMaxValueOnTdr[6..7],
+ NoGPUAccess set_NoGPUAccess[7..8],
+ Reserved set_Reserved[8..31],
+ D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0
+ set_D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0[31..32],
+]}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_SynchronizationMutex {
+ InitialState: BOOL,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Semaphore {
+ MaxCount: UINT,
+ InitialCount: UINT,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Fence {
+ FenceValue: UINT64,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_CPUNotification {
+ Event: HANDLE,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_MonitoredFence {
+ InitialFenceValue: UINT64,
+ FenceValueCPUVirtualAddress: *mut VOID,
+ FenceValueGPUVirtualAddress: D3DGPU_VIRTUAL_ADDRESS,
+ EngineAffinity: UINT,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_PeriodicMonitoredFence {
+ hAdapter: D3DKMT_HANDLE,
+ VidPnTargetId: D3DDDI_VIDEO_PRESENT_TARGET_ID,
+ Time: UINT64,
+ FenceValueCPUVirtualAddress: *mut VOID,
+ FenceValueGPUVirtualAddress: D3DGPU_VIRTUAL_ADDRESS,
+ EngineAffinity: UINT,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Reserved {
+ Reserved: [UINT64; 8],
+}}
+UNION!{union D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u {
+ [u64; 8],
+ SynchronizationMutex SynchronizationMutex_mut:
+ D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_SynchronizationMutex,
+ Semaphore Semaphore_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Semaphore,
+ Fence Fence_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Fence,
+ CPUNotification CPUNotification_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_CPUNotification,
+ MonitoredFence MonitoredFence_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_MonitoredFence,
+ PeriodicMonitoredFence PeriodicMonitoredFence_mut:
+ D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_PeriodicMonitoredFence,
+ Reserved Reserved_mut: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u_Reserved,
+}}
+STRUCT!{struct D3DDDI_SYNCHRONIZATIONOBJECTINFO2 {
+ Type: D3DDDI_SYNCHRONIZATIONOBJECT_TYPE,
+ Flags: D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS,
+ u: D3DDDI_SYNCHRONIZATIONOBJECTINFO2_u,
+ SharedHandle: D3DKMT_HANDLE,
+}}
+//1778
+pub const D3DDDI_MAX_BROADCAST_CONTEXT: usize = 64;