1 /*
2  * Copyright (C) 2018-2021 Intel Corporation
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  */
7 
8 #pragma once
9 
10 #include "shared/source/gmm_helper/gmm_lib.h"
11 
12 #include "sku_info.h"
13 
14 namespace NEO {
15 struct SkuInfoBaseReference {
fillReferenceFtrForTransferSkuInfoBaseReference16     static void fillReferenceFtrForTransfer(_SKU_FEATURE_TABLE &refFtrTable) {
17         memset(&refFtrTable, 0, sizeof(refFtrTable));
18         refFtrTable.FtrStandardMipTailFormat = 1;
19         refFtrTable.FtrULT = 1;
20         refFtrTable.FtrEDram = 1;
21         refFtrTable.FtrFrameBufferLLC = 1;
22         refFtrTable.FtrCrystalwell = 1;
23         refFtrTable.FtrDisplayEngineS3d = 1;
24         refFtrTable.FtrTileY = 1;
25         refFtrTable.FtrDisplayYTiling = 1;
26         refFtrTable.FtrFbc = 1;
27         refFtrTable.FtrVERing = 1;
28         refFtrTable.FtrVcs2 = 1;
29         refFtrTable.FtrLCIA = 1;
30         refFtrTable.FtrIA32eGfxPTEs = 1;
31         refFtrTable.FtrWddm2GpuMmu = 1;
32         refFtrTable.FtrWddm2_1_64kbPages = 1;
33 
34         refFtrTable.FtrTranslationTable = 1;
35         refFtrTable.FtrUserModeTranslationTable = 1;
36         refFtrTable.FtrWddm2Svm = 1;
37         refFtrTable.FtrLLCBypass = 1;
38 
39         refFtrTable.FtrE2ECompression = 1;
40         refFtrTable.FtrLinearCCS = 1;
41         refFtrTable.FtrCCSRing = 1;
42         refFtrTable.FtrCCSNode = 1;
43         refFtrTable.FtrMemTypeMocsDeferPAT = 1;
44         refFtrTable.FtrLocalMemory = 1;
45         refFtrTable.FtrLocalMemoryAllows4KB = 1;
46         refFtrTable.FtrSVM = 1;
47         refFtrTable.FtrFlatPhysCCS = 1;
48         refFtrTable.FtrMultiTileArch = 1;
49         refFtrTable.FtrCCSMultiInstance = 1;
50         refFtrTable.FtrPpgtt64KBWalkOptimization = 1;
51         refFtrTable.FtrUnified3DMediaCompressionFormats = 1;
52         refFtrTable.Ftr57bGPUAddressing = 1;
53     }
54 
fillReferenceWaForTransferSkuInfoBaseReference55     static void fillReferenceWaForTransfer(_WA_TABLE &refWaTable) {
56         memset(&refWaTable, 0, sizeof(refWaTable));
57         refWaTable.WaFbcLinearSurfaceStride = 1;
58         refWaTable.WaDisableEdramForDisplayRT = 1;
59         refWaTable.WaEncryptedEdramOnlyPartials = 1;
60         refWaTable.WaLosslessCompressionSurfaceStride = 1;
61         refWaTable.WaRestrictPitch128KB = 1;
62         refWaTable.WaLimit128BMediaCompr = 1;
63         refWaTable.WaUntypedBufferCompression = 1;
64         refWaTable.WaAuxTable16KGranular = 1;
65         refWaTable.WaDefaultTile4 = 1;
66         refWaTable.WaAuxTable64KGranular = 1;
67     }
68 
fillReferenceFtrToReceiveSkuInfoBaseReference69     static void fillReferenceFtrToReceive(FeatureTable &refFtrTable) {
70         refFtrTable = {};
71         refFtrTable.flags.ftrDesktop = true;
72         refFtrTable.flags.ftrChannelSwizzlingXOREnabled = true;
73 
74         refFtrTable.flags.ftrGtBigDie = true;
75         refFtrTable.flags.ftrGtMediumDie = true;
76         refFtrTable.flags.ftrGtSmallDie = true;
77 
78         refFtrTable.flags.ftrGT1 = true;
79         refFtrTable.flags.ftrGT1_5 = true;
80         refFtrTable.flags.ftrGT2 = true;
81         refFtrTable.flags.ftrGT2_5 = true;
82         refFtrTable.flags.ftrGT3 = true;
83         refFtrTable.flags.ftrGT4 = true;
84 
85         refFtrTable.flags.ftrIVBM0M1Platform = true;
86         refFtrTable.flags.ftrSGTPVSKUStrapPresent = true;
87         refFtrTable.flags.ftrGTA = true;
88         refFtrTable.flags.ftrGTC = true;
89         refFtrTable.flags.ftrGTX = true;
90         refFtrTable.flags.ftr5Slice = true;
91 
92         refFtrTable.flags.ftrGpGpuMidBatchPreempt = true;
93         refFtrTable.flags.ftrGpGpuThreadGroupLevelPreempt = true;
94         refFtrTable.flags.ftrGpGpuMidThreadLevelPreempt = true;
95 
96         refFtrTable.flags.ftrIoMmuPageFaulting = true;
97         refFtrTable.flags.ftrWddm2Svm = true;
98         refFtrTable.flags.ftrPooledEuEnabled = true;
99 
100         refFtrTable.flags.ftrResourceStreamer = true;
101 
102         refFtrTable.flags.ftrPPGTT = true;
103         refFtrTable.flags.ftrSVM = true;
104         refFtrTable.flags.ftrEDram = true;
105         refFtrTable.flags.ftrL3IACoherency = true;
106         refFtrTable.flags.ftrIA32eGfxPTEs = true;
107 
108         refFtrTable.flags.ftr3dMidBatchPreempt = true;
109         refFtrTable.flags.ftr3dObjectLevelPreempt = true;
110         refFtrTable.flags.ftrPerCtxtPreemptionGranularityControl = true;
111 
112         refFtrTable.flags.ftrTileY = true;
113         refFtrTable.flags.ftrDisplayYTiling = true;
114         refFtrTable.flags.ftrTranslationTable = true;
115         refFtrTable.flags.ftrUserModeTranslationTable = true;
116 
117         refFtrTable.flags.ftrEnableGuC = true;
118 
119         refFtrTable.flags.ftrFbc = true;
120         refFtrTable.flags.ftrFbc2AddressTranslation = true;
121         refFtrTable.flags.ftrFbcBlitterTracking = true;
122         refFtrTable.flags.ftrFbcCpuTracking = true;
123 
124         refFtrTable.flags.ftrVcs2 = true;
125         refFtrTable.flags.ftrVEBOX = true;
126         refFtrTable.flags.ftrSingleVeboxSlice = true;
127         refFtrTable.flags.ftrULT = true;
128         refFtrTable.flags.ftrLCIA = true;
129         refFtrTable.flags.ftrGttCacheInvalidation = true;
130         refFtrTable.flags.ftrTileMappedResource = true;
131         refFtrTable.flags.ftrAstcHdr2D = true;
132         refFtrTable.flags.ftrAstcLdr2D = true;
133 
134         refFtrTable.flags.ftrStandardMipTailFormat = true;
135         refFtrTable.flags.ftrFrameBufferLLC = true;
136         refFtrTable.flags.ftrCrystalwell = true;
137         refFtrTable.flags.ftrLLCBypass = true;
138         refFtrTable.flags.ftrDisplayEngineS3d = true;
139         refFtrTable.flags.ftrVERing = true;
140         refFtrTable.flags.ftrWddm2GpuMmu = true;
141         refFtrTable.flags.ftrWddm2_1_64kbPages = true;
142 
143         refFtrTable.flags.ftrKmdDaf = true;
144         refFtrTable.flags.ftrSimulationMode = true;
145 
146         refFtrTable.flags.ftrE2ECompression = true;
147         refFtrTable.flags.ftrLinearCCS = true;
148         refFtrTable.flags.ftrCCSRing = true;
149         refFtrTable.flags.ftrCCSNode = true;
150         refFtrTable.flags.ftrRcsNode = true;
151         refFtrTable.flags.ftrMemTypeMocsDeferPAT = true;
152         refFtrTable.flags.ftrLocalMemory = true;
153         refFtrTable.flags.ftrLocalMemoryAllows4KB = true;
154 
155         refFtrTable.flags.ftrFlatPhysCCS = true;
156         refFtrTable.flags.ftrMultiTileArch = true;
157         refFtrTable.flags.ftrCCSMultiInstance = true;
158         refFtrTable.flags.ftrPpgtt64KBWalkOptimization = true;
159         refFtrTable.flags.ftrUnified3DMediaCompressionFormats = true;
160         refFtrTable.flags.ftr57bGPUAddressing = true;
161     }
162 
fillReferenceWaToReceiveSkuInfoBaseReference163     static void fillReferenceWaToReceive(WorkaroundTable &refWaTable) {
164         refWaTable = {};
165         refWaTable.flags.waDoNotUseMIReportPerfCount = true;
166 
167         refWaTable.flags.waEnablePreemptionGranularityControlByUMD = true;
168         refWaTable.flags.waSendMIFLUSHBeforeVFE = true;
169         refWaTable.flags.waReportPerfCountUseGlobalContextID = true;
170         refWaTable.flags.waDisableLSQCROPERFforOCL = true;
171         refWaTable.flags.waMsaa8xTileYDepthPitchAlignment = true;
172         refWaTable.flags.waLosslessCompressionSurfaceStride = true;
173         refWaTable.flags.waFbcLinearSurfaceStride = true;
174         refWaTable.flags.wa4kAlignUVOffsetNV12LinearSurface = true;
175         refWaTable.flags.waEncryptedEdramOnlyPartials = true;
176         refWaTable.flags.waDisableEdramForDisplayRT = true;
177         refWaTable.flags.waForcePcBbFullCfgRestore = true;
178         refWaTable.flags.waCompressedResourceRequiresConstVA21 = true;
179         refWaTable.flags.waDisablePerCtxtPreemptionGranularityControl = true;
180         refWaTable.flags.waLLCCachingUnsupported = true;
181         refWaTable.flags.waUseVAlign16OnTileXYBpp816 = true;
182         refWaTable.flags.waModifyVFEStateAfterGPGPUPreemption = true;
183         refWaTable.flags.waCSRUncachable = true;
184         refWaTable.flags.waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
185         refWaTable.flags.waRestrictPitch128KB = true;
186         refWaTable.flags.waLimit128BMediaCompr = true;
187         refWaTable.flags.waUntypedBufferCompression = true;
188         refWaTable.flags.waAuxTable16KGranular = true;
189         refWaTable.flags.waDisableFusedThreadScheduling = true;
190         refWaTable.flags.waDefaultTile4 = true;
191         refWaTable.flags.waAuxTable64KGranular = true;
192     }
193 }; // namespace SkuInfoBaseReference
194 } // namespace NEO
195