16#pragma region Desktop Family
17#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
20#pragma warning(disable:4201)
21#pragma warning(disable:4200)
22#pragma warning(disable:4214)
32#if defined(__REACTOS__) || ((NTDDI_VERSION >= NTDDI_LONGHORN) || defined(D3DKMDT_SPECIAL_MULTIPLATFORM_TOOL))
34typedef struct _D3DKMT_CREATEDEVICEFLAGS
37 UINT RequestVSync : 1;
38#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
39 UINT DisableGpuTimeout : 1;
44} D3DKMT_CREATEDEVICEFLAGS;
46typedef struct _D3DKMT_CREATEDEVICE
50 D3DKMT_HANDLE hAdapter;
52 D3DKMT_PTR_HELPER(pAdapter_Align)
55 D3DKMT_CREATEDEVICEFLAGS
Flags;
57 D3DKMT_HANDLE hDevice;
58 D3DKMT_PTR(
VOID*, pCommandBuffer);
59 UINT CommandBufferSize;
60 D3DKMT_PTR(D3DDDI_ALLOCATIONLIST*, pAllocationList);
61 UINT AllocationListSize;
62 D3DKMT_PTR(D3DDDI_PATCHLOCATIONLIST*, pPatchLocationList);
63 UINT PatchLocationListSize;
66typedef struct _D3DKMT_DESTROYDEVICE
68 D3DKMT_HANDLE hDevice;
71typedef enum _D3DKMT_CLIENTHINT
73 D3DKMT_CLIENTHINT_UNKNOWN = 0,
74 D3DKMT_CLIENTHINT_OPENGL = 1,
75 D3DKMT_CLIENTHINT_CDD = 2,
76 D3DKMT_CLIENTHINT_OPENCL = 3,
77 D3DKMT_CLIENTHINT_VULKAN = 4,
78 D3DKMT_CLIENTHINT_CUDA = 5,
79 D3DKMT_CLIENTHINT_RESERVED = 6,
80 D3DKMT_CLIENTHINT_DX7 = 7,
81 D3DKMT_CLIENTHINT_DX8 = 8,
82 D3DKMT_CLIENTHINT_DX9 = 9,
83 D3DKMT_CLIENTHINT_DX10 = 10,
84 D3DKMT_CLIENTHINT_DX11 = 11,
85 D3DKMT_CLIENTHINT_DX12 = 12,
86 D3DKMT_CLIENTHINT_9ON12 = 13,
87 D3DKMT_CLIENTHINT_11ON12 = 14,
88 D3DKMT_CLIENTHINT_MFT_ENCODE = 15,
89 D3DKMT_CLIENTHINT_GLON12 = 16,
90 D3DKMT_CLIENTHINT_CLON12 = 17,
91 D3DKMT_CLIENTHINT_DML_TENSORFLOW = 18,
92 D3DKMT_CLIENTHINT_ONEAPI_LEVEL0 = 19,
96typedef struct _D3DKMT_CREATECONTEXT
98 D3DKMT_HANDLE hDevice;
101 D3DDDI_CREATECONTEXTFLAGS
Flags;
102 D3DKMT_PTR(
VOID*, pPrivateDriverData);
103 UINT PrivateDriverDataSize;
104 D3DKMT_CLIENTHINT ClientHint;
105 D3DKMT_HANDLE hContext;
106 D3DKMT_PTR(
VOID*, pCommandBuffer);
107 UINT CommandBufferSize;
108 D3DKMT_PTR(D3DDDI_ALLOCATIONLIST*, pAllocationList);
109 UINT AllocationListSize;
110 D3DKMT_PTR(D3DDDI_PATCHLOCATIONLIST*, pPatchLocationList);
111 UINT PatchLocationListSize;
112 D3DGPU_VIRTUAL_ADDRESS CommandBuffer;
113} D3DKMT_CREATECONTEXT;
115typedef struct _D3DKMT_DESTROYCONTEXT
117 D3DKMT_HANDLE hContext;
118} D3DKMT_DESTROYCONTEXT;
120typedef struct _D3DKMT_CREATESYNCHRONIZATIONOBJECT
122 D3DKMT_HANDLE hDevice;
123 D3DDDI_SYNCHRONIZATIONOBJECTINFO
Info;
124 D3DKMT_HANDLE hSyncObject;
125} D3DKMT_CREATESYNCHRONIZATIONOBJECT;
127typedef struct _D3DKMT_CREATESYNCHRONIZATIONOBJECT2
129 D3DKMT_HANDLE hDevice;
130 D3DDDI_SYNCHRONIZATIONOBJECTINFO2
Info;
131 D3DKMT_HANDLE hSyncObject;
132} D3DKMT_CREATESYNCHRONIZATIONOBJECT2;
134typedef struct _D3DKMT_DESTROYSYNCHRONIZATIONOBJECT
136 D3DKMT_HANDLE hSyncObject;
137} D3DKMT_DESTROYSYNCHRONIZATIONOBJECT;
139typedef struct _D3DKMT_OPENSYNCHRONIZATIONOBJECT
141 D3DKMT_HANDLE hSharedHandle;
142 D3DKMT_HANDLE hSyncObject;
145} D3DKMT_OPENSYNCHRONIZATIONOBJECT;
147typedef struct _D3DKMT_WAITFORSYNCHRONIZATIONOBJECT
149 D3DKMT_HANDLE hContext;
151 D3DKMT_HANDLE ObjectHandleArray[D3DDDI_MAX_OBJECT_WAITED_ON];
152} D3DKMT_WAITFORSYNCHRONIZATIONOBJECT;
154typedef struct _D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2
156 D3DKMT_HANDLE hContext;
158 D3DKMT_HANDLE ObjectHandleArray[D3DDDI_MAX_OBJECT_WAITED_ON];
162 D3DKMT_ALIGN64
UINT64 FenceValue;
166} D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2;
168typedef struct _D3DKMT_SIGNALSYNCHRONIZATIONOBJECT
170 D3DKMT_HANDLE hContext;
172 D3DKMT_HANDLE ObjectHandleArray[D3DDDI_MAX_OBJECT_SIGNALED];
173 D3DDDICB_SIGNALFLAGS
Flags;
174} D3DKMT_SIGNALSYNCHRONIZATIONOBJECT;
176typedef struct _D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2
178 D3DKMT_HANDLE hContext;
180 D3DKMT_HANDLE ObjectHandleArray[D3DDDI_MAX_OBJECT_SIGNALED];
181 D3DDDICB_SIGNALFLAGS
Flags;
182 ULONG BroadcastContextCount;
184 D3DKMT_HANDLE BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
189 D3DKMT_ALIGN64
UINT64 FenceValue;
191#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
196} D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2;
198typedef struct _D3DKMT_LOCK
200 D3DKMT_HANDLE hDevice;
201 D3DKMT_HANDLE hAllocation;
203 UINT PrivateDriverData;
207 D3DDDICB_LOCKFLAGS
Flags;
208 D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress;
211typedef struct _D3DKMT_UNLOCK
213 D3DKMT_HANDLE hDevice;
215 D3DKMT_PTR(
CONST D3DKMT_HANDLE*, phAllocations);
218typedef enum _D3DKMDT_MODE_PRUNING_REASON
220 D3DKMDT_MPR_UNINITIALIZED = 0,
221 D3DKMDT_MPR_ALLCAPS = 1,
222 D3DKMDT_MPR_DESCRIPTOR_MONITOR_SOURCE_MODE = 2,
223 D3DKMDT_MPR_DESCRIPTOR_MONITOR_FREQUENCY_RANGE = 3,
224 D3DKMDT_MPR_DESCRIPTOR_OVERRIDE_MONITOR_SOURCE_MODE = 4,
225 D3DKMDT_MPR_DESCRIPTOR_OVERRIDE_MONITOR_FREQUENCY_RANGE = 5,
226 D3DKMDT_MPR_DEFAULT_PROFILE_MONITOR_SOURCE_MODE = 6,
227 D3DKMDT_MPR_DRIVER_RECOMMENDED_MONITOR_SOURCE_MODE = 7,
228 D3DKMDT_MPR_MONITOR_FREQUENCY_RANGE_OVERRIDE = 8,
229 D3DKMDT_MPR_CLONE_PATH_PRUNED = 9,
230 D3DKMDT_MPR_MAXVALID = 10
232D3DKMDT_MODE_PRUNING_REASON;
238typedef struct _D3DKMDT_DISPLAYMODE_FLAGS
240#if (DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WIN8)
241 BOOLEAN ValidatedAgainstMonitorCaps : 1;
243 D3DKMDT_MODE_PRUNING_REASON ModePruningReason : 4;
246 UINT ValidatedAgainstMonitorCaps : 1;
247 UINT RoundedFakeMode : 1;
249 D3DKMDT_MODE_PRUNING_REASON ModePruningReason : 4;
251 UINT AdvancedScanCapable : 1;
252#if (DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WDDM2_0)
255 UINT PreferredTiming : 1;
256 UINT PhysicalModeSupported : 1;
257#if (DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WDDM2_9)
260 UINT VirtualRefreshRate : 1;
266D3DKMDT_DISPLAYMODE_FLAGS;
268typedef struct _D3DKMT_DISPLAYMODE
273 UINT IntegerRefreshRate;
274 D3DDDI_RATIONAL RefreshRate;
275 D3DDDI_VIDEO_SIGNAL_SCANLINE_ORDERING ScanLineOrdering;
276 D3DDDI_ROTATION DisplayOrientation;
277 UINT DisplayFixedOutput;
278 D3DKMDT_DISPLAYMODE_FLAGS
Flags;
281typedef struct _D3DKMT_GETDISPLAYMODELIST
283 D3DKMT_HANDLE hAdapter;
284 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
285 D3DKMT_PTR(D3DKMT_DISPLAYMODE*, pModeList);
287} D3DKMT_GETDISPLAYMODELIST;
289typedef struct _D3DKMT_DISPLAYMODELIST
291 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
293 D3DKMT_DISPLAYMODE pModeList[0];
294} D3DKMT_DISPLAYMODELIST;
296typedef struct _D3DKMT_SETDISPLAYMODE_FLAGS
301D3DKMT_SETDISPLAYMODE_FLAGS;
303typedef struct _D3DKMT_SETDISPLAYMODE
305 D3DKMT_HANDLE hDevice;
306 D3DKMT_HANDLE hPrimaryAllocation;
307 D3DDDI_VIDEO_SIGNAL_SCANLINE_ORDERING ScanLineOrdering;
308 D3DDDI_ROTATION DisplayOrientation;
309 UINT PrivateDriverFormatAttribute;
310 D3DKMT_SETDISPLAYMODE_FLAGS
Flags;
311} D3DKMT_SETDISPLAYMODE;
314typedef struct _D3DKMT_MULTISAMPLEMETHOD
317 UINT NumQualityLevels;
319} D3DKMT_MULTISAMPLEMETHOD;
321typedef struct _D3DKMT_GETMULTISAMPLEMETHODLIST
323 D3DKMT_HANDLE hAdapter;
324 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
328 D3DKMT_PTR(D3DKMT_MULTISAMPLEMETHOD*, pMethodList);
330} D3DKMT_GETMULTISAMPLEMETHODLIST;
332typedef struct _D3DKMT_PRESENTFLAGS
341 UINT FlipDoNotFlip : 1;
342 UINT FlipDoNotWait : 1;
343 UINT FlipRestart : 1;
344 UINT DstRectValid : 1;
345 UINT SrcRectValid : 1;
346 UINT RestrictVidPnSource : 1;
347 UINT SrcColorKey : 1;
348 UINT DstColorKey : 1;
349 UINT LinearToSrgb : 1;
350 UINT PresentCountValid : 1;
352 UINT PresentToBitmap : 1;
353 UINT RedirectedFlip : 1;
354 UINT RedirectedBlt : 1;
355#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
357 UINT FlipStereoTemporaryMono : 1;
358 UINT FlipStereoPreferRight : 1;
359 UINT BltStereoUseRight : 1;
360 UINT PresentHistoryTokenOnly : 1;
361 UINT PresentRegionsValid : 1;
363 UINT ProtectedContentBlankedOut : 1;
364 UINT RemoteSession : 1;
365#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
366 UINT CrossAdapter : 1;
367 UINT DurationValid : 1;
368 UINT PresentIndirect : 1;
380} D3DKMT_PRESENTFLAGS;
382typedef enum _D3DKMT_PRESENT_MODEL
384 D3DKMT_PM_UNINITIALIZED = 0,
385 D3DKMT_PM_REDIRECTED_GDI = 1,
386 D3DKMT_PM_REDIRECTED_FLIP = 2,
387 D3DKMT_PM_REDIRECTED_BLT = 3,
388 D3DKMT_PM_REDIRECTED_VISTABLT = 4,
389 D3DKMT_PM_SCREENCAPTUREFENCE = 5,
390 D3DKMT_PM_REDIRECTED_GDI_SYSMEM = 6,
391 D3DKMT_PM_REDIRECTED_COMPOSITION = 7,
392#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
393 D3DKMT_PM_SURFACECOMPLETE = 8,
395 D3DKMT_PM_FLIPMANAGER = 9,
396} D3DKMT_PRESENT_MODEL;
398typedef enum _D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE
400 D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE_FLIP_SUBMITTED = 0,
401 D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE_FLIP_COMPLETE = 1
402} D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE;
404typedef struct _D3DKMT_FLIPMODEL_PRESENTHISTORYTOKENFLAGS
411 UINT RestrictedContent : 1;
413#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
414 UINT StereoPreferRight : 1;
415 UINT TemporaryMono : 1;
416 UINT FlipRestart : 1;
417 UINT HDRMetaDataChanged : 1;
419 UINT SignalLimitOnTokenCompletion : 1;
421 UINT IndependentFlip : 1;
422 D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE IndependentFlipStage : 2;
423 UINT IndependentFlipReleaseCount : 2;
424 UINT IndependentFlipForceNotifyDwm : 1;
425 UINT UseCustomDuration : 1;
426 UINT IndependentFlipRequestDwmConfirm:1;
427 UINT IndependentFlipCandidate : 1;
428 UINT IndependentFlipCheckNeeded : 1;
429 UINT IndependentFlipTrueImmediate : 1;
430 UINT IndependentFlipRequestDwmExit : 1;
431 UINT CompSurfaceNotifiedEarly : 1;
432 UINT IndependentFlipDoNotFlip : 1;
433 UINT RequirePairedToken : 1;
434 UINT VariableRefreshOverrideEligible :1;
443} D3DKMT_FLIPMODEL_PRESENTHISTORYTOKENFLAGS;
445#define D3DKMT_MAX_PRESENT_HISTORY_RECTS 16
447typedef struct _D3DKMT_DIRTYREGIONS
450 RECT Rects[D3DKMT_MAX_PRESENT_HISTORY_RECTS];
451} D3DKMT_DIRTYREGIONS;
453typedef struct _D3DKMT_COMPOSITION_PRESENTHISTORYTOKEN
455 D3DKMT_ALIGN64
ULONG64 hPrivateData;
456} D3DKMT_COMPOSITION_PRESENTHISTORYTOKEN;
458typedef struct _D3DKMT_FLIPMANAGER_PRESENTHISTORYTOKEN
460 D3DKMT_ALIGN64
ULONG64 hPrivateData;
468 UINT hPrivateDataIsPointer : 1;
473} D3DKMT_FLIPMANAGER_PRESENTHISTORYTOKEN;
475typedef enum _D3DKMT_AUXILIARYPRESENTINFO_TYPE
477 D3DKMT_AUXILIARYPRESENTINFO_TYPE_FLIPMANAGER = 0
478} D3DKMT_AUXILIARYPRESENTINFO_TYPE;
480typedef struct _D3DKMT_AUXILIARYPRESENTINFO
483 D3DKMT_AUXILIARYPRESENTINFO_TYPE
type;
484} D3DKMT_AUXILIARYPRESENTINFO;
486typedef struct _D3DKMT_FLIPMANAGER_AUXILIARYPRESENTINFO
489 D3DKMT_AUXILIARYPRESENTINFO auxiliaryPresentInfo;
492 UINT flipManagerTracingId;
496 BOOL customDurationChanged;
499 LUID FlipAdapterLuid;
500 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
503 D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE independentFlipStage;
506 D3DKMT_ALIGN64
ULONGLONG FlipCompletedQpc;
509 UINT HwPresentDurationQpc;
513} D3DKMT_FLIPMANAGER_AUXILIARYPRESENTINFO;
515typedef struct _D3DKMT_GDIMODEL_PRESENTHISTORYTOKEN
519#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
523 D3DKMT_DIRTYREGIONS DirtyRegions;
524} D3DKMT_GDIMODEL_PRESENTHISTORYTOKEN;
526typedef struct _D3DKMT_GDIMODEL_SYSMEM_PRESENTHISTORYTOKEN
530 D3DKMT_ALIGN64
UINT64 uiCookie;
531} D3DKMT_GDIMODEL_SYSMEM_PRESENTHISTORYTOKEN;
533typedef ULONGLONG D3DKMT_VISTABLTMODEL_PRESENTHISTORYTOKEN;
535typedef struct _D3DKMT_FENCE_PRESENTHISTORYTOKEN
538} D3DKMT_FENCE_PRESENTHISTORYTOKEN;
540typedef struct _D3DKMT_BLTMODEL_PRESENTHISTORYTOKEN
544 D3DKMT_ALIGN64
ULONG64 EventId;
545 D3DKMT_DIRTYREGIONS DirtyRegions;
546} D3DKMT_BLTMODEL_PRESENTHISTORYTOKEN;
548#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
549#define D3DKMT_MAX_PRESENT_HISTORY_SCATTERBLTS 12
551typedef struct _D3DKMT_SCATTERBLT
553 D3DKMT_ALIGN64
ULONG64 hLogicalSurfaceDestination;
554 D3DKMT_ALIGN64
LONG64 hDestinationCompSurfDWM;
555 D3DKMT_ALIGN64
UINT64 DestinationCompositionBindingId;
560typedef struct _D3DKMT_SCATTERBLTS
563 D3DKMT_SCATTERBLT Blts[D3DKMT_MAX_PRESENT_HISTORY_SCATTERBLTS];
567typedef struct _D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN
569 D3DKMT_ALIGN64
UINT64 FenceValue;
571 D3DKMT_ALIGN64 D3DKMT_UINT_PTR dxgContext;
572 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
574 D3DKMT_ALIGN64
UINT64 PresentLimitSemaphoreId;
575 D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
576 D3DKMT_FLIPMODEL_PRESENTHISTORYTOKENFLAGS
Flags;
577#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
578 D3DKMT_ALIGN64
LONG64 hCompSurf;
580 D3DKMT_ALIGN64
UINT64 confirmationCookie;
581 D3DKMT_ALIGN64
UINT64 CompositionSyncKey;
582 UINT RemainingTokens;
586 FLOAT RevealColor[4];
587 D3DDDI_ROTATION Rotation;
590 D3DKMT_SCATTERBLTS ScatterBlts;
594 D3DDDI_HDR_METADATA_TYPE HDRMetaDataType;
597 D3DDDI_HDR_METADATA_HDR10 HDRMetaDataHDR10;
598 D3DDDI_HDR_METADATA_HDR10PLUS HDRMetaDataHDR10Plus;
610 D3DDDI_FLIPINTERVAL_TYPE CustomDurationFlipInterval;
613#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
614 D3DDDI_COLOR_SPACE_TYPE ColorSpace;
616 D3DKMT_DIRTYREGIONS DirtyRegions;
617} D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN;
620#define FLIPEX_TIMEOUT_USER (2000)
621#define FLIPEX_TIMEOUT_KERNEL (FLIPEX_TIMEOUT_USER*10000)
623#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
624typedef struct _D3DKMT_SURFACECOMPLETE_PRESENTHISTORYTOKEN
627} D3DKMT_SURFACECOMPLETE_PRESENTHISTORYTOKEN;
630typedef struct _D3DKMT_PRESENTHISTORYTOKEN
632 D3DKMT_PRESENT_MODEL Model;
639#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
641 UINT64 CompositionBindingId;
646 D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN Flip;
647 D3DKMT_BLTMODEL_PRESENTHISTORYTOKEN Blt;
648 D3DKMT_VISTABLTMODEL_PRESENTHISTORYTOKEN VistaBlt;
649 D3DKMT_GDIMODEL_PRESENTHISTORYTOKEN Gdi;
650 D3DKMT_FENCE_PRESENTHISTORYTOKEN Fence;
651 D3DKMT_GDIMODEL_SYSMEM_PRESENTHISTORYTOKEN GdiSysMem;
652 D3DKMT_COMPOSITION_PRESENTHISTORYTOKEN Composition;
653 D3DKMT_FLIPMANAGER_PRESENTHISTORYTOKEN FlipManager;
654#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
655 D3DKMT_SURFACECOMPLETE_PRESENTHISTORYTOKEN SurfaceComplete;
659} D3DKMT_PRESENTHISTORYTOKEN;
661#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
662typedef struct _D3DKMT_PRESENT_RGNS
667 D3DKMT_PTR(
_Field_size_( MoveRectCount )
const D3DKMT_MOVE_RECT*, pMoveRects);
671typedef struct _D3DKMT_PRESENT
675 D3DKMT_HANDLE hDevice;
676 D3DKMT_HANDLE hContext;
678 D3DKMT_PTR(
HWND, hWindow);
679 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
680 D3DKMT_HANDLE hSource;
681 D3DKMT_HANDLE hDestination;
688 D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
689 D3DKMT_PRESENTFLAGS
Flags;
690 ULONG BroadcastContextCount;
692 D3DKMT_HANDLE BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
694 HANDLE PresentLimitSemaphore;
695 D3DKMT_PRESENTHISTORYTOKEN PresentHistoryToken;
696#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
697 D3DKMT_PRESENT_RGNS* pPresentRegions;
699#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
702 D3DKMT_HANDLE hAdapter;
703 D3DKMT_HANDLE hIndirectContext;
707#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
709 D3DKMT_HANDLE*, BroadcastSrcAllocation);
711 D3DKMT_HANDLE*, BroadcastDstAllocation);
712 UINT PrivateDriverDataSize;
714 PVOID, pPrivateDriverData);
715 BOOLEAN bOptimizeForComposition;
720#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
721typedef struct _D3DKMT_PRESENT_REDIRECTEDS_FLAGS
731}D3DKMT_PRESENT_REDIRECTED_FLAGS;
733typedef struct _D3DKMT_PRESENT_REDIRECTED
735 D3DKMT_HANDLE hSyncObj;
736 D3DKMT_HANDLE hDevice;
737 D3DKMT_ALIGN64
ULONGLONG WaitedFenceValue;
738 D3DKMT_PRESENTHISTORYTOKEN PresentHistoryToken;
739 D3DKMT_PRESENT_REDIRECTED_FLAGS
Flags;
740 D3DKMT_HANDLE hSource;
741 UINT PrivateDriverDataSize;
743 PVOID, pPrivateDriverData);
744}D3DKMT_PRESENT_REDIRECTED;
747#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
748typedef struct _D3DKMT_CANCEL_PRESENTS_FLAGS
755 UINT NewVSyncInterruptState : 1;
757 } ReprogramInterrupt;
761}D3DKMT_CANCEL_PRESENTS_FLAGS;
764typedef enum D3DKMT_CANCEL_PRESENTS_OPERATION
766 D3DKMT_CANCEL_PRESENTS_OPERATION_CANCEL_FROM = 0,
767 D3DKMT_CANCEL_PRESENTS_OPERATION_REPROGRAM_INTERRUPT = 1
768} D3DKMT_CANCEL_PRESENTS_OPERATION;
770typedef struct _D3DKMT_CANCEL_PRESENTS
773 D3DKMT_HANDLE hDevice;
774 D3DKMT_CANCEL_PRESENTS_FLAGS
Flags;
775 D3DKMT_CANCEL_PRESENTS_OPERATION
Operation;
776 D3DKMT_ALIGN64
UINT64 CancelFromPresentId;
777 LUID CompSurfaceLuid;
778 D3DKMT_ALIGN64
UINT64 BindId;
779}D3DKMT_CANCEL_PRESENTS;
782#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
784typedef struct _D3DKMT_SUBMITPRESENTBLTTOHWQUEUE
786 D3DKMT_HANDLE hHwQueue;
787 D3DKMT_ALIGN64
UINT64 HwQueueProgressFenceId;
788 D3DKMT_PRESENT PrivatePresentData;
789} D3DKMT_SUBMITPRESENTBLTTOHWQUEUE;
793#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_5)
795typedef struct _D3DKMT_SUBMITPRESENTTOHWQUEUE
797 D3DKMT_PTR(
_Field_size_(PrivatePresentData.BroadcastContextCount + 1)
798 D3DKMT_HANDLE*, hHwQueues);
799 D3DKMT_PRESENT PrivatePresentData;
800} D3DKMT_SUBMITPRESENTTOHWQUEUE;
804#define D3DKMT_MAX_MULTIPLANE_OVERLAY_PLANES 8
805#define D3DKMT_MAX_MULTIPLANE_OVERLAY_ALLOCATIONS_PER_PLANE 256
807typedef enum D3DKMT_MULTIPLANE_OVERLAY_FLAGS
809 D3DKMT_MULTIPLANE_OVERLAY_FLAG_VERTICAL_FLIP = 0x1,
810 D3DKMT_MULTIPLANE_OVERLAY_FLAG_HORIZONTAL_FLIP = 0x2,
811#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
812 D3DKMT_MULTIPLANE_OVERLAY_FLAG_STATIC_CHECK = 0x4,
814} D3DKMT_MULTIPLANE_OVERLAY_FLAGS;
816typedef enum D3DKMT_MULTIPLANE_OVERLAY_BLEND
818 D3DKMT_MULTIPLANE_OVERLAY_BLEND_OPAQUE = 0x0,
819 D3DKMT_MULTIPLANE_OVERLAY_BLEND_ALPHABLEND = 0x1,
820} D3DKMT_MULTIPLANE_OVERLAY_BLEND;
822typedef enum D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT
824 D3DKMT_MULIIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE = 0,
825 D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1,
826 D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2
827} D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT;
829typedef enum D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAGS
831 D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1,
832 D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2,
833 D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4,
834} D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAGS;
836typedef enum D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT
838 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO = 0,
839 D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_HORIZONTAL = 1,
840 D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_VERTICAL = 2,
841 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_SEPARATE = 3,
842 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO_OFFSET = 4,
843 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_ROW_INTERLEAVED = 5,
844 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_COLUMN_INTERLEAVED = 6,
845 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_CHECKERBOARD = 7
846} D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT;
848typedef enum _DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE
850 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_NONE = 0,
851 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_FRAME0 = 1,
852 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_FRAME1 = 2,
853} DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE;
855typedef enum _DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY
857 DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY_BILINEAR = 0x1,
858 DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY_HIGH = 0x2,
859} DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY;
861typedef struct D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES
866#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
869 D3DDDI_ROTATION Rotation;
870 D3DKMT_MULTIPLANE_OVERLAY_BLEND Blend;
871#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
873 D3DKMT_PTR(
RECT*, pDirtyRects);
876 D3DKMT_PTR(
void*, pFilters);
878 D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT VideoFrameFormat;
880 D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT StereoFormat;
881 BOOL StereoLeftViewFrame0;
882 BOOL StereoBaseViewFrame0;
883 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE StereoFlipMode;
884#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
885 DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY StretchQuality;
887} D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES;
889#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM_1_3)
890typedef struct D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE
892 D3DKMT_HANDLE hResource;
893 LUID CompSurfaceLuid;
894 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
895 D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES PlaneAttributes;
896} D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE;
898typedef struct D3DKMT_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO
904 UINT FailingPlane : 4;
910} D3DKMT_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO;
912typedef struct _D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT
914 D3DKMT_HANDLE hDevice;
916 D3DKMT_PTR(D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE*, pOverlayPlanes);
918 D3DKMT_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO ReturnInfo;
919} D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT;
922#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM_2_0)
923typedef struct _D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES2
933 D3DDDI_ROTATION Rotation;
934 D3DKMT_MULTIPLANE_OVERLAY_BLEND Blend;
936 D3DKMT_PTR(
RECT*, pDirtyRects);
937 D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT VideoFrameFormat;
938 D3DDDI_COLOR_SPACE_TYPE ColorSpace;
939 D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT StereoFormat;
940 BOOL StereoLeftViewFrame0;
941 BOOL StereoBaseViewFrame0;
942 DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE StereoFlipMode;
943 DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY StretchQuality;
945} D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES2;
947typedef struct _D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE2
950 D3DKMT_HANDLE hResource;
951 LUID CompSurfaceLuid;
952 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
953 D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES2 PlaneAttributes;
954} D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE2;
956typedef struct _D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT2
958 D3DKMT_HANDLE hAdapter;
959 D3DKMT_HANDLE hDevice;
961 D3DKMT_PTR(D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE2*, pOverlayPlanes);
963 D3DKMT_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO ReturnInfo;
964} D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT2;
966typedef struct _D3DKMT_MULTIPLANE_OVERLAY2
970 D3DKMT_HANDLE hAllocation;
971 D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES2 PlaneAttributes;
972} D3DKMT_MULTIPLANE_OVERLAY2;
974typedef struct _D3DKMT_PRESENT_MULTIPLANE_OVERLAY2
976 D3DKMT_HANDLE hAdapter;
979 D3DKMT_HANDLE hDevice;
980 D3DKMT_HANDLE hContext;
982 ULONG BroadcastContextCount;
984 D3DKMT_HANDLE BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
987 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
989 D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
990 D3DKMT_PRESENTFLAGS
Flags;
992 UINT PresentPlaneCount;
993 D3DKMT_PTR(D3DKMT_MULTIPLANE_OVERLAY2*, pPresentPlanes);
995} D3DKMT_PRESENT_MULTIPLANE_OVERLAY2;
998#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
999typedef struct _D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES3
1009 D3DDDI_ROTATION Rotation;
1010 D3DKMT_MULTIPLANE_OVERLAY_BLEND Blend;
1011 UINT DirtyRectCount;
1013 D3DDDI_COLOR_SPACE_TYPE ColorSpace;
1014 DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY StretchQuality;
1015#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
1018} D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES3;
1020typedef struct _D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE3
1023 D3DKMT_HANDLE hResource;
1024 LUID CompSurfaceLuid;
1025 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
1026 D3DKMT_PTR(D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES3*, pPlaneAttributes);
1027} D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE3;
1029typedef struct _D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_FLAGS
1035 UINT VerticalFlip : 1;
1036 UINT HorizontalFlip : 1;
1041} D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_FLAGS;
1043typedef struct _D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION
1045 D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_FLAGS
Flags;
1048 D3DDDI_ROTATION Rotation;
1049} D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION;
1051typedef struct _D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_WITH_SOURCE
1053 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
1054 D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION PostComposition;
1055} D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_WITH_SOURCE;
1057typedef struct _D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT3
1059 D3DKMT_HANDLE hAdapter;
1060 D3DKMT_HANDLE hDevice;
1064 D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE3** ppOverlayPlanes;
1065 UINT PostCompositionCount;
1067 D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_WITH_SOURCE** ppPostComposition;
1069 D3DKMT_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO ReturnInfo;
1070} D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT3;
1072typedef struct _D3DKMT_PLANE_SPECIFIC_INPUT_FLAGS
1083} D3DKMT_PLANE_SPECIFIC_INPUT_FLAGS;
1085typedef struct _D3DKMT_PLANE_SPECIFIC_OUTPUT_FLAGS
1091 UINT FlipConvertedToImmediate : 1;
1096} D3DKMT_PLANE_SPECIFIC_OUTPUT_FLAGS;
1098typedef struct _D3DKMT_MULTIPLANE_OVERLAY3
1101 D3DKMT_PLANE_SPECIFIC_INPUT_FLAGS InputFlags;
1102 D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
1103 UINT MaxImmediateFlipLine;
1104 UINT AllocationCount;
1106 D3DKMT_HANDLE*, pAllocationList);
1107 UINT DriverPrivateDataSize;
1109 VOID*, pDriverPrivateData);
1110 D3DKMT_PTR(
const D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES3*, pPlaneAttributes);
1111 D3DKMT_HANDLE hFlipToFence;
1112 D3DKMT_HANDLE hFlipAwayFence;
1113 D3DKMT_ALIGN64
UINT64 FlipToFenceValue;
1114 D3DKMT_ALIGN64
UINT64 FlipAwayFenceValue;
1115} D3DKMT_MULTIPLANE_OVERLAY3;
1117typedef struct _D3DKMT_PRESENT_MULTIPLANE_OVERLAY_FLAGS
1123 UINT FlipStereo : 1;
1124 UINT FlipStereoTemporaryMono : 1;
1125 UINT FlipStereoPreferRight : 1;
1126 UINT FlipDoNotWait : 1;
1127 UINT FlipDoNotFlip : 1;
1128 UINT FlipRestart : 1;
1129 UINT DurationValid : 1;
1130 UINT HDRMetaDataValid : 1;
1132 UINT TrueImmediate : 1;
1137} D3DKMT_PRESENT_MULTIPLANE_OVERLAY_FLAGS;
1139typedef struct _D3DKMT_PRESENT_MULTIPLANE_OVERLAY3
1141 D3DKMT_HANDLE hAdapter;
1144 D3DKMT_HANDLE*, pContextList);
1146 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
1148 D3DKMT_PRESENT_MULTIPLANE_OVERLAY_FLAGS
Flags;
1150 UINT PresentPlaneCount;
1153 D3DKMT_MULTIPLANE_OVERLAY3** ppPresentPlanes;
1154 D3DKMT_PTR(D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION*, pPostComposition);
1156 D3DDDI_HDR_METADATA_TYPE HDRMetaDataType;
1157 UINT HDRMetaDataSize;
1159 const VOID*, pHDRMetaData);
1160 UINT BoostRefreshRateMultiplier;
1161} D3DKMT_PRESENT_MULTIPLANE_OVERLAY3;
1164#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
1165typedef struct _D3DKMT_MULTIPLANE_OVERLAY_CAPS
1172 UINT RotationWithoutIndependentFlip : 1;
1173 UINT VerticalFlip : 1;
1174 UINT HorizontalFlip : 1;
1175 UINT StretchRGB : 1;
1176 UINT StretchYUV : 1;
1177 UINT BilinearFilter : 1;
1178 UINT HighFilter : 1;
1181 UINT Plane0ForVirtualModeOnly : 1;
1182 UINT Version3DDISupport : 1;
1187} D3DKMT_MULTIPLANE_OVERLAY_CAPS;
1189typedef struct _D3DKMT_GET_MULTIPLANE_OVERLAY_CAPS
1191 D3DKMT_HANDLE hAdapter;
1192 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
1196 D3DKMT_MULTIPLANE_OVERLAY_CAPS OverlayCaps;
1197 float MaxStretchFactor;
1198 float MaxShrinkFactor;
1199} D3DKMT_GET_MULTIPLANE_OVERLAY_CAPS;
1201typedef struct _D3DKMT_GET_POST_COMPOSITION_CAPS
1203 D3DKMT_HANDLE hAdapter;
1204 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
1205 float MaxStretchFactor;
1206 float MaxShrinkFactor;
1207} D3DKMT_GET_POST_COMPOSITION_CAPS;
1209typedef struct _D3DKMT_MULTIPLANEOVERLAY_STRETCH_SUPPORT
1214} D3DKMT_MULTIPLANEOVERLAY_STRETCH_SUPPORT;
1217typedef struct D3DKMT_MULTIPLANE_OVERLAY
1221 D3DKMT_HANDLE hAllocation;
1222 D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES PlaneAttributes;
1223} D3DKMT_MULTIPLANE_OVERLAY;
1225typedef struct D3DKMT_PRESENT_MULTIPLANE_OVERLAY
1229 D3DKMT_HANDLE hDevice;
1230 D3DKMT_HANDLE hContext;
1232 ULONG BroadcastContextCount;
1234 D3DKMT_HANDLE BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
1237 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
1239 D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
1240 D3DKMT_PRESENTFLAGS
Flags;
1242 UINT PresentPlaneCount;
1243 D3DKMT_MULTIPLANE_OVERLAY* pPresentPlanes;
1245} D3DKMT_PRESENT_MULTIPLANE_OVERLAY;
1247typedef struct _D3DKMT_RENDERFLAGS
1249 UINT ResizeCommandBuffer : 1;
1250 UINT ResizeAllocationList : 1;
1251 UINT ResizePatchLocationList : 1;
1252 UINT NullRendering : 1;
1253 UINT PresentRedirected : 1;
1255 UINT RenderKmReadback : 1;
1257} D3DKMT_RENDERFLAGS;
1259#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
1260typedef struct _D3DKMT_OUTPUTDUPLPRESENTFLAGS
1266 UINT ProtectedContentBlankedOut : 1;
1267 UINT RemoteSession : 1;
1268 UINT FullScreenPresent : 1;
1269 UINT PresentIndirect : 1;
1274}D3DKMT_OUTPUTDUPLPRESENTFLAGS;
1276typedef struct _D3DKMT_OUTPUTDUPLPRESENT
1278 D3DKMT_HANDLE hContext;
1279 D3DKMT_HANDLE hSource;
1280 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
1281 ULONG BroadcastContextCount;
1282 D3DKMT_HANDLE BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
1283 D3DKMT_PRESENT_RGNS PresentRegions;
1284 D3DKMT_OUTPUTDUPLPRESENTFLAGS
Flags;
1285 D3DKMT_HANDLE hIndirectContext;
1286} D3DKMT_OUTPUTDUPLPRESENT;
1289#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
1291typedef struct _D3DKMT_OUTPUTDUPLPRESENTTOHWQUEUE
1293 D3DKMT_HANDLE hSource;
1294 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
1295 ULONG BroadcastHwQueueCount;
1297 D3DKMT_HANDLE*, hHwQueues);
1298 D3DKMT_PRESENT_RGNS PresentRegions;
1299 D3DKMT_OUTPUTDUPLPRESENTFLAGS
Flags;
1300 D3DKMT_HANDLE hIndirectHwQueue;
1301} D3DKMT_OUTPUTDUPLPRESENTTOHWQUEUE;
1305typedef struct _D3DKMT_RENDER
1309 D3DKMT_HANDLE hDevice;
1310 D3DKMT_HANDLE hContext;
1314 UINT AllocationCount;
1315 UINT PatchLocationCount;
1316 D3DKMT_PTR(
VOID*, pNewCommandBuffer);
1318 UINT NewCommandBufferSize;
1320 D3DKMT_PTR(D3DDDI_ALLOCATIONLIST*, pNewAllocationList);
1322 UINT NewAllocationListSize;
1324 D3DKMT_PTR(D3DDDI_PATCHLOCATIONLIST*, pNewPatchLocationList);
1325 UINT NewPatchLocationListSize;
1327 D3DKMT_RENDERFLAGS
Flags;
1328 D3DKMT_ALIGN64
ULONGLONG PresentHistoryToken;
1329 ULONG BroadcastContextCount;
1331 D3DKMT_HANDLE BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
1333 ULONG QueuedBufferCount;
1334 D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS NewCommandBuffer;
1335 D3DKMT_PTR(
VOID*, pPrivateDriverData);
1336 UINT PrivateDriverDataSize;
1340typedef enum _D3DKMT_STANDARDALLOCATIONTYPE
1342 D3DKMT_STANDARDALLOCATIONTYPE_EXISTINGHEAP = 1,
1343 D3DKMT_STANDARDALLOCATIONTYPE_INTERNALBACKINGSTORE = 2,
1344 D3DKMT_STANDARDALLOCATIONTYPE_MAX,
1345} D3DKMT_STANDARDALLOCATIONTYPE;
1347typedef struct _D3DKMT_STANDARDALLOCATION_EXISTINGHEAP
1349 D3DKMT_ALIGN64 D3DKMT_SIZE_T
Size;
1350} D3DKMT_STANDARDALLOCATION_EXISTINGHEAP;
1352typedef struct _D3DKMT_CREATESTANDARDALLOCATIONFLAGS
1362} D3DKMT_CREATESTANDARDALLOCATIONFLAGS;
1364typedef struct _D3DKMT_CREATESTANDARDALLOCATION
1370 D3DKMT_STANDARDALLOCATIONTYPE
Type;
1373 D3DKMT_STANDARDALLOCATION_EXISTINGHEAP ExistingHeapData;
1375 D3DKMT_CREATESTANDARDALLOCATIONFLAGS
Flags;
1376} D3DKMT_CREATESTANDARDALLOCATION;
1378typedef struct _D3DKMT_CREATEALLOCATIONFLAGS
1380 UINT CreateResource : 1;
1381 UINT CreateShared : 1;
1383 UINT CreateProtected : 1;
1384 UINT RestrictSharedAccess : 1;
1385 UINT ExistingSysMem : 1;
1386#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
1387 UINT NtSecuritySharing : 1;
1389 UINT CreateWriteCombined : 1;
1390 UINT CreateCached : 1;
1391 UINT SwapChainBackBuffer : 1;
1392#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
1393 UINT CrossAdapter : 1;
1394 UINT OpenCrossAdapter : 1;
1395 UINT PartialSharedCreation : 1;
1397 UINT WriteWatch : 1;
1398#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
1399 UINT StandardAllocation : 1;
1400 UINT ExistingSection : 1;
1401#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
1402 UINT AllowNotZeroed : 1;
1403#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
1404 UINT PhysicallyContiguous : 1;
1405 UINT NoKmdAccess : 1;
1406#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
1407 UINT SharedDisplayable : 1;
1427} D3DKMT_CREATEALLOCATIONFLAGS;
1429typedef struct _D3DKMT_CREATEALLOCATION
1431 D3DKMT_HANDLE hDevice;
1432 D3DKMT_HANDLE hResource;
1433 D3DKMT_HANDLE hGlobalShare;
1436 UINT PrivateRuntimeDataSize;
1443 D3DKMT_CREATESTANDARDALLOCATION* pStandardAllocation;
1446 D3DKMT_PTR_HELPER( AlignUnionTo64_1)
1448 UINT PrivateDriverDataSize;
1449 UINT NumAllocations;
1452 _Field_size_(NumAllocations) D3DDDI_ALLOCATIONINFO* pAllocationInfo;
1453#if ((DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN7) || \
1454 (D3D_UMD_INTERFACE_VERSION >= D3D_UMD_INTERFACE_VERSION_WIN7))
1455 _Field_size_(NumAllocations) D3DDDI_ALLOCATIONINFO2* pAllocationInfo2;
1457 D3DKMT_PTR_HELPER( AlignUnionTo64_2)
1459 D3DKMT_CREATEALLOCATIONFLAGS
Flags;
1460 D3DKMT_PTR(
HANDLE, hPrivateRuntimeResourceHandle);
1461} D3DKMT_CREATEALLOCATION;
1463typedef struct _D3DKMT_OPENRESOURCE
1465 D3DKMT_HANDLE hDevice;
1466 D3DKMT_HANDLE hGlobalShare;
1467 UINT NumAllocations;
1469 _Field_size_(NumAllocations) D3DDDI_OPENALLOCATIONINFO* pOpenAllocationInfo;
1470#if ((DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN7) || \
1471 (D3D_UMD_INTERFACE_VERSION >= D3D_UMD_INTERFACE_VERSION_WIN7))
1472 _Field_size_(NumAllocations) D3DDDI_OPENALLOCATIONINFO2* pOpenAllocationInfo2;
1474 D3DKMT_PTR_HELPER(AlignUnionTo64)
1477 UINT PrivateRuntimeDataSize;
1479 UINT ResourcePrivateDriverDataSize;
1481 UINT TotalPrivateDriverDataBufferSize;
1482 D3DKMT_HANDLE hResource;
1483}D3DKMT_OPENRESOURCE;
1485#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
1486typedef struct _D3DKMT_OPENRESOURCEFROMNTHANDLE
1488 D3DKMT_HANDLE hDevice;
1489 D3DKMT_PTR(
HANDLE, hNtHandle);
1490 UINT NumAllocations;
1491 D3DKMT_PTR(
_Field_size_(NumAllocations) D3DDDI_OPENALLOCATIONINFO2*, pOpenAllocationInfo2);
1492 UINT PrivateRuntimeDataSize;
1494 UINT ResourcePrivateDriverDataSize;
1496 UINT TotalPrivateDriverDataBufferSize;
1498 D3DKMT_HANDLE hResource;
1500 D3DKMT_HANDLE hKeyedMutex;
1504 UINT KeyedMutexPrivateRuntimeDataSize;
1505 D3DKMT_HANDLE hSyncObject;
1506} D3DKMT_OPENRESOURCEFROMNTHANDLE;
1508typedef struct _D3DKMT_OPENSYNCOBJECTFROMNTHANDLE
1510 D3DKMT_PTR(
HANDLE, hNtHandle);
1511 D3DKMT_HANDLE hSyncObject;
1512} D3DKMT_OPENSYNCOBJECTFROMNTHANDLE;
1514#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
1516typedef struct _D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2
1518 D3DKMT_PTR(
HANDLE, hNtHandle);
1519 D3DKMT_HANDLE hDevice;
1520 D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS
Flags;
1521 D3DKMT_HANDLE hSyncObject;
1528 D3DKMT_PTR(
VOID*, FenceValueCPUVirtualAddress);
1529 D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
1530 UINT EngineAffinity;
1536} D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2;
1538typedef struct _D3DKMT_OPENSYNCOBJECTNTHANDLEFROMNAME
1540 DWORD dwDesiredAccess;
1542 D3DKMT_PTR(
HANDLE, hNtHandle);
1543} D3DKMT_OPENSYNCOBJECTNTHANDLEFROMNAME;
1547typedef struct _D3DKMT_OPENNTHANDLEFROMNAME
1549 DWORD dwDesiredAccess;
1551 D3DKMT_PTR(
HANDLE, hNtHandle);
1552} D3DKMT_OPENNTHANDLEFROMNAME;
1554#define SHARED_ALLOCATION_WRITE 0x1
1555#define SHARED_ALLOCATION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SHARED_ALLOCATION_WRITE)
1557typedef struct _D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE
1559 D3DKMT_HANDLE hDevice;
1560 D3DKMT_PTR(
HANDLE, hNtHandle);
1561 D3DKMT_PTR(
VOID*, pPrivateRuntimeData);
1562 UINT PrivateRuntimeDataSize;
1563 UINT TotalPrivateDriverDataSize;
1564 UINT ResourcePrivateDriverDataSize;
1565 UINT NumAllocations;
1566}D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE;
1570typedef struct _D3DKMT_QUERYRESOURCEINFO
1572 D3DKMT_HANDLE hDevice;
1573 D3DKMT_HANDLE hGlobalShare;
1574 D3DKMT_PTR(
VOID*, pPrivateRuntimeData);
1575 UINT PrivateRuntimeDataSize;
1576 UINT TotalPrivateDriverDataSize;
1577 UINT ResourcePrivateDriverDataSize;
1578 UINT NumAllocations;
1579}D3DKMT_QUERYRESOURCEINFO;
1581typedef struct _D3DKMT_DESTROYALLOCATION
1583 D3DKMT_HANDLE hDevice;
1584 D3DKMT_HANDLE hResource;
1585 D3DKMT_PTR(
CONST D3DKMT_HANDLE*, phAllocationList);
1586 UINT AllocationCount;
1587} D3DKMT_DESTROYALLOCATION;
1589#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
1591typedef struct _D3DKMT_DESTROYALLOCATION2
1593 D3DKMT_HANDLE hDevice;
1594 D3DKMT_HANDLE hResource;
1595 D3DKMT_PTR(
CONST D3DKMT_HANDLE*, phAllocationList);
1596 UINT AllocationCount;
1597 D3DDDICB_DESTROYALLOCATION2FLAGS
Flags;
1598} D3DKMT_DESTROYALLOCATION2;
1602typedef struct _D3DKMT_SETALLOCATIONPRIORITY
1604 D3DKMT_HANDLE hDevice;
1605 D3DKMT_HANDLE hResource;
1606 D3DKMT_PTR(
CONST D3DKMT_HANDLE*, phAllocationList);
1607 UINT AllocationCount;
1609} D3DKMT_SETALLOCATIONPRIORITY;
1611typedef enum _D3DKMT_ALLOCATIONRESIDENCYSTATUS
1613 D3DKMT_ALLOCATIONRESIDENCYSTATUS_RESIDENTINGPUMEMORY=1,
1614 D3DKMT_ALLOCATIONRESIDENCYSTATUS_RESIDENTINSHAREDMEMORY=2,
1615 D3DKMT_ALLOCATIONRESIDENCYSTATUS_NOTRESIDENT=3,
1616} D3DKMT_ALLOCATIONRESIDENCYSTATUS;
1618typedef struct _D3DKMT_QUERYALLOCATIONRESIDENCY
1620 D3DKMT_HANDLE hDevice;
1621 D3DKMT_HANDLE hResource;
1622 D3DKMT_PTR(
CONST D3DKMT_HANDLE*, phAllocationList);
1623 UINT AllocationCount;
1624 D3DKMT_PTR(D3DKMT_ALLOCATIONRESIDENCYSTATUS*, pResidencyStatus);
1625} D3DKMT_QUERYALLOCATIONRESIDENCY;
1627typedef struct _D3DKMT_GETRUNTIMEDATA
1629 D3DKMT_HANDLE hAdapter;
1630 D3DKMT_HANDLE hGlobalShare;
1631 D3DKMT_PTR(
VOID*, pRuntimeData);
1632 UINT RuntimeDataSize;
1633} D3DKMT_GETRUNTIMEDATA;
1635typedef enum _KMTUMDVERSION
1637 KMTUMDVERSION_DX9 = 0,
1644typedef struct _D3DKMT_UMDFILENAMEINFO
1648} D3DKMT_UMDFILENAMEINFO;
1650#define D3DKMT_COMPONENTIZED_INDICATOR L'#'
1651#define D3DKMT_SUBKEY_DX9 L"DX9"
1652#define D3DKMT_SUBKEY_OPENGL L"OpenGL"
1654typedef struct _D3DKMT_OPENGLINFO
1661typedef struct _D3DKMT_SEGMENTSIZEINFO
1663 D3DKMT_ALIGN64
ULONGLONG DedicatedVideoMemorySize;
1664 D3DKMT_ALIGN64
ULONGLONG DedicatedSystemMemorySize;
1665 D3DKMT_ALIGN64
ULONGLONG SharedSystemMemorySize;
1666} D3DKMT_SEGMENTSIZEINFO;
1668typedef struct _D3DKMT_SEGMENTGROUPSIZEINFO
1670 UINT32 PhysicalAdapterIndex;
1671 D3DKMT_SEGMENTSIZEINFO LegacyInfo;
1673 D3DKMT_ALIGN64
ULONGLONG NonLocalMemory;
1674 D3DKMT_ALIGN64
ULONGLONG NonBudgetMemory;
1675} D3DKMT_SEGMENTGROUPSIZEINFO;
1677typedef struct _D3DKMT_WORKINGSETFLAGS
1679 UINT UseDefault : 1;
1681} D3DKMT_WORKINGSETFLAGS;
1683typedef struct _D3DKMT_WORKINGSETINFO
1685 D3DKMT_WORKINGSETFLAGS
Flags;
1686 ULONG MinimumWorkingSetPercentile;
1687 ULONG MaximumWorkingSetPercentile;
1688} D3DKMT_WORKINGSETINFO;
1690typedef struct _D3DKMT_FLIPINFOFLAGS
1692 UINT FlipInterval : 1;
1694} D3DKMT_FLIPINFOFLAGS;
1696typedef struct _D3DKMT_FLIPQUEUEINFO
1698 UINT MaxHardwareFlipQueueLength;
1699 UINT MaxSoftwareFlipQueueLength;
1700 D3DKMT_FLIPINFOFLAGS FlipFlags;
1701} D3DKMT_FLIPQUEUEINFO;
1703typedef struct _D3DKMT_ADAPTERADDRESS
1707 UINT FunctionNumber;
1708} D3DKMT_ADAPTERADDRESS;
1710typedef struct _D3DKMT_ADAPTERREGISTRYINFO
1716} D3DKMT_ADAPTERREGISTRYINFO;
1718typedef struct _D3DKMT_CURRENTDISPLAYMODE
1720 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
1722} D3DKMT_CURRENTDISPLAYMODE;
1724typedef struct _D3DKMT_VIRTUALADDRESSFLAGS
1726 UINT VirtualAddressSupported : 1;
1728} D3DKMT_VIRTUALADDRESSFLAGS;
1730typedef struct _D3DKMT_VIRTUALADDRESSINFO
1732 D3DKMT_VIRTUALADDRESSFLAGS VirtualAddressFlags;
1733} D3DKMT_VIRTUALADDRESSINFO;
1735typedef enum _QAI_DRIVERVERSION
1737 KMT_DRIVERVERSION_WDDM_1_0 = 1000,
1738 KMT_DRIVERVERSION_WDDM_1_1_PRERELEASE = 1102,
1739 KMT_DRIVERVERSION_WDDM_1_1 = 1105,
1740#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
1741 KMT_DRIVERVERSION_WDDM_1_2 = 1200,
1743#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
1744 KMT_DRIVERVERSION_WDDM_1_3 = 1300,
1746#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
1747 KMT_DRIVERVERSION_WDDM_2_0 = 2000,
1749#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
1750 KMT_DRIVERVERSION_WDDM_2_1 = 2100,
1752#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
1753 KMT_DRIVERVERSION_WDDM_2_2 = 2200,
1755#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
1756 KMT_DRIVERVERSION_WDDM_2_3 = 2300,
1758#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
1759 KMT_DRIVERVERSION_WDDM_2_4 = 2400,
1761#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_5)
1762 KMT_DRIVERVERSION_WDDM_2_5 = 2500,
1764#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
1765 KMT_DRIVERVERSION_WDDM_2_6 = 2600,
1767#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
1768 KMT_DRIVERVERSION_WDDM_2_7 = 2700,
1770#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_8)
1771 KMT_DRIVERVERSION_WDDM_2_8 = 2800,
1773#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
1774 KMT_DRIVERVERSION_WDDM_2_9 = 2900,
1776#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
1777 KMT_DRIVERVERSION_WDDM_3_0 = 3000
1779} D3DKMT_DRIVERVERSION;
1781#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
1782typedef struct _D3DKMT_ADAPTERTYPE
1788 UINT RenderSupported : 1;
1789 UINT DisplaySupported : 1;
1790 UINT SoftwareDevice : 1;
1791 UINT PostDevice : 1;
1792#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
1793 UINT HybridDiscrete : 1;
1794 UINT HybridIntegrated : 1;
1795 UINT IndirectDisplayDevice : 1;
1796#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
1797 UINT Paravirtualized : 1;
1798 UINT ACGSupported : 1;
1799 UINT SupportSetTimingsFromVidPn : 1;
1800 UINT Detachable : 1;
1801#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
1802 UINT ComputeOnly : 1;
1804#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
1805 UINT RuntimePowerManagement : 1;
1822} D3DKMT_ADAPTERTYPE;
1824typedef struct _D3DKMT_OUTPUTDUPLCONTEXTSCOUNT
1826 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
1827 UINT OutputDuplicationCount;
1828} D3DKMT_OUTPUTDUPLCONTEXTSCOUNT;
1830typedef struct _D3DKMT_UMD_DRIVER_VERSION
1833} D3DKMT_UMD_DRIVER_VERSION;
1835typedef struct _D3DKMT_KMD_DRIVER_VERSION
1838} D3DKMT_KMD_DRIVER_VERSION;
1840typedef struct _D3DKMT_DIRECTFLIP_SUPPORT
1843} D3DKMT_DIRECTFLIP_SUPPORT;
1845typedef struct _D3DKMT_MULTIPLANEOVERLAY_SUPPORT
1848} D3DKMT_MULTIPLANEOVERLAY_SUPPORT;
1851#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION)
1852typedef struct _D3DKMT_MULTIPLANEOVERLAY_HUD_SUPPORT
1856 BOOL KernelSupported;
1858} D3DKMT_MULTIPLANEOVERLAY_HUD_SUPPORT;
1861#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
1863typedef struct _D3DKMT_DLIST_DRIVER_NAME
1866} D3DKMT_DLIST_DRIVER_NAME;
1868typedef struct _D3DKMT_CPDRIVERNAME
1871} D3DKMT_CPDRIVERNAME;
1873typedef struct _D3DKMT_MIRACASTCOMPANIONDRIVERNAME
1876} D3DKMT_MIRACASTCOMPANIONDRIVERNAME;
1880#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
1882typedef struct _D3DKMT_XBOX
1887typedef struct _D3DKMT_INDEPENDENTFLIP_SUPPORT
1890} D3DKMT_INDEPENDENTFLIP_SUPPORT;
1892typedef struct _D3DKMT_MULTIPLANEOVERLAY_DECODE_SUPPORT
1895} D3DKMT_MULTIPLANEOVERLAY_DECODE_SUPPORT;
1897typedef struct _D3DKMT_ISBADDRIVERFORHWPROTECTIONDISABLED
1900} D3DKMT_ISBADDRIVERFORHWPROTECTIONDISABLED;
1902typedef struct _D3DKMT_MULTIPLANEOVERLAY_SECONDARY_SUPPORT
1905} D3DKMT_MULTIPLANEOVERLAY_SECONDARY_SUPPORT;
1907typedef struct _D3DKMT_INDEPENDENTFLIP_SECONDARY_SUPPORT
1910} D3DKMT_INDEPENDENTFLIP_SECONDARY_SUPPORT;
1912typedef struct _D3DKMT_PANELFITTER_SUPPORT
1915} D3DKMT_PANELFITTER_SUPPORT;
1917typedef struct _D3DKMT_PHYSICAL_ADAPTER_COUNT
1920} D3DKMT_PHYSICAL_ADAPTER_COUNT;
1922typedef struct _D3DKMT_DEVICE_IDS
1932typedef struct _D3DKMT_QUERY_DEVICE_IDS
1934 UINT PhysicalAdapterIndex;
1935 D3DKMT_DEVICE_IDS DeviceIds;
1936} D3DKMT_QUERY_DEVICE_IDS;
1938typedef enum _D3DKMT_PNP_KEY_TYPE
1940 D3DKMT_PNP_KEY_HARDWARE = 1,
1941 D3DKMT_PNP_KEY_SOFTWARE = 2
1942} D3DKMT_PNP_KEY_TYPE;
1944typedef struct _D3DKMT_QUERY_PHYSICAL_ADAPTER_PNP_KEY
1946 UINT PhysicalAdapterIndex;
1947 D3DKMT_PNP_KEY_TYPE PnPKeyType;
1949 D3DKMT_PTR(
UINT*, pCchDest);
1950} D3DKMT_QUERY_PHYSICAL_ADAPTER_PNP_KEY;
1952typedef enum _D3DKMT_MIRACAST_DRIVER_TYPE
1954 D3DKMT_MIRACAST_DRIVER_NOT_SUPPORTED = 0,
1955 D3DKMT_MIRACAST_DRIVER_IHV = 1,
1956 D3DKMT_MIRACAST_DRIVER_MS = 2,
1957} D3DKMT_MIRACAST_DRIVER_TYPE;
1959typedef struct _D3DKMT_QUERY_MIRACAST_DRIVER_TYPE
1961 D3DKMT_MIRACAST_DRIVER_TYPE MiracastDriverType;
1962} D3DKMT_QUERY_MIRACAST_DRIVER_TYPE;
1964typedef struct _D3DKMT_GPUMMU_CAPS
1970 UINT ReadOnlyMemorySupported : 1;
1971 UINT NoExecuteMemorySupported : 1;
1972 UINT CacheCoherentMemorySupported : 1;
1977 UINT VirtualAddressBitCount;
1978} D3DKMT_GPUMMU_CAPS;
1980typedef struct _D3DKMT_QUERY_GPUMMU_CAPS
1982 UINT PhysicalAdapterIndex;
1983 D3DKMT_GPUMMU_CAPS Caps;
1984} D3DKMT_QUERY_GPUMMU_CAPS;
1988#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
1990typedef struct _D3DKMT_MPO3DDI_SUPPORT
1993} D3DKMT_MPO3DDI_SUPPORT;
1995typedef struct _D3DKMT_HWDRM_SUPPORT
1998} D3DKMT_HWDRM_SUPPORT;
2000typedef struct _D3DKMT_MPOKERNELCAPS_SUPPORT
2003} D3DKMT_MPOKERNELCAPS_SUPPORT;
2005typedef struct _D3DKMT_GET_DEVICE_VIDPN_OWNERSHIP_INFO
2007 D3DKMT_HANDLE hDevice;
2008 BOOLEAN bFailedDwmAcquireVidPn;
2009} D3DKMT_GET_DEVICE_VIDPN_OWNERSHIP_INFO;
2013#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
2015typedef struct _D3DKMT_BLOCKLIST_INFO
2019} D3DKMT_BLOCKLIST_INFO;
2021typedef struct _D3DKMT_QUERY_ADAPTER_UNIQUE_GUID
2023 WCHAR AdapterUniqueGUID[40];
2024} D3DKMT_QUERY_ADAPTER_UNIQUE_GUID;
2026typedef struct _D3DKMT_NODE_PERFDATA
2029 UINT32 PhysicalAdapterIndex;
2032 D3DKMT_ALIGN64
ULONGLONG MaxFrequencyOC;
2036#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_5)
2037 D3DKMT_ALIGN64
ULONGLONG MaxTransitionLatency;
2041} D3DKMT_NODE_PERFDATA;
2043typedef struct _D3DKMT_ADAPTER_PERFDATA
2045 UINT32 PhysicalAdapterIndex;
2046 D3DKMT_ALIGN64
ULONGLONG MemoryFrequency;
2047 D3DKMT_ALIGN64
ULONGLONG MaxMemoryFrequency;
2048 D3DKMT_ALIGN64
ULONGLONG MaxMemoryFrequencyOC;
2049 D3DKMT_ALIGN64
ULONGLONG MemoryBandwidth;
2054 UCHAR PowerStateOverride;
2055} D3DKMT_ADAPTER_PERFDATA;
2057typedef struct _D3DKMT_ADAPTER_PERFDATACAPS
2059 UINT32 PhysicalAdapterIndex;
2060 D3DKMT_ALIGN64
ULONGLONG MaxMemoryBandwidth;
2061 D3DKMT_ALIGN64
ULONGLONG MaxPCIEBandwidth;
2063 ULONG TemperatureMax;
2064 ULONG TemperatureWarning;
2065} D3DKMT_ADAPTER_PERFDATACAPS;
2067#define DXGK_MAX_GPUVERSION_NAME_LENGTH 32
2068typedef struct _D3DKMT_GPUVERSION
2070 UINT32 PhysicalAdapterIndex;
2072 WCHAR GpuArchitecture[DXGK_MAX_GPUVERSION_NAME_LENGTH];
2077#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
2079typedef struct _D3DKMT_DRIVER_DESCRIPTION
2081 WCHAR DriverDescription[4096];
2082} D3DKMT_DRIVER_DESCRIPTION;
2084typedef struct _D3DKMT_QUERY_SCANOUT_CAPS
2086 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
2088} D3DKMT_QUERY_SCANOUT_CAPS;
2090typedef enum _KMT_DISPLAY_UMD_VERSION
2092 KMT_DISPLAY_UMDVERSION_1 = 0,
2093 NUM_KMT_DISPLAY_UMDVERSIONS
2094} KMT_DISPLAY_UMD_VERSION;
2096typedef struct _D3DKMT_DISPLAY_UMD_FILENAMEINFO
2098 KMT_DISPLAY_UMD_VERSION
Version;
2100} D3DKMT_DISPLAY_UMD_FILENAMEINFO;
2102typedef struct _D3DKMT_PARAVIRTUALIZATION
2108} D3DKMT_PARAVIRTUALIZATION;
2112#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_8)
2114typedef struct _D3DKMT_HYBRID_DLIST_DLL_SUPPORT
2117} D3DKMT_HYBRID_DLIST_DLL_SUPPORT;
2121#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
2124typedef enum _D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER
2126 D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER_NONE = 0,
2127 D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER_COPY = 1,
2128 D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER_TEXTURE = 2,
2129 D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER_SCANOUT = 3,
2130} D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER;
2132typedef struct _D3DKMT_CROSSADAPTERRESOURCE_SUPPORT
2134 D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER SupportTier;
2135} D3DKMT_CROSSADAPTERRESOURCE_SUPPORT;
2139typedef enum _KMTQUERYADAPTERINFOTYPE
2141 KMTQAITYPE_UMDRIVERPRIVATE = 0,
2142 KMTQAITYPE_UMDRIVERNAME = 1,
2143 KMTQAITYPE_UMOPENGLINFO = 2,
2144 KMTQAITYPE_GETSEGMENTSIZE = 3,
2145 KMTQAITYPE_ADAPTERGUID = 4,
2146 KMTQAITYPE_FLIPQUEUEINFO = 5,
2147 KMTQAITYPE_ADAPTERADDRESS = 6,
2148 KMTQAITYPE_SETWORKINGSETINFO = 7,
2149 KMTQAITYPE_ADAPTERREGISTRYINFO = 8,
2150 KMTQAITYPE_CURRENTDISPLAYMODE = 9,
2151 KMTQAITYPE_MODELIST = 10,
2152 KMTQAITYPE_CHECKDRIVERUPDATESTATUS = 11,
2153 KMTQAITYPE_VIRTUALADDRESSINFO = 12,
2154 KMTQAITYPE_DRIVERVERSION = 13,
2155#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
2156 KMTQAITYPE_ADAPTERTYPE = 15,
2157 KMTQAITYPE_OUTPUTDUPLCONTEXTSCOUNT = 16,
2158 KMTQAITYPE_WDDM_1_2_CAPS = 17,
2159 KMTQAITYPE_UMD_DRIVER_VERSION = 18,
2160 KMTQAITYPE_DIRECTFLIP_SUPPORT = 19,
2162#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
2163 KMTQAITYPE_MULTIPLANEOVERLAY_SUPPORT = 20,
2164 KMTQAITYPE_DLIST_DRIVER_NAME = 21,
2165 KMTQAITYPE_WDDM_1_3_CAPS = 22,
2167#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION)
2168 KMTQAITYPE_MULTIPLANEOVERLAY_HUD_SUPPORT = 23,
2170#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
2171 KMTQAITYPE_WDDM_2_0_CAPS = 24,
2172 KMTQAITYPE_NODEMETADATA = 25,
2173 KMTQAITYPE_CPDRIVERNAME = 26,
2174 KMTQAITYPE_XBOX = 27,
2175 KMTQAITYPE_INDEPENDENTFLIP_SUPPORT = 28,
2176 KMTQAITYPE_MIRACASTCOMPANIONDRIVERNAME = 29,
2177 KMTQAITYPE_PHYSICALADAPTERCOUNT = 30,
2178 KMTQAITYPE_PHYSICALADAPTERDEVICEIDS = 31,
2179 KMTQAITYPE_DRIVERCAPS_EXT = 32,
2180 KMTQAITYPE_QUERY_MIRACAST_DRIVER_TYPE = 33,
2181 KMTQAITYPE_QUERY_GPUMMU_CAPS = 34,
2182 KMTQAITYPE_QUERY_MULTIPLANEOVERLAY_DECODE_SUPPORT = 35,
2183 KMTQAITYPE_QUERY_HW_PROTECTION_TEARDOWN_COUNT = 36,
2184 KMTQAITYPE_QUERY_ISBADDRIVERFORHWPROTECTIONDISABLED = 37,
2185 KMTQAITYPE_MULTIPLANEOVERLAY_SECONDARY_SUPPORT = 38,
2186 KMTQAITYPE_INDEPENDENTFLIP_SECONDARY_SUPPORT = 39,
2188#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
2189 KMTQAITYPE_PANELFITTER_SUPPORT = 40,
2191#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
2192 KMTQAITYPE_PHYSICALADAPTERPNPKEY = 41,
2193 KMTQAITYPE_GETSEGMENTGROUPSIZE = 42,
2194 KMTQAITYPE_MPO3DDI_SUPPORT = 43,
2195 KMTQAITYPE_HWDRM_SUPPORT = 44,
2196 KMTQAITYPE_MPOKERNELCAPS_SUPPORT = 45,
2197 KMTQAITYPE_MULTIPLANEOVERLAY_STRETCH_SUPPORT = 46,
2198 KMTQAITYPE_GET_DEVICE_VIDPN_OWNERSHIP_INFO = 47,
2200#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
2201 KMTQAITYPE_QUERYREGISTRY = 48,
2202 KMTQAITYPE_KMD_DRIVER_VERSION = 49,
2203 KMTQAITYPE_BLOCKLIST_KERNEL = 50,
2204 KMTQAITYPE_BLOCKLIST_RUNTIME = 51,
2205 KMTQAITYPE_ADAPTERGUID_RENDER = 52,
2206 KMTQAITYPE_ADAPTERADDRESS_RENDER = 53,
2207 KMTQAITYPE_ADAPTERREGISTRYINFO_RENDER = 54,
2208 KMTQAITYPE_CHECKDRIVERUPDATESTATUS_RENDER = 55,
2209 KMTQAITYPE_DRIVERVERSION_RENDER = 56,
2210 KMTQAITYPE_ADAPTERTYPE_RENDER = 57,
2211 KMTQAITYPE_WDDM_1_2_CAPS_RENDER = 58,
2212 KMTQAITYPE_WDDM_1_3_CAPS_RENDER = 59,
2213 KMTQAITYPE_QUERY_ADAPTER_UNIQUE_GUID = 60,
2214 KMTQAITYPE_NODEPERFDATA = 61,
2215 KMTQAITYPE_ADAPTERPERFDATA = 62,
2216 KMTQAITYPE_ADAPTERPERFDATA_CAPS = 63,
2217 KMTQUITYPE_GPUVERSION = 64,
2219#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
2220 KMTQAITYPE_DRIVER_DESCRIPTION = 65,
2221 KMTQAITYPE_DRIVER_DESCRIPTION_RENDER = 66,
2222 KMTQAITYPE_SCANOUT_CAPS = 67,
2223 KMTQAITYPE_DISPLAY_UMDRIVERNAME = 71,
2224 KMTQAITYPE_PARAVIRTUALIZATION_RENDER = 68,
2226#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
2227 KMTQAITYPE_SERVICENAME = 69,
2228 KMTQAITYPE_WDDM_2_7_CAPS = 70,
2229 KMTQAITYPE_TRACKEDWORKLOAD_SUPPORT = 72,
2231#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_8)
2232 KMTQAITYPE_HYBRID_DLIST_DLL_SUPPORT = 73,
2233 KMTQAITYPE_DISPLAY_CAPS = 74,
2235#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
2236 KMTQAITYPE_WDDM_2_9_CAPS = 75,
2237 KMTQAITYPE_CROSSADAPTERRESOURCE_SUPPORT = 76,
2239#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
2240 KMTQAITYPE_WDDM_3_0_CAPS = 77,
2244} KMTQUERYADAPTERINFOTYPE;
2246typedef struct _D3DKMT_QUERYADAPTERINFO
2248 D3DKMT_HANDLE hAdapter;
2249 KMTQUERYADAPTERINFOTYPE
Type;
2250 D3DKMT_PTR(
VOID*, pPrivateDriverData);
2251 UINT PrivateDriverDataSize;
2252} D3DKMT_QUERYADAPTERINFO;
2254typedef struct _D3DKMT_OPENADAPTERFROMHDC
2256 D3DKMT_PTR(
HDC, hDc);
2257 D3DKMT_HANDLE hAdapter;
2259 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
2260} D3DKMT_OPENADAPTERFROMHDC;
2262typedef struct _D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME
2265 D3DKMT_HANDLE hAdapter;
2267 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
2268} D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME;
2270typedef struct _D3DKMT_OPENADAPTERFROMDEVICENAME
2272 D3DKMT_PTR(
PCWSTR, pDeviceName);
2273 D3DKMT_HANDLE hAdapter;
2275} D3DKMT_OPENADAPTERFROMDEVICENAME;
2277#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
2279#define MAX_ENUM_ADAPTERS 16
2281typedef struct _D3DKMT_ADAPTERINFO
2283 D3DKMT_HANDLE hAdapter;
2286 BOOL bPrecisePresentRegionsPreferred;
2287} D3DKMT_ADAPTERINFO;
2289typedef struct _D3DKMT_ENUMADAPTERS
2292 D3DKMT_ADAPTERINFO Adapters[MAX_ENUM_ADAPTERS];
2293} D3DKMT_ENUMADAPTERS;
2295typedef struct _D3DKMT_ENUMADAPTERS2
2298 D3DKMT_PTR(D3DKMT_ADAPTERINFO*, pAdapters);
2299} D3DKMT_ENUMADAPTERS2;
2301typedef struct _D3DKMT_OPENADAPTERFROMLUID
2304 D3DKMT_HANDLE hAdapter;
2305} D3DKMT_OPENADAPTERFROMLUID;
2307typedef struct _D3DKMT_QUERYREMOTEVIDPNSOURCEFROMGDIDISPLAYNAME
2310 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
2311} D3DKMT_QUERYREMOTEVIDPNSOURCEFROMGDIDISPLAYNAME;
2314#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
2315typedef union _D3DKMT_ENUMADAPTERS_FILTER
2328} D3DKMT_ENUMADAPTERS_FILTER;
2330typedef struct _D3DKMT_ENUMADAPTERS3
2332 D3DKMT_ENUMADAPTERS_FILTER
Filter;
2334 D3DKMT_PTR(D3DKMT_ADAPTERINFO*, pAdapters);
2335} D3DKMT_ENUMADAPTERS3;
2338typedef struct _D3DKMT_CLOSEADAPTER
2340 D3DKMT_HANDLE hAdapter;
2341} D3DKMT_CLOSEADAPTER;
2343typedef struct _D3DKMT_GETSHAREDPRIMARYHANDLE
2345 D3DKMT_HANDLE hAdapter;
2346 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
2347 D3DKMT_HANDLE hSharedPrimary;
2348} D3DKMT_GETSHAREDPRIMARYHANDLE;
2350typedef struct _D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION
2353 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
2355} D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION;
2357typedef struct _D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION
2360 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
2361} D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION;
2363#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
2364typedef struct _D3DKMT_PINDIRECTFLIPRESOURCES
2366 D3DKMT_HANDLE hDevice;
2369} D3DKMT_PINDIRECTFLIPRESOURCES;
2371typedef struct _D3DKMT_UNPINDIRECTFLIPRESOURCES
2373 D3DKMT_HANDLE hDevice;
2376} D3DKMT_UNPINDIRECTFLIPRESOURCES;
2379#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
2380typedef union _D3DKMT_PINRESOURCEFLAGS
2384 UINT DirectFlipResources : 1;
2389} D3DKMT_PINRESOURCEFLAGS;
2391typedef struct _D3DKMT_PINRESOURCES
2393 D3DKMT_HANDLE hDevice;
2396 D3DKMT_PINRESOURCEFLAGS
Flags;
2397 D3DKMT_HANDLE hPagingQueue;
2398 D3DKMT_ALIGN64
UINT64 PagingFence;
2399} D3DKMT_PINRESOURCES;
2401typedef struct _D3DKMT_UNPINRESOURCES
2403 D3DKMT_HANDLE hDevice;
2407} D3DKMT_UNPINRESOURCES;
2410typedef enum _D3DKMT_ESCAPETYPE
2412 D3DKMT_ESCAPE_DRIVERPRIVATE = 0,
2413 D3DKMT_ESCAPE_VIDMM = 1,
2414 D3DKMT_ESCAPE_TDRDBGCTRL = 2,
2415 D3DKMT_ESCAPE_VIDSCH = 3,
2416 D3DKMT_ESCAPE_DEVICE = 4,
2417 D3DKMT_ESCAPE_DMM = 5,
2418 D3DKMT_ESCAPE_DEBUG_SNAPSHOT = 6,
2420 D3DKMT_ESCAPE_DRT_TEST = 8,
2421#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
2422 D3DKMT_ESCAPE_DIAGNOSTICS = 9,
2423 D3DKMT_ESCAPE_OUTPUTDUPL_SNAPSHOT = 10,
2424 D3DKMT_ESCAPE_OUTPUTDUPL_DIAGNOSTICS = 11,
2425 D3DKMT_ESCAPE_BDD_PNP = 12,
2426 D3DKMT_ESCAPE_BDD_FALLBACK = 13,
2427 D3DKMT_ESCAPE_ACTIVATE_SPECIFIC_DIAG = 14,
2428 D3DKMT_ESCAPE_MODES_PRUNED_OUT = 15,
2429 D3DKMT_ESCAPE_WHQL_INFO = 16,
2430 D3DKMT_ESCAPE_BRIGHTNESS = 17,
2431 D3DKMT_ESCAPE_EDID_CACHE = 18,
2433#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
2434 D3DKMT_ESCAPE_MIRACAST_DISPLAY_REQUEST = 20,
2435 D3DKMT_ESCAPE_HISTORY_BUFFER_STATUS = 21,
2437 D3DKMT_ESCAPE_MIRACAST_ADAPTER_DIAG_INFO = 23,
2438#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
2439 D3DKMT_ESCAPE_FORCE_BDDFALLBACK_HEADLESS = 24,
2440 D3DKMT_ESCAPE_REQUEST_MACHINE_CRASH = 25,
2442 D3DKMT_ESCAPE_SOFTGPU_ENABLE_DISABLE_HMD = 27,
2443 D3DKMT_ESCAPE_PROCESS_VERIFIER_OPTION = 28,
2444 D3DKMT_ESCAPE_ADAPTER_VERIFIER_OPTION = 29,
2445#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
2446 D3DKMT_ESCAPE_IDD_REQUEST = 30,
2447 D3DKMT_ESCAPE_DOD_SET_DIRTYRECT_MODE = 31,
2448 D3DKMT_ESCAPE_LOG_CODEPOINT_PACKET = 32,
2449#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
2450 D3DKMT_ESCAPE_LOG_USERMODE_DAIG_PACKET = 33,
2451 D3DKMT_ESCAPE_GET_EXTERNAL_DIAGNOSTICS = 34,
2453#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
2454 D3DKMT_ESCAPE_GET_DISPLAY_CONFIGURATIONS = 36,
2455#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
2456 D3DKMT_ESCAPE_QUERY_IOMMU_STATUS = 37,
2457#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
2458 D3DKMT_ESCAPE_CCD_DATABASE = 38,
2459#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
2460 D3DKMT_ESCAPE_QUERY_DMA_REMAPPING_STATUS = 39,
2470 D3DKMT_ESCAPE_WIN32K_START = 1024,
2471 D3DKMT_ESCAPE_WIN32K_HIP_DEVICE_INFO = 1024,
2472 D3DKMT_ESCAPE_WIN32K_QUERY_CD_ROTATION_BLOCK = 1025,
2473#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
2474 D3DKMT_ESCAPE_WIN32K_DPI_INFO = 1026,
2475 D3DKMT_ESCAPE_WIN32K_PRESENTER_VIEW_INFO = 1027,
2476 D3DKMT_ESCAPE_WIN32K_SYSTEM_DPI = 1028,
2477#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
2478 D3DKMT_ESCAPE_WIN32K_BDD_FALLBACK = 1029,
2479 D3DKMT_ESCAPE_WIN32K_DDA_TEST_CTL = 1030,
2480 D3DKMT_ESCAPE_WIN32K_USER_DETECTED_BLACK_SCREEN = 1031,
2484#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_5)
2485 D3DKMT_ESCAPE_WIN32K_DISPBROKER_TEST = 1035,
2486#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
2487 D3DKMT_ESCAPE_WIN32K_COLOR_PROFILE_INFO = 1036,
2488#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
2489 D3DKMT_ESCAPE_WIN32K_SET_DIMMED_STATE = 1037,
2490 D3DKMT_ESCAPE_WIN32K_SPECIALIZED_DISPLAY_TEST = 1038,
2499typedef struct _D3DKMT_DOD_SET_DIRTYRECT_MODE
2501 BOOL bForceFullScreenDirty;
2502}D3DKMT_DOD_SET_DIRTYRECT_MODE;
2504typedef enum _D3DKMT_TDRDBGCTRLTYPE
2506 D3DKMT_TDRDBGCTRLTYPE_FORCETDR = 0,
2507 D3DKMT_TDRDBGCTRLTYPE_DISABLEBREAK = 1,
2508 D3DKMT_TDRDBGCTRLTYPE_ENABLEBREAK = 2,
2509 D3DKMT_TDRDBGCTRLTYPE_UNCONDITIONAL = 3,
2510 D3DKMT_TDRDBGCTRLTYPE_VSYNCTDR = 4,
2511 D3DKMT_TDRDBGCTRLTYPE_GPUTDR = 5,
2512#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
2513 D3DKMT_TDRDBGCTRLTYPE_FORCEDODTDR = 6,
2514 D3DKMT_TDRDBGCTRLTYPE_FORCEDODVSYNCTDR = 7,
2515 D3DKMT_TDRDBGCTRLTYPE_ENGINETDR = 8,
2517} D3DKMT_TDRDBGCTRLTYPE;
2519typedef enum _D3DKMT_VIDMMESCAPETYPE
2521 D3DKMT_VIDMMESCAPETYPE_SETFAULT = 0,
2522 D3DKMT_VIDMMESCAPETYPE_RUN_COHERENCY_TEST = 1,
2523 D3DKMT_VIDMMESCAPETYPE_RUN_UNMAP_TO_DUMMY_PAGE_TEST = 2,
2524 D3DKMT_VIDMMESCAPETYPE_APERTURE_CORRUPTION_CHECK = 3,
2525 D3DKMT_VIDMMESCAPETYPE_SUSPEND_CPU_ACCESS_TEST = 4,
2526 D3DKMT_VIDMMESCAPETYPE_EVICT = 5,
2527 D3DKMT_VIDMMESCAPETYPE_EVICT_BY_NT_HANDLE = 6,
2528 D3DKMT_VIDMMESCAPETYPE_GET_VAD_INFO = 7,
2529 D3DKMT_VIDMMESCAPETYPE_SET_BUDGET = 8,
2530 D3DKMT_VIDMMESCAPETYPE_SUSPEND_PROCESS = 9,
2531 D3DKMT_VIDMMESCAPETYPE_RESUME_PROCESS = 10,
2532 D3DKMT_VIDMMESCAPETYPE_GET_BUDGET = 11,
2533 D3DKMT_VIDMMESCAPETYPE_SET_TRIM_INTERVALS = 12,
2534 D3DKMT_VIDMMESCAPETYPE_EVICT_BY_CRITERIA = 13,
2535 D3DKMT_VIDMMESCAPETYPE_WAKE = 14,
2536 D3DKMT_VIDMMESCAPETYPE_DEFRAG = 15,
2537 D3DKMT_VIDMMESCAPETYPE_DELAYEXECUTION = 16,
2538#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
2539 D3DKMT_VIDMMESCAPETYPE_VALIDATE_INTEGRITY = 17,
2540#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
2541 D3DKMT_VIDMMESCAPETYPE_SET_EVICTION_CONFIG = 18,
2544} D3DKMT_VIDMMESCAPETYPE;
2546typedef enum _D3DKMT_VIDSCHESCAPETYPE
2548 D3DKMT_VIDSCHESCAPETYPE_PREEMPTIONCONTROL = 0,
2549 D3DKMT_VIDSCHESCAPETYPE_SUSPENDSCHEDULER = 1,
2550 D3DKMT_VIDSCHESCAPETYPE_TDRCONTROL = 2,
2551 D3DKMT_VIDSCHESCAPETYPE_SUSPENDRESUME = 3,
2552#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
2553 D3DKMT_VIDSCHESCAPETYPE_ENABLECONTEXTDELAY = 4,
2555 D3DKMT_VIDSCHESCAPETYPE_CONFIGURE_TDR_LIMIT = 5,
2556 D3DKMT_VIDSCHESCAPETYPE_VGPU_RESET = 6,
2557 D3DKMT_VIDSCHESCAPETYPE_PFN_CONTROL = 7,
2558 D3DKMT_VIDSCHESCAPETYPE_VIRTUAL_REFRESH_RATE = 8,
2559} D3DKMT_VIDSCHESCAPETYPE;
2561typedef enum _D3DKMT_DMMESCAPETYPE
2563 D3DKMT_DMMESCAPETYPE_UNINITIALIZED = 0,
2564 D3DKMT_DMMESCAPETYPE_GET_SUMMARY_INFO = 1,
2565 D3DKMT_DMMESCAPETYPE_GET_VIDEO_PRESENT_SOURCES_INFO = 2,
2566 D3DKMT_DMMESCAPETYPE_GET_VIDEO_PRESENT_TARGETS_INFO = 3,
2567 D3DKMT_DMMESCAPETYPE_GET_ACTIVEVIDPN_INFO = 4,
2568 D3DKMT_DMMESCAPETYPE_GET_MONITORS_INFO = 5,
2569 D3DKMT_DMMESCAPETYPE_RECENTLY_COMMITTED_VIDPNS_INFO = 6,
2570 D3DKMT_DMMESCAPETYPE_RECENT_MODECHANGE_REQUESTS_INFO = 7,
2571 D3DKMT_DMMESCAPETYPE_RECENTLY_RECOMMENDED_VIDPNS_INFO = 8,
2572 D3DKMT_DMMESCAPETYPE_RECENT_MONITOR_PRESENCE_EVENTS_INFO = 9,
2573 D3DKMT_DMMESCAPETYPE_ACTIVEVIDPN_SOURCEMODESET_INFO = 10,
2574 D3DKMT_DMMESCAPETYPE_ACTIVEVIDPN_COFUNCPATHMODALITY_INFO = 11,
2575 D3DKMT_DMMESCAPETYPE_GET_LASTCLIENTCOMMITTEDVIDPN_INFO = 12,
2576 D3DKMT_DMMESCAPETYPE_GET_VERSION_INFO = 13,
2577 D3DKMT_DMMESCAPETYPE_VIDPN_MGR_DIAGNOSTICS = 14
2578} D3DKMT_DMMESCAPETYPE;
2580typedef struct _D3DKMT_HISTORY_BUFFER_STATUS
2584} D3DKMT_HISTORY_BUFFER_STATUS;
2586typedef enum _D3DKMT_VAD_ESCAPE_COMMAND
2588 D3DKMT_VAD_ESCAPE_GETNUMVADS,
2589 D3DKMT_VAD_ESCAPE_GETVAD,
2590 D3DKMT_VAD_ESCAPE_GETVADRANGE,
2591 D3DKMT_VAD_ESCAPE_GET_PTE,
2592 D3DKMT_VAD_ESCAPE_GET_GPUMMU_CAPS,
2593 D3DKMT_VAD_ESCAPE_GET_SEGMENT_CAPS,
2594} D3DKMT_VAD_ESCAPE_COMMAND;
2596typedef struct _D3DKMT_VAD_DESC
2599 D3DKMT_ALIGN64
UINT64 VadAddress;
2600 UINT NumMappedRanges;
2602 D3DKMT_ALIGN64
UINT64 StartAddress;
2603 D3DKMT_ALIGN64
UINT64 EndAddress;
2606typedef struct _D3DKMT_VA_RANGE_DESC
2608 D3DKMT_ALIGN64
UINT64 VadAddress;
2610 UINT PhysicalAdapterIndex;
2611 D3DKMT_ALIGN64
UINT64 StartAddress;
2612 D3DKMT_ALIGN64
UINT64 EndAddress;
2613 D3DKMT_ALIGN64
UINT64 DriverProtection;
2615 D3DKMT_ALIGN64
UINT64 pOwner;
2616 D3DKMT_ALIGN64
UINT64 OwnerOffset;
2618} D3DKMT_VA_RANGE_DESC;
2620typedef struct _D3DKMT_EVICTION_CRITERIA
2622 D3DKMT_ALIGN64
UINT64 MinimumSize;
2636} D3DKMT_EVICTION_CRITERIA;
2638typedef enum _D3DKMT_DEFRAG_ESCAPE_OPERATION
2640 D3DKMT_DEFRAG_ESCAPE_GET_FRAGMENTATION_STATS = 0,
2641 D3DKMT_DEFRAG_ESCAPE_DEFRAG_UPWARD = 1,
2642 D3DKMT_DEFRAG_ESCAPE_DEFRAG_DOWNWARD = 2,
2643 D3DKMT_DEFRAG_ESCAPE_DEFRAG_PASS = 3,
2644 D3DKMT_DEFRAG_ESCAPE_VERIFY_TRANSFER = 4,
2645} D3DKMT_DEFRAG_ESCAPE_OPERATION;
2647typedef struct _D3DKMT_PAGE_TABLE_LEVEL_DESC
2650 D3DKMT_ALIGN64
UINT64 IndexMask;
2651 D3DKMT_ALIGN64
UINT64 IndexShift;
2652 D3DKMT_ALIGN64
UINT64 LowerLevelsMask;
2653 D3DKMT_ALIGN64
UINT64 EntryCoverageInPages;
2654} D3DKMT_PAGE_TABLE_LEVEL_DESC;
2656typedef struct _DXGK_ESCAPE_GPUMMUCAPS
2658 BOOLEAN ReadOnlyMemorySupported;
2659 BOOLEAN NoExecuteMemorySupported;
2661 BOOLEAN CacheCoherentMemorySupported;
2664 BOOLEAN AllowNonAlignedLargePageAddress;
2665 UINT VirtualAddressBitCount;
2666 UINT PageTableLevelCount;
2667 D3DKMT_PAGE_TABLE_LEVEL_DESC PageTableLevelDesk[DXGK_MAX_PAGE_TABLE_LEVEL_COUNT];
2668} DXGK_ESCAPE_GPUMMUCAPS;
2670typedef struct _D3DKMT_GET_GPUMMU_CAPS
2672 UINT PhysicalAdapterIndex;
2673 DXGK_ESCAPE_GPUMMUCAPS GpuMmuCaps;
2674} D3DKMT_GET_GPUMMU_CAPS;
2676#define D3DKMT_GET_PTE_MAX 64
2678typedef struct _D3DKMT_GET_PTE
2680 UINT PhysicalAdapterIndex;
2681 UINT PageTableLevel;
2682 UINT PageTableIndex[DXGK_MAX_PAGE_TABLE_LEVEL_COUNT];
2685 DXGK_PTE Pte[D3DKMT_GET_PTE_MAX];
2686 UINT NumValidEntries;
2689#define D3DKMT_MAX_SEGMENT_COUNT 32
2691typedef enum _D3DKMT_MEMORY_SEGMENT_GROUP
2693 D3DKMT_MEMORY_SEGMENT_GROUP_LOCAL = 0,
2694 D3DKMT_MEMORY_SEGMENT_GROUP_NON_LOCAL = 1
2695} D3DKMT_MEMORY_SEGMENT_GROUP;
2697typedef struct _D3DKMT_SEGMENT_CAPS
2704 D3DKMT_MEMORY_SEGMENT_GROUP BudgetGroup;
2705} D3DKMT_SEGMENT_CAPS;
2707typedef struct _D3DKMT_GET_SEGMENT_CAPS
2709 UINT PhysicalAdapterIndex;
2711 D3DKMT_SEGMENT_CAPS SegmentCaps[D3DKMT_MAX_SEGMENT_COUNT];
2712} D3DKMT_GET_SEGMENT_CAPS;
2714typedef enum _D3DKMT_ESCAPE_PFN_CONTROL_COMMAND
2716 D3DKMT_ESCAPE_PFN_CONTROL_DEFAULT,
2717 D3DKMT_ESCAPE_PFN_CONTROL_FORCE_CPU,
2718 D3DKMT_ESCAPE_PFN_CONTROL_FORCE_GPU
2719} D3DKMT_ESCAPE_PFN_CONTROL_COMMAND;
2722typedef enum _D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE
2724 D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE_SET_BASE_DESKTOP_DURATION = 0,
2725 D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE_SET_VSYNC_MULTIPLIER = 1,
2726 D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE_SET_PROCESS_BOOST_ELIGIBLE = 2,
2727} D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE;
2729typedef struct _D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE
2731 D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE
Type;
2734 UINT VSyncMultiplier;
2735 UINT BaseDesktopDuration;
2737} D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE;
2739typedef struct _D3DKMT_VIDMM_ESCAPE
2741 D3DKMT_VIDMMESCAPETYPE
Type;
2750 ULONG ProbeAndLock : 1;
2751 ULONG SplitPoint : 1;
2752 ULONG NoDemotion : 1;
2753 ULONG SwizzlingAperture : 1;
2754 ULONG PagingPathLockSubRange : 1;
2755 ULONG PagingPathLockMinRange : 1;
2756 ULONG ComplexLock : 1;
2757 ULONG FailVARotation : 1;
2758 ULONG NoWriteCombined : 1;
2759 ULONG NoPrePatching : 1;
2760 ULONG AlwaysRepatch : 1;
2761 ULONG ExpectPreparationFailure : 1;
2762 ULONG FailUserModeVAMapping : 1;
2763#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
2764 ULONG NeverDiscardOfferedAllocation : 1;
2765 ULONG AlwaysDiscardOfferedAllocation : 1;
2776 D3DKMT_HANDLE ResourceHandle;
2777 D3DKMT_HANDLE AllocationHandle;
2782 D3DKMT_ALIGN64
UINT64 NtHandle;
2792 D3DKMT_VAD_DESC GetVad;
2793 D3DKMT_VA_RANGE_DESC GetVadRange;
2794 D3DKMT_GET_GPUMMU_CAPS GetGpuMmuCaps;
2795 D3DKMT_GET_PTE GetPte;
2796 D3DKMT_GET_SEGMENT_CAPS GetSegmentCaps;
2798 D3DKMT_VAD_ESCAPE_COMMAND
Command;
2803 D3DKMT_ALIGN64
ULONGLONG LocalMemoryBudget;
2804 D3DKMT_ALIGN64
ULONGLONG SystemMemoryBudget;
2809 BOOL bAllowWakeOnSubmission;
2817 D3DKMT_ALIGN64
UINT64 NumBytesToTrim;
2821 ULONG MinTrimInterval;
2822 ULONG MaxTrimInterval;
2823 ULONG IdleTrimInterval;
2825 D3DKMT_EVICTION_CRITERIA EvictByCriteria;
2832 D3DKMT_DEFRAG_ESCAPE_OPERATION
Operation;
2836 D3DKMT_ALIGN64
ULONGLONG TotalCommitted;
2838 D3DKMT_ALIGN64
ULONGLONG LargestGapBefore;
2839 D3DKMT_ALIGN64
ULONGLONG LargestGapAfter;
2843 D3DKMT_HANDLE hPagingQueue;
2844 UINT PhysicalAdapterIndex;
2846 D3DKMT_ALIGN64
ULONGLONG PagingFenceValue;
2848#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
2853#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
2856 D3DKMT_ALIGN64
LONGLONG TimerValue;
2857 } DelayedEvictionConfig;
2861} D3DKMT_VIDMM_ESCAPE;
2863typedef struct _D3DKMT_VIDSCH_ESCAPE
2865 D3DKMT_VIDSCHESCAPETYPE
Type;
2868 BOOL PreemptionControl;
2869#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
2870 BOOL EnableContextDelay;
2880 BOOL SuspendScheduler;
2889 D3DKMT_ESCAPE_PFN_CONTROL_COMMAND PfnControl;
2891 D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE VirtualRefreshRateControl;
2892} D3DKMT_VIDSCH_ESCAPE;
2894typedef struct _D3DKMT_TDRDBGCTRL_ESCAPE
2896 D3DKMT_TDRDBGCTRLTYPE TdrControl;
2897#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
2903} D3DKMT_TDRDBGCTRL_ESCAPE;
2908 D3DKMT_MAX_DMM_ESCAPE_DATASIZE = 100*1024
2912typedef struct _D3DKMT_DMM_ESCAPE
2915 _In_ D3DKMT_ALIGN64 D3DKMT_SIZE_T ProvidedBufferSize;
2916 _Out_ D3DKMT_ALIGN64 D3DKMT_SIZE_T MinRequiredBufferSize;
2920typedef enum _D3DKMT_BRIGHTNESS_INFO_TYPE
2922 D3DKMT_BRIGHTNESS_INFO_GET_POSSIBLE_LEVELS = 1,
2923 D3DKMT_BRIGHTNESS_INFO_GET = 2,
2924 D3DKMT_BRIGHTNESS_INFO_SET = 3,
2925 D3DKMT_BRIGHTNESS_INFO_GET_CAPS = 4,
2926 D3DKMT_BRIGHTNESS_INFO_SET_STATE = 5,
2927 D3DKMT_BRIGHTNESS_INFO_SET_OPTIMIZATION = 6,
2928 D3DKMT_BRIGHTNESS_INFO_GET_REDUCTION = 7,
2929 D3DKMT_BRIGHTNESS_INFO_BEGIN_MANUAL_MODE = 8,
2930 D3DKMT_BRIGHTNESS_INFO_END_MANUAL_MODE = 9,
2931 D3DKMT_BRIGHTNESS_INFO_TOGGLE_LOGGING = 10,
2932 D3DKMT_BRIGHTNESS_INFO_GET_NIT_RANGES = 11,
2933} D3DKMT_BRIGHTNESS_INFO_TYPE;
2935typedef struct _D3DKMT_BRIGHTNESS_POSSIBLE_LEVELS
2938 UCHAR BrightnessLevels[256];
2939} D3DKMT_BRIGHTNESS_POSSIBLE_LEVELS;
2941typedef struct _D3DKMT_BRIGHTNESS_INFO
2943 D3DKMT_BRIGHTNESS_INFO_TYPE
Type;
2947 D3DKMT_BRIGHTNESS_POSSIBLE_LEVELS PossibleLevels;
2949 DXGK_BRIGHTNESS_CAPS BrightnessCaps;
2950 DXGK_BRIGHTNESS_STATE BrightnessState;
2951 DXGK_BACKLIGHT_OPTIMIZATION_LEVEL OptimizationLevel;
2952 DXGK_BACKLIGHT_INFO ReductionInfo;
2954 DXGK_BRIGHTNESS_GET_NIT_RANGES_OUT NitRanges;
2955 DXGK_BRIGHTNESS_GET_OUT GetBrightnessMillinits;
2956 DXGK_BRIGHTNESS_SET_IN SetBrightnessMillinits;
2958} D3DKMT_BRIGHTNESS_INFO;
2960#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
2961typedef struct _D3DKMT_BDDFALLBACK_CTL
2963 BOOLEAN ForceBddHeadlessNextFallback;
2964} D3DKMT_BDDFALLBACK_CTL;
2966typedef struct _D3DKMT_REQUEST_MACHINE_CRASH_ESCAPE
2968 D3DKMT_ALIGN64 D3DKMT_ULONG_PTR Param1;
2969 D3DKMT_ALIGN64 D3DKMT_ULONG_PTR Param2;
2970 D3DKMT_ALIGN64 D3DKMT_ULONG_PTR Param3;
2971} D3DKMT_REQUEST_MACHINE_CRASH_ESCAPE;
2976typedef enum _D3DKMT_VERIFIER_OPTION_MODE
2978 D3DKMT_VERIFIER_OPTION_QUERY,
2979 D3DKMT_VERIFIER_OPTION_SET
2980} D3DKMT_VERIFIER_OPTION_MODE;
2982typedef enum _D3DKMT_PROCESS_VERIFIER_OPTION_TYPE
2991 D3DKMT_PROCESS_VERIFIER_OPTION_VIDMM_FLAGS = 1000,
2992 D3DKMT_PROCESS_VERIFIER_OPTION_VIDMM_RESTRICT_BUDGET = 1001,
2998} D3DKMT_PROCESS_VERIFIER_OPTION_TYPE;
3000typedef union _D3DKMT_PROCESS_VERIFIER_VIDMM_FLAGS
3004 UINT ForceSynchronousEvict : 1;
3005 UINT NeverDeferEvictions : 1;
3006 UINT AlwaysFailCommitOnReclaim : 1;
3007 UINT AlwaysPlaceInDemotedLocation : 1;
3011} D3DKMT_PROCESS_VERIFIER_VIDMM_FLAGS;
3013typedef struct _D3DKMT_PROCESS_VERIFIER_VIDMM_RESTRICT_BUDGET
3015 D3DKMT_ALIGN64
UINT64 LocalBudget;
3016 D3DKMT_ALIGN64
UINT64 NonLocalBudget;
3017} D3DKMT_PROCESS_VERIFIER_VIDMM_RESTRICT_BUDGET;
3019typedef union _D3DKMT_PROCESS_VERIFIER_OPTION_DATA
3021 D3DKMT_PROCESS_VERIFIER_VIDMM_FLAGS VidMmFlags;
3022 D3DKMT_PROCESS_VERIFIER_VIDMM_RESTRICT_BUDGET VidMmRestrictBudget;
3023} D3DKMT_PROCESS_VERIFIER_OPTION_DATA;
3025typedef struct _D3DKMT_PROCESS_VERIFIER_OPTION
3028 D3DKMT_PROCESS_VERIFIER_OPTION_TYPE
Type;
3029 D3DKMT_VERIFIER_OPTION_MODE
Mode;
3030 D3DKMT_PROCESS_VERIFIER_OPTION_DATA
Data;
3031} D3DKMT_PROCESS_VERIFIER_OPTION;
3033typedef enum _D3DKMT_ADAPTER_VERIFIER_OPTION_TYPE
3042 D3DKMT_ADAPTER_VERIFIER_OPTION_VIDMM_FLAGS = 1000,
3043 D3DKMT_ADAPTER_VERIFIER_OPTION_VIDMM_TRIM_INTERVAL = 1001,
3048} D3DKMT_ADAPTER_VERIFIER_OPTION_TYPE;
3050typedef union _D3DKMT_ADAPTER_VERIFIER_VIDMM_FLAGS
3054 UINT AlwaysRepatch : 1;
3055 UINT FailSharedPrimary : 1;
3056 UINT FailProbeAndLock : 1;
3057 UINT AlwaysDiscardOffer : 1;
3058 UINT NeverDiscardOffer : 1;
3059 UINT ForceComplexLock : 1;
3060 UINT NeverPrepatch : 1;
3061 UINT ExpectPreparationFailure : 1;
3062 UINT TakeSplitPoint : 1;
3063 UINT FailAcquireSwizzlingRange : 1;
3064 UINT PagingPathLockSubrange : 1;
3065 UINT PagingPathLockMinrange : 1;
3066 UINT FailVaRotation : 1;
3067 UINT NoDemotion : 1;
3068 UINT FailDefragPass : 1;
3069 UINT AlwaysProcessOfferList : 1;
3070 UINT AlwaysDecommitOffer : 1;
3071 UINT NeverMoveDefrag : 1;
3072 UINT AlwaysRelocateDisplayableResources : 1;
3073 UINT AlwaysFailGrowVPRMoves : 1;
3077} D3DKMT_ADAPTER_VERIFIER_VIDMM_FLAGS;
3079typedef struct _D3DKMT_ADAPTER_VERIFIER_VIDMM_TRIM_INTERVAL
3081 D3DKMT_ALIGN64
UINT64 MinimumTrimInterval;
3082 D3DKMT_ALIGN64
UINT64 MaximumTrimInterval;
3083 D3DKMT_ALIGN64
UINT64 IdleTrimInterval;
3084} D3DKMT_ADAPTER_VERIFIER_VIDMM_TRIM_INTERVAL;
3086typedef union _D3DKMT_ADAPTER_VERIFIER_OPTION_DATA
3088 D3DKMT_ADAPTER_VERIFIER_VIDMM_FLAGS VidMmFlags;
3089 D3DKMT_ADAPTER_VERIFIER_VIDMM_TRIM_INTERVAL VidMmTrimInterval;
3090} D3DKMT_ADAPTER_VERIFIER_OPTION_DATA;
3092typedef struct _D3DKMT_ADAPTER_VERIFIER_OPTION
3094 D3DKMT_ADAPTER_VERIFIER_OPTION_TYPE
Type;
3095 D3DKMT_VERIFIER_OPTION_MODE
Mode;
3096 D3DKMT_ADAPTER_VERIFIER_OPTION_DATA
Data;
3097} D3DKMT_ADAPTER_VERIFIER_OPTION;
3101typedef enum _D3DKMT_DEVICEESCAPE_TYPE
3103 D3DKMT_DEVICEESCAPE_VIDPNFROMALLOCATION = 0,
3104 D3DKMT_DEVICEESCAPE_RESTOREGAMMA = 1,
3105} D3DKMT_DEVICEESCAPE_TYPE;
3107typedef struct _D3DKMT_DEVICE_ESCAPE
3109 D3DKMT_DEVICEESCAPE_TYPE
Type;
3114 D3DKMT_HANDLE hPrimaryAllocation;
3115 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
3116 } VidPnFromAllocation;
3118} D3DKMT_DEVICE_ESCAPE;
3120typedef struct _D3DKMT_DEBUG_SNAPSHOT_ESCAPE
3124} D3DKMT_DEBUG_SNAPSHOT_ESCAPE;
3126#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
3127#ifndef DXGK_DIAG_PROCESS_NAME_LENGTH
3128#define DXGK_DIAG_PROCESS_NAME_LENGTH 16
3131typedef enum _OUTPUTDUPL_CONTEXT_DEBUG_STATUS
3133 OUTPUTDUPL_CONTEXT_DEBUG_STATUS_INACTIVE = 0,
3134 OUTPUTDUPL_CONTEXT_DEBUG_STATUS_ACTIVE = 1,
3135 OUTPUTDUPL_CONTEXT_DEBUG_STATUS_PENDING_DESTROY = 2,
3136 OUTPUTDUPL_CONTEXT_DEBUG_STATUS_FORCE_UINT32 = 0xffffffff
3137}OUTPUTDUPL_CONTEXT_DEBUG_STATUS;
3139typedef struct _OUTPUTDUPL_CONTEXT_DEBUG_INFO
3141 OUTPUTDUPL_CONTEXT_DEBUG_STATUS
Status;
3142 D3DKMT_PTR(
HANDLE, ProcessID);
3143 UINT32 AccumulatedPresents;
3146 CHAR ProcessName[DXGK_DIAG_PROCESS_NAME_LENGTH];
3147} OUTPUTDUPL_CONTEXT_DEBUG_INFO;
3149#define GET_OUTPUT_DUPL_DEBUG_INFO_FROM_SNAPSHOT(pSnapshot, VidPnSource, OutputDuplContextIndex) \
3150 (pSnapshot->OutputDuplDebugInfos[(VidPnSource * pSnapshot->NumOutputDuplContexts) + OutputDuplContextIndex])
3152typedef struct _D3DKMT_OUTPUTDUPL_SNAPSHOT
3156 UINT SessionProcessCount;
3157 UINT SessionActiveConnectionsCount;
3159 UINT NumVidPnSources;
3160 UINT NumOutputDuplContexts;
3165 _Field_size_bytes_(
Size -
sizeof(_D3DKMT_OUTPUTDUPL_SNAPSHOT)) OUTPUTDUPL_CONTEXT_DEBUG_INFO OutputDuplDebugInfos[0];
3166} D3DKMT_OUTPUTDUPL_SNAPSHOT;
3169typedef enum _D3DKMT_ACTIVATE_SPECIFIC_DIAG_TYPE
3171 D3DKMT_ACTIVATE_SPECIFIC_DIAG_TYPE_EXTRA_CCD_DATABASE_INFO = 0,
3172 D3DKMT_ACTIVATE_SPECIFIC_DIAG_TYPE_MODES_PRUNED = 15,
3173}D3DKMT_ACTIVATE_SPECIFIC_DIAG_TYPE;
3175typedef struct _D3DKMT_ACTIVATE_SPECIFIC_DIAG_ESCAPE
3177 D3DKMT_ACTIVATE_SPECIFIC_DIAG_TYPE
Type;
3179} D3DKMT_ACTIVATE_SPECIFIC_DIAG_ESCAPE;
3181typedef struct _D3DKMT_ESCAPE
3183 D3DKMT_HANDLE hAdapter;
3184 D3DKMT_HANDLE hDevice;
3185 D3DKMT_ESCAPETYPE
Type;
3186 D3DDDI_ESCAPEFLAGS
Flags;
3187 D3DKMT_PTR(
VOID*, pPrivateDriverData);
3188 UINT PrivateDriverDataSize;
3189 D3DKMT_HANDLE hContext;
3196typedef enum _D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT
3198 D3DKMT_PreemptionAttempt = 0,
3199 D3DKMT_PreemptionAttemptSuccess = 1,
3200 D3DKMT_PreemptionAttemptMissNoCommand = 2,
3201 D3DKMT_PreemptionAttemptMissNotEnabled = 3,
3202 D3DKMT_PreemptionAttemptMissNextFence = 4,
3203 D3DKMT_PreemptionAttemptMissPagingCommand = 5,
3204 D3DKMT_PreemptionAttemptMissSplittedCommand = 6,
3205 D3DKMT_PreemptionAttemptMissFenceCommand = 7,
3206 D3DKMT_PreemptionAttemptMissRenderPendingFlip = 8,
3207 D3DKMT_PreemptionAttemptMissNotMakingProgress = 9,
3208 D3DKMT_PreemptionAttemptMissLessPriority = 10,
3209 D3DKMT_PreemptionAttemptMissRemainingQuantum = 11,
3210 D3DKMT_PreemptionAttemptMissRemainingPreemptionQuantum = 12,
3211 D3DKMT_PreemptionAttemptMissAlreadyPreempting = 13,
3212 D3DKMT_PreemptionAttemptMissGlobalBlock = 14,
3213 D3DKMT_PreemptionAttemptMissAlreadyRunning = 15,
3214 D3DKMT_PreemptionAttemptStatisticsMax = 16,
3215} D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT;
3220#define D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT_MAX 16
3221C_ASSERT(D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT_MAX == D3DKMT_PreemptionAttemptStatisticsMax);
3226typedef enum _D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE {
3227 D3DKMT_ClientRenderBuffer = 0,
3228 D3DKMT_ClientPagingBuffer = 1,
3229 D3DKMT_SystemPagingBuffer = 2,
3230 D3DKMT_SystemPreemptionBuffer = 3,
3231 D3DKMT_DmaPacketTypeMax = 4
3232} D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE;
3237#define D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_MAX 4
3238C_ASSERT(D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_MAX == D3DKMT_DmaPacketTypeMax);
3240typedef enum _D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE {
3241 D3DKMT_RenderCommandBuffer = 0,
3242 D3DKMT_DeferredCommandBuffer = 1,
3243 D3DKMT_SystemCommandBuffer = 2,
3244 D3DKMT_MmIoFlipCommandBuffer = 3,
3245 D3DKMT_WaitCommandBuffer = 4,
3246 D3DKMT_SignalCommandBuffer = 5,
3247 D3DKMT_DeviceCommandBuffer = 6,
3248 D3DKMT_SoftwareCommandBuffer = 7,
3249 D3DKMT_QueuePacketTypeMax = 8
3250} D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE;
3255#define D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_MAX 8
3256C_ASSERT(D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_MAX == D3DKMT_QueuePacketTypeMax);
3258typedef enum _D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS
3260 D3DKMT_AllocationPriorityClassMinimum = 0,
3261 D3DKMT_AllocationPriorityClassLow = 1,
3262 D3DKMT_AllocationPriorityClassNormal = 2,
3263 D3DKMT_AllocationPriorityClassHigh = 3,
3264 D3DKMT_AllocationPriorityClassMaximum = 4,
3265 D3DKMT_MaxAllocationPriorityClass = 5
3266} D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS;
3272#define D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX 5
3273C_ASSERT(D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX == D3DKMT_MaxAllocationPriorityClass);
3278#define D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX 5
3280typedef struct _D3DKMT_QUERYSTATISTICS_COUNTER
3284} D3DKMT_QUERYSTATISTICS_COUNTER;
3286typedef struct _D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_INFORMATION {
3287 ULONG PacketSubmited;
3288 ULONG PacketCompleted;
3289 ULONG PacketPreempted;
3290 ULONG PacketFaulted;
3291} D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_INFORMATION;
3293typedef struct _D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_INFORMATION {
3294 ULONG PacketSubmited;
3295 ULONG PacketCompleted;
3296} D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_INFORMATION;
3298typedef struct _D3DKMT_QUERYSTATISTICS_PACKET_INFORMATION {
3299 D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_INFORMATION QueuePacket[D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_MAX];
3300 D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_INFORMATION DmaPacket[D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_MAX];
3301} D3DKMT_QUERYSTATISTICS_PACKET_INFORMATION;
3303typedef struct _D3DKMT_QUERYSTATISTICS_PREEMPTION_INFORMATION {
3304 ULONG PreemptionCounter[D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT_MAX];
3305} D3DKMT_QUERYSTATISTICS_PREEMPTION_INFORMATION;
3307typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION {
3309 ULONG ContextSwitch;
3310 D3DKMT_QUERYSTATISTICS_PREEMPTION_INFORMATION PreemptionStatistics;
3311 D3DKMT_QUERYSTATISTICS_PACKET_INFORMATION PacketStatistics;
3313} D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION;
3315typedef struct _D3DKMT_QUERYSTATISTICS_NODE_INFORMATION {
3316 D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION GlobalInformation;
3317 D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION SystemInformation;
3318#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
3319 D3DKMT_NODE_PERFDATA NodePerfData;
3324} D3DKMT_QUERYSTATISTICS_NODE_INFORMATION;
3326typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION {
3328 ULONG CancelledFrame;
3329 ULONG QueuedPresent;
3331#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
3332 D3DKMT_ALIGN64
UINT64 IsVSyncEnabled;
3333 D3DKMT_ALIGN64
UINT64 VSyncOnTotalTimeMs;
3334 D3DKMT_ALIGN64
UINT64 VSyncOffKeepPhaseTotalTimeMs;
3335 D3DKMT_ALIGN64
UINT64 VSyncOffNoPhaseTotalTimeMs;
3341} D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION;
3343typedef struct _D3DKMT_QUERYSTATISTICS_VIDPNSOURCE_INFORMATION {
3344 D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION GlobalInformation;
3345 D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION SystemInformation;
3347} D3DKMT_QUERYSTATISTICS_VIDPNSOURCE_INFORMATION;
3349typedef struct _D3DKMT_QUERYSTATSTICS_REFERENCE_DMA_BUFFER
3352 ULONG NbAllocationsReferenced;
3353 ULONG MaxNbAllocationsReferenced;
3354 ULONG NbNULLReference;
3355 ULONG NbWriteReference;
3356 ULONG NbRenamedAllocationsReferenced;
3357 ULONG NbIterationSearchingRenamedAllocation;
3358 ULONG NbLockedAllocationReferenced;
3359 ULONG NbAllocationWithValidPrepatchingInfoReferenced;
3360 ULONG NbAllocationWithInvalidPrepatchingInfoReferenced;
3361 ULONG NbDMABufferSuccessfullyPrePatched;
3362 ULONG NbPrimariesReferencesOverflow;
3363 ULONG NbAllocationWithNonPreferredResources;
3364 ULONG NbAllocationInsertedInMigrationTable;
3365} D3DKMT_QUERYSTATSTICS_REFERENCE_DMA_BUFFER;
3367typedef struct _D3DKMT_QUERYSTATSTICS_RENAMING
3369 ULONG NbAllocationsRenamed;
3370 ULONG NbAllocationsShrinked;
3371 ULONG NbRenamedBuffer;
3372 ULONG MaxRenamingListLength;
3373 ULONG NbFailuresDueToRenamingLimit;
3374 ULONG NbFailuresDueToCreateAllocation;
3375 ULONG NbFailuresDueToOpenAllocation;
3376 ULONG NbFailuresDueToLowResource;
3377 ULONG NbFailuresDueToNonRetiredLimit;
3378} D3DKMT_QUERYSTATSTICS_RENAMING;
3380typedef struct _D3DKMT_QUERYSTATSTICS_PREPRATION
3382 ULONG BroadcastStall;
3383 ULONG NbDMAPrepared;
3384 ULONG NbDMAPreparedLongPath;
3385 ULONG ImmediateHighestPreparationPass;
3386 D3DKMT_QUERYSTATISTICS_COUNTER AllocationsTrimmed;
3387} D3DKMT_QUERYSTATSTICS_PREPRATION;
3389typedef struct _D3DKMT_QUERYSTATSTICS_PAGING_FAULT
3391 D3DKMT_QUERYSTATISTICS_COUNTER Faults;
3392 D3DKMT_QUERYSTATISTICS_COUNTER FaultsFirstTimeAccess;
3393 D3DKMT_QUERYSTATISTICS_COUNTER FaultsReclaimed;
3394 D3DKMT_QUERYSTATISTICS_COUNTER FaultsMigration;
3395 D3DKMT_QUERYSTATISTICS_COUNTER FaultsIncorrectResource;
3396 D3DKMT_QUERYSTATISTICS_COUNTER FaultsLostContent;
3397 D3DKMT_QUERYSTATISTICS_COUNTER FaultsEvicted;
3398 D3DKMT_QUERYSTATISTICS_COUNTER AllocationsMEM_RESET;
3399 D3DKMT_QUERYSTATISTICS_COUNTER AllocationsUnresetSuccess;
3400 D3DKMT_QUERYSTATISTICS_COUNTER AllocationsUnresetFail;
3401 ULONG AllocationsUnresetSuccessRead;
3402 ULONG AllocationsUnresetFailRead;
3404 D3DKMT_QUERYSTATISTICS_COUNTER Evictions;
3405 D3DKMT_QUERYSTATISTICS_COUNTER EvictionsDueToPreparation;
3406 D3DKMT_QUERYSTATISTICS_COUNTER EvictionsDueToLock;
3407 D3DKMT_QUERYSTATISTICS_COUNTER EvictionsDueToClose;
3408 D3DKMT_QUERYSTATISTICS_COUNTER EvictionsDueToPurge;
3409 D3DKMT_QUERYSTATISTICS_COUNTER EvictionsDueToSuspendCPUAccess;
3410} D3DKMT_QUERYSTATSTICS_PAGING_FAULT;
3412typedef struct _D3DKMT_QUERYSTATSTICS_PAGING_TRANSFER
3415 D3DKMT_ALIGN64
ULONGLONG BytesDiscarded;
3416 D3DKMT_ALIGN64
ULONGLONG BytesMappedIntoAperture;
3417 D3DKMT_ALIGN64
ULONGLONG BytesUnmappedFromAperture;
3418 D3DKMT_ALIGN64
ULONGLONG BytesTransferredFromMdlToMemory;
3419 D3DKMT_ALIGN64
ULONGLONG BytesTransferredFromMemoryToMdl;
3420 D3DKMT_ALIGN64
ULONGLONG BytesTransferredFromApertureToMemory;
3421 D3DKMT_ALIGN64
ULONGLONG BytesTransferredFromMemoryToAperture;
3422} D3DKMT_QUERYSTATSTICS_PAGING_TRANSFER;
3424typedef struct _D3DKMT_QUERYSTATSTICS_SWIZZLING_RANGE
3426 ULONG NbRangesAcquired;
3427 ULONG NbRangesReleased;
3428} D3DKMT_QUERYSTATSTICS_SWIZZLING_RANGE;
3430typedef struct _D3DKMT_QUERYSTATSTICS_LOCKS
3433 ULONG NbLocksWaitFlag;
3434 ULONG NbLocksDiscardFlag;
3435 ULONG NbLocksNoOverwrite;
3436 ULONG NbLocksNoReadSync;
3437 ULONG NbLocksLinearization;
3438 ULONG NbComplexLocks;
3439} D3DKMT_QUERYSTATSTICS_LOCKS;
3441typedef struct _D3DKMT_QUERYSTATSTICS_ALLOCATIONS
3443 D3DKMT_QUERYSTATISTICS_COUNTER Created;
3444 D3DKMT_QUERYSTATISTICS_COUNTER Destroyed;
3445 D3DKMT_QUERYSTATISTICS_COUNTER Opened;
3446 D3DKMT_QUERYSTATISTICS_COUNTER Closed;
3447 D3DKMT_QUERYSTATISTICS_COUNTER MigratedSuccess;
3448 D3DKMT_QUERYSTATISTICS_COUNTER MigratedFail;
3449 D3DKMT_QUERYSTATISTICS_COUNTER MigratedAbandoned;
3450} D3DKMT_QUERYSTATSTICS_ALLOCATIONS;
3452typedef struct _D3DKMT_QUERYSTATSTICS_TERMINATIONS
3458 D3DKMT_QUERYSTATISTICS_COUNTER TerminatedShared;
3459 D3DKMT_QUERYSTATISTICS_COUNTER TerminatedNonShared;
3460 D3DKMT_QUERYSTATISTICS_COUNTER DestroyedShared;
3461 D3DKMT_QUERYSTATISTICS_COUNTER DestroyedNonShared;
3462} D3DKMT_QUERYSTATSTICS_TERMINATIONS;
3464#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
3465typedef struct _D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS
3471 UINT64 NumberOfMemoryGroups : 2;
3472 UINT64 SupportsDemotion : 1;
3477} D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS;
3480typedef struct _D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION
3484 ULONG VidPnSourceCount;
3487 ULONG TdrDetectedCount;
3489 D3DKMT_ALIGN64
LONGLONG ZeroLengthDmaBuffers;
3490 D3DKMT_ALIGN64
ULONGLONG RestartedPeriod;
3492 D3DKMT_QUERYSTATSTICS_REFERENCE_DMA_BUFFER ReferenceDmaBuffer;
3493 D3DKMT_QUERYSTATSTICS_RENAMING Renaming;
3494 D3DKMT_QUERYSTATSTICS_PREPRATION Preparation;
3495 D3DKMT_QUERYSTATSTICS_PAGING_FAULT PagingFault;
3496 D3DKMT_QUERYSTATSTICS_PAGING_TRANSFER PagingTransfer;
3497 D3DKMT_QUERYSTATSTICS_SWIZZLING_RANGE SwizzlingRange;
3498 D3DKMT_QUERYSTATSTICS_LOCKS Locks;
3500 D3DKMT_QUERYSTATSTICS_TERMINATIONS Terminations;
3502#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
3503 D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS
Flags;
3508} D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION;
3510#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
3511typedef struct _D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER_INFORMATION
3513 D3DKMT_ADAPTER_PERFDATA AdapterPerfData;
3514 D3DKMT_ADAPTER_PERFDATACAPS AdapterPerfDataCaps;
3515 D3DKMT_GPUVERSION GpuVersion;
3516} D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER_INFORMATION;
3519typedef struct _D3DKMT_QUERYSTATISTICS_SYSTEM_MEMORY
3521 D3DKMT_ALIGN64
ULONGLONG BytesAllocated;
3523 ULONG SmallAllocationBlocks;
3524 ULONG LargeAllocationBlocks;
3525 D3DKMT_ALIGN64
ULONGLONG WriteCombinedBytesAllocated;
3526 D3DKMT_ALIGN64
ULONGLONG WriteCombinedBytesReserved;
3527 D3DKMT_ALIGN64
ULONGLONG CachedBytesAllocated;
3528 D3DKMT_ALIGN64
ULONGLONG CachedBytesReserved;
3529 D3DKMT_ALIGN64
ULONGLONG SectionBytesAllocated;
3530 D3DKMT_ALIGN64
ULONGLONG SectionBytesReserved;
3531#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
3536} D3DKMT_QUERYSTATISTICS_SYSTEM_MEMORY;
3538typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_INFORMATION
3541 ULONG VidPnSourceCount;
3546} D3DKMT_QUERYSTATISTICS_PROCESS_INFORMATION;
3548typedef struct _D3DKMT_QUERYSTATISTICS_DMA_BUFFER
3550 D3DKMT_QUERYSTATISTICS_COUNTER
Size;
3551 ULONG AllocationListBytes;
3552 ULONG PatchLocationListBytes;
3553} D3DKMT_QUERYSTATISTICS_DMA_BUFFER;
3555typedef struct _D3DKMT_QUERYSTATISTICS_COMMITMENT_DATA
3557 D3DKMT_ALIGN64
UINT64 TotalBytesEvictedFromProcess;
3558 D3DKMT_ALIGN64
UINT64 BytesBySegmentPreference[D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX];
3559} D3DKMT_QUERYSTATISTICS_COMMITMENT_DATA;
3561typedef struct _D3DKMT_QUERYSTATISTICS_POLICY
3563 D3DKMT_ALIGN64
ULONGLONG PreferApertureForRead[D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX];
3564 D3DKMT_ALIGN64
ULONGLONG PreferAperture[D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX];
3565 D3DKMT_ALIGN64
ULONGLONG MemResetOnPaging;
3566 D3DKMT_ALIGN64
ULONGLONG RemovePagesFromWorkingSetOnPaging;
3567 D3DKMT_ALIGN64
ULONGLONG MigrationEnabled;
3568} D3DKMT_QUERYSTATISTICS_POLICY;
3582#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
3583#define D3DKMT_QUERYSTATISTICS_PROCESS_INTERFERENCE_BUCKET_COUNT 9
3585typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_INTERFERENCE_COUNTERS
3587 D3DKMT_ALIGN64
UINT64 InterferenceCount[D3DKMT_QUERYSTATISTICS_PROCESS_INTERFERENCE_BUCKET_COUNT];
3588} D3DKMT_QUERYSTATISTICS_PROCESS_INTERFERENCE_COUNTERS;
3591typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER_INFORMATION
3595 ULONG VidPnSourceCount;
3600 ULONG VirtualMemoryUsage;
3602 D3DKMT_QUERYSTATISTICS_DMA_BUFFER
DmaBuffer;
3603 D3DKMT_QUERYSTATISTICS_COMMITMENT_DATA CommitmentData;
3604 D3DKMT_QUERYSTATISTICS_POLICY _Policy;
3606#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
3607 D3DKMT_QUERYSTATISTICS_PROCESS_INTERFERENCE_COUNTERS ProcessInterferenceCounters;
3612#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
3613 D3DKMT_CLIENTHINT ClientHint;
3617} D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER_INFORMATION;
3619typedef struct _D3DKMT_QUERYSTATISTICS_MEMORY
3621 D3DKMT_ALIGN64
ULONGLONG TotalBytesEvicted;
3622 ULONG AllocsCommitted;
3623 ULONG AllocsResident;
3624} D3DKMT_QUERYSTATISTICS_MEMORY;
3626typedef struct _D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION
3628#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
3630 D3DKMT_ALIGN64
ULONGLONG BytesCommitted;
3634 ULONG BytesCommitted;
3635 ULONG BytesResident;
3638 D3DKMT_QUERYSTATISTICS_MEMORY
Memory;
3648 D3DKMT_ALIGN64
ULONGLONG TotalBytesEvictedByPriority[D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX];
3650#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
3651 D3DKMT_ALIGN64
UINT64 SystemMemoryEndAddress;
3652 struct D3DKMT_ALIGN64
3654 UINT64 PreservedDuringStandby : 1;
3655 UINT64 PreservedDuringHibernate : 1;
3656 UINT64 PartiallyPreservedDuringHibernate : 1;
3660#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
3661 struct D3DKMT_ALIGN64
3664 UINT64 PopulatedByReservedDDRByFirmware : 1;
3666 } SegmentProperties;
3674} D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION;
3679typedef struct _D3DKMT_QUERYSTATISTICS_VIDEO_MEMORY
3681 ULONG AllocsCommitted;
3682 D3DKMT_QUERYSTATISTICS_COUNTER AllocsResidentInP[D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX];
3683 D3DKMT_QUERYSTATISTICS_COUNTER AllocsResidentInNonPreferred;
3684 D3DKMT_ALIGN64
ULONGLONG TotalBytesEvictedDueToPreparation;
3685} D3DKMT_QUERYSTATISTICS_VIDEO_MEMORY;
3690typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_POLICY
3693} D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_POLICY;
3695typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_INFORMATION
3697#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
3698 D3DKMT_ALIGN64
ULONGLONG BytesCommitted;
3699 D3DKMT_ALIGN64
ULONGLONG MaximumWorkingSet;
3700 D3DKMT_ALIGN64
ULONGLONG MinimumWorkingSet;
3702 ULONG NbReferencedAllocationEvictedInPeriod;
3705 ULONG BytesCommitted;
3706 ULONG NbReferencedAllocationEvictedInPeriod;
3707 ULONG MaximumWorkingSet;
3708 ULONG MinimumWorkingSet;
3711 D3DKMT_QUERYSTATISTICS_VIDEO_MEMORY VideoMemory;
3712 D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_POLICY _Policy;
3715} D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_INFORMATION;
3717#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
3718typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP_INFORMATION
3720 D3DKMT_ALIGN64
UINT64 Budget;
3721 D3DKMT_ALIGN64
UINT64 Requested;
3723 D3DKMT_ALIGN64
UINT64 Demoted[D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX];
3724} D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP_INFORMATION;
3727typedef enum _D3DKMT_QUERYSTATISTICS_TYPE
3729 D3DKMT_QUERYSTATISTICS_ADAPTER = 0,
3730 D3DKMT_QUERYSTATISTICS_PROCESS = 1,
3731 D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER = 2,
3732 D3DKMT_QUERYSTATISTICS_SEGMENT = 3,
3733 D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT = 4,
3734 D3DKMT_QUERYSTATISTICS_NODE = 5,
3735 D3DKMT_QUERYSTATISTICS_PROCESS_NODE = 6,
3736 D3DKMT_QUERYSTATISTICS_VIDPNSOURCE = 7,
3737 D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE = 8,
3738#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
3739 D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP = 9,
3741#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
3742 D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER = 10,
3744} D3DKMT_QUERYSTATISTICS_TYPE;
3746typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT
3749} D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT;
3751typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_NODE
3754} D3DKMT_QUERYSTATISTICS_QUERY_NODE;
3756typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE
3758 ULONG VidPnSourceId;
3759} D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE;
3761#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
3762typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_PHYSICAL_ADAPTER
3764 ULONG PhysicalAdapterIndex;
3765} D3DKMT_QUERYSTATISTICS_QUERY_PHYSICAL_ADAPTER;
3768typedef union _D3DKMT_QUERYSTATISTICS_RESULT
3770 D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION AdapterInformation;
3771#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
3772 D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER_INFORMATION PhysAdapterInformation;
3774 D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION SegmentInformation;
3775 D3DKMT_QUERYSTATISTICS_NODE_INFORMATION NodeInformation;
3776 D3DKMT_QUERYSTATISTICS_VIDPNSOURCE_INFORMATION VidPnSourceInformation;
3777 D3DKMT_QUERYSTATISTICS_PROCESS_INFORMATION ProcessInformation;
3778 D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER_INFORMATION ProcessAdapterInformation;
3779 D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_INFORMATION ProcessSegmentInformation;
3780 D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION ProcessNodeInformation;
3781 D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION ProcessVidPnSourceInformation;
3782#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
3783 D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP_INFORMATION ProcessSegmentGroupInformation;
3785} D3DKMT_QUERYSTATISTICS_RESULT;
3787typedef struct _D3DKMT_QUERYSTATISTICS
3789 D3DKMT_QUERYSTATISTICS_TYPE
Type;
3792 D3DKMT_QUERYSTATISTICS_RESULT QueryResult;
3796 D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT QuerySegment;
3797 D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT QueryProcessSegment;
3798#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
3799 D3DKMT_MEMORY_SEGMENT_GROUP QueryProcessSegmentGroup;
3801 D3DKMT_QUERYSTATISTICS_QUERY_NODE QueryNode;
3802 D3DKMT_QUERYSTATISTICS_QUERY_NODE QueryProcessNode;
3803 D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE QueryVidPnSource;
3804 D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE QueryProcessVidPnSource;
3805#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
3806 D3DKMT_QUERYSTATISTICS_QUERY_PHYSICAL_ADAPTER QueryPhysAdapter;
3809} D3DKMT_QUERYSTATISTICS;
3811C_ASSERT(
sizeof(D3DKMT_QUERYSTATISTICS) == 0x328);
3819typedef struct _D3DKMT_PRESENT_STATS_DWM2
3823 UINT PresentRefreshCount;
3825 UINT SyncRefreshCount;
3827 UINT CustomPresentDuration;
3828 UINT VirtualSyncRefreshCount;
3830} D3DKMT_PRESENT_STATS_DWM2;
3833typedef enum _D3DKMT_VIDPNSOURCEOWNER_TYPE
3835 D3DKMT_VIDPNSOURCEOWNER_UNOWNED = 0,
3836 D3DKMT_VIDPNSOURCEOWNER_SHARED = 1,
3837 D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVE = 2,
3838 D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVEGDI = 3,
3839 D3DKMT_VIDPNSOURCEOWNER_EMULATED = 4,
3840} D3DKMT_VIDPNSOURCEOWNER_TYPE;
3842#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
3843typedef struct _D3DKMT_VIDPNSOURCEOWNER_FLAGS
3849 UINT AllowOutputDuplication : 1;
3850 UINT DisableDWMVirtualMode : 1;
3851 UINT UseNtHandles : 1;
3856} D3DKMT_VIDPNSOURCEOWNER_FLAGS;
3859typedef struct _D3DKMT_SETVIDPNSOURCEOWNER
3861 D3DKMT_HANDLE hDevice;
3862 D3DKMT_PTR(
CONST D3DKMT_VIDPNSOURCEOWNER_TYPE*, pType);
3863 D3DKMT_PTR(
CONST D3DDDI_VIDEO_PRESENT_SOURCE_ID*, pVidPnSourceId);
3864 UINT VidPnSourceCount;
3865} D3DKMT_SETVIDPNSOURCEOWNER;
3867#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
3868typedef struct _D3DKMT_SETVIDPNSOURCEOWNER1
3870 D3DKMT_SETVIDPNSOURCEOWNER Version0;
3871 D3DKMT_VIDPNSOURCEOWNER_FLAGS
Flags;
3872} D3DKMT_SETVIDPNSOURCEOWNER1;
3875#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
3876typedef struct _D3DKMT_SETVIDPNSOURCEOWNER2
3878 D3DKMT_SETVIDPNSOURCEOWNER1 Version1;
3879 D3DKMT_PTR(
CONST D3DKMT_PTR_TYPE*, pVidPnSourceNtHandles);
3880} D3DKMT_SETVIDPNSOURCEOWNER2;
3883typedef struct _D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP
3885 D3DKMT_HANDLE hAdapter;
3886 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
3887} D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP;
3889#define D3DKMT_GETPRESENTHISTORY_MAXTOKENS 2048
3891typedef struct _D3DKMT_GETPRESENTHISTORY
3893 D3DKMT_HANDLE hAdapter;
3898} D3DKMT_GETPRESENTHISTORY;
3900typedef struct _D3DKMT_CREATEOVERLAY
3902 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
3903 D3DKMT_HANDLE hDevice;
3905 D3DKMT_HANDLE hOverlay;
3906} D3DKMT_CREATEOVERLAY;
3908typedef struct _D3DKMT_UPDATEOVERLAY
3910 D3DKMT_HANDLE hDevice;
3911 D3DKMT_HANDLE hOverlay;
3913} D3DKMT_UPDATEOVERLAY;
3915typedef struct _D3DKMT_FLIPOVERLAY
3917 D3DKMT_HANDLE hDevice;
3918 D3DKMT_HANDLE hOverlay;
3919 D3DKMT_HANDLE hSource;
3920 D3DKMT_PTR(
VOID*, pPrivateDriverData);
3921 UINT PrivateDriverDataSize;
3922} D3DKMT_FLIPOVERLAY;
3924typedef struct _D3DKMT_GETOVERLAYSTATE
3926 D3DKMT_HANDLE hDevice;
3927 D3DKMT_HANDLE hOverlay;
3929} D3DKMT_GETOVERLAYSTATE;
3931typedef struct _D3DKMT_DESTROYOVERLAY
3933 D3DKMT_HANDLE hDevice;
3934 D3DKMT_HANDLE hOverlay;
3935} D3DKMT_DESTROYOVERLAY;
3937typedef struct _D3DKMT_WAITFORVERTICALBLANKEVENT
3939 D3DKMT_HANDLE hAdapter;
3940 D3DKMT_HANDLE hDevice;
3941 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
3942} D3DKMT_WAITFORVERTICALBLANKEVENT;
3944#define D3DKMT_MAX_WAITFORVERTICALBLANK_OBJECTS 8
3946typedef struct _D3DKMT_WAITFORVERTICALBLANKEVENT2
3948 D3DKMT_HANDLE hAdapter;
3949 D3DKMT_HANDLE hDevice;
3950 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
3952 D3DKMT_PTR_TYPE ObjectHandleArray[D3DKMT_MAX_WAITFORVERTICALBLANK_OBJECTS];
3953} D3DKMT_WAITFORVERTICALBLANKEVENT2;
3955typedef struct _D3DKMT_GETVERTICALBLANKEVENT
3957 D3DKMT_HANDLE hAdapter;
3958 D3DKMT_HANDLE hDevice;
3959 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
3960 D3DKMT_PTR(D3DKMT_PTR_TYPE*, phEvent);
3961} D3DKMT_GETVERTICALBLANKEVENT;
3963typedef struct _D3DKMT_SETSYNCREFRESHCOUNTWAITTARGET
3965 D3DKMT_HANDLE hAdapter;
3966 D3DKMT_HANDLE hDevice;
3967 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
3968 UINT TargetSyncRefreshCount;
3969} D3DKMT_SETSYNCREFRESHCOUNTWAITTARGET;
3971typedef struct _D3DKMT_SETGAMMARAMP
3973 D3DKMT_HANDLE hDevice;
3974 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
3975 D3DDDI_GAMMARAMP_TYPE
Type;
3979 D3DDDI_GAMMA_RAMP_RGB256x3x16* pGammaRampRgb256x3x16;
3980 D3DDDI_GAMMA_RAMP_DXGI_1* pGammaRampDXGI1;
3981 D3DKMT_PTR_HELPER( AlignUnionTo64)
3984} D3DKMT_SETGAMMARAMP;
3986typedef struct _D3DKMT_ADJUSTFULLSCREENGAMMA
3988 D3DKMT_HANDLE hAdapter;
3989 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
3990 D3DDDI_DXGI_RGB Scale;
3992} D3DKMT_ADJUSTFULLSCREENGAMMA;
3994#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
3996typedef struct _D3DKMT_SET_COLORSPACE_TRANSFORM
3999 _In_ D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId;
4005 D3DKMT_PTR_HELPER( AlignUnionTo64)
4007} D3DKMT_SET_COLORSPACE_TRANSFORM;
4011typedef struct _D3DKMT_SETVIDPNSOURCEHWPROTECTION
4013 D3DKMT_HANDLE hAdapter;
4014 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4016} D3DKMT_SETVIDPNSOURCEHWPROTECTION;
4018typedef struct _D3DKMT_SETHWPROTECTIONTEARDOWNRECOVERY
4020 D3DKMT_HANDLE hAdapter;
4022} D3DKMT_SETHWPROTECTIONTEARDOWNRECOVERY;
4024typedef enum _D3DKMT_DEVICEEXECUTION_STATE
4026 D3DKMT_DEVICEEXECUTION_ACTIVE = 1,
4027 D3DKMT_DEVICEEXECUTION_RESET = 2,
4028 D3DKMT_DEVICEEXECUTION_HUNG = 3,
4029 D3DKMT_DEVICEEXECUTION_STOPPED = 4,
4030 D3DKMT_DEVICEEXECUTION_ERROR_OUTOFMEMORY = 5,
4031 D3DKMT_DEVICEEXECUTION_ERROR_DMAFAULT = 6,
4032#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
4033 D3DKMT_DEVICEEXECUTION_ERROR_DMAPAGEFAULT = 7,
4035} D3DKMT_DEVICEEXECUTION_STATE;
4037typedef struct _D3DKMT_DEVICERESET_STATE
4043 UINT DesktopSwitched : 1;
4048} D3DKMT_DEVICERESET_STATE;
4050typedef struct _D3DKMT_PRESENT_STATS
4053 UINT PresentRefreshCount;
4054 UINT SyncRefreshCount;
4057} D3DKMT_PRESENT_STATS;
4059typedef struct _D3DKMT_DEVICEPRESENT_STATE
4061 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4062 D3DKMT_PRESENT_STATS PresentStats;
4063} D3DKMT_DEVICEPRESENT_STATE;
4065typedef struct _D3DKMT_PRESENT_STATS_DWM
4068 UINT PresentRefreshCount;
4070 UINT SyncRefreshCount;
4072 UINT CustomPresentDuration;
4073} D3DKMT_PRESENT_STATS_DWM;
4075#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
4077typedef struct _D3DKMT_DEVICEPAGEFAULT_STATE
4079 D3DKMT_ALIGN64
UINT64 FaultedPrimitiveAPISequenceNumber;
4080 DXGK_RENDER_PIPELINE_STAGE FaultedPipelineStage;
4081 UINT FaultedBindTableEntry;
4082 DXGK_PAGE_FAULT_FLAGS PageFaultFlags;
4083 DXGK_FAULT_ERROR_CODE FaultErrorCode;
4084 D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FaultedVirtualAddress;
4085} D3DKMT_DEVICEPAGEFAULT_STATE;
4089typedef struct _D3DKMT_DEVICEPRESENT_STATE_DWM
4091 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4092 D3DKMT_PRESENT_STATS_DWM PresentStatsDWM;
4093} D3DKMT_DEVICEPRESENT_STATE_DWM;
4095#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
4097typedef struct _D3DKMT_DEVICEPRESENT_QUEUE_STATE
4099 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4100 BOOLEAN bQueuedPresentLimitReached;
4101} D3DKMT_DEVICEPRESENT_QUEUE_STATE;
4105typedef enum _D3DKMT_DEVICESTATE_TYPE
4107 D3DKMT_DEVICESTATE_EXECUTION = 1,
4108 D3DKMT_DEVICESTATE_PRESENT = 2,
4109 D3DKMT_DEVICESTATE_RESET = 3,
4110 D3DKMT_DEVICESTATE_PRESENT_DWM = 4,
4112#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
4114 D3DKMT_DEVICESTATE_PAGE_FAULT = 5,
4118#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
4120 D3DKMT_DEVICESTATE_PRESENT_QUEUE = 6,
4123} D3DKMT_DEVICESTATE_TYPE;
4125typedef struct _D3DKMT_GETDEVICESTATE
4127 D3DKMT_HANDLE hDevice;
4128 D3DKMT_DEVICESTATE_TYPE StateType;
4131 D3DKMT_DEVICEEXECUTION_STATE ExecutionState;
4132 D3DKMT_DEVICEPRESENT_STATE PresentState;
4134 D3DKMT_DEVICEPRESENT_STATE_DWM PresentStateDWM;
4136#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
4138 D3DKMT_DEVICEPAGEFAULT_STATE PageFaultState;
4142#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
4144 D3DKMT_DEVICEPRESENT_QUEUE_STATE PresentQueueState;
4148} D3DKMT_GETDEVICESTATE;
4150typedef struct _D3DKMT_CREATEDCFROMMEMORY
4157 D3DKMT_PTR(
HDC, hDeviceDc);
4159 D3DKMT_PTR(
HDC, hDc);
4161} D3DKMT_CREATEDCFROMMEMORY;
4163typedef struct _D3DKMT_DESTROYDCFROMMEMORY
4165 D3DKMT_PTR(
HDC, hDc);
4167} D3DKMT_DESTROYDCFROMMEMORY;
4169#define D3DKMT_SETCONTEXTSCHEDULINGPRIORITY_ABSOLUTE 0x40000000
4171typedef struct _D3DKMT_SETCONTEXTSCHEDULINGPRIORITY
4173 D3DKMT_HANDLE hContext;
4175} D3DKMT_SETCONTEXTSCHEDULINGPRIORITY;
4177typedef struct _D3DKMT_SETCONTEXTINPROCESSSCHEDULINGPRIORITY
4179 D3DKMT_HANDLE hContext;
4181} D3DKMT_SETCONTEXTINPROCESSSCHEDULINGPRIORITY;
4183typedef struct _D3DKMT_CHANGESURFACEPOINTER
4187 D3DKMT_PTR(
LPVOID, pSurfacePointer);
4191} D3DKMT_CHANGESURFACEPOINTER;
4193typedef struct _D3DKMT_GETCONTEXTSCHEDULINGPRIORITY
4195 D3DKMT_HANDLE hContext;
4197} D3DKMT_GETCONTEXTSCHEDULINGPRIORITY;
4199typedef struct _D3DKMT_GETCONTEXTINPROCESSSCHEDULINGPRIORITY
4201 D3DKMT_HANDLE hContext;
4203} D3DKMT_GETCONTEXTINPROCESSSCHEDULINGPRIORITY;
4205typedef enum _D3DKMT_SCHEDULINGPRIORITYCLASS
4207 D3DKMT_SCHEDULINGPRIORITYCLASS_IDLE = 0,
4208 D3DKMT_SCHEDULINGPRIORITYCLASS_BELOW_NORMAL = 1,
4209 D3DKMT_SCHEDULINGPRIORITYCLASS_NORMAL = 2,
4210 D3DKMT_SCHEDULINGPRIORITYCLASS_ABOVE_NORMAL = 3,
4211 D3DKMT_SCHEDULINGPRIORITYCLASS_HIGH = 4,
4212 D3DKMT_SCHEDULINGPRIORITYCLASS_REALTIME = 5,
4213} D3DKMT_SCHEDULINGPRIORITYCLASS;
4215typedef struct _D3DKMT_GETSCANLINE
4217 D3DKMT_HANDLE hAdapter;
4218 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4221} D3DKMT_GETSCANLINE;
4223typedef enum _D3DKMT_QUEUEDLIMIT_TYPE
4225 D3DKMT_SET_QUEUEDLIMIT_PRESENT = 1,
4226 D3DKMT_GET_QUEUEDLIMIT_PRESENT = 2,
4227} D3DKMT_QUEUEDLIMIT_TYPE;
4229typedef struct _D3DKMT_SETQUEUEDLIMIT
4231 D3DKMT_HANDLE hDevice;
4232 D3DKMT_QUEUEDLIMIT_TYPE
Type;
4235 UINT QueuedPresentLimit;
4238 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4239 UINT QueuedPendingFlipLimit;
4242} D3DKMT_SETQUEUEDLIMIT;
4244typedef struct _D3DKMT_POLLDISPLAYCHILDREN
4246 D3DKMT_HANDLE hAdapter;
4247 UINT NonDestructiveOnly : 1;
4248 UINT SynchronousPolling : 1;
4249 UINT DisableModeReset : 1;
4250 UINT PollAllAdapters : 1;
4251 UINT PollInterruptible : 1;
4253} D3DKMT_POLLDISPLAYCHILDREN;
4255typedef struct _D3DKMT_INVALIDATEACTIVEVIDPN
4257 D3DKMT_HANDLE hAdapter;
4258 D3DKMT_PTR(
VOID*, pPrivateDriverData);
4259 UINT PrivateDriverDataSize;
4260} D3DKMT_INVALIDATEACTIVEVIDPN;
4262typedef struct _D3DKMT_CHECKOCCLUSION
4264 D3DKMT_PTR(
HWND, hWindow);
4265} D3DKMT_CHECKOCCLUSION;
4267typedef struct _D3DKMT_WAITFORIDLE
4269 D3DKMT_HANDLE hDevice;
4270} D3DKMT_WAITFORIDLE;
4272typedef struct _D3DKMT_CHECKMONITORPOWERSTATE
4274 D3DKMT_HANDLE hAdapter;
4275 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4276} D3DKMT_CHECKMONITORPOWERSTATE;
4278typedef struct _D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT
4280 D3DKMT_HANDLE hDevice;
4281 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4282 UINT PrivateDriverFormatAttribute;
4283} D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT;
4285typedef struct _D3DKMT_CREATEKEYEDMUTEX
4287 D3DKMT_ALIGN64
UINT64 InitialValue;
4288 D3DKMT_HANDLE hSharedHandle;
4289 D3DKMT_HANDLE hKeyedMutex;
4290} D3DKMT_CREATEKEYEDMUTEX;
4292typedef struct _D3DKMT_OPENKEYEDMUTEX
4294 D3DKMT_HANDLE hSharedHandle;
4295 D3DKMT_HANDLE hKeyedMutex;
4296} D3DKMT_OPENKEYEDMUTEX;
4298typedef struct _D3DKMT_DESTROYKEYEDMUTEX
4300 D3DKMT_HANDLE hKeyedMutex;
4301} D3DKMT_DESTROYKEYEDMUTEX;
4303typedef struct _D3DKMT_ACQUIREKEYEDMUTEX
4305 D3DKMT_HANDLE hKeyedMutex;
4308 D3DKMT_ALIGN64
UINT64 FenceValue;
4309} D3DKMT_ACQUIREKEYEDMUTEX;
4311typedef struct _D3DKMT_RELEASEKEYEDMUTEX
4313 D3DKMT_HANDLE hKeyedMutex;
4315 D3DKMT_ALIGN64
UINT64 FenceValue;
4316} D3DKMT_RELEASEKEYEDMUTEX;
4318#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
4320typedef struct _D3DKMT_CREATEKEYEDMUTEX2_FLAGS
4326 UINT NtSecuritySharing : 1;
4331} D3DKMT_CREATEKEYEDMUTEX2_FLAGS;
4333typedef struct _D3DKMT_CREATEKEYEDMUTEX2
4335 D3DKMT_ALIGN64
UINT64 InitialValue;
4336 D3DKMT_HANDLE hSharedHandle;
4337 D3DKMT_HANDLE hKeyedMutex;
4339 VOID*, pPrivateRuntimeData);
4341 UINT PrivateRuntimeDataSize;
4342 D3DKMT_CREATEKEYEDMUTEX2_FLAGS
Flags;
4343} D3DKMT_CREATEKEYEDMUTEX2;
4345typedef struct _D3DKMT_OPENKEYEDMUTEX2
4347 D3DKMT_HANDLE hSharedHandle;
4348 D3DKMT_HANDLE hKeyedMutex;
4350 VOID*, pPrivateRuntimeData);
4353 UINT PrivateRuntimeDataSize;
4354} D3DKMT_OPENKEYEDMUTEX2;
4356typedef struct _D3DKMT_OPENKEYEDMUTEXFROMNTHANDLE
4358 D3DKMT_PTR(
HANDLE, hNtHandle);
4359 D3DKMT_HANDLE hKeyedMutex;
4361 VOID*, pPrivateRuntimeData);
4364 UINT PrivateRuntimeDataSize;
4365} D3DKMT_OPENKEYEDMUTEXFROMNTHANDLE;
4367typedef struct _D3DKMT_ACQUIREKEYEDMUTEX2
4369 D3DKMT_HANDLE hKeyedMutex;
4372 D3DKMT_ALIGN64
UINT64 FenceValue;
4374 VOID*, pPrivateRuntimeData);
4376 UINT PrivateRuntimeDataSize;
4377} D3DKMT_ACQUIREKEYEDMUTEX2;
4379typedef struct _D3DKMT_RELEASEKEYEDMUTEX2
4381 D3DKMT_HANDLE hKeyedMutex;
4383 D3DKMT_ALIGN64
UINT64 FenceValue;
4385 VOID*, pPrivateRuntimeData);
4387 UINT PrivateRuntimeDataSize;
4388} D3DKMT_RELEASEKEYEDMUTEX2;
4392typedef struct _D3DKMT_CONFIGURESHAREDRESOURCE
4394 D3DKMT_HANDLE hDevice;
4395 D3DKMT_HANDLE hResource;
4399} D3DKMT_CONFIGURESHAREDRESOURCE;
4401typedef struct _D3DKMT_CHECKSHAREDRESOURCEACCESS
4403 D3DKMT_HANDLE hResource;
4405} D3DKMT_CHECKSHAREDRESOURCEACCESS;
4407#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
4408typedef enum _D3DKMT_OFFER_PRIORITY
4410 D3DKMT_OFFER_PRIORITY_LOW=1,
4411 D3DKMT_OFFER_PRIORITY_NORMAL,
4412 D3DKMT_OFFER_PRIORITY_HIGH,
4413 D3DKMT_OFFER_PRIORITY_AUTO,
4414} D3DKMT_OFFER_PRIORITY;
4416#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
4417typedef struct _D3DKMT_OFFER_FLAGS
4423 UINT OfferImmediately : 1;
4424 UINT AllowDecommit : 1;
4429} D3DKMT_OFFER_FLAGS;
4432typedef struct _D3DKMT_OFFERALLOCATIONS
4434 D3DKMT_HANDLE hDevice;
4435 D3DKMT_PTR(D3DKMT_HANDLE*, pResources);
4436 D3DKMT_PTR(
CONST D3DKMT_HANDLE*, HandleList);
4437 UINT NumAllocations;
4439#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
4440 D3DKMT_OFFER_FLAGS
Flags;
4442} D3DKMT_OFFERALLOCATIONS;
4444typedef struct _D3DKMT_RECLAIMALLOCATIONS
4446 D3DKMT_HANDLE hDevice;
4447 D3DKMT_PTR(D3DKMT_HANDLE*, pResources);
4448 D3DKMT_PTR(
CONST D3DKMT_HANDLE*, HandleList);
4449 D3DKMT_PTR(
BOOL*, pDiscarded);
4450 UINT NumAllocations;
4451} D3DKMT_RECLAIMALLOCATIONS;
4453typedef struct _D3DKMT_RECLAIMALLOCATIONS2
4455 D3DKMT_HANDLE hPagingQueue;
4456 UINT NumAllocations;
4457 D3DKMT_PTR(D3DKMT_HANDLE*, pResources);
4458 D3DKMT_PTR(
CONST D3DKMT_HANDLE*, HandleList);
4459#if(DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1 || \
4460 D3D_UMD_INTERFACE_VERSION >= D3D_UMD_INTERFACE_VERSION_WDDM2_1)
4464 D3DDDI_RECLAIM_RESULT* pResults;
4465 D3DKMT_PTR_HELPER(AlignUnionTo64)
4468 D3DKMT_PTR(
BOOL*, pDiscarded);
4470 D3DKMT_ALIGN64
UINT64 PagingFenceValue;
4472} D3DKMT_RECLAIMALLOCATIONS2;
4474typedef struct _D3DKMT_OUTPUTDUPLCREATIONFLAGS
4480 UINT CompositionUiCaptureOnly : 1;
4485} D3DKMT_OUTPUTDUPLCREATIONFLAGS;
4487typedef struct _D3DKMT_OUTPUTDUPL_KEYEDMUTEX
4489 D3DKMT_PTR(
HANDLE, hSharedSurfaceNt);
4490}D3DKMT_OUTPUTDUPL_KEYEDMUTEX;
4492#define OUTPUTDUPL_CREATE_MAX_KEYEDMUTXES 3
4493typedef struct _D3DKMT_CREATE_OUTPUTDUPL
4495 D3DKMT_HANDLE hAdapter;
4496 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4497 UINT KeyedMutexCount;
4498 UINT RequiredKeyedMutexCount;
4499 D3DKMT_OUTPUTDUPL_KEYEDMUTEX KeyedMutexs[OUTPUTDUPL_CREATE_MAX_KEYEDMUTXES];
4500 D3DKMT_OUTPUTDUPLCREATIONFLAGS
Flags;
4501} D3DKMT_CREATE_OUTPUTDUPL;
4503typedef struct _D3DKMT_DESTROY_OUTPUTDUPL
4505 D3DKMT_HANDLE hAdapter;
4506 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4507 BOOL bDestroyAllContexts;
4508} D3DKMT_DESTROY_OUTPUTDUPL;
4510typedef struct _D3DKMT_OUTPUTDUPL_POINTER_POSITION
4514} D3DKMT_OUTPUTDUPL_POINTER_POSITION;
4516typedef struct _D3DKMT_OUTPUTDUPL_FRAMEINFO
4520 UINT AccumulatedFrames;
4521 BOOL RectsCoalesced;
4522 BOOL ProtectedContentMaskedOut;
4523 D3DKMT_OUTPUTDUPL_POINTER_POSITION PointerPosition;
4524 UINT TotalMetadataBufferSize;
4525 UINT PointerShapeBufferSize;
4526} D3DKMT_OUTPUTDUPL_FRAMEINFO;
4528typedef struct _D3DKMT_OUTPUTDUPL_GET_FRAMEINFO
4530 D3DKMT_HANDLE hAdapter;
4531 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4532 D3DKMT_OUTPUTDUPL_FRAMEINFO FrameInfo;
4533} D3DKMT_OUTPUTDUPL_GET_FRAMEINFO;
4535typedef enum _D3DKMT_OUTPUTDUPL_METADATATYPE
4537 D3DKMT_OUTPUTDUPL_METADATATYPE_DIRTY_RECTS = 0,
4538 D3DKMT_OUTPUTDUPL_METADATATYPE_MOVE_RECTS = 1
4539} D3DKMT_OUTPUTDUPL_METADATATYPE;
4541typedef struct _D3DKMT_OUTPUTDUPL_METADATA
4543 D3DKMT_HANDLE hAdapter;
4544 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4545 D3DKMT_OUTPUTDUPL_METADATATYPE
Type;
4546 UINT BufferSizeSupplied;
4548 UINT BufferSizeRequired;
4549} D3DKMT_OUTPUTDUPL_METADATA;
4551typedef enum _D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE
4553 D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x00000001,
4554 D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x00000002,
4555 D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x00000004
4556} D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE;
4558typedef struct _D3DKMT_OUTDUPL_POINTER_SHAPE_INFO
4560 D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE
Type;
4565} D3DKMT_OUTDUPL_POINTER_SHAPE_INFO;
4567typedef struct _D3DKMT_OUTPUTDUPL_GET_POINTER_SHAPE_DATA
4569 D3DKMT_HANDLE hAdapter;
4570 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4571 UINT BufferSizeSupplied;
4573 UINT BufferSizeRequired;
4574 D3DKMT_OUTDUPL_POINTER_SHAPE_INFO ShapeInfo;
4575} D3DKMT_OUTPUTDUPL_GET_POINTER_SHAPE_DATA;
4577typedef struct _D3DKMT_OUTPUTDUPL_RELEASE_FRAME
4579 D3DKMT_HANDLE hAdapter;
4580 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
4581 UINT NextKeyMutexIdx;
4582} D3DKMT_OUTPUTDUPL_RELEASE_FRAME;
4585#define D3DKMT_MAX_OBJECTS_PER_HANDLE 3
4587#define D3DKMT_MAX_BUNDLE_OBJECTS_PER_HANDLE 16
4589#define D3DKMT_GDI_STYLE_HANDLE_DECORATION 0x2
4591typedef struct _D3DKMT_GETSHAREDRESOURCEADAPTERLUID
4593 D3DKMT_HANDLE hGlobalShare;
4594 D3DKMT_PTR(
HANDLE, hNtHandle);
4596} D3DKMT_GETSHAREDRESOURCEADAPTERLUID;
4598typedef enum _D3DKMT_GPU_PREFERENCE_QUERY_STATE
4600 D3DKMT_GPU_PREFERENCE_STATE_UNINITIALIZED,
4601 D3DKMT_GPU_PREFERENCE_STATE_HIGH_PERFORMANCE,
4602 D3DKMT_GPU_PREFERENCE_STATE_MINIMUM_POWER,
4603 D3DKMT_GPU_PREFERENCE_STATE_UNSPECIFIED,
4604 D3DKMT_GPU_PREFERENCE_STATE_NOT_FOUND,
4605 D3DKMT_GPU_PREFERENCE_STATE_USER_SPECIFIED_GPU
4606} D3DKMT_GPU_PREFERENCE_QUERY_STATE;
4608typedef enum _D3DKMT_GPU_PREFERENCE_QUERY_TYPE
4610 D3DKMT_GPU_PREFERENCE_TYPE_IHV_DLIST,
4611 D3DKMT_GPU_PREFERENCE_TYPE_DX_DATABASE,
4612 D3DKMT_GPU_PREFERENCE_TYPE_USER_PREFERENCE
4613} D3DKMT_GPU_PREFERENCE_QUERY_TYPE;
4615typedef struct _D3DKMT_HYBRID_LIST
4617 D3DKMT_GPU_PREFERENCE_QUERY_STATE
State;
4619 BOOL bUserPreferenceQuery;
4620#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
4621 D3DKMT_GPU_PREFERENCE_QUERY_TYPE
QueryType;
4623} D3DKMT_HYBRID_LIST;
4625#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
4628 DXGK_MIRACAST_CHUNK_INFO ChunkInfo;
4629 UINT PrivateDriverDataSize;
4630 BYTE PrivateDriverData[1];
4631} D3DKMT_MIRACAST_CHUNK_DATA;
4635 MiracastStopped = 0,
4636 MiracastStartPending = 1,
4637 MiracastStarted = 2,
4638 MiracastStopPending = 3,
4639} D3DKMT_MIRACAST_DISPLAY_DEVICE_STATE;
4643 D3DKMT_MIRACAST_DEVICE_STATUS_SUCCESS = 0,
4644 D3DKMT_MIRACAST_DEVICE_STATUS_SUCCESS_NO_MONITOR = 1,
4645 D3DKMT_MIRACAST_DEVICE_STATUS_PENDING = 2,
4646 D3DKMT_MIRACAST_DEVICE_STATUS_UNKOWN_ERROR = 0x80000001,
4647 D3DKMT_MIRACAST_DEVICE_STATUS_GPU_RESOURCE_IN_USE = 0x80000002,
4648 D3DKMT_MIRACAST_DEVICE_STATUS_DEVICE_ERROR = 0x80000003,
4649 D3DKMT_MIRACAST_DEVICE_STATUS_UNKOWN_PAIRING = 0x80000004,
4650 D3DKMT_MIRACAST_DEVICE_STATUS_REMOTE_SESSION = 0x80000005,
4651 D3DKMT_MIRACAST_DEVICE_STATUS_DEVICE_NOT_FOUND = 0x80000006,
4652 D3DKMT_MIRACAST_DEVICE_STATUS_DEVICE_NOT_STARTED = 0x80000007,
4653 D3DKMT_MIRACAST_DEVICE_STATUS_INVALID_PARAMETER = 0x80000008,
4654 D3DKMT_MIRACAST_DEVICE_STATUS_INSUFFICIENT_BANDWIDTH = 0x80000009,
4655 D3DKMT_MIRACAST_DEVICE_STATUS_INSUFFICIENT_MEMORY = 0x8000000A,
4656 D3DKMT_MIRACAST_DEVICE_STATUS_CANCELLED = 0x8000000B,
4657} D3DKMT_MIRACAST_DEVICE_STATUS;
4659typedef struct _D3DKMT_MIRACAST_DISPLAY_DEVICE_STATUS
4664 D3DKMT_MIRACAST_DISPLAY_DEVICE_STATE
State;
4665} D3DKMT_MIRACAST_DISPLAY_DEVICE_STATUS, *PD3DKMT_MIRACAST_DISPLAY_DEVICE_STATUS;
4667typedef struct _D3DKMT_MIRACAST_DISPLAY_DEVICE_CAPS
4670 ULONG DefaultControlPort;
4672} D3DKMT_MIRACAST_DISPLAY_DEVICE_CAPS, *PD3DKMT_MIRACAST_DISPLAY_DEVICE_CAPS;
4674#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
4675typedef struct _D3DKMT_MIRACAST_DISPLAY_STOP_SESSIONS
4678 D3DDDI_VIDEO_PRESENT_TARGET_ID
TargetId;
4680} D3DKMT_MIRACAST_DISPLAY_STOP_SESSIONS, *PD3DKMT_MIRACAST_DISPLAY_STOP_SESSIONS;
4686#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
4688typedef struct _D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU
4690 D3DKMT_HANDLE hDevice;
4694 const D3DKMT_HANDLE*, ObjectHandleArray);
4697 const UINT64*, FenceValueArray);
4699 D3DKMT_PTR(
HANDLE, hAsyncEvent);
4702 D3DDDI_WAITFORSYNCHRONIZATIONOBJECTFROMCPU_FLAGS
Flags;
4703} D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU;
4705typedef struct _D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMCPU
4707 D3DKMT_HANDLE hDevice;
4711 const D3DKMT_HANDLE*, ObjectHandleArray);
4714 const UINT64*, FenceValueArray);
4716 D3DDDICB_SIGNALFLAGS
Flags;
4717} D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMCPU;
4719typedef struct _D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU
4721 D3DKMT_HANDLE hContext;
4725 const D3DKMT_HANDLE*, ObjectHandleArray);
4730 const UINT64* MonitoredFenceValueArray;
4732 D3DKMT_ALIGN64
UINT64 FenceValue;
4736} D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU;
4738typedef struct _D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU
4740 D3DKMT_HANDLE hContext;
4744 const D3DKMT_HANDLE*, ObjectHandleArray);
4749 const UINT64* MonitoredFenceValueArray;
4753} D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU;
4755typedef struct _D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU2
4760 const D3DKMT_HANDLE*, ObjectHandleArray);
4762 D3DDDICB_SIGNALFLAGS
Flags;
4764 ULONG BroadcastContextCount;
4767 const D3DKMT_HANDLE*, BroadcastContextArray);
4771 D3DKMT_ALIGN64
UINT64 FenceValue;
4776 const UINT64* MonitoredFenceValueArray;
4780} D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU2;
4782typedef struct _D3DKMT_CREATEPAGINGQUEUE
4784 D3DKMT_HANDLE hDevice;
4785 D3DDDI_PAGINGQUEUE_PRIORITY
Priority;
4786 D3DKMT_HANDLE hPagingQueue;
4787 D3DKMT_HANDLE hSyncObject;
4788 D3DKMT_PTR(
VOID*, FenceValueCPUVirtualAddress);
4789 UINT PhysicalAdapterIndex;
4790} D3DKMT_CREATEPAGINGQUEUE;
4792typedef struct _D3DKMT_EVICT
4794 D3DKMT_HANDLE hDevice;
4795 UINT NumAllocations;
4796 D3DKMT_PTR(
CONST D3DKMT_HANDLE*, AllocationList);
4797 D3DDDI_EVICT_FLAGS
Flags;
4798 D3DKMT_ALIGN64
UINT64 NumBytesToTrim;
4801typedef struct _D3DKMT_LOCK2
4803 D3DKMT_HANDLE hDevice;
4804 D3DKMT_HANDLE hAllocation;
4805 D3DDDICB_LOCK2FLAGS
Flags;
4809typedef struct _D3DKMT_UNLOCK2
4811 D3DKMT_HANDLE hDevice;
4812 D3DKMT_HANDLE hAllocation;
4815typedef struct _D3DKMT_INVALIDATECACHE
4817 D3DKMT_HANDLE hDevice;
4818 D3DKMT_HANDLE hAllocation;
4819 D3DKMT_ALIGN64 D3DKMT_SIZE_T
Offset;
4820 D3DKMT_ALIGN64 D3DKMT_SIZE_T
Length;
4821} D3DKMT_INVALIDATECACHE;
4823typedef struct _D3DKMT_FREEGPUVIRTUALADDRESS
4825 D3DKMT_HANDLE hAdapter;
4826 D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS
BaseAddress;
4827 D3DKMT_ALIGN64 D3DGPU_SIZE_T
Size;
4828} D3DKMT_FREEGPUVIRTUALADDRESS;
4830typedef struct _D3DKMT_UPDATEGPUVIRTUALADDRESS
4832 D3DKMT_HANDLE hDevice;
4833 D3DKMT_HANDLE hContext;
4834 D3DKMT_HANDLE hFenceObject;
4836 D3DKMT_PTR(D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION*, Operations);
4837 D3DKMT_ALIGN64 D3DKMT_SIZE_T Reserved0;
4839 D3DKMT_ALIGN64
UINT64 FenceValue;
4849} D3DKMT_UPDATEGPUVIRTUALADDRESS;
4851typedef struct _D3DKMT_CREATECONTEXTVIRTUAL
4853 D3DKMT_HANDLE hDevice;
4855 UINT EngineAffinity;
4856 D3DDDI_CREATECONTEXTFLAGS
Flags;
4857 D3DKMT_PTR(
VOID*, pPrivateDriverData);
4858 UINT PrivateDriverDataSize;
4859 D3DKMT_CLIENTHINT ClientHint;
4860 D3DKMT_HANDLE hContext;
4861} D3DKMT_CREATECONTEXTVIRTUAL;
4863typedef struct _D3DKMT_SUBMITCOMMANDFLAGS
4865 UINT NullRendering : 1;
4866 UINT PresentRedirected : 1;
4867 UINT NoKmdAccess : 1;
4869} D3DKMT_SUBMITCOMMANDFLAGS;
4871typedef struct _D3DKMT_SUBMITCOMMAND
4873 D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS
Commands;
4875 D3DKMT_SUBMITCOMMANDFLAGS
Flags;
4876 D3DKMT_ALIGN64
ULONGLONG PresentHistoryToken;
4877 UINT BroadcastContextCount;
4878 D3DKMT_HANDLE BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
4879 D3DKMT_PTR(
VOID*, pPrivateDriverData);
4880 UINT PrivateDriverDataSize;
4882 D3DKMT_HANDLE WrittenPrimaries[D3DDDI_MAX_WRITTEN_PRIMARIES];
4883 UINT NumHistoryBuffers;
4884 D3DKMT_PTR(D3DKMT_HANDLE*, HistoryBufferArray);
4885} D3DKMT_SUBMITCOMMAND;
4887#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
4889typedef struct _D3DKMT_SUBMITCOMMANDTOHWQUEUE
4891 D3DKMT_HANDLE hHwQueue;
4893 D3DKMT_ALIGN64
UINT64 HwQueueProgressFenceId;
4895 D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS CommandBuffer;
4898 UINT PrivateDriverDataSize;
4901 VOID*, pPrivateDriverData);
4906 D3DKMT_HANDLE
CONST*, WrittenPrimaries);
4907} D3DKMT_SUBMITCOMMANDTOHWQUEUE;
4909typedef struct _D3DKMT_SUBMITWAITFORSYNCOBJECTSTOHWQUEUE
4911 D3DKMT_HANDLE hHwQueue;
4916 const D3DKMT_HANDLE*, ObjectHandleArray);
4919 const UINT64*, FenceValueArray);
4920} D3DKMT_SUBMITWAITFORSYNCOBJECTSTOHWQUEUE;
4922typedef struct _D3DKMT_SUBMITSIGNALSYNCOBJECTSTOHWQUEUE
4924 D3DDDICB_SIGNALFLAGS
Flags;
4926 ULONG BroadcastHwQueueCount;
4929 const D3DKMT_HANDLE*, BroadcastHwQueueArray);
4934 const D3DKMT_HANDLE*, ObjectHandleArray);
4937 const UINT64*, FenceValueArray);
4938} D3DKMT_SUBMITSIGNALSYNCOBJECTSTOHWQUEUE;
4942typedef struct _D3DKMT_QUERYVIDEOMEMORYINFO
4946 D3DKMT_HANDLE hAdapter;
4947 D3DKMT_MEMORY_SEGMENT_GROUP MemorySegmentGroup;
4948 D3DKMT_ALIGN64
UINT64 Budget;
4949 D3DKMT_ALIGN64
UINT64 CurrentUsage;
4950 D3DKMT_ALIGN64
UINT64 CurrentReservation;
4951 D3DKMT_ALIGN64
UINT64 AvailableForReservation;
4952 UINT PhysicalAdapterIndex;
4953} D3DKMT_QUERYVIDEOMEMORYINFO;
4955typedef struct _D3DKMT_CHANGEVIDEOMMEMORYRESERVATION
4959 D3DKMT_HANDLE hAdapter;
4960 D3DKMT_MEMORY_SEGMENT_GROUP MemorySegmentGroup;
4961 D3DKMT_ALIGN64
UINT64 Reservation;
4962 UINT PhysicalAdapterIndex;
4963} D3DKMT_CHANGEVIDEOMEMORYRESERVATION;
4965typedef struct _D3DKMT_SETSTABLEPOWERSTATE
4967 D3DKMT_HANDLE hAdapter;
4969} D3DKMT_SETSTABLEPOWERSTATE;
4972typedef struct _D3DKMT_SHAREOBJECTS {
4975 CONST D3DKMT_HANDLE*, ObjectHandleArray);
4976 D3DKMT_PTR(
PVOID, pObjectAttributes);
4978 D3DKMT_PTR(
HANDLE*, pSharedNtHandle);
4979} D3DKMT_SHAREOBJECTS;
4981typedef struct _D3DKMT_SHAREOBJECTWITHHOST
4983 D3DKMT_HANDLE hDevice;
4984 D3DKMT_HANDLE hObject;
4986 D3DKMT_ALIGN64
UINT64 hVailProcessNtHandle;
4987} D3DKMT_SHAREOBJECTWITHHOST;
4996typedef struct _D3DKMT_CREATESYNCFILE
4998 D3DKMT_HANDLE hDevice;
4999 D3DKMT_HANDLE hMonitoredFence;
5000 D3DKMT_ALIGN64
UINT64 FenceValue;
5001 D3DKMT_ALIGN64
UINT64 hSyncFile;
5002} D3DKMT_CREATESYNCFILE;
5004typedef struct _D3DKMT_TRIMNOTIFICATION
5007 D3DDDI_TRIMRESIDENCYSET_FLAGS
Flags;
5008 D3DKMT_ALIGN64
UINT64 NumBytesToTrim;
5010} D3DKMT_TRIMNOTIFICATION;
5012typedef VOID (
APIENTRY *PFND3DKMT_TRIMNOTIFICATIONCALLBACK)(
_Inout_ D3DKMT_TRIMNOTIFICATION*);
5014typedef struct _D3DKMT_REGISTERTRIMNOTIFICATION
5017 D3DKMT_HANDLE hDevice;
5018 PFND3DKMT_TRIMNOTIFICATIONCALLBACK
Callback;
5021} D3DKMT_REGISTERTRIMNOTIFICATION;
5023typedef struct _D3DKMT_UNREGISTERTRIMNOTIFICATION
5027 D3DKMT_PTR(PFND3DKMT_TRIMNOTIFICATIONCALLBACK,
Callback);
5031} D3DKMT_UNREGISTERTRIMNOTIFICATION;
5033typedef struct _D3DKMT_BUDGETCHANGENOTIFICATION
5036 D3DKMT_ALIGN64
UINT64 Budget;
5037} D3DKMT_BUDGETCHANGENOTIFICATION;
5039typedef VOID (
APIENTRY *PFND3DKMT_BUDGETCHANGENOTIFICATIONCALLBACK)(
_In_ D3DKMT_BUDGETCHANGENOTIFICATION*);
5041typedef struct _D3DKMT_REGISTERBUDGETCHANGENOTIFICATION
5043 D3DKMT_HANDLE hDevice;
5044 D3DKMT_PTR(PFND3DKMT_BUDGETCHANGENOTIFICATIONCALLBACK,
Callback);
5047} D3DKMT_REGISTERBUDGETCHANGENOTIFICATION;
5049typedef struct _D3DKMT_UNREGISTERBUDGETCHANGENOTIFICATION
5052} D3DKMT_UNREGISTERBUDGETCHANGENOTIFICATION;
5054typedef struct _D3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP
5057 D3DKMT_PTR(
HWND, hWindow);
5058 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
5060 D3DKMT_VIDPNSOURCEOWNER_TYPE OwnerType;
5061} D3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP;
5064typedef enum _D3DKMT_DEVICE_ERROR_REASON {
5065 D3DKMT_DEVICE_ERROR_REASON_GENERIC = 0x80000000,
5066 D3DKMT_DEVICE_ERROR_REASON_DRIVER_ERROR = 0x80000006,
5067} D3DKMT_DEVICE_ERROR_REASON;
5069typedef struct _D3DKMT_MARKDEVICEASERROR
5071 D3DKMT_HANDLE hDevice;
5072 D3DKMT_DEVICE_ERROR_REASON
Reason;
5073} D3DKMT_MARKDEVICEASERROR;
5075typedef struct _D3DKMT_FLUSHHEAPTRANSITIONS
5077 D3DKMT_HANDLE hAdapter;
5078} D3DKMT_FLUSHHEAPTRANSITIONS;
5080typedef struct _D3DKMT_QUERYPROCESSOFFERINFO
5086} D3DKMT_QUERYPROCESSOFFERINFO;
5088typedef union _D3DKMT_TRIMPROCESSCOMMITMENT_FLAGS
5093 UINT OnlyRepurposed : 1;
5097} D3DKMT_TRIMPROCESSCOMMITMENT_FLAGS;
5099typedef struct _D3DKMT_TRIMPROCESSCOMMITMENT
5103 _In_ D3DKMT_TRIMPROCESSCOMMITMENT_FLAGS
Flags;
5104 _In_ D3DKMT_ALIGN64
UINT64 DecommitRequested;
5106} D3DKMT_TRIMPROCESSCOMMITMENT;
5108#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
5110typedef struct _D3DKMT_CREATEHWCONTEXT
5112 D3DKMT_HANDLE hDevice;
5114 UINT EngineAffinity;
5115 D3DDDI_CREATEHWCONTEXTFLAGS
Flags;
5116 UINT PrivateDriverDataSize;
5119 VOID*, pPrivateDriverData);
5120 D3DKMT_HANDLE hHwContext;
5121} D3DKMT_CREATEHWCONTEXT;
5123typedef struct _D3DKMT_DESTROYHWCONTEXT
5125 D3DKMT_HANDLE hHwContext;
5126} D3DKMT_DESTROYHWCONTEXT;
5128typedef struct _D3DKMT_CREATEHWQUEUE
5130 D3DKMT_HANDLE hHwContext;
5131 D3DDDI_CREATEHWQUEUEFLAGS
Flags;
5132 UINT PrivateDriverDataSize;
5135 VOID*, pPrivateDriverData);
5136 D3DKMT_HANDLE hHwQueue;
5137 D3DKMT_HANDLE hHwQueueProgressFence;
5138 D3DKMT_PTR(
VOID*, HwQueueProgressFenceCPUVirtualAddress);
5139 D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS HwQueueProgressFenceGPUVirtualAddress;
5140} D3DKMT_CREATEHWQUEUE;
5142typedef struct _D3DKMT_DESTROYHWQUEUE
5144 D3DKMT_HANDLE hHwQueue;
5145} D3DKMT_DESTROYHWQUEUE;
5147typedef struct _D3DKMT_GETALLOCATIONPRIORITY
5149 D3DKMT_HANDLE hDevice;
5150 D3DKMT_HANDLE hResource;
5151 D3DKMT_PTR(
CONST D3DKMT_HANDLE*, phAllocationList);
5152 UINT AllocationCount;
5153 D3DKMT_PTR(
UINT*, pPriorities);
5154} D3DKMT_GETALLOCATIONPRIORITY;
5164#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
5165typedef union _D3DKMT_SETFSEBLOCKFLAGS
5173} D3DKMT_SETFSEBLOCKFLAGS;
5175typedef struct _D3DKMT_SETFSEBLOCK
5178 D3DKMT_HANDLE hAdapter;
5179 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
5180 D3DKMT_SETFSEBLOCKFLAGS
Flags;
5181} D3DKMT_SETFSEBLOCK;
5183typedef union _D3DKMT_QUERYFSEFLAGS
5191} D3DKMT_QUERYFSEBLOCKFLAGS;
5193typedef struct _D3DKMT_QUERYFSEBLOCK
5196 D3DKMT_HANDLE hAdapter;
5197 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
5198 D3DKMT_QUERYFSEBLOCKFLAGS
Flags;
5199} D3DKMT_QUERYFSEBLOCK;
5202#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
5205#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
5207typedef struct _D3DKMT_CREATEPROTECTEDSESSION
5209 D3DKMT_HANDLE hDevice;
5210 D3DKMT_HANDLE hSyncObject;
5213 UINT PrivateDriverDataSize;
5216 UINT PrivateRuntimeDataSize;
5218 D3DKMT_HANDLE hHandle;
5220} D3DKMT_CREATEPROTECTEDSESSION;
5222typedef struct _D3DKMT_DESTROYPROTECTEDSESSION
5224 D3DKMT_HANDLE hHandle;
5226} D3DKMT_DESTROYPROTECTEDSESSION;
5228typedef enum _D3DKMT_PROTECTED_SESSION_STATUS
5230 D3DKMT_PROTECTED_SESSION_STATUS_OK = 0,
5231 D3DKMT_PROTECTED_SESSION_STATUS_INVALID = 1,
5232} D3DKMT_PROTECTED_SESSION_STATUS;
5234typedef struct _D3DKMT_QUERYPROTECTEDSESSIONSTATUS
5236 D3DKMT_HANDLE hHandle;
5237 D3DKMT_PROTECTED_SESSION_STATUS
Status;
5239} D3DKMT_QUERYPROTECTEDSESSIONSTATUS;
5241typedef struct _D3DKMT_QUERYPROTECTEDSESSIONINFOFROMNTHANDLE
5243 D3DKMT_PTR(
HANDLE, hNtHandle);
5246 UINT PrivateDriverDataSize;
5249 UINT PrivateRuntimeDataSize;
5251} D3DKMT_QUERYPROTECTEDSESSIONINFOFROMNTHANDLE;
5253typedef struct _D3DKMT_OPENPROTECTEDSESSIONFROMNTHANDLE
5255 D3DKMT_PTR(
HANDLE, hNtHandle);
5256 D3DKMT_HANDLE hHandle;
5258} D3DKMT_OPENPROTECTEDSESSIONFROMNTHANDLE;
5261typedef struct _D3DKMT_GETPROCESSDEVICEREMOVALSUPPORT
5267} D3DKMT_GETPROCESSDEVICEREMOVALSUPPORT;
5273typedef enum _D3DKMT_TRACKEDWORKLOADPOLICY
5275 D3DKMT_TRACKEDWORKLOADPOLICY_NORMAL = 0,
5276 D3DKMT_TRACKEDWORKLOADPOLICY_ENERGY_EFFICIENT = 1,
5277 D3DKMT_TRACKEDWORKLOADPOLICY_HIGH_SPEED = 2
5278} D3DKMT_TRACKEDWORKLOADPOLICY;
5280typedef enum _D3DKMT_TRACKEDWORKLOADDEADLINETYPE
5282 D3DKMT_TRACKEDWORKLOADDEADLINETYPE_ABSOLUTE = 0,
5283 D3DKMT_TRACKEDWORKLOADDEADLINETYPE_VBLANK = 1,
5284} D3DKMT_TRACKEDWORKLOADDEADLINETYPE;
5286typedef struct _D3DKMT_TRACKEDWORKLOADDEADLINE {
5288 D3DKMT_ALIGN64
UINT64 VBlankOffsetHundredsNS;
5289 D3DKMT_ALIGN64
UINT64 AbsoluteQPC;
5291} D3DKMT_TRACKEDWORKLOADDEADLINE;
5293typedef struct _D3DKMT_TRACKEDWORKLOADFLAGS
5300 UINT SimilarLoad : 1;
5305} D3DKMT_TRACKEDWORKLOADFLAGS;
5307#define D3DKMT_MAX_TRACKED_WORKLOAD_INSTANCE_PAIRS 32
5309typedef struct _D3DKMT_CREATETRACKEDWORKLOAD
5314 const D3DKMT_HANDLE*, ContextArray);
5315 D3DKMT_TRACKEDWORKLOADDEADLINETYPE DeadlineType;
5317 D3DKMT_TRACKEDWORKLOADFLAGS
Flags;
5318 D3DKMT_TRACKEDWORKLOADPOLICY
Policy;
5320 UINT MaxInstancePairs;
5321 D3DKMT_HANDLE hResourceQueryTimestamps;
5322 D3DKMT_HANDLE hTrackedWorkload;
5323} D3DKMT_CREATETRACKEDWORKLOAD;
5325typedef struct _D3DKMT_DESTROYTRACKEDWORKLOAD
5328 D3DKMT_HANDLE hTrackedWorkload;
5329} D3DKMT_DESTROYTRACKEDWORKLOAD;
5331typedef struct _D3DKMT_UPDATETRACKEDWORKLOAD
5334 D3DKMT_HANDLE hTrackedWorkload;
5335 D3DKMT_TRACKEDWORKLOADDEADLINE FinishDeadline;
5336 UINT BeginTrackedWorkloadIndex;
5337 UINT EndTrackedWorkloadIndex;
5340 D3DKMT_ALIGN64
UINT64 PairID;
5341 D3DKMT_ALIGN64
UINT64 FenceSubmissionValue;
5342 D3DKMT_ALIGN64
UINT64 FenceCompletedValue;
5343 D3DKMT_ALIGN64
UINT64 GPUTimestampFrequency;
5344 D3DKMT_ALIGN64
UINT64 GPUCalibrationTimestamp;
5345 D3DKMT_ALIGN64
UINT64 CPUCalibrationTimestamp;
5346 D3DKMT_ALIGN64
UINT64 TimestampArray[D3DKMT_MAX_TRACKED_WORKLOAD_INSTANCE_PAIRS * 2];
5347 BOOL TimestampArrayProcessed;
5348} D3DKMT_UPDATETRACKEDWORKLOAD;
5350typedef struct _D3DKMT_GETAVAILABLETRACKEDWORKLOADINDEX
5353 D3DKMT_HANDLE hTrackedWorkload;
5354 D3DKMT_ALIGN64
UINT64 FenceCompletedValue;
5355 D3DKMT_ALIGN64
UINT64 TimestampArray[D3DKMT_MAX_TRACKED_WORKLOAD_INSTANCE_PAIRS * 2];
5356 UINT AvailableTrackedWorkloadIndex;
5357 BOOL TimestampArrayProcessed;
5358} D3DKMT_GETAVAILABLETRACKEDWORKLOADINDEX;
5360typedef struct _D3DKMT_TRACKEDWORKLOADSTATEFLAGS
5367 UINT NotEnoughSamples: 1;
5372} D3DKMT_TRACKEDWORKLOADSTATEFLAGS;
5374typedef struct _D3DKMT_TRACKEDWORKLOAD_STATISTICS
5376 D3DKMT_ALIGN64
INT64 Mean;
5377 D3DKMT_ALIGN64
INT64 Minimum;
5378 D3DKMT_ALIGN64
INT64 Maximum;
5379 D3DKMT_ALIGN64
INT64 Variance;
5381} D3DKMT_TRACKEDWORKLOAD_STATISTICS;
5383typedef struct _D3DKMT_GETTRACKEDWORKLOADSTATISTICS
5386 D3DKMT_HANDLE hTrackedWorkload;
5387 D3DKMT_ALIGN64
UINT64 FenceCompletedValue;
5388 D3DKMT_ALIGN64
UINT64 TimestampArray[D3DKMT_MAX_TRACKED_WORKLOAD_INSTANCE_PAIRS * 2];
5389 BOOL TimestampArrayProcessed;
5390 D3DKMT_TRACKEDWORKLOAD_STATISTICS DeadlineOffsetHundredsNS;
5391 D3DKMT_ALIGN64
UINT64 MissedDeadlines;
5392 D3DKMT_TRACKEDWORKLOADSTATEFLAGS
Flags;
5393} D3DKMT_GETTRACKEDWORKLOADSTATISTICS;
5395typedef struct _D3DKMT_RESETTRACKEDWORKLOADSTATISTICS
5398 D3DKMT_HANDLE hTrackedWorkload;
5399} D3DKMT_RESETTRACKEDWORKLOADSTATISTICS;
5401#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
5410#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
5428#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)