/* * Copyright 2016 Henri Verbeet for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __WINE_D3DKMTHK_H #define __WINE_D3DKMTHK_H #include typedef enum _D3DKMT_VIDPNSOURCEOWNER_TYPE { D3DKMT_VIDPNSOURCEOWNER_UNOWNED = 0, D3DKMT_VIDPNSOURCEOWNER_SHARED = 1, D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVE = 2, D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVEGDI = 3, D3DKMT_VIDPNSOURCEOWNER_EMULATED = 4 } D3DKMT_VIDPNSOURCEOWNER_TYPE; 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_CREATEDEVICEFLAGS { UINT LegacyMode : 1; UINT RequestVSync : 1; UINT DisableGpuTimeout : 1; UINT Reserved : 29; } D3DKMT_CREATEDEVICEFLAGS; typedef struct _D3DDDI_ALLOCATIONLIST { D3DKMT_HANDLE hAllocation; union { struct { UINT WriteOperation : 1; UINT DoNotRetireInstance : 1; UINT OfferPriority : 3; UINT Reserved : 27; } DUMMYSTRUCTNAME; UINT Value; } DUMMYUNIONNAME; } D3DDDI_ALLOCATIONLIST; typedef struct _D3DDDI_PATCHLOCATIONLIST { UINT AllocationIndex; union { struct { UINT SlotId : 24; UINT Reserved : 8; } DUMMYSTRUCTNAME; UINT Value; } DUMMYUNIONNAME; UINT DriverId; UINT AllocationOffset; UINT PatchOffset; UINT SplitOffset; } D3DDDI_PATCHLOCATIONLIST; typedef struct _D3DKMT_DESTROYDEVICE { D3DKMT_HANDLE hDevice; } D3DKMT_DESTROYDEVICE; typedef struct _D3DKMT_CHECKOCCLUSION { HWND hWnd; } D3DKMT_CHECKOCCLUSION; typedef struct _D3DKMT_CREATEDEVICE { union { D3DKMT_HANDLE hAdapter; VOID *pAdapter; } DUMMYUNIONNAME; D3DKMT_CREATEDEVICEFLAGS Flags; D3DKMT_HANDLE hDevice; VOID *pCommandBuffer; UINT CommandBufferSize; D3DDDI_ALLOCATIONLIST *pAllocationList; UINT AllocationListSize; D3DDDI_PATCHLOCATIONLIST *pPatchLocationList; UINT PatchLocationListSize; } D3DKMT_CREATEDEVICE; typedef struct _D3DKMT_OPENADAPTERFROMHDC { HDC hDc; D3DKMT_HANDLE hAdapter; LUID AdapterLuid; D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId; } D3DKMT_OPENADAPTERFROMHDC; typedef struct _D3DKMT_OPENADAPTERFROMDEVICENAME { const WCHAR *pDeviceName; D3DKMT_HANDLE hAdapter; LUID AdapterLuid; } D3DKMT_OPENADAPTERFROMDEVICENAME; typedef struct _D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME { WCHAR DeviceName[32]; D3DKMT_HANDLE hAdapter; LUID AdapterLuid; D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId; } D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME; typedef struct _D3DKMT_OPENADAPTERFROMLUID { LUID AdapterLuid; D3DKMT_HANDLE hAdapter; } D3DKMT_OPENADAPTERFROMLUID; typedef struct _D3DKMT_SETVIDPNSOURCEOWNER { D3DKMT_HANDLE hDevice; const D3DKMT_VIDPNSOURCEOWNER_TYPE *pType; const D3DDDI_VIDEO_PRESENT_SOURCE_ID *pVidPnSourceId; UINT VidPnSourceCount; } D3DKMT_SETVIDPNSOURCEOWNER; typedef struct _D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP { D3DKMT_HANDLE hAdapter; D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId; } D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP; #define D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX 5 typedef struct _D3DKMT_CLOSEADAPTER { D3DKMT_HANDLE hAdapter; } D3DKMT_CLOSEADAPTER; typedef struct _D3DKMT_CREATEDCFROMMEMORY { void *pMemory; D3DDDIFORMAT Format; UINT Width; UINT Height; UINT Pitch; HDC hDeviceDc; PALETTEENTRY *pColorTable; HDC hDc; HANDLE hBitmap; } D3DKMT_CREATEDCFROMMEMORY; typedef struct _D3DKMT_DESTROYDCFROMMEMORY { HDC hDc; HANDLE hBitmap; } D3DKMT_DESTROYDCFROMMEMORY; typedef enum _KMTQUERYADAPTERINFOTYPE { KMTQAITYPE_UMDRIVERPRIVATE, KMTQAITYPE_UMDRIVERNAME, KMTQAITYPE_UMOPENGLINFO, KMTQAITYPE_GETSEGMENTSIZE, KMTQAITYPE_ADAPTERGUID, KMTQAITYPE_FLIPQUEUEINFO, KMTQAITYPE_ADAPTERADDRESS, KMTQAITYPE_SETWORKINGSETINFO, KMTQAITYPE_ADAPTERREGISTRYINFO, KMTQAITYPE_CURRENTDISPLAYMODE, KMTQAITYPE_MODELIST, KMTQAITYPE_CHECKDRIVERUPDATESTATUS, KMTQAITYPE_VIRTUALADDRESSINFO, KMTQAITYPE_DRIVERVERSION, KMTQAITYPE_ADAPTERTYPE, KMTQAITYPE_OUTPUTDUPLCONTEXTSCOUNT, KMTQAITYPE_WDDM_1_2_CAPS, KMTQAITYPE_UMD_DRIVER_VERSION, KMTQAITYPE_DIRECTFLIP_SUPPORT, KMTQAITYPE_MULTIPLANEOVERLAY_SUPPORT, KMTQAITYPE_DLIST_DRIVER_NAME, KMTQAITYPE_WDDM_1_3_CAPS, KMTQAITYPE_MULTIPLANEOVERLAY_HUD_SUPPORT, KMTQAITYPE_WDDM_2_0_CAPS, KMTQAITYPE_NODEMETADATA, KMTQAITYPE_CPDRIVERNAME, KMTQAITYPE_XBOX, KMTQAITYPE_INDEPENDENTFLIP_SUPPORT, KMTQAITYPE_MIRACASTCOMPANIONDRIVERNAME, KMTQAITYPE_PHYSICALADAPTERCOUNT, KMTQAITYPE_PHYSICALADAPTERDEVICEIDS, KMTQAITYPE_DRIVERCAPS_EXT, KMTQAITYPE_QUERY_MIRACAST_DRIVER_TYPE, KMTQAITYPE_QUERY_GPUMMU_CAPS, KMTQAITYPE_QUERY_MULTIPLANEOVERLAY_DECODE_SUPPORT, KMTQAITYPE_QUERY_HW_PROTECTION_TEARDOWN_COUNT, KMTQAITYPE_QUERY_ISBADDRIVERFORHWPROTECTIONDISABLED, KMTQAITYPE_MULTIPLANEOVERLAY_SECONDARY_SUPPORT, KMTQAITYPE_INDEPENDENTFLIP_SECONDARY_SUPPORT, KMTQAITYPE_PANELFITTER_SUPPORT, KMTQAITYPE_PHYSICALADAPTERPNPKEY, KMTQAITYPE_GETSEGMENTGROUPSIZE, KMTQAITYPE_MPO3DDI_SUPPORT, KMTQAITYPE_HWDRM_SUPPORT, KMTQAITYPE_MPOKERNELCAPS_SUPPORT, KMTQAITYPE_MULTIPLANEOVERLAY_STRETCH_SUPPORT, KMTQAITYPE_GET_DEVICE_VIDPN_OWNERSHIP_INFO, KMTQAITYPE_QUERYREGISTRY, KMTQAITYPE_KMD_DRIVER_VERSION, KMTQAITYPE_BLOCKLIST_KERNEL, KMTQAITYPE_BLOCKLIST_RUNTIME, KMTQAITYPE_ADAPTERGUID_RENDER, KMTQAITYPE_ADAPTERADDRESS_RENDER, KMTQAITYPE_ADAPTERREGISTRYINFO_RENDER, KMTQAITYPE_CHECKDRIVERUPDATESTATUS_RENDER, KMTQAITYPE_DRIVERVERSION_RENDER, KMTQAITYPE_ADAPTERTYPE_RENDER, KMTQAITYPE_WDDM_1_2_CAPS_RENDER, KMTQAITYPE_WDDM_1_3_CAPS_RENDER, KMTQAITYPE_QUERY_ADAPTER_UNIQUE_GUID, KMTQAITYPE_NODEPERFDATA, KMTQAITYPE_ADAPTERPERFDATA, KMTQAITYPE_ADAPTERPERFDATA_CAPS, KMTQUITYPE_GPUVERSION, KMTQAITYPE_DRIVER_DESCRIPTION, KMTQAITYPE_DRIVER_DESCRIPTION_RENDER, KMTQAITYPE_SCANOUT_CAPS, KMTQAITYPE_DISPLAY_UMDRIVERNAME, KMTQAITYPE_PARAVIRTUALIZATION_RENDER, KMTQAITYPE_SERVICENAME, KMTQAITYPE_WDDM_2_7_CAPS, KMTQAITYPE_TRACKEDWORKLOAD_SUPPORT, KMTQAITYPE_HYBRID_DLIST_DLL_SUPPORT, KMTQAITYPE_DISPLAY_CAPS, KMTQAITYPE_WDDM_2_9_CAPS, KMTQAITYPE_CROSSADAPTERRESOURCE_SUPPORT, KMTQAITYPE_WDDM_3_0_CAPS, KMTQAITYPE_WSAUMDIMAGENAME, KMTQAITYPE_VGPUINTERFACEID, KMTQAITYPE_WDDM_3_1_CAPS } KMTQUERYADAPTERINFOTYPE; typedef struct _D3DKMT_QUERYADAPTERINFO { D3DKMT_HANDLE hAdapter; KMTQUERYADAPTERINFOTYPE Type; VOID *pPrivateDriverData; UINT PrivateDriverDataSize; } D3DKMT_QUERYADAPTERINFO; 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 } D3DKMT_QUERYRESULT_PREEMPTION_ATTEMPT_RESULT; typedef enum _D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS { D3DKMT_AllocationPriorityClassMinimum, D3DKMT_AllocationPriorityClassLow, D3DKMT_AllocationPriorityClassNormal, D3DKMT_AllocationPriorityClassHigh, D3DKMT_AllocationPriorityClassMaximum, D3DKMT_MaxAllocationPriorityClass } D3DKMT_QUERYSTATISTICS_ALLOCATION_PRIORITY_CLASS; typedef enum _D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE { D3DKMT_RenderCommandBuffer, D3DKMT_DeferredCommandBuffer, D3DKMT_SystemCommandBuffer, D3DKMT_MmIoFlipCommandBuffer, D3DKMT_WaitCommandBuffer, D3DKMT_SignalCommandBuffer, D3DKMT_DeviceCommandBuffer, D3DKMT_SoftwareCommandBuffer, D3DKMT_QueuePacketTypeMax } D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE; typedef enum _D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE { D3DKMT_ClientRenderBuffer, D3DKMT_ClientPagingBuffer, D3DKMT_SystemPagingBuffer, D3DKMT_SystemPreemptionBuffer, D3DKMT_DmaPacketTypeMax } D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE; typedef struct _D3DKMT_QUERYSTATSTICS_PAGING_TRANSFER { ULONGLONG BytesFilled; ULONGLONG BytesDiscarded; ULONGLONG BytesMappedIntoAperture; ULONGLONG BytesUnmappedFromAperture; ULONGLONG BytesTransferredFromMdlToMemory; ULONGLONG BytesTransferredFromMemoryToMdl; ULONGLONG BytesTransferredFromApertureToMemory; ULONGLONG BytesTransferredFromMemoryToAperture; } D3DKMT_QUERYSTATSTICS_PAGING_TRANSFER; typedef struct _D3DKMT_QUERYSTATISTICS_COMMITMENT_DATA { ULONG64 TotalBytesEvictedFromProcess; ULONG64 BytesBySegmentPreference[D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX]; } D3DKMT_QUERYSTATISTICS_COMMITMENT_DATA; typedef struct _D3DKMT_QUERYSTATSTICS_SWIZZLING_RANGE { ULONG NbRangesAcquired; ULONG NbRangesReleased; } D3DKMT_QUERYSTATSTICS_SWIZZLING_RANGE; typedef struct _D3DKMT_QUERYSTATISTICS_COUNTER { ULONG Count; ULONGLONG Bytes; } D3DKMT_QUERYSTATISTICS_COUNTER; typedef struct _D3DKMT_QUERYSTATISTICS_DMA_BUFFER { D3DKMT_QUERYSTATISTICS_COUNTER Size; ULONG AllocationListBytes; ULONG PatchLocationListBytes; } D3DKMT_QUERYSTATISTICS_DMA_BUFFER; 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 { D3DKMT_QUERYSTATISTICS_COUNTER TerminatedShared; D3DKMT_QUERYSTATISTICS_COUNTER TerminatedNonShared; D3DKMT_QUERYSTATISTICS_COUNTER DestroyedShared; D3DKMT_QUERYSTATISTICS_COUNTER DestroyedNonShared; } D3DKMT_QUERYSTATSTICS_TERMINATIONS; typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_NODE { ULONG NodeId; } D3DKMT_QUERYSTATISTICS_QUERY_NODE; typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT { ULONG SegmentId; } D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT; typedef struct _D3DKMT_QUERYSTATISTICS_PREEMPTION_INFORMATION { ULONG PreemptionCounter[D3DKMT_PreemptionAttemptStatisticsMax]; } D3DKMT_QUERYSTATISTICS_PREEMPTION_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE { ULONG VidPnSourceId; } D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE; typedef struct _D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_INFORMATION { ULONG PacketSubmited; ULONG PacketCompleted; } D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_INFORMATION; 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_SYSTEM_MEMORY { ULONGLONG BytesAllocated; ULONGLONG BytesReserved; ULONG SmallAllocationBlocks; ULONG LargeAllocationBlocks; ULONGLONG WriteCombinedBytesAllocated; ULONGLONG WriteCombinedBytesReserved; ULONGLONG CachedBytesAllocated; ULONGLONG CachedBytesReserved; ULONGLONG SectionBytesAllocated; ULONGLONG SectionBytesReserved; } D3DKMT_QUERYSTATISTICS_SYSTEM_MEMORY; typedef enum _D3DKMT_QUERYSTATISTICS_TYPE { D3DKMT_QUERYSTATISTICS_ADAPTER, D3DKMT_QUERYSTATISTICS_PROCESS, D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER, D3DKMT_QUERYSTATISTICS_SEGMENT, D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT, D3DKMT_QUERYSTATISTICS_NODE, D3DKMT_QUERYSTATISTICS_PROCESS_NODE, D3DKMT_QUERYSTATISTICS_VIDPNSOURCE, D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE } D3DKMT_QUERYSTATISTICS_TYPE; 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_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_QUERYSTATISTICS_MEMORY { ULONGLONG TotalBytesEvicted; ULONG AllocsCommitted; ULONG AllocsResident; } D3DKMT_QUERYSTATISTICS_MEMORY; typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION { ULONG Frame; ULONG CancelledFrame; ULONG QueuedPresent; ULONG64 Reserved[8]; } D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_PACKET_INFORMATION { D3DKMT_QUERYSTATISTICS_QUEUE_PACKET_TYPE_INFORMATION QueuePacket[D3DKMT_QueuePacketTypeMax]; D3DKMT_QUERYSTATISTICS_DMA_PACKET_TYPE_INFORMATION DmaPacket[D3DKMT_DmaPacketTypeMax]; } D3DKMT_QUERYSTATISTICS_PACKET_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION { LARGE_INTEGER RunningTime; ULONG ContextSwitch; D3DKMT_QUERYSTATISTICS_PREEMPTION_INFORMATION PreemptionStatistics; D3DKMT_QUERYSTATISTICS_PACKET_INFORMATION PacketStatistics; ULONG64 Reserved[8]; } D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_NODE_INFORMATION { D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION GlobalInformation; D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION SystemInformation; ULONG64 Reserved[8]; } D3DKMT_QUERYSTATISTICS_NODE_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_VIDPNSOURCE_INFORMATION { D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION GlobalInformation; D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION SystemInformation; ULONG64 Reserved[8]; } D3DKMT_QUERYSTATISTICS_VIDPNSOURCE_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION { ULONG NbSegments; ULONG NodeCount; ULONG VidPnSourceCount; ULONG VSyncEnabled; ULONG TdrDetectedCount; LONGLONG ZeroLengthDmaBuffers; 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; ULONG64 Reserved[8]; } D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_POLICY { ULONGLONG PreferApertureForRead[D3DKMT_MaxAllocationPriorityClass]; ULONGLONG PreferAperture[D3DKMT_MaxAllocationPriorityClass]; ULONGLONG MemResetOnPaging; ULONGLONG RemovePagesFromWorkingSetOnPaging; ULONGLONG MigrationEnabled; } D3DKMT_QUERYSTATISTICS_POLICY; typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER_INFORMATION { ULONG NbSegments; ULONG NodeCount; ULONG VidPnSourceCount; ULONG VirtualMemoryUsage; D3DKMT_QUERYSTATISTICS_DMA_BUFFER DmaBuffer; D3DKMT_QUERYSTATISTICS_COMMITMENT_DATA CommitmentData; D3DKMT_QUERYSTATISTICS_POLICY _Policy; ULONG64 Reserved[8]; } D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_VIDEO_MEMORY { ULONG AllocsCommitted; D3DKMT_QUERYSTATISTICS_COUNTER AllocsResidentInP[D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX]; D3DKMT_QUERYSTATISTICS_COUNTER AllocsResidentInNonPreferred; ULONGLONG TotalBytesEvictedDueToPreparation; } D3DKMT_QUERYSTATISTICS_VIDEO_MEMORY; typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_POLICY { ULONGLONG UseMRU; } D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_POLICY; typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_INFORMATION { ULONGLONG BytesCommitted; ULONGLONG MaximumWorkingSet; ULONGLONG MinimumWorkingSet; ULONG NbReferencedAllocationEvictedInPeriod; D3DKMT_QUERYSTATISTICS_VIDEO_MEMORY VideoMemory; D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_POLICY _Policy; ULONG64 Reserved[8]; } D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_PROCESS_INFORMATION { ULONG NodeCount; ULONG VidPnSourceCount; D3DKMT_QUERYSTATISTICS_SYSTEM_MEMORY SystemMemory; ULONG64 Reserved[8]; } D3DKMT_QUERYSTATISTICS_PROCESS_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION { ULONGLONG CommitLimit; ULONGLONG BytesCommitted; ULONGLONG BytesResident; D3DKMT_QUERYSTATISTICS_MEMORY Memory; ULONG Aperture; ULONGLONG TotalBytesEvictedByPriority[D3DKMT_MaxAllocationPriorityClass]; ULONG64 SystemMemoryEndAddress; struct { ULONG64 PreservedDuringStandby : 1; ULONG64 PreservedDuringHibernate : 1; ULONG64 PartiallyPreservedDuringHibernate : 1; ULONG64 Reserved : 61; } PowerFlags; ULONG64 Reserved[6]; } D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION; typedef struct _D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION_V1 { ULONG CommitLimit; ULONG BytesCommitted; ULONG BytesResident; D3DKMT_QUERYSTATISTICS_MEMORY Memory; ULONG Aperture; ULONGLONG TotalBytesEvictedByPriority[D3DKMT_MaxAllocationPriorityClass]; ULONG64 SystemMemoryEndAddress; struct { ULONG64 PreservedDuringStandby : 1; ULONG64 PreservedDuringHibernate : 1; ULONG64 PartiallyPreservedDuringHibernate : 1; ULONG64 Reserved : 61; } PowerFlags; ULONG64 Reserved[7]; } D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION_V1; typedef union _D3DKMT_QUERYSTATISTICS_RESULT { D3DKMT_QUERYSTATISTICS_ADAPTER_INFORMATION AdapterInformation; D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION_V1 SegmentInformationV1; D3DKMT_QUERYSTATISTICS_SEGMENT_INFORMATION SegmentInformation; D3DKMT_QUERYSTATISTICS_NODE_INFORMATION NodeInformation; D3DKMT_QUERYSTATISTICS_VIDPNSOURCE_INFORMATION VidPnSourceInformation; D3DKMT_QUERYSTATISTICS_PROCESS_INFORMATION ProcessInformation; D3DKMT_QUERYSTATISTICS_PROCESS_ADAPTER_INFORMATION ProcessAdapterInformation; D3DKMT_QUERYSTATISTICS_PROCESS_SEGMENT_INFORMATION ProcessSegmentInformation; D3DKMT_QUERYSTATISTICS_PROCESS_NODE_INFORMATION ProcessNodeInformation; D3DKMT_QUERYSTATISTICS_PROCESS_VIDPNSOURCE_INFORMATION ProcessVidPnSourceInformation; } D3DKMT_QUERYSTATISTICS_RESULT; typedef struct _D3DKMT_QUERYSTATISTICS { D3DKMT_QUERYSTATISTICS_TYPE Type; LUID AdapterLuid; HANDLE hProcess; D3DKMT_QUERYSTATISTICS_RESULT QueryResult; union { D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT QuerySegment; D3DKMT_QUERYSTATISTICS_QUERY_SEGMENT QueryProcessSegment; D3DKMT_QUERYSTATISTICS_QUERY_NODE QueryNode; D3DKMT_QUERYSTATISTICS_QUERY_NODE QueryProcessNode; D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE QueryVidPnSource; D3DKMT_QUERYSTATISTICS_QUERY_VIDPNSOURCE QueryProcessVidPnSource; } DUMMYUNIONNAME; } D3DKMT_QUERYSTATISTICS; typedef struct _D3DKMT_QUERYVIDEOMEMORYINFO { HANDLE hProcess; D3DKMT_HANDLE hAdapter; D3DKMT_MEMORY_SEGMENT_GROUP MemorySegmentGroup; UINT64 Budget; UINT64 CurrentUsage; UINT64 CurrentReservation; UINT64 AvailableForReservation; UINT PhysicalAdapterIndex; } D3DKMT_QUERYVIDEOMEMORYINFO; typedef enum _D3DKMT_QUEUEDLIMIT_TYPE { D3DKMT_SET_QUEUEDLIMIT_PRESENT = 1, D3DKMT_GET_QUEUEDLIMIT_PRESENT } D3DKMT_QUEUEDLIMIT_TYPE; typedef struct _D3DKMT_SETQUEUEDLIMIT { D3DKMT_HANDLE hDevice; D3DKMT_QUEUEDLIMIT_TYPE Type; union { UINT QueuedPresentLimit; struct { D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId; UINT QueuedPendingFlipLimit; } DUMMYSTRUCTNAME; } DUMMYUNIONNAME; } D3DKMT_SETQUEUEDLIMIT; typedef enum _D3DKMT_ESCAPETYPE { D3DKMT_ESCAPE_DRIVERPRIVATE, D3DKMT_ESCAPE_VIDMM, D3DKMT_ESCAPE_TDRDBGCTRL, D3DKMT_ESCAPE_VIDSCH, D3DKMT_ESCAPE_DEVICE, D3DKMT_ESCAPE_DMM, D3DKMT_ESCAPE_DEBUG_SNAPSHOT, D3DKMT_ESCAPE_SETDRIVERUPDATESTATUS, D3DKMT_ESCAPE_DRT_TEST, D3DKMT_ESCAPE_DIAGNOSTICS, } D3DKMT_ESCAPETYPE; typedef struct _D3DKMT_ESCAPE { D3DKMT_HANDLE hAdapter; D3DKMT_HANDLE hDevice; D3DKMT_ESCAPETYPE Type; D3DDDI_ESCAPEFLAGS Flags; void *pPrivateDriverData; UINT PrivateDriverDataSize; D3DKMT_HANDLE hContext; } D3DKMT_ESCAPE; typedef struct _D3DKMT_ADAPTERINFO { D3DKMT_HANDLE hAdapter; LUID AdapterLuid; ULONG NumOfSources; BOOL bPrecisePresentRegionsPreferred; } D3DKMT_ADAPTERINFO; typedef struct _D3DKMT_ENUMADAPTERS2 { ULONG NumAdapters; D3DKMT_ADAPTERINFO *pAdapters; } D3DKMT_ENUMADAPTERS2; #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ NTSTATUS WINAPI D3DKMTCheckVidPnExclusiveOwnership(const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc); NTSTATUS WINAPI D3DKMTCloseAdapter(const D3DKMT_CLOSEADAPTER *desc); NTSTATUS WINAPI D3DKMTCreateDevice(D3DKMT_CREATEDEVICE *desc); NTSTATUS WINAPI D3DKMTCreateDCFromMemory(D3DKMT_CREATEDCFROMMEMORY *desc); NTSTATUS WINAPI D3DKMTDestroyDCFromMemory(const D3DKMT_DESTROYDCFROMMEMORY *desc); NTSTATUS WINAPI D3DKMTDestroyDevice(const D3DKMT_DESTROYDEVICE *desc); NTSTATUS WINAPI D3DKMTEscape( const D3DKMT_ESCAPE *desc ); NTSTATUS WINAPI D3DKMTOpenAdapterFromGdiDisplayName(D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME *desc); NTSTATUS WINAPI D3DKMTOpenAdapterFromHdc( D3DKMT_OPENADAPTERFROMHDC *desc ); NTSTATUS WINAPI D3DKMTOpenAdapterFromLuid( D3DKMT_OPENADAPTERFROMLUID * desc ); NTSTATUS WINAPI D3DKMTQueryStatistics(D3DKMT_QUERYSTATISTICS *stats); NTSTATUS WINAPI D3DKMTQueryVideoMemoryInfo(D3DKMT_QUERYVIDEOMEMORYINFO *desc); NTSTATUS WINAPI D3DKMTSetQueuedLimit(D3DKMT_SETQUEUEDLIMIT *desc); NTSTATUS WINAPI D3DKMTSetVidPnSourceOwner(const D3DKMT_SETVIDPNSOURCEOWNER *desc); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __WINE_D3DKMTHK_H */