Added gdi32-D3DKMTQueryStatistics patchset

This commit is contained in:
Alistair Leslie-Hughes 2019-04-26 13:36:39 +10:00
parent 63eedc8289
commit a9282e6425
4 changed files with 545 additions and 0 deletions

View File

@ -0,0 +1,467 @@
From c1554852648aa2a0f2629db4424604e9b6de5414 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 23 Apr 2019 12:02:06 +1000
Subject: [PATCH 1/2] include: Add missing D3DKMT typedefs
---
include/ddk/d3dkmthk.h | 437 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 437 insertions(+)
diff --git a/include/ddk/d3dkmthk.h b/include/ddk/d3dkmthk.h
index 0000b2f..ab2af52 100644
--- a/include/ddk/d3dkmthk.h
+++ b/include/ddk/d3dkmthk.h
@@ -21,6 +21,8 @@
#include <d3dukmdt.h>
+#define D3DKMT_QUERYSTATISTICS_SEGMENT_PREFERENCE_MAX 5
+
typedef struct _D3DKMT_CLOSEADAPTER
{
D3DKMT_HANDLE hAdapter;
@@ -45,6 +47,441 @@ typedef struct _D3DKMT_DESTROYDCFROMMEMORY
HANDLE hBitmap;
} D3DKMT_DESTROYDCFROMMEMORY;
+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;
+ };
+} D3DKMT_QUERYSTATISTICS;
+
#ifdef __cplusplus
extern "C"
{
--
1.9.1

View File

@ -0,0 +1,56 @@
From e4c38a569fe653a038d46bbf67a8d151851ea2b9 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 23 Apr 2019 13:32:56 +1000
Subject: [PATCH 2/2] gdi32: Add D3DKMTQueryStatistics stub
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47074
---
dlls/gdi32/driver.c | 9 +++++++++
dlls/gdi32/gdi32.spec | 1 +
include/ddk/d3dkmthk.h | 1 +
3 files changed, 11 insertions(+)
diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c
index 88f49a0..d2d9fd7 100644
--- a/dlls/gdi32/driver.c
+++ b/dlls/gdi32/driver.c
@@ -1272,3 +1272,12 @@ NTSTATUS WINAPI D3DKMTCloseAdapter( const D3DKMT_CLOSEADAPTER *desc )
FIXME("(%p): stub\n", desc);
return STATUS_SUCCESS;
}
+
+/******************************************************************************
+ * D3DKMTCloseAdapter [GDI32.@]
+ */
+NTSTATUS WINAPI D3DKMTQueryStatistics(D3DKMT_QUERYSTATISTICS *stats)
+{
+ FIXME("(%p): stub\n", stats);
+ return STATUS_SUCCESS;
+}
diff --git a/dlls/gdi32/gdi32.spec b/dlls/gdi32/gdi32.spec
index 2d158e0..745e05e 100644
--- a/dlls/gdi32/gdi32.spec
+++ b/dlls/gdi32/gdi32.spec
@@ -85,6 +85,7 @@
@ stdcall D3DKMTDestroyDCFromMemory(ptr)
@ stdcall D3DKMTEscape(ptr)
@ stdcall D3DKMTOpenAdapterFromHdc(ptr)
+@ stdcall D3DKMTQueryStatistics(ptr)
@ stdcall DPtoLP(long ptr long)
@ stdcall DeleteColorSpace(long)
@ stdcall DeleteDC(long)
diff --git a/include/ddk/d3dkmthk.h b/include/ddk/d3dkmthk.h
index ab2af52..2ce2c6c 100644
--- a/include/ddk/d3dkmthk.h
+++ b/include/ddk/d3dkmthk.h
@@ -490,6 +490,7 @@ extern "C"
NTSTATUS WINAPI D3DKMTCloseAdapter(const D3DKMT_CLOSEADAPTER *desc);
NTSTATUS WINAPI D3DKMTCreateDCFromMemory(D3DKMT_CREATEDCFROMMEMORY *desc);
NTSTATUS WINAPI D3DKMTDestroyDCFromMemory(const D3DKMT_DESTROYDCFROMMEMORY *desc);
+NTSTATUS WINAPI D3DKMTQueryStatistics(D3DKMT_QUERYSTATISTICS *stats);
#ifdef __cplusplus
}
--
1.9.1

View File

@ -0,0 +1 @@
Fixes: [47074] gdi32: Add D3DKMTQueryStatistics stub

View File

@ -146,6 +146,7 @@ patch_enable_all ()
enable_explorer_Video_Registry_Key="$1"
enable_fonts_Missing_Fonts="$1"
enable_fsutil_Stub_Program="$1"
enable_gdi32_D3DKMTQueryStatistics="$1"
enable_gdi32_Lazy_Font_Initialization="$1"
enable_gdi32_MultiMonitor="$1"
enable_gdi32_rotation="$1"
@ -574,6 +575,9 @@ patch_enable ()
fsutil-Stub_Program)
enable_fsutil_Stub_Program="$2"
;;
gdi32-D3DKMTQueryStatistics)
enable_gdi32_D3DKMTQueryStatistics="$2"
;;
gdi32-Lazy_Font_Initialization)
enable_gdi32_Lazy_Font_Initialization="$2"
;;
@ -3909,6 +3913,23 @@ if test "$enable_fsutil_Stub_Program" -eq 1; then
) >> "$patchlist"
fi
# Patchset gdi32-D3DKMTQueryStatistics
# |
# | This patchset fixes the following Wine bugs:
# | * [#47074] gdi32: Add D3DKMTQueryStatistics stub
# |
# | Modified files:
# | * dlls/gdi32/driver.c, dlls/gdi32/gdi32.spec, include/ddk/d3dkmthk.h
# |
if test "$enable_gdi32_D3DKMTQueryStatistics" -eq 1; then
patch_apply gdi32-D3DKMTQueryStatistics/0001-include-Add-missing-D3DKMT-typedefs.patch
patch_apply gdi32-D3DKMTQueryStatistics/0002-gdi32-Add-D3DKMTQueryStatistics-stub.patch
(
printf '%s\n' '+ { "Alistair Leslie-Hughes", "include: Add missing D3DKMT typedefs.", 1 },';
printf '%s\n' '+ { "Alistair Leslie-Hughes", "gdi32: Add D3DKMTQueryStatistics stub.", 1 },';
) >> "$patchlist"
fi
# Patchset gdi32-Lazy_Font_Initialization
# |
# | Modified files: