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