xref: /aosp_15_r20/external/gmmlib/Source/GmmLib/ULT/GmmGen12dGPUCachePolicyULT.cpp (revision 35ffd701415c9e32e53136d61a677a8d0a8fc4a5)
1*35ffd701SAndroid Build Coastguard Worker /*==============================================================================
2*35ffd701SAndroid Build Coastguard Worker Copyright(c) 2020 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 #include "GmmGen12dGPUCachePolicyULT.h"
24*35ffd701SAndroid Build Coastguard Worker 
25*35ffd701SAndroid Build Coastguard Worker using namespace std;
26*35ffd701SAndroid Build Coastguard Worker 
27*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
28*35ffd701SAndroid Build Coastguard Worker /// Sets up common environment for Cache Policy fixture tests. this is called once per
29*35ffd701SAndroid Build Coastguard Worker /// test case before executing all tests under resource fixture test case.
30*35ffd701SAndroid Build Coastguard Worker /// It also calls SetupTestCase from CommonULT to initialize global context and others.
31*35ffd701SAndroid Build Coastguard Worker ///
32*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
SetUpTestCase()33*35ffd701SAndroid Build Coastguard Worker void CTestGen12dGPUCachePolicy::SetUpTestCase()
34*35ffd701SAndroid Build Coastguard Worker {
35*35ffd701SAndroid Build Coastguard Worker }
36*35ffd701SAndroid Build Coastguard Worker 
37*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
38*35ffd701SAndroid Build Coastguard Worker /// cleans up once all the tests finish execution.  It also calls TearDownTestCase
39*35ffd701SAndroid Build Coastguard Worker /// from CommonULT to destroy global context and others.
40*35ffd701SAndroid Build Coastguard Worker ///
41*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
TearDownTestCase()42*35ffd701SAndroid Build Coastguard Worker void CTestGen12dGPUCachePolicy::TearDownTestCase()
43*35ffd701SAndroid Build Coastguard Worker {
44*35ffd701SAndroid Build Coastguard Worker }
45*35ffd701SAndroid Build Coastguard Worker 
SetUpGen12dGPUVariant(PRODUCT_FAMILY platform)46*35ffd701SAndroid Build Coastguard Worker void CTestGen12dGPUCachePolicy::SetUpGen12dGPUVariant(PRODUCT_FAMILY platform)
47*35ffd701SAndroid Build Coastguard Worker {
48*35ffd701SAndroid Build Coastguard Worker     printf("%s\n", __FUNCTION__);
49*35ffd701SAndroid Build Coastguard Worker 
50*35ffd701SAndroid Build Coastguard Worker     GfxPlatform.eProductFamily = platform;
51*35ffd701SAndroid Build Coastguard Worker 
52*35ffd701SAndroid Build Coastguard Worker     GfxPlatform.eRenderCoreFamily = IGFX_XE_HPG_CORE;
53*35ffd701SAndroid Build Coastguard Worker 
54*35ffd701SAndroid Build Coastguard Worker     pGfxAdapterInfo = (ADAPTER_INFO *)malloc(sizeof(ADAPTER_INFO));
55*35ffd701SAndroid Build Coastguard Worker     if(pGfxAdapterInfo)
56*35ffd701SAndroid Build Coastguard Worker     {
57*35ffd701SAndroid Build Coastguard Worker         memset(pGfxAdapterInfo, 0, sizeof(ADAPTER_INFO));
58*35ffd701SAndroid Build Coastguard Worker 
59*35ffd701SAndroid Build Coastguard Worker         pGfxAdapterInfo->SkuTable.FtrLinearCCS             = 1; //legacy y =>0 - test both
60*35ffd701SAndroid Build Coastguard Worker         pGfxAdapterInfo->SkuTable.FtrStandardMipTailFormat = 1;
61*35ffd701SAndroid Build Coastguard Worker         pGfxAdapterInfo->SkuTable.FtrTileY                 = 0;
62*35ffd701SAndroid Build Coastguard Worker         pGfxAdapterInfo->SkuTable.FtrLocalMemory           = 1;
63*35ffd701SAndroid Build Coastguard Worker         CommonULT::SetUpTestCase();
64*35ffd701SAndroid Build Coastguard Worker     }
65*35ffd701SAndroid Build Coastguard Worker }
66*35ffd701SAndroid Build Coastguard Worker 
TearDownGen12dGPUVariant()67*35ffd701SAndroid Build Coastguard Worker void CTestGen12dGPUCachePolicy::TearDownGen12dGPUVariant()
68*35ffd701SAndroid Build Coastguard Worker {
69*35ffd701SAndroid Build Coastguard Worker     printf("%s\n", __FUNCTION__);
70*35ffd701SAndroid Build Coastguard Worker 
71*35ffd701SAndroid Build Coastguard Worker     CommonULT::TearDownTestCase();
72*35ffd701SAndroid Build Coastguard Worker }
73*35ffd701SAndroid Build Coastguard Worker 
TEST_F(CTestGen12dGPUCachePolicy,TestGen12dGPU_DG1CachePolicy)74*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestGen12dGPUCachePolicy, TestGen12dGPU_DG1CachePolicy)
75*35ffd701SAndroid Build Coastguard Worker {
76*35ffd701SAndroid Build Coastguard Worker     SetUpGen12dGPUVariant(IGFX_DG1);
77*35ffd701SAndroid Build Coastguard Worker 
78*35ffd701SAndroid Build Coastguard Worker     CheckL3Gen12dGPUCachePolicy();
79*35ffd701SAndroid Build Coastguard Worker 
80*35ffd701SAndroid Build Coastguard Worker     TearDownGen12dGPUVariant();
81*35ffd701SAndroid Build Coastguard Worker }
82*35ffd701SAndroid Build Coastguard Worker 
TEST_F(CTestGen12dGPUCachePolicy,TestGen12dGPU_XE_HP_SDVCachePolicy)83*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestGen12dGPUCachePolicy, TestGen12dGPU_XE_HP_SDVCachePolicy)
84*35ffd701SAndroid Build Coastguard Worker {
85*35ffd701SAndroid Build Coastguard Worker     SetUpGen12dGPUVariant(IGFX_XE_HP_SDV);
86*35ffd701SAndroid Build Coastguard Worker 
87*35ffd701SAndroid Build Coastguard Worker     CheckL3Gen12dGPUCachePolicy();
88*35ffd701SAndroid Build Coastguard Worker 
89*35ffd701SAndroid Build Coastguard Worker     TearDownGen12dGPUVariant();
90*35ffd701SAndroid Build Coastguard Worker }
91*35ffd701SAndroid Build Coastguard Worker 
CheckSpecialMocs(uint32_t Usage,uint32_t AssignedMocsIdx,GMM_CACHE_POLICY_ELEMENT ClientRequest)92*35ffd701SAndroid Build Coastguard Worker void CTestGen12dGPUCachePolicy::CheckSpecialMocs(uint32_t                    Usage,
93*35ffd701SAndroid Build Coastguard Worker                                                uint32_t                    AssignedMocsIdx,
94*35ffd701SAndroid Build Coastguard Worker                                                GMM_CACHE_POLICY_ELEMENT ClientRequest)
95*35ffd701SAndroid Build Coastguard Worker {
96*35ffd701SAndroid Build Coastguard Worker     if(Usage == GMM_RESOURCE_USAGE_CCS) //60
97*35ffd701SAndroid Build Coastguard Worker     {
98*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(AssignedMocsIdx, 60) << "Usage# " << Usage << ": Incorrect Index for CCS";
99*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(0, ClientRequest.L3) << "Usage# " << Usage << ": Incorrect L3 cacheability for CCS";
100*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(0, ClientRequest.UcLookup) << "Usage# " << Usage << ": Incorrect L3 LookUp cacheability for CCS";
101*35ffd701SAndroid Build Coastguard Worker     }
102*35ffd701SAndroid Build Coastguard Worker     else if(Usage == GMM_RESOURCE_USAGE_CCS_MEDIA_WRITABLE) // 61
103*35ffd701SAndroid Build Coastguard Worker     {
104*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(AssignedMocsIdx, 61) << "Usage# " << Usage << ": Incorrect Index for CCS";
105*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(0, ClientRequest.L3) << "Usage# " << Usage << ": Incorrect L3 cacheability for CCS";
106*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(0, ClientRequest.UcLookup) << "Usage# " << Usage << ": Incorrect L3 LookUp cacheability for CCS";
107*35ffd701SAndroid Build Coastguard Worker     }
108*35ffd701SAndroid Build Coastguard Worker     else if(Usage == GMM_RESOURCE_USAGE_MOCS_62) //62
109*35ffd701SAndroid Build Coastguard Worker     {
110*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(AssignedMocsIdx, 62) << "Usage# " << Usage << ": Incorrect Index for MOCS_62";
111*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(0, ClientRequest.L3) << "Usage# " << Usage << ": Incorrect L3 cacheability for MOCS#62";
112*35ffd701SAndroid Build Coastguard Worker     }
113*35ffd701SAndroid Build Coastguard Worker }
114*35ffd701SAndroid Build Coastguard Worker 
CheckMocsIdxHDCL1(uint32_t Usage,uint32_t AssignedMocsIdx,GMM_CACHE_POLICY_ELEMENT ClientRequest)115*35ffd701SAndroid Build Coastguard Worker void CTestGen12dGPUCachePolicy::CheckMocsIdxHDCL1(uint32_t                    Usage,
116*35ffd701SAndroid Build Coastguard Worker                                                 uint32_t                    AssignedMocsIdx,
117*35ffd701SAndroid Build Coastguard Worker                                                 GMM_CACHE_POLICY_ELEMENT ClientRequest)
118*35ffd701SAndroid Build Coastguard Worker {
119*35ffd701SAndroid Build Coastguard Worker #define GMM_GEN12_MAX_NUMBER_MOCS_INDEXES (60) // On TGL last four (#60-#63) are reserved by h/w, few? are sw configurable though (#60)
120*35ffd701SAndroid Build Coastguard Worker 
121*35ffd701SAndroid Build Coastguard Worker     // Check of assigned Index setting is appropriate for HDCL1 setting
122*35ffd701SAndroid Build Coastguard Worker     if(ClientRequest.HDCL1)
123*35ffd701SAndroid Build Coastguard Worker     {
124*35ffd701SAndroid Build Coastguard Worker         EXPECT_GE(AssignedMocsIdx, GMM_GEN10_HDCL1_MOCS_INDEX_START) << "Usage# " << Usage << ": Index must be greater than " << GMM_GEN10_HDCL1_MOCS_INDEX_START - 1 << " for HDCL1 setting. AssignedMocs: " << AssignedMocsIdx;
125*35ffd701SAndroid Build Coastguard Worker         EXPECT_LT(AssignedMocsIdx, GMM_GEN12_MAX_NUMBER_MOCS_INDEXES) << "Usage# " << Usage << ": Index must be less than " << GMM_GEN12_MAX_NUMBER_MOCS_INDEXES << "for  HDCL1 setting";
126*35ffd701SAndroid Build Coastguard Worker     }
127*35ffd701SAndroid Build Coastguard Worker     else if(AssignedMocsIdx < GMM_GEN12_MAX_NUMBER_MOCS_INDEXES)
128*35ffd701SAndroid Build Coastguard Worker     {
129*35ffd701SAndroid Build Coastguard Worker         EXPECT_LT(AssignedMocsIdx, GMM_GEN10_HDCL1_MOCS_INDEX_START) << "Usage# " << Usage << ": Incorrect Index for HDCL1 setting";
130*35ffd701SAndroid Build Coastguard Worker     }
131*35ffd701SAndroid Build Coastguard Worker }
132*35ffd701SAndroid Build Coastguard Worker 
CheckL3Gen12dGPUCachePolicy()133*35ffd701SAndroid Build Coastguard Worker void CTestGen12dGPUCachePolicy::CheckL3Gen12dGPUCachePolicy()
134*35ffd701SAndroid Build Coastguard Worker {
135*35ffd701SAndroid Build Coastguard Worker     const uint32_t L3_WB_CACHEABLE = 0x3;
136*35ffd701SAndroid Build Coastguard Worker     const uint32_t L3_UNCACHEABLE  = 0x1;
137*35ffd701SAndroid Build Coastguard Worker 
138*35ffd701SAndroid Build Coastguard Worker     // Check Usage MOCS index against MOCS settings
139*35ffd701SAndroid Build Coastguard Worker     for(uint32_t Usage = GMM_RESOURCE_USAGE_UNKNOWN; Usage < GMM_RESOURCE_USAGE_MAX; Usage++)
140*35ffd701SAndroid Build Coastguard Worker     {
141*35ffd701SAndroid Build Coastguard Worker         GMM_CACHE_POLICY_ELEMENT     ClientRequest   = pGmmULTClientContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
142*35ffd701SAndroid Build Coastguard Worker         uint32_t                        AssignedMocsIdx = ClientRequest.MemoryObjectOverride.Gen12.Index;
143*35ffd701SAndroid Build Coastguard Worker         GMM_CACHE_POLICY_TBL_ELEMENT Mocs            = pGmmULTClientContext->GetCachePolicyTlbElement(AssignedMocsIdx);
144*35ffd701SAndroid Build Coastguard Worker         uint32_t                     StartMocsIdx    = 1;
145*35ffd701SAndroid Build Coastguard Worker 
146*35ffd701SAndroid Build Coastguard Worker         //printf("Usage: %d --> Index: [%d]\n", Usage, AssignedMocsIdx);
147*35ffd701SAndroid Build Coastguard Worker 
148*35ffd701SAndroid Build Coastguard Worker 	if(GfxPlatform.eProductFamily == IGFX_DG2)
149*35ffd701SAndroid Build Coastguard Worker         {
150*35ffd701SAndroid Build Coastguard Worker             StartMocsIdx = 0;
151*35ffd701SAndroid Build Coastguard Worker         }
152*35ffd701SAndroid Build Coastguard Worker         if(StartMocsIdx == 1)
153*35ffd701SAndroid Build Coastguard Worker         {
154*35ffd701SAndroid Build Coastguard Worker             EXPECT_NE(0, AssignedMocsIdx) << "Usage# " << Usage << ": Misprogramming MOCS - Index 0 is reserved for Error";
155*35ffd701SAndroid Build Coastguard Worker         }
156*35ffd701SAndroid Build Coastguard Worker 
157*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(0, Mocs.L3.ESC) << "Usage# " << Usage << ": ESC is non-zero";
158*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(0, Mocs.L3.SCC) << "Usage# " << Usage << ": SCC is non-zero";
159*35ffd701SAndroid Build Coastguard Worker         EXPECT_EQ(0, Mocs.L3.Reserved) << "Usage# " << Usage << ": Reserved field is non-zero";
160*35ffd701SAndroid Build Coastguard Worker         // Check if Mocs Index is not greater than GMM_MAX_NUMBER_MOCS_INDEXES
161*35ffd701SAndroid Build Coastguard Worker         EXPECT_GT(GMM_MAX_NUMBER_MOCS_INDEXES, AssignedMocsIdx) << "Usage# " << Usage << ": MOCS Index greater than MAX allowed (63)";
162*35ffd701SAndroid Build Coastguard Worker 
163*35ffd701SAndroid Build Coastguard Worker         if(GfxPlatform.eProductFamily <= IGFX_XE_HP_SDV)
164*35ffd701SAndroid Build Coastguard Worker         {
165*35ffd701SAndroid Build Coastguard Worker             CheckMocsIdxHDCL1(Usage, AssignedMocsIdx, ClientRequest);
166*35ffd701SAndroid Build Coastguard Worker         }
167*35ffd701SAndroid Build Coastguard Worker 
168*35ffd701SAndroid Build Coastguard Worker         if(GfxPlatform.eProductFamily < IGFX_DG2)
169*35ffd701SAndroid Build Coastguard Worker 	{
170*35ffd701SAndroid Build Coastguard Worker             CheckSpecialMocs(Usage, AssignedMocsIdx, ClientRequest);
171*35ffd701SAndroid Build Coastguard Worker         }
172*35ffd701SAndroid Build Coastguard Worker 
173*35ffd701SAndroid Build Coastguard Worker         if(ClientRequest.L3)
174*35ffd701SAndroid Build Coastguard Worker         {
175*35ffd701SAndroid Build Coastguard Worker             EXPECT_EQ(L3_WB_CACHEABLE, Mocs.L3.Cacheability) << "Usage# " << Usage << ": Incorrect L3 cachebility setting";
176*35ffd701SAndroid Build Coastguard Worker         }
177*35ffd701SAndroid Build Coastguard Worker         else
178*35ffd701SAndroid Build Coastguard Worker         {
179*35ffd701SAndroid Build Coastguard Worker             EXPECT_EQ(L3_UNCACHEABLE, Mocs.L3.Cacheability) << "Usage# " << Usage << ": Incorrect L3 cachebility setting";
180*35ffd701SAndroid Build Coastguard Worker         }
181*35ffd701SAndroid Build Coastguard Worker     }
182*35ffd701SAndroid Build Coastguard Worker }
183*35ffd701SAndroid Build Coastguard Worker 
SetUpPlatformVariant(PRODUCT_FAMILY platform)184*35ffd701SAndroid Build Coastguard Worker void CTestXe_HP_CachePolicy::SetUpPlatformVariant(PRODUCT_FAMILY platform)
185*35ffd701SAndroid Build Coastguard Worker {
186*35ffd701SAndroid Build Coastguard Worker     printf("%s\n", __FUNCTION__);
187*35ffd701SAndroid Build Coastguard Worker     CTestGen12dGPUCachePolicy::SetUpGen12dGPUVariant(platform);
188*35ffd701SAndroid Build Coastguard Worker }
189*35ffd701SAndroid Build Coastguard Worker 
TearDownPlatformVariant()190*35ffd701SAndroid Build Coastguard Worker void CTestXe_HP_CachePolicy::TearDownPlatformVariant()
191*35ffd701SAndroid Build Coastguard Worker {
192*35ffd701SAndroid Build Coastguard Worker     printf("%s\n", __FUNCTION__);
193*35ffd701SAndroid Build Coastguard Worker     CTestGen12dGPUCachePolicy::TearDownGen12dGPUVariant();
194*35ffd701SAndroid Build Coastguard Worker }
195*35ffd701SAndroid Build Coastguard Worker 
CheckL3CachePolicy()196*35ffd701SAndroid Build Coastguard Worker void CTestXe_HP_CachePolicy::CheckL3CachePolicy()
197*35ffd701SAndroid Build Coastguard Worker {
198*35ffd701SAndroid Build Coastguard Worker     printf("%s\n", __FUNCTION__);
199*35ffd701SAndroid Build Coastguard Worker     CTestGen12dGPUCachePolicy::CheckL3Gen12dGPUCachePolicy();
200*35ffd701SAndroid Build Coastguard Worker }
201*35ffd701SAndroid Build Coastguard Worker 
SetUpTestCase()202*35ffd701SAndroid Build Coastguard Worker void CTestXe_HP_CachePolicy::SetUpTestCase()
203*35ffd701SAndroid Build Coastguard Worker {
204*35ffd701SAndroid Build Coastguard Worker }
205*35ffd701SAndroid Build Coastguard Worker 
TearDownTestCase()206*35ffd701SAndroid Build Coastguard Worker void CTestXe_HP_CachePolicy::TearDownTestCase()
207*35ffd701SAndroid Build Coastguard Worker {
208*35ffd701SAndroid Build Coastguard Worker }
209*35ffd701SAndroid Build Coastguard Worker 
TEST_F(CTestXe_HP_CachePolicy,Test_DG2_CachePolicy)210*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestXe_HP_CachePolicy, Test_DG2_CachePolicy)
211*35ffd701SAndroid Build Coastguard Worker {
212*35ffd701SAndroid Build Coastguard Worker     SetUpPlatformVariant(IGFX_DG2);
213*35ffd701SAndroid Build Coastguard Worker     CheckL3CachePolicy();
214*35ffd701SAndroid Build Coastguard Worker     TearDownPlatformVariant();
215*35ffd701SAndroid Build Coastguard Worker }
216*35ffd701SAndroid Build Coastguard Worker 
TEST_F(CTestXe_HP_CachePolicy,Test_PVC_CachePolicy)217*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestXe_HP_CachePolicy, Test_PVC_CachePolicy)
218*35ffd701SAndroid Build Coastguard Worker {
219*35ffd701SAndroid Build Coastguard Worker     SetUpPlatformVariant(IGFX_PVC);
220*35ffd701SAndroid Build Coastguard Worker     CheckL3CachePolicy();
221*35ffd701SAndroid Build Coastguard Worker     CheckPAT();
222*35ffd701SAndroid Build Coastguard Worker     TearDownPlatformVariant();
223*35ffd701SAndroid Build Coastguard Worker }
224*35ffd701SAndroid Build Coastguard Worker 
CheckPAT()225*35ffd701SAndroid Build Coastguard Worker void CTestXe_HP_CachePolicy::CheckPAT()
226*35ffd701SAndroid Build Coastguard Worker {
227*35ffd701SAndroid Build Coastguard Worker     // Check Usage PAT index against PAT settings
228*35ffd701SAndroid Build Coastguard Worker     for(unsigned long Usage = GMM_RESOURCE_USAGE_UNKNOWN; Usage < GMM_RESOURCE_USAGE_MAX; Usage++)
229*35ffd701SAndroid Build Coastguard Worker     {
230*35ffd701SAndroid Build Coastguard Worker         GMM_CACHE_POLICY_ELEMENT ClientRequest = pGmmULTClientContext->GetCachePolicyElement((GMM_RESOURCE_USAGE_TYPE)Usage);
231*35ffd701SAndroid Build Coastguard Worker         if(ClientRequest.Initialized == false) // undefined resource in platform
232*35ffd701SAndroid Build Coastguard Worker         {
233*35ffd701SAndroid Build Coastguard Worker             continue;
234*35ffd701SAndroid Build Coastguard Worker         }
235*35ffd701SAndroid Build Coastguard Worker         unsigned long PATIndex = pGmmULTClientContext->CachePolicyGetPATIndex(NULL, (GMM_RESOURCE_USAGE_TYPE)Usage, NULL, false);
236*35ffd701SAndroid Build Coastguard Worker         //printf("Xe HPG: Usage: %d --> PAT Index: [%d]\n", Usage, PATIndex);
237*35ffd701SAndroid Build Coastguard Worker         EXPECT_NE(PATIndex, GMM_PAT_ERROR) << "Usage# " << Usage << ": No matching PAT Index";
238*35ffd701SAndroid Build Coastguard Worker     }
239*35ffd701SAndroid Build Coastguard Worker }
240