xref: /aosp_15_r20/external/gmmlib/Source/inc/common/sku_wa.h (revision 35ffd701415c9e32e53136d61a677a8d0a8fc4a5)
1*35ffd701SAndroid Build Coastguard Worker /*==============================================================================
2*35ffd701SAndroid Build Coastguard Worker Copyright(c) 2017 Intel Corporation
3*35ffd701SAndroid Build Coastguard Worker 
4*35ffd701SAndroid Build Coastguard Worker Permission is hereby granted, free of charge, to any person obtaining a
5*35ffd701SAndroid Build Coastguard Worker copy of this software and associated documentation files(the "Software"),
6*35ffd701SAndroid Build Coastguard Worker to deal in the Software without restriction, including without limitation
7*35ffd701SAndroid Build Coastguard Worker the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*35ffd701SAndroid Build Coastguard Worker and / or sell copies of the Software, and to permit persons to whom the
9*35ffd701SAndroid Build Coastguard Worker Software is furnished to do so, subject to the following conditions:
10*35ffd701SAndroid Build Coastguard Worker 
11*35ffd701SAndroid Build Coastguard Worker The above copyright notice and this permission notice shall be included
12*35ffd701SAndroid Build Coastguard Worker in all copies or substantial portions of the Software.
13*35ffd701SAndroid Build Coastguard Worker 
14*35ffd701SAndroid Build Coastguard Worker THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15*35ffd701SAndroid Build Coastguard Worker OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*35ffd701SAndroid Build Coastguard Worker FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17*35ffd701SAndroid Build Coastguard Worker THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18*35ffd701SAndroid Build Coastguard Worker OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19*35ffd701SAndroid Build Coastguard Worker ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20*35ffd701SAndroid Build Coastguard Worker OTHER DEALINGS IN THE SOFTWARE.
21*35ffd701SAndroid Build Coastguard Worker ============================================================================*/
22*35ffd701SAndroid Build Coastguard Worker /*
23*35ffd701SAndroid Build Coastguard Worker File Name: sku_wa.h
24*35ffd701SAndroid Build Coastguard Worker 
25*35ffd701SAndroid Build Coastguard Worker Description:
26*35ffd701SAndroid Build Coastguard Worker     Common hardware sku and workaround information structures.
27*35ffd701SAndroid Build Coastguard Worker 
28*35ffd701SAndroid Build Coastguard Worker     This file is commented in a manner allowing automated parsing of WA information.
29*35ffd701SAndroid Build Coastguard Worker     Each entry inside WA table should include comments in form of:
30*35ffd701SAndroid Build Coastguard Worker         @WorkaroundName           <name-mandatory> //this field is mandatory
31*35ffd701SAndroid Build Coastguard Worker         @Description              <short description (can be multiline)
32*35ffd701SAndroid Build Coastguard Worker         @PerfImpact               <performance impact>
33*35ffd701SAndroid Build Coastguard Worker         @BugType                  <hang,crash etc.>
34*35ffd701SAndroid Build Coastguard Worker         @Component                <Gmm>
35*35ffd701SAndroid Build Coastguard Worker 
36*35ffd701SAndroid Build Coastguard Worker \*****************************************************************************/
37*35ffd701SAndroid Build Coastguard Worker #ifndef __SKU_WA_H__
38*35ffd701SAndroid Build Coastguard Worker #define __SKU_WA_H__
39*35ffd701SAndroid Build Coastguard Worker 
40*35ffd701SAndroid Build Coastguard Worker // Prevent the following...
41*35ffd701SAndroid Build Coastguard Worker // warning: ISO C++ prohibits anonymous structs [-pedantic]
42*35ffd701SAndroid Build Coastguard Worker // warning: ISO C90 doesn't support unnamed structs/unions [-pedantic]
43*35ffd701SAndroid Build Coastguard Worker #if defined(__clang__)
44*35ffd701SAndroid Build Coastguard Worker #pragma clang diagnostic push
45*35ffd701SAndroid Build Coastguard Worker #pragma clang diagnostic ignored "-Wpedantic" // clang only recognizes -Wpedantic
46*35ffd701SAndroid Build Coastguard Worker #elif defined(__GNUC__)
47*35ffd701SAndroid Build Coastguard Worker #pragma GCC diagnostic push
48*35ffd701SAndroid Build Coastguard Worker #if __GNUC__ >= 6
49*35ffd701SAndroid Build Coastguard Worker #pragma GCC diagnostic ignored "-Wpedantic"
50*35ffd701SAndroid Build Coastguard Worker #else
51*35ffd701SAndroid Build Coastguard Worker #pragma GCC diagnostic ignored "-pedantic" // gcc <= 4.7.4 only recognizes -pedantic
52*35ffd701SAndroid Build Coastguard Worker #endif
53*35ffd701SAndroid Build Coastguard Worker #endif
54*35ffd701SAndroid Build Coastguard Worker 
55*35ffd701SAndroid Build Coastguard Worker //********************************** SKU ****************************************
56*35ffd701SAndroid Build Coastguard Worker 
57*35ffd701SAndroid Build Coastguard Worker // Sku Table structure to abstract sku based hw feature availability
58*35ffd701SAndroid Build Coastguard Worker // For any Sku based feature, add a field in this structure
59*35ffd701SAndroid Build Coastguard Worker 
60*35ffd701SAndroid Build Coastguard Worker typedef struct _SKU_FEATURE_TABLE
61*35ffd701SAndroid Build Coastguard Worker {
62*35ffd701SAndroid Build Coastguard Worker     // flags 1 = available, 0 = not available
63*35ffd701SAndroid Build Coastguard Worker     struct //_sku_Core
64*35ffd701SAndroid Build Coastguard Worker     {
65*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrULT       : 1;  // Indicates ULT SKU
66*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrVERing    : 1;  // Separate Ring for VideoEnhancement commands
67*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrVcs2      : 1;  // Second VCS engine supported on Gen8 to Gen10 (in some configurations);
68*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrLCIA      : 1;  // Indicates Atom (Low Cost Intel Architecture)
69*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrCCSRing : 1; // To indicate if CCS hardware ring support is present.
70*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrCCSNode : 1; // To indicate if CCS Node support is present.
71*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrTileY     : 1;  // Identifies Legacy tiles TileY/Yf/Ys on the platform
72*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrCCSMultiInstance : 1; // To indicate if driver supports MultiContext mode on RCS and more than 1 CCS.
73*35ffd701SAndroid Build Coastguard Worker 	unsigned int   FtrL3TransientDataFlush : 1;  // Transient data flush from L3 cache
74*35ffd701SAndroid Build Coastguard Worker     };
75*35ffd701SAndroid Build Coastguard Worker 
76*35ffd701SAndroid Build Coastguard Worker 
77*35ffd701SAndroid Build Coastguard Worker     struct //_sku_KMD_render
78*35ffd701SAndroid Build Coastguard Worker     {                                                               // MI commends are capable to set
79*35ffd701SAndroid Build Coastguard Worker 
80*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrPPGTT                         : 1;  // Per-Process GTT
81*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrIA32eGfxPTEs                  : 1;  // GTT/PPGTT's use 64-bit IA-32e PTE format.
82*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrMemTypeMocsDeferPAT           : 1;  // Pre-Gen12 MOCS can defers to PAT,  e.g. eLLC Target Cache for MOCS
83*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrPml4Support                   : 1;  // PML4-based gfx page tables are supported (in addition to PD-based tables).
84*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrSVM                           : 1;  // Shared Virtual Memory (i.e. support for SVM buffers which can be accessed by both the CPU and GPU at numerically equivalent addresses.)
85*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrTileMappedResource            : 1;  // Tiled Resource support aka Sparse Textures.
86*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrTranslationTable              : 1;  // Translation Table support for Tiled Resources.
87*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrUserModeTranslationTable      : 1;  // User mode managed Translation Table support for Tiled Resources.
88*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrNullPages                     : 1;  // Support for PTE-based Null pages for Sparse/Tiled Resources).
89*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrEDram                         : 1;  // embedded DRAM enable
90*35ffd701SAndroid Build Coastguard Worker 	unsigned int   FtrLLCBypass                     : 1;  // Partial tunneling of UC memory traffic via CCF (LLC Bypass)
91*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrCrystalwell                   : 1;  // Crystalwell Sku
92*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrCentralCachePolicy            : 1;  // Centralized Cache Policy
93*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrWddm2GpuMmu                   : 1;  // WDDMv2 GpuMmu Model (Set in platform SKU files, but disabled by GMM as appropriate for given system.)
94*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrWddm2Svm                      : 1;  // WDDMv2 SVM Model (Set in platform SKU files, but disabled by GMM as appropriate for given system.)
95*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrStandardMipTailFormat         : 1;  // Dx Standard MipTail Format for TileYf/Ys
96*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrWddm2_1_64kbPages             : 1;  // WDDMv2.1 64KB page support
97*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrE2ECompression                : 1;  // E2E Compression ie Aux Table support
98*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrLinearCCS                     : 1;  // Linear Aux surface is supported
99*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrFrameBufferLLC                : 1;  // Displayable Frame buffers cached in LLC
100*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrDriverFLR                     : 1;  // Enable Function Level Reset (Gen11+)
101*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrLocalMemory                   : 1;
102*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrCameraCaptureCaching          : 1;
103*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrLocalMemoryAllows4KB          : 1;
104*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrPpgtt64KBWalkOptimization     : 1;  // XeHP 64KB Page table walk optimization on PPGTT.
105*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrFlatPhysCCS                   : 1;  // XeHP compression ie flat physical CCS
106*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrDisplayXTiling                : 1;  // Fallback to Legacy TileX Display, used for Pre-SI platforms.
107*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrMultiTileArch                 : 1;
108*35ffd701SAndroid Build Coastguard Worker 	unsigned int   FtrDisplayPageTables             : 1;  // Display Page Tables: 2-Level Page walk for Displayable Frame buffers in GGTT.
109*35ffd701SAndroid Build Coastguard Worker         unsigned int   Ftr57bGPUAddressing              : 1;  // 57b GPUVA support eg: PVC
110*35ffd701SAndroid Build Coastguard Worker 	unsigned int   FtrUnified3DMediaCompressionFormats : 1; // DG2 has unified Render/media compression(versus TGLLP/XeHP_SDV 's multiple instances) and requires changes to RC format h/w encodings.
111*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrForceTile4                    : 1;  // Flag to force Tile4 usage as default in Tile64 supported platforms.
112*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrTile64Optimization            : 1;
113*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrDiscrete                      : 1;  // Discrete-gfx
114*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrXe2Compression                : 1;  // Xe2 Stateless Compression
115*35ffd701SAndroid Build Coastguard Worker 	unsigned int   FtrXe2PlusTiling                 : 1;  // Tile64 MSAA Layout
116*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrL4Cache                       : 1;  // L4 cache support
117*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrPml5Support                   : 1;  // xe2 page tables
118*35ffd701SAndroid Build Coastguard Worker 
119*35ffd701SAndroid Build Coastguard Worker     };
120*35ffd701SAndroid Build Coastguard Worker 
121*35ffd701SAndroid Build Coastguard Worker 
122*35ffd701SAndroid Build Coastguard Worker     struct //_sku_3d
123*35ffd701SAndroid Build Coastguard Worker     {
124*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrAstcLdr2D : 1;  // ASTC 2D LDR Mode Support (mutually exclusive from other ASTC Ftr's)
125*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrAstcHdr2D : 1;  // ASTC 2D HDR Mode Support (mutually exclusive from other ASTC Ftr's)
126*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrAstc3D : 1;  // ASTC 3D LDR/HDR Mode Support (mutually exclusive from other ASTC Ftr's)
127*35ffd701SAndroid Build Coastguard Worker     };
128*35ffd701SAndroid Build Coastguard Worker 
129*35ffd701SAndroid Build Coastguard Worker     struct //_sku_PwrCons
130*35ffd701SAndroid Build Coastguard Worker     {
131*35ffd701SAndroid Build Coastguard Worker         //FBC
132*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrFbc : 1;  // Frame Buffer Compression
133*35ffd701SAndroid Build Coastguard Worker 
134*35ffd701SAndroid Build Coastguard Worker     };
135*35ffd701SAndroid Build Coastguard Worker 
136*35ffd701SAndroid Build Coastguard Worker     struct //_sku_Display
137*35ffd701SAndroid Build Coastguard Worker     {
138*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrRendComp : 1; // For Render Compression Feature on Gen9+
139*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrDisplayYTiling : 1; // For Y Tile Feature on Gen9+
140*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrDisplayDisabled : 1;  // Server skus with Display
141*35ffd701SAndroid Build Coastguard Worker 
142*35ffd701SAndroid Build Coastguard Worker 	};
143*35ffd701SAndroid Build Coastguard Worker 
144*35ffd701SAndroid Build Coastguard Worker     struct
145*35ffd701SAndroid Build Coastguard Worker     {
146*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrS3D : 1;  // Stereoscopic 3D
147*35ffd701SAndroid Build Coastguard Worker         unsigned int   FtrDisplayEngineS3d : 1;  // Display Engine Stereoscopic 3D
148*35ffd701SAndroid Build Coastguard Worker     };
149*35ffd701SAndroid Build Coastguard Worker 
150*35ffd701SAndroid Build Coastguard Worker     struct // Virtualization features
151*35ffd701SAndroid Build Coastguard Worker     {
152*35ffd701SAndroid Build Coastguard Worker         unsigned int    FtrVgt : 1;
153*35ffd701SAndroid Build Coastguard Worker     };
154*35ffd701SAndroid Build Coastguard Worker     struct // For MultiTileArch, KMD reports default tile assignment to UMD-GmmLib - via __KmQueryDriverPrivateInfo
155*35ffd701SAndroid Build Coastguard Worker     {
156*35ffd701SAndroid Build Coastguard Worker         unsigned int FtrAssignedGpuTile : 3;  // Indicates Gpu Tile number assigned to a process for Naive apps.
157*35ffd701SAndroid Build Coastguard Worker     };
158*35ffd701SAndroid Build Coastguard Worker 
159*35ffd701SAndroid Build Coastguard Worker } SKU_FEATURE_TABLE, *PSKU_FEATURE_TABLE;
160*35ffd701SAndroid Build Coastguard Worker 
161*35ffd701SAndroid Build Coastguard Worker #if defined(__clang__)
162*35ffd701SAndroid Build Coastguard Worker #pragma clang diagnostic pop
163*35ffd701SAndroid Build Coastguard Worker #elif defined(__GNUC__)
164*35ffd701SAndroid Build Coastguard Worker #pragma GCC diagnostic pop
165*35ffd701SAndroid Build Coastguard Worker #endif
166*35ffd701SAndroid Build Coastguard Worker 
167*35ffd701SAndroid Build Coastguard Worker //********************************** WA ****************************************
168*35ffd701SAndroid Build Coastguard Worker 
169*35ffd701SAndroid Build Coastguard Worker #define WA_DECLARE( wa, wa_comment, wa_bugType, wa_impact, wa_component) unsigned int wa : 1;
170*35ffd701SAndroid Build Coastguard Worker 
171*35ffd701SAndroid Build Coastguard Worker enum WA_BUG_TYPE
172*35ffd701SAndroid Build Coastguard Worker {
173*35ffd701SAndroid Build Coastguard Worker     WA_BUG_TYPE_UNKNOWN = 0,
174*35ffd701SAndroid Build Coastguard Worker     WA_BUG_TYPE_CORRUPTION = 1,
175*35ffd701SAndroid Build Coastguard Worker     WA_BUG_TYPE_HANG = 2,
176*35ffd701SAndroid Build Coastguard Worker     WA_BUG_TYPE_PERF = 4,
177*35ffd701SAndroid Build Coastguard Worker     WA_BUG_TYPE_FUNCTIONAL = 8,
178*35ffd701SAndroid Build Coastguard Worker     WA_BUG_TYPE_SPEC = 16,
179*35ffd701SAndroid Build Coastguard Worker     WA_BUG_TYPE_FAIL = 32
180*35ffd701SAndroid Build Coastguard Worker };
181*35ffd701SAndroid Build Coastguard Worker 
182*35ffd701SAndroid Build Coastguard Worker #define WA_BUG_PERF_IMPACT(f) f
183*35ffd701SAndroid Build Coastguard Worker #define WA_BUG_PERF_IMPACT_UNKNOWN -1
184*35ffd701SAndroid Build Coastguard Worker 
185*35ffd701SAndroid Build Coastguard Worker enum WA_COMPONENT
186*35ffd701SAndroid Build Coastguard Worker {
187*35ffd701SAndroid Build Coastguard Worker     WA_COMPONENT_UNKNOWN = 0,
188*35ffd701SAndroid Build Coastguard Worker     WA_COMPONENT_GMM = 0x1,
189*35ffd701SAndroid Build Coastguard Worker     WA_COMPONENT_MEDIA = 0x2,
190*35ffd701SAndroid Build Coastguard Worker     WA_COMPONENT_OCL = 0x3,
191*35ffd701SAndroid Build Coastguard Worker };
192*35ffd701SAndroid Build Coastguard Worker 
193*35ffd701SAndroid Build Coastguard Worker // Workaround Table structure to abstract WA based on hw and rev id
194*35ffd701SAndroid Build Coastguard Worker typedef struct _WA_TABLE
195*35ffd701SAndroid Build Coastguard Worker {
196*35ffd701SAndroid Build Coastguard Worker         // struct wa_3d
197*35ffd701SAndroid Build Coastguard Worker         unsigned int : 0;
198*35ffd701SAndroid Build Coastguard Worker 
199*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
200*35ffd701SAndroid Build Coastguard Worker         WaAlignIndexBuffer,
201*35ffd701SAndroid Build Coastguard Worker         "Force the end of the index buffer to be cacheline-aligned to work around a hardware bug that performs no bounds checking on accesses past the end of the index buffer when it only partially fills a cacheline.",
202*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_CORRUPTION,
203*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
204*35ffd701SAndroid Build Coastguard Worker 
205*35ffd701SAndroid Build Coastguard Worker         // struct _wa_Gmm
206*35ffd701SAndroid Build Coastguard Worker         unsigned int : 0;
207*35ffd701SAndroid Build Coastguard Worker 
208*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
209*35ffd701SAndroid Build Coastguard Worker         WaValign2ForR8G8B8UINTFormat,
210*35ffd701SAndroid Build Coastguard Worker         "sampler format decoding error in HW for this particular format double fetching is happening, WA is to use VALIGN_2 instead of VALIGN_4",
211*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_CORRUPTION,
212*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT(0), WA_COMPONENT_UNKNOWN)
213*35ffd701SAndroid Build Coastguard Worker 
214*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
215*35ffd701SAndroid Build Coastguard Worker         WaValign2For96bppFormats,
216*35ffd701SAndroid Build Coastguard Worker         "VALIGN_2 only for 96bpp formats.",
217*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
218*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
219*35ffd701SAndroid Build Coastguard Worker 
220*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
221*35ffd701SAndroid Build Coastguard Worker         WaCursor16K,
222*35ffd701SAndroid Build Coastguard Worker         "Cursor memory need to be mapped in GTT",
223*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
224*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
225*35ffd701SAndroid Build Coastguard Worker 
226*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
227*35ffd701SAndroid Build Coastguard Worker         Wa8kAlignforAsyncFlip,
228*35ffd701SAndroid Build Coastguard Worker         "Enable 8k pitch alignment for Asynchronous Flips in rotated mode. (!) Unconventional use! When used, set each XP mode-change (not in platform WA file)!",
229*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
230*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
231*35ffd701SAndroid Build Coastguard Worker 
232*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
233*35ffd701SAndroid Build Coastguard Worker         Wa29BitDisplayAddrLimit,
234*35ffd701SAndroid Build Coastguard Worker         "Sprite/Overlay/Display addresses limited to 29 bits (512MB)",
235*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
236*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
237*35ffd701SAndroid Build Coastguard Worker 
238*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
239*35ffd701SAndroid Build Coastguard Worker         WaAlignContextImage,
240*35ffd701SAndroid Build Coastguard Worker         "WA for context alignment",
241*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
242*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
243*35ffd701SAndroid Build Coastguard Worker 
244*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
245*35ffd701SAndroid Build Coastguard Worker         WaForceGlobalGTT,
246*35ffd701SAndroid Build Coastguard Worker         "WA for cmds requiring memory address to come from global GTT, not PPGTT.",
247*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
248*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
249*35ffd701SAndroid Build Coastguard Worker 
250*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
251*35ffd701SAndroid Build Coastguard Worker         WaReportPerfCountForceGlobalGTT,
252*35ffd701SAndroid Build Coastguard Worker         "WA for MI_REPORT_PERF_COUNT cmd requiring memory address to come from global GTT, not PPGTT.",
253*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
254*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
255*35ffd701SAndroid Build Coastguard Worker 
256*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
257*35ffd701SAndroid Build Coastguard Worker         WaOaAddressTranslation,
258*35ffd701SAndroid Build Coastguard Worker         "WA for STDW and PIPE_CONTROL cmd requiring memory address to come from global GTT, not PPGTT.",
259*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
260*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
261*35ffd701SAndroid Build Coastguard Worker 
262*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
263*35ffd701SAndroid Build Coastguard Worker         Wa2RowVerticalAlignment,
264*35ffd701SAndroid Build Coastguard Worker         "WA to set VALIGN of sample and rt buffers.",
265*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
266*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
267*35ffd701SAndroid Build Coastguard Worker 
268*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
269*35ffd701SAndroid Build Coastguard Worker         WaPpgttAliasGlobalGttSpace,
270*35ffd701SAndroid Build Coastguard Worker         "Disallow independent PPGTT space--i.e. the PPGTT must simply alias global GTT space. (N/A without FtrPageDirectory set.)",
271*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
272*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
273*35ffd701SAndroid Build Coastguard Worker 
274*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
275*35ffd701SAndroid Build Coastguard Worker         WaClearFenceRegistersAtDriverInit,
276*35ffd701SAndroid Build Coastguard Worker         "WA to clear all fence registers at driver init time.",
277*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
278*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
279*35ffd701SAndroid Build Coastguard Worker 
280*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
281*35ffd701SAndroid Build Coastguard Worker         WaRestrictPitch128KB,
282*35ffd701SAndroid Build Coastguard Worker         "Restrict max surface pitch to 128KB.",
283*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
284*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
285*35ffd701SAndroid Build Coastguard Worker 
286*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
287*35ffd701SAndroid Build Coastguard Worker         WaAvoidLLC,
288*35ffd701SAndroid Build Coastguard Worker         "Avoid LLC use. (Intended for debug purposes only.)",
289*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
290*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
291*35ffd701SAndroid Build Coastguard Worker 
292*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
293*35ffd701SAndroid Build Coastguard Worker         WaAvoidL3,
294*35ffd701SAndroid Build Coastguard Worker         "Avoid L3 use (but don't reconfigure; and naturally URB/etc. still need L3). (Intended for debug purposes only.)",
295*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
296*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
297*35ffd701SAndroid Build Coastguard Worker 
298*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
299*35ffd701SAndroid Build Coastguard Worker         Wa16TileFencesOnly,
300*35ffd701SAndroid Build Coastguard Worker         "Limit to 16 tiling fences --Set at run-time by GMM.",
301*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
302*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
303*35ffd701SAndroid Build Coastguard Worker 
304*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
305*35ffd701SAndroid Build Coastguard Worker         Wa16MBOABufferAlignment,
306*35ffd701SAndroid Build Coastguard Worker         "WA align the base address of the OA buffer to 16mb",
307*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
308*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
309*35ffd701SAndroid Build Coastguard Worker 
310*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
311*35ffd701SAndroid Build Coastguard Worker         WaTranslationTableUnavailable,
312*35ffd701SAndroid Build Coastguard Worker         "WA for BXT and SKL skus without Tiled-Resource Translation-Table (TR-TT)",
313*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_SPEC,
314*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
315*35ffd701SAndroid Build Coastguard Worker 
316*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
317*35ffd701SAndroid Build Coastguard Worker         WaNoMinimizedTrivialSurfacePadding,
318*35ffd701SAndroid Build Coastguard Worker         "(Not actual HW WA.) On BDW:B0+ trivial surfaces (single-LOD, non-arrayed, non-MSAA, 1D/2D/Buffers) are exempt from the samplers large padding requirements. This WA identifies platforms that dont yet support that.",
319*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
320*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
321*35ffd701SAndroid Build Coastguard Worker 
322*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
323*35ffd701SAndroid Build Coastguard Worker         WaNoBufferSamplerPadding,
324*35ffd701SAndroid Build Coastguard Worker         "Client agreeing to take responsibility for flushing L3 after sampling/etc.",
325*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
326*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
327*35ffd701SAndroid Build Coastguard Worker 
328*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
329*35ffd701SAndroid Build Coastguard Worker         WaSurfaceStatePlanarYOffsetAlignBy2,
330*35ffd701SAndroid Build Coastguard Worker         "WA to align SURFACE_STATE Y Offset for UV Plane by 2",
331*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
332*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
333*35ffd701SAndroid Build Coastguard Worker 
334*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
335*35ffd701SAndroid Build Coastguard Worker         WaGttCachingOffByDefault,
336*35ffd701SAndroid Build Coastguard Worker         "WA to enable the caching if off by defaultboth at driver init and Resume",
337*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
338*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
339*35ffd701SAndroid Build Coastguard Worker 
340*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
341*35ffd701SAndroid Build Coastguard Worker         WaTouchAllSvmMemory,
342*35ffd701SAndroid Build Coastguard Worker         "When in WDDM2 / SVM mode, all VA memory buffers/surfaces/etc need to be touched to ensure proper PTE mapping",
343*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
344*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
345*35ffd701SAndroid Build Coastguard Worker 
346*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
347*35ffd701SAndroid Build Coastguard Worker         WaIOBAddressMustBeValidInHwContext,
348*35ffd701SAndroid Build Coastguard Worker         "IndirectObjectBase address (of SBA cmd) in HW Context needs to be valid because it gets used every Context load",
349*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_HANG,
350*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
351*35ffd701SAndroid Build Coastguard Worker 
352*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
353*35ffd701SAndroid Build Coastguard Worker         WaFlushTlbAfterCpuGgttWrites,
354*35ffd701SAndroid Build Coastguard Worker         "WA to flush TLB after CPU GTT writes because TLB entry invalidations on GTT writes use wrong address for look-up",
355*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_FUNCTIONAL,
356*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
357*35ffd701SAndroid Build Coastguard Worker 
358*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
359*35ffd701SAndroid Build Coastguard Worker         WaMsaa8xTileYDepthPitchAlignment,
360*35ffd701SAndroid Build Coastguard Worker         "WA to use 256B pitch alignment for MSAA 8x + TileY depth surfaces.",
361*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
362*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
363*35ffd701SAndroid Build Coastguard Worker 
364*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
365*35ffd701SAndroid Build Coastguard Worker         WaDisableNullPageAsDummy,
366*35ffd701SAndroid Build Coastguard Worker         "WA to disable use of NULL bit in dummy PTE",
367*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_HANG | WA_BUG_TYPE_CORRUPTION,
368*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
369*35ffd701SAndroid Build Coastguard Worker 
370*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
371*35ffd701SAndroid Build Coastguard Worker         WaUseVAlign16OnTileXYBpp816,
372*35ffd701SAndroid Build Coastguard Worker         "WA to make VAlign = 16, when bpp == 8 or 16 for both TileX and TileY on BDW",
373*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_CORRUPTION,
374*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
375*35ffd701SAndroid Build Coastguard Worker 
376*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
377*35ffd701SAndroid Build Coastguard Worker         WaNoMocsEllcOnly,
378*35ffd701SAndroid Build Coastguard Worker         "WA to get eLLC Target Cache for MOCS surfaces, when MOCS defers to PAT",
379*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_FUNCTIONAL,
380*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT, WA_COMPONENT_GMM)
381*35ffd701SAndroid Build Coastguard Worker 
382*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
383*35ffd701SAndroid Build Coastguard Worker         WaGttPat0,
384*35ffd701SAndroid Build Coastguard Worker         "GTT accesses hardwired to PAT0",
385*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_FUNCTIONAL,
386*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT, WA_COMPONENT_GMM)
387*35ffd701SAndroid Build Coastguard Worker 
388*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
389*35ffd701SAndroid Build Coastguard Worker         WaGttPat0WB,
390*35ffd701SAndroid Build Coastguard Worker         "WA to set WB cache for GTT accessess on PAT0",
391*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_FUNCTIONAL,
392*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT, WA_COMPONENT_GMM)
393*35ffd701SAndroid Build Coastguard Worker 
394*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
395*35ffd701SAndroid Build Coastguard Worker         WaMemTypeIsMaxOfPatAndMocs,
396*35ffd701SAndroid Build Coastguard Worker         "WA to set PAT.MT = UC. Since TGLLP uses MAX function to resolve PAT vs MOCS MemType So unless PTE.PAT says UC, MOCS won't be able to set UC!",
397*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_FUNCTIONAL,
398*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT, WA_COMPONENT_GMM)
399*35ffd701SAndroid Build Coastguard Worker 
400*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
401*35ffd701SAndroid Build Coastguard Worker         WaGttPat0GttWbOverOsIommuEllcOnly,
402*35ffd701SAndroid Build Coastguard Worker         "WA to set PAT0 to full cacheable (LLC+eLLC) for GTT access over eLLC only usage for OS based SVM",
403*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_FUNCTIONAL,
404*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT, WA_COMPONENT_GMM)
405*35ffd701SAndroid Build Coastguard Worker 
406*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
407*35ffd701SAndroid Build Coastguard Worker         WaAddDummyPageForDisplayPrefetch,
408*35ffd701SAndroid Build Coastguard Worker         "WA to add dummy page row after display surfaces to avoid issues with display pre-fetch",
409*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_CORRUPTION,
410*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
411*35ffd701SAndroid Build Coastguard Worker 
412*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
413*35ffd701SAndroid Build Coastguard Worker         WaLLCCachingUnsupported,
414*35ffd701SAndroid Build Coastguard Worker         "There is no H/w support for LLC in VLV or VLV Plus",
415*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
416*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
417*35ffd701SAndroid Build Coastguard Worker 
418*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
419*35ffd701SAndroid Build Coastguard Worker         WaEncryptedEdramOnlyPartials,
420*35ffd701SAndroid Build Coastguard Worker         "Disable Edram only caching for encrypted usage",
421*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_CORRUPTION,
422*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
423*35ffd701SAndroid Build Coastguard Worker 
424*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
425*35ffd701SAndroid Build Coastguard Worker         WaDisableEdramForDisplayRT,
426*35ffd701SAndroid Build Coastguard Worker         "WA to disable EDRAM cacheability of Displayable Render Targets on SKL Steppings until I0",
427*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_PERF,
428*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT, WA_COMPONENT_GMM)
429*35ffd701SAndroid Build Coastguard Worker 
430*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
431*35ffd701SAndroid Build Coastguard Worker         WaAstcCorruptionForOddCompressedBlockSizeX,
432*35ffd701SAndroid Build Coastguard Worker         "Enable CHV D0+ WA for ASTC HW bug: sampling from mip levels 2+ returns wrong texels. WA adds XOffset to mip2+, requires D0 HW ECO fix.",
433*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_CORRUPTION,
434*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
435*35ffd701SAndroid Build Coastguard Worker 
436*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
437*35ffd701SAndroid Build Coastguard Worker         WaLosslessCompressionSurfaceStride,
438*35ffd701SAndroid Build Coastguard Worker         "WA to align surface stride for unified aux surfaces",
439*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
440*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
441*35ffd701SAndroid Build Coastguard Worker 
442*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
443*35ffd701SAndroid Build Coastguard Worker         Wa4kAlignUVOffsetNV12LinearSurface,
444*35ffd701SAndroid Build Coastguard Worker         "WA to align UV plane offset at 4k page for NV12 Linear FlipChain surfaces",
445*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_CORRUPTION,
446*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
447*35ffd701SAndroid Build Coastguard Worker 
448*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
449*35ffd701SAndroid Build Coastguard Worker         WaFbcLinearSurfaceStride,
450*35ffd701SAndroid Build Coastguard Worker         "WA to align surface stride for linear primary surfaces",
451*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
452*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
453*35ffd701SAndroid Build Coastguard Worker 
454*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
455*35ffd701SAndroid Build Coastguard Worker         WaDoubleFastClearWidthAlignment,
456*35ffd701SAndroid Build Coastguard Worker         "For all HSW GT3 skus and for all HSW GT E0+ skus, must double the width alignment when performing fast clears.",
457*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_CORRUPTION,
458*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
459*35ffd701SAndroid Build Coastguard Worker 
460*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
461*35ffd701SAndroid Build Coastguard Worker         WaCompressedResourceRequiresConstVA21,
462*35ffd701SAndroid Build Coastguard Worker         "3D and Media compressed resources should not have addresses that change within bit range [20:0]",
463*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
464*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
465*35ffd701SAndroid Build Coastguard Worker 
466*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
467*35ffd701SAndroid Build Coastguard Worker         WaDisregardPlatformChecks,
468*35ffd701SAndroid Build Coastguard Worker         "Disable plarform checks to surface allocation.",
469*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
470*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
471*35ffd701SAndroid Build Coastguard Worker 
472*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
473*35ffd701SAndroid Build Coastguard Worker         WaAlignYUVResourceToLCU,
474*35ffd701SAndroid Build Coastguard Worker         "source and recon surfaces need to be aligned to the LCU size",
475*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_CORRUPTION,
476*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
477*35ffd701SAndroid Build Coastguard Worker 
478*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
479*35ffd701SAndroid Build Coastguard Worker         Wa32bppTileY2DColorNoHAlign4,
480*35ffd701SAndroid Build Coastguard Worker         "Wa to defeature HALIGN_4 for 2D 32bpp RT surfaces, due to bug introduced from daprsc changes to help RCPB generate correct offsets to deal with cam match",
481*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_CORRUPTION,
482*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
483*35ffd701SAndroid Build Coastguard Worker 
484*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
485*35ffd701SAndroid Build Coastguard Worker         WaAuxTable16KGranular,
486*35ffd701SAndroid Build Coastguard Worker         "AuxTable map granularity changed to 16K ",
487*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_PERF,
488*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
489*35ffd701SAndroid Build Coastguard Worker 
490*35ffd701SAndroid Build Coastguard Worker 	WA_DECLARE(
491*35ffd701SAndroid Build Coastguard Worker         WaAuxTable64KGranular,
492*35ffd701SAndroid Build Coastguard Worker         "AuxTable map granularity changed to 64K ..Remove once Neo switches reference to WaAuxTable16KGranular",
493*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_PERF,
494*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
495*35ffd701SAndroid Build Coastguard Worker 
496*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
497*35ffd701SAndroid Build Coastguard Worker         WaLimit128BMediaCompr,
498*35ffd701SAndroid Build Coastguard Worker         "WA to limit media decompression on Render pipe to 128B (2CLs) 4:n.",
499*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_FUNCTIONAL,
500*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
501*35ffd701SAndroid Build Coastguard Worker 
502*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
503*35ffd701SAndroid Build Coastguard Worker         WaUntypedBufferCompression,
504*35ffd701SAndroid Build Coastguard Worker         "WA to allow untyped raw buffer AuxTable mapping",
505*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_FUNCTIONAL,
506*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
507*35ffd701SAndroid Build Coastguard Worker 
508*35ffd701SAndroid Build Coastguard Worker 	WA_DECLARE(
509*35ffd701SAndroid Build Coastguard Worker         Wa64kbMappingAt2mbGranularity,
510*35ffd701SAndroid Build Coastguard Worker         "WA to force 2MB alignment for 64KB-LMEM pages",
511*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_FUNCTIONAL,
512*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
513*35ffd701SAndroid Build Coastguard Worker 
514*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
515*35ffd701SAndroid Build Coastguard Worker         WaDefaultTile4,
516*35ffd701SAndroid Build Coastguard Worker         "[XeHP] Keep Tile4 as default on XeHP till B stepping",
517*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
518*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
519*35ffd701SAndroid Build Coastguard Worker 
520*35ffd701SAndroid Build Coastguard Worker 	WA_DECLARE(
521*35ffd701SAndroid Build Coastguard Worker         Wa_1606955757,
522*35ffd701SAndroid Build Coastguard Worker         "[GPSSCLT] [XeHP] Multicontext (LB) : out-of-order write-read access to scratch space from hdctlbunit",
523*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
524*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_OGL)
525*35ffd701SAndroid Build Coastguard Worker 
526*35ffd701SAndroid Build Coastguard Worker 	WA_DECLARE(
527*35ffd701SAndroid Build Coastguard Worker         WaTile64Optimization,
528*35ffd701SAndroid Build Coastguard Worker         "Tile64 wastge a lot of memory so WA provides optimization to fall back to Tile4 when waste is relatively higher",
529*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
530*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
531*35ffd701SAndroid Build Coastguard Worker 
532*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
533*35ffd701SAndroid Build Coastguard Worker         Wa_15010089951,
534*35ffd701SAndroid Build Coastguard Worker         "[DG2][Silicon][Perf]DG2 VESFC performance when Compression feature is enabled.",
535*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_PERF,
536*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
537*35ffd701SAndroid Build Coastguard Worker 
538*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
539*35ffd701SAndroid Build Coastguard Worker         Wa_22016140776,
540*35ffd701SAndroid Build Coastguard Worker         "[PVC] operation unexpectedly results in NAN",
541*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
542*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
543*35ffd701SAndroid Build Coastguard Worker 
544*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
545*35ffd701SAndroid Build Coastguard Worker         Wa_14018443005,
546*35ffd701SAndroid Build Coastguard Worker         "[Xe2] - Incorrect handling of compression when changing cached PA usage from compression OFF and another client does partial sector compression ON on W with UC",
547*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
548*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
549*35ffd701SAndroid Build Coastguard Worker 
550*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
551*35ffd701SAndroid Build Coastguard Worker         Wa_14018976079,
552*35ffd701SAndroid Build Coastguard Worker         "[LNL] CPU-GPU False sharing broken for 1-way coherent pages",
553*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
554*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
555*35ffd701SAndroid Build Coastguard Worker 
556*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
557*35ffd701SAndroid Build Coastguard Worker         Wa_14018984349,
558*35ffd701SAndroid Build Coastguard Worker         "[LNL] CPU-GPU False sharing broken for non-coherent pages",
559*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
560*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
561*35ffd701SAndroid Build Coastguard Worker 
562*35ffd701SAndroid Build Coastguard Worker 	WA_DECLARE(
563*35ffd701SAndroid Build Coastguard Worker         Wa_14020040029,
564*35ffd701SAndroid Build Coastguard Worker         "Misalignment on Depth buffer for Zplanes",
565*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_UNKNOWN,
566*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_GMM)
567*35ffd701SAndroid Build Coastguard Worker 
568*35ffd701SAndroid Build Coastguard Worker         WA_DECLARE(
569*35ffd701SAndroid Build Coastguard Worker         Wa_EmuMufasaSupportOnBmg,
570*35ffd701SAndroid Build Coastguard Worker         "WA for supporting failure seen in BMG with Mufasa",
571*35ffd701SAndroid Build Coastguard Worker         WA_BUG_TYPE_FUNCTIONAL,
572*35ffd701SAndroid Build Coastguard Worker         WA_BUG_PERF_IMPACT_UNKNOWN, WA_COMPONENT_UNKNOWN)
573*35ffd701SAndroid Build Coastguard Worker 
574*35ffd701SAndroid Build Coastguard Worker } WA_TABLE, *PWA_TABLE;
575*35ffd701SAndroid Build Coastguard Worker 
576*35ffd701SAndroid Build Coastguard Worker //********************************** SKU/WA Macros *************************************
577*35ffd701SAndroid Build Coastguard Worker 
578*35ffd701SAndroid Build Coastguard Worker #if (defined(__MINIPORT) || defined(__KCH) || defined(__SOFTBIOS) || defined(__GRM) || defined(__PWRCONS))
579*35ffd701SAndroid Build Coastguard Worker #if LHDM || LINUX
580*35ffd701SAndroid Build Coastguard Worker #define GFX_IS_SKU(s, f) ((s)->SkuTable.f)
581*35ffd701SAndroid Build Coastguard Worker #define GFX_IS_WA(s, w)  ((s)->WaTable.w)
582*35ffd701SAndroid Build Coastguard Worker #define GFX_WRITE_WA(x, y, z) ((x)->WaTable.y = z)
583*35ffd701SAndroid Build Coastguard Worker //No checking is done in the GFX_WRITE_SKU macro that z actually fits into y.
584*35ffd701SAndroid Build Coastguard Worker //  It is up to the user to know the size of y and to pass in z accordingly.
585*35ffd701SAndroid Build Coastguard Worker #define GFX_WRITE_SKU(x, y, z) ((x)->SkuTable.y = z)
586*35ffd701SAndroid Build Coastguard Worker #else
587*35ffd701SAndroid Build Coastguard Worker #define GFX_IS_SKU(h, f) (((PHW_DEVICE_EXTENSION)(h))->pHWStatusPage->pSkuTable->f)
588*35ffd701SAndroid Build Coastguard Worker #define GFX_IS_WA(h, w) (((PHW_DEVICE_EXTENSION)(h))->pHWStatusPage->pWaTable->w)
589*35ffd701SAndroid Build Coastguard Worker #define GFX_WRITE_WA(x, y, z) (((HW_DEVICE_EXTENSION *)(x))->pHWStatusPage->pWaTable->y = z)
590*35ffd701SAndroid Build Coastguard Worker //No checking is done in the GFX_WRITE_SKU macro that z actually fits into y.
591*35ffd701SAndroid Build Coastguard Worker //  It is up to the user to know the size of y and to pass in z accordingly.
592*35ffd701SAndroid Build Coastguard Worker #define GFX_WRITE_SKU(x, y, z) (((HW_DEVICE_EXTENSION *)(x))->pHWStatusPage->pSkuTable->y = z)
593*35ffd701SAndroid Build Coastguard Worker #endif // end LHDM
594*35ffd701SAndroid Build Coastguard Worker #else
595*35ffd701SAndroid Build Coastguard Worker #define GFX_IS_SKU(s, f) ((s)->SkuTable.f)
596*35ffd701SAndroid Build Coastguard Worker #define GFX_IS_WA(s, w)  ((s)->WaTable.w)
597*35ffd701SAndroid Build Coastguard Worker #endif
598*35ffd701SAndroid Build Coastguard Worker #define GRAPHICS_IS_SKU(s, f) ((s)->f)
599*35ffd701SAndroid Build Coastguard Worker #define GRAPHICS_IS_WA(s, w)  ((s)->w)
600*35ffd701SAndroid Build Coastguard Worker 
601*35ffd701SAndroid Build Coastguard Worker #endif //__SKU_WA_H__
602