File: sharedata_wrapper.h

package info (click to toggle)
intel-compute-runtime 25.44.36015.8-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 79,632 kB
  • sloc: cpp: 931,547; lisp: 2,074; sh: 719; makefile: 162; python: 21
file content (212 lines) | stat: -rw-r--r-- 11,224 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
/*
 * Copyright (C) 2021-2025 Intel Corporation
 *
 * SPDX-License-Identifier: MIT
 *
 */

#pragma once

#include "shared/source/os_interface/windows/windows_wrapper.h"

#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmissing-braces"
#pragma clang diagnostic ignored "-Wbraced-scalar-init"
#endif
#include "umKmInc/sharedata.h"
#if defined(__clang__)
#pragma clang diagnostic pop
#endif

using SKU_FEATURE_TABLE_GMM = SKU_FEATURE_TABLE;
using WA_TABLE_GMM = WA_TABLE;
using ADAPTER_INFO_GMM = ADAPTER_INFO;
using PLATFORM_GMM = PLATFORM;

#if defined(UMD_KMD_COMMAND_BUFFER_REV_ID)
using SKU_FEATURE_TABLE_KMD = SKU_FEATURE_TABLE_GMM;
using WA_TABLE_KMD = WA_TABLE_GMM;
using ADAPTER_INFO_KMD = ADAPTER_INFO_GMM;
using PLATFORM_KMD = PLATFORM_GMM;

inline void propagateData(ADAPTER_INFO_KMD &) {
}

#if defined(__clang__) || defined(__GNUC__)
static constexpr COMMAND_BUFFER_HEADER initCommandBufferHeader(uint32_t umdContextType, uint32_t umdPatchList, uint32_t usesResourceStreamer, uint32_t perfTag) {
    COMMAND_BUFFER_HEADER ret = {};
    ret.UmdContextType = umdContextType;
    ret.UmdPatchList = umdPatchList;
    ret.UsesResourceStreamer = usesResourceStreamer;
    ret.PerfTag = perfTag;
    return ret;
}

#undef DECLARE_COMMAND_BUFFER
#define DECLARE_COMMAND_BUFFER(VARNAME, CONTEXTTYPE, PATCHLIST, STREAMER, PERFTAG) \
    static constexpr COMMAND_BUFFER_HEADER VARNAME = initCommandBufferHeader(CONTEXTTYPE, PATCHLIST, STREAMER, PERFTAG);
#endif

#else
struct SKU_FEATURE_TABLE_KMD : SKU_FEATURE_TABLE_GMM { // NOLINT(readability-identifier-naming)
    bool FtrGpGpuMidBatchPreempt : 1;                  // NOLINT(readability-identifier-naming)
    bool FtrGpGpuThreadGroupLevelPreempt : 1;          // NOLINT(readability-identifier-naming)
    bool FtrGpGpuMidThreadLevelPreempt : 1;            // NOLINT(readability-identifier-naming)

    bool FtrWddm2Svm : 1;        // NOLINT(readability-identifier-naming)
    bool FtrPooledEuEnabled : 1; // NOLINT(readability-identifier-naming)

    bool FtrPPGTT : 1;         // NOLINT(readability-identifier-naming)
    bool FtrSVM : 1;           // NOLINT(readability-identifier-naming)
    bool FtrEDram : 1;         // NOLINT(readability-identifier-naming)
    bool FtrL3IACoherency : 1; // NOLINT(readability-identifier-naming)
    bool FtrIA32eGfxPTEs : 1;  // NOLINT(readability-identifier-naming)

    bool FtrTileY : 1;                    // NOLINT(readability-identifier-naming)
    bool FtrDisplayYTiling : 1;           // NOLINT(readability-identifier-naming)
    bool FtrTranslationTable : 1;         // NOLINT(readability-identifier-naming)
    bool FtrUserModeTranslationTable : 1; // NOLINT(readability-identifier-naming)

    bool FtrFbc : 1; // NOLINT(readability-identifier-naming)

    bool FtrULT : 1;                // NOLINT(readability-identifier-naming)
    bool FtrLCIA : 1;               // NOLINT(readability-identifier-naming)
    bool FtrTileMappedResource : 1; // NOLINT(readability-identifier-naming)
    bool FtrAstcHdr2D : 1;          // NOLINT(readability-identifier-naming)
    bool FtrAstcLdr2D : 1;          // NOLINT(readability-identifier-naming)

    bool FtrStandardMipTailFormat : 1; // NOLINT(readability-identifier-naming)
    bool FtrFrameBufferLLC : 1;        // NOLINT(readability-identifier-naming)
    bool FtrLLCBypass : 1;             // NOLINT(readability-identifier-naming)
    bool FtrDisplayEngineS3d : 1;      // NOLINT(readability-identifier-naming)
    bool FtrWddm2GpuMmu : 1;           // NOLINT(readability-identifier-naming)
    bool FtrWddm2_1_64kbPages : 1;     // NOLINT(readability-identifier-naming)
    bool FtrWddmHwQueues : 1;          // NOLINT(readability-identifier-naming)
    bool FtrMemTypeMocsDeferPAT : 1;   // NOLINT(readability-identifier-naming)

    bool FtrKmdDaf : 1; // NOLINT(readability-identifier-naming)

    bool FtrE2ECompression : 1;       // NOLINT(readability-identifier-naming)
    bool FtrLinearCCS : 1;            // NOLINT(readability-identifier-naming)
    bool FtrCCSRing : 1;              // NOLINT(readability-identifier-naming)
    bool FtrCCSNode : 1;              // NOLINT(readability-identifier-naming)
    bool FtrRcsNode : 1;              // NOLINT(readability-identifier-naming)
    bool FtrLocalMemory : 1;          // NOLINT(readability-identifier-naming)
    bool FtrLocalMemoryAllows4KB : 1; // NOLINT(readability-identifier-naming)

    bool FtrHwScheduling : 1; // NOLINT(readability-identifier-naming)
    bool FtrWalkerMTP : 1;    // NOLINT(readability-identifier-naming)
};

struct WA_TABLE_KMD : WA_TABLE_GMM { // NOLINT(readability-identifier-naming)

    bool WaSendMIFLUSHBeforeVFE = false;                            // NOLINT(readability-identifier-naming)
    bool WaDisableLSQCROPERFforOCL = false;                         // NOLINT(readability-identifier-naming)
    bool WaMsaa8xTileYDepthPitchAlignment = false;                  // NOLINT(readability-identifier-naming)
    bool WaLosslessCompressionSurfaceStride = false;                // NOLINT(readability-identifier-naming)
    bool WaFbcLinearSurfaceStride = false;                          // NOLINT(readability-identifier-naming)
    bool Wa4kAlignUVOffsetNV12LinearSurface = false;                // NOLINT(readability-identifier-naming)
    bool WaEncryptedEdramOnlyPartials = false;                      // NOLINT(readability-identifier-naming)
    bool WaDisableEdramForDisplayRT = false;                        // NOLINT(readability-identifier-naming)
    bool WaCompressedResourceRequiresConstVA21 = false;             // NOLINT(readability-identifier-naming)
    bool WaDisablePerCtxtPreemptionGranularityControl = false;      // NOLINT(readability-identifier-naming)
    bool WaLLCCachingUnsupported = false;                           // NOLINT(readability-identifier-naming)
    bool WaUseVAlign16OnTileXYBpp816 = false;                       // NOLINT(readability-identifier-naming)
    bool WaModifyVFEStateAfterGPGPUPreemption = false;              // NOLINT(readability-identifier-naming)
    bool WaCSRUncachable = false;                                   // NOLINT(readability-identifier-naming)
    bool WaSamplerCacheFlushBetweenRedescribedSurfaceReads = false; // NOLINT(readability-identifier-naming)
    bool WaRestrictPitch128KB = false;                              // NOLINT(readability-identifier-naming)
    bool WaLimit128BMediaCompr = false;                             // NOLINT(readability-identifier-naming)
    bool WaUntypedBufferCompression = false;                        // NOLINT(readability-identifier-naming)
    bool WaAuxTable16KGranular = false;                             // NOLINT(readability-identifier-naming)
    bool WaDisableFusedThreadScheduling = false;                    // NOLINT(readability-identifier-naming)
};

typedef struct COMMAND_BUFFER_HEADER_REC { // NOLINT(readability-identifier-naming)
    uint32_t UmdContextType : 4;           // NOLINT(readability-identifier-naming)
    uint32_t UmdPatchList : 1;             // NOLINT(readability-identifier-naming)

    uint32_t UmdRequestedSliceState : 3;    // NOLINT(readability-identifier-naming)
    uint32_t UmdRequestedSubsliceCount : 3; // NOLINT(readability-identifier-naming)
    uint32_t UmdRequestedEUCount : 5;       // NOLINT(readability-identifier-naming)

    uint32_t UsesResourceStreamer : 1;           // NOLINT(readability-identifier-naming)
    uint32_t NeedsMidBatchPreEmptionSupport : 1; // NOLINT(readability-identifier-naming)
    uint32_t UsesGPGPUPipeline : 1;              // NOLINT(readability-identifier-naming)
    uint32_t RequiresCoherency : 1;              // NOLINT(readability-identifier-naming)

    uint32_t PerfTag;           // NOLINT(readability-identifier-naming)
    uint64_t MonitorFenceVA;    // NOLINT(readability-identifier-naming)
    uint64_t MonitorFenceValue; // NOLINT(readability-identifier-naming)
} COMMAND_BUFFER_HEADER;

typedef struct __GMM_GFX_PARTITIONING {
    struct
    {
        uint64_t Base, Limit; // NOLINT(readability-identifier-naming)
    } Standard,               // NOLINT(readability-identifier-naming)
        Standard64KB,         // NOLINT(readability-identifier-naming)
        Reserved0,            // NOLINT(readability-identifier-naming)
        Reserved1,            // NOLINT(readability-identifier-naming)
        SVM,                  // NOLINT(readability-identifier-naming)
        TR,                   // NOLINT(readability-identifier-naming)
        Heap32[4];            // NOLINT(readability-identifier-naming)
} GMM_GFX_PARTITIONING;

struct CREATECONTEXT_PVTDATA { // NOLINT(readability-identifier-naming)
    unsigned long *pHwContextId;
    uint32_t NumberOfHwContextIds; // NOLINT(readability-identifier-naming)

    uint32_t ProcessID;              // NOLINT(readability-identifier-naming)
    uint8_t IsProtectedProcess;      // NOLINT(readability-identifier-naming)
    uint8_t IsDwm;                   // NOLINT(readability-identifier-naming)
    uint8_t IsMediaUsage;            // NOLINT(readability-identifier-naming)
    uint8_t GpuVAContext;            // NOLINT(readability-identifier-naming)
    BOOLEAN NoRingFlushes;           // NOLINT(readability-identifier-naming)
    BOOLEAN DummyPageBackingEnabled; // NOLINT(readability-identifier-naming)
    uint32_t UmdContextType;         // NOLINT(readability-identifier-naming)
};

struct PLATFORM_KMD : PLATFORM_GMM { // NOLINT(readability-identifier-naming)

    struct HwIpVersion {
        uint32_t Value; // NOLINT(readability-identifier-naming)
    };

    HwIpVersion sRenderBlockID;
};

struct ADAPTER_INFO_KMD : ADAPTER_INFO_GMM { // NOLINT(readability-identifier-naming)
    SKU_FEATURE_TABLE_KMD SkuTable;          // NOLINT(readability-identifier-naming)
    WA_TABLE_KMD WaTable;                    // NOLINT(readability-identifier-naming)
    GMM_GFX_PARTITIONING GfxPartition;       // NOLINT(readability-identifier-naming)
    ADAPTER_BDF stAdapterBDF;
    PLATFORM_KMD GfxPlatform; // NOLINT(readability-identifier-naming)
    uint64_t LMemBarSize;     // NOLINT(readability-identifier-naming)
    uint8_t SegmentId[3];     // NOLINT(readability-identifier-naming)
};

static constexpr COMMAND_BUFFER_HEADER initCommandBufferHeader(uint32_t umdContextType, uint32_t umdPatchList, uint32_t usesResourceStreamer, uint32_t perfTag) {
    COMMAND_BUFFER_HEADER ret = {};
    ret.UmdContextType = umdContextType;
    ret.UmdPatchList = umdPatchList;
    ret.UsesResourceStreamer = usesResourceStreamer;
    ret.PerfTag = perfTag;
    return ret;
}

#ifdef DECLARE_COMMAND_BUFFER
#undef DECLARE_COMMAND_BUFFER
#endif
#define DECLARE_COMMAND_BUFFER(VARNAME, CONTEXTTYPE, PATCHLIST, STREAMER, PERFTAG) \
    static constexpr COMMAND_BUFFER_HEADER VARNAME = initCommandBufferHeader(CONTEXTTYPE, PATCHLIST, STREAMER, PERFTAG);

inline void propagateData(ADAPTER_INFO_KMD &adapterInfo) {
    ADAPTER_INFO &base = static_cast<ADAPTER_INFO &>(adapterInfo);
    base.SkuTable = adapterInfo.SkuTable;
    base.WaTable = adapterInfo.WaTable;
    base.GfxPlatform = adapterInfo.GfxPlatform;
}
struct CREATEHWQUEUE_PVTDATA {}; // NOLINT(readability-identifier-naming)
#endif