gfx/thebes/d3dkmtQueryStatistics.h

changeset 0
6474c204b198
     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 +}

mercurial