xref: /aosp_15_r20/external/gmmlib/Source/inc/common/gtsysinfo.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 // This header file describes the GT system info data structure and associated
24*35ffd701SAndroid Build Coastguard Worker // types and constants. It is for use by both producers and consumers of GT
25*35ffd701SAndroid Build Coastguard Worker // system info on all OS.
26*35ffd701SAndroid Build Coastguard Worker 
27*35ffd701SAndroid Build Coastguard Worker #ifndef __GT_SYS_INFO_H__
28*35ffd701SAndroid Build Coastguard Worker #define __GT_SYS_INFO_H__
29*35ffd701SAndroid Build Coastguard Worker 
30*35ffd701SAndroid Build Coastguard Worker #include <stdbool.h>
31*35ffd701SAndroid Build Coastguard Worker #include <stdint.h>
32*35ffd701SAndroid Build Coastguard Worker 
33*35ffd701SAndroid Build Coastguard Worker #pragma pack(push,1)
34*35ffd701SAndroid Build Coastguard Worker 
35*35ffd701SAndroid Build Coastguard Worker // Maximums which bound all supported GT
36*35ffd701SAndroid Build Coastguard Worker #define GT_MAX_SLICE                   (8)
37*35ffd701SAndroid Build Coastguard Worker #define GT_MAX_SUBSLICE_PER_SLICE      (8)
38*35ffd701SAndroid Build Coastguard Worker #define GT_MAX_SUBSLICE_PER_DSS        (2) // Currently max value based on Gen12
39*35ffd701SAndroid Build Coastguard Worker #define GT_MAX_DUALSUBSLICE_PER_SLICE  (6) // Currently max value based on Gen12LP
40*35ffd701SAndroid Build Coastguard Worker 
41*35ffd701SAndroid Build Coastguard Worker typedef struct GT_SUBSLICE_INFO
42*35ffd701SAndroid Build Coastguard Worker {
43*35ffd701SAndroid Build Coastguard Worker     bool                Enabled;            // determine if this SS is enabled.
44*35ffd701SAndroid Build Coastguard Worker     uint32_t            EuEnabledCount;     // Total Count of EU enabled on this SubSlice
45*35ffd701SAndroid Build Coastguard Worker     uint32_t            EuEnabledMask;      // Mask of EUs enabled on this SubSlice
46*35ffd701SAndroid Build Coastguard Worker } GT_SUBSLICE_INFO;
47*35ffd701SAndroid Build Coastguard Worker 
48*35ffd701SAndroid Build Coastguard Worker typedef struct GT_DUALSUBSLICE_INFO
49*35ffd701SAndroid Build Coastguard Worker {
50*35ffd701SAndroid Build Coastguard Worker     bool Enabled;                                       // Bool to determine if this SS is enabled.
51*35ffd701SAndroid Build Coastguard Worker     GT_SUBSLICE_INFO SubSlice[GT_MAX_SUBSLICE_PER_DSS]; // SS details that belong to this DualSubSlice.
52*35ffd701SAndroid Build Coastguard Worker } GT_DUALSUBSLICE_INFO;
53*35ffd701SAndroid Build Coastguard Worker 
54*35ffd701SAndroid Build Coastguard Worker typedef struct GT_SLICE_INFO
55*35ffd701SAndroid Build Coastguard Worker {
56*35ffd701SAndroid Build Coastguard Worker     bool                 Enabled;                                    // determine if this slice is enabled.
57*35ffd701SAndroid Build Coastguard Worker     GT_SUBSLICE_INFO     SubSliceInfo[GT_MAX_SUBSLICE_PER_SLICE];    // SS details that belong to this slice.
58*35ffd701SAndroid Build Coastguard Worker     GT_DUALSUBSLICE_INFO DSSInfo[GT_MAX_DUALSUBSLICE_PER_SLICE];     // DSS details that belong to this slice.
59*35ffd701SAndroid Build Coastguard Worker     uint32_t             SubSliceEnabledCount;                       // No. of SS enabled in this slice
60*35ffd701SAndroid Build Coastguard Worker     uint32_t             DualSubSliceEnabledCount;                   // No. of DSS enabled in this slice
61*35ffd701SAndroid Build Coastguard Worker } GT_SLICE_INFO;
62*35ffd701SAndroid Build Coastguard Worker 
63*35ffd701SAndroid Build Coastguard Worker typedef struct GT_VEBOX_INFO
64*35ffd701SAndroid Build Coastguard Worker {
65*35ffd701SAndroid Build Coastguard Worker     union VEBoxInstances
66*35ffd701SAndroid Build Coastguard Worker     {
67*35ffd701SAndroid Build Coastguard Worker         struct VEBitStruct
68*35ffd701SAndroid Build Coastguard Worker         {
69*35ffd701SAndroid Build Coastguard Worker             uint32_t    VEBox0Enabled : 1;      // To determine if VEBox0 is enabled
70*35ffd701SAndroid Build Coastguard Worker             uint32_t    VEBox1Enabled : 1;      // To determine if VEBox1 is enabled
71*35ffd701SAndroid Build Coastguard Worker             uint32_t    VEBox2Enabled : 1;      // To determine if VEBox2 is enabled
72*35ffd701SAndroid Build Coastguard Worker             uint32_t    VEBox3Enabled : 1;      // To determine if VEBox3 is enabled
73*35ffd701SAndroid Build Coastguard Worker             uint32_t    Reserved      : 28;     // Reserved bits
74*35ffd701SAndroid Build Coastguard Worker         } Bits;
75*35ffd701SAndroid Build Coastguard Worker 
76*35ffd701SAndroid Build Coastguard Worker         uint32_t VEBoxEnableMask;               // Union for all VEBox instances. It can be used to know if any of the VEBOX is enabled.
77*35ffd701SAndroid Build Coastguard Worker 
78*35ffd701SAndroid Build Coastguard Worker     } Instances;
79*35ffd701SAndroid Build Coastguard Worker 
80*35ffd701SAndroid Build Coastguard Worker     union
81*35ffd701SAndroid Build Coastguard Worker     {
82*35ffd701SAndroid Build Coastguard Worker         struct
83*35ffd701SAndroid Build Coastguard Worker         {
84*35ffd701SAndroid Build Coastguard Worker             uint32_t    VEBox0   : 1;      // Set if VEBox0 supports SFC
85*35ffd701SAndroid Build Coastguard Worker             uint32_t    VEBox1   : 1;      // Set if VEBox1 supports SFC
86*35ffd701SAndroid Build Coastguard Worker             uint32_t    VEBox2   : 1;      // Set if VEBox2 supports SFC
87*35ffd701SAndroid Build Coastguard Worker             uint32_t    VEBox3   : 1;      // Set if VEBox3 supports SFC
88*35ffd701SAndroid Build Coastguard Worker             uint32_t    Reserved : 28;     // Reserved bits
89*35ffd701SAndroid Build Coastguard Worker         }SfcSupportedBits;
90*35ffd701SAndroid Build Coastguard Worker 
91*35ffd701SAndroid Build Coastguard Worker         uint32_t Value;
92*35ffd701SAndroid Build Coastguard Worker 
93*35ffd701SAndroid Build Coastguard Worker     } SFCSupport;                               // VEBOX support of Scalar & Format Converter;
94*35ffd701SAndroid Build Coastguard Worker 
95*35ffd701SAndroid Build Coastguard Worker     uint32_t NumberOfVEBoxEnabled;              // Number of bits set among bit 0-3 of VEBoxEnableMask; used on CNL
96*35ffd701SAndroid Build Coastguard Worker 
97*35ffd701SAndroid Build Coastguard Worker     bool     IsValid;                           // flag to check if VEBoxInfo is valid.
98*35ffd701SAndroid Build Coastguard Worker 
99*35ffd701SAndroid Build Coastguard Worker } GT_VEBOX_INFO;
100*35ffd701SAndroid Build Coastguard Worker 
101*35ffd701SAndroid Build Coastguard Worker typedef struct GT_VDBOX_INFO
102*35ffd701SAndroid Build Coastguard Worker {
103*35ffd701SAndroid Build Coastguard Worker     union VDBoxInstances
104*35ffd701SAndroid Build Coastguard Worker     {
105*35ffd701SAndroid Build Coastguard Worker         struct VDBitStruct
106*35ffd701SAndroid Build Coastguard Worker         {
107*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox0Enabled : 1;      // To determine if VDBox0 is enabled
108*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox1Enabled : 1;      // To determine if VDBox1 is enabled
109*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox2Enabled : 1;      // To determine if VDBox2 is enabled
110*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox3Enabled : 1;      // To determine if VDBox3 is enabled
111*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox4Enabled : 1;      // To determine if VDBox4 is enabled
112*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox5Enabled : 1;      // To determine if VDBox5 is enabled
113*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox6Enabled : 1;      // To determine if VDBox6 is enabled
114*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox7Enabled : 1;      // To determine if VDBox7 is enabled
115*35ffd701SAndroid Build Coastguard Worker             uint32_t    Reserved      : 24;     // Reserved bits
116*35ffd701SAndroid Build Coastguard Worker         } Bits;
117*35ffd701SAndroid Build Coastguard Worker 
118*35ffd701SAndroid Build Coastguard Worker         uint32_t VDBoxEnableMask;               // Union for all VDBox instances. It can be used to know if any of the VDBOX is enabled.
119*35ffd701SAndroid Build Coastguard Worker 
120*35ffd701SAndroid Build Coastguard Worker     } Instances;
121*35ffd701SAndroid Build Coastguard Worker 
122*35ffd701SAndroid Build Coastguard Worker     union
123*35ffd701SAndroid Build Coastguard Worker     {
124*35ffd701SAndroid Build Coastguard Worker         struct
125*35ffd701SAndroid Build Coastguard Worker         {
126*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox0   : 1;      // Set if VDBox0 supports SFC
127*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox1   : 1;      // Set if VDBox1 supports SFC
128*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox2   : 1;      // Set if VDBox2 supports SFC
129*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox3   : 1;      // Set if VDBox3 supports SFC
130*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox4   : 1;      // Set if VDBox4 supports SFC
131*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox5   : 1;      // Set if VDBox5 supports SFC
132*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox6   : 1;      // Set if VDBox6 supports SFC
133*35ffd701SAndroid Build Coastguard Worker             uint32_t    VDBox7   : 1;      // Set if VDBox7 supports SFC
134*35ffd701SAndroid Build Coastguard Worker             uint32_t    Reserved : 24;     // Reserved bits
135*35ffd701SAndroid Build Coastguard Worker         }SfcSupportedBits;
136*35ffd701SAndroid Build Coastguard Worker 
137*35ffd701SAndroid Build Coastguard Worker         uint32_t Value;
138*35ffd701SAndroid Build Coastguard Worker 
139*35ffd701SAndroid Build Coastguard Worker     } SFCSupport;                               // VDBOX support of Scalar & Format Converter;
140*35ffd701SAndroid Build Coastguard Worker 
141*35ffd701SAndroid Build Coastguard Worker     uint32_t NumberOfVDBoxEnabled;              // Number of bits set among bit 0-7 of VDBoxEnableMask;
142*35ffd701SAndroid Build Coastguard Worker 
143*35ffd701SAndroid Build Coastguard Worker     bool     IsValid;                            // flag to check if VDBoxInfo is valid.
144*35ffd701SAndroid Build Coastguard Worker 
145*35ffd701SAndroid Build Coastguard Worker } GT_VDBOX_INFO;
146*35ffd701SAndroid Build Coastguard Worker typedef struct GT_CCS_INFO
147*35ffd701SAndroid Build Coastguard Worker {
148*35ffd701SAndroid Build Coastguard Worker     union CCSInstances
149*35ffd701SAndroid Build Coastguard Worker     {
150*35ffd701SAndroid Build Coastguard Worker         struct CCSBitStruct
151*35ffd701SAndroid Build Coastguard Worker         {
152*35ffd701SAndroid Build Coastguard Worker             uint32_t    CCS0Enabled : 1;      // To determine if CCS0 is enabled
153*35ffd701SAndroid Build Coastguard Worker             uint32_t    CCS1Enabled : 1;
154*35ffd701SAndroid Build Coastguard Worker             uint32_t    CCS2Enabled : 1;
155*35ffd701SAndroid Build Coastguard Worker             uint32_t    CCS3Enabled : 1;
156*35ffd701SAndroid Build Coastguard Worker             uint32_t    Reserved    : 28;     // Reserved bits
157*35ffd701SAndroid Build Coastguard Worker         } Bits;
158*35ffd701SAndroid Build Coastguard Worker 
159*35ffd701SAndroid Build Coastguard Worker         uint32_t CCSEnableMask;               // Union for all CCS instances. It can be used to know which CCS is enabled.
160*35ffd701SAndroid Build Coastguard Worker 
161*35ffd701SAndroid Build Coastguard Worker     } Instances;
162*35ffd701SAndroid Build Coastguard Worker 
163*35ffd701SAndroid Build Coastguard Worker     uint32_t NumberOfCCSEnabled;              // Number of bits set among bit 0-3 of CCSEnableMask;
164*35ffd701SAndroid Build Coastguard Worker 
165*35ffd701SAndroid Build Coastguard Worker     bool     IsValid;                         // flag to check if CCSInfo is valid.
166*35ffd701SAndroid Build Coastguard Worker 
167*35ffd701SAndroid Build Coastguard Worker } GT_CCS_INFO;
168*35ffd701SAndroid Build Coastguard Worker 
169*35ffd701SAndroid Build Coastguard Worker typedef struct GT_MULTI_TILE_ARCH_INFO
170*35ffd701SAndroid Build Coastguard Worker {
171*35ffd701SAndroid Build Coastguard Worker     // Total Count of Tiles enabled
172*35ffd701SAndroid Build Coastguard Worker     uint8_t     TileCount;
173*35ffd701SAndroid Build Coastguard Worker 
174*35ffd701SAndroid Build Coastguard Worker     // Mask of all enabled Tiles
175*35ffd701SAndroid Build Coastguard Worker     union
176*35ffd701SAndroid Build Coastguard Worker     {
177*35ffd701SAndroid Build Coastguard Worker         struct
178*35ffd701SAndroid Build Coastguard Worker         {
179*35ffd701SAndroid Build Coastguard Worker             uint8_t     Tile0       : 1;
180*35ffd701SAndroid Build Coastguard Worker             uint8_t     Tile1       : 1;
181*35ffd701SAndroid Build Coastguard Worker             uint8_t     Tile2       : 1;
182*35ffd701SAndroid Build Coastguard Worker             uint8_t     Tile3       : 1;
183*35ffd701SAndroid Build Coastguard Worker             uint8_t     Reserved    : 4;
184*35ffd701SAndroid Build Coastguard Worker         };
185*35ffd701SAndroid Build Coastguard Worker 
186*35ffd701SAndroid Build Coastguard Worker         uint8_t TileMask;
187*35ffd701SAndroid Build Coastguard Worker     };
188*35ffd701SAndroid Build Coastguard Worker 
189*35ffd701SAndroid Build Coastguard Worker     // flag to check if MultiTileArchInfo has valid data or not
190*35ffd701SAndroid Build Coastguard Worker     bool        IsValid;
191*35ffd701SAndroid Build Coastguard Worker 
192*35ffd701SAndroid Build Coastguard Worker } GT_MULTI_TILE_ARCH_INFO;
193*35ffd701SAndroid Build Coastguard Worker 
194*35ffd701SAndroid Build Coastguard Worker typedef struct GT_SQIDI_INFO
195*35ffd701SAndroid Build Coastguard Worker {
196*35ffd701SAndroid Build Coastguard Worker         uint32_t        NumberofSQIDI;                        // Total no. of enabled SQIDIs.
197*35ffd701SAndroid Build Coastguard Worker         uint32_t        NumberofDoorbellPerSQIDI;             // Total no. of doorbells available per SQIDI unit
198*35ffd701SAndroid Build Coastguard Worker }GT_SQIDI_INFO;
199*35ffd701SAndroid Build Coastguard Worker 
200*35ffd701SAndroid Build Coastguard Worker typedef union _GT_CACHE_TYPES
201*35ffd701SAndroid Build Coastguard Worker {
202*35ffd701SAndroid Build Coastguard Worker     struct
203*35ffd701SAndroid Build Coastguard Worker     {
204*35ffd701SAndroid Build Coastguard Worker         uint32_t  L3        : 1;
205*35ffd701SAndroid Build Coastguard Worker         uint32_t  LLC       : 1;
206*35ffd701SAndroid Build Coastguard Worker         uint32_t  eDRAM     : 1;
207*35ffd701SAndroid Build Coastguard Worker         uint32_t  Reserved : 29;
208*35ffd701SAndroid Build Coastguard Worker     };
209*35ffd701SAndroid Build Coastguard Worker 
210*35ffd701SAndroid Build Coastguard Worker     uint32_t CacheTypeMask;
211*35ffd701SAndroid Build Coastguard Worker 
212*35ffd701SAndroid Build Coastguard Worker } GT_CACHE_TYPES;
213*35ffd701SAndroid Build Coastguard Worker 
214*35ffd701SAndroid Build Coastguard Worker typedef struct GT_SYSTEM_INFO
215*35ffd701SAndroid Build Coastguard Worker {
216*35ffd701SAndroid Build Coastguard Worker     // These fields should always hold valid values
217*35ffd701SAndroid Build Coastguard Worker     uint32_t        EUCount;                        // Total no. of enabled EUs
218*35ffd701SAndroid Build Coastguard Worker     uint32_t        ThreadCount;                    // total no of system threads available
219*35ffd701SAndroid Build Coastguard Worker     uint32_t        SliceCount;                     // Total no. of enabled slices
220*35ffd701SAndroid Build Coastguard Worker     uint32_t        SubSliceCount;                  // Total no. of enabled subslices
221*35ffd701SAndroid Build Coastguard Worker     uint32_t        DualSubSliceCount;              // Total no. of enabled dualsubslices
222*35ffd701SAndroid Build Coastguard Worker     uint64_t        L3CacheSizeInKb;                // Total L3 cache size in kilo bytes
223*35ffd701SAndroid Build Coastguard Worker     uint64_t        LLCCacheSizeInKb;               // Total LLC cache size in kilo bytes
224*35ffd701SAndroid Build Coastguard Worker     uint64_t        EdramSizeInKb;                  // Total EDRAM size in kilo bytes
225*35ffd701SAndroid Build Coastguard Worker     uint32_t        L3BankCount;                    // Total L3 banks across all slices. This is not bank count per slice.
226*35ffd701SAndroid Build Coastguard Worker     uint32_t        MaxFillRate;                    // Fillrate with Alphablend (in Pix/Clk)
227*35ffd701SAndroid Build Coastguard Worker     uint32_t        EuCountPerPoolMax;              // Max EU count per pool
228*35ffd701SAndroid Build Coastguard Worker     uint32_t        EuCountPerPoolMin;              // Min EU count per pool
229*35ffd701SAndroid Build Coastguard Worker 
230*35ffd701SAndroid Build Coastguard Worker     uint32_t        TotalVsThreads;                 // Total threads in VS
231*35ffd701SAndroid Build Coastguard Worker     uint32_t        TotalHsThreads;                 // Total threads in HS
232*35ffd701SAndroid Build Coastguard Worker     uint32_t        TotalDsThreads;                 // Total threads in DS
233*35ffd701SAndroid Build Coastguard Worker     uint32_t        TotalGsThreads;                 // Total threads in GS
234*35ffd701SAndroid Build Coastguard Worker     uint32_t        TotalPsThreadsWindowerRange;    // Total threads in PS Windower Range
235*35ffd701SAndroid Build Coastguard Worker 
236*35ffd701SAndroid Build Coastguard Worker     uint32_t        TotalVsThreads_Pocs;            // Total threads in VS for POCS
237*35ffd701SAndroid Build Coastguard Worker 
238*35ffd701SAndroid Build Coastguard Worker     // Note: The CSR size requirement is not clear at this moment. Till then the driver will set
239*35ffd701SAndroid Build Coastguard Worker     // the maximum size that should be sufficient for all platform SKUs.
240*35ffd701SAndroid Build Coastguard Worker     uint32_t        CsrSizeInMb;                    // Total size that driver needs to allocate for CSR.
241*35ffd701SAndroid Build Coastguard Worker 
242*35ffd701SAndroid Build Coastguard Worker     /*------------------------------------*/
243*35ffd701SAndroid Build Coastguard Worker     // Below fields are required for proper allocation of scratch/private space for threads execution.
244*35ffd701SAndroid Build Coastguard Worker     // Threads scratch space has to be allocated based on native die config. So allocation has to be
245*35ffd701SAndroid Build Coastguard Worker     // done even for unfused or non-enabled slices/subslices/EUs. Since H/W doesn't provide us a way to know
246*35ffd701SAndroid Build Coastguard Worker     // about the native die config S/W will allocate based on max EU/S/SS.
247*35ffd701SAndroid Build Coastguard Worker     uint32_t        MaxEuPerSubSlice;               // Max available EUs per sub-slice.
248*35ffd701SAndroid Build Coastguard Worker     uint32_t        MaxSlicesSupported;             // Max slices this platfrom can have.
249*35ffd701SAndroid Build Coastguard Worker     uint32_t        MaxSubSlicesSupported;          // Max total sub-slices this platform can have (not per slice)
250*35ffd701SAndroid Build Coastguard Worker     uint32_t        MaxDualSubSlicesSupported;      // Max total dual sub-slices this platform can have (not per slice)
251*35ffd701SAndroid Build Coastguard Worker     /*------------------------------------*/
252*35ffd701SAndroid Build Coastguard Worker 
253*35ffd701SAndroid Build Coastguard Worker     // Flag to determine if hashing is enabled. If enabled then one of the L3 banks will be disabled.
254*35ffd701SAndroid Build Coastguard Worker     // As a result 'L3BankCount' will be reduced by 1 bank during system info derivation routine.
255*35ffd701SAndroid Build Coastguard Worker     // Note: Only expected only in CNL (limited SKUs).
256*35ffd701SAndroid Build Coastguard Worker     bool           IsL3HashModeEnabled;
257*35ffd701SAndroid Build Coastguard Worker 
258*35ffd701SAndroid Build Coastguard Worker     // VEBox/VDBox info
259*35ffd701SAndroid Build Coastguard Worker     GT_VDBOX_INFO   VDBoxInfo;                      // VDBoxInfo provides details(enabled/disabled) of all VDBox instances.
260*35ffd701SAndroid Build Coastguard Worker     GT_VEBOX_INFO   VEBoxInfo;                      // VEBoxInfo provides details(enabled/disabled) of all VEBox instances.
261*35ffd701SAndroid Build Coastguard Worker 
262*35ffd701SAndroid Build Coastguard Worker     // SliceInfo provides the detailed breakdown of the Slice/Subslice/EU configuration. It is useful
263*35ffd701SAndroid Build Coastguard Worker     // for various WA that depend on the specific SSEU components enabled or disabled, but it is not
264*35ffd701SAndroid Build Coastguard Worker     // considered critically important to driver function at this time and may not be validly populated
265*35ffd701SAndroid Build Coastguard Worker     // on all platforms. IsDynamicallyPopulated indicates if SliceInfo has been validly populated.
266*35ffd701SAndroid Build Coastguard Worker     // IsDynamicallyPopulated only applies to SliceInfo.
267*35ffd701SAndroid Build Coastguard Worker     // TODO: Rename IsDynamicallyPopulated to something like SliceInfoIsValid to help clarify its
268*35ffd701SAndroid Build Coastguard Worker     // purpose. At the moment we are constrained by USC not to make any changes to the GT System
269*35ffd701SAndroid Build Coastguard Worker     // Info interface which require USC changes. USC currently references IsDynamicallyPopulated.
270*35ffd701SAndroid Build Coastguard Worker     GT_SLICE_INFO   SliceInfo[GT_MAX_SLICE];
271*35ffd701SAndroid Build Coastguard Worker     bool            IsDynamicallyPopulated;
272*35ffd701SAndroid Build Coastguard Worker 
273*35ffd701SAndroid Build Coastguard Worker         //SqidiInfo provides the detailed information for number of SQIDIs supported in GT.
274*35ffd701SAndroid Build Coastguard Worker         //It also provides total no. of doorbells available per SQIDI unit.
275*35ffd701SAndroid Build Coastguard Worker     GT_SQIDI_INFO   SqidiInfo;
276*35ffd701SAndroid Build Coastguard Worker 
277*35ffd701SAndroid Build Coastguard Worker     uint32_t        ReservedCCSWays;                // Reserved CCS ways provides value of reserved L3 ways for CCS when CCS is enabled.
278*35ffd701SAndroid Build Coastguard Worker                                                     // This is a hardcoded value as suggested by HW. No MMIO read is needed for same.
279*35ffd701SAndroid Build Coastguard Worker     GT_CCS_INFO     CCSInfo;                        // CCSInfo provides details(enabled/disabled) of all CCS instances.
280*35ffd701SAndroid Build Coastguard Worker     GT_MULTI_TILE_ARCH_INFO MultiTileArchInfo;      // MultiTileArchInfo provides details(enabled/disabled) of GT Tiles in case of Multi Tile Architecture SKUs
281*35ffd701SAndroid Build Coastguard Worker 
282*35ffd701SAndroid Build Coastguard Worker     uint32_t        NumThreadsPerEu;                // Number of threads per EU.
283*35ffd701SAndroid Build Coastguard Worker     GT_CACHE_TYPES  CacheTypes;                     // Types of caches available on system (L3/LLC/eDRAM).
284*35ffd701SAndroid Build Coastguard Worker     uint32_t        MaxVECS;                        // Max VECS instances.
285*35ffd701SAndroid Build Coastguard Worker     uint32_t        MemoryType;                     // GT_MEMORY_TYPES - type of memory supported in current platform
286*35ffd701SAndroid Build Coastguard Worker     uint32_t        SLMSizeInKb;                    // SLM Size
287*35ffd701SAndroid Build Coastguard Worker } GT_SYSTEM_INFO, *PGT_SYSTEM_INFO;
288*35ffd701SAndroid Build Coastguard Worker 
289*35ffd701SAndroid Build Coastguard Worker #pragma pack(pop)
290*35ffd701SAndroid Build Coastguard Worker 
291*35ffd701SAndroid Build Coastguard Worker #endif //__GT_SYS_INFO_H__
292