xref: /aosp_15_r20/external/gmmlib/Source/GmmLib/ULT/GmmAuxTableULT.cpp (revision 35ffd701415c9e32e53136d61a677a8d0a8fc4a5)
1*35ffd701SAndroid Build Coastguard Worker /*==============================================================================
2*35ffd701SAndroid Build Coastguard Worker Copyright(c) 2019 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 #if defined (__linux__) && !defined(__i386__)
24*35ffd701SAndroid Build Coastguard Worker 
25*35ffd701SAndroid Build Coastguard Worker #include "GmmAuxTableULT.h"
26*35ffd701SAndroid Build Coastguard Worker 
27*35ffd701SAndroid Build Coastguard Worker using namespace std;
28*35ffd701SAndroid Build Coastguard Worker using namespace GmmLib;
29*35ffd701SAndroid Build Coastguard Worker 
30*35ffd701SAndroid Build Coastguard Worker static GMM_DEVICE_CALLBACKS_INT DeviceCBInt;
31*35ffd701SAndroid Build Coastguard Worker 
CTestAuxTable()32*35ffd701SAndroid Build Coastguard Worker CTestAuxTable::CTestAuxTable()
33*35ffd701SAndroid Build Coastguard Worker {
34*35ffd701SAndroid Build Coastguard Worker }
35*35ffd701SAndroid Build Coastguard Worker 
~CTestAuxTable()36*35ffd701SAndroid Build Coastguard Worker CTestAuxTable::~CTestAuxTable()
37*35ffd701SAndroid Build Coastguard Worker {
38*35ffd701SAndroid Build Coastguard Worker }
39*35ffd701SAndroid Build Coastguard Worker 
allocCB(void * bufMgr,size_t size,size_t alignment,void ** bo,void ** cpuAddr,uint64_t * gpuAddr)40*35ffd701SAndroid Build Coastguard Worker int CTestAuxTable::allocCB(void *bufMgr, size_t size, size_t alignment, void **bo, void **cpuAddr, uint64_t *gpuAddr)
41*35ffd701SAndroid Build Coastguard Worker {
42*35ffd701SAndroid Build Coastguard Worker     if(bufMgr != (void *)0xdeadbeef)
43*35ffd701SAndroid Build Coastguard Worker         return -1;
44*35ffd701SAndroid Build Coastguard Worker 
45*35ffd701SAndroid Build Coastguard Worker     if(!bo || !cpuAddr || !gpuAddr)
46*35ffd701SAndroid Build Coastguard Worker         return -2;
47*35ffd701SAndroid Build Coastguard Worker 
48*35ffd701SAndroid Build Coastguard Worker     *cpuAddr = aligned_alloc(alignment, ALIGN(size, alignment));
49*35ffd701SAndroid Build Coastguard Worker     if(!*cpuAddr)
50*35ffd701SAndroid Build Coastguard Worker         return -3;
51*35ffd701SAndroid Build Coastguard Worker 
52*35ffd701SAndroid Build Coastguard Worker     *bo      = *cpuAddr;
53*35ffd701SAndroid Build Coastguard Worker     *gpuAddr = (uint64_t)*cpuAddr;
54*35ffd701SAndroid Build Coastguard Worker 
55*35ffd701SAndroid Build Coastguard Worker     return 0;
56*35ffd701SAndroid Build Coastguard Worker }
57*35ffd701SAndroid Build Coastguard Worker 
freeCB(void * bo)58*35ffd701SAndroid Build Coastguard Worker void CTestAuxTable::freeCB(void *bo)
59*35ffd701SAndroid Build Coastguard Worker {
60*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(bo != NULL);
61*35ffd701SAndroid Build Coastguard Worker 
62*35ffd701SAndroid Build Coastguard Worker     free(bo);
63*35ffd701SAndroid Build Coastguard Worker }
64*35ffd701SAndroid Build Coastguard Worker 
waitFromCpuCB(void * bo)65*35ffd701SAndroid Build Coastguard Worker void CTestAuxTable::waitFromCpuCB(void *bo)
66*35ffd701SAndroid Build Coastguard Worker {
67*35ffd701SAndroid Build Coastguard Worker }
68*35ffd701SAndroid Build Coastguard Worker 
SetUpTestCase()69*35ffd701SAndroid Build Coastguard Worker void CTestAuxTable::SetUpTestCase()
70*35ffd701SAndroid Build Coastguard Worker {
71*35ffd701SAndroid Build Coastguard Worker     GfxPlatform.eProductFamily    = IGFX_TIGERLAKE_LP;
72*35ffd701SAndroid Build Coastguard Worker     GfxPlatform.eRenderCoreFamily = IGFX_GEN12_CORE;
73*35ffd701SAndroid Build Coastguard Worker 
74*35ffd701SAndroid Build Coastguard Worker     DeviceCBInt.pBufMgr                   = (void *)0xdeadbeef;
75*35ffd701SAndroid Build Coastguard Worker     DeviceCBInt.DevCbPtrs_.pfnAllocate    = CTestAuxTable::allocCB;
76*35ffd701SAndroid Build Coastguard Worker     DeviceCBInt.DevCbPtrs_.pfnDeallocate  = CTestAuxTable::freeCB;
77*35ffd701SAndroid Build Coastguard Worker     DeviceCBInt.DevCbPtrs_.pfnWaitFromCpu = CTestAuxTable::waitFromCpuCB;
78*35ffd701SAndroid Build Coastguard Worker 
79*35ffd701SAndroid Build Coastguard Worker     if(GfxPlatform.eProductFamily == IGFX_UNKNOWN ||
80*35ffd701SAndroid Build Coastguard Worker        GfxPlatform.eRenderCoreFamily == IGFX_UNKNOWN_CORE)
81*35ffd701SAndroid Build Coastguard Worker     {
82*35ffd701SAndroid Build Coastguard Worker         GfxPlatform.eProductFamily    = IGFX_BROADWELL;
83*35ffd701SAndroid Build Coastguard Worker         GfxPlatform.eRenderCoreFamily = IGFX_GEN8_CORE;
84*35ffd701SAndroid Build Coastguard Worker     }
85*35ffd701SAndroid Build Coastguard Worker 
86*35ffd701SAndroid Build Coastguard Worker     AllocateAdapterInfo();
87*35ffd701SAndroid Build Coastguard Worker     if(pGfxAdapterInfo)
88*35ffd701SAndroid Build Coastguard Worker     {
89*35ffd701SAndroid Build Coastguard Worker         pGfxAdapterInfo->SkuTable.FtrE2ECompression = true;
90*35ffd701SAndroid Build Coastguard Worker         pGfxAdapterInfo->SkuTable.FtrLinearCCS      = true;
91*35ffd701SAndroid Build Coastguard Worker     }
92*35ffd701SAndroid Build Coastguard Worker 
93*35ffd701SAndroid Build Coastguard Worker     CommonULT::SetUpTestCase();
94*35ffd701SAndroid Build Coastguard Worker }
95*35ffd701SAndroid Build Coastguard Worker 
TearDownTestCase()96*35ffd701SAndroid Build Coastguard Worker void CTestAuxTable::TearDownTestCase()
97*35ffd701SAndroid Build Coastguard Worker {
98*35ffd701SAndroid Build Coastguard Worker     CommonULT::TearDownTestCase();
99*35ffd701SAndroid Build Coastguard Worker }
100*35ffd701SAndroid Build Coastguard Worker 
TEST_F(CTestAuxTable,TestUpdateAuxTableCompressedSurface)101*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestAuxTable, TestUpdateAuxTableCompressedSurface)
102*35ffd701SAndroid Build Coastguard Worker {
103*35ffd701SAndroid Build Coastguard Worker     GmmPageTableMgr *mgr = pGmmULTClientContext->CreatePageTblMgrObject(&DeviceCBInt, TT_TYPE::AUXTT);
104*35ffd701SAndroid Build Coastguard Worker 
105*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(mgr != NULL);
106*35ffd701SAndroid Build Coastguard Worker 
107*35ffd701SAndroid Build Coastguard Worker     Surface *surf = new Surface(7680, 4320);
108*35ffd701SAndroid Build Coastguard Worker 
109*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(surf != NULL && surf->init());
110*35ffd701SAndroid Build Coastguard Worker 
111*35ffd701SAndroid Build Coastguard Worker     GMM_DDI_UPDATEAUXTABLE updateReq = {0};
112*35ffd701SAndroid Build Coastguard Worker 
113*35ffd701SAndroid Build Coastguard Worker     updateReq.BaseResInfo = surf->getGMMResourceInfo();
114*35ffd701SAndroid Build Coastguard Worker     updateReq.BaseGpuVA   = surf->getGfxAddress(GMM_PLANE_Y);
115*35ffd701SAndroid Build Coastguard Worker     updateReq.Map         = 1;
116*35ffd701SAndroid Build Coastguard Worker 
117*35ffd701SAndroid Build Coastguard Worker     GMM_STATUS res = mgr->UpdateAuxTable(&updateReq);
118*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(res == GMM_SUCCESS);
119*35ffd701SAndroid Build Coastguard Worker 
120*35ffd701SAndroid Build Coastguard Worker     delete surf;
121*35ffd701SAndroid Build Coastguard Worker     pGmmULTClientContext->DestroyPageTblMgrObject(mgr);
122*35ffd701SAndroid Build Coastguard Worker }
123*35ffd701SAndroid Build Coastguard Worker 
TEST_F(CTestAuxTable,DISABLED_TestUpdateAuxTableNonCompressedSurface)124*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestAuxTable, DISABLED_TestUpdateAuxTableNonCompressedSurface)
125*35ffd701SAndroid Build Coastguard Worker {
126*35ffd701SAndroid Build Coastguard Worker     GmmPageTableMgr *mgr = pGmmULTClientContext->CreatePageTblMgrObject(&DeviceCBInt, TT_TYPE::AUXTT);
127*35ffd701SAndroid Build Coastguard Worker 
128*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(mgr != NULL);
129*35ffd701SAndroid Build Coastguard Worker 
130*35ffd701SAndroid Build Coastguard Worker     Surface *surf = new Surface(7680, 4320, false);
131*35ffd701SAndroid Build Coastguard Worker 
132*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(surf != NULL && surf->init());
133*35ffd701SAndroid Build Coastguard Worker 
134*35ffd701SAndroid Build Coastguard Worker     GMM_DDI_UPDATEAUXTABLE updateReq = {0};
135*35ffd701SAndroid Build Coastguard Worker 
136*35ffd701SAndroid Build Coastguard Worker     memset(&updateReq, 0, sizeof(GMM_DDI_UPDATEAUXTABLE));
137*35ffd701SAndroid Build Coastguard Worker 
138*35ffd701SAndroid Build Coastguard Worker     updateReq.BaseResInfo = surf->getGMMResourceInfo();
139*35ffd701SAndroid Build Coastguard Worker     updateReq.BaseGpuVA   = surf->getGfxAddress(GMM_PLANE_Y);
140*35ffd701SAndroid Build Coastguard Worker     updateReq.Map         = 1;
141*35ffd701SAndroid Build Coastguard Worker 
142*35ffd701SAndroid Build Coastguard Worker     GMM_STATUS res = mgr->UpdateAuxTable(&updateReq);
143*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(res != GMM_SUCCESS);
144*35ffd701SAndroid Build Coastguard Worker 
145*35ffd701SAndroid Build Coastguard Worker     delete surf;
146*35ffd701SAndroid Build Coastguard Worker     pGmmULTClientContext->DestroyPageTblMgrObject(mgr);
147*35ffd701SAndroid Build Coastguard Worker }
148*35ffd701SAndroid Build Coastguard Worker 
TEST_F(CTestAuxTable,TestInvalidateAuxTable)149*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestAuxTable, TestInvalidateAuxTable)
150*35ffd701SAndroid Build Coastguard Worker {
151*35ffd701SAndroid Build Coastguard Worker     GmmPageTableMgr *mgr = pGmmULTClientContext->CreatePageTblMgrObject(&DeviceCBInt, TT_TYPE::AUXTT);
152*35ffd701SAndroid Build Coastguard Worker 
153*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(mgr != NULL);
154*35ffd701SAndroid Build Coastguard Worker 
155*35ffd701SAndroid Build Coastguard Worker     Surface *surf = new Surface(7680, 4320);
156*35ffd701SAndroid Build Coastguard Worker 
157*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(surf != NULL && surf->init());
158*35ffd701SAndroid Build Coastguard Worker 
159*35ffd701SAndroid Build Coastguard Worker     GMM_DDI_UPDATEAUXTABLE updateReq = {0};
160*35ffd701SAndroid Build Coastguard Worker 
161*35ffd701SAndroid Build Coastguard Worker     updateReq.BaseResInfo = surf->getGMMResourceInfo();
162*35ffd701SAndroid Build Coastguard Worker     updateReq.BaseGpuVA   = surf->getGfxAddress(GMM_PLANE_Y);
163*35ffd701SAndroid Build Coastguard Worker     updateReq.Map         = 1;
164*35ffd701SAndroid Build Coastguard Worker 
165*35ffd701SAndroid Build Coastguard Worker     GMM_STATUS res = mgr->UpdateAuxTable(&updateReq);
166*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(res == GMM_SUCCESS);
167*35ffd701SAndroid Build Coastguard Worker 
168*35ffd701SAndroid Build Coastguard Worker     memset(&updateReq, 0, sizeof(updateReq));
169*35ffd701SAndroid Build Coastguard Worker 
170*35ffd701SAndroid Build Coastguard Worker     updateReq.BaseResInfo = surf->getGMMResourceInfo();
171*35ffd701SAndroid Build Coastguard Worker     updateReq.Map         = 0;
172*35ffd701SAndroid Build Coastguard Worker 
173*35ffd701SAndroid Build Coastguard Worker     res = mgr->UpdateAuxTable(&updateReq);
174*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(res == GMM_SUCCESS);
175*35ffd701SAndroid Build Coastguard Worker 
176*35ffd701SAndroid Build Coastguard Worker     delete surf;
177*35ffd701SAndroid Build Coastguard Worker     pGmmULTClientContext->DestroyPageTblMgrObject(mgr);
178*35ffd701SAndroid Build Coastguard Worker }
179*35ffd701SAndroid Build Coastguard Worker 
TEST_F(CTestAuxTable,DISABLED_TestUpdateAuxTableStress)180*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestAuxTable, DISABLED_TestUpdateAuxTableStress)
181*35ffd701SAndroid Build Coastguard Worker {
182*35ffd701SAndroid Build Coastguard Worker     const int num_surf = 1000;
183*35ffd701SAndroid Build Coastguard Worker     Surface * surfaces[num_surf];
184*35ffd701SAndroid Build Coastguard Worker     Surface * surf;
185*35ffd701SAndroid Build Coastguard Worker     int       i;
186*35ffd701SAndroid Build Coastguard Worker 
187*35ffd701SAndroid Build Coastguard Worker     GmmPageTableMgr *mgr = pGmmULTClientContext->CreatePageTblMgrObject(&DeviceCBInt, TT_TYPE::AUXTT);
188*35ffd701SAndroid Build Coastguard Worker 
189*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(mgr != NULL);
190*35ffd701SAndroid Build Coastguard Worker 
191*35ffd701SAndroid Build Coastguard Worker     for(i = 0; i < num_surf; i++)
192*35ffd701SAndroid Build Coastguard Worker     {
193*35ffd701SAndroid Build Coastguard Worker         surf        = new Surface(7680, 4320);
194*35ffd701SAndroid Build Coastguard Worker         surfaces[i] = surf;
195*35ffd701SAndroid Build Coastguard Worker 
196*35ffd701SAndroid Build Coastguard Worker         ASSERT_TRUE(surf != NULL && surf->init());
197*35ffd701SAndroid Build Coastguard Worker 
198*35ffd701SAndroid Build Coastguard Worker         GMM_DDI_UPDATEAUXTABLE updateReq = {0};
199*35ffd701SAndroid Build Coastguard Worker 
200*35ffd701SAndroid Build Coastguard Worker         updateReq.BaseResInfo = surf->getGMMResourceInfo();
201*35ffd701SAndroid Build Coastguard Worker         updateReq.BaseGpuVA   = surf->getGfxAddress(GMM_PLANE_Y);
202*35ffd701SAndroid Build Coastguard Worker         updateReq.Map         = 1;
203*35ffd701SAndroid Build Coastguard Worker 
204*35ffd701SAndroid Build Coastguard Worker         mgr->UpdateAuxTable(&updateReq);
205*35ffd701SAndroid Build Coastguard Worker     }
206*35ffd701SAndroid Build Coastguard Worker 
207*35ffd701SAndroid Build Coastguard Worker     for(i = 0; i < num_surf; i++)
208*35ffd701SAndroid Build Coastguard Worker     {
209*35ffd701SAndroid Build Coastguard Worker         surf = surfaces[i];
210*35ffd701SAndroid Build Coastguard Worker         delete surf;
211*35ffd701SAndroid Build Coastguard Worker     }
212*35ffd701SAndroid Build Coastguard Worker 
213*35ffd701SAndroid Build Coastguard Worker     pGmmULTClientContext->DestroyPageTblMgrObject(mgr);
214*35ffd701SAndroid Build Coastguard Worker }
215*35ffd701SAndroid Build Coastguard Worker 
TEST_F(CTestAuxTable,TestAuxTableContent)216*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestAuxTable, TestAuxTableContent)
217*35ffd701SAndroid Build Coastguard Worker {
218*35ffd701SAndroid Build Coastguard Worker     GmmPageTableMgr *mgr = pGmmULTClientContext->CreatePageTblMgrObject(&DeviceCBInt, TT_TYPE::AUXTT);
219*35ffd701SAndroid Build Coastguard Worker 
220*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(mgr != NULL);
221*35ffd701SAndroid Build Coastguard Worker 
222*35ffd701SAndroid Build Coastguard Worker     Surface *surf = new Surface(720, 480);
223*35ffd701SAndroid Build Coastguard Worker 
224*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(surf != NULL && surf->init());
225*35ffd701SAndroid Build Coastguard Worker 
226*35ffd701SAndroid Build Coastguard Worker     GMM_DDI_UPDATEAUXTABLE updateReq = {0};
227*35ffd701SAndroid Build Coastguard Worker 
228*35ffd701SAndroid Build Coastguard Worker     updateReq.BaseResInfo = surf->getGMMResourceInfo();
229*35ffd701SAndroid Build Coastguard Worker     updateReq.BaseGpuVA   = surf->getGfxAddress(GMM_PLANE_Y);
230*35ffd701SAndroid Build Coastguard Worker     updateReq.Map         = 1;
231*35ffd701SAndroid Build Coastguard Worker 
232*35ffd701SAndroid Build Coastguard Worker     GMM_STATUS res = mgr->UpdateAuxTable(&updateReq);
233*35ffd701SAndroid Build Coastguard Worker     ASSERT_TRUE(res == GMM_SUCCESS);
234*35ffd701SAndroid Build Coastguard Worker 
235*35ffd701SAndroid Build Coastguard Worker     Walker *ywalker = new Walker(surf->getGfxAddress(GMM_PLANE_Y),
236*35ffd701SAndroid Build Coastguard Worker                                  surf->getAuxGfxAddress(GMM_AUX_CCS),
237*35ffd701SAndroid Build Coastguard Worker                                  mgr->GetAuxL3TableAddr());
238*35ffd701SAndroid Build Coastguard Worker 
239*35ffd701SAndroid Build Coastguard Worker     for(size_t i = 0; i < surf->getSurfaceSize(GMM_PLANE_Y); i++)
240*35ffd701SAndroid Build Coastguard Worker     {
241*35ffd701SAndroid Build Coastguard Worker         GMM_GFX_ADDRESS addr     = surf->getGfxAddress(GMM_PLANE_Y) + i;
242*35ffd701SAndroid Build Coastguard Worker         GMM_GFX_ADDRESS val      = ywalker->walk(addr);
243*35ffd701SAndroid Build Coastguard Worker         GMM_GFX_ADDRESS expected = ywalker->expected(addr);
244*35ffd701SAndroid Build Coastguard Worker         ASSERT_EQ(expected, val);
245*35ffd701SAndroid Build Coastguard Worker     }
246*35ffd701SAndroid Build Coastguard Worker 
247*35ffd701SAndroid Build Coastguard Worker     Walker *uvwalker = new Walker(surf->getGfxAddress(GMM_PLANE_U),
248*35ffd701SAndroid Build Coastguard Worker                                   surf->getAuxGfxAddress(GMM_AUX_UV_CCS),
249*35ffd701SAndroid Build Coastguard Worker                                   mgr->GetAuxL3TableAddr());
250*35ffd701SAndroid Build Coastguard Worker 
251*35ffd701SAndroid Build Coastguard Worker     for(size_t i = 0; i < surf->getSurfaceSize(GMM_PLANE_U); i++)
252*35ffd701SAndroid Build Coastguard Worker     {
253*35ffd701SAndroid Build Coastguard Worker         GMM_GFX_ADDRESS addr     = surf->getGfxAddress(GMM_PLANE_U) + i;
254*35ffd701SAndroid Build Coastguard Worker         GMM_GFX_ADDRESS val      = uvwalker->walk(addr);
255*35ffd701SAndroid Build Coastguard Worker         GMM_GFX_ADDRESS expected = uvwalker->expected(addr);
256*35ffd701SAndroid Build Coastguard Worker         ASSERT_EQ(expected, val);
257*35ffd701SAndroid Build Coastguard Worker     }
258*35ffd701SAndroid Build Coastguard Worker 
259*35ffd701SAndroid Build Coastguard Worker     delete uvwalker;
260*35ffd701SAndroid Build Coastguard Worker     delete ywalker;
261*35ffd701SAndroid Build Coastguard Worker     delete surf;
262*35ffd701SAndroid Build Coastguard Worker     pGmmULTClientContext->DestroyPageTblMgrObject(mgr);
263*35ffd701SAndroid Build Coastguard Worker }
264*35ffd701SAndroid Build Coastguard Worker 
265*35ffd701SAndroid Build Coastguard Worker #endif /* __linux__ */
266