2024-10-17 07:26:01 +00:00
/******************************Module*Header**********************************\
*
* Module Name : d3dkmthk . h
*
* Content : Windows Display Driver Model ( WDDM ) kernel mode thunk interfaces
*
* Copyright ( c ) Microsoft Corporation .
* Licensed under the MIT License .
*
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifndef _D3DKMTHK_H_
# define _D3DKMTHK_H_
# include <d3dkmdt.h>
# pragma region Desktop Family
# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
# pragma warning(push)
# pragma warning(disable:4201) // anonymous unions warning
# pragma warning(disable:4200) // zero-sized array in struct/union
# pragma warning(disable:4214) // nonstandard extension used: bit field types other than int
typedef struct _OBJECT_ATTRIBUTES OBJECT_ATTRIBUTES ;
typedef OBJECT_ATTRIBUTES * POBJECT_ATTRIBUTES ;
//
// Available only for Vista (LONGHORN) and later and for
// multiplatform tools such as debugger extensions
//
2024-10-19 19:27:23 +00:00
# if defined(__REACTOS__) || ((NTDDI_VERSION >= NTDDI_LONGHORN) || defined(D3DKMDT_SPECIAL_MULTIPLATFORM_TOOL))
2024-10-17 07:26:01 +00:00
typedef struct _D3DKMT_CREATEDEVICEFLAGS
{
UINT LegacyMode : 1 ; // 0x00000001
UINT RequestVSync : 1 ; // 0x00000002
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
UINT DisableGpuTimeout : 1 ; // 0x00000004
UINT Reserved : 29 ; // 0xFFFFFFF8
# else
UINT Reserved : 30 ; // 0xFFFFFFFC
# endif
} D3DKMT_CREATEDEVICEFLAGS ;
typedef struct _D3DKMT_CREATEDEVICE
{
union
{
D3DKMT_HANDLE hAdapter ; // in: identifies the adapter for user-mode creation
VOID * pAdapter ; // in: identifies the adapter for kernel-mode creation
D3DKMT_PTR_HELPER ( pAdapter_Align )
} ;
D3DKMT_CREATEDEVICEFLAGS Flags ;
D3DKMT_HANDLE hDevice ; // out: Identifies the device
D3DKMT_PTR ( VOID * , pCommandBuffer ) ; // out: D3D10 compatibility.
UINT CommandBufferSize ; // out: D3D10 compatibility.
D3DKMT_PTR ( D3DDDI_ALLOCATIONLIST * , pAllocationList ) ; // out: D3D10 compatibility.
UINT AllocationListSize ; // out: D3D10 compatibility.
D3DKMT_PTR ( D3DDDI_PATCHLOCATIONLIST * , pPatchLocationList ) ; // out: D3D10 compatibility.
UINT PatchLocationListSize ; // out: D3D10 compatibility.
} D3DKMT_CREATEDEVICE ;
typedef struct _D3DKMT_DESTROYDEVICE
{
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
} D3DKMT_DESTROYDEVICE ;
typedef enum _D3DKMT_CLIENTHINT
{
D3DKMT_CLIENTHINT_UNKNOWN = 0 ,
D3DKMT_CLIENTHINT_OPENGL = 1 ,
D3DKMT_CLIENTHINT_CDD = 2 , // Internal
D3DKMT_CLIENTHINT_OPENCL = 3 ,
D3DKMT_CLIENTHINT_VULKAN = 4 ,
D3DKMT_CLIENTHINT_CUDA = 5 ,
D3DKMT_CLIENTHINT_RESERVED = 6 ,
D3DKMT_CLIENTHINT_DX7 = 7 ,
D3DKMT_CLIENTHINT_DX8 = 8 ,
D3DKMT_CLIENTHINT_DX9 = 9 ,
D3DKMT_CLIENTHINT_DX10 = 10 ,
D3DKMT_CLIENTHINT_DX11 = 11 ,
D3DKMT_CLIENTHINT_DX12 = 12 ,
D3DKMT_CLIENTHINT_9ON12 = 13 ,
D3DKMT_CLIENTHINT_11ON12 = 14 ,
D3DKMT_CLIENTHINT_MFT_ENCODE = 15 ,
D3DKMT_CLIENTHINT_GLON12 = 16 ,
D3DKMT_CLIENTHINT_CLON12 = 17 ,
D3DKMT_CLIENTHINT_DML_TENSORFLOW = 18 ,
D3DKMT_CLIENTHINT_ONEAPI_LEVEL0 = 19 ,
D3DKMT_CLIENTHINT_MAX
} D3DKMT_CLIENTHINT ;
typedef struct _D3DKMT_CREATECONTEXT
{
D3DKMT_HANDLE hDevice ; // in: Handle to the device owning this context.
UINT NodeOrdinal ; // in: Identifier for the node targetted by this context.
UINT EngineAffinity ; // in: Engine affinity within the specified node.
D3DDDI_CREATECONTEXTFLAGS Flags ; // in: Context creation flags.
D3DKMT_PTR ( VOID * , pPrivateDriverData ) ; // in: Private driver data
UINT PrivateDriverDataSize ; // in: Size of private driver data
D3DKMT_CLIENTHINT ClientHint ; // in: Hints which client is creating this
D3DKMT_HANDLE hContext ; // out: Handle of the created context.
D3DKMT_PTR ( VOID * , pCommandBuffer ) ; // out: Pointer to the first command buffer.
UINT CommandBufferSize ; // out: Command buffer size (bytes).
D3DKMT_PTR ( D3DDDI_ALLOCATIONLIST * , pAllocationList ) ; // out: Pointer to the first allocation list.
UINT AllocationListSize ; // out: Allocation list size (elements).
D3DKMT_PTR ( D3DDDI_PATCHLOCATIONLIST * , pPatchLocationList ) ; // out: Pointer to the first patch location list.
UINT PatchLocationListSize ; // out: Patch location list size (elements).
D3DGPU_VIRTUAL_ADDRESS CommandBuffer ; // out: GPU virtual address of the command buffer. _ADVSCH_
} D3DKMT_CREATECONTEXT ;
typedef struct _D3DKMT_DESTROYCONTEXT
{
D3DKMT_HANDLE hContext ; // in: Identifies the context being destroyed.
} D3DKMT_DESTROYCONTEXT ;
typedef struct _D3DKMT_CREATESYNCHRONIZATIONOBJECT
{
D3DKMT_HANDLE hDevice ; // in: Handle to the device.
D3DDDI_SYNCHRONIZATIONOBJECTINFO Info ; // in: Attributes of the synchronization object.
D3DKMT_HANDLE hSyncObject ; // out: Handle to the synchronization object created.
} D3DKMT_CREATESYNCHRONIZATIONOBJECT ;
typedef struct _D3DKMT_CREATESYNCHRONIZATIONOBJECT2
{
D3DKMT_HANDLE hDevice ; // in: Handle to the device.
D3DDDI_SYNCHRONIZATIONOBJECTINFO2 Info ; // in/out: Attributes of the synchronization object.
D3DKMT_HANDLE hSyncObject ; // out: Handle to the synchronization object created.
} D3DKMT_CREATESYNCHRONIZATIONOBJECT2 ;
typedef struct _D3DKMT_DESTROYSYNCHRONIZATIONOBJECT
{
D3DKMT_HANDLE hSyncObject ; // in: Identifies the synchronization objects being destroyed.
} D3DKMT_DESTROYSYNCHRONIZATIONOBJECT ;
typedef struct _D3DKMT_OPENSYNCHRONIZATIONOBJECT
{
D3DKMT_HANDLE hSharedHandle ; // in: shared handle to synchronization object to be opened.
D3DKMT_HANDLE hSyncObject ; // out: Handle to sync object in this process.
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
} D3DKMT_OPENSYNCHRONIZATIONOBJECT ;
typedef struct _D3DKMT_WAITFORSYNCHRONIZATIONOBJECT
{
D3DKMT_HANDLE hContext ; // in: Identifies the context that needs to wait.
UINT ObjectCount ; // in: Specifies the number of object to wait on.
D3DKMT_HANDLE ObjectHandleArray [ D3DDDI_MAX_OBJECT_WAITED_ON ] ; // in: Specifies the object to wait on.
} D3DKMT_WAITFORSYNCHRONIZATIONOBJECT ;
typedef struct _D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2
{
D3DKMT_HANDLE hContext ; // in: Identifies the context that needs to wait.
UINT ObjectCount ; // in: Specifies the number of object to wait on.
D3DKMT_HANDLE ObjectHandleArray [ D3DDDI_MAX_OBJECT_WAITED_ON ] ; // in: Specifies the object to wait on.
union
{
struct {
D3DKMT_ALIGN64 UINT64 FenceValue ; // in: fence value to be waited.
} Fence ;
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
} ;
} D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2 ;
typedef struct _D3DKMT_SIGNALSYNCHRONIZATIONOBJECT
{
D3DKMT_HANDLE hContext ; // in: Identifies the context that needs to signal.
UINT ObjectCount ; // in: Specifies the number of object to signal.
D3DKMT_HANDLE ObjectHandleArray [ D3DDDI_MAX_OBJECT_SIGNALED ] ; // in: Specifies the object to be signaled.
D3DDDICB_SIGNALFLAGS Flags ; // in: Specifies signal behavior.
} D3DKMT_SIGNALSYNCHRONIZATIONOBJECT ;
typedef struct _D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2
{
D3DKMT_HANDLE hContext ; // in: Identifies the context that needs to signal.
UINT ObjectCount ; // in: Specifies the number of object to signal.
D3DKMT_HANDLE ObjectHandleArray [ D3DDDI_MAX_OBJECT_SIGNALED ] ; // in: Specifies the object to be signaled.
D3DDDICB_SIGNALFLAGS Flags ; // in: Specifies signal behavior.
ULONG BroadcastContextCount ; // in: Specifies the number of context
// to broadcast this command buffer to.
D3DKMT_HANDLE BroadcastContext [ D3DDDI_MAX_BROADCAST_CONTEXT ] ; // in: Specifies the handle of the context to
// broadcast to.
union
{
struct {
D3DKMT_ALIGN64 UINT64 FenceValue ; // in: fence value to be signaled;
} Fence ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
HANDLE CpuEventHandle ; // in: handle of a CPU event to be signaled
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
} ;
} D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2 ;
typedef struct _D3DKMT_LOCK
{
D3DKMT_HANDLE hDevice ; // in: identifies the device
D3DKMT_HANDLE hAllocation ; // in: allocation to lock
// out: New handle representing the allocation after the lock.
UINT PrivateDriverData ; // in: Used by UMD for AcquireAperture
UINT NumPages ;
D3DKMT_PTR ( CONST UINT * , pPages ) ;
D3DKMT_PTR ( VOID * , pData ) ; // out: pointer to memory
D3DDDICB_LOCKFLAGS Flags ; // in: Bit field defined by D3DDDI_LOCKFLAGS
D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress ; // out: GPU's Virtual Address of locked allocation. _ADVSCH_
} D3DKMT_LOCK ;
typedef struct _D3DKMT_UNLOCK
{
D3DKMT_HANDLE hDevice ; // in: Identifies the device
UINT NumAllocations ; // in: Number of allocations in the array
D3DKMT_PTR ( CONST D3DKMT_HANDLE * , phAllocations ) ; // in: array of allocations to unlock
} D3DKMT_UNLOCK ;
typedef enum _D3DKMDT_MODE_PRUNING_REASON
{
D3DKMDT_MPR_UNINITIALIZED = 0 , // mode was pruned or is supported because of:
D3DKMDT_MPR_ALLCAPS = 1 , // all of the monitor caps (only used to imply lack of support - for support, specific reason is always indicated)
D3DKMDT_MPR_DESCRIPTOR_MONITOR_SOURCE_MODE = 2 , // monitor source mode in the monitor descriptor
D3DKMDT_MPR_DESCRIPTOR_MONITOR_FREQUENCY_RANGE = 3 , // monitor frequency range in the monitor descriptor
D3DKMDT_MPR_DESCRIPTOR_OVERRIDE_MONITOR_SOURCE_MODE = 4 , // monitor source mode in the monitor descriptor override
D3DKMDT_MPR_DESCRIPTOR_OVERRIDE_MONITOR_FREQUENCY_RANGE = 5 , // monitor frequency range in the monitor descriptor override
D3DKMDT_MPR_DEFAULT_PROFILE_MONITOR_SOURCE_MODE = 6 , // monitor source mode in the default monitor profile
D3DKMDT_MPR_DRIVER_RECOMMENDED_MONITOR_SOURCE_MODE = 7 , // monitor source mode recommended by the driver
D3DKMDT_MPR_MONITOR_FREQUENCY_RANGE_OVERRIDE = 8 , // monitor frequency range override
D3DKMDT_MPR_CLONE_PATH_PRUNED = 9 , // Mode is pruned because other path(s) in clone cluster has(have) no mode supported by monitor
D3DKMDT_MPR_MAXVALID = 10
}
D3DKMDT_MODE_PRUNING_REASON ;
// This structure takes 8 bytes.
// The unnamed UINT of size 0 forces alignment of the structure to
// make it exactly occupy 8 bytes, see MSDN docs on C++ bitfields
// for more details
typedef struct _D3DKMDT_DISPLAYMODE_FLAGS
{
# if (DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WIN8)
BOOLEAN ValidatedAgainstMonitorCaps : 1 ;
BOOLEAN RoundedFakeMode : 1 ;
D3DKMDT_MODE_PRUNING_REASON ModePruningReason : 4 ;
UINT Reserved : 28 ;
# else
UINT ValidatedAgainstMonitorCaps : 1 ;
UINT RoundedFakeMode : 1 ;
UINT : 0 ;
D3DKMDT_MODE_PRUNING_REASON ModePruningReason : 4 ;
UINT Stereo : 1 ;
UINT AdvancedScanCapable : 1 ;
# if (DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WDDM2_0)
UINT Reserved : 26 ;
# else
UINT PreferredTiming : 1 ;
UINT PhysicalModeSupported : 1 ;
# if (DXGKDDI_INTERFACE_VERSION < DXGKDDI_INTERFACE_VERSION_WDDM2_9)
UINT Reserved : 24 ;
# else
UINT VirtualRefreshRate : 1 ;
UINT Reserved : 23 ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_9
# endif
# endif
}
D3DKMDT_DISPLAYMODE_FLAGS ;
typedef struct _D3DKMT_DISPLAYMODE
{
UINT Width ;
UINT Height ;
D3DDDIFORMAT Format ;
UINT IntegerRefreshRate ;
D3DDDI_RATIONAL RefreshRate ;
D3DDDI_VIDEO_SIGNAL_SCANLINE_ORDERING ScanLineOrdering ;
D3DDDI_ROTATION DisplayOrientation ;
UINT DisplayFixedOutput ;
D3DKMDT_DISPLAYMODE_FLAGS Flags ;
} D3DKMT_DISPLAYMODE ;
typedef struct _D3DKMT_GETDISPLAYMODELIST
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN source ID
D3DKMT_PTR ( D3DKMT_DISPLAYMODE * , pModeList ) ; // out:
UINT ModeCount ; // in/out:
} D3DKMT_GETDISPLAYMODELIST ;
typedef struct _D3DKMT_DISPLAYMODELIST
{
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
UINT ModeCount ;
D3DKMT_DISPLAYMODE pModeList [ 0 ] ;
} D3DKMT_DISPLAYMODELIST ;
typedef struct _D3DKMT_SETDISPLAYMODE_FLAGS
{
BOOLEAN PreserveVidPn : 1 ;
UINT Reserved : 31 ;
}
D3DKMT_SETDISPLAYMODE_FLAGS ;
typedef struct _D3DKMT_SETDISPLAYMODE
{
D3DKMT_HANDLE hDevice ; // in: Identifies the device
D3DKMT_HANDLE hPrimaryAllocation ; // in:
D3DDDI_VIDEO_SIGNAL_SCANLINE_ORDERING ScanLineOrdering ; // in:
D3DDDI_ROTATION DisplayOrientation ; // in:
UINT PrivateDriverFormatAttribute ; // out: Private Format Attribute of the current primary surface if DxgkSetDisplayMode failed with STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT
D3DKMT_SETDISPLAYMODE_FLAGS Flags ; // in:
} D3DKMT_SETDISPLAYMODE ;
typedef struct _D3DKMT_MULTISAMPLEMETHOD
{
UINT NumSamples ;
UINT NumQualityLevels ;
UINT Reserved ; //workaround for NTRAID#Longhorn-1124385-2005/03/14-kanqiu
} D3DKMT_MULTISAMPLEMETHOD ;
typedef struct _D3DKMT_GETMULTISAMPLEMETHODLIST
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN source ID
UINT Width ; // in:
UINT Height ; // in:
D3DDDIFORMAT Format ; // in:
D3DKMT_PTR ( D3DKMT_MULTISAMPLEMETHOD * , pMethodList ) ; // out:
UINT MethodCount ; // in/out:
} D3DKMT_GETMULTISAMPLEMETHODLIST ;
typedef struct _D3DKMT_PRESENTFLAGS
{
union
{
struct
{
UINT Blt : 1 ; // 0x00000001
UINT ColorFill : 1 ; // 0x00000002
UINT Flip : 1 ; // 0x00000004
UINT FlipDoNotFlip : 1 ; // 0x00000008
UINT FlipDoNotWait : 1 ; // 0x00000010
UINT FlipRestart : 1 ; // 0x00000020
UINT DstRectValid : 1 ; // 0x00000040
UINT SrcRectValid : 1 ; // 0x00000080
UINT RestrictVidPnSource : 1 ; // 0x00000100
UINT SrcColorKey : 1 ; // 0x00000200
UINT DstColorKey : 1 ; // 0x00000400
UINT LinearToSrgb : 1 ; // 0x00000800
UINT PresentCountValid : 1 ; // 0x00001000
UINT Rotate : 1 ; // 0x00002000
UINT PresentToBitmap : 1 ; // 0x00004000
UINT RedirectedFlip : 1 ; // 0x00008000
UINT RedirectedBlt : 1 ; // 0x00010000
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
UINT FlipStereo : 1 ; // 0x00020000 // This is a flip from a stereo alloc. Used in addition to Flip.
UINT FlipStereoTemporaryMono : 1 ; // 0x00040000 // This is a flip from a stereo alloc. The left image should used to produce both images. Used in addition to Flip.
UINT FlipStereoPreferRight : 1 ; // 0x00080000 // This is a flip from a stereo alloc. Use the right image when cloning to a mono monitor. Used in addition to Flip.
UINT BltStereoUseRight : 1 ; // 0x00100000 // This is a Blt from a stereo alloc to a mono alloc. The right image should be used.
UINT PresentHistoryTokenOnly : 1 ; // 0x00200000 // Submit Present History Token only.
UINT PresentRegionsValid : 1 ; // 0x00400000 // Ptr to present regions is valid
UINT PresentDDA : 1 ; // 0x00800000 // Present from a DDA swapchain
UINT ProtectedContentBlankedOut : 1 ; // 0x01000000
UINT RemoteSession : 1 ; // 0x02000000
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
UINT CrossAdapter : 1 ; // 0x04000000
UINT DurationValid : 1 ; // 0x08000000
UINT PresentIndirect : 1 ; // 0x10000000 // Present to an indirect-display adapter
UINT PresentHMD : 1 ; // 0x20000000 // Present from an HMD swapchain.
UINT Reserved : 2 ; // 0xC0000000
# else
UINT Reserved : 6 ; // 0xFC000000
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
# else
UINT Reserved : 15 ; // 0xFFFE0000
# endif
} ;
UINT Value ;
} ;
} D3DKMT_PRESENTFLAGS ;
typedef enum _D3DKMT_PRESENT_MODEL
{
D3DKMT_PM_UNINITIALIZED = 0 ,
D3DKMT_PM_REDIRECTED_GDI = 1 ,
D3DKMT_PM_REDIRECTED_FLIP = 2 ,
D3DKMT_PM_REDIRECTED_BLT = 3 ,
D3DKMT_PM_REDIRECTED_VISTABLT = 4 ,
D3DKMT_PM_SCREENCAPTUREFENCE = 5 ,
D3DKMT_PM_REDIRECTED_GDI_SYSMEM = 6 ,
D3DKMT_PM_REDIRECTED_COMPOSITION = 7 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
D3DKMT_PM_SURFACECOMPLETE = 8 ,
# endif
D3DKMT_PM_FLIPMANAGER = 9 ,
} D3DKMT_PRESENT_MODEL ;
typedef enum _D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE
{
D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE_FLIP_SUBMITTED = 0 ,
D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE_FLIP_COMPLETE = 1
} D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE ;
typedef struct _D3DKMT_FLIPMODEL_PRESENTHISTORYTOKENFLAGS
{
union
{
struct
{
UINT Video : 1 ; // 0x00000001
UINT RestrictedContent : 1 ; // 0x00000002
UINT ClipToView : 1 ; // 0x00000004
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
UINT StereoPreferRight : 1 ; // 0x00000008
UINT TemporaryMono : 1 ; // 0x00000010
UINT FlipRestart : 1 ; // 0x00000020
UINT HDRMetaDataChanged : 1 ; // 0x00000040
UINT AlphaMode : 2 ; // 0x00000180
UINT SignalLimitOnTokenCompletion : 1 ; // 0x00000200
UINT YCbCrFlags : 3 ; // 0x00001C00
UINT IndependentFlip : 1 ; // 0x00002000
D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE IndependentFlipStage : 2 ; // 0x0000C000
UINT IndependentFlipReleaseCount : 2 ; // 0x00030000
UINT IndependentFlipForceNotifyDwm : 1 ; // 0x00040000
UINT UseCustomDuration : 1 ; // 0x00080000
UINT IndependentFlipRequestDwmConfirm : 1 ; // 0x00100000
UINT IndependentFlipCandidate : 1 ; // 0x00200000
UINT IndependentFlipCheckNeeded : 1 ; // 0x00400000
UINT IndependentFlipTrueImmediate : 1 ; // 0x00800000
UINT IndependentFlipRequestDwmExit : 1 ; // 0x01000000
UINT CompSurfaceNotifiedEarly : 1 ; // 0x02000000
UINT IndependentFlipDoNotFlip : 1 ; // 0x04000000
UINT RequirePairedToken : 1 ; // 0x08000000
UINT VariableRefreshOverrideEligible : 1 ; // 0x10000000
UINT Reserved : 3 ; // 0xE0000000
# else
UINT Reserved : 29 ; // 0xFFFFFFF8
# endif
} ;
UINT Value ;
} ;
} D3DKMT_FLIPMODEL_PRESENTHISTORYTOKENFLAGS ;
# define D3DKMT_MAX_PRESENT_HISTORY_RECTS 16
typedef struct _D3DKMT_DIRTYREGIONS
{
UINT NumRects ;
RECT Rects [ D3DKMT_MAX_PRESENT_HISTORY_RECTS ] ;
} D3DKMT_DIRTYREGIONS ;
typedef struct _D3DKMT_COMPOSITION_PRESENTHISTORYTOKEN
{
D3DKMT_ALIGN64 ULONG64 hPrivateData ;
} D3DKMT_COMPOSITION_PRESENTHISTORYTOKEN ;
typedef struct _D3DKMT_FLIPMANAGER_PRESENTHISTORYTOKEN
{
D3DKMT_ALIGN64 ULONG64 hPrivateData ;
D3DKMT_ALIGN64 ULONGLONG PresentAtQpc ;
union
{
struct
{
UINT Discard : 1 ;
UINT PresentAt : 1 ;
UINT hPrivateDataIsPointer : 1 ;
UINT Reserved : 29 ;
} ;
UINT Value ;
} Flags ;
} D3DKMT_FLIPMANAGER_PRESENTHISTORYTOKEN ;
typedef enum _D3DKMT_AUXILIARYPRESENTINFO_TYPE
{
D3DKMT_AUXILIARYPRESENTINFO_TYPE_FLIPMANAGER = 0
} D3DKMT_AUXILIARYPRESENTINFO_TYPE ;
typedef struct _D3DKMT_AUXILIARYPRESENTINFO
{
UINT size ;
D3DKMT_AUXILIARYPRESENTINFO_TYPE type ;
} D3DKMT_AUXILIARYPRESENTINFO ;
typedef struct _D3DKMT_FLIPMANAGER_AUXILIARYPRESENTINFO
{
// in: Base information
D3DKMT_AUXILIARYPRESENTINFO auxiliaryPresentInfo ;
// in: Tracing ID of owner flip manager
UINT flipManagerTracingId ;
// in: Whether or not the application requested a different custom duration
// than the previous present
BOOL customDurationChanged ;
// out: The adapter LUID/VidPn source of the flip output
LUID FlipAdapterLuid ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
// out: Independent flip stage
D3DKMT_FLIPMODEL_INDEPENDENT_FLIP_STAGE independentFlipStage ;
// out: The DPC frame time of the frame on which the flip was completed
D3DKMT_ALIGN64 ULONGLONG FlipCompletedQpc ;
// out: The approved frame duration
UINT HwPresentDurationQpc ;
// out: Whether or not the present was canceled in the scheduler
BOOL WasCanceled ;
} D3DKMT_FLIPMANAGER_AUXILIARYPRESENTINFO ;
typedef struct _D3DKMT_GDIMODEL_PRESENTHISTORYTOKEN
{
D3DKMT_ALIGN64 ULONG64 hLogicalSurface ;
D3DKMT_ALIGN64 ULONG64 hPhysicalSurface ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
RECT ScrollRect ;
POINT ScrollOffset ;
# endif
D3DKMT_DIRTYREGIONS DirtyRegions ;
} D3DKMT_GDIMODEL_PRESENTHISTORYTOKEN ;
typedef struct _D3DKMT_GDIMODEL_SYSMEM_PRESENTHISTORYTOKEN
{
D3DKMT_ALIGN64 ULONG64 hlsurf ;
DWORD dwDirtyFlags ;
D3DKMT_ALIGN64 UINT64 uiCookie ;
} D3DKMT_GDIMODEL_SYSMEM_PRESENTHISTORYTOKEN ;
typedef ULONGLONG D3DKMT_VISTABLTMODEL_PRESENTHISTORYTOKEN ;
typedef struct _D3DKMT_FENCE_PRESENTHISTORYTOKEN
{
D3DKMT_ALIGN64 UINT64 Key ;
} D3DKMT_FENCE_PRESENTHISTORYTOKEN ;
typedef struct _D3DKMT_BLTMODEL_PRESENTHISTORYTOKEN
{
D3DKMT_ALIGN64 ULONG64 hLogicalSurface ;
D3DKMT_ALIGN64 ULONG64 hPhysicalSurface ;
D3DKMT_ALIGN64 ULONG64 EventId ;
D3DKMT_DIRTYREGIONS DirtyRegions ;
} D3DKMT_BLTMODEL_PRESENTHISTORYTOKEN ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
# define D3DKMT_MAX_PRESENT_HISTORY_SCATTERBLTS 12
typedef struct _D3DKMT_SCATTERBLT
{
D3DKMT_ALIGN64 ULONG64 hLogicalSurfaceDestination ;
D3DKMT_ALIGN64 LONG64 hDestinationCompSurfDWM ;
D3DKMT_ALIGN64 UINT64 DestinationCompositionBindingId ;
RECT SourceRect ;
POINT DestinationOffset ;
} D3DKMT_SCATTERBLT ;
typedef struct _D3DKMT_SCATTERBLTS
{
UINT NumBlts ;
D3DKMT_SCATTERBLT Blts [ D3DKMT_MAX_PRESENT_HISTORY_SCATTERBLTS ] ;
} D3DKMT_SCATTERBLTS ;
# endif
typedef struct _D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN
{
D3DKMT_ALIGN64 UINT64 FenceValue ;
D3DKMT_ALIGN64 ULONG64 hLogicalSurface ;
D3DKMT_ALIGN64 D3DKMT_UINT_PTR dxgContext ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
UINT SwapChainIndex ;
D3DKMT_ALIGN64 UINT64 PresentLimitSemaphoreId ;
D3DDDI_FLIPINTERVAL_TYPE FlipInterval ;
D3DKMT_FLIPMODEL_PRESENTHISTORYTOKENFLAGS Flags ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
D3DKMT_ALIGN64 LONG64 hCompSurf ;
LUID compSurfLuid ;
D3DKMT_ALIGN64 UINT64 confirmationCookie ;
D3DKMT_ALIGN64 UINT64 CompositionSyncKey ;
UINT RemainingTokens ;
RECT ScrollRect ;
POINT ScrollOffset ;
UINT PresentCount ;
FLOAT RevealColor [ 4 ] ; // index 0 == R, ... , 3 == A
D3DDDI_ROTATION Rotation ;
union
{
D3DKMT_SCATTERBLTS ScatterBlts ; // Unused
struct
{
HANDLE hSyncObject ; // NT handle to FlipEx fence.
D3DDDI_HDR_METADATA_TYPE HDRMetaDataType ;
union
{
D3DDDI_HDR_METADATA_HDR10 HDRMetaDataHDR10 ;
D3DDDI_HDR_METADATA_HDR10PLUS HDRMetaDataHDR10Plus ;
} ;
} ;
} ;
UINT InkCookie ;
RECT SourceRect ;
UINT DestWidth ;
UINT DestHeight ;
RECT TargetRect ;
// DXGI_MATRIX_3X2_F: _11 _12 _21 _22 _31 _32
FLOAT Transform [ 6 ] ;
UINT CustomDuration ;
D3DDDI_FLIPINTERVAL_TYPE CustomDurationFlipInterval ;
UINT PlaneIndex ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
D3DDDI_COLOR_SPACE_TYPE ColorSpace ;
# endif
D3DKMT_DIRTYREGIONS DirtyRegions ;
} D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN ;
// User mode timeout is in milliseconds, kernel mode timeout is in 100 nanoseconds
# define FLIPEX_TIMEOUT_USER (2000)
# define FLIPEX_TIMEOUT_KERNEL (FLIPEX_TIMEOUT_USER*10000)
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
typedef struct _D3DKMT_SURFACECOMPLETE_PRESENTHISTORYTOKEN
{
D3DKMT_ALIGN64 ULONG64 hLogicalSurface ;
} D3DKMT_SURFACECOMPLETE_PRESENTHISTORYTOKEN ;
# endif
typedef struct _D3DKMT_PRESENTHISTORYTOKEN
{
D3DKMT_PRESENT_MODEL Model ;
// The size of the present history token in bytes including Model.
// Should be set to zero by when submitting a token.
// It will be initialized when reading present history and can be used to
// go to the next token in the present history buffer.
UINT TokenSize ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
// The binding id as specified by the Composition Surface
UINT64 CompositionBindingId ;
# endif
union
{
D3DKMT_FLIPMODEL_PRESENTHISTORYTOKEN Flip ;
D3DKMT_BLTMODEL_PRESENTHISTORYTOKEN Blt ;
D3DKMT_VISTABLTMODEL_PRESENTHISTORYTOKEN VistaBlt ;
D3DKMT_GDIMODEL_PRESENTHISTORYTOKEN Gdi ;
D3DKMT_FENCE_PRESENTHISTORYTOKEN Fence ;
D3DKMT_GDIMODEL_SYSMEM_PRESENTHISTORYTOKEN GdiSysMem ;
D3DKMT_COMPOSITION_PRESENTHISTORYTOKEN Composition ;
D3DKMT_FLIPMANAGER_PRESENTHISTORYTOKEN FlipManager ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
D3DKMT_SURFACECOMPLETE_PRESENTHISTORYTOKEN SurfaceComplete ;
# endif
}
Token ;
} D3DKMT_PRESENTHISTORYTOKEN ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef struct _D3DKMT_PRESENT_RGNS
{
UINT DirtyRectCount ;
D3DKMT_PTR ( _Field_size_ ( DirtyRectCount ) const RECT * , pDirtyRects ) ;
UINT MoveRectCount ;
D3DKMT_PTR ( _Field_size_ ( MoveRectCount ) const D3DKMT_MOVE_RECT * , pMoveRects ) ;
} D3DKMT_PRESENT_RGNS ;
# endif
typedef struct _D3DKMT_PRESENT
{
union
{
D3DKMT_HANDLE hDevice ; // in: D3D10 compatibility.
D3DKMT_HANDLE hContext ; // in: Indentifies the context
} ;
D3DKMT_PTR ( HWND , hWindow ) ; // in: window to present to
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: VidPn source ID if RestrictVidPnSource is flagged
D3DKMT_HANDLE hSource ; // in: Source allocation to present from
D3DKMT_HANDLE hDestination ; // in: Destination allocation whenever non-zero
UINT Color ; // in: color value in ARGB 32 bit format
RECT DstRect ; // in: unclipped dest rect
RECT SrcRect ; // in: unclipped src rect
UINT SubRectCnt ; // in: count of sub rects
D3DKMT_PTR ( CONST RECT * , pSrcSubRects ) ; // in: sub rects in source space
UINT PresentCount ; // in: present counter
D3DDDI_FLIPINTERVAL_TYPE FlipInterval ; // in: flip interval
D3DKMT_PRESENTFLAGS Flags ; // in:
ULONG BroadcastContextCount ; // in: Specifies the number of context
// to broadcast this command buffer to.
D3DKMT_HANDLE BroadcastContext [ D3DDDI_MAX_BROADCAST_CONTEXT ] ; // in: Specifies the handle of the context to
// broadcast to.
HANDLE PresentLimitSemaphore ;
D3DKMT_PRESENTHISTORYTOKEN PresentHistoryToken ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
D3DKMT_PRESENT_RGNS * pPresentRegions ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
union
{
D3DKMT_HANDLE hAdapter ; // in: iGpu adapter for PHT redirection. Valid only when the CrossAdapter flag is set.
D3DKMT_HANDLE hIndirectContext ; // in: indirect adapter context for redirecting through the DoD present path. Only
// valid if PresentIndirect flag is set.
} ;
UINT Duration ; // in: Per-present duration. Valid only when the DurationValid flag is set.
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
D3DKMT_PTR ( _Field_size_ ( BroadcastContextCount )
D3DKMT_HANDLE * , BroadcastSrcAllocation ) ; // in: LDA
D3DKMT_PTR ( _Field_size_opt_ ( BroadcastContextCount )
D3DKMT_HANDLE * , BroadcastDstAllocation ) ; // in: LDA
UINT PrivateDriverDataSize ; // in:
D3DKMT_PTR ( _Field_size_bytes_ ( PrivateDriverDataSize )
PVOID , pPrivateDriverData ) ; // in: Private driver data to pass to DdiPresent and DdiSetVidPnSourceAddress
BOOLEAN bOptimizeForComposition ; // out: DWM is involved in composition
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
} D3DKMT_PRESENT ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
typedef struct _D3DKMT_PRESENT_REDIRECTEDS_FLAGS
{
union
{
struct
{
UINT Reserved : 32 ; // 0xFFFFFFFF
} ;
UINT Value ;
} ;
} D3DKMT_PRESENT_REDIRECTED_FLAGS ;
typedef struct _D3DKMT_PRESENT_REDIRECTED
{
D3DKMT_HANDLE hSyncObj ; // in: Sync object PHT waits on
D3DKMT_HANDLE hDevice ; // in: Device associated with the present
D3DKMT_ALIGN64 ULONGLONG WaitedFenceValue ; // in: Fence value of hSyncObj that PHT waits on
D3DKMT_PRESENTHISTORYTOKEN PresentHistoryToken ;
D3DKMT_PRESENT_REDIRECTED_FLAGS Flags ;
D3DKMT_HANDLE hSource ; // in: Source allocation to present from
UINT PrivateDriverDataSize ; // in:
D3DKMT_PTR ( _Field_size_bytes_ ( PrivateDriverDataSize )
PVOID , pPrivateDriverData ) ; // in: Private driver data to pass to DdiPresent and DdiSetVidPnSourceAddress
} D3DKMT_PRESENT_REDIRECTED ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
typedef struct _D3DKMT_CANCEL_PRESENTS_FLAGS
{
union
{
// D3DKMT_CANCEL_PRESENTS_OPERATION_REPROGRAM_INTERRUPT flags
struct
{
UINT NewVSyncInterruptState : 1 ;
UINT Reserved : 31 ;
} ReprogramInterrupt ;
UINT Value ;
} ;
} D3DKMT_CANCEL_PRESENTS_FLAGS ;
typedef enum D3DKMT_CANCEL_PRESENTS_OPERATION
{
D3DKMT_CANCEL_PRESENTS_OPERATION_CANCEL_FROM = 0 ,
D3DKMT_CANCEL_PRESENTS_OPERATION_REPROGRAM_INTERRUPT = 1
} D3DKMT_CANCEL_PRESENTS_OPERATION ;
typedef struct _D3DKMT_CANCEL_PRESENTS
{
UINT cbSize ;
D3DKMT_HANDLE hDevice ;
D3DKMT_CANCEL_PRESENTS_FLAGS Flags ;
D3DKMT_CANCEL_PRESENTS_OPERATION Operation ;
D3DKMT_ALIGN64 UINT64 CancelFromPresentId ;
LUID CompSurfaceLuid ;
D3DKMT_ALIGN64 UINT64 BindId ;
} D3DKMT_CANCEL_PRESENTS ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
typedef struct _D3DKMT_SUBMITPRESENTBLTTOHWQUEUE
{
D3DKMT_HANDLE hHwQueue ;
D3DKMT_ALIGN64 UINT64 HwQueueProgressFenceId ;
D3DKMT_PRESENT PrivatePresentData ;
} D3DKMT_SUBMITPRESENTBLTTOHWQUEUE ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_5)
typedef struct _D3DKMT_SUBMITPRESENTTOHWQUEUE
{
D3DKMT_PTR ( _Field_size_ ( PrivatePresentData . BroadcastContextCount + 1 )
D3DKMT_HANDLE * , hHwQueues ) ;
D3DKMT_PRESENT PrivatePresentData ;
} D3DKMT_SUBMITPRESENTTOHWQUEUE ;
# endif
# define D3DKMT_MAX_MULTIPLANE_OVERLAY_PLANES 8
# define D3DKMT_MAX_MULTIPLANE_OVERLAY_ALLOCATIONS_PER_PLANE 256
typedef enum D3DKMT_MULTIPLANE_OVERLAY_FLAGS
{
D3DKMT_MULTIPLANE_OVERLAY_FLAG_VERTICAL_FLIP = 0x1 ,
D3DKMT_MULTIPLANE_OVERLAY_FLAG_HORIZONTAL_FLIP = 0x2 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
D3DKMT_MULTIPLANE_OVERLAY_FLAG_STATIC_CHECK = 0x4 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM3_0
} D3DKMT_MULTIPLANE_OVERLAY_FLAGS ;
typedef enum D3DKMT_MULTIPLANE_OVERLAY_BLEND
{
D3DKMT_MULTIPLANE_OVERLAY_BLEND_OPAQUE = 0x0 ,
D3DKMT_MULTIPLANE_OVERLAY_BLEND_ALPHABLEND = 0x1 ,
} D3DKMT_MULTIPLANE_OVERLAY_BLEND ;
typedef enum D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT
{
D3DKMT_MULIIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE = 0 ,
D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1 ,
D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2
} D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT ;
typedef enum D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAGS
{
D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1 , // 16 - 235 vs. 0 - 255
D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2 , // BT.709 vs. BT.601
D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4 , // xvYCC vs. conventional YCbCr
} D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAGS ;
typedef enum D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT
{
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO = 0 ,
D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_HORIZONTAL = 1 ,
D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_VERTICAL = 2 ,
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_SEPARATE = 3 ,
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO_OFFSET = 4 ,
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_ROW_INTERLEAVED = 5 ,
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_COLUMN_INTERLEAVED = 6 ,
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT_CHECKERBOARD = 7
} D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT ;
typedef enum _DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE
{
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_NONE = 0 ,
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_FRAME0 = 1 ,
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_FRAME1 = 2 ,
} DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE ;
typedef enum _DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY
{
DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY_BILINEAR = 0x1 , // Bilinear
DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY_HIGH = 0x2 , // Maximum
} DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY ;
typedef struct D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES
{
UINT Flags ; // D3DKMT_MULTIPLANE_OVERLAY_FLAGS
RECT SrcRect ;
RECT DstRect ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
RECT ClipRect ;
# endif
D3DDDI_ROTATION Rotation ;
D3DKMT_MULTIPLANE_OVERLAY_BLEND Blend ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
UINT DirtyRectCount ;
D3DKMT_PTR ( RECT * , pDirtyRects ) ;
# else
UINT NumFilters ;
D3DKMT_PTR ( void * , pFilters ) ;
# endif
D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT VideoFrameFormat ;
UINT YCbCrFlags ; // D3DKMT_MULTIPLANE_OVERLAY_YCbCr_FLAGS
D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT StereoFormat ;
BOOL StereoLeftViewFrame0 ;
BOOL StereoBaseViewFrame0 ;
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE StereoFlipMode ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY StretchQuality ;
# endif
} D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM_1_3)
typedef struct D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE
{
D3DKMT_HANDLE hResource ;
LUID CompSurfaceLuid ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES PlaneAttributes ;
} D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE ;
typedef struct D3DKMT_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO
{
union
{
struct
{
UINT FailingPlane : 4 ; // The 0 based index of the first plane that could not be supported
UINT TryAgain : 1 ; // The configuration is not supported due to a transition condition, which should shortly go away
UINT Reserved : 27 ;
} ;
UINT Value ;
} ;
} D3DKMT_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO ;
typedef struct _D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT
{
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
UINT PlaneCount ; // in : Number of resources to pin
D3DKMT_PTR ( D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE * , pOverlayPlanes ) ; // in : Array of resource handles to pin
BOOL Supported ;
D3DKMT_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO ReturnInfo ;
} D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM_2_0)
typedef struct _D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES2
{
UINT Flags ; // D3DKMT_MULTIPLANE_OVERLAY_FLAGS
RECT SrcRect ; // Specifies the source rectangle, of type RECT, relative to the source resource.
RECT DstRect ; // Specifies the destination rectangle, of type RECT, relative to the monitor resolution.
RECT ClipRect ; // Specifies any additional clipping, of type RECT, relative to the DstRect rectangle,
// after the data has been stretched according to the values of SrcRect and DstRect.
// The driver and hardware can use the ClipRect member to apply a common stretch factor
// as the clipping changes when an app occludes part of the DstRect destination rectangle.
D3DDDI_ROTATION Rotation ; // Specifies the clockwise rotation of the overlay plane, given as a value from the D3DDDI_ROTATION enumeration.
D3DKMT_MULTIPLANE_OVERLAY_BLEND Blend ; // Specifies the blend mode that applies to this overlay plane and the plane beneath it, given as a value from the DXGK_MULTIPLANE_OVERLAY_BLEND enumeration.
UINT DirtyRectCount ;
D3DKMT_PTR ( RECT * , pDirtyRects ) ;
D3DKMT_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT VideoFrameFormat ; // DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT
D3DDDI_COLOR_SPACE_TYPE ColorSpace ;
D3DKMT_MULTIPLANE_OVERLAY_STEREO_FORMAT StereoFormat ; // DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT
BOOL StereoLeftViewFrame0 ; // Reserved for system use. Must always be FALSE.
BOOL StereoBaseViewFrame0 ; // Reserved for system use. Must always be FALSE.
DXGKMT_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE StereoFlipMode ; // DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE
DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY StretchQuality ; // DXGK_MULTIPLANE_OVERLAY_STRETCH_QUALITY
UINT Reserved1 ;
} D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES2 ;
typedef struct _D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE2
{
UINT LayerIndex ;
D3DKMT_HANDLE hResource ;
LUID CompSurfaceLuid ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES2 PlaneAttributes ;
} D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE2 ;
typedef struct _D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT2
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
UINT PlaneCount ; // in : Number of resources to pin
D3DKMT_PTR ( D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE2 * , pOverlayPlanes ) ; // in : Array of resource handles to pin
BOOL Supported ;
D3DKMT_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO ReturnInfo ;
} D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT2 ;
typedef struct _D3DKMT_MULTIPLANE_OVERLAY2
{
UINT LayerIndex ;
BOOL Enabled ;
D3DKMT_HANDLE hAllocation ;
D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES2 PlaneAttributes ;
} D3DKMT_MULTIPLANE_OVERLAY2 ;
typedef struct _D3DKMT_PRESENT_MULTIPLANE_OVERLAY2
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
union
{
D3DKMT_HANDLE hDevice ; // in: D3D10 compatibility.
D3DKMT_HANDLE hContext ; // in: Indentifies the context
} ;
ULONG BroadcastContextCount ; // in: Specifies the number of context
// to broadcast this command buffer to.
D3DKMT_HANDLE BroadcastContext [ D3DDDI_MAX_BROADCAST_CONTEXT ] ; // in: Specifies the handle of the context to
// broadcast to.
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: VidPn source ID if RestrictVidPnSource is flagged
UINT PresentCount ; // in: present counter
D3DDDI_FLIPINTERVAL_TYPE FlipInterval ; // in: flip interval
D3DKMT_PRESENTFLAGS Flags ; // in:
UINT PresentPlaneCount ;
D3DKMT_PTR ( D3DKMT_MULTIPLANE_OVERLAY2 * , pPresentPlanes ) ;
UINT Duration ;
} D3DKMT_PRESENT_MULTIPLANE_OVERLAY2 ;
# endif // DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
typedef struct _D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES3
{
UINT Flags ; // D3DKMT_MULTIPLANE_OVERLAY_FLAGS
RECT SrcRect ; // Specifies the source rectangle, of type RECT, relative to the source resource.
RECT DstRect ; // Specifies the destination rectangle, of type RECT, relative to the monitor resolution.
RECT ClipRect ; // Specifies any additional clipping, of type RECT, relative to the DstRect rectangle,
// after the data has been stretched according to the values of SrcRect and DstRect.
// The driver and hardware can use the ClipRect member to apply a common stretch factor
// as the clipping changes when an app occludes part of the DstRect destination rectangle.
D3DDDI_ROTATION Rotation ; // Specifies the clockwise rotation of the overlay plane, given as a value from the D3DDDI_ROTATION enumeration.
D3DKMT_MULTIPLANE_OVERLAY_BLEND Blend ; // Specifies the blend mode that applies to this overlay plane and the plane beneath it, given as a value from the DXGK_MULTIPLANE_OVERLAY_BLEND enumeration.
UINT DirtyRectCount ;
D3DKMT_PTR ( _Field_size_ ( DirtyRectCount ) RECT * , pDirtyRects ) ;
D3DDDI_COLOR_SPACE_TYPE ColorSpace ;
DXGKMT_MULTIPLANE_OVERLAY_STRETCH_QUALITY StretchQuality ; // DXGK_MULTIPLANE_OVERLAY_STRETCH_QUALITY
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
UINT SDRWhiteLevel ;
# endif
} D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES3 ;
typedef struct _D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE3
{
UINT LayerIndex ;
D3DKMT_HANDLE hResource ;
LUID CompSurfaceLuid ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
D3DKMT_PTR ( D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES3 * , pPlaneAttributes ) ;
} D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE3 ;
typedef struct _D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_FLAGS
{
union
{
struct
{
UINT VerticalFlip : 1 ; // 0x00000001
UINT HorizontalFlip : 1 ; // 0x00000002
UINT Reserved : 30 ; // 0xFFFFFFFC
} ;
UINT Value ;
} ;
} D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_FLAGS ;
typedef struct _D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION
{
D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_FLAGS Flags ;
RECT SrcRect ;
RECT DstRect ;
D3DDDI_ROTATION Rotation ;
} D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION ;
typedef struct _D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_WITH_SOURCE
{
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION PostComposition ;
} D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_WITH_SOURCE ;
typedef struct _D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT3
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
UINT PlaneCount ; // in : Number of resources to pin
// Note: Array-of-pointers don't work in 32bit WSL
_Field_size_ ( PlaneCount )
D3DKMT_CHECK_MULTIPLANE_OVERLAY_PLANE3 * * ppOverlayPlanes ; // in : Array of pointers to overlay planes
UINT PostCompositionCount ; // in : Number of resources to pin
_Field_size_ ( PostCompositionCount )
D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION_WITH_SOURCE * * ppPostComposition ; // in : Array of pointers to overlay planes
BOOL Supported ;
D3DKMT_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO ReturnInfo ;
} D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT3 ;
typedef struct _D3DKMT_PLANE_SPECIFIC_INPUT_FLAGS
{
union
{
struct
{
UINT Enabled : 1 ; // 0x00000001
UINT Reserved : 31 ; // 0xFFFFFFFE
} ;
UINT Value ;
} ;
} D3DKMT_PLANE_SPECIFIC_INPUT_FLAGS ;
typedef struct _D3DKMT_PLANE_SPECIFIC_OUTPUT_FLAGS
{
union
{
struct
{
UINT FlipConvertedToImmediate : 1 ; // 0x00000001
UINT Reserved : 31 ; // 0xFFFFFFFE
} ;
UINT Value ;
} ;
} D3DKMT_PLANE_SPECIFIC_OUTPUT_FLAGS ;
typedef struct _D3DKMT_MULTIPLANE_OVERLAY3
{
UINT LayerIndex ;
D3DKMT_PLANE_SPECIFIC_INPUT_FLAGS InputFlags ;
D3DDDI_FLIPINTERVAL_TYPE FlipInterval ;
UINT MaxImmediateFlipLine ;
UINT AllocationCount ;
D3DKMT_PTR ( _Field_size_ ( AllocationCount )
D3DKMT_HANDLE * , pAllocationList ) ;
UINT DriverPrivateDataSize ;
D3DKMT_PTR ( _Field_size_bytes_ ( DriverPrivateDataSize )
VOID * , pDriverPrivateData ) ;
D3DKMT_PTR ( const D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES3 * , pPlaneAttributes ) ;
D3DKMT_HANDLE hFlipToFence ;
D3DKMT_HANDLE hFlipAwayFence ;
D3DKMT_ALIGN64 UINT64 FlipToFenceValue ;
D3DKMT_ALIGN64 UINT64 FlipAwayFenceValue ;
} D3DKMT_MULTIPLANE_OVERLAY3 ;
typedef struct _D3DKMT_PRESENT_MULTIPLANE_OVERLAY_FLAGS
{
union
{
struct
{
UINT FlipStereo : 1 ; // 0x00000001 This is a flip from a stereo alloc. Used in addition to FlipImmediate or FlipOnNextVSync.
UINT FlipStereoTemporaryMono : 1 ; // 0x00000002 This is a flip from a stereo alloc. The left image should used. Used in addition to FlipImmediate or FlipOnNextVSync.
UINT FlipStereoPreferRight : 1 ; // 0x00000004 This is a flip from a stereo alloc. The right image should used when cloning to a mono monitor. Used in addition to FlipImmediate or FlipOnNextVSync.
UINT FlipDoNotWait : 1 ; // 0x00000008
UINT FlipDoNotFlip : 1 ; // 0x00000010
UINT FlipRestart : 1 ; // 0x00000020
UINT DurationValid : 1 ; // 0x00000040
UINT HDRMetaDataValid : 1 ; // 0x00000080
UINT HMD : 1 ; // 0x00000100
UINT TrueImmediate : 1 ; // 0x00000200 If a present interval is 0, allow tearing rather than override a previously queued flip
UINT Reserved : 22 ; // 0xFFFFFE00
} ;
UINT Value ;
} ;
} D3DKMT_PRESENT_MULTIPLANE_OVERLAY_FLAGS ;
typedef struct _D3DKMT_PRESENT_MULTIPLANE_OVERLAY3
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
UINT ContextCount ;
D3DKMT_PTR ( _Field_size_ ( ContextCount )
D3DKMT_HANDLE * , pContextList ) ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: VidPn source ID if RestrictVidPnSource is flagged
UINT PresentCount ; // in: present counter
D3DKMT_PRESENT_MULTIPLANE_OVERLAY_FLAGS Flags ; // in:
UINT PresentPlaneCount ;
// Note: Array-of-pointers don't work in 32bit WSL
_Field_size_ ( PresentPlaneCount )
D3DKMT_MULTIPLANE_OVERLAY3 * * ppPresentPlanes ;
D3DKMT_PTR ( D3DKMT_MULTIPLANE_OVERLAY_POST_COMPOSITION * , pPostComposition ) ;
UINT Duration ;
D3DDDI_HDR_METADATA_TYPE HDRMetaDataType ;
UINT HDRMetaDataSize ;
D3DKMT_PTR ( _Field_size_bytes_ ( HDRMetaDataSize )
const VOID * , pHDRMetaData ) ;
UINT BoostRefreshRateMultiplier ;
} D3DKMT_PRESENT_MULTIPLANE_OVERLAY3 ;
# endif // DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
typedef struct _D3DKMT_MULTIPLANE_OVERLAY_CAPS
{
union
{
struct
{
UINT Rotation : 1 ; // Full rotation
UINT RotationWithoutIndependentFlip : 1 ; // Rotation, but without simultaneous IndependentFlip support
UINT VerticalFlip : 1 ; // Can flip the data vertically
UINT HorizontalFlip : 1 ; // Can flip the data horizontally
UINT StretchRGB : 1 ; // Supports stretching RGB formats
UINT StretchYUV : 1 ; // Supports stretching YUV formats
UINT BilinearFilter : 1 ; // Blinear filtering
UINT HighFilter : 1 ; // Better than bilinear filtering
UINT Shared : 1 ; // MPO resources are shared across VidPnSources
UINT Immediate : 1 ; // Immediate flip support
UINT Plane0ForVirtualModeOnly : 1 ; // Stretching plane 0 will also stretch the HW cursor and should only be used for virtual mode support
UINT Version3DDISupport : 1 ; // Driver supports the 2.2 MPO DDIs
UINT Reserved : 20 ;
} ;
UINT Value ;
} ;
} D3DKMT_MULTIPLANE_OVERLAY_CAPS ;
typedef struct _D3DKMT_GET_MULTIPLANE_OVERLAY_CAPS
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in
UINT MaxPlanes ; // out: Total number of planes currently supported
UINT MaxRGBPlanes ; // out: Number of RGB planes currently supported
UINT MaxYUVPlanes ; // out: Number of YUV planes currently supported
D3DKMT_MULTIPLANE_OVERLAY_CAPS OverlayCaps ; // out: Overlay capabilities
float MaxStretchFactor ; // out
float MaxShrinkFactor ; // out
} D3DKMT_GET_MULTIPLANE_OVERLAY_CAPS ;
typedef struct _D3DKMT_GET_POST_COMPOSITION_CAPS
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in
float MaxStretchFactor ; // out
float MaxShrinkFactor ; // out
} D3DKMT_GET_POST_COMPOSITION_CAPS ;
typedef struct _D3DKMT_MULTIPLANEOVERLAY_STRETCH_SUPPORT
{
UINT VidPnSourceId ;
BOOL Update ;
BOOL Supported ;
} D3DKMT_MULTIPLANEOVERLAY_STRETCH_SUPPORT ;
# endif // DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2
typedef struct D3DKMT_MULTIPLANE_OVERLAY
{
UINT LayerIndex ;
BOOL Enabled ;
D3DKMT_HANDLE hAllocation ;
D3DKMT_MULTIPLANE_OVERLAY_ATTRIBUTES PlaneAttributes ;
} D3DKMT_MULTIPLANE_OVERLAY ;
typedef struct D3DKMT_PRESENT_MULTIPLANE_OVERLAY
{
union
{
D3DKMT_HANDLE hDevice ; // in: D3D10 compatibility.
D3DKMT_HANDLE hContext ; // in: Indentifies the context
} ;
ULONG BroadcastContextCount ; // in: Specifies the number of context
// to broadcast this command buffer to.
D3DKMT_HANDLE BroadcastContext [ D3DDDI_MAX_BROADCAST_CONTEXT ] ; // in: Specifies the handle of the context to
// broadcast to.
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: VidPn source ID if RestrictVidPnSource is flagged
UINT PresentCount ; // in: present counter
D3DDDI_FLIPINTERVAL_TYPE FlipInterval ; // in: flip interval
D3DKMT_PRESENTFLAGS Flags ; // in:
UINT PresentPlaneCount ;
D3DKMT_MULTIPLANE_OVERLAY * pPresentPlanes ;
UINT Duration ;
} D3DKMT_PRESENT_MULTIPLANE_OVERLAY ;
typedef struct _D3DKMT_RENDERFLAGS
{
UINT ResizeCommandBuffer : 1 ; // 0x00000001
UINT ResizeAllocationList : 1 ; // 0x00000002
UINT ResizePatchLocationList : 1 ; // 0x00000004
UINT NullRendering : 1 ; // 0x00000008
UINT PresentRedirected : 1 ; // 0x00000010
UINT RenderKm : 1 ; // 0x00000020 Cannot be used with DxgkRender
UINT RenderKmReadback : 1 ; // 0x00000040 Cannot be used with DxgkRender
UINT Reserved : 25 ; // 0xFFFFFF80
} D3DKMT_RENDERFLAGS ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef struct _D3DKMT_OUTPUTDUPLPRESENTFLAGS
{
union
{
struct
{
UINT ProtectedContentBlankedOut : 1 ;
UINT RemoteSession : 1 ;
UINT FullScreenPresent : 1 ;
UINT PresentIndirect : 1 ;
UINT Reserved : 28 ;
} ;
UINT Value ;
} ;
} D3DKMT_OUTPUTDUPLPRESENTFLAGS ;
typedef struct _D3DKMT_OUTPUTDUPLPRESENT
{
D3DKMT_HANDLE hContext ; // in: Indentifies the context
D3DKMT_HANDLE hSource ; // in: Source allocation to present from
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
ULONG BroadcastContextCount ; // in: Specifies the number of context
D3DKMT_HANDLE BroadcastContext [ D3DDDI_MAX_BROADCAST_CONTEXT ] ; // in: Specifies the handle of the context to
D3DKMT_PRESENT_RGNS PresentRegions ; // in: Dirty and move regions
D3DKMT_OUTPUTDUPLPRESENTFLAGS Flags ;
D3DKMT_HANDLE hIndirectContext ;
} D3DKMT_OUTPUTDUPLPRESENT ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
typedef struct _D3DKMT_OUTPUTDUPLPRESENTTOHWQUEUE
{
D3DKMT_HANDLE hSource ; // in: Source allocation to present from
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
ULONG BroadcastHwQueueCount ;
D3DKMT_PTR ( _Field_size_ ( BroadcastHwQueueCount )
D3DKMT_HANDLE * , hHwQueues ) ;
D3DKMT_PRESENT_RGNS PresentRegions ; // in: Dirty and move regions
D3DKMT_OUTPUTDUPLPRESENTFLAGS Flags ;
D3DKMT_HANDLE hIndirectHwQueue ;
} D3DKMT_OUTPUTDUPLPRESENTTOHWQUEUE ;
# endif
typedef struct _D3DKMT_RENDER
{
union
{
D3DKMT_HANDLE hDevice ; // in: D3D10 compatibility.
D3DKMT_HANDLE hContext ; // in: Indentifies the context
} ;
UINT CommandOffset ; // in: offset in bytes from start
UINT CommandLength ; // in: number of bytes
UINT AllocationCount ; // in: Number of allocations in allocation list.
UINT PatchLocationCount ; // in: Number of patch locations in patch allocation list.
D3DKMT_PTR ( VOID * , pNewCommandBuffer ) ; // out: Pointer to the next command buffer to use.
// in: When RenderKm flag is set, it points to a command buffer.
UINT NewCommandBufferSize ; // in: Size requested for the next command buffer.
// out: Size of the next command buffer to use.
D3DKMT_PTR ( D3DDDI_ALLOCATIONLIST * , pNewAllocationList ) ; // out: Pointer to the next allocation list to use.
// in: When RenderKm flag is set, it points to an allocation list.
UINT NewAllocationListSize ; // in: Size requested for the next allocation list.
// out: Size of the new allocation list.
D3DKMT_PTR ( D3DDDI_PATCHLOCATIONLIST * , pNewPatchLocationList ) ; // out: Pointer to the next patch location list.
UINT NewPatchLocationListSize ; // in: Size requested for the next patch location list.
// out: Size of the new patch location list.
D3DKMT_RENDERFLAGS Flags ; // in:
D3DKMT_ALIGN64 ULONGLONG PresentHistoryToken ; // in: Present history token for redirected present calls
ULONG BroadcastContextCount ; // in: Specifies the number of context
// to broadcast this command buffer to.
D3DKMT_HANDLE BroadcastContext [ D3DDDI_MAX_BROADCAST_CONTEXT ] ; // in: Specifies the handle of the context to
// broadcast to.
ULONG QueuedBufferCount ; // out: Number of DMA buffer queued to this context after this submission.
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS NewCommandBuffer ; // out: GPU virtual address of next command buffer to use. _ADVSCH_
D3DKMT_PTR ( VOID * , pPrivateDriverData ) ; // in: pointer to private driver data. _ADVSCH_
UINT PrivateDriverDataSize ; // in: size of private driver data. _ADVSCH_
} D3DKMT_RENDER ;
typedef enum _D3DKMT_STANDARDALLOCATIONTYPE
{
D3DKMT_STANDARDALLOCATIONTYPE_EXISTINGHEAP = 1 ,
D3DKMT_STANDARDALLOCATIONTYPE_INTERNALBACKINGSTORE = 2 ,
D3DKMT_STANDARDALLOCATIONTYPE_MAX ,
} D3DKMT_STANDARDALLOCATIONTYPE ;
typedef struct _D3DKMT_STANDARDALLOCATION_EXISTINGHEAP
{
D3DKMT_ALIGN64 D3DKMT_SIZE_T Size ; // in: Size in bytes of existing heap
} D3DKMT_STANDARDALLOCATION_EXISTINGHEAP ;
typedef struct _D3DKMT_CREATESTANDARDALLOCATIONFLAGS
{
union
{
struct
{
UINT Reserved : 32 ; // 0xFFFFFFFF
} ;
UINT Value ;
} ;
} D3DKMT_CREATESTANDARDALLOCATIONFLAGS ;
typedef struct _D3DKMT_CREATESTANDARDALLOCATION
{
//
// update onecoreuap/windows/core/ntuser/inc/whwin32.tpl when adding new memeber
// to this struct
//
D3DKMT_STANDARDALLOCATIONTYPE Type ;
union
{
D3DKMT_STANDARDALLOCATION_EXISTINGHEAP ExistingHeapData ;
} ;
D3DKMT_CREATESTANDARDALLOCATIONFLAGS Flags ;
} D3DKMT_CREATESTANDARDALLOCATION ;
typedef struct _D3DKMT_CREATEALLOCATIONFLAGS
{
UINT CreateResource : 1 ; // 0x00000001
UINT CreateShared : 1 ; // 0x00000002
UINT NonSecure : 1 ; // 0x00000004
UINT CreateProtected : 1 ; // 0x00000008 Cannot be used when allocation is created from the user mode.
UINT RestrictSharedAccess : 1 ; // 0x00000010
UINT ExistingSysMem : 1 ; // 0x00000020 Cannot be used when allocation is created from the user mode.
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
UINT NtSecuritySharing : 1 ; // 0x00000040
UINT ReadOnly : 1 ; // 0x00000080
UINT CreateWriteCombined : 1 ; // 0x00000100 Cannot be used when allocation is created from the user mode.
UINT CreateCached : 1 ; // 0x00000200 Cannot be used when allocation is created from the user mode.
UINT SwapChainBackBuffer : 1 ; // 0x00000400 Specifies whether an allocation corresponds to a swap chain back buffer.
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
UINT CrossAdapter : 1 ; // 0x00000800
UINT OpenCrossAdapter : 1 ; // 0x00001000 Cannot be used when allocation is created from the user mode.
UINT PartialSharedCreation : 1 ; // 0x00002000
UINT Zeroed : 1 ; // 0x00004000 // out: set when allocation fulfilled by zero pages
UINT WriteWatch : 1 ; // 0x00008000 // in: request Mm to track writes to pages of this allocation
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
UINT StandardAllocation : 1 ; // 0x00010000 // in: use pStandardAllocation instead of pPrivateDriverData
UINT ExistingSection : 1 ; // 0x00020000 // in: Use Section Handle instead of SysMem in D3DDI_ALLOCATIONINFO2
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
UINT AllowNotZeroed : 1 ; // 0x00040000 // in: indicate zeroed pages are not required
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
UINT PhysicallyContiguous : 1 ; // 0x00080000 // in: indicate allocation must be physically contguous
UINT NoKmdAccess : 1 ; // 0x00100000 // in: KMD is not notified about the allocation
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
UINT SharedDisplayable : 1 ; // 0x00200000
UINT Reserved : 10 ; // 0xFFC00000
# else
UINT Reserved : 11 ; // 0xFFE00000
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
# else
UINT Reserved : 13 ; // 0xFFF80000
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
# else
UINT Reserved : 14 ; // 0xFFFC0000
# endif //(DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
# else
UINT Reserved : 16 ; // 0xFFFF0000
# endif //(DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
# else
UINT Reserved : 21 ; // 0xFFFFF800
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
# else
UINT Reserved : 26 ; // 0xFFFFFFC0
# endif
} D3DKMT_CREATEALLOCATIONFLAGS ;
typedef struct _D3DKMT_CREATEALLOCATION
{
D3DKMT_HANDLE hDevice ;
D3DKMT_HANDLE hResource ; //in/out:valid only within device
D3DKMT_HANDLE hGlobalShare ; //out:Shared handle if CreateShared and not NtSecuritySharing
D3DKMT_PTR ( _Field_size_bytes_ ( PrivateRuntimeDataSize )
CONST VOID * , pPrivateRuntimeData ) ;
UINT PrivateRuntimeDataSize ;
union
{
//
// update onecoreuap/windows/core/ntuser/inc/whwin32.tpl when adding new memeber
// to this union
//
D3DKMT_CREATESTANDARDALLOCATION * pStandardAllocation ;
_Field_size_bytes_ ( PrivateDriverDataSize )
CONST VOID * pPrivateDriverData ;
D3DKMT_PTR_HELPER ( AlignUnionTo64_1 )
} ;
UINT PrivateDriverDataSize ;
UINT NumAllocations ;
union
{
_Field_size_ ( NumAllocations ) D3DDDI_ALLOCATIONINFO * pAllocationInfo ;
# if ((DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN7) || \
( D3D_UMD_INTERFACE_VERSION > = D3D_UMD_INTERFACE_VERSION_WIN7 ) )
_Field_size_ ( NumAllocations ) D3DDDI_ALLOCATIONINFO2 * pAllocationInfo2 ; // _ADVSCH_
# endif
D3DKMT_PTR_HELPER ( AlignUnionTo64_2 )
} ;
D3DKMT_CREATEALLOCATIONFLAGS Flags ;
D3DKMT_PTR ( HANDLE , hPrivateRuntimeResourceHandle ) ; // opaque handle used for event tracing
} D3DKMT_CREATEALLOCATION ;
typedef struct _D3DKMT_OPENRESOURCE
{
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
D3DKMT_HANDLE hGlobalShare ; // in : Shared resource handle
UINT NumAllocations ; // in : Number of allocations associated with the resource
union {
_Field_size_ ( NumAllocations ) D3DDDI_OPENALLOCATIONINFO * pOpenAllocationInfo ; // in : Array of open allocation structs
# if ((DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN7) || \
( D3D_UMD_INTERFACE_VERSION > = D3D_UMD_INTERFACE_VERSION_WIN7 ) )
_Field_size_ ( NumAllocations ) D3DDDI_OPENALLOCATIONINFO2 * pOpenAllocationInfo2 ; // in : Array of open allocation structs // _ADVSCH_
# endif
D3DKMT_PTR_HELPER ( AlignUnionTo64 )
} ;
D3DKMT_PTR ( _Field_size_bytes_ ( PrivateRuntimeDataSize ) VOID * , pPrivateRuntimeData ) ; // in : Caller supplied buffer where the runtime private data associated with this resource will be copied
UINT PrivateRuntimeDataSize ; // in : Size in bytes of the pPrivateRuntimeData buffer
D3DKMT_PTR ( _Field_size_bytes_ ( ResourcePrivateDriverDataSize ) VOID * , pResourcePrivateDriverData ) ; // in : Caller supplied buffer where the driver private data associated with the resource will be copied
UINT ResourcePrivateDriverDataSize ; // in : Size in bytes of the pResourcePrivateDriverData buffer
D3DKMT_PTR ( _Field_size_bytes_ ( TotalPrivateDriverDataBufferSize ) VOID * , pTotalPrivateDriverDataBuffer ) ; // in : Caller supplied buffer where the Driver private data will be stored
UINT TotalPrivateDriverDataBufferSize ; // in/out : Size in bytes of pTotalPrivateDriverDataBuffer / Size in bytes of data written to pTotalPrivateDriverDataBuffer
D3DKMT_HANDLE hResource ; // out : Handle for this resource in this process
} D3DKMT_OPENRESOURCE ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef struct _D3DKMT_OPENRESOURCEFROMNTHANDLE
{
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
D3DKMT_PTR ( HANDLE , hNtHandle ) ; // in : Process's NT handle
UINT NumAllocations ; // in : Number of allocations associated with the resource
D3DKMT_PTR ( _Field_size_ ( NumAllocations ) D3DDDI_OPENALLOCATIONINFO2 * , pOpenAllocationInfo2 ) ; // in : Array of open allocation structs // _ADVSCH_
UINT PrivateRuntimeDataSize ; // in : Size in bytes of the pPrivateRuntimeData buffer
D3DKMT_PTR ( _Field_size_bytes_ ( PrivateRuntimeDataSize ) VOID * , pPrivateRuntimeData ) ; // in : Caller supplied buffer where the runtime private data associated with this resource will be copied
UINT ResourcePrivateDriverDataSize ; // in : Size in bytes of the pResourcePrivateDriverData buffer
D3DKMT_PTR ( _Field_size_bytes_ ( ResourcePrivateDriverDataSize ) VOID * , pResourcePrivateDriverData ) ; // in : Caller supplied buffer where the driver private data associated with the resource will be copied
UINT TotalPrivateDriverDataBufferSize ; // in/out : Size in bytes of pTotalPrivateDriverDataBuffer / Size in bytes of data written to pTotalPrivateDriverDataBuffer
D3DKMT_PTR ( _Field_size_bytes_ ( TotalPrivateDriverDataBufferSize ) VOID * , pTotalPrivateDriverDataBuffer ) ; // in : Caller supplied buffer where the Driver private data will be stored
D3DKMT_HANDLE hResource ; // out : Handle for this resource in this process
D3DKMT_HANDLE hKeyedMutex ; // out: Handle to the keyed mutex in this process
D3DKMT_PTR ( _In_reads_bytes_opt_ ( PrivateRuntimeDataSize ) VOID * , pKeyedMutexPrivateRuntimeData ) ; // in: Buffer containing initial private data.
// If NULL then PrivateRuntimeDataSize must be 0.
// It will only be copied if the keyed mutex does not already have private data.
UINT KeyedMutexPrivateRuntimeDataSize ; // in: Size in bytes of pPrivateRuntimeData.
D3DKMT_HANDLE hSyncObject ; // out: Handle to sync object in this process.
} D3DKMT_OPENRESOURCEFROMNTHANDLE ;
typedef struct _D3DKMT_OPENSYNCOBJECTFROMNTHANDLE
{
D3DKMT_PTR ( HANDLE , hNtHandle ) ; // in : NT handle for the sync object.
D3DKMT_HANDLE hSyncObject ; // out: Handle to sync object in this process.
} D3DKMT_OPENSYNCOBJECTFROMNTHANDLE ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef struct _D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2
{
D3DKMT_PTR ( HANDLE , hNtHandle ) ; // in : NT handle for the sync object.
D3DKMT_HANDLE hDevice ; // in : Device handle to use this sync object on.
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags ; // in : specifies sync object behavior for this device.
D3DKMT_HANDLE hSyncObject ; // out: Handle to sync object in this process.
union
{
struct
{
D3DKMT_PTR ( VOID * , FenceValueCPUVirtualAddress ) ; // out: Read-only mapping of the fence value for the CPU
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress ; // out: Read/write mapping of the fence value for the GPU
UINT EngineAffinity ; // in: Defines physical adapters where the GPU VA should be mapped
} MonitoredFence ;
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
} ;
} D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 ;
typedef struct _D3DKMT_OPENSYNCOBJECTNTHANDLEFROMNAME
{
DWORD dwDesiredAccess ;
D3DKMT_PTR ( OBJECT_ATTRIBUTES * , pObjAttrib ) ;
D3DKMT_PTR ( HANDLE , hNtHandle ) ;
} D3DKMT_OPENSYNCOBJECTNTHANDLEFROMNAME ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_0
typedef struct _D3DKMT_OPENNTHANDLEFROMNAME
{
DWORD dwDesiredAccess ;
D3DKMT_PTR ( OBJECT_ATTRIBUTES * , pObjAttrib ) ;
D3DKMT_PTR ( HANDLE , hNtHandle ) ;
} D3DKMT_OPENNTHANDLEFROMNAME ;
# define SHARED_ALLOCATION_WRITE 0x1
# define SHARED_ALLOCATION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SHARED_ALLOCATION_WRITE)
typedef struct _D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE
{
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
D3DKMT_PTR ( HANDLE , hNtHandle ) ; // in : Global resource handle to open
D3DKMT_PTR ( VOID * , pPrivateRuntimeData ) ; // in : Ptr to buffer that will receive runtime private data for the resource
UINT PrivateRuntimeDataSize ; // in/out : Size in bytes of buffer passed in for runtime private data / If pPrivateRuntimeData was NULL then size in bytes of buffer required for the runtime private data otherwise size in bytes of runtime private data copied into the buffer
UINT TotalPrivateDriverDataSize ; // out : Size in bytes of buffer required to hold all the DriverPrivate data for all of the allocations associated withe the resource
UINT ResourcePrivateDriverDataSize ; // out : Size in bytes of the driver's resource private data
UINT NumAllocations ; // out : Number of allocations associated with this resource
} D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE ;
# endif
typedef struct _D3DKMT_QUERYRESOURCEINFO
{
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
D3DKMT_HANDLE hGlobalShare ; // in : Global resource handle to open
D3DKMT_PTR ( VOID * , pPrivateRuntimeData ) ; // in : Ptr to buffer that will receive runtime private data for the resource
UINT PrivateRuntimeDataSize ; // in/out : Size in bytes of buffer passed in for runtime private data / If pPrivateRuntimeData was NULL then size in bytes of buffer required for the runtime private data otherwise size in bytes of runtime private data copied into the buffer
UINT TotalPrivateDriverDataSize ; // out : Size in bytes of buffer required to hold all the DriverPrivate data for all of the allocations associated withe the resource
UINT ResourcePrivateDriverDataSize ; // out : Size in bytes of the driver's resource private data
UINT NumAllocations ; // out : Number of allocations associated with this resource
} D3DKMT_QUERYRESOURCEINFO ;
typedef struct _D3DKMT_DESTROYALLOCATION
{
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
D3DKMT_HANDLE hResource ;
D3DKMT_PTR ( CONST D3DKMT_HANDLE * , phAllocationList ) ; // in: pointer to an array allocation handles to destroy
UINT AllocationCount ; // in: Number of allocations in phAllocationList
} D3DKMT_DESTROYALLOCATION ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef struct _D3DKMT_DESTROYALLOCATION2
{
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
D3DKMT_HANDLE hResource ;
D3DKMT_PTR ( CONST D3DKMT_HANDLE * , phAllocationList ) ; // in: pointer to an array allocation handles to destroy
UINT AllocationCount ; // in: Number of allocations in phAllocationList
D3DDDICB_DESTROYALLOCATION2FLAGS Flags ; // in: Bit field defined by D3DDDICB_DESTROYALLOCATION2FLAGS
} D3DKMT_DESTROYALLOCATION2 ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_0
typedef struct _D3DKMT_SETALLOCATIONPRIORITY
{
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
D3DKMT_HANDLE hResource ; // in: Specify the resource to set priority to.
D3DKMT_PTR ( CONST D3DKMT_HANDLE * , phAllocationList ) ; // in: pointer to an array allocation handles to destroy
UINT AllocationCount ; // in: Number of allocations in phAllocationList
D3DKMT_PTR ( CONST UINT * , pPriorities ) ; // in: New priority for each of the allocation in the array.
} D3DKMT_SETALLOCATIONPRIORITY ;
typedef enum _D3DKMT_ALLOCATIONRESIDENCYSTATUS
{
D3DKMT_ALLOCATIONRESIDENCYSTATUS_RESIDENTINGPUMEMORY = 1 ,
D3DKMT_ALLOCATIONRESIDENCYSTATUS_RESIDENTINSHAREDMEMORY = 2 ,
D3DKMT_ALLOCATIONRESIDENCYSTATUS_NOTRESIDENT = 3 ,
} D3DKMT_ALLOCATIONRESIDENCYSTATUS ;
typedef struct _D3DKMT_QUERYALLOCATIONRESIDENCY
{
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
D3DKMT_HANDLE hResource ; // in: pointer to resource owning the list of allocation.
D3DKMT_PTR ( CONST D3DKMT_HANDLE * , phAllocationList ) ; // in: pointer to an array allocation to get residency status.
UINT AllocationCount ; // in: Number of allocations in phAllocationList
D3DKMT_PTR ( D3DKMT_ALLOCATIONRESIDENCYSTATUS * , pResidencyStatus ) ; // out: Residency status of each allocation in the array.
} D3DKMT_QUERYALLOCATIONRESIDENCY ;
typedef struct _D3DKMT_GETRUNTIMEDATA
{
D3DKMT_HANDLE hAdapter ;
D3DKMT_HANDLE hGlobalShare ; // in: shared handle
D3DKMT_PTR ( VOID * , pRuntimeData ) ; // out: in: for a version?
UINT RuntimeDataSize ; // in:
} D3DKMT_GETRUNTIMEDATA ;
typedef enum _KMTUMDVERSION
{
KMTUMDVERSION_DX9 = 0 ,
KMTUMDVERSION_DX10 ,
KMTUMDVERSION_DX11 ,
KMTUMDVERSION_DX12 ,
NUM_KMTUMDVERSIONS
} KMTUMDVERSION ;
typedef struct _D3DKMT_UMDFILENAMEINFO
{
KMTUMDVERSION Version ; // In: UMD version
WCHAR UmdFileName [ MAX_PATH ] ; // Out: UMD file name
} D3DKMT_UMDFILENAMEINFO ;
# define D3DKMT_COMPONENTIZED_INDICATOR L'#'
# define D3DKMT_SUBKEY_DX9 L"DX9"
# define D3DKMT_SUBKEY_OPENGL L"OpenGL"
typedef struct _D3DKMT_OPENGLINFO
{
WCHAR UmdOpenGlIcdFileName [ MAX_PATH ] ;
ULONG Version ;
ULONG Flags ;
} D3DKMT_OPENGLINFO ;
typedef struct _D3DKMT_SEGMENTSIZEINFO
{
D3DKMT_ALIGN64 ULONGLONG DedicatedVideoMemorySize ;
D3DKMT_ALIGN64 ULONGLONG DedicatedSystemMemorySize ;
D3DKMT_ALIGN64 ULONGLONG SharedSystemMemorySize ;
} D3DKMT_SEGMENTSIZEINFO ;
typedef struct _D3DKMT_SEGMENTGROUPSIZEINFO
{
UINT32 PhysicalAdapterIndex ;
D3DKMT_SEGMENTSIZEINFO LegacyInfo ;
D3DKMT_ALIGN64 ULONGLONG LocalMemory ;
D3DKMT_ALIGN64 ULONGLONG NonLocalMemory ;
D3DKMT_ALIGN64 ULONGLONG NonBudgetMemory ;
} D3DKMT_SEGMENTGROUPSIZEINFO ;
typedef struct _D3DKMT_WORKINGSETFLAGS
{
UINT UseDefault : 1 ; // 0x00000001
UINT Reserved : 31 ; // 0xFFFFFFFE
} D3DKMT_WORKINGSETFLAGS ;
typedef struct _D3DKMT_WORKINGSETINFO
{
D3DKMT_WORKINGSETFLAGS Flags ;
ULONG MinimumWorkingSetPercentile ;
ULONG MaximumWorkingSetPercentile ;
} D3DKMT_WORKINGSETINFO ;
typedef struct _D3DKMT_FLIPINFOFLAGS
{
UINT FlipInterval : 1 ; // 0x00000001 // Set when kmd driver support FlipInterval natively
UINT Reserved : 31 ; // 0xFFFFFFFE
} D3DKMT_FLIPINFOFLAGS ;
typedef struct _D3DKMT_FLIPQUEUEINFO
{
UINT MaxHardwareFlipQueueLength ; // Max flip can be queued for hardware flip queue.
UINT MaxSoftwareFlipQueueLength ; // Max flip can be queued for software flip queue for non-legacy device.
D3DKMT_FLIPINFOFLAGS FlipFlags ;
} D3DKMT_FLIPQUEUEINFO ;
typedef struct _D3DKMT_ADAPTERADDRESS
{
UINT BusNumber ; // Bus number on which the physical device is located.
UINT DeviceNumber ; // Index of the physical device on the bus.
UINT FunctionNumber ; // Function number of the adapter on the physical device.
} D3DKMT_ADAPTERADDRESS ;
typedef struct _D3DKMT_ADAPTERREGISTRYINFO
{
WCHAR AdapterString [ MAX_PATH ] ;
WCHAR BiosString [ MAX_PATH ] ;
WCHAR DacType [ MAX_PATH ] ;
WCHAR ChipType [ MAX_PATH ] ;
} D3DKMT_ADAPTERREGISTRYINFO ;
typedef struct _D3DKMT_CURRENTDISPLAYMODE
{
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
D3DKMT_DISPLAYMODE DisplayMode ;
} D3DKMT_CURRENTDISPLAYMODE ;
typedef struct _D3DKMT_VIRTUALADDRESSFLAGS // _ADVSCH_
{
UINT VirtualAddressSupported : 1 ;
UINT Reserved : 31 ;
} D3DKMT_VIRTUALADDRESSFLAGS ;
typedef struct _D3DKMT_VIRTUALADDRESSINFO // _ADVSCH_
{
D3DKMT_VIRTUALADDRESSFLAGS VirtualAddressFlags ;
} D3DKMT_VIRTUALADDRESSINFO ;
typedef enum _QAI_DRIVERVERSION
{
KMT_DRIVERVERSION_WDDM_1_0 = 1000 ,
KMT_DRIVERVERSION_WDDM_1_1_PRERELEASE = 1102 ,
KMT_DRIVERVERSION_WDDM_1_1 = 1105 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
KMT_DRIVERVERSION_WDDM_1_2 = 1200 ,
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
KMT_DRIVERVERSION_WDDM_1_3 = 1300 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM1_3
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
KMT_DRIVERVERSION_WDDM_2_0 = 2000 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_0
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
KMT_DRIVERVERSION_WDDM_2_1 = 2100 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_1
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
KMT_DRIVERVERSION_WDDM_2_2 = 2200 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_2
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
KMT_DRIVERVERSION_WDDM_2_3 = 2300 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_3
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
KMT_DRIVERVERSION_WDDM_2_4 = 2400 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_4
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_5)
KMT_DRIVERVERSION_WDDM_2_5 = 2500 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_5
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
KMT_DRIVERVERSION_WDDM_2_6 = 2600 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_6
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
KMT_DRIVERVERSION_WDDM_2_7 = 2700 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_7
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_8)
KMT_DRIVERVERSION_WDDM_2_8 = 2800 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_8
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
KMT_DRIVERVERSION_WDDM_2_9 = 2900 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_9
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
KMT_DRIVERVERSION_WDDM_3_0 = 3000
# endif // DXGKDDI_INTERFACE_VERSION_WDDM3_0
} D3DKMT_DRIVERVERSION ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef struct _D3DKMT_ADAPTERTYPE
{
union
{
struct
{
UINT RenderSupported : 1 ;
UINT DisplaySupported : 1 ;
UINT SoftwareDevice : 1 ;
UINT PostDevice : 1 ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
UINT HybridDiscrete : 1 ;
UINT HybridIntegrated : 1 ;
UINT IndirectDisplayDevice : 1 ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
UINT Paravirtualized : 1 ;
UINT ACGSupported : 1 ;
UINT SupportSetTimingsFromVidPn : 1 ;
UINT Detachable : 1 ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
UINT ComputeOnly : 1 ;
UINT Prototype : 1 ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
UINT RuntimePowerManagement : 1 ;
UINT Reserved : 18 ;
# else
UINT Reserved : 19 ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
# else
UINT Reserved : 21 ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
# else
UINT Reserved : 25 ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
# else
UINT Reserved : 28 ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
} ;
UINT Value ;
} ;
} D3DKMT_ADAPTERTYPE ;
typedef struct _D3DKMT_OUTPUTDUPLCONTEXTSCOUNT
{
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
UINT OutputDuplicationCount ;
} D3DKMT_OUTPUTDUPLCONTEXTSCOUNT ;
typedef struct _D3DKMT_UMD_DRIVER_VERSION
{
D3DKMT_ALIGN64 LARGE_INTEGER DriverVersion ;
} D3DKMT_UMD_DRIVER_VERSION ;
typedef struct _D3DKMT_KMD_DRIVER_VERSION
{
D3DKMT_ALIGN64 LARGE_INTEGER DriverVersion ;
} D3DKMT_KMD_DRIVER_VERSION ;
typedef struct _D3DKMT_DIRECTFLIP_SUPPORT
{
BOOL Supported ;
} D3DKMT_DIRECTFLIP_SUPPORT ;
typedef struct _D3DKMT_MULTIPLANEOVERLAY_SUPPORT
{
BOOL Supported ;
} D3DKMT_MULTIPLANEOVERLAY_SUPPORT ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION)
typedef struct _D3DKMT_MULTIPLANEOVERLAY_HUD_SUPPORT
{
UINT VidPnSourceId ; // Not yet used.
BOOL Update ;
BOOL KernelSupported ;
BOOL HudSupported ;
} D3DKMT_MULTIPLANEOVERLAY_HUD_SUPPORT ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
typedef struct _D3DKMT_DLIST_DRIVER_NAME
{
WCHAR DListFileName [ MAX_PATH ] ; // Out: DList driver file name
} D3DKMT_DLIST_DRIVER_NAME ;
typedef struct _D3DKMT_CPDRIVERNAME
{
WCHAR ContentProtectionFileName [ MAX_PATH ] ;
} D3DKMT_CPDRIVERNAME ;
typedef struct _D3DKMT_MIRACASTCOMPANIONDRIVERNAME
{
WCHAR MiracastCompanionDriverName [ MAX_PATH ] ;
} D3DKMT_MIRACASTCOMPANIONDRIVERNAME ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM1_3
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef struct _D3DKMT_XBOX
{
BOOL IsXBOX ;
} D3DKMT_XBOX ;
typedef struct _D3DKMT_INDEPENDENTFLIP_SUPPORT
{
BOOL Supported ;
} D3DKMT_INDEPENDENTFLIP_SUPPORT ;
typedef struct _D3DKMT_MULTIPLANEOVERLAY_DECODE_SUPPORT
{
BOOL Supported ;
} D3DKMT_MULTIPLANEOVERLAY_DECODE_SUPPORT ;
typedef struct _D3DKMT_ISBADDRIVERFORHWPROTECTIONDISABLED
{
BOOL Disabled ;
} D3DKMT_ISBADDRIVERFORHWPROTECTIONDISABLED ;
typedef struct _D3DKMT_MULTIPLANEOVERLAY_SECONDARY_SUPPORT
{
BOOL Supported ;
} D3DKMT_MULTIPLANEOVERLAY_SECONDARY_SUPPORT ;
typedef struct _D3DKMT_INDEPENDENTFLIP_SECONDARY_SUPPORT
{
BOOL Supported ;
} D3DKMT_INDEPENDENTFLIP_SECONDARY_SUPPORT ;
typedef struct _D3DKMT_PANELFITTER_SUPPORT
{
BOOL Supported ;
} D3DKMT_PANELFITTER_SUPPORT ;
typedef struct _D3DKMT_PHYSICAL_ADAPTER_COUNT
{
UINT Count ;
} D3DKMT_PHYSICAL_ADAPTER_COUNT ;
typedef struct _D3DKMT_DEVICE_IDS
{
UINT VendorID ;
UINT DeviceID ;
UINT SubVendorID ;
UINT SubSystemID ;
UINT RevisionID ;
UINT BusType ;
} D3DKMT_DEVICE_IDS ;
typedef struct _D3DKMT_QUERY_DEVICE_IDS
{
UINT PhysicalAdapterIndex ; // in:
D3DKMT_DEVICE_IDS DeviceIds ; // out:
} D3DKMT_QUERY_DEVICE_IDS ;
typedef enum _D3DKMT_PNP_KEY_TYPE
{
D3DKMT_PNP_KEY_HARDWARE = 1 ,
D3DKMT_PNP_KEY_SOFTWARE = 2
} D3DKMT_PNP_KEY_TYPE ;
typedef struct _D3DKMT_QUERY_PHYSICAL_ADAPTER_PNP_KEY
{
UINT PhysicalAdapterIndex ;
D3DKMT_PNP_KEY_TYPE PnPKeyType ;
D3DKMT_PTR ( _Field_size_opt_ ( * pCchDest ) WCHAR * , pDest ) ;
D3DKMT_PTR ( UINT * , pCchDest ) ;
} D3DKMT_QUERY_PHYSICAL_ADAPTER_PNP_KEY ;
typedef enum _D3DKMT_MIRACAST_DRIVER_TYPE
{
D3DKMT_MIRACAST_DRIVER_NOT_SUPPORTED = 0 ,
D3DKMT_MIRACAST_DRIVER_IHV = 1 ,
D3DKMT_MIRACAST_DRIVER_MS = 2 ,
} D3DKMT_MIRACAST_DRIVER_TYPE ;
typedef struct _D3DKMT_QUERY_MIRACAST_DRIVER_TYPE
{
D3DKMT_MIRACAST_DRIVER_TYPE MiracastDriverType ;
} D3DKMT_QUERY_MIRACAST_DRIVER_TYPE ;
typedef struct _D3DKMT_GPUMMU_CAPS
{
union
{
struct
{
UINT ReadOnlyMemorySupported : 1 ;
UINT NoExecuteMemorySupported : 1 ;
UINT CacheCoherentMemorySupported : 1 ;
UINT Reserved : 29 ;
} ;
UINT Value ;
} Flags ;
UINT VirtualAddressBitCount ;
} D3DKMT_GPUMMU_CAPS ;
typedef struct _D3DKMT_QUERY_GPUMMU_CAPS
{
UINT PhysicalAdapterIndex ; // in:
D3DKMT_GPUMMU_CAPS Caps ; // out:
} D3DKMT_QUERY_GPUMMU_CAPS ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_0
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
typedef struct _D3DKMT_MPO3DDI_SUPPORT
{
BOOL Supported ;
} D3DKMT_MPO3DDI_SUPPORT ;
typedef struct _D3DKMT_HWDRM_SUPPORT
{
BOOLEAN Supported ;
} D3DKMT_HWDRM_SUPPORT ;
typedef struct _D3DKMT_MPOKERNELCAPS_SUPPORT
{
BOOL Supported ;
} D3DKMT_MPOKERNELCAPS_SUPPORT ;
typedef struct _D3DKMT_GET_DEVICE_VIDPN_OWNERSHIP_INFO
{
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
BOOLEAN bFailedDwmAcquireVidPn ; // out : True if Dwm Acquire VidPn failed due to another Dwm device having ownership
} D3DKMT_GET_DEVICE_VIDPN_OWNERSHIP_INFO ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_2
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
typedef struct _D3DKMT_BLOCKLIST_INFO
{
UINT Size ;
WCHAR BlockList [ 1 ] ;
} D3DKMT_BLOCKLIST_INFO ;
typedef struct _D3DKMT_QUERY_ADAPTER_UNIQUE_GUID
{
WCHAR AdapterUniqueGUID [ 40 ] ;
} D3DKMT_QUERY_ADAPTER_UNIQUE_GUID ;
typedef struct _D3DKMT_NODE_PERFDATA
{
UINT32 NodeOrdinal ; // in: Node ordinal of the requested engine.
UINT32 PhysicalAdapterIndex ; // in: The physical adapter index, in an LDA chain
D3DKMT_ALIGN64 ULONGLONG Frequency ; // out: Clock frequency of the engine in hertz
D3DKMT_ALIGN64 ULONGLONG MaxFrequency ; // out: Max engine clock frequency
D3DKMT_ALIGN64 ULONGLONG MaxFrequencyOC ; // out: Max engine over clock frequency
ULONG Voltage ; // out: Voltage of the engine in milli volts mV
ULONG VoltageMax ; // out: Max voltage levels in milli volts.
ULONG VoltageMaxOC ; // out: Max voltage level while overclocked in milli volts.
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_5)
D3DKMT_ALIGN64 ULONGLONG MaxTransitionLatency ; // out: Max transition latency to change the frequency in 100 nanoseconds
# else
D3DKMT_ALIGN64 ULONGLONG Reserved ;
# endif
} D3DKMT_NODE_PERFDATA ;
typedef struct _D3DKMT_ADAPTER_PERFDATA
{
UINT32 PhysicalAdapterIndex ; // in: The physical adapter index, in an LDA chain
D3DKMT_ALIGN64 ULONGLONG MemoryFrequency ; // out: Clock frequency of the memory in hertz
D3DKMT_ALIGN64 ULONGLONG MaxMemoryFrequency ; // out: Max memory clock frequency
D3DKMT_ALIGN64 ULONGLONG MaxMemoryFrequencyOC ; // out: Clock frequency of the memory while overclocked in hertz.
D3DKMT_ALIGN64 ULONGLONG MemoryBandwidth ; // out: Amount of memory transferred in bytes
D3DKMT_ALIGN64 ULONGLONG PCIEBandwidth ; // out: Amount of memory transferred over PCI-E in bytes
ULONG FanRPM ; // out: Fan rpm
ULONG Power ; // out: Power draw of the adapter in tenths of a percentage
ULONG Temperature ; // out: Temperature in deci-Celsius 1 = 0.1C
UCHAR PowerStateOverride ; // out: Overrides dxgkrnls power view of linked adapters.
} D3DKMT_ADAPTER_PERFDATA ;
typedef struct _D3DKMT_ADAPTER_PERFDATACAPS
{
UINT32 PhysicalAdapterIndex ; // in: The physical adapter index, in an LDA chain
D3DKMT_ALIGN64 ULONGLONG MaxMemoryBandwidth ; // out: Max memory bandwidth in bytes for 1 second
D3DKMT_ALIGN64 ULONGLONG MaxPCIEBandwidth ; // out: Max pcie bandwidth in bytes for 1 second
ULONG MaxFanRPM ; // out: Max fan rpm
ULONG TemperatureMax ; // out: Max temperature before damage levels
ULONG TemperatureWarning ; // out: The temperature level where throttling begins.
} D3DKMT_ADAPTER_PERFDATACAPS ;
# define DXGK_MAX_GPUVERSION_NAME_LENGTH 32
typedef struct _D3DKMT_GPUVERSION
{
UINT32 PhysicalAdapterIndex ; // in: The physical adapter index, in an LDA chain
WCHAR BiosVersion [ DXGK_MAX_GPUVERSION_NAME_LENGTH ] ; //out: The gpu bios version
WCHAR GpuArchitecture [ DXGK_MAX_GPUVERSION_NAME_LENGTH ] ; //out: The gpu architectures name.
} D3DKMT_GPUVERSION ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_4
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
typedef struct _D3DKMT_DRIVER_DESCRIPTION
{
WCHAR DriverDescription [ 4096 ] ; //out: The driver description
} D3DKMT_DRIVER_DESCRIPTION ;
typedef struct _D3DKMT_QUERY_SCANOUT_CAPS
{
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
UINT Caps ;
} D3DKMT_QUERY_SCANOUT_CAPS ;
typedef enum _KMT_DISPLAY_UMD_VERSION
{
KMT_DISPLAY_UMDVERSION_1 = 0 ,
NUM_KMT_DISPLAY_UMDVERSIONS
} KMT_DISPLAY_UMD_VERSION ;
typedef struct _D3DKMT_DISPLAY_UMD_FILENAMEINFO
{
KMT_DISPLAY_UMD_VERSION Version ; // In: UMD version
WCHAR UmdFileName [ MAX_PATH ] ; // Out: UMD file name
} D3DKMT_DISPLAY_UMD_FILENAMEINFO ;
typedef struct _D3DKMT_PARAVIRTUALIZATION
{
// This adapter property originates from the VM/ Container, and is currently replicated on adapters.
// It precludes extended device functions (i.e. Escapes) for paravirtualized devices which not known at all,
// and therefore assumed not to be secure enough for demanding server scenarios.
BOOLEAN SecureContainer ;
} D3DKMT_PARAVIRTUALIZATION ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_6
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_8)
typedef struct _D3DKMT_HYBRID_DLIST_DLL_SUPPORT
{
BOOL Supported ;
} D3DKMT_HYBRID_DLIST_DLL_SUPPORT ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_8
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
typedef enum _D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER
{
D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER_NONE = 0 ,
D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER_COPY = 1 ,
D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER_TEXTURE = 2 ,
D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER_SCANOUT = 3 ,
} D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER ;
typedef struct _D3DKMT_CROSSADAPTERRESOURCE_SUPPORT
{
D3DKMT_CROSSADAPTERRESOURCE_SUPPORT_TIER SupportTier ;
} D3DKMT_CROSSADAPTERRESOURCE_SUPPORT ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_9
typedef enum _KMTQUERYADAPTERINFOTYPE
{
KMTQAITYPE_UMDRIVERPRIVATE = 0 ,
KMTQAITYPE_UMDRIVERNAME = 1 ,
KMTQAITYPE_UMOPENGLINFO = 2 ,
KMTQAITYPE_GETSEGMENTSIZE = 3 ,
KMTQAITYPE_ADAPTERGUID = 4 ,
KMTQAITYPE_FLIPQUEUEINFO = 5 ,
KMTQAITYPE_ADAPTERADDRESS = 6 ,
KMTQAITYPE_SETWORKINGSETINFO = 7 ,
KMTQAITYPE_ADAPTERREGISTRYINFO = 8 ,
KMTQAITYPE_CURRENTDISPLAYMODE = 9 ,
KMTQAITYPE_MODELIST = 10 ,
KMTQAITYPE_CHECKDRIVERUPDATESTATUS = 11 ,
KMTQAITYPE_VIRTUALADDRESSINFO = 12 , // _ADVSCH_
KMTQAITYPE_DRIVERVERSION = 13 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
KMTQAITYPE_ADAPTERTYPE = 15 ,
KMTQAITYPE_OUTPUTDUPLCONTEXTSCOUNT = 16 ,
KMTQAITYPE_WDDM_1_2_CAPS = 17 ,
KMTQAITYPE_UMD_DRIVER_VERSION = 18 ,
KMTQAITYPE_DIRECTFLIP_SUPPORT = 19 ,
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
KMTQAITYPE_MULTIPLANEOVERLAY_SUPPORT = 20 ,
KMTQAITYPE_DLIST_DRIVER_NAME = 21 ,
KMTQAITYPE_WDDM_1_3_CAPS = 22 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM1_3
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION)
KMTQAITYPE_MULTIPLANEOVERLAY_HUD_SUPPORT = 23 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
KMTQAITYPE_WDDM_2_0_CAPS = 24 ,
KMTQAITYPE_NODEMETADATA = 25 ,
KMTQAITYPE_CPDRIVERNAME = 26 ,
KMTQAITYPE_XBOX = 27 ,
KMTQAITYPE_INDEPENDENTFLIP_SUPPORT = 28 ,
KMTQAITYPE_MIRACASTCOMPANIONDRIVERNAME = 29 ,
KMTQAITYPE_PHYSICALADAPTERCOUNT = 30 ,
KMTQAITYPE_PHYSICALADAPTERDEVICEIDS = 31 ,
KMTQAITYPE_DRIVERCAPS_EXT = 32 ,
KMTQAITYPE_QUERY_MIRACAST_DRIVER_TYPE = 33 ,
KMTQAITYPE_QUERY_GPUMMU_CAPS = 34 ,
KMTQAITYPE_QUERY_MULTIPLANEOVERLAY_DECODE_SUPPORT = 35 ,
KMTQAITYPE_QUERY_HW_PROTECTION_TEARDOWN_COUNT = 36 ,
KMTQAITYPE_QUERY_ISBADDRIVERFORHWPROTECTIONDISABLED = 37 ,
KMTQAITYPE_MULTIPLANEOVERLAY_SECONDARY_SUPPORT = 38 ,
KMTQAITYPE_INDEPENDENTFLIP_SECONDARY_SUPPORT = 39 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_0
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
KMTQAITYPE_PANELFITTER_SUPPORT = 40 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_1
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
KMTQAITYPE_PHYSICALADAPTERPNPKEY = 41 ,
KMTQAITYPE_GETSEGMENTGROUPSIZE = 42 ,
KMTQAITYPE_MPO3DDI_SUPPORT = 43 ,
KMTQAITYPE_HWDRM_SUPPORT = 44 ,
KMTQAITYPE_MPOKERNELCAPS_SUPPORT = 45 ,
KMTQAITYPE_MULTIPLANEOVERLAY_STRETCH_SUPPORT = 46 ,
KMTQAITYPE_GET_DEVICE_VIDPN_OWNERSHIP_INFO = 47 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_2
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
KMTQAITYPE_QUERYREGISTRY = 48 ,
KMTQAITYPE_KMD_DRIVER_VERSION = 49 ,
KMTQAITYPE_BLOCKLIST_KERNEL = 50 ,
KMTQAITYPE_BLOCKLIST_RUNTIME = 51 ,
KMTQAITYPE_ADAPTERGUID_RENDER = 52 ,
KMTQAITYPE_ADAPTERADDRESS_RENDER = 53 ,
KMTQAITYPE_ADAPTERREGISTRYINFO_RENDER = 54 ,
KMTQAITYPE_CHECKDRIVERUPDATESTATUS_RENDER = 55 ,
KMTQAITYPE_DRIVERVERSION_RENDER = 56 ,
KMTQAITYPE_ADAPTERTYPE_RENDER = 57 ,
KMTQAITYPE_WDDM_1_2_CAPS_RENDER = 58 ,
KMTQAITYPE_WDDM_1_3_CAPS_RENDER = 59 ,
KMTQAITYPE_QUERY_ADAPTER_UNIQUE_GUID = 60 ,
KMTQAITYPE_NODEPERFDATA = 61 ,
KMTQAITYPE_ADAPTERPERFDATA = 62 ,
KMTQAITYPE_ADAPTERPERFDATA_CAPS = 63 ,
KMTQUITYPE_GPUVERSION = 64 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_4
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
KMTQAITYPE_DRIVER_DESCRIPTION = 65 ,
KMTQAITYPE_DRIVER_DESCRIPTION_RENDER = 66 ,
KMTQAITYPE_SCANOUT_CAPS = 67 ,
KMTQAITYPE_DISPLAY_UMDRIVERNAME = 71 , // Added in 19H2
KMTQAITYPE_PARAVIRTUALIZATION_RENDER = 68 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_6
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
KMTQAITYPE_SERVICENAME = 69 ,
KMTQAITYPE_WDDM_2_7_CAPS = 70 ,
KMTQAITYPE_TRACKEDWORKLOAD_SUPPORT = 72 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_7
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_8)
KMTQAITYPE_HYBRID_DLIST_DLL_SUPPORT = 73 ,
KMTQAITYPE_DISPLAY_CAPS = 74 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_8
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
KMTQAITYPE_WDDM_2_9_CAPS = 75 ,
KMTQAITYPE_CROSSADAPTERRESOURCE_SUPPORT = 76 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_9
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
KMTQAITYPE_WDDM_3_0_CAPS = 77 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM3_0
// If a new enum will be used by DXGI or D3D11 software driver code, update the test content in the area.
// Search for KMTQAITYPE_PARAVIRTUALIZATION_RENDER in directx\dxg\dxgi\unittests for references.
} KMTQUERYADAPTERINFOTYPE ;
typedef struct _D3DKMT_QUERYADAPTERINFO
{
D3DKMT_HANDLE hAdapter ;
KMTQUERYADAPTERINFOTYPE Type ;
D3DKMT_PTR ( VOID * , pPrivateDriverData ) ;
UINT PrivateDriverDataSize ;
} D3DKMT_QUERYADAPTERINFO ;
typedef struct _D3DKMT_OPENADAPTERFROMHDC
{
D3DKMT_PTR ( HDC , hDc ) ; // in: DC that maps to a single display
D3DKMT_HANDLE hAdapter ; // out: adapter handle
LUID AdapterLuid ; // out: adapter LUID
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // out: VidPN source ID for that particular display
} D3DKMT_OPENADAPTERFROMHDC ;
typedef struct _D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME
{
WCHAR DeviceName [ 32 ] ; // in: Name of GDI device from which to open an adapter instance
D3DKMT_HANDLE hAdapter ; // out: adapter handle
LUID AdapterLuid ; // out: adapter LUID
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // out: VidPN source ID for that particular display
} D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME ;
typedef struct _D3DKMT_OPENADAPTERFROMDEVICENAME
{
D3DKMT_PTR ( PCWSTR , pDeviceName ) ; // in: NULL terminated string containing the device name to open
D3DKMT_HANDLE hAdapter ; // out: adapter handle
LUID AdapterLuid ; // out: adapter LUID
} D3DKMT_OPENADAPTERFROMDEVICENAME ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
# define MAX_ENUM_ADAPTERS 16
typedef struct _D3DKMT_ADAPTERINFO
{
D3DKMT_HANDLE hAdapter ;
LUID AdapterLuid ;
ULONG NumOfSources ;
BOOL bPrecisePresentRegionsPreferred ;
} D3DKMT_ADAPTERINFO ;
typedef struct _D3DKMT_ENUMADAPTERS
{
_In_range_ ( 0 , MAX_ENUM_ADAPTERS ) ULONG NumAdapters ;
D3DKMT_ADAPTERINFO Adapters [ MAX_ENUM_ADAPTERS ] ;
} D3DKMT_ENUMADAPTERS ;
typedef struct _D3DKMT_ENUMADAPTERS2
{
ULONG NumAdapters ; // in/out: On input, the count of the pAdapters array buffer. On output, the number of adapters enumerated.
D3DKMT_PTR ( D3DKMT_ADAPTERINFO * , pAdapters ) ; // out: Array of enumerated adapters containing NumAdapters elements
} D3DKMT_ENUMADAPTERS2 ;
typedef struct _D3DKMT_OPENADAPTERFROMLUID
{
LUID AdapterLuid ;
D3DKMT_HANDLE hAdapter ;
} D3DKMT_OPENADAPTERFROMLUID ;
typedef struct _D3DKMT_QUERYREMOTEVIDPNSOURCEFROMGDIDISPLAYNAME
{
WCHAR DeviceName [ 32 ] ; // in: Name of GDI device from which to open an adapter instance
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // out: VidPN source ID for that particular display
} D3DKMT_QUERYREMOTEVIDPNSOURCEFROMGDIDISPLAYNAME ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
typedef union _D3DKMT_ENUMADAPTERS_FILTER
{
// Setting none of these flags will still enumerate adapters,
// but there are fewer adapters than EnumAdapters2 enumerates.
// ComputeOnly adapters are left out of the default enumeration, to avoid breaking applications.
// DisplayOnly adapters are also left out of the default enumeration.
struct
{
ULONGLONG IncludeComputeOnly : 1 ;
ULONGLONG IncludeDisplayOnly : 1 ;
ULONGLONG Reserved : 62 ;
} ;
D3DKMT_ALIGN64 ULONGLONG Value ;
} D3DKMT_ENUMADAPTERS_FILTER ;
typedef struct _D3DKMT_ENUMADAPTERS3
{
D3DKMT_ENUMADAPTERS_FILTER Filter ; // in: Defines the filter
ULONG NumAdapters ; // in/out: On input, the count of the pAdapters array buffer. On output, the number of adapters enumerated.
D3DKMT_PTR ( D3DKMT_ADAPTERINFO * , pAdapters ) ; // out: Array of enumerated adapters containing NumAdapters elements
} D3DKMT_ENUMADAPTERS3 ;
# endif
typedef struct _D3DKMT_CLOSEADAPTER
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
} D3DKMT_CLOSEADAPTER ;
typedef struct _D3DKMT_GETSHAREDPRIMARYHANDLE
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN source ID
D3DKMT_HANDLE hSharedPrimary ; // out: global shared primary handle (if one exists currently)
} D3DKMT_GETSHAREDPRIMARYHANDLE ;
typedef struct _D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION
{
LUID AdapterLuid ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
RECTL LockRect ; // in: If zero rect then we are locking the whole primary else the lock sub-rect
} D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION ;
typedef struct _D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION
{
LUID AdapterLuid ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
} D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef struct _D3DKMT_PINDIRECTFLIPRESOURCES
{
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
UINT ResourceCount ; // in : Number of resources to pin
D3DKMT_PTR ( _Field_size_ ( ResourceCount ) D3DKMT_HANDLE * , pResourceList ) ; // in : Array of resource handles to pin
} D3DKMT_PINDIRECTFLIPRESOURCES ;
typedef struct _D3DKMT_UNPINDIRECTFLIPRESOURCES
{
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
UINT ResourceCount ; // in : Number of resources to unpin
D3DKMT_PTR ( _Field_size_ ( ResourceCount ) D3DKMT_HANDLE * , pResourceList ) ; // in : Array of resource handles to unpin
} D3DKMT_UNPINDIRECTFLIPRESOURCES ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
typedef union _D3DKMT_PINRESOURCEFLAGS
{
struct
{
UINT DirectFlipResources : 1 ; // Used by DWM to indicate the resources are DirectFlip resources
// and should be pinned in-place.
UINT Reserved : 31 ;
} ;
UINT Value ;
} D3DKMT_PINRESOURCEFLAGS ;
typedef struct _D3DKMT_PINRESOURCES
{
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
UINT ResourceCount ; // in : Number of resources to pin
D3DKMT_PTR ( _Field_size_ ( ResourceCount ) D3DKMT_HANDLE * , pResourceList ) ; // in : Array of resource handles to pin
D3DKMT_PINRESOURCEFLAGS Flags ; // in : Flags
D3DKMT_HANDLE hPagingQueue ; // in opt : Handle to a paging queue used to synchronize the operation
D3DKMT_ALIGN64 UINT64 PagingFence ; // out : Fence value returned if hPagingQueue is not NULL
} D3DKMT_PINRESOURCES ;
typedef struct _D3DKMT_UNPINRESOURCES
{
D3DKMT_HANDLE hDevice ; // in : Indentifies the device
UINT ResourceCount ; // in : Number of resources to unpin
D3DKMT_PTR ( _Field_size_ ( ResourceCount ) D3DKMT_HANDLE * , pResourceList ) ; // in : Array of resource handles to unpin
UINT Reserved ;
} D3DKMT_UNPINRESOURCES ;
# endif
typedef enum _D3DKMT_ESCAPETYPE
{
D3DKMT_ESCAPE_DRIVERPRIVATE = 0 ,
D3DKMT_ESCAPE_VIDMM = 1 ,
D3DKMT_ESCAPE_TDRDBGCTRL = 2 ,
D3DKMT_ESCAPE_VIDSCH = 3 ,
D3DKMT_ESCAPE_DEVICE = 4 ,
D3DKMT_ESCAPE_DMM = 5 ,
D3DKMT_ESCAPE_DEBUG_SNAPSHOT = 6 ,
// unused (7 was previously used to set driver update in-progress status, D3DKMT_ESCAPE_SETDRIVERUPDATESTATUS)
D3DKMT_ESCAPE_DRT_TEST = 8 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
D3DKMT_ESCAPE_DIAGNOSTICS = 9 ,
D3DKMT_ESCAPE_OUTPUTDUPL_SNAPSHOT = 10 ,
D3DKMT_ESCAPE_OUTPUTDUPL_DIAGNOSTICS = 11 ,
D3DKMT_ESCAPE_BDD_PNP = 12 ,
D3DKMT_ESCAPE_BDD_FALLBACK = 13 ,
D3DKMT_ESCAPE_ACTIVATE_SPECIFIC_DIAG = 14 ,
D3DKMT_ESCAPE_MODES_PRUNED_OUT = 15 ,
D3DKMT_ESCAPE_WHQL_INFO = 16 ,
D3DKMT_ESCAPE_BRIGHTNESS = 17 ,
D3DKMT_ESCAPE_EDID_CACHE = 18 ,
// unused (19 was previously D3DKMT_ESCAPE_GENERIC_ADAPTER_DIAG_INFO)
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
D3DKMT_ESCAPE_MIRACAST_DISPLAY_REQUEST = 20 ,
D3DKMT_ESCAPE_HISTORY_BUFFER_STATUS = 21 ,
// 22 can be reused for future needs as it was never exposed for external purposes
D3DKMT_ESCAPE_MIRACAST_ADAPTER_DIAG_INFO = 23 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
D3DKMT_ESCAPE_FORCE_BDDFALLBACK_HEADLESS = 24 ,
D3DKMT_ESCAPE_REQUEST_MACHINE_CRASH = 25 ,
// unused (26 was previously D3DKMT_ESCAPE_HMD_GET_EDID_BASE_BLOCK)
D3DKMT_ESCAPE_SOFTGPU_ENABLE_DISABLE_HMD = 27 ,
D3DKMT_ESCAPE_PROCESS_VERIFIER_OPTION = 28 ,
D3DKMT_ESCAPE_ADAPTER_VERIFIER_OPTION = 29 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
D3DKMT_ESCAPE_IDD_REQUEST = 30 ,
D3DKMT_ESCAPE_DOD_SET_DIRTYRECT_MODE = 31 ,
D3DKMT_ESCAPE_LOG_CODEPOINT_PACKET = 32 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
D3DKMT_ESCAPE_LOG_USERMODE_DAIG_PACKET = 33 ,
D3DKMT_ESCAPE_GET_EXTERNAL_DIAGNOSTICS = 34 ,
// unused (35 previously was D3DKMT_ESCAPE_GET_PREFERRED_MODE)
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
D3DKMT_ESCAPE_GET_DISPLAY_CONFIGURATIONS = 36 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
D3DKMT_ESCAPE_QUERY_IOMMU_STATUS = 37 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
D3DKMT_ESCAPE_CCD_DATABASE = 38 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
D3DKMT_ESCAPE_QUERY_DMA_REMAPPING_STATUS = 39 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM3_0
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_6
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_4
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_3
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_2
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_1
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_0
# endif // DXGKDDI_INTERFACE_VERSION_WDDM1_3
D3DKMT_ESCAPE_WIN32K_START = 1024 ,
D3DKMT_ESCAPE_WIN32K_HIP_DEVICE_INFO = 1024 ,
D3DKMT_ESCAPE_WIN32K_QUERY_CD_ROTATION_BLOCK = 1025 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
D3DKMT_ESCAPE_WIN32K_DPI_INFO = 1026 , // Use hContext for the desired hdev
D3DKMT_ESCAPE_WIN32K_PRESENTER_VIEW_INFO = 1027 ,
D3DKMT_ESCAPE_WIN32K_SYSTEM_DPI = 1028 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
D3DKMT_ESCAPE_WIN32K_BDD_FALLBACK = 1029 ,
D3DKMT_ESCAPE_WIN32K_DDA_TEST_CTL = 1030 ,
D3DKMT_ESCAPE_WIN32K_USER_DETECTED_BLACK_SCREEN = 1031 ,
// unused (1032 was previously D3DKMT_ESCAPE_WIN32K_HMD_ENUM)
// unused (1033 was previously D3DKMT_ESCAPE_WIN32K_HMD_CONTROL)
// unused (1034 was previously D3DKMT_ESCAPE_WIN32K_LPMDISPLAY_CONTROL)
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_5)
D3DKMT_ESCAPE_WIN32K_DISPBROKER_TEST = 1035 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
D3DKMT_ESCAPE_WIN32K_COLOR_PROFILE_INFO = 1036 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
D3DKMT_ESCAPE_WIN32K_SET_DIMMED_STATE = 1037 ,
D3DKMT_ESCAPE_WIN32K_SPECIALIZED_DISPLAY_TEST = 1038 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_7
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_6
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_5
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_0
# endif // DXGKDDI_INTERFACE_VERSION_WDDM1_3
# endif // DXGKDDI_INTERFACE_VERSION_WIN8
} D3DKMT_ESCAPETYPE ;
typedef struct _D3DKMT_DOD_SET_DIRTYRECT_MODE
{
BOOL bForceFullScreenDirty ; // in: indicates if this adapter should always give full screen dirty for every Dod present
} D3DKMT_DOD_SET_DIRTYRECT_MODE ;
typedef enum _D3DKMT_TDRDBGCTRLTYPE
{
D3DKMT_TDRDBGCTRLTYPE_FORCETDR = 0 , //Simulate a TDR
D3DKMT_TDRDBGCTRLTYPE_DISABLEBREAK = 1 , //Disable DebugBreak on timeout
D3DKMT_TDRDBGCTRLTYPE_ENABLEBREAK = 2 , //Enable DebugBreak on timeout
D3DKMT_TDRDBGCTRLTYPE_UNCONDITIONAL = 3 , //Disables all safety conditions (e.g. check for consecutive recoveries)
D3DKMT_TDRDBGCTRLTYPE_VSYNCTDR = 4 , //Simulate a Vsync TDR
D3DKMT_TDRDBGCTRLTYPE_GPUTDR = 5 , //Simulate a GPU TDR
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
D3DKMT_TDRDBGCTRLTYPE_FORCEDODTDR = 6 , //Simulate a Display Only Present TDR
D3DKMT_TDRDBGCTRLTYPE_FORCEDODVSYNCTDR = 7 , //Simulate a Display Only Vsync TDR
D3DKMT_TDRDBGCTRLTYPE_ENGINETDR = 8 , //Simulate an engine TDR
# endif
} D3DKMT_TDRDBGCTRLTYPE ;
typedef enum _D3DKMT_VIDMMESCAPETYPE
{
D3DKMT_VIDMMESCAPETYPE_SETFAULT = 0 ,
D3DKMT_VIDMMESCAPETYPE_RUN_COHERENCY_TEST = 1 ,
D3DKMT_VIDMMESCAPETYPE_RUN_UNMAP_TO_DUMMY_PAGE_TEST = 2 ,
D3DKMT_VIDMMESCAPETYPE_APERTURE_CORRUPTION_CHECK = 3 ,
D3DKMT_VIDMMESCAPETYPE_SUSPEND_CPU_ACCESS_TEST = 4 ,
D3DKMT_VIDMMESCAPETYPE_EVICT = 5 ,
D3DKMT_VIDMMESCAPETYPE_EVICT_BY_NT_HANDLE = 6 ,
D3DKMT_VIDMMESCAPETYPE_GET_VAD_INFO = 7 ,
D3DKMT_VIDMMESCAPETYPE_SET_BUDGET = 8 ,
D3DKMT_VIDMMESCAPETYPE_SUSPEND_PROCESS = 9 ,
D3DKMT_VIDMMESCAPETYPE_RESUME_PROCESS = 10 ,
D3DKMT_VIDMMESCAPETYPE_GET_BUDGET = 11 ,
D3DKMT_VIDMMESCAPETYPE_SET_TRIM_INTERVALS = 12 ,
D3DKMT_VIDMMESCAPETYPE_EVICT_BY_CRITERIA = 13 ,
D3DKMT_VIDMMESCAPETYPE_WAKE = 14 ,
D3DKMT_VIDMMESCAPETYPE_DEFRAG = 15 ,
D3DKMT_VIDMMESCAPETYPE_DELAYEXECUTION = 16 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
D3DKMT_VIDMMESCAPETYPE_VALIDATE_INTEGRITY = 17 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
D3DKMT_VIDMMESCAPETYPE_SET_EVICTION_CONFIG = 18 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_9
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_7
} D3DKMT_VIDMMESCAPETYPE ;
typedef enum _D3DKMT_VIDSCHESCAPETYPE
{
D3DKMT_VIDSCHESCAPETYPE_PREEMPTIONCONTROL = 0 , //Enable/Disable preemption
D3DKMT_VIDSCHESCAPETYPE_SUSPENDSCHEDULER = 1 , //Suspend/Resume scheduler (obsolate)
D3DKMT_VIDSCHESCAPETYPE_TDRCONTROL = 2 , //Tdr control
D3DKMT_VIDSCHESCAPETYPE_SUSPENDRESUME = 3 , //Suspend/Resume scheduler
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
D3DKMT_VIDSCHESCAPETYPE_ENABLECONTEXTDELAY = 4 , //Enable/Disable context delay
# endif
D3DKMT_VIDSCHESCAPETYPE_CONFIGURE_TDR_LIMIT = 5 , // Configure TdrLimitCount and TdrLimitTime
D3DKMT_VIDSCHESCAPETYPE_VGPU_RESET = 6 , // Trigger VGPU reset
D3DKMT_VIDSCHESCAPETYPE_PFN_CONTROL = 7 , // Periodic frame notification control
D3DKMT_VIDSCHESCAPETYPE_VIRTUAL_REFRESH_RATE = 8 ,
} D3DKMT_VIDSCHESCAPETYPE ;
typedef enum _D3DKMT_DMMESCAPETYPE
{
D3DKMT_DMMESCAPETYPE_UNINITIALIZED = 0 ,
D3DKMT_DMMESCAPETYPE_GET_SUMMARY_INFO = 1 ,
D3DKMT_DMMESCAPETYPE_GET_VIDEO_PRESENT_SOURCES_INFO = 2 ,
D3DKMT_DMMESCAPETYPE_GET_VIDEO_PRESENT_TARGETS_INFO = 3 ,
D3DKMT_DMMESCAPETYPE_GET_ACTIVEVIDPN_INFO = 4 ,
D3DKMT_DMMESCAPETYPE_GET_MONITORS_INFO = 5 ,
D3DKMT_DMMESCAPETYPE_RECENTLY_COMMITTED_VIDPNS_INFO = 6 ,
D3DKMT_DMMESCAPETYPE_RECENT_MODECHANGE_REQUESTS_INFO = 7 ,
D3DKMT_DMMESCAPETYPE_RECENTLY_RECOMMENDED_VIDPNS_INFO = 8 ,
D3DKMT_DMMESCAPETYPE_RECENT_MONITOR_PRESENCE_EVENTS_INFO = 9 ,
D3DKMT_DMMESCAPETYPE_ACTIVEVIDPN_SOURCEMODESET_INFO = 10 ,
D3DKMT_DMMESCAPETYPE_ACTIVEVIDPN_COFUNCPATHMODALITY_INFO = 11 ,
D3DKMT_DMMESCAPETYPE_GET_LASTCLIENTCOMMITTEDVIDPN_INFO = 12 ,
D3DKMT_DMMESCAPETYPE_GET_VERSION_INFO = 13 ,
D3DKMT_DMMESCAPETYPE_VIDPN_MGR_DIAGNOSTICS = 14
} D3DKMT_DMMESCAPETYPE ;
typedef struct _D3DKMT_HISTORY_BUFFER_STATUS
{
BOOLEAN Enabled ;
UINT Reserved ;
} D3DKMT_HISTORY_BUFFER_STATUS ;
typedef enum _D3DKMT_VAD_ESCAPE_COMMAND
{
D3DKMT_VAD_ESCAPE_GETNUMVADS ,
D3DKMT_VAD_ESCAPE_GETVAD ,
D3DKMT_VAD_ESCAPE_GETVADRANGE ,
D3DKMT_VAD_ESCAPE_GET_PTE ,
D3DKMT_VAD_ESCAPE_GET_GPUMMU_CAPS ,
D3DKMT_VAD_ESCAPE_GET_SEGMENT_CAPS ,
} D3DKMT_VAD_ESCAPE_COMMAND ;
typedef struct _D3DKMT_VAD_DESC
{
UINT VadIndex ; // in: 0xFFFFFFFF to use the VAD address
D3DKMT_ALIGN64 UINT64 VadAddress ; // in
UINT NumMappedRanges ; // out
UINT VadType ; // out: 0 - reserved, 1 - Mapped
D3DKMT_ALIGN64 UINT64 StartAddress ; // out
D3DKMT_ALIGN64 UINT64 EndAddress ; // out
} D3DKMT_VAD_DESC ;
typedef struct _D3DKMT_VA_RANGE_DESC
{
D3DKMT_ALIGN64 UINT64 VadAddress ; // in
UINT VaRangeIndex ; // in
UINT PhysicalAdapterIndex ; // in
D3DKMT_ALIGN64 UINT64 StartAddress ; // out
D3DKMT_ALIGN64 UINT64 EndAddress ; // out
D3DKMT_ALIGN64 UINT64 DriverProtection ; // out
UINT OwnerType ; // out: VIDMM_VAD_OWNER_TYPE
D3DKMT_ALIGN64 UINT64 pOwner ; // out
D3DKMT_ALIGN64 UINT64 OwnerOffset ; // out
UINT Protection ; // out: D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE
} D3DKMT_VA_RANGE_DESC ;
typedef struct _D3DKMT_EVICTION_CRITERIA
{
D3DKMT_ALIGN64 UINT64 MinimumSize ;
D3DKMT_ALIGN64 UINT64 MaximumSize ;
struct
{
union
{
struct
{
UINT Primary : 1 ; // 0x00000001
UINT Reserved : 31 ; // 0xFFFFFFFE
} Flags ;
UINT Value ;
} ;
} ;
} D3DKMT_EVICTION_CRITERIA ;
typedef enum _D3DKMT_DEFRAG_ESCAPE_OPERATION
{
D3DKMT_DEFRAG_ESCAPE_GET_FRAGMENTATION_STATS = 0 ,
D3DKMT_DEFRAG_ESCAPE_DEFRAG_UPWARD = 1 ,
D3DKMT_DEFRAG_ESCAPE_DEFRAG_DOWNWARD = 2 ,
D3DKMT_DEFRAG_ESCAPE_DEFRAG_PASS = 3 ,
D3DKMT_DEFRAG_ESCAPE_VERIFY_TRANSFER = 4 ,
} D3DKMT_DEFRAG_ESCAPE_OPERATION ;
typedef struct _D3DKMT_PAGE_TABLE_LEVEL_DESC
{
UINT IndexBitCount ;
D3DKMT_ALIGN64 UINT64 IndexMask ;
D3DKMT_ALIGN64 UINT64 IndexShift ;
D3DKMT_ALIGN64 UINT64 LowerLevelsMask ;
D3DKMT_ALIGN64 UINT64 EntryCoverageInPages ;
} D3DKMT_PAGE_TABLE_LEVEL_DESC ;
typedef struct _DXGK_ESCAPE_GPUMMUCAPS
{
BOOLEAN ReadOnlyMemorySupported ;
BOOLEAN NoExecuteMemorySupported ;
BOOLEAN ZeroInPteSupported ;
BOOLEAN CacheCoherentMemorySupported ;
BOOLEAN LargePageSupported ;
BOOLEAN DualPteSupported ;
BOOLEAN AllowNonAlignedLargePageAddress ;
UINT VirtualAddressBitCount ;
UINT PageTableLevelCount ;
D3DKMT_PAGE_TABLE_LEVEL_DESC PageTableLevelDesk [ DXGK_MAX_PAGE_TABLE_LEVEL_COUNT ] ;
} DXGK_ESCAPE_GPUMMUCAPS ;
typedef struct _D3DKMT_GET_GPUMMU_CAPS
{
UINT PhysicalAdapterIndex ; // In
DXGK_ESCAPE_GPUMMUCAPS GpuMmuCaps ; // Out
} D3DKMT_GET_GPUMMU_CAPS ;
# define D3DKMT_GET_PTE_MAX 64
typedef struct _D3DKMT_GET_PTE
{
UINT PhysicalAdapterIndex ; // In
UINT PageTableLevel ; // In
UINT PageTableIndex [ DXGK_MAX_PAGE_TABLE_LEVEL_COUNT ] ; // In
BOOLEAN b64KBPte ; // In - Valid only when dual PTEs are supported. Out - PT is 64KB.
UINT NumPtes ; // In - Number of PTEs to fill. Out - number of filled PTEs
DXGK_PTE Pte [ D3DKMT_GET_PTE_MAX ] ; // Out
UINT NumValidEntries ; // Out
} D3DKMT_GET_PTE ;
# define D3DKMT_MAX_SEGMENT_COUNT 32
typedef enum _D3DKMT_MEMORY_SEGMENT_GROUP
{
D3DKMT_MEMORY_SEGMENT_GROUP_LOCAL = 0 ,
D3DKMT_MEMORY_SEGMENT_GROUP_NON_LOCAL = 1
} D3DKMT_MEMORY_SEGMENT_GROUP ;
typedef struct _D3DKMT_SEGMENT_CAPS
{
D3DKMT_ALIGN64 UINT64 Size ;
UINT PageSize ;
ULONG SegmentId ;
BOOLEAN bAperture ;
BOOLEAN bReservedSysMem ;
D3DKMT_MEMORY_SEGMENT_GROUP BudgetGroup ;
} D3DKMT_SEGMENT_CAPS ;
typedef struct _D3DKMT_GET_SEGMENT_CAPS
{
UINT PhysicalAdapterIndex ; // In
UINT NumSegments ; // Out
D3DKMT_SEGMENT_CAPS SegmentCaps [ D3DKMT_MAX_SEGMENT_COUNT ] ; // Out
} D3DKMT_GET_SEGMENT_CAPS ;
typedef enum _D3DKMT_ESCAPE_PFN_CONTROL_COMMAND
{
D3DKMT_ESCAPE_PFN_CONTROL_DEFAULT ,
D3DKMT_ESCAPE_PFN_CONTROL_FORCE_CPU ,
D3DKMT_ESCAPE_PFN_CONTROL_FORCE_GPU
} D3DKMT_ESCAPE_PFN_CONTROL_COMMAND ;
// params for D3DKMT_VIDSCHESCAPETYPE_VIRTUAL_REFRESH_RATE
typedef enum _D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE
{
D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE_SET_BASE_DESKTOP_DURATION = 0 ,
D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE_SET_VSYNC_MULTIPLIER = 1 ,
D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE_SET_PROCESS_BOOST_ELIGIBLE = 2 ,
} D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE ;
typedef struct _D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE
{
D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE_TYPE Type ;
UINT VidPnSourceId ;
BOOLEAN ProcessBoostEligible ;
UINT VSyncMultiplier ;
UINT BaseDesktopDuration ;
UCHAR Reserved [ 16 ] ;
} D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE ;
typedef struct _D3DKMT_VIDMM_ESCAPE
{
D3DKMT_VIDMMESCAPETYPE Type ;
union
{
struct
{
union
{
struct
{
ULONG ProbeAndLock : 1 ;
ULONG SplitPoint : 1 ;
ULONG NoDemotion : 1 ;
ULONG SwizzlingAperture : 1 ;
ULONG PagingPathLockSubRange : 1 ;
ULONG PagingPathLockMinRange : 1 ;
ULONG ComplexLock : 1 ;
ULONG FailVARotation : 1 ;
ULONG NoWriteCombined : 1 ;
ULONG NoPrePatching : 1 ;
ULONG AlwaysRepatch : 1 ;
ULONG ExpectPreparationFailure : 1 ;
ULONG FailUserModeVAMapping : 1 ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
ULONG NeverDiscardOfferedAllocation : 1 ;
ULONG AlwaysDiscardOfferedAllocation : 1 ;
ULONG Reserved : 17 ;
# else
ULONG Reserved : 19 ;
# endif
} ;
ULONG Value ;
} ;
} SetFault ;
struct
{
D3DKMT_HANDLE ResourceHandle ;
D3DKMT_HANDLE AllocationHandle ;
D3DKMT_PTR ( HANDLE , hProcess ) ; // 0 to evict memory for the current process, otherwise it is a process handle from OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId).
} Evict ;
struct
{
D3DKMT_ALIGN64 UINT64 NtHandle ; // Used by D3DKMT_VIDMMESCAPETYPE_EVICT_BY_NT_HANDLE
} EvictByNtHandle ;
struct
{
union
{
struct
{
UINT NumVads ;
} GetNumVads ;
D3DKMT_VAD_DESC GetVad ;
D3DKMT_VA_RANGE_DESC GetVadRange ;
D3DKMT_GET_GPUMMU_CAPS GetGpuMmuCaps ;
D3DKMT_GET_PTE GetPte ;
D3DKMT_GET_SEGMENT_CAPS GetSegmentCaps ;
} ;
D3DKMT_VAD_ESCAPE_COMMAND Command ; // in
NTSTATUS Status ; // out
} GetVads ;
struct
{
D3DKMT_ALIGN64 ULONGLONG LocalMemoryBudget ;
D3DKMT_ALIGN64 ULONGLONG SystemMemoryBudget ;
} SetBudget ;
struct
{
D3DKMT_PTR ( HANDLE , hProcess ) ;
BOOL bAllowWakeOnSubmission ;
} SuspendProcess ;
struct
{
D3DKMT_PTR ( HANDLE , hProcess ) ;
} ResumeProcess ;
struct
{
D3DKMT_ALIGN64 UINT64 NumBytesToTrim ;
} GetBudget ;
struct
{
ULONG MinTrimInterval ; // In 100ns units
ULONG MaxTrimInterval ; // In 100ns units
ULONG IdleTrimInterval ; // In 100ns units
} SetTrimIntervals ;
D3DKMT_EVICTION_CRITERIA EvictByCriteria ;
struct
{
BOOL bFlush ;
} Wake ;
struct
{
D3DKMT_DEFRAG_ESCAPE_OPERATION Operation ;
UINT SegmentId ;
D3DKMT_ALIGN64 ULONGLONG TotalCommitted ;
D3DKMT_ALIGN64 ULONGLONG TotalFree ;
D3DKMT_ALIGN64 ULONGLONG LargestGapBefore ;
D3DKMT_ALIGN64 ULONGLONG LargestGapAfter ;
} Defrag ;
struct
{
D3DKMT_HANDLE hPagingQueue ;
UINT PhysicalAdapterIndex ;
ULONG Milliseconds ;
D3DKMT_ALIGN64 ULONGLONG PagingFenceValue ;
} DelayExecution ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
struct
{
UINT SegmentId ;
} VerifyIntegrity ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
struct
{
D3DKMT_ALIGN64 LONGLONG TimerValue ;
} DelayedEvictionConfig ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_9
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_7
} ;
} D3DKMT_VIDMM_ESCAPE ;
typedef struct _D3DKMT_VIDSCH_ESCAPE
{
D3DKMT_VIDSCHESCAPETYPE Type ;
union
{
BOOL PreemptionControl ; // enable/disable preemption
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
BOOL EnableContextDelay ; // enable/disable context delay
struct
{
ULONG TdrControl ; // control tdr
union
{
ULONG NodeOrdinal ; // valid if TdrControl is set to D3DKMT_TDRDBGCTRLTYPE_ENGINETDR
} ;
} TdrControl2 ;
# endif
BOOL SuspendScheduler ; // suspend/resume scheduler (obsolate)
ULONG TdrControl ; // control tdr
ULONG SuspendTime ; // time period to suspend.
struct
{
UINT Count ;
UINT Time ; // In seconds
} TdrLimit ;
D3DKMT_ESCAPE_PFN_CONTROL_COMMAND PfnControl ; // periodic frame notification control
} ;
D3DKMT_ESCAPE_VIRTUAL_REFRESH_RATE VirtualRefreshRateControl ;
} D3DKMT_VIDSCH_ESCAPE ;
typedef struct _D3DKMT_TDRDBGCTRL_ESCAPE
{
D3DKMT_TDRDBGCTRLTYPE TdrControl ; // control tdr
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
union
{
ULONG NodeOrdinal ; // valid if TdrControl is set to D3DKMT_TDRDBGCTRLTYPE_ENGINETDR
} ;
# endif
} D3DKMT_TDRDBGCTRL_ESCAPE ;
// Upper boundary on the DMM escape data size (in bytes).
enum
{
D3DKMT_MAX_DMM_ESCAPE_DATASIZE = 100 * 1024
} ;
// NOTE: If (ProvidedBufferSize >= MinRequiredBufferSize), then MinRequiredBufferSize = size of the actual complete data set in the Data[] array.
typedef struct _D3DKMT_DMM_ESCAPE
{
_In_ D3DKMT_DMMESCAPETYPE Type ;
_In_ D3DKMT_ALIGN64 D3DKMT_SIZE_T ProvidedBufferSize ; // actual size of Data[] array, in bytes.
_Out_ D3DKMT_ALIGN64 D3DKMT_SIZE_T MinRequiredBufferSize ; // minimum required size of Data[] array to contain requested data.
_Out_writes_bytes_ ( ProvidedBufferSize ) UCHAR Data [ 1 ] ;
} D3DKMT_DMM_ESCAPE ;
typedef enum _D3DKMT_BRIGHTNESS_INFO_TYPE
{
D3DKMT_BRIGHTNESS_INFO_GET_POSSIBLE_LEVELS = 1 ,
D3DKMT_BRIGHTNESS_INFO_GET = 2 ,
D3DKMT_BRIGHTNESS_INFO_SET = 3 ,
D3DKMT_BRIGHTNESS_INFO_GET_CAPS = 4 ,
D3DKMT_BRIGHTNESS_INFO_SET_STATE = 5 ,
D3DKMT_BRIGHTNESS_INFO_SET_OPTIMIZATION = 6 ,
D3DKMT_BRIGHTNESS_INFO_GET_REDUCTION = 7 ,
D3DKMT_BRIGHTNESS_INFO_BEGIN_MANUAL_MODE = 8 ,
D3DKMT_BRIGHTNESS_INFO_END_MANUAL_MODE = 9 ,
D3DKMT_BRIGHTNESS_INFO_TOGGLE_LOGGING = 10 ,
D3DKMT_BRIGHTNESS_INFO_GET_NIT_RANGES = 11 ,
} D3DKMT_BRIGHTNESS_INFO_TYPE ;
typedef struct _D3DKMT_BRIGHTNESS_POSSIBLE_LEVELS
{
UCHAR LevelCount ;
UCHAR BrightnessLevels [ 256 ] ;
} D3DKMT_BRIGHTNESS_POSSIBLE_LEVELS ;
typedef struct _D3DKMT_BRIGHTNESS_INFO
{
D3DKMT_BRIGHTNESS_INFO_TYPE Type ;
ULONG ChildUid ;
union
{
D3DKMT_BRIGHTNESS_POSSIBLE_LEVELS PossibleLevels ;
UCHAR Brightness ;
DXGK_BRIGHTNESS_CAPS BrightnessCaps ;
DXGK_BRIGHTNESS_STATE BrightnessState ;
DXGK_BACKLIGHT_OPTIMIZATION_LEVEL OptimizationLevel ;
DXGK_BACKLIGHT_INFO ReductionInfo ;
BOOLEAN VerboseLogging ;
DXGK_BRIGHTNESS_GET_NIT_RANGES_OUT NitRanges ;
DXGK_BRIGHTNESS_GET_OUT GetBrightnessMillinits ;
DXGK_BRIGHTNESS_SET_IN SetBrightnessMillinits ;
} ;
} D3DKMT_BRIGHTNESS_INFO ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef struct _D3DKMT_BDDFALLBACK_CTL
{
BOOLEAN ForceBddHeadlessNextFallback ;
} D3DKMT_BDDFALLBACK_CTL ;
typedef struct _D3DKMT_REQUEST_MACHINE_CRASH_ESCAPE
{
D3DKMT_ALIGN64 D3DKMT_ULONG_PTR Param1 ;
D3DKMT_ALIGN64 D3DKMT_ULONG_PTR Param2 ;
D3DKMT_ALIGN64 D3DKMT_ULONG_PTR Param3 ;
} D3DKMT_REQUEST_MACHINE_CRASH_ESCAPE ;
//
// VERIFIER OPTIONS
//
typedef enum _D3DKMT_VERIFIER_OPTION_MODE
{
D3DKMT_VERIFIER_OPTION_QUERY ,
D3DKMT_VERIFIER_OPTION_SET
} D3DKMT_VERIFIER_OPTION_MODE ;
typedef enum _D3DKMT_PROCESS_VERIFIER_OPTION_TYPE
{
//
// Dxgkrnl (0xxx)
//
//
// VidMm (1xxx)
//
D3DKMT_PROCESS_VERIFIER_OPTION_VIDMM_FLAGS = 1000 ,
D3DKMT_PROCESS_VERIFIER_OPTION_VIDMM_RESTRICT_BUDGET = 1001 ,
//
// VidSch (2xxx)
//
} D3DKMT_PROCESS_VERIFIER_OPTION_TYPE ;
typedef union _D3DKMT_PROCESS_VERIFIER_VIDMM_FLAGS
{
struct
{
UINT ForceSynchronousEvict : 1 ;
UINT NeverDeferEvictions : 1 ;
UINT AlwaysFailCommitOnReclaim : 1 ;
UINT AlwaysPlaceInDemotedLocation : 1 ;
UINT Reserved : 28 ;
} ;
UINT32 Value ;
} D3DKMT_PROCESS_VERIFIER_VIDMM_FLAGS ;
typedef struct _D3DKMT_PROCESS_VERIFIER_VIDMM_RESTRICT_BUDGET
{
D3DKMT_ALIGN64 UINT64 LocalBudget ;
D3DKMT_ALIGN64 UINT64 NonLocalBudget ;
} D3DKMT_PROCESS_VERIFIER_VIDMM_RESTRICT_BUDGET ;
typedef union _D3DKMT_PROCESS_VERIFIER_OPTION_DATA
{
D3DKMT_PROCESS_VERIFIER_VIDMM_FLAGS VidMmFlags ;
D3DKMT_PROCESS_VERIFIER_VIDMM_RESTRICT_BUDGET VidMmRestrictBudget ;
} D3DKMT_PROCESS_VERIFIER_OPTION_DATA ;
typedef struct _D3DKMT_PROCESS_VERIFIER_OPTION
{
D3DKMT_PTR ( HANDLE , hProcess ) ;
D3DKMT_PROCESS_VERIFIER_OPTION_TYPE Type ;
D3DKMT_VERIFIER_OPTION_MODE Mode ;
D3DKMT_PROCESS_VERIFIER_OPTION_DATA Data ;
} D3DKMT_PROCESS_VERIFIER_OPTION ;
typedef enum _D3DKMT_ADAPTER_VERIFIER_OPTION_TYPE
{
//
// Dxgkrnl (0xxx)
//
//
// VidMm (1xxx)
//
D3DKMT_ADAPTER_VERIFIER_OPTION_VIDMM_FLAGS = 1000 ,
D3DKMT_ADAPTER_VERIFIER_OPTION_VIDMM_TRIM_INTERVAL = 1001 ,
//
// VidSch (2xxx)
//
} D3DKMT_ADAPTER_VERIFIER_OPTION_TYPE ;
typedef union _D3DKMT_ADAPTER_VERIFIER_VIDMM_FLAGS
{
struct
{
UINT AlwaysRepatch : 1 ;
UINT FailSharedPrimary : 1 ;
UINT FailProbeAndLock : 1 ;
UINT AlwaysDiscardOffer : 1 ;
UINT NeverDiscardOffer : 1 ;
UINT ForceComplexLock : 1 ;
UINT NeverPrepatch : 1 ;
UINT ExpectPreparationFailure : 1 ;
UINT TakeSplitPoint : 1 ;
UINT FailAcquireSwizzlingRange : 1 ;
UINT PagingPathLockSubrange : 1 ;
UINT PagingPathLockMinrange : 1 ;
UINT FailVaRotation : 1 ;
UINT NoDemotion : 1 ;
UINT FailDefragPass : 1 ;
UINT AlwaysProcessOfferList : 1 ;
UINT AlwaysDecommitOffer : 1 ;
UINT NeverMoveDefrag : 1 ;
UINT AlwaysRelocateDisplayableResources : 1 ;
UINT AlwaysFailGrowVPRMoves : 1 ;
UINT Reserved : 12 ;
} ;
UINT32 Value ;
} D3DKMT_ADAPTER_VERIFIER_VIDMM_FLAGS ;
typedef struct _D3DKMT_ADAPTER_VERIFIER_VIDMM_TRIM_INTERVAL
{
D3DKMT_ALIGN64 UINT64 MinimumTrimInterval ;
D3DKMT_ALIGN64 UINT64 MaximumTrimInterval ;
D3DKMT_ALIGN64 UINT64 IdleTrimInterval ;
} D3DKMT_ADAPTER_VERIFIER_VIDMM_TRIM_INTERVAL ;
typedef union _D3DKMT_ADAPTER_VERIFIER_OPTION_DATA
{
D3DKMT_ADAPTER_VERIFIER_VIDMM_FLAGS VidMmFlags ;
D3DKMT_ADAPTER_VERIFIER_VIDMM_TRIM_INTERVAL VidMmTrimInterval ;
} D3DKMT_ADAPTER_VERIFIER_OPTION_DATA ;
typedef struct _D3DKMT_ADAPTER_VERIFIER_OPTION
{
D3DKMT_ADAPTER_VERIFIER_OPTION_TYPE Type ;
D3DKMT_VERIFIER_OPTION_MODE Mode ;
D3DKMT_ADAPTER_VERIFIER_OPTION_DATA Data ;
} D3DKMT_ADAPTER_VERIFIER_OPTION ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_0
typedef enum _D3DKMT_DEVICEESCAPE_TYPE
{
D3DKMT_DEVICEESCAPE_VIDPNFROMALLOCATION = 0 ,
D3DKMT_DEVICEESCAPE_RESTOREGAMMA = 1 ,
} D3DKMT_DEVICEESCAPE_TYPE ;
typedef struct _D3DKMT_DEVICE_ESCAPE
{
D3DKMT_DEVICEESCAPE_TYPE Type ;
union
{
struct
{
D3DKMT_HANDLE hPrimaryAllocation ; // in: Primary allocation handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // out: VidPnSoureId of primary allocation
} VidPnFromAllocation ;
} ;
} D3DKMT_DEVICE_ESCAPE ;
typedef struct _D3DKMT_DEBUG_SNAPSHOT_ESCAPE
{
ULONG Length ; // out: Actual length of the snapshot written in Buffer
BYTE Buffer [ 1 ] ; // out: Buffer to place snapshot
} D3DKMT_DEBUG_SNAPSHOT_ESCAPE ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
# ifndef DXGK_DIAG_PROCESS_NAME_LENGTH
# define DXGK_DIAG_PROCESS_NAME_LENGTH 16
# endif
typedef enum _OUTPUTDUPL_CONTEXT_DEBUG_STATUS
{
OUTPUTDUPL_CONTEXT_DEBUG_STATUS_INACTIVE = 0 ,
OUTPUTDUPL_CONTEXT_DEBUG_STATUS_ACTIVE = 1 ,
OUTPUTDUPL_CONTEXT_DEBUG_STATUS_PENDING_DESTROY = 2 ,
OUTPUTDUPL_CONTEXT_DEBUG_STATUS_FORCE_UINT32 = 0xffffffff
} OUTPUTDUPL_CONTEXT_DEBUG_STATUS ;
typedef struct _OUTPUTDUPL_CONTEXT_DEBUG_INFO
{
OUTPUTDUPL_CONTEXT_DEBUG_STATUS Status ;
D3DKMT_PTR ( HANDLE , ProcessID ) ;
UINT32 AccumulatedPresents ;
D3DKMT_ALIGN64 LARGE_INTEGER LastPresentTime ;
D3DKMT_ALIGN64 LARGE_INTEGER LastMouseTime ;
CHAR ProcessName [ DXGK_DIAG_PROCESS_NAME_LENGTH ] ;
} OUTPUTDUPL_CONTEXT_DEBUG_INFO ;
# define GET_OUTPUT_DUPL_DEBUG_INFO_FROM_SNAPSHOT(pSnapshot, VidPnSource, OutputDuplContextIndex) \
( pSnapshot - > OutputDuplDebugInfos [ ( VidPnSource * pSnapshot - > NumOutputDuplContexts ) + OutputDuplContextIndex ] )
typedef struct _D3DKMT_OUTPUTDUPL_SNAPSHOT
{
UINT Size ; // _In_/out: Size of entire structure
UINT SessionProcessCount ; // _Out_: Number of processes currently duplicating output in this session (max possible will be equal to NumOutputDuplContexts)
UINT SessionActiveConnectionsCount ; // _Out_: Total number of active contexts in this session, may be more than number active in 2D array because that is per adapter
UINT NumVidPnSources ; // _Out_: Max of first array index
UINT NumOutputDuplContexts ; // _Out_: Max of second array index
UINT Padding ;
// This field is in reality a two dimensional array, use GET_OUTPUT_DUPL_DEBUG_INFO_FROM_SNAPSHOT macro to get a specific one
_Field_size_bytes_ ( Size - sizeof ( _D3DKMT_OUTPUTDUPL_SNAPSHOT ) ) OUTPUTDUPL_CONTEXT_DEBUG_INFO OutputDuplDebugInfos [ 0 ] ;
} D3DKMT_OUTPUTDUPL_SNAPSHOT ;
# endif
typedef enum _D3DKMT_ACTIVATE_SPECIFIC_DIAG_TYPE
{
D3DKMT_ACTIVATE_SPECIFIC_DIAG_TYPE_EXTRA_CCD_DATABASE_INFO = 0 ,
D3DKMT_ACTIVATE_SPECIFIC_DIAG_TYPE_MODES_PRUNED = 15 ,
} D3DKMT_ACTIVATE_SPECIFIC_DIAG_TYPE ;
typedef struct _D3DKMT_ACTIVATE_SPECIFIC_DIAG_ESCAPE
{
D3DKMT_ACTIVATE_SPECIFIC_DIAG_TYPE Type ; // The escape type that needs to be (de)activated
BOOL Activate ; // FALSE means deactivate
} D3DKMT_ACTIVATE_SPECIFIC_DIAG_ESCAPE ;
typedef struct _D3DKMT_ESCAPE
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DKMT_HANDLE hDevice ; // in: device handle [Optional]
D3DKMT_ESCAPETYPE Type ; // in: escape type.
D3DDDI_ESCAPEFLAGS Flags ; // in: flags
D3DKMT_PTR ( VOID * , pPrivateDriverData ) ; // in/out: escape data
UINT PrivateDriverDataSize ; // in: size of escape data
D3DKMT_HANDLE hContext ; // in: context handle [Optional]
} D3DKMT_ESCAPE ;
//
// begin D3DKMT_QUERYSTATISTICS
//
typedef enum _D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT
{
D3DKMT_PreemptionAttempt = 0 ,
D3DKMT_PreemptionAttemptSuccess = 1 ,
D3DKMT_PreemptionAttemptMissNoCommand = 2 ,
D3DKMT_PreemptionAttemptMissNotEnabled = 3 ,
D3DKMT_PreemptionAttemptMissNextFence = 4 ,
D3DKMT_PreemptionAttemptMissPagingCommand = 5 ,
D3DKMT_PreemptionAttemptMissSplittedCommand = 6 ,
D3DKMT_PreemptionAttemptMissFenceCommand = 7 ,
D3DKMT_PreemptionAttemptMissRenderPendingFlip = 8 ,
D3DKMT_PreemptionAttemptMissNotMakingProgress = 9 ,
D3DKMT_PreemptionAttemptMissLessPriority = 10 ,
D3DKMT_PreemptionAttemptMissRemainingQuantum = 11 ,
D3DKMT_PreemptionAttemptMissRemainingPreemptionQuantum = 12 ,
D3DKMT_PreemptionAttemptMissAlreadyPreempting = 13 ,
D3DKMT_PreemptionAttemptMissGlobalBlock = 14 ,
D3DKMT_PreemptionAttemptMissAlreadyRunning = 15 ,
D3DKMT_PreemptionAttemptStatisticsMax = 16 ,
} D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT ;
//
// WOW will not allow enum member as array length, so define it as a constant
//
# define D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT_MAX 16
C_ASSERT ( D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT_MAX = = D3DKMT_PreemptionAttemptStatisticsMax ) ;
//
// Command packet type
//
typedef enum _D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE {
D3DKMT_ClientRenderBuffer = 0 , // (Dma packet) should be 0 base.
D3DKMT_ClientPagingBuffer = 1 , // (Dma packet)
D3DKMT_SystemPagingBuffer = 2 , // (Dma packet)
D3DKMT_SystemPreemptionBuffer = 3 , // (Dma packet)
D3DKMT_DmaPacketTypeMax = 4
} D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE ;
//
// WOW will not allow enum member as array length, so define it as a constant
//
# define D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_MAX 4
C_ASSERT ( D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_MAX = = D3DKMT_DmaPacketTypeMax ) ;
typedef enum _D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE {
D3DKMT_RenderCommandBuffer = 0 , // (Queue Packet) should be 0 base.
D3DKMT_DeferredCommandBuffer = 1 , // (Queue Packet)
D3DKMT_SystemCommandBuffer = 2 , // (Queue Packet)
D3DKMT_MmIoFlipCommandBuffer = 3 , // (Queue Packet)
D3DKMT_WaitCommandBuffer = 4 , // (Queue Packet)
D3DKMT_SignalCommandBuffer = 5 , // (Queue Packet)
D3DKMT_DeviceCommandBuffer = 6 , // (Queue Packet)
D3DKMT_SoftwareCommandBuffer = 7 , // (Queue Packet)
D3DKMT_QueuePacketTypeMax = 8
} D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE ;
//
// WOW will not allow enum member as array length, so define it as a constant
//
# define D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_MAX 8
C_ASSERT ( D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_MAX = = D3DKMT_QueuePacketTypeMax ) ;
typedef enum _D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS
{
D3DKMT_AllocationPriorityClassMinimum = 0 ,
D3DKMT_AllocationPriorityClassLow = 1 ,
D3DKMT_AllocationPriorityClassNormal = 2 ,
D3DKMT_AllocationPriorityClassHigh = 3 ,
D3DKMT_AllocationPriorityClassMaximum = 4 ,
D3DKMT_MaxAllocationPriorityClass = 5
} D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS ;
//
// WOW will not allow enum member as array length, so define it as a constant
//
# define D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX 5
C_ASSERT ( D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX = = D3DKMT_MaxAllocationPriorityClass ) ;
//
// Allocation segment preference set can contain 5 preferences
//
# define D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX 5
typedef struct _D3DKMT_QUERYSTATISTICS_COUNTER
{
ULONG Count ;
ULONGLONG Bytes ;
} D3DKMT_QUERYSTATISTICS_COUNTER ;
typedef struct _D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_INFORMATION {
ULONG PacketSubmited ;
ULONG PacketCompleted ;
ULONG PacketPreempted ;
ULONG PacketFaulted ;
} D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_INFORMATION ;
typedef struct _D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_INFORMATION {
ULONG PacketSubmited ;
ULONG PacketCompleted ;
} D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_INFORMATION ;
typedef struct _D3DKMT_QUERYSTATISTICS_PACKET_INFORMATION {
D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_INFORMATION QueuePacket [ D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_MAX ] ; //Size = D3DKMT_QueuePacketTypeMax
D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_INFORMATION DmaPacket [ D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_MAX ] ; //Size = D3DKMT_DmaPacketTypeMax
} D3DKMT_QUERYSTATISTICS_PACKET_INFORMATION ;
typedef struct _D3DKMT_QUERYSTATISTICS_PREEMPTION_INFORMATION {
ULONG PreemptionCounter [ D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT_MAX ] ;
} D3DKMT_QUERYSTATISTICS_PREEMPTION_INFORMATION ;
typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION {
D3DKMT_ALIGN64 LARGE_INTEGER RunningTime ; // Running time in micro-second.
ULONG ContextSwitch ;
D3DKMT_QUERYSTATISTICS_PREEMPTION_INFORMATION PreemptionStatistics ;
D3DKMT_QUERYSTATISTICS_PACKET_INFORMATION PacketStatistics ;
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
} D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION ;
typedef struct _D3DKMT_QUERYSTATISTICS_NODE_INFORMATION {
D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION GlobalInformation ; //Global statistics
D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION SystemInformation ; //Statistics for system thread
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
D3DKMT_NODE_PERFDATA NodePerfData ;
UINT32 Reserved [ 3 ] ;
# else
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
# endif
} D3DKMT_QUERYSTATISTICS_NODE_INFORMATION ;
typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION {
ULONG Frame ; // both by Blt and Flip.
ULONG CancelledFrame ; // by restart (flip only).
ULONG QueuedPresent ; // queued present.
UINT Padding ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
D3DKMT_ALIGN64 UINT64 IsVSyncEnabled ;
D3DKMT_ALIGN64 UINT64 VSyncOnTotalTimeMs ;
D3DKMT_ALIGN64 UINT64 VSyncOffKeepPhaseTotalTimeMs ;
D3DKMT_ALIGN64 UINT64 VSyncOffNoPhaseTotalTimeMs ;
D3DKMT_ALIGN64 UINT64 Reserved [ 4 ] ;
# else
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
# endif
} D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION ;
typedef struct _D3DKMT_QUERYSTATISTICS_VIDPNSOURCE_INFORMATION {
D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION GlobalInformation ; //Global statistics
D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION SystemInformation ; //Statistics for system thread
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
} D3DKMT_QUERYSTATISTICS_VIDPNSOURCE_INFORMATION ;
typedef struct _D3DKMT_QUERYSTATSTICS_REFERENCE_DMA_BUFFER
{
ULONG NbCall ;
ULONG NbAllocationsReferenced ;
ULONG MaxNbAllocationsReferenced ;
ULONG NbNULLReference ;
ULONG NbWriteReference ;
ULONG NbRenamedAllocationsReferenced ;
ULONG NbIterationSearchingRenamedAllocation ;
ULONG NbLockedAllocationReferenced ;
ULONG NbAllocationWithValidPrepatchingInfoReferenced ;
ULONG NbAllocationWithInvalidPrepatchingInfoReferenced ;
ULONG NbDMABufferSuccessfullyPrePatched ;
ULONG NbPrimariesReferencesOverflow ;
ULONG NbAllocationWithNonPreferredResources ;
ULONG NbAllocationInsertedInMigrationTable ;
} D3DKMT_QUERYSTATSTICS_REFERENCE_DMA_BUFFER ;
typedef struct _D3DKMT_QUERYSTATSTICS_RENAMING
{
ULONG NbAllocationsRenamed ;
ULONG NbAllocationsShrinked ;
ULONG NbRenamedBuffer ;
ULONG MaxRenamingListLength ;
ULONG NbFailuresDueToRenamingLimit ;
ULONG NbFailuresDueToCreateAllocation ;
ULONG NbFailuresDueToOpenAllocation ;
ULONG NbFailuresDueToLowResource ;
ULONG NbFailuresDueToNonRetiredLimit ;
} D3DKMT_QUERYSTATSTICS_RENAMING ;
typedef struct _D3DKMT_QUERYSTATSTICS_PREPRATION
{
ULONG BroadcastStall ;
ULONG NbDMAPrepared ;
ULONG NbDMAPreparedLongPath ;
ULONG ImmediateHighestPreparationPass ;
D3DKMT_QUERYSTATISTICS_COUNTER AllocationsTrimmed ;
} D3DKMT_QUERYSTATSTICS_PREPRATION ;
typedef struct _D3DKMT_QUERYSTATSTICS_PAGING_FAULT
{
D3DKMT_QUERYSTATISTICS_COUNTER Faults ;
D3DKMT_QUERYSTATISTICS_COUNTER FaultsFirstTimeAccess ;
D3DKMT_QUERYSTATISTICS_COUNTER FaultsReclaimed ;
D3DKMT_QUERYSTATISTICS_COUNTER FaultsMigration ;
D3DKMT_QUERYSTATISTICS_COUNTER FaultsIncorrectResource ;
D3DKMT_QUERYSTATISTICS_COUNTER FaultsLostContent ;
D3DKMT_QUERYSTATISTICS_COUNTER FaultsEvicted ;
D3DKMT_QUERYSTATISTICS_COUNTER AllocationsMEM_RESET ;
D3DKMT_QUERYSTATISTICS_COUNTER AllocationsUnresetSuccess ;
D3DKMT_QUERYSTATISTICS_COUNTER AllocationsUnresetFail ;
ULONG AllocationsUnresetSuccessRead ;
ULONG AllocationsUnresetFailRead ;
D3DKMT_QUERYSTATISTICS_COUNTER Evictions ;
D3DKMT_QUERYSTATISTICS_COUNTER EvictionsDueToPreparation ;
D3DKMT_QUERYSTATISTICS_COUNTER EvictionsDueToLock ;
D3DKMT_QUERYSTATISTICS_COUNTER EvictionsDueToClose ;
D3DKMT_QUERYSTATISTICS_COUNTER EvictionsDueToPurge ;
D3DKMT_QUERYSTATISTICS_COUNTER EvictionsDueToSuspendCPUAccess ;
} D3DKMT_QUERYSTATSTICS_PAGING_FAULT ;
typedef struct _D3DKMT_QUERYSTATSTICS_PAGING_TRANSFER
{
D3DKMT_ALIGN64 ULONGLONG BytesFilled ;
D3DKMT_ALIGN64 ULONGLONG BytesDiscarded ;
D3DKMT_ALIGN64 ULONGLONG BytesMappedIntoAperture ;
D3DKMT_ALIGN64 ULONGLONG BytesUnmappedFromAperture ;
D3DKMT_ALIGN64 ULONGLONG BytesTransferredFromMdlToMemory ;
D3DKMT_ALIGN64 ULONGLONG BytesTransferredFromMemoryToMdl ;
D3DKMT_ALIGN64 ULONGLONG BytesTransferredFromApertureToMemory ;
D3DKMT_ALIGN64 ULONGLONG BytesTransferredFromMemoryToAperture ;
} D3DKMT_QUERYSTATSTICS_PAGING_TRANSFER ;
typedef struct _D3DKMT_QUERYSTATSTICS_SWIZZLING_RANGE
{
ULONG NbRangesAcquired ;
ULONG NbRangesReleased ;
} D3DKMT_QUERYSTATSTICS_SWIZZLING_RANGE ;
typedef struct _D3DKMT_QUERYSTATSTICS_LOCKS
{
ULONG NbLocks ;
ULONG NbLocksWaitFlag ;
ULONG NbLocksDiscardFlag ;
ULONG NbLocksNoOverwrite ;
ULONG NbLocksNoReadSync ;
ULONG NbLocksLinearization ;
ULONG NbComplexLocks ;
} D3DKMT_QUERYSTATSTICS_LOCKS ;
typedef struct _D3DKMT_QUERYSTATSTICS_ALLOCATIONS
{
D3DKMT_QUERYSTATISTICS_COUNTER Created ;
D3DKMT_QUERYSTATISTICS_COUNTER Destroyed ;
D3DKMT_QUERYSTATISTICS_COUNTER Opened ;
D3DKMT_QUERYSTATISTICS_COUNTER Closed ;
D3DKMT_QUERYSTATISTICS_COUNTER MigratedSuccess ;
D3DKMT_QUERYSTATISTICS_COUNTER MigratedFail ;
D3DKMT_QUERYSTATISTICS_COUNTER MigratedAbandoned ;
} D3DKMT_QUERYSTATSTICS_ALLOCATIONS ;
typedef struct _D3DKMT_QUERYSTATSTICS_TERMINATIONS
{
//
// We separate shared / nonshared because for nonshared we know that every alloc
// terminated will lead cause a global alloc destroyed, but not for nonshared.
//
D3DKMT_QUERYSTATISTICS_COUNTER TerminatedShared ;
D3DKMT_QUERYSTATISTICS_COUNTER TerminatedNonShared ;
D3DKMT_QUERYSTATISTICS_COUNTER DestroyedShared ;
D3DKMT_QUERYSTATISTICS_COUNTER DestroyedNonShared ;
} D3DKMT_QUERYSTATSTICS_TERMINATIONS ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
typedef struct _D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS
{
union
{
struct
{
UINT64 NumberOfMemoryGroups : 2 ;
UINT64 SupportsDemotion : 1 ;
UINT64 Reserved : 61 ;
} ;
D3DKMT_ALIGN64 UINT64 Value ;
} ;
} D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS ;
# endif
typedef struct _D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION
{
ULONG NbSegments ;
ULONG NodeCount ;
ULONG VidPnSourceCount ;
ULONG VSyncEnabled ;
ULONG TdrDetectedCount ;
D3DKMT_ALIGN64 LONGLONG ZeroLengthDmaBuffers ;
D3DKMT_ALIGN64 ULONGLONG RestartedPeriod ;
D3DKMT_QUERYSTATSTICS_REFERENCE_DMA_BUFFER ReferenceDmaBuffer ;
D3DKMT_QUERYSTATSTICS_RENAMING Renaming ;
D3DKMT_QUERYSTATSTICS_PREPRATION Preparation ;
D3DKMT_QUERYSTATSTICS_PAGING_FAULT PagingFault ;
D3DKMT_QUERYSTATSTICS_PAGING_TRANSFER PagingTransfer ;
D3DKMT_QUERYSTATSTICS_SWIZZLING_RANGE SwizzlingRange ;
D3DKMT_QUERYSTATSTICS_LOCKS Locks ;
D3DKMT_QUERYSTATSTICS_ALLOCATIONS Allocations ;
D3DKMT_QUERYSTATSTICS_TERMINATIONS Terminations ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION_FLAGS Flags ;
D3DKMT_ALIGN64 UINT64 Reserved [ 7 ] ;
# else
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
# endif
} D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
typedef struct _D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER_INFORMATION
{
D3DKMT_ADAPTER_PERFDATA AdapterPerfData ;
D3DKMT_ADAPTER_PERFDATACAPS AdapterPerfDataCaps ;
D3DKMT_GPUVERSION GpuVersion ;
} D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER_INFORMATION ;
# endif
typedef struct _D3DKMT_QUERYSTATISTICS_SYSTEM_MEMORY
{
D3DKMT_ALIGN64 ULONGLONG BytesAllocated ;
D3DKMT_ALIGN64 ULONGLONG BytesReserved ;
ULONG SmallAllocationBlocks ;
ULONG LargeAllocationBlocks ;
D3DKMT_ALIGN64 ULONGLONG WriteCombinedBytesAllocated ;
D3DKMT_ALIGN64 ULONGLONG WriteCombinedBytesReserved ;
D3DKMT_ALIGN64 ULONGLONG CachedBytesAllocated ;
D3DKMT_ALIGN64 ULONGLONG CachedBytesReserved ;
D3DKMT_ALIGN64 ULONGLONG SectionBytesAllocated ;
D3DKMT_ALIGN64 ULONGLONG SectionBytesReserved ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
D3DKMT_ALIGN64 ULONGLONG BytesZeroed ;
# else
D3DKMT_ALIGN64 ULONGLONG Reserved ;
# endif
} D3DKMT_QUERYSTATISTICS_SYSTEM_MEMORY ;
typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_INFORMATION
{
ULONG NodeCount ;
ULONG VidPnSourceCount ;
D3DKMT_QUERYSTATISTICS_SYSTEM_MEMORY SystemMemory ;
D3DKMT_ALIGN64 UINT64 Reserved [ 7 ] ;
} D3DKMT_QUERYSTATISTICS_PROCESS_INFORMATION ;
typedef struct _D3DKMT_QUERYSTATISTICS_DMA_BUFFER
{
D3DKMT_QUERYSTATISTICS_COUNTER Size ;
ULONG AllocationListBytes ;
ULONG PatchLocationListBytes ;
} D3DKMT_QUERYSTATISTICS_DMA_BUFFER ;
typedef struct _D3DKMT_QUERYSTATISTICS_COMMITMENT_DATA
{
D3DKMT_ALIGN64 UINT64 TotalBytesEvictedFromProcess ;
D3DKMT_ALIGN64 UINT64 BytesBySegmentPreference [ D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX ] ;
} D3DKMT_QUERYSTATISTICS_COMMITMENT_DATA ;
typedef struct _D3DKMT_QUERYSTATISTICS_POLICY
{
D3DKMT_ALIGN64 ULONGLONG PreferApertureForRead [ D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX ] ;
D3DKMT_ALIGN64 ULONGLONG PreferAperture [ D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX ] ;
D3DKMT_ALIGN64 ULONGLONG MemResetOnPaging ;
D3DKMT_ALIGN64 ULONGLONG RemovePagesFromWorkingSetOnPaging ;
D3DKMT_ALIGN64 ULONGLONG MigrationEnabled ;
} D3DKMT_QUERYSTATISTICS_POLICY ;
// Process interference counters indicate how much this process GPU workload interferes with packets
// attempting to preempt it. 9 buckets will be exposed based on how long preemption took:
// [0] 100 microseconds <= preemption time < 250 microseconds
// [1] 250 microseconds <= preemption time < 500 microseconds
// [2] 500 microseconds <= preemption time < 1 milliseconds
// [3] 1 milliseconds <= preemption time < 2.5 milliseconds
// [4] 2.5 milliseconds <= preemption time < 5 milliseconds
// [5] 5 milliseconds <= preemption time < 10 milliseconds
// [6] 10 milliseconds <= preemption time < 25 milliseconds
// [7] 25 milliseconds <= preemption time < 50 milliseconds
// [8] 50 milliseconds <= preemption time
//
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
# define D3DKMT_QUERYSTATISTICS_PROCESS_INTERFERENCE_BUCKET_COUNT 9
typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_INTERFERENCE_COUNTERS
{
D3DKMT_ALIGN64 UINT64 InterferenceCount [ D3DKMT_QUERYSTATISTICS_PROCESS_INTERFERENCE_BUCKET_COUNT ] ;
} D3DKMT_QUERYSTATISTICS_PROCESS_INTERFERENCE_COUNTERS ;
# endif
typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER_INFORMATION
{
ULONG NbSegments ;
ULONG NodeCount ;
ULONG VidPnSourceCount ;
//
// Virtual address space used by vidmm for this process
//
ULONG VirtualMemoryUsage ;
D3DKMT_QUERYSTATISTICS_DMA_BUFFER DmaBuffer ;
D3DKMT_QUERYSTATISTICS_COMMITMENT_DATA CommitmentData ;
D3DKMT_QUERYSTATISTICS_POLICY _Policy ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
D3DKMT_QUERYSTATISTICS_PROCESS_INTERFERENCE_COUNTERS ProcessInterferenceCounters ;
# else
D3DKMT_ALIGN64 UINT64 Reserved [ 9 ] ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
D3DKMT_CLIENTHINT ClientHint ;
# else
UINT Reserve ;
# endif
} D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER_INFORMATION ;
typedef struct _D3DKMT_QUERYSTATISTICS_MEMORY
{
D3DKMT_ALIGN64 ULONGLONG TotalBytesEvicted ;
ULONG AllocsCommitted ;
ULONG AllocsResident ;
} D3DKMT_QUERYSTATISTICS_MEMORY ;
typedef struct _D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION
{
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
D3DKMT_ALIGN64 ULONGLONG CommitLimit ;
D3DKMT_ALIGN64 ULONGLONG BytesCommitted ;
D3DKMT_ALIGN64 ULONGLONG BytesResident ;
# else
ULONG CommitLimit ;
ULONG BytesCommitted ;
ULONG BytesResident ;
# endif
D3DKMT_QUERYSTATISTICS_MEMORY Memory ;
//
// Boolean, whether this is an aperture segment
//
ULONG Aperture ;
//
// Breakdown of bytes evicted by priority class
//
D3DKMT_ALIGN64 ULONGLONG TotalBytesEvictedByPriority [ D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX ] ; //Size = D3DKMT_MaxAllocationPriorityClass
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
D3DKMT_ALIGN64 UINT64 SystemMemoryEndAddress ;
struct D3DKMT_ALIGN64
{
UINT64 PreservedDuringStandby : 1 ;
UINT64 PreservedDuringHibernate : 1 ;
UINT64 PartiallyPreservedDuringHibernate : 1 ;
UINT64 Reserved : 61 ;
} PowerFlags ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
struct D3DKMT_ALIGN64
{
UINT64 SystemMemory : 1 ;
UINT64 PopulatedByReservedDDRByFirmware : 1 ;
UINT64 Reserved : 62 ;
} SegmentProperties ;
D3DKMT_ALIGN64 UINT64 Reserved [ 5 ] ;
# else
D3DKMT_ALIGN64 UINT64 Reserved [ 6 ] ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
# else
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
} D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION ;
//
// Video memory statistics.
//
typedef struct _D3DKMT_QUERYSTATISTICS_VIDEO_MEMORY
{
ULONG AllocsCommitted ;
D3DKMT_QUERYSTATISTICS_COUNTER AllocsResidentInP [ D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX ] ;
D3DKMT_QUERYSTATISTICS_COUNTER AllocsResidentInNonPreferred ;
D3DKMT_ALIGN64 ULONGLONG TotalBytesEvictedDueToPreparation ;
} D3DKMT_QUERYSTATISTICS_VIDEO_MEMORY ;
//
// VidMM Policies
//
typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_POLICY
{
D3DKMT_ALIGN64 ULONGLONG UseMRU ;
} D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_POLICY ;
typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_INFORMATION
{
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
D3DKMT_ALIGN64 ULONGLONG BytesCommitted ;
D3DKMT_ALIGN64 ULONGLONG MaximumWorkingSet ;
D3DKMT_ALIGN64 ULONGLONG MinimumWorkingSet ;
ULONG NbReferencedAllocationEvictedInPeriod ;
UINT Padding ;
# else
ULONG BytesCommitted ;
ULONG NbReferencedAllocationEvictedInPeriod ;
ULONG MaximumWorkingSet ;
ULONG MinimumWorkingSet ;
# endif
D3DKMT_QUERYSTATISTICS_VIDEO_MEMORY VideoMemory ;
D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_POLICY _Policy ;
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
} D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_INFORMATION ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP_INFORMATION
{
D3DKMT_ALIGN64 UINT64 Budget ;
D3DKMT_ALIGN64 UINT64 Requested ;
D3DKMT_ALIGN64 UINT64 Usage ;
D3DKMT_ALIGN64 UINT64 Demoted [ D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS_MAX ] ;
} D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP_INFORMATION ;
# endif
typedef enum _D3DKMT_QUERYSTATISTICS_TYPE
{
D3DKMT_QUERYSTATISTICS_ADAPTER = 0 ,
D3DKMT_QUERYSTATISTICS_PROCESS = 1 ,
D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER = 2 ,
D3DKMT_QUERYSTATISTICS_SEGMENT = 3 ,
D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT = 4 ,
D3DKMT_QUERYSTATISTICS_NODE = 5 ,
D3DKMT_QUERYSTATISTICS_PROCESS_NODE = 6 ,
D3DKMT_QUERYSTATISTICS_VIDPNSOURCE = 7 ,
D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE = 8 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP = 9 ,
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER = 10 ,
# endif
} D3DKMT_QUERYSTATISTICS_TYPE ;
typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT
{
ULONG SegmentId ; // in: id of node to get statistics for
} D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT ;
typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_NODE
{
ULONG NodeId ;
} D3DKMT_QUERYSTATISTICS_QUERY_NODE ;
typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE
{
ULONG VidPnSourceId ; // in: id of segment to get statistics for
} D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_PHYSICAL_ADAPTER
{
ULONG PhysicalAdapterIndex ;
} D3DKMT_QUERYSTATISTICS_QUERY_PHYSICAL_ADAPTER ;
# endif
typedef union _D3DKMT_QUERYSTATISTICS_RESULT
{
D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION AdapterInformation ; // out: result of D3DKMT_QUERYSTATISTICS_ADAPTER query
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER_INFORMATION PhysAdapterInformation ; // out: result of D3DKMT_QUERYSTATISTICS_PHYSICAL_ADAPTER query
# endif
D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION SegmentInformation ; // out: result of D3DKMT_QUERYSTATISTICS_SEGMENT query
D3DKMT_QUERYSTATISTICS_NODE_INFORMATION NodeInformation ; // out: result of D3DKMT_QUERYSTATISTICS_NODE query
D3DKMT_QUERYSTATISTICS_VIDPNSOURCE_INFORMATION VidPnSourceInformation ; // out: result of D3DKMT_QUERYSTATISTICS_VIDPNSOURCE query
D3DKMT_QUERYSTATISTICS_PROCESS_INFORMATION ProcessInformation ; // out: result of D3DKMT_QUERYSTATISTICS_PROCESS query
D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER_INFORMATION ProcessAdapterInformation ; // out: result of D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER query
D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_INFORMATION ProcessSegmentInformation ; // out: result of D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT query
D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION ProcessNodeInformation ; // out: result of D3DKMT_QUERYSTATISTICS_PROCESS_NODE query
D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION ProcessVidPnSourceInformation ; // out: result of D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE query
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP_INFORMATION ProcessSegmentGroupInformation ; // out: result of D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_GROUP query
# endif
} D3DKMT_QUERYSTATISTICS_RESULT ;
typedef struct _D3DKMT_QUERYSTATISTICS
{
D3DKMT_QUERYSTATISTICS_TYPE Type ; // in: type of data requested
LUID AdapterLuid ; // in: adapter to get export / statistics from
D3DKMT_PTR ( HANDLE , hProcess ) ; // in: process to get statistics for, if required for this query type
D3DKMT_QUERYSTATISTICS_RESULT QueryResult ; // out: requested data
union
{
D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT QuerySegment ; // in: id of segment to get statistics for
D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT QueryProcessSegment ; // in: id of segment to get statistics for
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
D3DKMT_MEMORY_SEGMENT_GROUP QueryProcessSegmentGroup ; // in: id of segment group to get statistics for
# endif
D3DKMT_QUERYSTATISTICS_QUERY_NODE QueryNode ; // in: id of node to get statistics for
D3DKMT_QUERYSTATISTICS_QUERY_NODE QueryProcessNode ; // in: id of node to get statistics for
D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE QueryVidPnSource ; // in: id of vidpnsource to get statistics for
D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE QueryProcessVidPnSource ; // in: id of vidpnsource to get statistics for
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
D3DKMT_QUERYSTATISTICS_QUERY_PHYSICAL_ADAPTER QueryPhysAdapter ; // in: id of physical adapter to get statistics for
# endif
} ;
} D3DKMT_QUERYSTATISTICS ;
# if defined(_AMD64_)
C_ASSERT ( sizeof ( D3DKMT_QUERYSTATISTICS ) = = 0x328 ) ;
# endif
//
// end D3DKMT_QUERYSTATISTICS
//
typedef struct _D3DKMT_PRESENT_STATS_DWM2
{
ULONG cbSize ; // in: size of struct for versioning
UINT PresentCount ;
UINT PresentRefreshCount ;
D3DKMT_ALIGN64 LARGE_INTEGER PresentQPCTime ;
UINT SyncRefreshCount ;
D3DKMT_ALIGN64 LARGE_INTEGER SyncQPCTime ;
UINT CustomPresentDuration ;
UINT VirtualSyncRefreshCount ;
D3DKMT_ALIGN64 LARGE_INTEGER VirtualSyncQPCTime ;
} D3DKMT_PRESENT_STATS_DWM2 ;
typedef enum _D3DKMT_VIDPNSOURCEOWNER_TYPE
{
D3DKMT_VIDPNSOURCEOWNER_UNOWNED = 0 , //Has no owner or GDI is the owner
D3DKMT_VIDPNSOURCEOWNER_SHARED = 1 , //Has shared owner, that is owner can yield to any exclusive owner, not available to legacy devices
D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVE = 2 , //Has exclusive owner without shared gdi primary,
D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVEGDI = 3 , //Has exclusive owner with shared gdi primary and must be exclusive owner of all VidPn sources, only available to legacy devices
D3DKMT_VIDPNSOURCEOWNER_EMULATED = 4 , //Does not have real primary ownership, but allows the device to set gamma on its owned sources
} D3DKMT_VIDPNSOURCEOWNER_TYPE ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef struct _D3DKMT_VIDPNSOURCEOWNER_FLAGS
{
union
{
struct
{
UINT AllowOutputDuplication : 1 ;
UINT DisableDWMVirtualMode : 1 ;
UINT UseNtHandles : 1 ;
UINT Reserved : 29 ;
} ;
UINT Value ;
} ;
} D3DKMT_VIDPNSOURCEOWNER_FLAGS ;
# endif
typedef struct _D3DKMT_SETVIDPNSOURCEOWNER
{
D3DKMT_HANDLE hDevice ; // in: Device handle
D3DKMT_PTR ( CONST D3DKMT_VIDPNSOURCEOWNER_TYPE * , pType ) ; // in: OwnerType array
D3DKMT_PTR ( CONST D3DDDI_VIDEO_PRESENT_SOURCE_ID * , pVidPnSourceId ) ; // in: VidPn source ID array
UINT VidPnSourceCount ; // in: Number of valid entries in above array
} D3DKMT_SETVIDPNSOURCEOWNER ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef struct _D3DKMT_SETVIDPNSOURCEOWNER1
{
D3DKMT_SETVIDPNSOURCEOWNER Version0 ;
D3DKMT_VIDPNSOURCEOWNER_FLAGS Flags ;
} D3DKMT_SETVIDPNSOURCEOWNER1 ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
typedef struct _D3DKMT_SETVIDPNSOURCEOWNER2
{
D3DKMT_SETVIDPNSOURCEOWNER1 Version1 ;
D3DKMT_PTR ( CONST D3DKMT_PTR_TYPE * , pVidPnSourceNtHandles ) ; // in: VidPn source owner DispMgr NT handles
} D3DKMT_SETVIDPNSOURCEOWNER2 ;
# endif
typedef struct _D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP
{
D3DKMT_HANDLE hAdapter ; // in: Adapter handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: VidPn source ID array
} D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP ;
# define D3DKMT_GETPRESENTHISTORY_MAXTOKENS 2048
typedef struct _D3DKMT_GETPRESENTHISTORY
{
D3DKMT_HANDLE hAdapter ; // in: Handle to adapter
UINT ProvidedSize ; // in: Size of provided buffer
UINT WrittenSize ; // out: Copied token size or required size for first token
D3DKMT_PTR ( _Field_size_bytes_ ( ProvidedSize ) D3DKMT_PRESENTHISTORYTOKEN * , pTokens ) ; // in: Pointer to buffer.
UINT NumTokens ; // out: Number of copied token
} D3DKMT_GETPRESENTHISTORY ;
typedef struct _D3DKMT_CREATEOVERLAY
{
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
D3DDDI_KERNELOVERLAYINFO OverlayInfo ; // in
D3DKMT_HANDLE hOverlay ; // out: Kernel overlay handle
} D3DKMT_CREATEOVERLAY ;
typedef struct _D3DKMT_UPDATEOVERLAY
{
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
D3DKMT_HANDLE hOverlay ; // in: Kernel overlay handle
D3DDDI_KERNELOVERLAYINFO OverlayInfo ; // in
} D3DKMT_UPDATEOVERLAY ;
typedef struct _D3DKMT_FLIPOVERLAY
{
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
D3DKMT_HANDLE hOverlay ; // in: Kernel overlay handle
D3DKMT_HANDLE hSource ; // in: Allocation currently displayed
D3DKMT_PTR ( VOID * , pPrivateDriverData ) ; // in: Private driver data
UINT PrivateDriverDataSize ; // in: Size of private driver data
} D3DKMT_FLIPOVERLAY ;
typedef struct _D3DKMT_GETOVERLAYSTATE
{
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
D3DKMT_HANDLE hOverlay ; // in: Kernel overlay handle
BOOLEAN OverlayEnabled ;
} D3DKMT_GETOVERLAYSTATE ;
typedef struct _D3DKMT_DESTROYOVERLAY
{
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
D3DKMT_HANDLE hOverlay ; // in: Kernel overlay handle
} D3DKMT_DESTROYOVERLAY ;
typedef struct _D3DKMT_WAITFORVERTICALBLANKEVENT
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DKMT_HANDLE hDevice ; // in: device handle [Optional]
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN Source ID
} D3DKMT_WAITFORVERTICALBLANKEVENT ;
# define D3DKMT_MAX_WAITFORVERTICALBLANK_OBJECTS 8
typedef struct _D3DKMT_WAITFORVERTICALBLANKEVENT2
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DKMT_HANDLE hDevice ; // in: device handle [Optional]
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN Source ID
UINT NumObjects ;
D3DKMT_PTR_TYPE ObjectHandleArray [ D3DKMT_MAX_WAITFORVERTICALBLANK_OBJECTS ] ; // in: Specifies the objects to wait on.
} D3DKMT_WAITFORVERTICALBLANKEVENT2 ;
typedef struct _D3DKMT_GETVERTICALBLANKEVENT
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DKMT_HANDLE hDevice ; // in: device handle [Optional]
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN Source ID
D3DKMT_PTR ( D3DKMT_PTR_TYPE * , phEvent ) ;
} D3DKMT_GETVERTICALBLANKEVENT ;
typedef struct _D3DKMT_SETSYNCREFRESHCOUNTWAITTARGET
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DKMT_HANDLE hDevice ; // in: device handle [Optional]
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN Source ID
UINT TargetSyncRefreshCount ;
} D3DKMT_SETSYNCREFRESHCOUNTWAITTARGET ;
typedef struct _D3DKMT_SETGAMMARAMP
{
D3DKMT_HANDLE hDevice ; // in: device handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN Source ID
D3DDDI_GAMMARAMP_TYPE Type ; // in: Gamma ramp type
union
{
D3DDDI_GAMMA_RAMP_RGB256x3x16 * pGammaRampRgb256x3x16 ;
D3DDDI_GAMMA_RAMP_DXGI_1 * pGammaRampDXGI1 ;
D3DKMT_PTR_HELPER ( AlignUnionTo64 )
} ;
UINT Size ;
} D3DKMT_SETGAMMARAMP ;
typedef struct _D3DKMT_ADJUSTFULLSCREENGAMMA
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN Source ID
D3DDDI_DXGI_RGB Scale ;
D3DDDI_DXGI_RGB Offset ;
} D3DKMT_ADJUSTFULLSCREENGAMMA ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
typedef struct _D3DKMT_SET_COLORSPACE_TRANSFORM
{
_In_ LUID AdapterLuid ;
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId ;
_In_ D3DDDI_GAMMARAMP_TYPE Type ;
_In_ UINT Size ;
union
{
_In_reads_bytes_opt_ ( Size ) D3DKMDT_3x4_COLORSPACE_TRANSFORM * pColorSpaceTransform ;
D3DKMT_PTR_HELPER ( AlignUnionTo64 )
} ;
} D3DKMT_SET_COLORSPACE_TRANSFORM ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_3
typedef struct _D3DKMT_SETVIDPNSOURCEHWPROTECTION
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN Source ID
BOOL HwProtected ; // in: HW protection status
} D3DKMT_SETVIDPNSOURCEHWPROTECTION ;
typedef struct _D3DKMT_SETHWPROTECTIONTEARDOWNRECOVERY
{
D3DKMT_HANDLE hAdapter ; // in: adapter handle
BOOL Recovered ; // in: HW protection teardown recovery
} D3DKMT_SETHWPROTECTIONTEARDOWNRECOVERY ;
typedef enum _D3DKMT_DEVICEEXECUTION_STATE
{
D3DKMT_DEVICEEXECUTION_ACTIVE = 1 ,
D3DKMT_DEVICEEXECUTION_RESET = 2 ,
D3DKMT_DEVICEEXECUTION_HUNG = 3 ,
D3DKMT_DEVICEEXECUTION_STOPPED = 4 ,
D3DKMT_DEVICEEXECUTION_ERROR_OUTOFMEMORY = 5 ,
D3DKMT_DEVICEEXECUTION_ERROR_DMAFAULT = 6 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
D3DKMT_DEVICEEXECUTION_ERROR_DMAPAGEFAULT = 7 ,
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
} D3DKMT_DEVICEEXECUTION_STATE ;
typedef struct _D3DKMT_DEVICERESET_STATE
{
union
{
struct
{
UINT DesktopSwitched : 1 ; // 0x00000001
UINT Reserved : 31 ; // 0xFFFFFFFE
} ;
UINT Value ;
} ;
} D3DKMT_DEVICERESET_STATE ;
typedef struct _D3DKMT_PRESENT_STATS
{
UINT PresentCount ;
UINT PresentRefreshCount ;
UINT SyncRefreshCount ;
D3DKMT_ALIGN64 LARGE_INTEGER SyncQPCTime ;
D3DKMT_ALIGN64 LARGE_INTEGER SyncGPUTime ;
} D3DKMT_PRESENT_STATS ;
typedef struct _D3DKMT_DEVICEPRESENT_STATE
{
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: present source id
D3DKMT_PRESENT_STATS PresentStats ; // out: present stats
} D3DKMT_DEVICEPRESENT_STATE ;
typedef struct _D3DKMT_PRESENT_STATS_DWM
{
UINT PresentCount ;
UINT PresentRefreshCount ;
D3DKMT_ALIGN64 LARGE_INTEGER PresentQPCTime ;
UINT SyncRefreshCount ;
D3DKMT_ALIGN64 LARGE_INTEGER SyncQPCTime ;
UINT CustomPresentDuration ;
} D3DKMT_PRESENT_STATS_DWM ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef struct _D3DKMT_DEVICEPAGEFAULT_STATE
{
D3DKMT_ALIGN64 UINT64 FaultedPrimitiveAPISequenceNumber ; // when per draw fence write is enabled, identifies the draw that caused the page fault, or DXGK_PRIMITIVE_API_SEQUENCE_NUMBER_UNKNOWN if such information is not available.
DXGK_RENDER_PIPELINE_STAGE FaultedPipelineStage ; // render pipeline stage during which the fault was generated, or DXGK_RENDER_PIPELINE_STAGE_UNKNOWN if such information is not available.
UINT FaultedBindTableEntry ; // a bind table index of a resource being accessed at the time of the fault, or DXGK_BIND_TABLE_ENTRY_UNKNOWN if such information is not available.
DXGK_PAGE_FAULT_FLAGS PageFaultFlags ; // flags specifying the nature of the fault
DXGK_FAULT_ERROR_CODE FaultErrorCode ; // Structure that contains error code describing the fault.
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FaultedVirtualAddress ; // virtual address of faulting resource, or D3DGPU_NULL if such information is not available.
} D3DKMT_DEVICEPAGEFAULT_STATE ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef struct _D3DKMT_DEVICEPRESENT_STATE_DWM
{
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: present source id
D3DKMT_PRESENT_STATS_DWM PresentStatsDWM ; // out: present stats rev 2
} D3DKMT_DEVICEPRESENT_STATE_DWM ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
typedef struct _D3DKMT_DEVICEPRESENT_QUEUE_STATE
{
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: present source id
BOOLEAN bQueuedPresentLimitReached ; // out: whether the queued present limit has been reached
} D3DKMT_DEVICEPRESENT_QUEUE_STATE ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
typedef enum _D3DKMT_DEVICESTATE_TYPE
{
D3DKMT_DEVICESTATE_EXECUTION = 1 ,
D3DKMT_DEVICESTATE_PRESENT = 2 ,
D3DKMT_DEVICESTATE_RESET = 3 ,
D3DKMT_DEVICESTATE_PRESENT_DWM = 4 ,
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
D3DKMT_DEVICESTATE_PAGE_FAULT = 5 ,
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
D3DKMT_DEVICESTATE_PRESENT_QUEUE = 6 ,
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_1
} D3DKMT_DEVICESTATE_TYPE ;
typedef struct _D3DKMT_GETDEVICESTATE
{
D3DKMT_HANDLE hDevice ; // in: device handle
D3DKMT_DEVICESTATE_TYPE StateType ; // in: device state type
union
{
D3DKMT_DEVICEEXECUTION_STATE ExecutionState ; // out: device state
D3DKMT_DEVICEPRESENT_STATE PresentState ; // in/out: present state
D3DKMT_DEVICERESET_STATE ResetState ; // out: reset state
D3DKMT_DEVICEPRESENT_STATE_DWM PresentStateDWM ; // in/out: present state
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
D3DKMT_DEVICEPAGEFAULT_STATE PageFaultState ; // out: page fault state
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
D3DKMT_DEVICEPRESENT_QUEUE_STATE PresentQueueState ; // in/out: present queue state
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_1
} ;
} D3DKMT_GETDEVICESTATE ;
2017-06-16 18:38:08 +00:00
typedef struct _D3DKMT_CREATEDCFROMMEMORY
{
2024-10-17 07:26:01 +00:00
D3DKMT_PTR ( VOID * , pMemory ) ; // in: memory for DC
D3DDDIFORMAT Format ; // in: Memory pixel format
UINT Width ; // in: Memory Width
UINT Height ; // in: Memory Height
UINT Pitch ; // in: Memory pitch
D3DKMT_PTR ( HDC , hDeviceDc ) ; // in: DC describing the device
D3DKMT_PTR ( PALETTEENTRY * , pColorTable ) ; // in: Palette
D3DKMT_PTR ( HDC , hDc ) ; // out: HDC
D3DKMT_PTR ( HANDLE , hBitmap ) ; // out: Handle to bitmap
} D3DKMT_CREATEDCFROMMEMORY ;
typedef struct _D3DKMT_DESTROYDCFROMMEMORY
{
D3DKMT_PTR ( HDC , hDc ) ; // in:
D3DKMT_PTR ( HANDLE , hBitmap ) ; // in:
} D3DKMT_DESTROYDCFROMMEMORY ;
# define D3DKMT_SETCONTEXTSCHEDULINGPRIORITY_ABSOLUTE 0x40000000
typedef struct _D3DKMT_SETCONTEXTSCHEDULINGPRIORITY
{
D3DKMT_HANDLE hContext ; // in: context handle
INT Priority ; // in: context priority
} D3DKMT_SETCONTEXTSCHEDULINGPRIORITY ;
typedef struct _D3DKMT_SETCONTEXTINPROCESSSCHEDULINGPRIORITY
{
D3DKMT_HANDLE hContext ; // in: context handle
INT Priority ; // in: context priority
} D3DKMT_SETCONTEXTINPROCESSSCHEDULINGPRIORITY ;
typedef struct _D3DKMT_CHANGESURFACEPOINTER
{
D3DKMT_PTR ( HDC , hDC ) ; // in: dc handle
D3DKMT_PTR ( HANDLE , hBitmap ) ; // in: bitmap handle
D3DKMT_PTR ( LPVOID , pSurfacePointer ) ; // in: new surface pointer
UINT Width ; // in: Memory Width
UINT Height ; // in: Memory Height
UINT Pitch ; // in: Memory pitch
} D3DKMT_CHANGESURFACEPOINTER ;
typedef struct _D3DKMT_GETCONTEXTSCHEDULINGPRIORITY
{
D3DKMT_HANDLE hContext ; // in: context handle
INT Priority ; // out: context priority
} D3DKMT_GETCONTEXTSCHEDULINGPRIORITY ;
typedef struct _D3DKMT_GETCONTEXTINPROCESSSCHEDULINGPRIORITY
{
D3DKMT_HANDLE hContext ; // in: context handle
INT Priority ; // out: context priority
} D3DKMT_GETCONTEXTINPROCESSSCHEDULINGPRIORITY ;
typedef enum _D3DKMT_SCHEDULINGPRIORITYCLASS
{
D3DKMT_SCHEDULINGPRIORITYCLASS_IDLE = 0 ,
D3DKMT_SCHEDULINGPRIORITYCLASS_BELOW_NORMAL = 1 ,
D3DKMT_SCHEDULINGPRIORITYCLASS_NORMAL = 2 ,
D3DKMT_SCHEDULINGPRIORITYCLASS_ABOVE_NORMAL = 3 ,
D3DKMT_SCHEDULINGPRIORITYCLASS_HIGH = 4 ,
D3DKMT_SCHEDULINGPRIORITYCLASS_REALTIME = 5 ,
} D3DKMT_SCHEDULINGPRIORITYCLASS ;
typedef struct _D3DKMT_GETSCANLINE
{
D3DKMT_HANDLE hAdapter ; // in: Adapter handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: Adapter's VidPN Source ID
BOOLEAN InVerticalBlank ; // out: Within vertical blank
UINT ScanLine ; // out: Current scan line
} D3DKMT_GETSCANLINE ;
typedef enum _D3DKMT_QUEUEDLIMIT_TYPE
{
D3DKMT_SET_QUEUEDLIMIT_PRESENT = 1 ,
D3DKMT_GET_QUEUEDLIMIT_PRESENT = 2 ,
} D3DKMT_QUEUEDLIMIT_TYPE ;
typedef struct _D3DKMT_SETQUEUEDLIMIT
{
D3DKMT_HANDLE hDevice ; // in: device handle
D3DKMT_QUEUEDLIMIT_TYPE Type ; // in: limit type
union
{
UINT QueuedPresentLimit ; // in (or out): queued present limit
struct
{
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: adapter's VidPN source ID
UINT QueuedPendingFlipLimit ; // in (or out): flip pending limit
} ;
} ;
} D3DKMT_SETQUEUEDLIMIT ;
typedef struct _D3DKMT_POLLDISPLAYCHILDREN
{
D3DKMT_HANDLE hAdapter ; // in: Adapter handle
UINT NonDestructiveOnly : 1 ; // in: 0x00000001 Destructive or not
UINT SynchronousPolling : 1 ; // in: 0x00000002 Synchronous polling or not
UINT DisableModeReset : 1 ; // in: 0x00000004 Disable DMM mode reset on monitor event
UINT PollAllAdapters : 1 ; // in: 0x00000008 Poll all adapters
UINT PollInterruptible : 1 ; // in: 0x00000010 Poll interruptible targets as well.
UINT Reserved : 27 ; // in: 0xffffffc0
} D3DKMT_POLLDISPLAYCHILDREN ;
typedef struct _D3DKMT_INVALIDATEACTIVEVIDPN
{
D3DKMT_HANDLE hAdapter ; // in: Adapter handle
D3DKMT_PTR ( VOID * , pPrivateDriverData ) ; // in: Private driver data
UINT PrivateDriverDataSize ; // in: Size of private driver data
} D3DKMT_INVALIDATEACTIVEVIDPN ;
typedef struct _D3DKMT_CHECKOCCLUSION
{
D3DKMT_PTR ( HWND , hWindow ) ; // in: Destination window handle
} D3DKMT_CHECKOCCLUSION ;
typedef struct _D3DKMT_WAITFORIDLE
{
D3DKMT_HANDLE hDevice ; // in: Device to wait for idle
} D3DKMT_WAITFORIDLE ;
typedef struct _D3DKMT_CHECKMONITORPOWERSTATE
{
D3DKMT_HANDLE hAdapter ; // in: Adapter to check on
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: Adapter's VidPN Source ID
} D3DKMT_CHECKMONITORPOWERSTATE ;
typedef struct _D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT
{
D3DKMT_HANDLE hDevice ; // in: Identifies the device
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // in: Identifies which VidPn we are changing the private driver format attribute for
UINT PrivateDriverFormatAttribute ; // In: Requested private format attribute for VidPn specified
} D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT ;
typedef struct _D3DKMT_CREATEKEYEDMUTEX
{
D3DKMT_ALIGN64 UINT64 InitialValue ; // in: Initial value to release to
D3DKMT_HANDLE hSharedHandle ; // out: Global handle to keyed mutex
D3DKMT_HANDLE hKeyedMutex ; // out: Handle to the keyed mutex in this process
} D3DKMT_CREATEKEYEDMUTEX ;
typedef struct _D3DKMT_OPENKEYEDMUTEX
{
D3DKMT_HANDLE hSharedHandle ; // in: Global handle to keyed mutex
D3DKMT_HANDLE hKeyedMutex ; // out: Handle to the keyed mutex in this process
} D3DKMT_OPENKEYEDMUTEX ;
typedef struct _D3DKMT_DESTROYKEYEDMUTEX
{
D3DKMT_HANDLE hKeyedMutex ; // in: Identifies the keyed mutex being destroyed.
} D3DKMT_DESTROYKEYEDMUTEX ;
typedef struct _D3DKMT_ACQUIREKEYEDMUTEX
{
D3DKMT_HANDLE hKeyedMutex ; // in: Handle to the keyed mutex
D3DKMT_ALIGN64 UINT64 Key ; // in: Key value to Acquire
D3DKMT_PTR ( PLARGE_INTEGER , pTimeout ) ; // in: NT-style timeout value
D3DKMT_ALIGN64 UINT64 FenceValue ; // out: Current fence value of the GPU sync object
} D3DKMT_ACQUIREKEYEDMUTEX ;
typedef struct _D3DKMT_RELEASEKEYEDMUTEX
{
D3DKMT_HANDLE hKeyedMutex ; // in: Handle to the keyed mutex
D3DKMT_ALIGN64 UINT64 Key ; // in: Key value to Release to
D3DKMT_ALIGN64 UINT64 FenceValue ; // in: New fence value to use for GPU sync object
} D3DKMT_RELEASEKEYEDMUTEX ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef struct _D3DKMT_CREATEKEYEDMUTEX2_FLAGS
{
union
{
struct
{
UINT NtSecuritySharing : 1 ; // If set, the keyed mutex will be shared using DxgkShareObjects instead of D3DKMT_CREATEKEYEDMUTEX2::hSharedHandle
UINT Reserved : 31 ;
} ;
UINT Value ;
} ;
} D3DKMT_CREATEKEYEDMUTEX2_FLAGS ;
typedef struct _D3DKMT_CREATEKEYEDMUTEX2
{
D3DKMT_ALIGN64 UINT64 InitialValue ; // in: Initial value to release to
D3DKMT_HANDLE hSharedHandle ; // out: Global handle to keyed mutex, NULL if NtSecuritySharing is set.
D3DKMT_HANDLE hKeyedMutex ; // out: Handle to the keyed mutex in this process
D3DKMT_PTR ( _In_reads_bytes_opt_ ( PrivateRuntimeDataSize )
VOID * , pPrivateRuntimeData ) ; // in: Buffer containing initial private data.
// If NULL then PrivateRuntimeDataSize must be 0.
UINT PrivateRuntimeDataSize ; // in: Size in bytes of pPrivateRuntimeData.
D3DKMT_CREATEKEYEDMUTEX2_FLAGS Flags ; // in: Creation flags.
} D3DKMT_CREATEKEYEDMUTEX2 ;
typedef struct _D3DKMT_OPENKEYEDMUTEX2
{
D3DKMT_HANDLE hSharedHandle ; // in: Global handle to keyed mutex
D3DKMT_HANDLE hKeyedMutex ; // out: Handle to the keyed mutex in this process
D3DKMT_PTR ( _In_reads_bytes_opt_ ( PrivateRuntimeDataSize )
VOID * , pPrivateRuntimeData ) ; // in: Buffer containing initial private data.
// If NULL then PrivateRuntimeDataSize must be 0.
// It will only be copied if the keyed mutex does not already have private data.
UINT PrivateRuntimeDataSize ; // in: Size in bytes of pPrivateRuntimeData.
} D3DKMT_OPENKEYEDMUTEX2 ;
typedef struct _D3DKMT_OPENKEYEDMUTEXFROMNTHANDLE
{
D3DKMT_PTR ( HANDLE , hNtHandle ) ; // in: NT handle to keyed mutex
D3DKMT_HANDLE hKeyedMutex ; // out: Handle to the keyed mutex in this process
D3DKMT_PTR ( _In_reads_bytes_opt_ ( PrivateRuntimeDataSize )
VOID * , pPrivateRuntimeData ) ; // in: Buffer containing initial private data.
// If NULL then PrivateRuntimeDataSize must be 0.
// It will only be copied if the keyed mutex does not already have private data.
UINT PrivateRuntimeDataSize ; // in: Size in bytes of pPrivateRuntimeData.
} D3DKMT_OPENKEYEDMUTEXFROMNTHANDLE ;
typedef struct _D3DKMT_ACQUIREKEYEDMUTEX2
{
D3DKMT_HANDLE hKeyedMutex ; // in: Handle to the keyed mutex
D3DKMT_ALIGN64 UINT64 Key ; // in: Key value to Acquire
D3DKMT_PTR ( PLARGE_INTEGER , pTimeout ) ; // in: NT-style timeout value
D3DKMT_ALIGN64 UINT64 FenceValue ; // out: Current fence value of the GPU sync object
D3DKMT_PTR ( _Out_writes_bytes_all_opt_ ( PrivateRuntimeDataSize )
VOID * , pPrivateRuntimeData ) ; // out: Buffer to copy private data to.
// If NULL then PrivateRuntimeDataSize must be 0.
UINT PrivateRuntimeDataSize ; // in: Size in bytes of pPrivateRuntimeData.
} D3DKMT_ACQUIREKEYEDMUTEX2 ;
typedef struct _D3DKMT_RELEASEKEYEDMUTEX2
{
D3DKMT_HANDLE hKeyedMutex ; // in: Handle to the keyed mutex
D3DKMT_ALIGN64 UINT64 Key ; // in: Key value to Release to
D3DKMT_ALIGN64 UINT64 FenceValue ; // in: New fence value to use for GPU sync object
D3DKMT_PTR ( _In_reads_bytes_opt_ ( PrivateRuntimeDataSize )
VOID * , pPrivateRuntimeData ) ; // in: Buffer containing new private data.
// If NULL then PrivateRuntimeDataSize must be 0.
UINT PrivateRuntimeDataSize ; // in: Size in bytes of pPrivateRuntimeData.
} D3DKMT_RELEASEKEYEDMUTEX2 ;
# endif
typedef struct _D3DKMT_CONFIGURESHAREDRESOURCE
{
D3DKMT_HANDLE hDevice ; // in: Device that created the resource
D3DKMT_HANDLE hResource ; // in: Handle for shared resource
BOOLEAN IsDwm ; // in: TRUE when the process is DWM
D3DKMT_PTR ( HANDLE , hProcess ) ; // in: Process handle for the non-DWM case
BOOLEAN AllowAccess ; // in: Indicates whereh the process is allowed access
} D3DKMT_CONFIGURESHAREDRESOURCE ;
typedef struct _D3DKMT_CHECKSHAREDRESOURCEACCESS
{
D3DKMT_HANDLE hResource ; // in: Handle for the resource
UINT ClientPid ; // in: Client process PID
} D3DKMT_CHECKSHAREDRESOURCEACCESS ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef enum _D3DKMT_OFFER_PRIORITY
{
D3DKMT_OFFER_PRIORITY_LOW = 1 , // Content is not useful
D3DKMT_OFFER_PRIORITY_NORMAL , // Content is useful but easy to regenerate
D3DKMT_OFFER_PRIORITY_HIGH , // Content is useful and difficult to regenerate
D3DKMT_OFFER_PRIORITY_AUTO , // Let VidMm decide offer priority based on eviction priority
} D3DKMT_OFFER_PRIORITY ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef struct _D3DKMT_OFFER_FLAGS
{
union
{
struct
{
UINT OfferImmediately : 1 ; // 0x00000001
UINT AllowDecommit : 1 ; // 0x00000002
UINT Reserved : 30 ; // 0xFFFFFFFC
} ;
UINT Value ;
} ;
} D3DKMT_OFFER_FLAGS ;
# endif // DXGKDDI_INTERFACE_VERSION
typedef struct _D3DKMT_OFFERALLOCATIONS
{
D3DKMT_HANDLE hDevice ; // in: Device that created the allocations
D3DKMT_PTR ( D3DKMT_HANDLE * , pResources ) ; // in: array of D3D runtime resource handles.
D3DKMT_PTR ( CONST D3DKMT_HANDLE * , HandleList ) ; // in: array of allocation handles. If non-NULL, pResources must be NULL.
UINT NumAllocations ; // in: number of items in whichever of pResources or HandleList is non-NULL.
D3DKMT_OFFER_PRIORITY Priority ; // in: priority with which to offer the allocations
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
D3DKMT_OFFER_FLAGS Flags ; // in: various flags for determining offer behavior
# endif // DXGKDDI_INTERFACE_VERSION
} D3DKMT_OFFERALLOCATIONS ;
typedef struct _D3DKMT_RECLAIMALLOCATIONS
{
D3DKMT_HANDLE hDevice ; // in: Device that created the allocations
D3DKMT_PTR ( D3DKMT_HANDLE * , pResources ) ; // in: array of D3D runtime resource handles.
D3DKMT_PTR ( CONST D3DKMT_HANDLE * , HandleList ) ; // in: array of allocation handles. If non-NULL, pResources must be NULL.
D3DKMT_PTR ( BOOL * , pDiscarded ) ; // out: optional array of booleans specifying whether each resource or allocation was discarded.
UINT NumAllocations ; // in: number of items in pDiscarded and whichever of pResources or HandleList is non-NULL.
} D3DKMT_RECLAIMALLOCATIONS ;
typedef struct _D3DKMT_RECLAIMALLOCATIONS2
{
D3DKMT_HANDLE hPagingQueue ; // in: Device that created the allocations
UINT NumAllocations ; // in: number of items in pDiscarded and whichever of pResources or HandleList is non-NULL.
D3DKMT_PTR ( D3DKMT_HANDLE * , pResources ) ; // in: array of D3D runtime resource handles.
D3DKMT_PTR ( CONST D3DKMT_HANDLE * , HandleList ) ; // in: array of allocation handles. If non-NULL, pResources must be NULL.
# if(DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1 || \
D3D_UMD_INTERFACE_VERSION > = D3D_UMD_INTERFACE_VERSION_WDDM2_1 )
union
{
BOOL * pDiscarded ; // out: optional array of booleans specifying whether each resource or allocation was discarded.
D3DDDI_RECLAIM_RESULT * pResults ; // out: array of results specifying whether each resource or allocation is OK, discarded, or has no commitment.
D3DKMT_PTR_HELPER ( AlignUnionTo64 )
} ;
# else
D3DKMT_PTR ( BOOL * , pDiscarded ) ; // out: optional array of booleans specifying whether each resource or allocation was discarded.
# endif // (DXGKDDI_INTERFACE_VERSION || D3D_UMD_INTERFACE_VERSION)
D3DKMT_ALIGN64 UINT64 PagingFenceValue ; // out: The paging fence to synchronize against before submitting work to the GPU which
// references any of the resources or allocations in the provided arrays
} D3DKMT_RECLAIMALLOCATIONS2 ;
typedef struct _D3DKMT_OUTPUTDUPLCREATIONFLAGS
{
union
{
struct
{
UINT CompositionUiCaptureOnly : 1 ;
UINT Reserved : 31 ;
} ;
UINT Value ;
} ;
} D3DKMT_OUTPUTDUPLCREATIONFLAGS ;
typedef struct _D3DKMT_OUTPUTDUPL_KEYEDMUTEX
{
D3DKMT_PTR ( HANDLE , hSharedSurfaceNt ) ;
} D3DKMT_OUTPUTDUPL_KEYEDMUTEX ;
# define OUTPUTDUPL_CREATE_MAX_KEYEDMUTXES 3
typedef struct _D3DKMT_CREATE_OUTPUTDUPL
{
D3DKMT_HANDLE hAdapter ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
UINT KeyedMutexCount ; // in : If zero then means is this the pre-create check
UINT RequiredKeyedMutexCount ; // out: The number of keyed mutexs needed
D3DKMT_OUTPUTDUPL_KEYEDMUTEX KeyedMutexs [ OUTPUTDUPL_CREATE_MAX_KEYEDMUTXES ] ;
D3DKMT_OUTPUTDUPLCREATIONFLAGS Flags ;
} D3DKMT_CREATE_OUTPUTDUPL ;
typedef struct _D3DKMT_DESTROY_OUTPUTDUPL
{
D3DKMT_HANDLE hAdapter ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
BOOL bDestroyAllContexts ;
} D3DKMT_DESTROY_OUTPUTDUPL ;
typedef struct _D3DKMT_OUTPUTDUPL_POINTER_POSITION
{
POINT Position ;
BOOL Visible ;
} D3DKMT_OUTPUTDUPL_POINTER_POSITION ;
typedef struct _D3DKMT_OUTPUTDUPL_FRAMEINFO
{
D3DKMT_ALIGN64 LARGE_INTEGER LastPresentTime ;
D3DKMT_ALIGN64 LARGE_INTEGER LastMouseUpdateTime ;
UINT AccumulatedFrames ;
BOOL RectsCoalesced ;
BOOL ProtectedContentMaskedOut ;
D3DKMT_OUTPUTDUPL_POINTER_POSITION PointerPosition ;
UINT TotalMetadataBufferSize ;
UINT PointerShapeBufferSize ;
} D3DKMT_OUTPUTDUPL_FRAMEINFO ;
typedef struct _D3DKMT_OUTPUTDUPL_GET_FRAMEINFO
{
D3DKMT_HANDLE hAdapter ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
D3DKMT_OUTPUTDUPL_FRAMEINFO FrameInfo ;
} D3DKMT_OUTPUTDUPL_GET_FRAMEINFO ;
typedef enum _D3DKMT_OUTPUTDUPL_METADATATYPE
{
D3DKMT_OUTPUTDUPL_METADATATYPE_DIRTY_RECTS = 0 ,
D3DKMT_OUTPUTDUPL_METADATATYPE_MOVE_RECTS = 1
} D3DKMT_OUTPUTDUPL_METADATATYPE ;
typedef struct _D3DKMT_OUTPUTDUPL_METADATA
{
D3DKMT_HANDLE hAdapter ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
D3DKMT_OUTPUTDUPL_METADATATYPE Type ;
UINT BufferSizeSupplied ;
D3DKMT_PTR ( _Field_size_bytes_part_ ( BufferSizeSupplied , BufferSizeRequired ) PVOID , pBuffer ) ;
UINT BufferSizeRequired ;
} D3DKMT_OUTPUTDUPL_METADATA ;
typedef enum _D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE
{
D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x00000001 ,
D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x00000002 ,
D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x00000004
} D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE ;
typedef struct _D3DKMT_OUTDUPL_POINTER_SHAPE_INFO
{
D3DKMT_OUTDUPL_POINTER_SHAPE_TYPE Type ;
UINT Width ;
UINT Height ;
UINT Pitch ;
POINT HotSpot ;
} D3DKMT_OUTDUPL_POINTER_SHAPE_INFO ;
typedef struct _D3DKMT_OUTPUTDUPL_GET_POINTER_SHAPE_DATA
{
D3DKMT_HANDLE hAdapter ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
UINT BufferSizeSupplied ;
D3DKMT_PTR ( _Field_size_bytes_part_ ( BufferSizeSupplied , BufferSizeRequired ) PVOID , pShapeBuffer ) ;
UINT BufferSizeRequired ;
D3DKMT_OUTDUPL_POINTER_SHAPE_INFO ShapeInfo ;
} D3DKMT_OUTPUTDUPL_GET_POINTER_SHAPE_DATA ;
typedef struct _D3DKMT_OUTPUTDUPL_RELEASE_FRAME
{
D3DKMT_HANDLE hAdapter ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
UINT NextKeyMutexIdx ; // out : index of the next keyed mutex to use
} D3DKMT_OUTPUTDUPL_RELEASE_FRAME ;
# define D3DKMT_MAX_OBJECTS_PER_HANDLE 3
# define D3DKMT_MAX_BUNDLE_OBJECTS_PER_HANDLE 16
# define D3DKMT_GDI_STYLE_HANDLE_DECORATION 0x2
typedef struct _D3DKMT_GETSHAREDRESOURCEADAPTERLUID
{
D3DKMT_HANDLE hGlobalShare ; // in : Shared resource handle
D3DKMT_PTR ( HANDLE , hNtHandle ) ; // in : Process's NT handle
LUID AdapterLuid ; // out: adapter LUID
} D3DKMT_GETSHAREDRESOURCEADAPTERLUID ;
typedef enum _D3DKMT_GPU_PREFERENCE_QUERY_STATE
{
D3DKMT_GPU_PREFERENCE_STATE_UNINITIALIZED ,
D3DKMT_GPU_PREFERENCE_STATE_HIGH_PERFORMANCE ,
D3DKMT_GPU_PREFERENCE_STATE_MINIMUM_POWER ,
D3DKMT_GPU_PREFERENCE_STATE_UNSPECIFIED ,
D3DKMT_GPU_PREFERENCE_STATE_NOT_FOUND ,
D3DKMT_GPU_PREFERENCE_STATE_USER_SPECIFIED_GPU
} D3DKMT_GPU_PREFERENCE_QUERY_STATE ;
typedef enum _D3DKMT_GPU_PREFERENCE_QUERY_TYPE
{
D3DKMT_GPU_PREFERENCE_TYPE_IHV_DLIST ,
D3DKMT_GPU_PREFERENCE_TYPE_DX_DATABASE ,
D3DKMT_GPU_PREFERENCE_TYPE_USER_PREFERENCE
} D3DKMT_GPU_PREFERENCE_QUERY_TYPE ;
typedef struct _D3DKMT_HYBRID_LIST
{
D3DKMT_GPU_PREFERENCE_QUERY_STATE State ; // Gpu preference query state
LUID AdapterLuid ; // in,opt: Adapter luid to per-adapter DList state. Optional if QueryType == D3DKMT_GPU_PREFERENCE_TYPE_IHV_DLIST
BOOL bUserPreferenceQuery ; // Whether referring to user gpu preference, or per-adapter DList query
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
D3DKMT_GPU_PREFERENCE_QUERY_TYPE QueryType ; // Replaced bUserPreferenceQuery, for referring to which D3DKMT_GPU_PREFERENCE_QUERY_TYPE
# endif
} D3DKMT_HYBRID_LIST ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
typedef struct
{
DXGK_MIRACAST_CHUNK_INFO ChunkInfo ;
UINT PrivateDriverDataSize ; // Size of private data
BYTE PrivateDriverData [ 1 ] ; // Private data buffer
} D3DKMT_MIRACAST_CHUNK_DATA ;
typedef enum
{
MiracastStopped = 0 ,
MiracastStartPending = 1 ,
MiracastStarted = 2 ,
MiracastStopPending = 3 ,
} D3DKMT_MIRACAST_DISPLAY_DEVICE_STATE ;
typedef enum
{
D3DKMT_MIRACAST_DEVICE_STATUS_SUCCESS = 0 ,
D3DKMT_MIRACAST_DEVICE_STATUS_SUCCESS_NO_MONITOR = 1 ,
D3DKMT_MIRACAST_DEVICE_STATUS_PENDING = 2 ,
D3DKMT_MIRACAST_DEVICE_STATUS_UNKOWN_ERROR = 0x80000001 ,
D3DKMT_MIRACAST_DEVICE_STATUS_GPU_RESOURCE_IN_USE = 0x80000002 ,
D3DKMT_MIRACAST_DEVICE_STATUS_DEVICE_ERROR = 0x80000003 ,
D3DKMT_MIRACAST_DEVICE_STATUS_UNKOWN_PAIRING = 0x80000004 ,
D3DKMT_MIRACAST_DEVICE_STATUS_REMOTE_SESSION = 0x80000005 ,
D3DKMT_MIRACAST_DEVICE_STATUS_DEVICE_NOT_FOUND = 0x80000006 ,
D3DKMT_MIRACAST_DEVICE_STATUS_DEVICE_NOT_STARTED = 0x80000007 ,
D3DKMT_MIRACAST_DEVICE_STATUS_INVALID_PARAMETER = 0x80000008 ,
D3DKMT_MIRACAST_DEVICE_STATUS_INSUFFICIENT_BANDWIDTH = 0x80000009 ,
D3DKMT_MIRACAST_DEVICE_STATUS_INSUFFICIENT_MEMORY = 0x8000000A ,
D3DKMT_MIRACAST_DEVICE_STATUS_CANCELLED = 0x8000000B ,
} D3DKMT_MIRACAST_DEVICE_STATUS ;
typedef struct _D3DKMT_MIRACAST_DISPLAY_DEVICE_STATUS
{
//
// Miracast display device state.
//
D3DKMT_MIRACAST_DISPLAY_DEVICE_STATE State ;
} D3DKMT_MIRACAST_DISPLAY_DEVICE_STATUS , * PD3DKMT_MIRACAST_DISPLAY_DEVICE_STATUS ;
typedef struct _D3DKMT_MIRACAST_DISPLAY_DEVICE_CAPS
{
BOOLEAN HdcpSupported ;
ULONG DefaultControlPort ;
BOOLEAN UsesIhvSolution ;
} D3DKMT_MIRACAST_DISPLAY_DEVICE_CAPS , * PD3DKMT_MIRACAST_DISPLAY_DEVICE_CAPS ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef struct _D3DKMT_MIRACAST_DISPLAY_STOP_SESSIONS
{
LUID AdapterLuid ;
D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId ;
UINT StopReason ;
} D3DKMT_MIRACAST_DISPLAY_STOP_SESSIONS , * PD3DKMT_MIRACAST_DISPLAY_STOP_SESSIONS ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef struct _D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU
{
D3DKMT_HANDLE hDevice ; // in: Handle to the device.
UINT ObjectCount ; // in: Number of objects to wait on.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const D3DKMT_HANDLE * , ObjectHandleArray ) ; // in: Handle to monitored fence synchronization objects to wait on.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const UINT64 * , FenceValueArray ) ; // in: Fence values to be waited on.
D3DKMT_PTR ( HANDLE , hAsyncEvent ) ; // in: Event to be signaled when the wait condition is satisfied.
// When set to NULL, the call will not return until the wait condition is satisfied.
D3DDDI_WAITFORSYNCHRONIZATIONOBJECTFROMCPU_FLAGS Flags ; // in: Flags that specify the wait mode.
} D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU ;
typedef struct _D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMCPU
{
D3DKMT_HANDLE hDevice ; // in: Handle to the device.
UINT ObjectCount ; // in: Number of objects to signal.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const D3DKMT_HANDLE * , ObjectHandleArray ) ; // in: Handle to monitored fence synchronization objects to signal.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const UINT64 * , FenceValueArray ) ; // in: Fence values to be signaled.
D3DDDICB_SIGNALFLAGS Flags ; // in: Specifies signal behavior.
} D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMCPU ;
typedef struct _D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU
{
D3DKMT_HANDLE hContext ; // in: Specify the context that should be waiting.
UINT ObjectCount ; // in: Number of object to wait on.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const D3DKMT_HANDLE * , ObjectHandleArray ) ; // in: Handles to synchronization objects to wait on.
union
{
_Field_size_ ( ObjectCount )
const UINT64 * MonitoredFenceValueArray ; // in: monitored fence values to be waited.
D3DKMT_ALIGN64 UINT64 FenceValue ; // in: fence value to be waited.
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
} ;
} D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU ;
typedef struct _D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU
{
D3DKMT_HANDLE hContext ; // in: Identifies the context that the signal is being submitted to.
UINT ObjectCount ; // in: Specifies the number of objects to signal.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const D3DKMT_HANDLE * , ObjectHandleArray ) ; // in: Specifies the objects to signal.
union
{
_Field_size_ ( ObjectCount )
const UINT64 * MonitoredFenceValueArray ; // in: monitored fence values to be signaled
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
} ;
} D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU ;
typedef struct _D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU2
{
UINT ObjectCount ; // in: Specifies the number of objects to signal.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const D3DKMT_HANDLE * , ObjectHandleArray ) ; // in: Specifies the objects to signal.
D3DDDICB_SIGNALFLAGS Flags ; // in: Specifies signal behavior.
ULONG BroadcastContextCount ; // in: Specifies the number of contexts to broadcast this signal to.
D3DKMT_PTR ( _Field_size_ ( BroadcastContextCount )
const D3DKMT_HANDLE * , BroadcastContextArray ) ; // in: Specifies context handles to broadcast to.
union
{
D3DKMT_ALIGN64 UINT64 FenceValue ; // in: fence value to be signaled;
HANDLE CpuEventHandle ; // in: handle of a CPU event to be signaled if Flags.EnqueueCpuEvent flag is set.
_Field_size_ ( ObjectCount )
const UINT64 * MonitoredFenceValueArray ; // in: monitored fence values to be signaled
D3DKMT_ALIGN64 UINT64 Reserved [ 8 ] ;
} ;
} D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU2 ;
typedef struct _D3DKMT_CREATEPAGINGQUEUE
{
D3DKMT_HANDLE hDevice ; // in: Handle to the device.
D3DDDI_PAGINGQUEUE_PRIORITY Priority ; // in: scheduling priority relative to other paging queues on this device
D3DKMT_HANDLE hPagingQueue ; // out: handle to the paging queue used to synchronize paging operations for this device.
D3DKMT_HANDLE hSyncObject ; // out: handle to the monitored fence object used to synchronize paging operations for this paging queue.
D3DKMT_PTR ( VOID * , FenceValueCPUVirtualAddress ) ; // out: Read-only mapping of the fence value for the CPU
UINT PhysicalAdapterIndex ; // in: Physical adapter index (engine ordinal)
} D3DKMT_CREATEPAGINGQUEUE ;
2017-06-16 18:38:08 +00:00
2024-10-17 07:26:01 +00:00
typedef struct _D3DKMT_EVICT
2017-06-16 18:38:08 +00:00
{
2024-10-17 07:26:01 +00:00
D3DKMT_HANDLE hDevice ; // in: Device that created the allocations
UINT NumAllocations ; // in: number of allocation handles
D3DKMT_PTR ( CONST D3DKMT_HANDLE * , AllocationList ) ; // in: an array of NumAllocations allocation handles
D3DDDI_EVICT_FLAGS Flags ; // in: eviction flags
D3DKMT_ALIGN64 UINT64 NumBytesToTrim ; // out: This value indicates how much to trim in order to satisfy the new budget.
} D3DKMT_EVICT ;
typedef struct _D3DKMT_LOCK2
{
D3DKMT_HANDLE hDevice ; // in: Handle to the device.
D3DKMT_HANDLE hAllocation ; // in: allocation to lock
D3DDDICB_LOCK2FLAGS Flags ; // in: Bit field defined by D3DDDI_LOCK2FLAGS
D3DKMT_PTR ( PVOID , pData ) ; // out: Virtual address of the locked allocation
} D3DKMT_LOCK2 ;
typedef struct _D3DKMT_UNLOCK2
{
D3DKMT_HANDLE hDevice ; // in: Handle to the device.
D3DKMT_HANDLE hAllocation ; // in: allocation to unlock
} D3DKMT_UNLOCK2 ;
typedef struct _D3DKMT_INVALIDATECACHE
{
D3DKMT_HANDLE hDevice ;
D3DKMT_HANDLE hAllocation ;
D3DKMT_ALIGN64 D3DKMT_SIZE_T Offset ;
D3DKMT_ALIGN64 D3DKMT_SIZE_T Length ;
} D3DKMT_INVALIDATECACHE ;
typedef struct _D3DKMT_FREEGPUVIRTUALADDRESS
{
D3DKMT_HANDLE hAdapter ; // in: Handle to an adapter.
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS BaseAddress ; // in: Start of a virtual address range in bytes
D3DKMT_ALIGN64 D3DGPU_SIZE_T Size ; // in: Size of the virtual address range in bytes
} D3DKMT_FREEGPUVIRTUALADDRESS ;
typedef struct _D3DKMT_UPDATEGPUVIRTUALADDRESS
{
D3DKMT_HANDLE hDevice ;
D3DKMT_HANDLE hContext ;
D3DKMT_HANDLE hFenceObject ;
UINT NumOperations ;
D3DKMT_PTR ( D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION * , Operations ) ;
D3DKMT_ALIGN64 D3DKMT_SIZE_T Reserved0 ;
D3DKMT_ALIGN64 UINT64 Reserved1 ;
D3DKMT_ALIGN64 UINT64 FenceValue ;
union
{
struct
{
UINT DoNotWait : 1 ;
UINT Reserved : 31 ;
} ;
UINT Value ;
} Flags ;
} D3DKMT_UPDATEGPUVIRTUALADDRESS ;
typedef struct _D3DKMT_CREATECONTEXTVIRTUAL
{
D3DKMT_HANDLE hDevice ; // in:
UINT NodeOrdinal ; // in:
UINT EngineAffinity ; // in:
D3DDDI_CREATECONTEXTFLAGS Flags ; // in:
D3DKMT_PTR ( VOID * , pPrivateDriverData ) ; // in:
UINT PrivateDriverDataSize ; // in:
D3DKMT_CLIENTHINT ClientHint ; // in: Hints which client is creating the context
D3DKMT_HANDLE hContext ; // out:
} D3DKMT_CREATECONTEXTVIRTUAL ;
typedef struct _D3DKMT_SUBMITCOMMANDFLAGS
{
UINT NullRendering : 1 ; // 0x00000001
UINT PresentRedirected : 1 ; // 0x00000002
UINT NoKmdAccess : 1 ; // 0x00000004
UINT Reserved : 29 ; // 0xFFFFFFF8
} D3DKMT_SUBMITCOMMANDFLAGS ;
typedef struct _D3DKMT_SUBMITCOMMAND
{
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS Commands ;
UINT CommandLength ;
D3DKMT_SUBMITCOMMANDFLAGS Flags ;
D3DKMT_ALIGN64 ULONGLONG PresentHistoryToken ; // in: Present history token for redirected present calls
UINT BroadcastContextCount ;
D3DKMT_HANDLE BroadcastContext [ D3DDDI_MAX_BROADCAST_CONTEXT ] ;
D3DKMT_PTR ( VOID * , pPrivateDriverData ) ;
UINT PrivateDriverDataSize ;
UINT NumPrimaries ;
D3DKMT_HANDLE WrittenPrimaries [ D3DDDI_MAX_WRITTEN_PRIMARIES ] ;
UINT NumHistoryBuffers ;
D3DKMT_PTR ( D3DKMT_HANDLE * , HistoryBufferArray ) ;
} D3DKMT_SUBMITCOMMAND ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
typedef struct _D3DKMT_SUBMITCOMMANDTOHWQUEUE
{
D3DKMT_HANDLE hHwQueue ; // in: Context queue to submit the command to.
D3DKMT_ALIGN64 UINT64 HwQueueProgressFenceId ; // in: Hardware queue progress fence value that will be signaled once the command is finished.
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS CommandBuffer ; // in: GPU VA of the command buffer to be executed on the GPU.
UINT CommandLength ; // in: Length in bytes of the command buffer.
UINT PrivateDriverDataSize ; // in: Size of private driver data in bytes.
D3DKMT_PTR ( _Field_size_bytes_ ( PrivateDriverDataSize )
VOID * , pPrivateDriverData ) ; // in: Pointer to the private driver data.
UINT NumPrimaries ; // in: The number of primaries written by this command buffer.
D3DKMT_PTR ( _Field_size_ ( NumPrimaries )
D3DKMT_HANDLE CONST * , WrittenPrimaries ) ; // in: The array of primaries written by this command buffer.
} D3DKMT_SUBMITCOMMANDTOHWQUEUE ;
typedef struct _D3DKMT_SUBMITWAITFORSYNCOBJECTSTOHWQUEUE
{
D3DKMT_HANDLE hHwQueue ; // in: Context queue to submit the command to.
UINT ObjectCount ; // in: Number of objects to wait on.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const D3DKMT_HANDLE * , ObjectHandleArray ) ; // in: Handles to monitored fence synchronization objects to wait on.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const UINT64 * , FenceValueArray ) ; // in: monitored fence values to be waited.
} D3DKMT_SUBMITWAITFORSYNCOBJECTSTOHWQUEUE ;
typedef struct _D3DKMT_SUBMITSIGNALSYNCOBJECTSTOHWQUEUE
{
D3DDDICB_SIGNALFLAGS Flags ; // in: Specifies signal behavior.
ULONG BroadcastHwQueueCount ; // in: Specifies the number of hardware queues to broadcast this signal to.
D3DKMT_PTR ( _Field_size_ ( BroadcastHwQueueCount )
const D3DKMT_HANDLE * , BroadcastHwQueueArray ) ; // in: Specifies hardware queue handles to broadcast to.
UINT ObjectCount ; // in: Number of objects to signal.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const D3DKMT_HANDLE * , ObjectHandleArray ) ; // in: Handles to monitored fence synchronization objects to signal.
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
const UINT64 * , FenceValueArray ) ; // in: monitored fence values to signal.
} D3DKMT_SUBMITSIGNALSYNCOBJECTSTOHWQUEUE ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
typedef struct _D3DKMT_QUERYVIDEOMEMORYINFO
{
D3DKMT_PTR ( HANDLE , hProcess ) ; // in,opt: A handle to a process. If NULL, the current process is used.
// The process handle must be opened with PROCESS_QUERY_INFORMATION privileges
D3DKMT_HANDLE hAdapter ; // in : The adapter to query for this process
D3DKMT_MEMORY_SEGMENT_GROUP MemorySegmentGroup ; // in : The memory segment group to query.
D3DKMT_ALIGN64 UINT64 Budget ; // out: Total memory the application may use
D3DKMT_ALIGN64 UINT64 CurrentUsage ; // out: Current memory usage of the device
D3DKMT_ALIGN64 UINT64 CurrentReservation ; // out: Current reservation of the device
D3DKMT_ALIGN64 UINT64 AvailableForReservation ; // out: Total that the device may reserve
UINT PhysicalAdapterIndex ; // in : Zero based physical adapter index in the LDA configuration.
} D3DKMT_QUERYVIDEOMEMORYINFO ;
typedef struct _D3DKMT_CHANGEVIDEOMMEMORYRESERVATION
{
D3DKMT_PTR ( HANDLE , hProcess ) ; // in,opt: A handle to a process. If NULL, the current process is used.
// The process handle must be opened with PROCESS_SET_INFORMATION privileges
D3DKMT_HANDLE hAdapter ; // in : The adapter to change reservation for.
D3DKMT_MEMORY_SEGMENT_GROUP MemorySegmentGroup ; // in : The memory segment group to change reservation for.
D3DKMT_ALIGN64 UINT64 Reservation ; // in : Desired reservation in the range between 0 and AvailableForReservation returned by QueryVideoMemoryInfo.
UINT PhysicalAdapterIndex ; // in : Zero based physical adapter index in the LDA configuration.
} D3DKMT_CHANGEVIDEOMEMORYRESERVATION ;
typedef struct _D3DKMT_SETSTABLEPOWERSTATE
{
D3DKMT_HANDLE hAdapter ; // in: The adapter to enable or disable stable power for
BOOL Enabled ; // in: Whether or not stable power is being requested on or off.
} D3DKMT_SETSTABLEPOWERSTATE ;
// Used by Linux ioctl
typedef struct _D3DKMT_SHAREOBJECTS {
UINT ObjectCount ; // in
D3DKMT_PTR ( _Field_size_ ( ObjectCount )
CONST D3DKMT_HANDLE * , ObjectHandleArray ) ; // in
D3DKMT_PTR ( PVOID , pObjectAttributes ) ; // in
DWORD DesiredAccess ; // in
D3DKMT_PTR ( HANDLE * , pSharedNtHandle ) ; // out
} D3DKMT_SHAREOBJECTS ;
typedef struct _D3DKMT_SHAREOBJECTWITHHOST
{
D3DKMT_HANDLE hDevice ; // in
D3DKMT_HANDLE hObject ; // in
D3DKMT_ALIGN64 UINT64 Reserved ; // in Must be zero. Reserved for future use
D3DKMT_ALIGN64 UINT64 hVailProcessNtHandle ; // out
} D3DKMT_SHAREOBJECTWITHHOST ;
//
// This API is used to support sync_file in Android.
// A sync_file is a wrapper around the given monitored fence and the fence value.
// When a sync_file is created, a wait for sync object on CPU is issued
// and a file descriptor (FD) it returned to the app. The app can wait on the FD,
// which will be unblocked when the sync object with this fence value is signaled.
//
typedef struct _D3DKMT_CREATESYNCFILE
{
D3DKMT_HANDLE hDevice ; // in: Device owner of the monitored fence.
D3DKMT_HANDLE hMonitoredFence ; // in: Monitored fence object
D3DKMT_ALIGN64 UINT64 FenceValue ; // in: Fence value to wait for
D3DKMT_ALIGN64 UINT64 hSyncFile ; // out: File descriptor on Android or a NT handle on Windows (when implemented)
} D3DKMT_CREATESYNCFILE ;
typedef struct _D3DKMT_TRIMNOTIFICATION
{
D3DKMT_PTR ( VOID * , Context ) ; // In: context at Register
D3DDDI_TRIMRESIDENCYSET_FLAGS Flags ; // In: trim flags
D3DKMT_ALIGN64 UINT64 NumBytesToTrim ; // In: When TrimToBudget flag is set, this value indicates how much VidMm
// requests the app to trim to fit in the new budget.
} D3DKMT_TRIMNOTIFICATION ;
typedef VOID ( APIENTRY * PFND3DKMT_TRIMNOTIFICATIONCALLBACK ) ( _Inout_ D3DKMT_TRIMNOTIFICATION * ) ;
typedef struct _D3DKMT_REGISTERTRIMNOTIFICATION
{
LUID AdapterLuid ;
D3DKMT_HANDLE hDevice ;
PFND3DKMT_TRIMNOTIFICATIONCALLBACK Callback ;
D3DKMT_PTR ( VOID * , Context ) ; // In: callback context
D3DKMT_PTR ( VOID * , Handle ) ; // Out: for Unregister
} D3DKMT_REGISTERTRIMNOTIFICATION ;
typedef struct _D3DKMT_UNREGISTERTRIMNOTIFICATION
{
D3DKMT_PTR ( VOID * , Handle ) ; // In: Handle returned from RegisterTrimNotification,
// or NULL to unregister all Callback instances.
D3DKMT_PTR ( PFND3DKMT_TRIMNOTIFICATIONCALLBACK , Callback ) ; // In: When Handle is NULL, this parameter specifies that all registered instances of Callback
// should be unregistered. This unregistration method should only be used
// in DLL unload scenarios when the DLL being unloaded cannot guarantee that
// all trim callbacks are unregistered through their handles.
} D3DKMT_UNREGISTERTRIMNOTIFICATION ;
typedef struct _D3DKMT_BUDGETCHANGENOTIFICATION
{
D3DKMT_PTR ( VOID * , Context ) ; // In: context at Register
D3DKMT_ALIGN64 UINT64 Budget ; // In: new budget
} D3DKMT_BUDGETCHANGENOTIFICATION ;
typedef VOID ( APIENTRY * PFND3DKMT_BUDGETCHANGENOTIFICATIONCALLBACK ) ( _In_ D3DKMT_BUDGETCHANGENOTIFICATION * ) ;
typedef struct _D3DKMT_REGISTERBUDGETCHANGENOTIFICATION
{
D3DKMT_HANDLE hDevice ;
D3DKMT_PTR ( PFND3DKMT_BUDGETCHANGENOTIFICATIONCALLBACK , Callback ) ;
D3DKMT_PTR ( VOID * , Context ) ; // In: callback context
D3DKMT_PTR ( VOID * , Handle ) ; // Out: for Unregister
} D3DKMT_REGISTERBUDGETCHANGENOTIFICATION ;
typedef struct _D3DKMT_UNREGISTERBUDGETCHANGENOTIFICATION
{
D3DKMT_PTR ( VOID * , Handle ) ; // In: from register
} D3DKMT_UNREGISTERBUDGETCHANGENOTIFICATION ;
typedef struct _D3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP
{
D3DKMT_PTR ( HANDLE , hProcess ) ; // In: Process handle
D3DKMT_PTR ( HWND , hWindow ) ; // In: Window handle
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ; // Out: VidPn source ID
LUID AdapterLuid ; // Out: Adapter LUID
D3DKMT_VIDPNSOURCEOWNER_TYPE OwnerType ; // Out: Owner Type
} D3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP ;
typedef enum _D3DKMT_DEVICE_ERROR_REASON {
D3DKMT_DEVICE_ERROR_REASON_GENERIC = 0x80000000 ,
D3DKMT_DEVICE_ERROR_REASON_DRIVER_ERROR = 0x80000006 ,
} D3DKMT_DEVICE_ERROR_REASON ;
typedef struct _D3DKMT_MARKDEVICEASERROR
{
D3DKMT_HANDLE hDevice ; // in: Device handle
D3DKMT_DEVICE_ERROR_REASON Reason ; // in: Status code
} D3DKMT_MARKDEVICEASERROR ;
typedef struct _D3DKMT_FLUSHHEAPTRANSITIONS
{
D3DKMT_HANDLE hAdapter ;
} D3DKMT_FLUSHHEAPTRANSITIONS ;
typedef struct _D3DKMT_QUERYPROCESSOFFERINFO
{
_In_ ULONG cbSize ;
D3DKMT_PTR ( _In_ HANDLE , hProcess ) ;
_Out_ D3DKMT_ALIGN64 UINT64 DecommitUniqueness ;
_Out_ D3DKMT_ALIGN64 UINT64 DecommittableBytes ;
} D3DKMT_QUERYPROCESSOFFERINFO ;
typedef union _D3DKMT_TRIMPROCESSCOMMITMENT_FLAGS
{
struct
{
UINT Lazy : 1 ;
UINT OnlyRepurposed : 1 ;
UINT Reserved : 30 ;
} ;
UINT Value ;
} D3DKMT_TRIMPROCESSCOMMITMENT_FLAGS ;
typedef struct _D3DKMT_TRIMPROCESSCOMMITMENT
{
_In_ ULONG cbSize ;
D3DKMT_PTR ( _In_ HANDLE , hProcess ) ;
_In_ D3DKMT_TRIMPROCESSCOMMITMENT_FLAGS Flags ;
_In_ D3DKMT_ALIGN64 UINT64 DecommitRequested ;
_Out_ D3DKMT_ALIGN64 UINT64 NumBytesDecommitted ;
} D3DKMT_TRIMPROCESSCOMMITMENT ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
typedef struct _D3DKMT_CREATEHWCONTEXT
{
D3DKMT_HANDLE hDevice ; // in: Handle to the device owning this context.
UINT NodeOrdinal ; // in: Identifier for the node targetted by this context.
UINT EngineAffinity ; // in: Engine affinity within the specified node.
D3DDDI_CREATEHWCONTEXTFLAGS Flags ; // in: Context creation flags.
UINT PrivateDriverDataSize ; // in: Size of private driver data
D3DKMT_PTR ( _Inout_
_Field_size_bytes_ ( PrivateDriverDataSize )
VOID * , pPrivateDriverData ) ; // in/out: Private driver data
D3DKMT_HANDLE hHwContext ; // out: Handle of the created context.
} D3DKMT_CREATEHWCONTEXT ;
typedef struct _D3DKMT_DESTROYHWCONTEXT
{
D3DKMT_HANDLE hHwContext ; // in: Identifies the context being destroyed.
} D3DKMT_DESTROYHWCONTEXT ;
typedef struct _D3DKMT_CREATEHWQUEUE
{
D3DKMT_HANDLE hHwContext ; // in: Handle to the hardware context the queue is associated with.
D3DDDI_CREATEHWQUEUEFLAGS Flags ; // in: Hardware queue creation flags.
UINT PrivateDriverDataSize ; // in: Size of private driver data
D3DKMT_PTR ( _Inout_
_Field_size_bytes_ ( PrivateDriverDataSize )
VOID * , pPrivateDriverData ) ; // in/out: Private driver data
D3DKMT_HANDLE hHwQueue ; // out: handle to the hardware queue object to submit work to.
D3DKMT_HANDLE hHwQueueProgressFence ; // out: handle to the monitored fence object used to monitor the queue progress.
D3DKMT_PTR ( VOID * , HwQueueProgressFenceCPUVirtualAddress ) ; // out: Read-only mapping of the queue progress fence value for the CPU
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS HwQueueProgressFenceGPUVirtualAddress ; // out: Read/write mapping of the queue progress fence value for the GPU
} D3DKMT_CREATEHWQUEUE ;
typedef struct _D3DKMT_DESTROYHWQUEUE
{
D3DKMT_HANDLE hHwQueue ; // in: handle to the hardware queue to be destroyed.
} D3DKMT_DESTROYHWQUEUE ;
typedef struct _D3DKMT_GETALLOCATIONPRIORITY
{
D3DKMT_HANDLE hDevice ; // in: Indentifies the device
D3DKMT_HANDLE hResource ; // in: Specify the resource to get priority of.
D3DKMT_PTR ( CONST D3DKMT_HANDLE * , phAllocationList ) ; // in: pointer to an array allocation to get priorities of.
UINT AllocationCount ; // in: Number of allocations in phAllocationList
D3DKMT_PTR ( UINT * , pPriorities ) ; // out: Priority for each of the allocation in the array.
} D3DKMT_GETALLOCATIONPRIORITY ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
typedef union _D3DKMT_SETFSEBLOCKFLAGS
{
struct
{
UINT Block : 1 ;
UINT Reserved : 31 ;
} ;
UINT Value ;
} D3DKMT_SETFSEBLOCKFLAGS ;
typedef struct _D3DKMT_SETFSEBLOCK
{
LUID AdapterLuid ;
D3DKMT_HANDLE hAdapter ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
D3DKMT_SETFSEBLOCKFLAGS Flags ;
} D3DKMT_SETFSEBLOCK ;
typedef union _D3DKMT_QUERYFSEFLAGS
{
struct
{
UINT Blocked : 1 ;
UINT Reserved : 31 ;
} ;
UINT Value ;
} D3DKMT_QUERYFSEBLOCKFLAGS ;
typedef struct _D3DKMT_QUERYFSEBLOCK
{
LUID AdapterLuid ;
D3DKMT_HANDLE hAdapter ;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId ;
D3DKMT_QUERYFSEBLOCKFLAGS Flags ;
} D3DKMT_QUERYFSEBLOCK ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
typedef struct _D3DKMT_CREATEPROTECTEDSESSION
{
D3DKMT_HANDLE hDevice ; // in: device handle
D3DKMT_HANDLE hSyncObject ; // in: monitored fence handle associated to this session (kernel handle)
D3DKMT_PTR ( _Field_size_bytes_ ( PrivateDriverDataSize )
CONST VOID * , pPrivateDriverData ) ; // in: Private driver data
UINT PrivateDriverDataSize ; // in: Size of private runtime data
D3DKMT_PTR ( _Field_size_bytes_ ( PrivateRuntimeDataSize )
CONST VOID * , pPrivateRuntimeData ) ; // in: Private runtime data
UINT PrivateRuntimeDataSize ; // in: Size of private runtime data
D3DKMT_HANDLE hHandle ; // out: protected session handle (kernel handle)
} D3DKMT_CREATEPROTECTEDSESSION ;
typedef struct _D3DKMT_DESTROYPROTECTEDSESSION
{
D3DKMT_HANDLE hHandle ; // in: protected session handle (kernel handle)
} D3DKMT_DESTROYPROTECTEDSESSION ;
typedef enum _D3DKMT_PROTECTED_SESSION_STATUS
{
D3DKMT_PROTECTED_SESSION_STATUS_OK = 0 ,
D3DKMT_PROTECTED_SESSION_STATUS_INVALID = 1 ,
} D3DKMT_PROTECTED_SESSION_STATUS ;
typedef struct _D3DKMT_QUERYPROTECTEDSESSIONSTATUS
{
D3DKMT_HANDLE hHandle ; // in: protected session handle (kernel handle)
D3DKMT_PROTECTED_SESSION_STATUS Status ; // out: protected session status
} D3DKMT_QUERYPROTECTEDSESSIONSTATUS ;
typedef struct _D3DKMT_QUERYPROTECTEDSESSIONINFOFROMNTHANDLE
{
D3DKMT_PTR ( HANDLE , hNtHandle ) ; // in: protected session handle (NT handle)
D3DKMT_PTR ( _Field_size_bytes_ ( PrivateDriverDataSize )
CONST VOID * , pPrivateDriverData ) ; // in: Private driver data
UINT PrivateDriverDataSize ; // in/out: Size of private runtime data
D3DKMT_PTR ( _Field_size_bytes_ ( PrivateRuntimeDataSize )
CONST VOID * , pPrivateRuntimeData ) ; // in: Private runtime data
UINT PrivateRuntimeDataSize ; // in/out: Size of private runtime data
} D3DKMT_QUERYPROTECTEDSESSIONINFOFROMNTHANDLE ;
typedef struct _D3DKMT_OPENPROTECTEDSESSIONFROMNTHANDLE
{
D3DKMT_PTR ( HANDLE , hNtHandle ) ; // in: protected session handle (NT handle)
D3DKMT_HANDLE hHandle ; // out: protected session handle (kernel handle)
} D3DKMT_OPENPROTECTEDSESSIONFROMNTHANDLE ;
typedef struct _D3DKMT_GETPROCESSDEVICEREMOVALSUPPORT
{
D3DKMT_PTR ( HANDLE , hProcess ) ; // in: Process handle
LUID AdapterLuid ; // in: Luid of Adapter that is potentially being detached
BOOLEAN Support ; // out: Whether or not the process using the adapter can recover from graphics device removal
} D3DKMT_GETPROCESSDEVICEREMOVALSUPPORT ;
# endif // (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
// All tracked workload functionality is accessible just by the D3D11 and D3D12 runtimes
typedef enum _D3DKMT_TRACKEDWORKLOADPOLICY
{
D3DKMT_TRACKEDWORKLOADPOLICY_NORMAL = 0 ,
D3DKMT_TRACKEDWORKLOADPOLICY_ENERGY_EFFICIENT = 1 ,
D3DKMT_TRACKEDWORKLOADPOLICY_HIGH_SPEED = 2
} D3DKMT_TRACKEDWORKLOADPOLICY ;
typedef enum _D3DKMT_TRACKEDWORKLOADDEADLINETYPE
{
D3DKMT_TRACKEDWORKLOADDEADLINETYPE_ABSOLUTE = 0 ,
D3DKMT_TRACKEDWORKLOADDEADLINETYPE_VBLANK = 1 ,
} D3DKMT_TRACKEDWORKLOADDEADLINETYPE ;
typedef struct _D3DKMT_TRACKEDWORKLOADDEADLINE {
union {
D3DKMT_ALIGN64 UINT64 VBlankOffsetHundredsNS ;
D3DKMT_ALIGN64 UINT64 AbsoluteQPC ;
} ;
} D3DKMT_TRACKEDWORKLOADDEADLINE ;
typedef struct _D3DKMT_TRACKEDWORKLOADFLAGS
{
union
{
struct
{
UINT Periodic : 1 ; // 0x00000001 - workload instances occur at a periodic rate
UINT SimilarLoad : 1 ; // 0x00000002 - workload instances have a similar load
UINT Reserved : 30 ;
} ;
UINT Value ;
} ;
} D3DKMT_TRACKEDWORKLOADFLAGS ;
# define D3DKMT_MAX_TRACKED_WORKLOAD_INSTANCE_PAIRS 32
typedef struct _D3DKMT_CREATETRACKEDWORKLOAD
{
ULONG cbSize ; // in: size of structure for versioning
ULONG ContextCount ; // in: Specifies the number of contexts to create the workload
D3DKMT_PTR ( _Field_size_ ( ContextCount )
const D3DKMT_HANDLE * , ContextArray ) ; // in: Specifies context handles in which to create the workload
D3DKMT_TRACKEDWORKLOADDEADLINETYPE DeadlineType ; // in: Specifies the deadline type of the tracked workload
UINT32 VidPnTargetId ; // in: Specifies the target ID. Needed for VBLANK DEADLINETYPE
D3DKMT_TRACKEDWORKLOADFLAGS Flags ; // in: Flags to create the workload with
D3DKMT_TRACKEDWORKLOADPOLICY Policy ; // in: Which policy to use
UINT MaxInstances ; // in: maximum number of instances this workload can have
UINT MaxInstancePairs ; // in: maximum number of instance pairs this workload can have (includes suspend/resume)
D3DKMT_HANDLE hResourceQueryTimestamps ; // in: buffer which will contain the resolved query timestamps for the tracked workloads
D3DKMT_HANDLE hTrackedWorkload ; // out: the tracked workload handle
} D3DKMT_CREATETRACKEDWORKLOAD ;
typedef struct _D3DKMT_DESTROYTRACKEDWORKLOAD
{
ULONG cbSize ; // in: size of structure for versioning
D3DKMT_HANDLE hTrackedWorkload ; // in: tracked workload handle
} D3DKMT_DESTROYTRACKEDWORKLOAD ;
typedef struct _D3DKMT_UPDATETRACKEDWORKLOAD
{
ULONG cbSize ; // in: size of structure for versioning
D3DKMT_HANDLE hTrackedWorkload ; // in: tracked workload handle
D3DKMT_TRACKEDWORKLOADDEADLINE FinishDeadline ; // in: specifies the deadline by which this workload should be finished
UINT BeginTrackedWorkloadIndex ; // in: slot for the timestamp for the start of this workload pair (index in buffer pointed to by hResourceQueryTimestamps)
UINT EndTrackedWorkloadIndex ; // in: slot for the timestamp for the end of this workload pair (index in buffer pointed to by hResourceQueryTimestamps)
BOOL Resume ; // in: TRUE if the start of this workload pair is a Resume instead of a Begin
BOOL Suspend ; // in: TRUE if the end of this workload pair is a Suspend instead of an End
D3DKMT_ALIGN64 UINT64 PairID ; // in: identifier for the Begin/End tracked workload pair (should include any suspend/resume in the pair)
D3DKMT_ALIGN64 UINT64 FenceSubmissionValue ; // in: fence value for the submission of this workload
D3DKMT_ALIGN64 UINT64 FenceCompletedValue ; // in: fence value for the completed workloads
D3DKMT_ALIGN64 UINT64 GPUTimestampFrequency ; // in: GPU timestamp frequency for resolving query timestamps
D3DKMT_ALIGN64 UINT64 GPUCalibrationTimestamp ; // in: value of the GPU calibration timestamp counter
D3DKMT_ALIGN64 UINT64 CPUCalibrationTimestamp ; // in: value of the CPU calibration timestamp counter
D3DKMT_ALIGN64 UINT64 TimestampArray [ D3DKMT_MAX_TRACKED_WORKLOAD_INSTANCE_PAIRS * 2 ] ; // in: specifies the already read timestamp data (D3D11 only)
BOOL TimestampArrayProcessed ; // out: TRUE if the timestamp array entries were processed (D3D11 only)
} D3DKMT_UPDATETRACKEDWORKLOAD ;
typedef struct _D3DKMT_GETAVAILABLETRACKEDWORKLOADINDEX
{
ULONG cbSize ; // in: size of structure for versioning
D3DKMT_HANDLE hTrackedWorkload ; // in: tracked workload handle
D3DKMT_ALIGN64 UINT64 FenceCompletedValue ; // in: fence value for the completed workloads
D3DKMT_ALIGN64 UINT64 TimestampArray [ D3DKMT_MAX_TRACKED_WORKLOAD_INSTANCE_PAIRS * 2 ] ; // in: specifies the already read timestamp data (D3D11 only)
UINT AvailableTrackedWorkloadIndex ; // out: first available tracked workload slot
BOOL TimestampArrayProcessed ; // out: TRUE if the timestamp array entries were processed (D3D11 only)
} D3DKMT_GETAVAILABLETRACKEDWORKLOADINDEX ;
typedef struct _D3DKMT_TRACKEDWORKLOADSTATEFLAGS
{
union
{
struct
{
UINT Saturated : 1 ; // 0x00000001 - in the current state of execution, tracked workload cannot meet its deadline.
UINT NotEnoughSamples : 1 ; // 0x00000002 - we don't have enough samples to produce stats yet
UINT Reserved : 30 ;
} ;
UINT Value ;
} ;
} D3DKMT_TRACKEDWORKLOADSTATEFLAGS ;
typedef struct _D3DKMT_TRACKEDWORKLOAD_STATISTICS
{
D3DKMT_ALIGN64 INT64 Mean ;
D3DKMT_ALIGN64 INT64 Minimum ;
D3DKMT_ALIGN64 INT64 Maximum ;
D3DKMT_ALIGN64 INT64 Variance ;
D3DKMT_ALIGN64 UINT64 Count ;
} D3DKMT_TRACKEDWORKLOAD_STATISTICS ;
typedef struct _D3DKMT_GETTRACKEDWORKLOADSTATISTICS
{
ULONG cbSize ; // in: size of structure for versioning
D3DKMT_HANDLE hTrackedWorkload ; // in: tracked workload handle
D3DKMT_ALIGN64 UINT64 FenceCompletedValue ; // in: fence value for the completed workloads
D3DKMT_ALIGN64 UINT64 TimestampArray [ D3DKMT_MAX_TRACKED_WORKLOAD_INSTANCE_PAIRS * 2 ] ; // in: specifies the already read timestamp data (D3D11 only)
BOOL TimestampArrayProcessed ; // out: TRUE if the timestamp array entries were processed (D3D11 only)
D3DKMT_TRACKEDWORKLOAD_STATISTICS DeadlineOffsetHundredsNS ; // out: statistics for the offset of the deadline achieved of the tracked workload in hundreds of nanosecs
D3DKMT_ALIGN64 UINT64 MissedDeadlines ; // out: count of missed deadlines
D3DKMT_TRACKEDWORKLOADSTATEFLAGS Flags ; // out: current state flags
} D3DKMT_GETTRACKEDWORKLOADSTATISTICS ;
typedef struct _D3DKMT_RESETTRACKEDWORKLOADSTATISTICS
{
ULONG cbSize ; // in: size of structure for versioning
D3DKMT_HANDLE hTrackedWorkload ; // in: tracked workload handle
} D3DKMT_RESETTRACKEDWORKLOADSTATISTICS ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_7
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEALLOCATION ) ( _Inout_ D3DKMT_CREATEALLOCATION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEALLOCATION2 ) ( _Inout_ D3DKMT_CREATEALLOCATION * ) ; // _ADVSCH_
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYRESOURCEINFO ) ( _Inout_ D3DKMT_QUERYRESOURCEINFO * ) ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYRESOURCEINFOFROMNTHANDLE ) ( _Inout_ D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SHAREOBJECTS ) (
_In_range_ ( 1 , D3DKMT_MAX_OBJECTS_PER_HANDLE ) UINT cObjects ,
_In_reads_ ( cObjects ) CONST D3DKMT_HANDLE * hObjects ,
_In_ POBJECT_ATTRIBUTES pObjectAttributes ,
_In_ DWORD dwDesiredAccess ,
_Out_ HANDLE * phSharedNtHandle
) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENNTHANDLEFROMNAME ) ( _Inout_ D3DKMT_OPENNTHANDLEFROMNAME * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENRESOURCEFROMNTHANDLE ) ( _Inout_ D3DKMT_OPENRESOURCEFROMNTHANDLE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENSYNCOBJECTFROMNTHANDLE ) ( _Inout_ D3DKMT_OPENSYNCOBJECTFROMNTHANDLE * ) ;
# endif
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENRESOURCE ) ( _Inout_ D3DKMT_OPENRESOURCE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENRESOURCE2 ) ( _Inout_ D3DKMT_OPENRESOURCE * ) ; // _ADVSCH_
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYALLOCATION ) ( _In_ CONST D3DKMT_DESTROYALLOCATION * ) ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYALLOCATION2 ) ( _In_ CONST D3DKMT_DESTROYALLOCATION2 * ) ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_0
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETALLOCATIONPRIORITY ) ( _In_ CONST D3DKMT_SETALLOCATIONPRIORITY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYALLOCATIONRESIDENCY ) ( _In_ CONST D3DKMT_QUERYALLOCATIONRESIDENCY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEDEVICE ) ( _Inout_ D3DKMT_CREATEDEVICE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYDEVICE ) ( _In_ CONST D3DKMT_DESTROYDEVICE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATECONTEXT ) ( _Inout_ D3DKMT_CREATECONTEXT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYCONTEXT ) ( _In_ CONST D3DKMT_DESTROYCONTEXT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATESYNCHRONIZATIONOBJECT ) ( _Inout_ D3DKMT_CREATESYNCHRONIZATIONOBJECT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATESYNCHRONIZATIONOBJECT2 ) ( _Inout_ D3DKMT_CREATESYNCHRONIZATIONOBJECT2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENSYNCHRONIZATIONOBJECT ) ( _Inout_ D3DKMT_OPENSYNCHRONIZATIONOBJECT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYSYNCHRONIZATIONOBJECT ) ( _In_ CONST D3DKMT_DESTROYSYNCHRONIZATIONOBJECT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_WAITFORSYNCHRONIZATIONOBJECT ) ( _In_ CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_WAITFORSYNCHRONIZATIONOBJECT2 ) ( _In_ CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SIGNALSYNCHRONIZATIONOBJECT ) ( _In_ CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SIGNALSYNCHRONIZATIONOBJECT2 ) ( _In_ CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_LOCK ) ( _Inout_ D3DKMT_LOCK * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_UNLOCK ) ( _In_ CONST D3DKMT_UNLOCK * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETDISPLAYMODELIST ) ( _Inout_ D3DKMT_GETDISPLAYMODELIST * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETDISPLAYMODE ) ( _Inout_ CONST D3DKMT_SETDISPLAYMODE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETMULTISAMPLEMETHODLIST ) ( _Inout_ D3DKMT_GETMULTISAMPLEMETHODLIST * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_PRESENT ) ( _Inout_ D3DKMT_PRESENT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_RENDER ) ( _Inout_ D3DKMT_RENDER * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETRUNTIMEDATA ) ( _Inout_ CONST D3DKMT_GETRUNTIMEDATA * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYADAPTERINFO ) ( _Inout_ CONST D3DKMT_QUERYADAPTERINFO * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENADAPTERFROMHDC ) ( _Inout_ D3DKMT_OPENADAPTERFROMHDC * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENADAPTERFROMGDIDISPLAYNAME ) ( _Inout_ D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENADAPTERFROMDEVICENAME ) ( _Inout_ D3DKMT_OPENADAPTERFROMDEVICENAME * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CLOSEADAPTER ) ( _In_ CONST D3DKMT_CLOSEADAPTER * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETSHAREDPRIMARYHANDLE ) ( _Inout_ D3DKMT_GETSHAREDPRIMARYHANDLE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_ESCAPE ) ( _In_ CONST D3DKMT_ESCAPE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYSTATISTICS ) ( _In_ CONST D3DKMT_QUERYSTATISTICS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETVIDPNSOURCEOWNER ) ( _In_ CONST D3DKMT_SETVIDPNSOURCEOWNER * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETPRESENTHISTORY ) ( _Inout_ D3DKMT_GETPRESENTHISTORY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEOVERLAY ) ( _Inout_ D3DKMT_CREATEOVERLAY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_UPDATEOVERLAY ) ( _In_ CONST D3DKMT_UPDATEOVERLAY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_FLIPOVERLAY ) ( _In_ CONST D3DKMT_FLIPOVERLAY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYOVERLAY ) ( _In_ CONST D3DKMT_DESTROYOVERLAY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_WAITFORVERTICALBLANKEVENT ) ( _In_ CONST D3DKMT_WAITFORVERTICALBLANKEVENT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETGAMMARAMP ) ( _In_ CONST D3DKMT_SETGAMMARAMP * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETDEVICESTATE ) ( _Inout_ D3DKMT_GETDEVICESTATE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEDCFROMMEMORY ) ( _Inout_ D3DKMT_CREATEDCFROMMEMORY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYDCFROMMEMORY ) ( _In_ CONST D3DKMT_DESTROYDCFROMMEMORY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETCONTEXTSCHEDULINGPRIORITY ) ( _In_ CONST D3DKMT_SETCONTEXTSCHEDULINGPRIORITY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETCONTEXTSCHEDULINGPRIORITY ) ( _Inout_ D3DKMT_GETCONTEXTSCHEDULINGPRIORITY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETPROCESSSCHEDULINGPRIORITYCLASS ) ( _In_ HANDLE , _In_ D3DKMT_SCHEDULINGPRIORITYCLASS ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETPROCESSSCHEDULINGPRIORITYCLASS ) ( _In_ HANDLE , _Out_ D3DKMT_SCHEDULINGPRIORITYCLASS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_RELEASEPROCESSVIDPNSOURCEOWNERS ) ( _In_ HANDLE ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETSCANLINE ) ( _Inout_ D3DKMT_GETSCANLINE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CHANGESURFACEPOINTER ) ( _In_ CONST D3DKMT_CHANGESURFACEPOINTER * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETQUEUEDLIMIT ) ( _In_ CONST D3DKMT_SETQUEUEDLIMIT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_POLLDISPLAYCHILDREN ) ( _In_ CONST D3DKMT_POLLDISPLAYCHILDREN * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_INVALIDATEACTIVEVIDPN ) ( _In_ CONST D3DKMT_INVALIDATEACTIVEVIDPN * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CHECKOCCLUSION ) ( _In_ CONST D3DKMT_CHECKOCCLUSION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_WAITFORIDLE ) ( _In_ CONST D3DKMT_WAITFORIDLE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CHECKMONITORPOWERSTATE ) ( _In_ CONST D3DKMT_CHECKMONITORPOWERSTATE * ) ;
typedef _Check_return_ BOOLEAN ( APIENTRY * PFND3DKMT_CHECKEXCLUSIVEOWNERSHIP ) ( ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP ) ( _In_ CONST D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT ) ( _In_ CONST D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SHAREDPRIMARYLOCKNOTIFICATION ) ( _In_ CONST D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION ) ( _In_ CONST D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEKEYEDMUTEX ) ( _Inout_ D3DKMT_CREATEKEYEDMUTEX * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENKEYEDMUTEX ) ( _Inout_ D3DKMT_OPENKEYEDMUTEX * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYKEYEDMUTEX ) ( _In_ CONST D3DKMT_DESTROYKEYEDMUTEX * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_ACQUIREKEYEDMUTEX ) ( _Inout_ D3DKMT_ACQUIREKEYEDMUTEX * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_RELEASEKEYEDMUTEX ) ( _Inout_ D3DKMT_RELEASEKEYEDMUTEX * ) ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEKEYEDMUTEX2 ) ( _Inout_ D3DKMT_CREATEKEYEDMUTEX2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENKEYEDMUTEX2 ) ( _Inout_ D3DKMT_OPENKEYEDMUTEX2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_ACQUIREKEYEDMUTEX2 ) ( _Inout_ D3DKMT_ACQUIREKEYEDMUTEX2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_RELEASEKEYEDMUTEX2 ) ( _Inout_ D3DKMT_RELEASEKEYEDMUTEX2 * ) ;
# endif
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CONFIGURESHAREDRESOURCE ) ( _In_ CONST D3DKMT_CONFIGURESHAREDRESOURCE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETOVERLAYSTATE ) ( _Inout_ D3DKMT_GETOVERLAYSTATE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CHECKSHAREDRESOURCEACCESS ) ( _In_ CONST D3DKMT_CHECKSHAREDRESOURCEACCESS * ) ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OFFERALLOCATIONS ) ( _In_ CONST D3DKMT_OFFERALLOCATIONS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_RECLAIMALLOCATIONS ) ( _Inout_ CONST D3DKMT_RECLAIMALLOCATIONS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEOUTPUTDUPL ) ( _In_ CONST D3DKMT_CREATE_OUTPUTDUPL * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYOUTPUTDUPL ) ( _In_ CONST D3DKMT_DESTROY_OUTPUTDUPL * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OUTPUTDUPLGETFRAMEINFO ) ( _Inout_ D3DKMT_OUTPUTDUPL_GET_FRAMEINFO * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OUTPUTDUPLGETMETADATA ) ( _Inout_ D3DKMT_OUTPUTDUPL_METADATA * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OUTPUTDUPLGETPOINTERSHAPEDATA ) ( _Inout_ D3DKMT_OUTPUTDUPL_GET_POINTER_SHAPE_DATA * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OUTPUTDUPLRELEASEFRAME ) ( _In_ D3DKMT_OUTPUTDUPL_RELEASE_FRAME * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OUTPUTDUPLPRESENT ) ( _In_ CONST D3DKMT_OUTPUTDUPLPRESENT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_ENUMADAPTERS ) ( _Inout_ CONST D3DKMT_ENUMADAPTERS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_ENUMADAPTERS2 ) ( _Inout_ CONST D3DKMT_ENUMADAPTERS2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENADAPTERFROMLUID ) ( _Inout_ D3DKMT_OPENADAPTERFROMLUID * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYREMOTEVIDPNSOURCEFROMGDIDISPLAYNAME ) ( _Inout_ D3DKMT_QUERYREMOTEVIDPNSOURCEFROMGDIDISPLAYNAME * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETVIDPNSOURCEOWNER1 ) ( _In_ CONST D3DKMT_SETVIDPNSOURCEOWNER1 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_PINDIRECTFLIPRESOURCES ) ( _In_ CONST D3DKMT_PINDIRECTFLIPRESOURCES * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_UNPINDIRECTFLIPRESOURCES ) ( _In_ CONST D3DKMT_UNPINDIRECTFLIPRESOURCES * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_WAITFORVERTICALBLANKEVENT2 ) ( _In_ CONST D3DKMT_WAITFORVERTICALBLANKEVENT2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETDWMVERTICALBLANKEVENT ) ( _In_ CONST D3DKMT_GETVERTICALBLANKEVENT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETSYNCREFRESHCOUNTWAITTARGET ) ( _In_ CONST D3DKMT_SETSYNCREFRESHCOUNTWAITTARGET * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETCONTEXTINPROCESSSCHEDULINGPRIORITY ) ( _In_ CONST D3DKMT_SETCONTEXTINPROCESSSCHEDULINGPRIORITY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETCONTEXTINPROCESSSCHEDULINGPRIORITY ) ( _Inout_ D3DKMT_GETCONTEXTINPROCESSSCHEDULINGPRIORITY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_PRESENTMULTIPLANEOVERLAY ) ( _In_ CONST D3DKMT_PRESENT_MULTIPLANE_OVERLAY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETSHAREDRESOURCEADAPTERLUID ) ( _Inout_ D3DKMT_GETSHAREDRESOURCEADAPTERLUID * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETSTEREOENABLED ) ( _In_ BOOL ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYHYBRIDLISTVALUE ) ( _Inout_ D3DKMT_HYBRID_LIST * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETHYBRIDLISTVVALUE ) ( _Inout_ D3DKMT_HYBRID_LIST * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT ) ( _Inout_ D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_MAKERESIDENT ) ( _Inout_ D3DDDI_MAKERESIDENT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_EVICT ) ( _Inout_ D3DKMT_EVICT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU ) ( _In_ CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMCPU ) ( _In_ CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMCPU * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU ) ( _In_ CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU ) ( _In_ CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU2 ) ( _In_ CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEPAGINGQUEUE ) ( _Inout_ D3DKMT_CREATEPAGINGQUEUE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYPAGINGQUEUE ) ( _Inout_ D3DDDI_DESTROYPAGINGQUEUE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_LOCK2 ) ( _Inout_ D3DKMT_LOCK2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_UNLOCK2 ) ( _In_ CONST D3DKMT_UNLOCK2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_INVALIDATECACHE ) ( _In_ const D3DKMT_INVALIDATECACHE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_RESERVEGPUVIRTUALADDRESS ) ( _Inout_ D3DDDI_RESERVEGPUVIRTUALADDRESS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_MAPGPUVIRTUALADDRESS ) ( _Inout_ D3DDDI_MAPGPUVIRTUALADDRESS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_FREEGPUVIRTUALADDRESS ) ( _In_ CONST D3DKMT_FREEGPUVIRTUALADDRESS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_UPDATEGPUVIRTUALADDRESS ) ( _In_ CONST D3DKMT_UPDATEGPUVIRTUALADDRESS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETRESOURCEPRESENTPRIVATEDRIVERDATA ) ( _Inout_ D3DDDI_GETRESOURCEPRESENTPRIVATEDRIVERDATA * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATECONTEXTVIRTUAL ) ( _Inout_ D3DKMT_CREATECONTEXTVIRTUAL * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SUBMITCOMMAND ) ( _In_ CONST D3DKMT_SUBMITCOMMAND * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 ) ( _Inout_ D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENSYNCOBJECTNTHANDLEFROMNAME ) ( _Inout_ D3DKMT_OPENSYNCOBJECTNTHANDLEFROMNAME * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYVIDEOMEMORYINFO ) ( _Inout_ D3DKMT_QUERYVIDEOMEMORYINFO * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CHANGEVIDEOMEMORYRESERVATION ) ( _In_ CONST D3DKMT_CHANGEVIDEOMEMORYRESERVATION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_REGISTERTRIMNOTIFICATION ) ( _Inout_ D3DKMT_REGISTERTRIMNOTIFICATION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_UNREGISTERTRIMNOTIFICATION ) ( _Inout_ D3DKMT_UNREGISTERTRIMNOTIFICATION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_REGISTERBUDGETCHANGENOTIFICATION ) ( _Inout_ D3DKMT_REGISTERBUDGETCHANGENOTIFICATION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_UNREGISTERBUDGETCHANGENOTIFICATION ) ( _Inout_ D3DKMT_UNREGISTERBUDGETCHANGENOTIFICATION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT2 ) ( _Inout_ D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_PRESENTMULTIPLANEOVERLAY2 ) ( _In_ CONST D3DKMT_PRESENT_MULTIPLANE_OVERLAY2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_RECLAIMALLOCATIONS2 ) ( _Inout_ D3DKMT_RECLAIMALLOCATIONS2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETSTABLEPOWERSTATE ) ( _In_ CONST D3DKMT_SETSTABLEPOWERSTATE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYCLOCKCALIBRATION ) ( _Inout_ D3DKMT_QUERYCLOCKCALIBRATION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP ) ( _Inout_ D3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_ADJUSTFULLSCREENGAMMA ) ( _In_ D3DKMT_ADJUSTFULLSCREENGAMMA * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETVIDPNSOURCEHWPROTECTION ) ( _In_ D3DKMT_SETVIDPNSOURCEHWPROTECTION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_MARKDEVICEASERROR ) ( _In_ D3DKMT_MARKDEVICEASERROR * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_FLUSHHEAPTRANSITIONS ) ( _In_ D3DKMT_FLUSHHEAPTRANSITIONS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETHWPROTECTIONTEARDOWNRECOVERY ) ( _In_ D3DKMT_SETHWPROTECTIONTEARDOWNRECOVERY * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYPROCESSOFFERINFO ) ( _Inout_ D3DKMT_QUERYPROCESSOFFERINFO * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_TRIMPROCESSCOMMITMENT ) ( _Inout_ D3DKMT_TRIMPROCESSCOMMITMENT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_UPDATEALLOCATIONPROPERTY ) ( _Inout_ D3DDDI_UPDATEALLOCPROPERTY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT3 ) ( _Inout_ D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT3 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_PRESENTMULTIPLANEOVERLAY3 ) ( _In_ CONST D3DKMT_PRESENT_MULTIPLANE_OVERLAY3 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETFSEBLOCK ) ( _In_ CONST D3DKMT_SETFSEBLOCK * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYFSEBLOCK ) ( _Inout_ D3DKMT_QUERYFSEBLOCK * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETALLOCATIONPRIORITY ) ( _In_ CONST D3DKMT_GETALLOCATIONPRIORITY * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETMULTIPLANEOVERLAYCAPS ) ( _Inout_ D3DKMT_GET_MULTIPLANE_OVERLAY_CAPS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETPOSTCOMPOSITIONCAPS ) ( _Inout_ D3DKMT_GET_POST_COMPOSITION_CAPS * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SETVIDPNSOURCEOWNER2 ) ( _In_ CONST D3DKMT_SETVIDPNSOURCEOWNER2 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_GETPROCESSDEVICEREMOVALSUPPORT ) ( _Inout_ D3DKMT_GETPROCESSDEVICEREMOVALSUPPORT * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEPROTECTEDSESSION ) ( _Inout_ D3DKMT_CREATEPROTECTEDSESSION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYPROTECTEDSESSION ) ( _Inout_ D3DKMT_DESTROYPROTECTEDSESSION * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYPROTECTEDSESSIONSTATUS ) ( _Inout_ D3DKMT_QUERYPROTECTEDSESSIONSTATUS * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_QUERYPROTECTEDSESSIONINFOFROMNTHANDLE ) ( _Inout_ D3DKMT_QUERYPROTECTEDSESSIONINFOFROMNTHANDLE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENPROTECTEDSESSIONFROMNTHANDLE ) ( _Inout_ D3DKMT_OPENPROTECTEDSESSIONFROMNTHANDLE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OPENKEYEDMUTEXFROMNTHANDLE ) ( _Inout_ D3DKMT_OPENKEYEDMUTEXFROMNTHANDLE * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CREATEHWQUEUE ) ( _Inout_ D3DKMT_CREATEHWQUEUE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DESTROYHWQUEUE ) ( _In_ CONST D3DKMT_DESTROYHWQUEUE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SUBMITCOMMANDTOHWQUEUE ) ( _In_ CONST D3DKMT_SUBMITCOMMANDTOHWQUEUE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SUBMITWAITFORSYNCOBJECTSTOHWQUEUE ) ( _In_ CONST D3DKMT_SUBMITWAITFORSYNCOBJECTSTOHWQUEUE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SUBMITSIGNALSYNCOBJECTSTOHWQUEUE ) ( _In_ CONST D3DKMT_SUBMITSIGNALSYNCOBJECTSTOHWQUEUE * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SUBMITPRESENTBLTTOHWQUEUE ) ( _In_ CONST D3DKMT_SUBMITPRESENTBLTTOHWQUEUE * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_5)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_SUBMITPRESENTTOHWQUEUE ) ( _Inout_ D3DKMT_SUBMITPRESENTTOHWQUEUE * ) ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_5
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_OUTPUTDUPLPRESENTTOHWQUEUE ) ( _In_ CONST D3DKMT_OUTPUTDUPLPRESENTTOHWQUEUE * ) ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_6
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_ENUMADAPTERS3 ) ( _Inout_ D3DKMT_ENUMADAPTERS3 * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_PINRESOURCES ) ( _Inout_ D3DKMT_PINRESOURCES * ) ;
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_UNPINRESOURCES ) ( _In_ CONST D3DKMT_UNPINRESOURCES * ) ;
# ifdef _WIN32
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_DISPLAYPORT_OPERATION ) ( _Inout_ D3DKMT_DISPLAYPORT_OPERATION_HEADER * ) ;
# endif // _WIN32
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
typedef _Check_return_ NTSTATUS ( APIENTRY * PFND3DKMT_CANCELPRESENTS ) ( _In_ D3DKMT_CANCEL_PRESENTS * ) ;
# endif
2024-11-18 20:24:24 +00:00
# if !defined(__REACTOS__) || (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
2024-10-17 07:26:01 +00:00
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTShareObjectWithHost ( _Inout_ D3DKMT_SHAREOBJECTWITHHOST * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateSyncFile ( _Inout_ D3DKMT_CREATESYNCFILE * ) ;
// Used in WSL to close the internal file descriptor to /dev/dxg
EXTERN_C VOID APIENTRY D3DKMTCloseDxCoreDevice ( ) ;
2024-11-18 20:24:24 +00:00
# endif
2024-10-17 07:26:01 +00:00
# if !defined(D3DKMDT_SPECIAL_MULTIPLATFORM_TOOL)
2017-06-16 18:38:08 +00:00
# ifdef __cplusplus
extern " C "
{
2024-10-17 07:26:01 +00:00
# endif
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateAllocation ( _Inout_ D3DKMT_CREATEALLOCATION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateAllocation2 ( _Inout_ D3DKMT_CREATEALLOCATION * ) ; // _ADVSCH_
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryResourceInfo ( _Inout_ D3DKMT_QUERYRESOURCEINFO * ) ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryResourceInfoFromNtHandle ( _Inout_ D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTShareObjects (
_In_range_ ( 1 , D3DKMT_MAX_OBJECTS_PER_HANDLE ) UINT cObjects ,
_In_reads_ ( cObjects ) CONST D3DKMT_HANDLE * hObjects ,
_In_ POBJECT_ATTRIBUTES pObjectAttributes ,
_In_ DWORD dwDesiredAccess ,
_Out_ HANDLE * phSharedNtHandle
) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenNtHandleFromName ( _Inout_ D3DKMT_OPENNTHANDLEFROMNAME * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenResourceFromNtHandle ( _Inout_ D3DKMT_OPENRESOURCEFROMNTHANDLE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenSyncObjectFromNtHandle ( _Inout_ D3DKMT_OPENSYNCOBJECTFROMNTHANDLE * ) ;
# endif
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenResource ( _Inout_ D3DKMT_OPENRESOURCE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenResource2 ( _Inout_ D3DKMT_OPENRESOURCE * ) ; // _ADVSCH_
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyAllocation ( _In_ CONST D3DKMT_DESTROYALLOCATION * ) ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyAllocation2 ( _In_ CONST D3DKMT_DESTROYALLOCATION2 * ) ;
# endif // DXGKDDI_INTERFACE_VERSION_WDDM2_0
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetAllocationPriority ( _In_ CONST D3DKMT_SETALLOCATIONPRIORITY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryAllocationResidency ( _In_ CONST D3DKMT_QUERYALLOCATIONRESIDENCY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateDevice ( _Inout_ D3DKMT_CREATEDEVICE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyDevice ( _In_ CONST D3DKMT_DESTROYDEVICE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateContext ( _Inout_ D3DKMT_CREATECONTEXT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyContext ( _In_ CONST D3DKMT_DESTROYCONTEXT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateSynchronizationObject ( _Inout_ D3DKMT_CREATESYNCHRONIZATIONOBJECT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateSynchronizationObject2 ( _Inout_ D3DKMT_CREATESYNCHRONIZATIONOBJECT2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenSynchronizationObject ( _Inout_ D3DKMT_OPENSYNCHRONIZATIONOBJECT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroySynchronizationObject ( _In_ CONST D3DKMT_DESTROYSYNCHRONIZATIONOBJECT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTWaitForSynchronizationObject ( _In_ CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTWaitForSynchronizationObject2 ( _In_ CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSignalSynchronizationObject ( _In_ CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSignalSynchronizationObject2 ( _In_ CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTLock ( _Inout_ D3DKMT_LOCK * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTUnlock ( _In_ CONST D3DKMT_UNLOCK * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetDisplayModeList ( _Inout_ D3DKMT_GETDISPLAYMODELIST * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetDisplayMode ( _Inout_ CONST D3DKMT_SETDISPLAYMODE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetMultisampleMethodList ( _Inout_ D3DKMT_GETMULTISAMPLEMETHODLIST * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTPresent ( _Inout_ D3DKMT_PRESENT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTRender ( _Inout_ D3DKMT_RENDER * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetRuntimeData ( _Inout_ CONST D3DKMT_GETRUNTIMEDATA * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryAdapterInfo ( _Inout_ CONST D3DKMT_QUERYADAPTERINFO * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenAdapterFromHdc ( _Inout_ D3DKMT_OPENADAPTERFROMHDC * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenAdapterFromGdiDisplayName ( _Inout_ D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenAdapterFromDeviceName ( _Inout_ D3DKMT_OPENADAPTERFROMDEVICENAME * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCloseAdapter ( _In_ CONST D3DKMT_CLOSEADAPTER * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetSharedPrimaryHandle ( _Inout_ D3DKMT_GETSHAREDPRIMARYHANDLE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTEscape ( _In_ CONST D3DKMT_ESCAPE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryStatistics ( _In_ CONST D3DKMT_QUERYSTATISTICS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetVidPnSourceOwner ( _In_ CONST D3DKMT_SETVIDPNSOURCEOWNER * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetPresentHistory ( _Inout_ D3DKMT_GETPRESENTHISTORY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetPresentQueueEvent ( _In_ D3DKMT_HANDLE hAdapter , _Inout_ HANDLE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateOverlay ( _Inout_ D3DKMT_CREATEOVERLAY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTUpdateOverlay ( _In_ CONST D3DKMT_UPDATEOVERLAY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTFlipOverlay ( _In_ CONST D3DKMT_FLIPOVERLAY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyOverlay ( _In_ CONST D3DKMT_DESTROYOVERLAY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTWaitForVerticalBlankEvent ( _In_ CONST D3DKMT_WAITFORVERTICALBLANKEVENT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetGammaRamp ( _In_ CONST D3DKMT_SETGAMMARAMP * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetDeviceState ( _Inout_ D3DKMT_GETDEVICESTATE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateDCFromMemory ( _Inout_ D3DKMT_CREATEDCFROMMEMORY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyDCFromMemory ( _In_ CONST D3DKMT_DESTROYDCFROMMEMORY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetContextSchedulingPriority ( _In_ CONST D3DKMT_SETCONTEXTSCHEDULINGPRIORITY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetContextSchedulingPriority ( _Inout_ D3DKMT_GETCONTEXTSCHEDULINGPRIORITY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetProcessSchedulingPriorityClass ( _In_ HANDLE , _In_ D3DKMT_SCHEDULINGPRIORITYCLASS ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetProcessSchedulingPriorityClass ( _In_ HANDLE , _Out_ D3DKMT_SCHEDULINGPRIORITYCLASS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTReleaseProcessVidPnSourceOwners ( _In_ HANDLE ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetScanLine ( _Inout_ D3DKMT_GETSCANLINE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTChangeSurfacePointer ( _In_ CONST D3DKMT_CHANGESURFACEPOINTER * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetQueuedLimit ( _In_ CONST D3DKMT_SETQUEUEDLIMIT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTPollDisplayChildren ( _In_ CONST D3DKMT_POLLDISPLAYCHILDREN * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTInvalidateActiveVidPn ( _In_ CONST D3DKMT_INVALIDATEACTIVEVIDPN * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCheckOcclusion ( _In_ CONST D3DKMT_CHECKOCCLUSION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTWaitForIdle ( IN CONST D3DKMT_WAITFORIDLE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCheckMonitorPowerState ( _In_ CONST D3DKMT_CHECKMONITORPOWERSTATE * ) ;
EXTERN_C _Check_return_ BOOLEAN APIENTRY D3DKMTCheckExclusiveOwnership ( VOID ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCheckVidPnExclusiveOwnership ( _In_ CONST D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetDisplayPrivateDriverFormat ( _In_ CONST D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSharedPrimaryLockNotification ( _In_ CONST D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSharedPrimaryUnLockNotification ( _In_ CONST D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateKeyedMutex ( _Inout_ D3DKMT_CREATEKEYEDMUTEX * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenKeyedMutex ( _Inout_ D3DKMT_OPENKEYEDMUTEX * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyKeyedMutex ( _In_ CONST D3DKMT_DESTROYKEYEDMUTEX * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTAcquireKeyedMutex ( _Inout_ D3DKMT_ACQUIREKEYEDMUTEX * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTReleaseKeyedMutex ( _Inout_ D3DKMT_RELEASEKEYEDMUTEX * ) ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateKeyedMutex2 ( _Inout_ D3DKMT_CREATEKEYEDMUTEX2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenKeyedMutex2 ( _Inout_ D3DKMT_OPENKEYEDMUTEX2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTAcquireKeyedMutex2 ( _Inout_ D3DKMT_ACQUIREKEYEDMUTEX2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTReleaseKeyedMutex2 ( _Inout_ D3DKMT_RELEASEKEYEDMUTEX2 * ) ;
# endif
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTConfigureSharedResource ( _In_ CONST D3DKMT_CONFIGURESHAREDRESOURCE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetOverlayState ( _Inout_ D3DKMT_GETOVERLAYSTATE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCheckSharedResourceAccess ( _In_ CONST D3DKMT_CHECKSHAREDRESOURCEACCESS * ) ;
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN8)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOfferAllocations ( _In_ CONST D3DKMT_OFFERALLOCATIONS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTReclaimAllocations ( _Inout_ CONST D3DKMT_RECLAIMALLOCATIONS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateOutputDupl ( _In_ CONST D3DKMT_CREATE_OUTPUTDUPL * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyOutputDupl ( _In_ CONST D3DKMT_DESTROY_OUTPUTDUPL * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOutputDuplGetFrameInfo ( _Inout_ D3DKMT_OUTPUTDUPL_GET_FRAMEINFO * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOutputDuplGetMetaData ( _Inout_ D3DKMT_OUTPUTDUPL_METADATA * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOutputDuplGetPointerShapeData ( _Inout_ D3DKMT_OUTPUTDUPL_GET_POINTER_SHAPE_DATA * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOutputDuplReleaseFrame ( _Inout_ D3DKMT_OUTPUTDUPL_RELEASE_FRAME * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOutputDuplPresent ( _In_ CONST D3DKMT_OUTPUTDUPLPRESENT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTEnumAdapters ( _Inout_ CONST D3DKMT_ENUMADAPTERS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTEnumAdapters2 ( _Inout_ CONST D3DKMT_ENUMADAPTERS2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenAdapterFromLuid ( _Inout_ CONST D3DKMT_OPENADAPTERFROMLUID * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryRemoteVidPnSourceFromGdiDisplayName ( _Inout_ D3DKMT_QUERYREMOTEVIDPNSOURCEFROMGDIDISPLAYNAME * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetVidPnSourceOwner1 ( _In_ CONST D3DKMT_SETVIDPNSOURCEOWNER1 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTWaitForVerticalBlankEvent2 ( _In_ CONST D3DKMT_WAITFORVERTICALBLANKEVENT2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetSyncRefreshCountWaitTarget ( _In_ CONST D3DKMT_SETSYNCREFRESHCOUNTWAITTARGET * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetDWMVerticalBlankEvent ( _In_ CONST D3DKMT_GETVERTICALBLANKEVENT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTPresentMultiPlaneOverlay ( _In_ CONST D3DKMT_PRESENT_MULTIPLANE_OVERLAY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetSharedResourceAdapterLuid ( _Inout_ D3DKMT_GETSHAREDRESOURCEADAPTERLUID * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCheckMultiPlaneOverlaySupport ( _Inout_ D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetContextInProcessSchedulingPriority ( _In_ CONST D3DKMT_SETCONTEXTINPROCESSSCHEDULINGPRIORITY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetContextInProcessSchedulingPriority ( _Inout_ D3DKMT_GETCONTEXTINPROCESSSCHEDULINGPRIORITY * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTMakeResident ( _Inout_ D3DDDI_MAKERESIDENT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTEvict ( _Inout_ D3DKMT_EVICT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTWaitForSynchronizationObjectFromCpu ( _In_ CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSignalSynchronizationObjectFromCpu ( _In_ CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMCPU * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTWaitForSynchronizationObjectFromGpu ( _In_ CONST D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSignalSynchronizationObjectFromGpu ( _In_ CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSignalSynchronizationObjectFromGpu2 ( _In_ CONST D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreatePagingQueue ( _Inout_ D3DKMT_CREATEPAGINGQUEUE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyPagingQueue ( _Inout_ D3DDDI_DESTROYPAGINGQUEUE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTLock2 ( _Inout_ D3DKMT_LOCK2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTUnlock2 ( _In_ CONST D3DKMT_UNLOCK2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTInvalidateCache ( _In_ CONST D3DKMT_INVALIDATECACHE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTMapGpuVirtualAddress ( _Inout_ D3DDDI_MAPGPUVIRTUALADDRESS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTReserveGpuVirtualAddress ( _Inout_ D3DDDI_RESERVEGPUVIRTUALADDRESS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTFreeGpuVirtualAddress ( _In_ CONST D3DKMT_FREEGPUVIRTUALADDRESS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTUpdateGpuVirtualAddress ( _In_ CONST D3DKMT_UPDATEGPUVIRTUALADDRESS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetResourcePresentPrivateDriverData ( _Inout_ D3DDDI_GETRESOURCEPRESENTPRIVATEDRIVERDATA * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateContextVirtual ( _In_ D3DKMT_CREATECONTEXTVIRTUAL * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSubmitCommand ( _In_ CONST D3DKMT_SUBMITCOMMAND * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenSyncObjectFromNtHandle2 ( _Inout_ D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenSyncObjectNtHandleFromName ( _Inout_ D3DKMT_OPENSYNCOBJECTNTHANDLEFROMNAME * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryVideoMemoryInfo ( _Inout_ D3DKMT_QUERYVIDEOMEMORYINFO * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTChangeVideoMemoryReservation ( _In_ CONST D3DKMT_CHANGEVIDEOMEMORYRESERVATION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTRegisterTrimNotification ( _Inout_ D3DKMT_REGISTERTRIMNOTIFICATION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTUnregisterTrimNotification ( _Inout_ D3DKMT_UNREGISTERTRIMNOTIFICATION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCheckMultiPlaneOverlaySupport2 ( _Inout_ D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTPresentMultiPlaneOverlay2 ( _In_ CONST D3DKMT_PRESENT_MULTIPLANE_OVERLAY2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTReclaimAllocations2 ( _Inout_ D3DKMT_RECLAIMALLOCATIONS2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetStablePowerState ( _In_ CONST D3DKMT_SETSTABLEPOWERSTATE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryClockCalibration ( _Inout_ D3DKMT_QUERYCLOCKCALIBRATION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryVidPnExclusiveOwnership ( _Inout_ D3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTAdjustFullscreenGamma ( _In_ D3DKMT_ADJUSTFULLSCREENGAMMA * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetVidPnSourceHwProtection ( _In_ D3DKMT_SETVIDPNSOURCEHWPROTECTION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTMarkDeviceAsError ( _In_ D3DKMT_MARKDEVICEASERROR * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTFlushHeapTransitions ( _In_ D3DKMT_FLUSHHEAPTRANSITIONS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetHwProtectionTeardownRecovery ( _In_ D3DKMT_SETHWPROTECTIONTEARDOWNRECOVERY * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryProcessOfferInfo ( _Inout_ D3DKMT_QUERYPROCESSOFFERINFO * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTTrimProcessCommitment ( _Inout_ D3DKMT_TRIMPROCESSCOMMITMENT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTUpdateAllocationProperty ( _Inout_ D3DDDI_UPDATEALLOCPROPERTY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCheckMultiPlaneOverlaySupport3 ( _Inout_ D3DKMT_CHECKMULTIPLANEOVERLAYSUPPORT3 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTPresentMultiPlaneOverlay3 ( _In_ CONST D3DKMT_PRESENT_MULTIPLANE_OVERLAY3 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetFSEBlock ( _In_ CONST D3DKMT_SETFSEBLOCK * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryFSEBlock ( _Inout_ D3DKMT_QUERYFSEBLOCK * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_2)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateHwContext ( _Inout_ D3DKMT_CREATEHWCONTEXT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyHwContext ( _In_ CONST D3DKMT_DESTROYHWCONTEXT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateHwQueue ( _Inout_ D3DKMT_CREATEHWQUEUE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyHwQueue ( _In_ CONST D3DKMT_DESTROYHWQUEUE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSubmitCommandToHwQueue ( _In_ CONST D3DKMT_SUBMITCOMMANDTOHWQUEUE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSubmitWaitForSyncObjectsToHwQueue ( _In_ CONST D3DKMT_SUBMITWAITFORSYNCOBJECTSTOHWQUEUE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSubmitSignalSyncObjectsToHwQueue ( _In_ CONST D3DKMT_SUBMITSIGNALSYNCOBJECTSTOHWQUEUE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetAllocationPriority ( _In_ CONST D3DKMT_GETALLOCATIONPRIORITY * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetMultiPlaneOverlayCaps ( _Inout_ D3DKMT_GET_MULTIPLANE_OVERLAY_CAPS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetPostCompositionCaps ( _Inout_ D3DKMT_GET_POST_COMPOSITION_CAPS * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_3)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTPresentRedirected ( _In_ D3DKMT_PRESENT_REDIRECTED * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetVidPnSourceOwner2 ( _In_ CONST D3DKMT_SETVIDPNSOURCEOWNER2 * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSetMonitorColorSpaceTransform ( _In_ D3DKMT_SET_COLORSPACE_TRANSFORM * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCreateProtectedSession ( _Inout_ D3DKMT_CREATEPROTECTEDSESSION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTDestroyProtectedSession ( _Inout_ D3DKMT_DESTROYPROTECTEDSESSION * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryProtectedSessionStatus ( _Inout_ D3DKMT_QUERYPROTECTEDSESSIONSTATUS * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTQueryProtectedSessionInfoFromNtHandle ( _Inout_ D3DKMT_QUERYPROTECTEDSESSIONINFOFROMNTHANDLE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenProtectedSessionFromNtHandle ( _Inout_ D3DKMT_OPENPROTECTEDSESSIONFROMNTHANDLE * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTGetProcessDeviceRemovalSupport ( _Inout_ D3DKMT_GETPROCESSDEVICEREMOVALSUPPORT * ) ;
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOpenKeyedMutexFromNtHandle ( _Inout_ D3DKMT_OPENKEYEDMUTEXFROMNTHANDLE * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSubmitPresentBltToHwQueue ( _In_ CONST D3DKMT_SUBMITPRESENTBLTTOHWQUEUE * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_5)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTSubmitPresentToHwQueue ( _Inout_ D3DKMT_SUBMITPRESENTTOHWQUEUE * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_6)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTOutputDuplPresentToHwQueue ( _In_ CONST D3DKMT_OUTPUTDUPLPRESENTTOHWQUEUE * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_7)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTEnumAdapters3 ( _Inout_ D3DKMT_ENUMADAPTERS3 * ) ;
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
# endif
# if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
EXTERN_C _Check_return_ NTSTATUS APIENTRY D3DKMTCancelPresents ( _In_ D3DKMT_CANCEL_PRESENTS * ) ;
# endif
//
// Interface used for shared power component management
// {ea5c6870-e93c-4588-bef1-fec42fc9429a}
//
DEFINE_GUID ( GUID_DEVINTERFACE_GRAPHICSPOWER , 0xea5c6870 , 0xe93c , 0x4588 , 0xbe , 0xf1 , 0xfe , 0xc4 , 0x2f , 0xc9 , 0x42 , 0x9a ) ;
# define IOCTL_INTERNAL_GRAPHICSPOWER_REGISTER \
CTL_CODE ( FILE_DEVICE_VIDEO , 0xa01 , METHOD_NEITHER , FILE_ANY_ACCESS )
# define DXGK_GRAPHICSPOWER_VERSION_1_0 0x1000
# define DXGK_GRAPHICSPOWER_VERSION_1_1 0x1001
# define DXGK_GRAPHICSPOWER_VERSION_1_2 0x1002
# define DXGK_GRAPHICSPOWER_VERSION DXGK_GRAPHICSPOWER_VERSION_1_2
typedef
_IRQL_requires_max_ ( PASSIVE_LEVEL )
VOID
( * PDXGK_POWER_NOTIFICATION ) (
PVOID GraphicsDeviceHandle ,
DEVICE_POWER_STATE NewGrfxPowerState ,
BOOLEAN PreNotification ,
PVOID PrivateHandle
) ;
typedef
_IRQL_requires_max_ ( PASSIVE_LEVEL )
VOID
( * PDXGK_REMOVAL_NOTIFICATION ) (
PVOID GraphicsDeviceHandle ,
PVOID PrivateHandle
) ;
typedef
_IRQL_requires_max_ ( DISPATCH_LEVEL )
VOID
( * PDXGK_FSTATE_NOTIFICATION ) (
PVOID GraphicsDeviceHandle ,
ULONG ComponentIndex ,
UINT NewFState ,
BOOLEAN PreNotification ,
PVOID PrivateHandle
) ;
typedef
_IRQL_requires_ ( DISPATCH_LEVEL )
VOID
( * PDXGK_INITIAL_COMPONENT_STATE ) (
PVOID GraphicsDeviceHandle ,
PVOID PrivateHandle ,
ULONG ComponentIndex ,
BOOLEAN IsBlockingType ,
UINT InitialFState ,
GUID ComponentGuid ,
UINT PowerComponentMappingFlag
) ;
typedef struct _DXGK_GRAPHICSPOWER_REGISTER_INPUT_V_1_2 {
ULONG Version ;
PVOID PrivateHandle ;
PDXGK_POWER_NOTIFICATION PowerNotificationCb ;
PDXGK_REMOVAL_NOTIFICATION RemovalNotificationCb ;
PDXGK_FSTATE_NOTIFICATION FStateNotificationCb ;
PDXGK_INITIAL_COMPONENT_STATE InitialComponentStateCb ;
} DXGK_GRAPHICSPOWER_REGISTER_INPUT_V_1_2 , * PDXGK_GRAPHICSPOWER_REGISTER_INPUT_V_1_2 ;
typedef DXGK_GRAPHICSPOWER_REGISTER_INPUT_V_1_2 DXGK_GRAPHICSPOWER_REGISTER_INPUT ;
typedef DXGK_GRAPHICSPOWER_REGISTER_INPUT * PDXGK_GRAPHICSPOWER_REGISTER_INPUT ;
typedef
_Check_return_
_IRQL_requires_max_ ( APC_LEVEL )
NTSTATUS
( * PDXGK_SET_SHARED_POWER_COMPONENT_STATE ) (
PVOID DeviceHandle ,
PVOID PrivateHandle ,
ULONG ComponentIndex ,
BOOLEAN Active
) ;
typedef
_Check_return_
_IRQL_requires_max_ ( APC_LEVEL )
NTSTATUS
( * PDXGK_GRAPHICSPOWER_UNREGISTER ) (
PVOID DeviceHandle ,
PVOID PrivateHandle
) ;
typedef struct _DXGK_GRAPHICSPOWER_REGISTER_OUTPUT
{
PVOID DeviceHandle ;
DEVICE_POWER_STATE InitialGrfxPowerState ;
PDXGK_SET_SHARED_POWER_COMPONENT_STATE SetSharedPowerComponentStateCb ;
PDXGK_GRAPHICSPOWER_UNREGISTER UnregisterCb ;
} DXGK_GRAPHICSPOWER_REGISTER_OUTPUT , * PDXGK_GRAPHICSPOWER_REGISTER_OUTPUT ;
2017-06-16 18:38:08 +00:00
2024-10-17 07:26:01 +00:00
typedef enum _DXGKMT_POWER_SHARED_TYPE
{
DXGKMT_POWER_SHARED_TYPE_AUDIO = 0 ,
} DXGKMT_POWER_SHARED_TYPE ;
2017-06-16 18:38:08 +00:00
# ifdef __cplusplus
}
2024-10-17 07:26:01 +00:00
# endif
# endif // !defined(D3DKMDT_SPECIAL_MULTIPLATFORM_TOOL)
# endif // (NTDDI_VERSION >= NTDDI_LONGHORN) || defined(D3DKMDT_SPECIAL_MULTIPLATFORM_TOOL)
# pragma warning(pop)
# endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
# pragma endregion
# endif /* _D3DKMTHK_H_ */
2017-06-16 18:38:08 +00:00