1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/thebes/d3dkmtQueryStatistics.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,168 @@ 1.4 +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- 1.5 + * This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 +/* This file is based on a header file that was briefly seen in the 1.9 + * Windows 8 RC SDK. The work for this file itself was based on the one in ProcessHacker at 1.10 + * http://processhacker.svn.sourceforge.net/viewvc/processhacker/2.x/trunk/plugins/ExtendedTools/d3dkmt.h?revision=4758&view=markup 1.11 + * For more details see Mozilla Bug 689870. 1.12 + * [Bug 917496 indicates that some of these structs may not match reality, and 1.13 + * therefore should not be trusted. See the reference to bug 917496 in 1.14 + * gfxWindowsPlatform.cpp.] 1.15 + */ 1.16 + 1.17 +typedef struct _D3DKMTQS_COUNTER 1.18 +{ 1.19 + ULONG Count; 1.20 + ULONGLONG Bytes; 1.21 +} D3DKMTQS_COUNTER; 1.22 + 1.23 +typedef struct _D3DKMTQS_ADAPTER_INFO 1.24 +{ 1.25 + ULONG NbSegments; 1.26 + 1.27 + ULONG Filler[4]; 1.28 + ULONGLONG Filler2[2]; // Assumed sizeof(LONGLONG) = sizeof(ULONGLONG) 1.29 + struct { 1.30 + ULONG Filler[14]; 1.31 + } Filler_RDMAB; 1.32 + struct { 1.33 + ULONG Filler[9]; 1.34 + } Filler_R; 1.35 + struct { 1.36 + ULONG Filler[4]; 1.37 + D3DKMTQS_COUNTER Filler2; 1.38 + } Filler_P; 1.39 + struct { 1.40 + D3DKMTQS_COUNTER Filler[16]; 1.41 + ULONG Filler2[2]; 1.42 + } Filler_PF; 1.43 + struct { 1.44 + ULONGLONG Filler[8]; 1.45 + } Filler_PT; 1.46 + struct { 1.47 + ULONG Filler[2]; 1.48 + } Filler_SR; 1.49 + struct { 1.50 + ULONG Filler[7]; 1.51 + } Filler_L; 1.52 + struct { 1.53 + D3DKMTQS_COUNTER Filler[7]; 1.54 + } Filler_A; 1.55 + struct { 1.56 + D3DKMTQS_COUNTER Filler[4]; 1.57 + } Filler_T; 1.58 + ULONG64 Reserved[8]; 1.59 +} D3DKMTQS_ADAPTER_INFO; 1.60 + 1.61 +typedef struct _D3DKMTQS_SEGMENT_INFO_WIN7 1.62 +{ 1.63 + ULONG Filler[3]; 1.64 + struct { 1.65 + ULONGLONG Filler; 1.66 + ULONG Filler2[2]; 1.67 + } Filler_M; 1.68 + 1.69 + ULONG Aperture; 1.70 + 1.71 + ULONGLONG Filler3[5]; 1.72 + ULONG64 Filler4[8]; 1.73 +} D3DKMTQS_SEGMENT_INFO_WIN7; 1.74 + 1.75 +typedef struct _D3DKMTQS_SEGMENT_INFO_WIN8 1.76 +{ 1.77 + ULONGLONG Filler[3]; 1.78 + struct { 1.79 + ULONGLONG Filler; 1.80 + ULONG Filler2[2]; 1.81 + } Filler_M; 1.82 + 1.83 + ULONG Aperture; 1.84 + 1.85 + ULONGLONG Filler3[5]; 1.86 + ULONG64 Filler4[8]; 1.87 +} D3DKMTQS_SEGMENT_INFO_WIN8; 1.88 + 1.89 +typedef struct _D3DKMTQS_SYSTEM_MEMORY 1.90 +{ 1.91 + ULONGLONG BytesAllocated; 1.92 + ULONG Filler[2]; 1.93 + ULONGLONG Filler2[7]; 1.94 +} D3DKMTQS_SYSTEM_MEMORY; 1.95 + 1.96 +typedef struct _D3DKMTQS_PROCESS_INFO 1.97 +{ 1.98 + ULONG Filler[2]; 1.99 + struct { 1.100 + ULONGLONG BytesAllocated; 1.101 + 1.102 + ULONG Filler[2]; 1.103 + ULONGLONG Filler2[7]; 1.104 + } SystemMemory; 1.105 + ULONG64 Reserved[8]; 1.106 +} D3DKMTQS_PROCESS_INFO; 1.107 + 1.108 +typedef struct _D3DKMTQS_PROCESS_SEGMENT_INFO 1.109 +{ 1.110 + union { 1.111 + struct { 1.112 + ULONGLONG BytesCommitted; 1.113 + } Win8; 1.114 + struct { 1.115 + ULONG BytesCommitted; 1.116 + ULONG UnknownRandomness; 1.117 + } Win7; 1.118 + }; 1.119 + 1.120 + ULONGLONG Filler[2]; 1.121 + ULONG Filler2; 1.122 + struct { 1.123 + ULONG Filler; 1.124 + D3DKMTQS_COUNTER Filler2[6]; 1.125 + ULONGLONG Filler3; 1.126 + } Filler3; 1.127 + struct { 1.128 + ULONGLONG Filler; 1.129 + } Filler4; 1.130 + ULONG64 Reserved[8]; 1.131 +} D3DKMTQS_PROCESS_SEGMENT_INFO; 1.132 + 1.133 +typedef enum _D3DKMTQS_TYPE 1.134 +{ 1.135 + D3DKMTQS_ADAPTER = 0, 1.136 + D3DKMTQS_PROCESS = 1, 1.137 + D3DKMTQS_SEGMENT = 3, 1.138 + D3DKMTQS_PROCESS_SEGMENT = 4, 1.139 +} D3DKMTQS_TYPE; 1.140 + 1.141 +typedef union _D3DKMTQS_RESULT 1.142 +{ 1.143 + D3DKMTQS_ADAPTER_INFO AdapterInfo; 1.144 + D3DKMTQS_SEGMENT_INFO_WIN7 SegmentInfoWin7; 1.145 + D3DKMTQS_SEGMENT_INFO_WIN8 SegmentInfoWin8; 1.146 + D3DKMTQS_PROCESS_INFO ProcessInfo; 1.147 + D3DKMTQS_PROCESS_SEGMENT_INFO ProcessSegmentInfo; 1.148 +} D3DKMTQS_RESULT; 1.149 + 1.150 +typedef struct _D3DKMTQS_QUERY_SEGMENT 1.151 +{ 1.152 + ULONG SegmentId; 1.153 +} D3DKMTQS_QUERY_SEGMENT; 1.154 + 1.155 +typedef struct _D3DKMTQS 1.156 +{ 1.157 + D3DKMTQS_TYPE Type; 1.158 + LUID AdapterLuid; 1.159 + HANDLE hProcess; 1.160 + D3DKMTQS_RESULT QueryResult; 1.161 + 1.162 + union 1.163 + { 1.164 + D3DKMTQS_QUERY_SEGMENT QuerySegment; 1.165 + D3DKMTQS_QUERY_SEGMENT QueryProcessSegment; 1.166 + }; 1.167 +} D3DKMTQS; 1.168 + 1.169 +extern "C" { 1.170 +typedef __checkReturn NTSTATUS (APIENTRY *PFND3DKMTQS)(const D3DKMTQS *); 1.171 +}