xref: /aosp_15_r20/external/gmmlib/Source/GmmLib/ULT/GmmGen10ResourceULT.cpp (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 #include "GmmGen10ResourceULT.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 Resource 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 /// @see    CTestGen9Resource::SetUpTestCase()
33*35ffd701SAndroid Build Coastguard Worker ///
34*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
SetUpTestCase()35*35ffd701SAndroid Build Coastguard Worker void CTestGen10Resource::SetUpTestCase()
36*35ffd701SAndroid Build Coastguard Worker {
37*35ffd701SAndroid Build Coastguard Worker     printf("%s\n", __FUNCTION__);
38*35ffd701SAndroid Build Coastguard Worker     GfxPlatform.eProductFamily    = IGFX_CANNONLAKE;
39*35ffd701SAndroid Build Coastguard Worker     GfxPlatform.eRenderCoreFamily = IGFX_GEN10_CORE;
40*35ffd701SAndroid Build Coastguard Worker 
41*35ffd701SAndroid Build Coastguard Worker     CommonULT::SetUpTestCase();
42*35ffd701SAndroid Build Coastguard Worker }
43*35ffd701SAndroid Build Coastguard Worker 
44*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
45*35ffd701SAndroid Build Coastguard Worker /// cleans up once all the tests finish execution.  It also calls TearDownTestCase
46*35ffd701SAndroid Build Coastguard Worker /// from CommonULT to destroy global context and others.
47*35ffd701SAndroid Build Coastguard Worker ///
48*35ffd701SAndroid Build Coastguard Worker /// @see    CTestGen10Resource::TearDownTestCase()
49*35ffd701SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////
TearDownTestCase()50*35ffd701SAndroid Build Coastguard Worker void CTestGen10Resource::TearDownTestCase()
51*35ffd701SAndroid Build Coastguard Worker {
52*35ffd701SAndroid Build Coastguard Worker     printf("%s\n", __FUNCTION__);
53*35ffd701SAndroid Build Coastguard Worker 
54*35ffd701SAndroid Build Coastguard Worker     CommonULT::TearDownTestCase();
55*35ffd701SAndroid Build Coastguard Worker }
56*35ffd701SAndroid Build Coastguard Worker 
57*35ffd701SAndroid Build Coastguard Worker /// @brief ULT for 2D TileYs Resource
TEST_F(CTestGen10Resource,Test2DTileYsResource)58*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestGen10Resource, Test2DTileYsResource)
59*35ffd701SAndroid Build Coastguard Worker {
60*35ffd701SAndroid Build Coastguard Worker     printf("%s\n", __FUNCTION__);
61*35ffd701SAndroid Build Coastguard Worker }
62*35ffd701SAndroid Build Coastguard Worker 
63*35ffd701SAndroid Build Coastguard Worker /// @brief ULT for 2D TileYf Resource
TEST_F(CTestGen10Resource,Test2DTileYfResource)64*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestGen10Resource, Test2DTileYfResource)
65*35ffd701SAndroid Build Coastguard Worker {
66*35ffd701SAndroid Build Coastguard Worker     printf("%s\n", __FUNCTION__);
67*35ffd701SAndroid Build Coastguard Worker }
68*35ffd701SAndroid Build Coastguard Worker 
TEST_F(CTestGen10Resource,TestMSAA)69*35ffd701SAndroid Build Coastguard Worker TEST_F(CTestGen10Resource, TestMSAA)
70*35ffd701SAndroid Build Coastguard Worker {
71*35ffd701SAndroid Build Coastguard Worker     //Tile dimensions in Bytes
72*35ffd701SAndroid Build Coastguard Worker     const uint32_t MCSTileSize[1][2] = {128, 32}; //MCS is TileY
73*35ffd701SAndroid Build Coastguard Worker 
74*35ffd701SAndroid Build Coastguard Worker     //Gen9: MSAA 16x no MCS for width > 8K
75*35ffd701SAndroid Build Coastguard Worker     //No MSAA for YUV/compressed formats
76*35ffd701SAndroid Build Coastguard Worker     //Interleaved MSS (IMS) for Depth/Stencil. Arrayed MSS (CMS) for Color RT
77*35ffd701SAndroid Build Coastguard Worker     //MSS (Arrayed): px_wL, px_hL = pixel width/height of single sample at Lod L
78*35ffd701SAndroid Build Coastguard Worker     //  MSS width = px_wL, MSS height = NumSamples*px_hL
79*35ffd701SAndroid Build Coastguard Worker     //MSS (Interleaved): px_wL, px_hL = pixel width/height of single sample at Lod L
80*35ffd701SAndroid Build Coastguard Worker     // Samples         MSS width                MSS Height
81*35ffd701SAndroid Build Coastguard Worker     //   2x            4*ceil(px_wL/2)             px_hL
82*35ffd701SAndroid Build Coastguard Worker     //   4x            4*ceil(px_wL/2)           4*ceil(px_hL/2)
83*35ffd701SAndroid Build Coastguard Worker     //   8x            8*ceil(px_wL/2)           4*ceil(px_hL/2)
84*35ffd701SAndroid Build Coastguard Worker     //  16x            8*ceil(px_wL/2)           8*ceil(px_hL/2)
85*35ffd701SAndroid Build Coastguard Worker     //MCS (bpp): 2x/4x - bpp_8, 8x - bpp_32, 16x - bpp_64
86*35ffd701SAndroid Build Coastguard Worker 
87*35ffd701SAndroid Build Coastguard Worker     const uint32_t TestDimensions[4][2] = {
88*35ffd701SAndroid Build Coastguard Worker     //Input dimensions in #Tiles
89*35ffd701SAndroid Build Coastguard Worker     {15, 20}, //16 Tiles x 20 <Max Width: Depth MSS crosses Pitch limit beyond this>
90*35ffd701SAndroid Build Coastguard Worker     {0, 0},   //1x1x1
91*35ffd701SAndroid Build Coastguard Worker     {1, 0},   //2 Tilesx1
92*35ffd701SAndroid Build Coastguard Worker     {1, 1},   //2 Tiles x 2
93*35ffd701SAndroid Build Coastguard Worker     };
94*35ffd701SAndroid Build Coastguard Worker 
95*35ffd701SAndroid Build Coastguard Worker     uint32_t TestArraySize[2] = {1, 5};
96*35ffd701SAndroid Build Coastguard Worker     uint32_t MinPitch         = 32;
97*35ffd701SAndroid Build Coastguard Worker 
98*35ffd701SAndroid Build Coastguard Worker     uint32_t HAlign = 0, VAlign = 0;
99*35ffd701SAndroid Build Coastguard Worker     uint32_t TileDimX = 0, TileDimY = 0;
100*35ffd701SAndroid Build Coastguard Worker     uint32_t MCSHAlign = 0, MCSVAlign = 0, TileSize = 0;
101*35ffd701SAndroid Build Coastguard Worker     uint32_t ExpectedMCSBpp = 0;
102*35ffd701SAndroid Build Coastguard Worker     std::vector<tuple<int, int, int, bool, int, int>> List; //TEST_TILE_TYPE, TEST_BPP, TEST_RESOURCE_TYPE, Depth or RT, TestDimension index, ArraySize
103*35ffd701SAndroid Build Coastguard Worker     auto Size = BuildInputIterator(List, 4, 2, false);             // Size of arrays TestDimensions, TestArraySize
104*35ffd701SAndroid Build Coastguard Worker 
105*35ffd701SAndroid Build Coastguard Worker     for(auto element : List)
106*35ffd701SAndroid Build Coastguard Worker     {
107*35ffd701SAndroid Build Coastguard Worker         GMM_RESCREATE_PARAMS gmmParams = {};
108*35ffd701SAndroid Build Coastguard Worker         gmmParams.Flags.Info           = {0};
109*35ffd701SAndroid Build Coastguard Worker 
110*35ffd701SAndroid Build Coastguard Worker         TEST_TILE_TYPE     Tiling     = (TEST_TILE_TYPE)std::get<0>(element);
111*35ffd701SAndroid Build Coastguard Worker         TEST_BPP           Bpp        = (TEST_BPP)std::get<1>(element);
112*35ffd701SAndroid Build Coastguard Worker         TEST_RESOURCE_TYPE ResType    = (TEST_RESOURCE_TYPE)std::get<2>(element);
113*35ffd701SAndroid Build Coastguard Worker         bool               IsRT       = std::get<3>(element); // True for RT, False for Depth
114*35ffd701SAndroid Build Coastguard Worker         int                TestDimIdx = std::get<4>(element); //index into TestDimensions array
115*35ffd701SAndroid Build Coastguard Worker         int                ArrayIdx   = std::get<5>(element); //index into TestArraySize
116*35ffd701SAndroid Build Coastguard Worker         TileSize                      = (Tiling == TEST_TILEYS) ? GMM_KBYTE(64) : GMM_KBYTE(4);
117*35ffd701SAndroid Build Coastguard Worker 
118*35ffd701SAndroid Build Coastguard Worker         //Discard un-supported Tiling/Res_type/bpp for this test
119*35ffd701SAndroid Build Coastguard Worker         if(ResType != TEST_RESOURCE_2D ||                            //No 1D/3D/Cube. Supported 2D mip-maps/array
120*35ffd701SAndroid Build Coastguard Worker            (!IsRT && (Tiling == TEST_TILEX ||
121*35ffd701SAndroid Build Coastguard Worker                       !(Bpp == TEST_BPP_16 || Bpp == TEST_BPP_32)))) //depth supported on 16bit, 32bit formats only
122*35ffd701SAndroid Build Coastguard Worker             continue;
123*35ffd701SAndroid Build Coastguard Worker 
124*35ffd701SAndroid Build Coastguard Worker         SetTileFlag(gmmParams, Tiling);
125*35ffd701SAndroid Build Coastguard Worker         SetResType(gmmParams, ResType);
126*35ffd701SAndroid Build Coastguard Worker         SetResGpuFlags(gmmParams, IsRT);
127*35ffd701SAndroid Build Coastguard Worker         SetResArraySize(gmmParams, TestArraySize[ArrayIdx]);
128*35ffd701SAndroid Build Coastguard Worker 
129*35ffd701SAndroid Build Coastguard Worker         gmmParams.NoGfxMemory = 1;
130*35ffd701SAndroid Build Coastguard Worker         gmmParams.Format      = SetResourceFormat(Bpp);
131*35ffd701SAndroid Build Coastguard Worker         for(uint32_t k = MSAA_2x; k <= MSAA_16x; k++)
132*35ffd701SAndroid Build Coastguard Worker         {
133*35ffd701SAndroid Build Coastguard Worker             GetAlignmentAndTileDimensionsForMSAA(Bpp, IsRT, Tiling, (TEST_MSAA)k,
134*35ffd701SAndroid Build Coastguard Worker                                                  TileDimX, TileDimY, HAlign, VAlign,
135*35ffd701SAndroid Build Coastguard Worker                                                  ExpectedMCSBpp, MCSHAlign, MCSVAlign);
136*35ffd701SAndroid Build Coastguard Worker 
137*35ffd701SAndroid Build Coastguard Worker             gmmParams.BaseWidth64     = TestDimensions[TestDimIdx][0] * TileDimX + 0x1;
138*35ffd701SAndroid Build Coastguard Worker             gmmParams.BaseHeight      = TestDimensions[TestDimIdx][1] * TileDimY + 0x1;
139*35ffd701SAndroid Build Coastguard Worker             gmmParams.Depth           = 0x1;
140*35ffd701SAndroid Build Coastguard Worker             gmmParams.MSAA.NumSamples = static_cast<uint32_t>(pow((double)2, k));
141*35ffd701SAndroid Build Coastguard Worker             gmmParams.Flags.Gpu.MCS   = 0;
142*35ffd701SAndroid Build Coastguard Worker 
143*35ffd701SAndroid Build Coastguard Worker             //MSS surface
144*35ffd701SAndroid Build Coastguard Worker             GMM_RESOURCE_INFO *MSSResourceInfo;
145*35ffd701SAndroid Build Coastguard Worker             MSSResourceInfo = pGmmULTClientContext->CreateResInfoObject(&gmmParams);
146*35ffd701SAndroid Build Coastguard Worker 
147*35ffd701SAndroid Build Coastguard Worker             if(MSSResourceInfo)
148*35ffd701SAndroid Build Coastguard Worker             {
149*35ffd701SAndroid Build Coastguard Worker                 VerifyResourceHAlign<true>(MSSResourceInfo, HAlign);
150*35ffd701SAndroid Build Coastguard Worker                 VerifyResourceVAlign<true>(MSSResourceInfo, VAlign);
151*35ffd701SAndroid Build Coastguard Worker                 if(IsRT) //Arrayed MSS
152*35ffd701SAndroid Build Coastguard Worker                 {
153*35ffd701SAndroid Build Coastguard Worker                     uint32_t ExpectedPitch = 0, ExpectedQPitch = 0;
154*35ffd701SAndroid Build Coastguard Worker                     ExpectedPitch = GMM_ULT_ALIGN(GMM_ULT_ALIGN(gmmParams.BaseWidth64, HAlign) * (uint32_t)pow(2.0, Bpp), TileDimX); // Aligned width * bpp, aligned to TileWidth
155*35ffd701SAndroid Build Coastguard Worker                     ExpectedPitch = GFX_MAX(ExpectedPitch, MinPitch);
156*35ffd701SAndroid Build Coastguard Worker                     VerifyResourcePitch<true>(MSSResourceInfo, ExpectedPitch);
157*35ffd701SAndroid Build Coastguard Worker                     if(Tiling != TEST_LINEAR)
158*35ffd701SAndroid Build Coastguard Worker                         VerifyResourcePitchInTiles<true>(MSSResourceInfo, ExpectedPitch / TileDimX);
159*35ffd701SAndroid Build Coastguard Worker 
160*35ffd701SAndroid Build Coastguard Worker                     ExpectedQPitch = GMM_ULT_ALIGN(gmmParams.BaseHeight, VAlign);
161*35ffd701SAndroid Build Coastguard Worker                     if(gmmParams.ArraySize > 1) //Gen9: Qpitch is distance between array slices (not sample slices)
162*35ffd701SAndroid Build Coastguard Worker                     {
163*35ffd701SAndroid Build Coastguard Worker                         VerifyResourceQPitch<true>(MSSResourceInfo, ExpectedQPitch);
164*35ffd701SAndroid Build Coastguard Worker                     }
165*35ffd701SAndroid Build Coastguard Worker 
166*35ffd701SAndroid Build Coastguard Worker                     uint32_t ExpectedHeight = GMM_ULT_ALIGN(ExpectedQPitch * gmmParams.MSAA.NumSamples * gmmParams.ArraySize, TileDimY); //Align Height =ExpectedPitch * NumSamples * ExpectedQPitch, to Tile-Height
167*35ffd701SAndroid Build Coastguard Worker                     VerifyResourceSize<true>(MSSResourceInfo, GMM_ULT_ALIGN(ExpectedPitch * ExpectedHeight, TileSize));
168*35ffd701SAndroid Build Coastguard Worker                 }
169*35ffd701SAndroid Build Coastguard Worker                 else // Interleaved MSS
170*35ffd701SAndroid Build Coastguard Worker                 {
171*35ffd701SAndroid Build Coastguard Worker                     uint32_t WidthMultiplier, HeightMultiplier;
172*35ffd701SAndroid Build Coastguard Worker                     GetInterleaveMSSPattern((TEST_MSAA)k, WidthMultiplier, HeightMultiplier, IsRT, Bpp);
173*35ffd701SAndroid Build Coastguard Worker                     gmmParams.BaseWidth64 = WidthMultiplier > 1 ? GMM_ULT_ALIGN(gmmParams.BaseWidth64, 2) : gmmParams.BaseWidth64;
174*35ffd701SAndroid Build Coastguard Worker                     gmmParams.BaseHeight  = HeightMultiplier > 1 ? GMM_ULT_ALIGN(gmmParams.BaseHeight, 2) : gmmParams.BaseHeight;
175*35ffd701SAndroid Build Coastguard Worker 
176*35ffd701SAndroid Build Coastguard Worker                     uint32_t ExpectedPitch = GMM_ULT_ALIGN(GMM_ULT_ALIGN(gmmParams.BaseWidth64 * WidthMultiplier, HAlign) * (uint32_t)pow(2.0, Bpp), TileDimX);
177*35ffd701SAndroid Build Coastguard Worker                     VerifyResourcePitch<true>(MSSResourceInfo, ExpectedPitch);
178*35ffd701SAndroid Build Coastguard Worker                     if(Tiling != TEST_LINEAR)
179*35ffd701SAndroid Build Coastguard Worker                     {
180*35ffd701SAndroid Build Coastguard Worker                         VerifyResourcePitchInTiles<true>(MSSResourceInfo, ExpectedPitch / TileDimX);
181*35ffd701SAndroid Build Coastguard Worker                     }
182*35ffd701SAndroid Build Coastguard Worker 
183*35ffd701SAndroid Build Coastguard Worker                     uint64_t ExpectedQPitch = GMM_ULT_ALIGN(gmmParams.BaseHeight * HeightMultiplier, VAlign);
184*35ffd701SAndroid Build Coastguard Worker                     if(gmmParams.ArraySize > 1)
185*35ffd701SAndroid Build Coastguard Worker                     {
186*35ffd701SAndroid Build Coastguard Worker                         VerifyResourceQPitch<true>(MSSResourceInfo, ExpectedQPitch);
187*35ffd701SAndroid Build Coastguard Worker                     }
188*35ffd701SAndroid Build Coastguard Worker                     uint64_t ExpectedHeight = GMM_ULT_ALIGN(ExpectedQPitch * gmmParams.ArraySize, TileDimY);            //Align Height = ExpectedQPitch*ArraySize, to Tile-Height
189*35ffd701SAndroid Build Coastguard Worker                     VerifyResourceSize<true>(MSSResourceInfo, GMM_ULT_ALIGN(ExpectedPitch * ExpectedHeight, TileSize)); //ExpectedPitch *ExpectedHeight
190*35ffd701SAndroid Build Coastguard Worker                 }
191*35ffd701SAndroid Build Coastguard Worker             }
192*35ffd701SAndroid Build Coastguard Worker 
193*35ffd701SAndroid Build Coastguard Worker             //No MCS surface if MSS creation failed
194*35ffd701SAndroid Build Coastguard Worker             if(MSSResourceInfo)
195*35ffd701SAndroid Build Coastguard Worker             {
196*35ffd701SAndroid Build Coastguard Worker                 gmmParams.Flags.Gpu.MCS = 1;
197*35ffd701SAndroid Build Coastguard Worker                 GMM_RESOURCE_INFO *MCSResourceInfo;
198*35ffd701SAndroid Build Coastguard Worker                 MCSResourceInfo = pGmmULTClientContext->CreateResInfoObject(&gmmParams);
199*35ffd701SAndroid Build Coastguard Worker 
200*35ffd701SAndroid Build Coastguard Worker                 VerifyResourceHAlign<true>(MCSResourceInfo, MCSHAlign);
201*35ffd701SAndroid Build Coastguard Worker                 VerifyResourceVAlign<true>(MCSResourceInfo, MCSVAlign);
202*35ffd701SAndroid Build Coastguard Worker 
203*35ffd701SAndroid Build Coastguard Worker                 uint32_t ExpectedPitch = GMM_ULT_ALIGN(GMM_ULT_ALIGN(gmmParams.BaseWidth64, MCSHAlign) * ExpectedMCSBpp, MCSTileSize[0][0]); // Align in texels, tehn multiply w/ Bpt
204*35ffd701SAndroid Build Coastguard Worker                 VerifyResourcePitch<true>(MCSResourceInfo, ExpectedPitch);
205*35ffd701SAndroid Build Coastguard Worker                 VerifyResourcePitchInTiles<true>(MCSResourceInfo, ExpectedPitch / MCSTileSize[0][0]);
206*35ffd701SAndroid Build Coastguard Worker 
207*35ffd701SAndroid Build Coastguard Worker                 uint32_t ExpectedQPitch = GMM_ULT_ALIGN(gmmParams.BaseHeight, MCSVAlign);
208*35ffd701SAndroid Build Coastguard Worker                 if(gmmParams.ArraySize > 1)
209*35ffd701SAndroid Build Coastguard Worker                 {
210*35ffd701SAndroid Build Coastguard Worker                     ExpectedQPitch = GMM_ULT_ALIGN(gmmParams.BaseHeight, MCSVAlign); //QPitch only for array
211*35ffd701SAndroid Build Coastguard Worker                     VerifyResourceQPitch<true>(MCSResourceInfo, ExpectedQPitch);
212*35ffd701SAndroid Build Coastguard Worker                 }
213*35ffd701SAndroid Build Coastguard Worker 
214*35ffd701SAndroid Build Coastguard Worker                 uint32_t ExpectedHeight = GMM_ULT_ALIGN(ExpectedQPitch * gmmParams.ArraySize, MCSTileSize[0][1]);
215*35ffd701SAndroid Build Coastguard Worker                 VerifyResourceSize<true>(MCSResourceInfo, GMM_ULT_ALIGN(ExpectedPitch * ExpectedHeight, GMM_KBYTE(4))); //MCS Tile is TileY
216*35ffd701SAndroid Build Coastguard Worker 
217*35ffd701SAndroid Build Coastguard Worker                 pGmmULTClientContext->DestroyResInfoObject(MCSResourceInfo);
218*35ffd701SAndroid Build Coastguard Worker             } //MCS
219*35ffd701SAndroid Build Coastguard Worker 
220*35ffd701SAndroid Build Coastguard Worker             pGmmULTClientContext->DestroyResInfoObject(MSSResourceInfo);
221*35ffd701SAndroid Build Coastguard Worker         } //NumSamples = k
222*35ffd701SAndroid Build Coastguard Worker     }     //Iterate through all Input types
223*35ffd701SAndroid Build Coastguard Worker 
224*35ffd701SAndroid Build Coastguard Worker     //Mip-mapped, MSAA case:
225*35ffd701SAndroid Build Coastguard Worker }
226