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 #pragma once 24*35ffd701SAndroid Build Coastguard Worker 25*35ffd701SAndroid Build Coastguard Worker #include "GmmCommonULT.h" 26*35ffd701SAndroid Build Coastguard Worker 27*35ffd701SAndroid Build Coastguard Worker //=========================================================================== 28*35ffd701SAndroid Build Coastguard Worker // typedef: 29*35ffd701SAndroid Build Coastguard Worker // TEST_RESOURCE_TYPE_ENUM 30*35ffd701SAndroid Build Coastguard Worker // 31*35ffd701SAndroid Build Coastguard Worker // Description: 32*35ffd701SAndroid Build Coastguard Worker // Decribes Resource types to test 33*35ffd701SAndroid Build Coastguard Worker // when editing/adding existing/new enum, make sure to update corresponding 34*35ffd701SAndroid Build Coastguard Worker // string array CTestResource::TestResourceTypeStr[]. 35*35ffd701SAndroid Build Coastguard Worker //---------------------------------------------------------------------------- 36*35ffd701SAndroid Build Coastguard Worker typedef enum TEST_RESOURCE_TYPE_ENUM 37*35ffd701SAndroid Build Coastguard Worker { 38*35ffd701SAndroid Build Coastguard Worker TEST_RESOURCE_1D, 39*35ffd701SAndroid Build Coastguard Worker TEST_RESOURCE_2D, 40*35ffd701SAndroid Build Coastguard Worker TEST_RESOURCE_3D, 41*35ffd701SAndroid Build Coastguard Worker TEST_RESOURCE_CUBE, 42*35ffd701SAndroid Build Coastguard Worker TEST_RESOURCE_BUFFER, 43*35ffd701SAndroid Build Coastguard Worker TEST_RESOURCE_MAX 44*35ffd701SAndroid Build Coastguard Worker }TEST_RESOURCE_TYPE; 45*35ffd701SAndroid Build Coastguard Worker 46*35ffd701SAndroid Build Coastguard Worker //=========================================================================== 47*35ffd701SAndroid Build Coastguard Worker // typedef: 48*35ffd701SAndroid Build Coastguard Worker // TEST_RESOURCE_TYPE_ENUM 49*35ffd701SAndroid Build Coastguard Worker // 50*35ffd701SAndroid Build Coastguard Worker // Description: 51*35ffd701SAndroid Build Coastguard Worker // Decribes Resource Tile Types to test . 52*35ffd701SAndroid Build Coastguard Worker // when editing/adding existing/new enum, make sure to update corresponding 53*35ffd701SAndroid Build Coastguard Worker // string array CTestResource::TestTileTypeStr[]. 54*35ffd701SAndroid Build Coastguard Worker //---------------------------------------------------------------------------- 55*35ffd701SAndroid Build Coastguard Worker typedef enum TEST_TILE_TYPE_ENUM 56*35ffd701SAndroid Build Coastguard Worker { 57*35ffd701SAndroid Build Coastguard Worker TEST_LINEAR, 58*35ffd701SAndroid Build Coastguard Worker TEST_TILEX, 59*35ffd701SAndroid Build Coastguard Worker TEST_TILEY, 60*35ffd701SAndroid Build Coastguard Worker TEST_TILEYS, 61*35ffd701SAndroid Build Coastguard Worker TEST_TILEYF, 62*35ffd701SAndroid Build Coastguard Worker TEST_TILEY_MAX = TEST_TILEYF, 63*35ffd701SAndroid Build Coastguard Worker TEST_TILE4, 64*35ffd701SAndroid Build Coastguard Worker TEST_TILE64, 65*35ffd701SAndroid Build Coastguard Worker TEST_TILE_MAX 66*35ffd701SAndroid Build Coastguard Worker }TEST_TILE_TYPE; 67*35ffd701SAndroid Build Coastguard Worker 68*35ffd701SAndroid Build Coastguard Worker 69*35ffd701SAndroid Build Coastguard Worker //=========================================================================== 70*35ffd701SAndroid Build Coastguard Worker // typedef: 71*35ffd701SAndroid Build Coastguard Worker // TEST_BPP_ENUM 72*35ffd701SAndroid Build Coastguard Worker // 73*35ffd701SAndroid Build Coastguard Worker // Description: 74*35ffd701SAndroid Build Coastguard Worker // Decribes BPP to test - 8, 16, 32, 64, 128 (Ignore 24/96 until need arises) 75*35ffd701SAndroid Build Coastguard Worker // when editing/adding existing/new enum, make sure to update corresponding 76*35ffd701SAndroid Build Coastguard Worker // string array CTestResource::TestBppStr[]. 77*35ffd701SAndroid Build Coastguard Worker //---------------------------------------------------------------------------- 78*35ffd701SAndroid Build Coastguard Worker typedef enum TEST_BPP_ENUM 79*35ffd701SAndroid Build Coastguard Worker { 80*35ffd701SAndroid Build Coastguard Worker TEST_BPP_8, 81*35ffd701SAndroid Build Coastguard Worker TEST_BPP_16, 82*35ffd701SAndroid Build Coastguard Worker TEST_BPP_32, 83*35ffd701SAndroid Build Coastguard Worker TEST_BPP_64, 84*35ffd701SAndroid Build Coastguard Worker TEST_BPP_128, 85*35ffd701SAndroid Build Coastguard Worker TEST_BPP_MAX 86*35ffd701SAndroid Build Coastguard Worker }TEST_BPP; 87*35ffd701SAndroid Build Coastguard Worker 88*35ffd701SAndroid Build Coastguard Worker typedef enum TEST_MSAA_Samples 89*35ffd701SAndroid Build Coastguard Worker { 90*35ffd701SAndroid Build Coastguard Worker MSAA_None, 91*35ffd701SAndroid Build Coastguard Worker MSAA_2x, 92*35ffd701SAndroid Build Coastguard Worker MSAA_4x, 93*35ffd701SAndroid Build Coastguard Worker MSAA_8x, 94*35ffd701SAndroid Build Coastguard Worker MSAA_16x, 95*35ffd701SAndroid Build Coastguard Worker TEST_MSAA_MAX = MSAA_16x //Should be equal to last MSAA type 96*35ffd701SAndroid Build Coastguard Worker } TEST_MSAA; 97*35ffd701SAndroid Build Coastguard Worker 98*35ffd701SAndroid Build Coastguard Worker //=========================================================================== 99*35ffd701SAndroid Build Coastguard Worker // GmmLib ULT macros for size alignment. Compitable with 64-bit numbers. 100*35ffd701SAndroid Build Coastguard Worker //--------------------------------------------------------------------------- 101*35ffd701SAndroid Build Coastguard Worker #define GMM_ULT_ALIGN(x, a) (((x) + ((a) - 1)) - (((x) + ((a) - 1)) & ((a) - 1))) // Alt implementation with bitwise not (~) has issue with uint32 align used with 64-bit value, since ~'ed value will remain 32-bit. 102*35ffd701SAndroid Build Coastguard Worker #define GMM_ULT_ALIGN_FLOOR(x, a) ((x) - ((x) & ((a) - 1))) 103*35ffd701SAndroid Build Coastguard Worker #define GMM_ULT_MAX(a, b) ((a) > (b)) ? (a) : (b) 104*35ffd701SAndroid Build Coastguard Worker #define GMM_ULT_MIN(a,b) (((a) < (b)) ? (a) : (b)) 105*35ffd701SAndroid Build Coastguard Worker #define GMM_ULT_ALIGN_NP2(x, a) (((a) > 0) ? ((x) + (((a) - 1) - (((x) + ((a) - 1)) % (a)))) : (x)) //Next power of 2 106*35ffd701SAndroid Build Coastguard Worker #define GMM_ULT_MAX_MIPMAP 15 107*35ffd701SAndroid Build Coastguard Worker #define GMM_ULT_MAX_MIPTAIL_SLOTS 15 108*35ffd701SAndroid Build Coastguard Worker ////////////////////////////////////////////////////////////////////////// 109*35ffd701SAndroid Build Coastguard Worker // typdef: 110*35ffd701SAndroid Build Coastguard Worker // TEST_MIPTAIL_SLOT_OFFSET_REC 111*35ffd701SAndroid Build Coastguard Worker // 112*35ffd701SAndroid Build Coastguard Worker // Description: 113*35ffd701SAndroid Build Coastguard Worker // Structure to hold the offset of the mip resources for unit level testing 114*35ffd701SAndroid Build Coastguard Worker ////////////////////////////////////////////////////////////////////////// 115*35ffd701SAndroid Build Coastguard Worker typedef struct TEST_MIPTAIL_SLOT_OFFSET_REC 116*35ffd701SAndroid Build Coastguard Worker { 117*35ffd701SAndroid Build Coastguard Worker uint32_t X; 118*35ffd701SAndroid Build Coastguard Worker uint32_t Y; 119*35ffd701SAndroid Build Coastguard Worker uint32_t Z; 120*35ffd701SAndroid Build Coastguard Worker }TEST_MIPTAIL_SLOT_OFFSET; 121*35ffd701SAndroid Build Coastguard Worker 122*35ffd701SAndroid Build Coastguard Worker 123*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////// 124*35ffd701SAndroid Build Coastguard Worker /// Fixture class for Resource. - This is Resource Test Case to test 125*35ffd701SAndroid Build Coastguard Worker /// all generic resource types, tile types, bpp and special allocations. 126*35ffd701SAndroid Build Coastguard Worker /// Contains Base implementation and inherits CommonULT class 127*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////// 128*35ffd701SAndroid Build Coastguard Worker class CTestResource : public CommonULT 129*35ffd701SAndroid Build Coastguard Worker { 130*35ffd701SAndroid Build Coastguard Worker protected: 131*35ffd701SAndroid Build Coastguard Worker 132*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 133*35ffd701SAndroid Build Coastguard Worker /// Returns GMM format for given test BPP input. 134*35ffd701SAndroid Build Coastguard Worker /// 135*35ffd701SAndroid Build Coastguard Worker /// @param[in] Bpp: test Bpp value 136*35ffd701SAndroid Build Coastguard Worker /// 137*35ffd701SAndroid Build Coastguard Worker /// @return ::GMM_RESOURCE_FORMAT 138*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// SetResourceFormat(TEST_BPP Bpp)139*35ffd701SAndroid Build Coastguard Worker GMM_RESOURCE_FORMAT SetResourceFormat(TEST_BPP Bpp) 140*35ffd701SAndroid Build Coastguard Worker { 141*35ffd701SAndroid Build Coastguard Worker switch (Bpp) 142*35ffd701SAndroid Build Coastguard Worker { 143*35ffd701SAndroid Build Coastguard Worker case TEST_BPP_8: 144*35ffd701SAndroid Build Coastguard Worker return GMM_FORMAT_GENERIC_8BIT; 145*35ffd701SAndroid Build Coastguard Worker case TEST_BPP_16: 146*35ffd701SAndroid Build Coastguard Worker return GMM_FORMAT_GENERIC_16BIT; 147*35ffd701SAndroid Build Coastguard Worker case TEST_BPP_32: 148*35ffd701SAndroid Build Coastguard Worker return GMM_FORMAT_GENERIC_32BIT; 149*35ffd701SAndroid Build Coastguard Worker case TEST_BPP_64: 150*35ffd701SAndroid Build Coastguard Worker return GMM_FORMAT_GENERIC_64BIT; 151*35ffd701SAndroid Build Coastguard Worker case TEST_BPP_128: 152*35ffd701SAndroid Build Coastguard Worker return GMM_FORMAT_GENERIC_128BIT; 153*35ffd701SAndroid Build Coastguard Worker default: 154*35ffd701SAndroid Build Coastguard Worker break; 155*35ffd701SAndroid Build Coastguard Worker } 156*35ffd701SAndroid Build Coastguard Worker 157*35ffd701SAndroid Build Coastguard Worker return GMM_FORMAT_INVALID; 158*35ffd701SAndroid Build Coastguard Worker } 159*35ffd701SAndroid Build Coastguard Worker 160*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 161*35ffd701SAndroid Build Coastguard Worker /// Returns Bpp (bytes per pixel) for a given bpp (bits per pixel) enum. 162*35ffd701SAndroid Build Coastguard Worker /// 163*35ffd701SAndroid Build Coastguard Worker /// @param[in] bpp: test bpp value 164*35ffd701SAndroid Build Coastguard Worker /// 165*35ffd701SAndroid Build Coastguard Worker /// @return Bytes per pixel 166*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// GetBppValue(TEST_BPP bpp)167*35ffd701SAndroid Build Coastguard Worker uint32_t GetBppValue(TEST_BPP bpp) 168*35ffd701SAndroid Build Coastguard Worker { 169*35ffd701SAndroid Build Coastguard Worker uint32_t Bpp = 0; 170*35ffd701SAndroid Build Coastguard Worker switch (bpp) 171*35ffd701SAndroid Build Coastguard Worker { 172*35ffd701SAndroid Build Coastguard Worker case TEST_BPP_8: 173*35ffd701SAndroid Build Coastguard Worker Bpp = 8; 174*35ffd701SAndroid Build Coastguard Worker break; 175*35ffd701SAndroid Build Coastguard Worker case TEST_BPP_16: 176*35ffd701SAndroid Build Coastguard Worker Bpp = 16; 177*35ffd701SAndroid Build Coastguard Worker break; 178*35ffd701SAndroid Build Coastguard Worker case TEST_BPP_32: 179*35ffd701SAndroid Build Coastguard Worker Bpp = 32; 180*35ffd701SAndroid Build Coastguard Worker break; 181*35ffd701SAndroid Build Coastguard Worker case TEST_BPP_64: 182*35ffd701SAndroid Build Coastguard Worker Bpp = 64; 183*35ffd701SAndroid Build Coastguard Worker break; 184*35ffd701SAndroid Build Coastguard Worker case TEST_BPP_128: 185*35ffd701SAndroid Build Coastguard Worker Bpp = 128; 186*35ffd701SAndroid Build Coastguard Worker break; 187*35ffd701SAndroid Build Coastguard Worker default: 188*35ffd701SAndroid Build Coastguard Worker break; 189*35ffd701SAndroid Build Coastguard Worker } 190*35ffd701SAndroid Build Coastguard Worker 191*35ffd701SAndroid Build Coastguard Worker return Bpp >> 3; 192*35ffd701SAndroid Build Coastguard Worker } 193*35ffd701SAndroid Build Coastguard Worker 194*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 195*35ffd701SAndroid Build Coastguard Worker /// Set the tile flag in Gmm ResCreate Params 196*35ffd701SAndroid Build Coastguard Worker /// 197*35ffd701SAndroid Build Coastguard Worker /// @param[in] Parms: Gmm Rescreate params 198*35ffd701SAndroid Build Coastguard Worker /// @param[in] Tile: Tile Type 199*35ffd701SAndroid Build Coastguard Worker /// 200*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// SetTileFlag(GMM_RESCREATE_PARAMS & Params,TEST_TILE_TYPE Tile)201*35ffd701SAndroid Build Coastguard Worker void SetTileFlag(GMM_RESCREATE_PARAMS &Params, TEST_TILE_TYPE Tile) 202*35ffd701SAndroid Build Coastguard Worker { 203*35ffd701SAndroid Build Coastguard Worker switch (Tile) 204*35ffd701SAndroid Build Coastguard Worker { 205*35ffd701SAndroid Build Coastguard Worker case TEST_LINEAR: 206*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.Linear = 1; 207*35ffd701SAndroid Build Coastguard Worker break; 208*35ffd701SAndroid Build Coastguard Worker case TEST_TILEX: 209*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledX = 1; 210*35ffd701SAndroid Build Coastguard Worker break; 211*35ffd701SAndroid Build Coastguard Worker case TEST_TILEY: 212*35ffd701SAndroid Build Coastguard Worker if (pGfxAdapterInfo->SkuTable.FtrTileY) 213*35ffd701SAndroid Build Coastguard Worker { 214*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledY = 1; 215*35ffd701SAndroid Build Coastguard Worker } 216*35ffd701SAndroid Build Coastguard Worker else 217*35ffd701SAndroid Build Coastguard Worker { 218*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.Tile4 = 1; 219*35ffd701SAndroid Build Coastguard Worker } 220*35ffd701SAndroid Build Coastguard Worker break; 221*35ffd701SAndroid Build Coastguard Worker case TEST_TILEYF: 222*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledY = 1; 223*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledYf = 1; 224*35ffd701SAndroid Build Coastguard Worker break; 225*35ffd701SAndroid Build Coastguard Worker case TEST_TILEYS: 226*35ffd701SAndroid Build Coastguard Worker if (pGfxAdapterInfo->SkuTable.FtrTileY) 227*35ffd701SAndroid Build Coastguard Worker { 228*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledY = 1; 229*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledYs = 1; 230*35ffd701SAndroid Build Coastguard Worker } 231*35ffd701SAndroid Build Coastguard Worker else 232*35ffd701SAndroid Build Coastguard Worker { 233*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.Tile64 = 1; 234*35ffd701SAndroid Build Coastguard Worker } 235*35ffd701SAndroid Build Coastguard Worker break; 236*35ffd701SAndroid Build Coastguard Worker default: 237*35ffd701SAndroid Build Coastguard Worker break; 238*35ffd701SAndroid Build Coastguard Worker } 239*35ffd701SAndroid Build Coastguard Worker } 240*35ffd701SAndroid Build Coastguard Worker 241*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 242*35ffd701SAndroid Build Coastguard Worker /// Set the tile flag in Gmm Custom ResCreate Params 243*35ffd701SAndroid Build Coastguard Worker /// 244*35ffd701SAndroid Build Coastguard Worker /// @param[in] Parms: Gmm Rescreate params 245*35ffd701SAndroid Build Coastguard Worker /// @param[in] Tile: Tile Type 246*35ffd701SAndroid Build Coastguard Worker /// 247*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// SetTileFlag_Custom(GMM_RESCREATE_CUSTOM_PARAMS & Params,TEST_TILE_TYPE Tile)248*35ffd701SAndroid Build Coastguard Worker void SetTileFlag_Custom(GMM_RESCREATE_CUSTOM_PARAMS& Params, TEST_TILE_TYPE Tile) 249*35ffd701SAndroid Build Coastguard Worker { 250*35ffd701SAndroid Build Coastguard Worker switch (Tile) 251*35ffd701SAndroid Build Coastguard Worker { 252*35ffd701SAndroid Build Coastguard Worker case TEST_LINEAR: 253*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.Linear = 1; 254*35ffd701SAndroid Build Coastguard Worker break; 255*35ffd701SAndroid Build Coastguard Worker case TEST_TILEX: 256*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledX = 1; 257*35ffd701SAndroid Build Coastguard Worker break; 258*35ffd701SAndroid Build Coastguard Worker case TEST_TILEY: 259*35ffd701SAndroid Build Coastguard Worker if (pGfxAdapterInfo->SkuTable.FtrTileY) 260*35ffd701SAndroid Build Coastguard Worker { 261*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledY = 1; 262*35ffd701SAndroid Build Coastguard Worker } 263*35ffd701SAndroid Build Coastguard Worker else 264*35ffd701SAndroid Build Coastguard Worker { 265*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.Tile4 = 1; 266*35ffd701SAndroid Build Coastguard Worker } 267*35ffd701SAndroid Build Coastguard Worker break; 268*35ffd701SAndroid Build Coastguard Worker case TEST_TILEYF: 269*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledY = 1; 270*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledYf = 1; 271*35ffd701SAndroid Build Coastguard Worker break; 272*35ffd701SAndroid Build Coastguard Worker case TEST_TILEYS: 273*35ffd701SAndroid Build Coastguard Worker if (pGfxAdapterInfo->SkuTable.FtrTileY) 274*35ffd701SAndroid Build Coastguard Worker { 275*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledY = 1; 276*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.TiledYs = 1; 277*35ffd701SAndroid Build Coastguard Worker } 278*35ffd701SAndroid Build Coastguard Worker else 279*35ffd701SAndroid Build Coastguard Worker { 280*35ffd701SAndroid Build Coastguard Worker Params.Flags.Info.Tile64 = 1; 281*35ffd701SAndroid Build Coastguard Worker } 282*35ffd701SAndroid Build Coastguard Worker break; 283*35ffd701SAndroid Build Coastguard Worker default: 284*35ffd701SAndroid Build Coastguard Worker break; 285*35ffd701SAndroid Build Coastguard Worker } 286*35ffd701SAndroid Build Coastguard Worker } 287*35ffd701SAndroid Build Coastguard Worker 288*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 289*35ffd701SAndroid Build Coastguard Worker /// Sets Resource Type in GmmParams 290*35ffd701SAndroid Build Coastguard Worker /// 291*35ffd701SAndroid Build Coastguard Worker /// @param[in] Params: GmmParams 292*35ffd701SAndroid Build Coastguard Worker /// @param[in] ResType: Resource type 293*35ffd701SAndroid Build Coastguard Worker /// 294*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// SetResType(GMM_RESCREATE_PARAMS & Params,TEST_RESOURCE_TYPE ResType)295*35ffd701SAndroid Build Coastguard Worker void SetResType(GMM_RESCREATE_PARAMS& Params, TEST_RESOURCE_TYPE ResType) 296*35ffd701SAndroid Build Coastguard Worker { 297*35ffd701SAndroid Build Coastguard Worker Params.Type = static_cast<GMM_RESOURCE_TYPE>((ResType == TEST_RESOURCE_BUFFER) ? ResType + 2 : ResType + 1); 298*35ffd701SAndroid Build Coastguard Worker } 299*35ffd701SAndroid Build Coastguard Worker 300*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 301*35ffd701SAndroid Build Coastguard Worker /// Sets RenderTarget or Depth Gpu Flags in GmmParams 302*35ffd701SAndroid Build Coastguard Worker /// 303*35ffd701SAndroid Build Coastguard Worker /// @param[in] Params: GmmParams 304*35ffd701SAndroid Build Coastguard Worker /// @param[in] IsRT: true for RT, false for Depth 305*35ffd701SAndroid Build Coastguard Worker /// 306*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// SetResGpuFlags(GMM_RESCREATE_PARAMS & Params,bool IsRT)307*35ffd701SAndroid Build Coastguard Worker void SetResGpuFlags(GMM_RESCREATE_PARAMS& Params, bool IsRT) 308*35ffd701SAndroid Build Coastguard Worker { 309*35ffd701SAndroid Build Coastguard Worker if (IsRT) 310*35ffd701SAndroid Build Coastguard Worker { 311*35ffd701SAndroid Build Coastguard Worker Params.Flags.Gpu.Depth = 0; 312*35ffd701SAndroid Build Coastguard Worker Params.Flags.Gpu.RenderTarget = 1; 313*35ffd701SAndroid Build Coastguard Worker } 314*35ffd701SAndroid Build Coastguard Worker else 315*35ffd701SAndroid Build Coastguard Worker { 316*35ffd701SAndroid Build Coastguard Worker Params.Flags.Gpu.Depth = 1; 317*35ffd701SAndroid Build Coastguard Worker Params.Flags.Gpu.RenderTarget = 0; 318*35ffd701SAndroid Build Coastguard Worker } 319*35ffd701SAndroid Build Coastguard Worker } 320*35ffd701SAndroid Build Coastguard Worker 321*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 322*35ffd701SAndroid Build Coastguard Worker /// Sets ArraySize in GmmParams 323*35ffd701SAndroid Build Coastguard Worker /// 324*35ffd701SAndroid Build Coastguard Worker /// @param[in] Params: GmmParams 325*35ffd701SAndroid Build Coastguard Worker /// @param[in] Size: Array Size 326*35ffd701SAndroid Build Coastguard Worker /// 327*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// SetResArraySize(GMM_RESCREATE_PARAMS & Params,int Size)328*35ffd701SAndroid Build Coastguard Worker void SetResArraySize(GMM_RESCREATE_PARAMS& Params, int Size) 329*35ffd701SAndroid Build Coastguard Worker { 330*35ffd701SAndroid Build Coastguard Worker Params.ArraySize = Size; 331*35ffd701SAndroid Build Coastguard Worker } 332*35ffd701SAndroid Build Coastguard Worker 333*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 334*35ffd701SAndroid Build Coastguard Worker /// Get the Tile dimension and H/V Align for MSS and MCS surfaces 335*35ffd701SAndroid Build Coastguard Worker /// 336*35ffd701SAndroid Build Coastguard Worker /// @param[in] Bpp: bits per pixel 337*35ffd701SAndroid Build Coastguard Worker /// @param[in] isRT: Request is for RT or Depth MSS 338*35ffd701SAndroid Build Coastguard Worker /// @param[in] Tiling: Tile Type 339*35ffd701SAndroid Build Coastguard Worker /// @param[in] MSAA: Num of Samples 340*35ffd701SAndroid Build Coastguard Worker /// @param[out] HAlign: H Align for MSS 341*35ffd701SAndroid Build Coastguard Worker /// @param[out] VAlign: V Align for MSS 342*35ffd701SAndroid Build Coastguard Worker /// @param[out] TileDimX: Tile Width for given Tile, Resource, bpp 343*35ffd701SAndroid Build Coastguard Worker /// @param[out] TileDimY: Tile Height for given Tile, Resource, bpp 344*35ffd701SAndroid Build Coastguard Worker /// @param[out] MCSHAlign: H Align for MCS 345*35ffd701SAndroid Build Coastguard Worker /// @param[out] MCSVAlign: V Align for MCS 346*35ffd701SAndroid Build Coastguard Worker /// 347*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// GetAlignmentAndTileDimensionsForMSAA(TEST_BPP Bpp,bool isRT,TEST_TILE_TYPE Tiling,TEST_MSAA MSAA,uint32_t & TileDimX,uint32_t & TileDimY,uint32_t & HAlign,uint32_t & VAlign,uint32_t & ExpectedMCSBpp,uint32_t & MCSHAlign,uint32_t & MCSVAlign)348*35ffd701SAndroid Build Coastguard Worker void GetAlignmentAndTileDimensionsForMSAA(TEST_BPP Bpp, bool isRT, TEST_TILE_TYPE Tiling, TEST_MSAA MSAA, 349*35ffd701SAndroid Build Coastguard Worker uint32_t& TileDimX, uint32_t& TileDimY, uint32_t& HAlign, uint32_t& VAlign, 350*35ffd701SAndroid Build Coastguard Worker uint32_t& ExpectedMCSBpp, uint32_t &MCSHAlign, uint32_t &MCSVAlign) 351*35ffd701SAndroid Build Coastguard Worker { 352*35ffd701SAndroid Build Coastguard Worker const uint32_t MSSTileSize[TEST_TILE_MAX][TEST_BPP_MAX][2] = { 353*35ffd701SAndroid Build Coastguard Worker {{64, 1}, {64, 1}, {64, 1}, {64, 1}, {64, 1}}, //Linear - no Tile Size, but min PitchAlign = 64 354*35ffd701SAndroid Build Coastguard Worker {{512, 8}, {512, 8}, {512, 8}, {512, 8}, {512, 8}}, //TileX 355*35ffd701SAndroid Build Coastguard Worker {{128, 32}, {128, 32}, {128, 32}, {128, 32}, {128, 32}}, //TileY 356*35ffd701SAndroid Build Coastguard Worker {{256, 256}, {512, 128}, {512, 128}, {1024, 64}, {1024, 64}}, //TileYs 357*35ffd701SAndroid Build Coastguard Worker {{64, 64}, {128, 32}, {128, 32}, {256, 16}, {256, 16}}, //TileYf 358*35ffd701SAndroid Build Coastguard Worker {{128, 32}, {128, 32}, {128, 32}, {128, 32}, {128, 32}}, //Tile4 359*35ffd701SAndroid Build Coastguard Worker {{256, 256}, {512, 128}, {512, 128}, {1024, 64}, {1024, 64}} //Tile64 360*35ffd701SAndroid Build Coastguard Worker }; 361*35ffd701SAndroid Build Coastguard Worker uint32_t WMul = 1, HMul = 1; 362*35ffd701SAndroid Build Coastguard Worker 363*35ffd701SAndroid Build Coastguard Worker HAlign = 16; // RT H/VAlign 364*35ffd701SAndroid Build Coastguard Worker VAlign = 4; 365*35ffd701SAndroid Build Coastguard Worker 366*35ffd701SAndroid Build Coastguard Worker if (!isRT) 367*35ffd701SAndroid Build Coastguard Worker { 368*35ffd701SAndroid Build Coastguard Worker HAlign = (Bpp == TEST_BPP_16) ? 8 : 4; //Depth 16bit = 8x4, ow 4x4 369*35ffd701SAndroid Build Coastguard Worker VAlign = 4; 370*35ffd701SAndroid Build Coastguard Worker MCSHAlign = 4; //MCS uses base H/VAlign for 8bpp 371*35ffd701SAndroid Build Coastguard Worker } 372*35ffd701SAndroid Build Coastguard Worker 373*35ffd701SAndroid Build Coastguard Worker uint32_t Tile[2] = {MSSTileSize[Tiling][Bpp][0], MSSTileSize[Tiling][Bpp][1]}; 374*35ffd701SAndroid Build Coastguard Worker if (Tiling == TEST_TILEYS || Tiling == TEST_TILEYF || Tiling == TEST_TILE64) 375*35ffd701SAndroid Build Coastguard Worker { 376*35ffd701SAndroid Build Coastguard Worker GetInterleaveMSSPattern(MSAA, WMul, HMul, isRT, Bpp); 377*35ffd701SAndroid Build Coastguard Worker 378*35ffd701SAndroid Build Coastguard Worker //Std Tiling interleaves MSAA into 1x, decreasing std Tile size for MSAA'd sample 379*35ffd701SAndroid Build Coastguard Worker //Std Tiling types should have std size alignment always 380*35ffd701SAndroid Build Coastguard Worker Tile[0] = HAlign = (isRT) ? (MSSTileSize[Tiling][Bpp][0] / WMul) : MSSTileSize[Tiling][Bpp][0]; 381*35ffd701SAndroid Build Coastguard Worker Tile[1] = VAlign = (isRT) ? (MSSTileSize[Tiling][Bpp][1] / HMul) : MSSTileSize[Tiling][Bpp][1]; 382*35ffd701SAndroid Build Coastguard Worker 383*35ffd701SAndroid Build Coastguard Worker HAlign /= pow(2.0, Bpp); //Unit alignment in pixels 384*35ffd701SAndroid Build Coastguard Worker } 385*35ffd701SAndroid Build Coastguard Worker TileDimX = Tile[0]; 386*35ffd701SAndroid Build Coastguard Worker TileDimY = Tile[1]; 387*35ffd701SAndroid Build Coastguard Worker 388*35ffd701SAndroid Build Coastguard Worker ExpectedMCSBpp = (MSAA == MSAA_2x || MSAA == MSAA_4x) ? 1 : 389*35ffd701SAndroid Build Coastguard Worker (MSAA == MSAA_8x) ? 4 : 8; 390*35ffd701SAndroid Build Coastguard Worker 391*35ffd701SAndroid Build Coastguard Worker uint32_t ExpectedMcsBppIdx = log2(ExpectedMCSBpp); 392*35ffd701SAndroid Build Coastguard Worker 393*35ffd701SAndroid Build Coastguard Worker MCSHAlign = isRT ? HAlign : MCSHAlign; //MCS uses base H/V ALign for 8bpp 394*35ffd701SAndroid Build Coastguard Worker MCSVAlign = VAlign; 395*35ffd701SAndroid Build Coastguard Worker 396*35ffd701SAndroid Build Coastguard Worker MCSHAlign = (isRT && (Tiling == TEST_TILEYS || Tiling == TEST_TILEYF)) ? 397*35ffd701SAndroid Build Coastguard Worker MSSTileSize[Tiling][ExpectedMcsBppIdx][0] / (WMul * ExpectedMCSBpp) : //Std Tile dim in pixels 398*35ffd701SAndroid Build Coastguard Worker (Tiling == TEST_TILEYS || Tiling == TEST_TILEYF) ? 399*35ffd701SAndroid Build Coastguard Worker MSSTileSize[Tiling][ExpectedMcsBppIdx][0] / ExpectedMCSBpp : MCSHAlign; //For legacy tile, MCS alignment is base (RT or Depth) alignment 400*35ffd701SAndroid Build Coastguard Worker MCSVAlign = (isRT && (Tiling == TEST_TILEYS || Tiling == TEST_TILEYF)) ? MSSTileSize[Tiling][ExpectedMcsBppIdx][1] / HMul : 401*35ffd701SAndroid Build Coastguard Worker (Tiling == TEST_TILEYS || Tiling == TEST_TILEYF) ? MSSTileSize[Tiling][ExpectedMcsBppIdx][1] : MCSVAlign; 402*35ffd701SAndroid Build Coastguard Worker } 403*35ffd701SAndroid Build Coastguard Worker 404*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 405*35ffd701SAndroid Build Coastguard Worker /// Get the interleave pattern for given Num Samples 406*35ffd701SAndroid Build Coastguard Worker /// 407*35ffd701SAndroid Build Coastguard Worker /// @param[in] MSAA: Num of Samples 408*35ffd701SAndroid Build Coastguard Worker /// @param[in] IsRT: !RT means Depth resource 409*35ffd701SAndroid Build Coastguard Worker /// @param[out] WidthMultiplier: Number of samples arranged side-by-side 410*35ffd701SAndroid Build Coastguard Worker /// @param[out] HeightMultiplier: Number of samples arranged top-bottom 411*35ffd701SAndroid Build Coastguard Worker /// 412*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// GetInterleaveMSSPattern(TEST_MSAA MSAA,uint32_t & WidthMultiplier,uint32_t & HeightMultiplier,bool IsRT,TEST_BPP Bpp)413*35ffd701SAndroid Build Coastguard Worker void GetInterleaveMSSPattern(TEST_MSAA MSAA, uint32_t &WidthMultiplier, uint32_t &HeightMultiplier, bool IsRT, TEST_BPP Bpp) 414*35ffd701SAndroid Build Coastguard Worker { 415*35ffd701SAndroid Build Coastguard Worker WidthMultiplier = 1; HeightMultiplier = 1; 416*35ffd701SAndroid Build Coastguard Worker 417*35ffd701SAndroid Build Coastguard Worker switch (MSAA) 418*35ffd701SAndroid Build Coastguard Worker { 419*35ffd701SAndroid Build Coastguard Worker case MSAA_2x: 420*35ffd701SAndroid Build Coastguard Worker if (IsRT && pGfxAdapterInfo->SkuTable.FtrXe2PlusTiling && (Bpp == TEST_BPP_128)) 421*35ffd701SAndroid Build Coastguard Worker { 422*35ffd701SAndroid Build Coastguard Worker HeightMultiplier = 2; 423*35ffd701SAndroid Build Coastguard Worker } 424*35ffd701SAndroid Build Coastguard Worker else 425*35ffd701SAndroid Build Coastguard Worker { 426*35ffd701SAndroid Build Coastguard Worker WidthMultiplier = 2; 427*35ffd701SAndroid Build Coastguard Worker } 428*35ffd701SAndroid Build Coastguard Worker break; 429*35ffd701SAndroid Build Coastguard Worker case MSAA_4x: 430*35ffd701SAndroid Build Coastguard Worker WidthMultiplier = 2; 431*35ffd701SAndroid Build Coastguard Worker HeightMultiplier = 2; 432*35ffd701SAndroid Build Coastguard Worker break; 433*35ffd701SAndroid Build Coastguard Worker case MSAA_8x: 434*35ffd701SAndroid Build Coastguard Worker WidthMultiplier = 4; 435*35ffd701SAndroid Build Coastguard Worker HeightMultiplier = 2; 436*35ffd701SAndroid Build Coastguard Worker if (IsRT && pGfxAdapterInfo->SkuTable.FtrXe2PlusTiling && ((Bpp == TEST_BPP_8) || (Bpp == TEST_BPP_32))) 437*35ffd701SAndroid Build Coastguard Worker { 438*35ffd701SAndroid Build Coastguard Worker WidthMultiplier = 2; 439*35ffd701SAndroid Build Coastguard Worker HeightMultiplier = 4; 440*35ffd701SAndroid Build Coastguard Worker } 441*35ffd701SAndroid Build Coastguard Worker else if (IsRT && !pGfxAdapterInfo->SkuTable.FtrTileY && !pGfxAdapterInfo->SkuTable.FtrXe2PlusTiling) 442*35ffd701SAndroid Build Coastguard Worker { 443*35ffd701SAndroid Build Coastguard Worker WidthMultiplier = 2; 444*35ffd701SAndroid Build Coastguard Worker HeightMultiplier = 2; 445*35ffd701SAndroid Build Coastguard Worker } 446*35ffd701SAndroid Build Coastguard Worker break; 447*35ffd701SAndroid Build Coastguard Worker case MSAA_16x: 448*35ffd701SAndroid Build Coastguard Worker WidthMultiplier = 4; 449*35ffd701SAndroid Build Coastguard Worker HeightMultiplier = 4; 450*35ffd701SAndroid Build Coastguard Worker if (IsRT && pGfxAdapterInfo->SkuTable.FtrXe2PlusTiling && (Bpp == TEST_BPP_64)) 451*35ffd701SAndroid Build Coastguard Worker { 452*35ffd701SAndroid Build Coastguard Worker WidthMultiplier = 8; 453*35ffd701SAndroid Build Coastguard Worker HeightMultiplier = 2; 454*35ffd701SAndroid Build Coastguard Worker } 455*35ffd701SAndroid Build Coastguard Worker else if (IsRT && !pGfxAdapterInfo->SkuTable.FtrTileY && !pGfxAdapterInfo->SkuTable.FtrXe2PlusTiling) 456*35ffd701SAndroid Build Coastguard Worker { 457*35ffd701SAndroid Build Coastguard Worker WidthMultiplier = 2; 458*35ffd701SAndroid Build Coastguard Worker HeightMultiplier = 2; 459*35ffd701SAndroid Build Coastguard Worker } 460*35ffd701SAndroid Build Coastguard Worker break; 461*35ffd701SAndroid Build Coastguard Worker default: 462*35ffd701SAndroid Build Coastguard Worker break; 463*35ffd701SAndroid Build Coastguard Worker 464*35ffd701SAndroid Build Coastguard Worker } 465*35ffd701SAndroid Build Coastguard Worker } 466*35ffd701SAndroid Build Coastguard Worker 467*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 468*35ffd701SAndroid Build Coastguard Worker /// Verifies if HAlign matches the expected value. Fails test if value doesn't match 469*35ffd701SAndroid Build Coastguard Worker /// 470*35ffd701SAndroid Build Coastguard Worker /// @param[in] ResourceInfo: ResourceInfo returned by GmmLib 471*35ffd701SAndroid Build Coastguard Worker /// @param[in] ExpectedValue: expected value to check against 472*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 473*35ffd701SAndroid Build Coastguard Worker template <bool Verify> VerifyResourceHAlign(GMM_RESOURCE_INFO * ResourceInfo,uint32_t ExpectedValue)474*35ffd701SAndroid Build Coastguard Worker void VerifyResourceHAlign(GMM_RESOURCE_INFO *ResourceInfo, uint32_t ExpectedValue) 475*35ffd701SAndroid Build Coastguard Worker { 476*35ffd701SAndroid Build Coastguard Worker if(Verify) 477*35ffd701SAndroid Build Coastguard Worker { 478*35ffd701SAndroid Build Coastguard Worker EXPECT_EQ(ExpectedValue, ResourceInfo->GetHAlign()); 479*35ffd701SAndroid Build Coastguard Worker } 480*35ffd701SAndroid Build Coastguard Worker } 481*35ffd701SAndroid Build Coastguard Worker 482*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 483*35ffd701SAndroid Build Coastguard Worker /// Verifies if HAlign matches the expected value. Fails test if value doesn't match 484*35ffd701SAndroid Build Coastguard Worker /// 485*35ffd701SAndroid Build Coastguard Worker /// @param[in] ResourceInfo: ResourceInfo returned by GmmLib 486*35ffd701SAndroid Build Coastguard Worker /// @param[in] ExpectedValue: expected value to check against 487*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 488*35ffd701SAndroid Build Coastguard Worker template <bool Verify> VerifyResourceVAlign(GMM_RESOURCE_INFO * ResourceInfo,uint32_t ExpectedValue)489*35ffd701SAndroid Build Coastguard Worker void VerifyResourceVAlign(GMM_RESOURCE_INFO *ResourceInfo, uint32_t ExpectedValue) 490*35ffd701SAndroid Build Coastguard Worker { 491*35ffd701SAndroid Build Coastguard Worker if(Verify) 492*35ffd701SAndroid Build Coastguard Worker { 493*35ffd701SAndroid Build Coastguard Worker EXPECT_EQ(ExpectedValue, ResourceInfo->GetVAlign()); 494*35ffd701SAndroid Build Coastguard Worker } 495*35ffd701SAndroid Build Coastguard Worker } 496*35ffd701SAndroid Build Coastguard Worker 497*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 498*35ffd701SAndroid Build Coastguard Worker /// Verifies if Pitch (in bytes) matches the expected value. Fails test if value 499*35ffd701SAndroid Build Coastguard Worker /// doesn't match 500*35ffd701SAndroid Build Coastguard Worker /// 501*35ffd701SAndroid Build Coastguard Worker /// @param[in] ResourceInfo: ResourceInfo returned by GmmLib 502*35ffd701SAndroid Build Coastguard Worker /// @param[in] ExpectedValue: expected value to check against 503*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 504*35ffd701SAndroid Build Coastguard Worker template <bool Verify> VerifyResourcePitch(GMM_RESOURCE_INFO * ResourceInfo,uint32_t ExpectedValue)505*35ffd701SAndroid Build Coastguard Worker void VerifyResourcePitch(GMM_RESOURCE_INFO *ResourceInfo, uint32_t ExpectedValue) 506*35ffd701SAndroid Build Coastguard Worker { 507*35ffd701SAndroid Build Coastguard Worker if(Verify) 508*35ffd701SAndroid Build Coastguard Worker { 509*35ffd701SAndroid Build Coastguard Worker EXPECT_EQ(ExpectedValue, ResourceInfo->GetRenderPitch()); 510*35ffd701SAndroid Build Coastguard Worker } 511*35ffd701SAndroid Build Coastguard Worker } 512*35ffd701SAndroid Build Coastguard Worker 513*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 514*35ffd701SAndroid Build Coastguard Worker /// Verifies if Pitch in tiles matches the expected value. Fails test if value 515*35ffd701SAndroid Build Coastguard Worker /// doesn't match 516*35ffd701SAndroid Build Coastguard Worker /// 517*35ffd701SAndroid Build Coastguard Worker /// @param[in] ResourceInfo: ResourceInfo returned by GmmLib 518*35ffd701SAndroid Build Coastguard Worker /// @param[in] ExpectedValue: expected value to check against 519*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 520*35ffd701SAndroid Build Coastguard Worker template <bool Verify> VerifyResourcePitchInTiles(GMM_RESOURCE_INFO * ResourceInfo,uint32_t ExpectedValue)521*35ffd701SAndroid Build Coastguard Worker void VerifyResourcePitchInTiles(GMM_RESOURCE_INFO *ResourceInfo, uint32_t ExpectedValue) 522*35ffd701SAndroid Build Coastguard Worker { 523*35ffd701SAndroid Build Coastguard Worker if(Verify) 524*35ffd701SAndroid Build Coastguard Worker { 525*35ffd701SAndroid Build Coastguard Worker EXPECT_EQ(ExpectedValue, ResourceInfo->GetRenderPitchTiles()); 526*35ffd701SAndroid Build Coastguard Worker } 527*35ffd701SAndroid Build Coastguard Worker } 528*35ffd701SAndroid Build Coastguard Worker 529*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 530*35ffd701SAndroid Build Coastguard Worker /// Verifies if Size matches the expected value. Fails test if value doesn't match 531*35ffd701SAndroid Build Coastguard Worker /// 532*35ffd701SAndroid Build Coastguard Worker /// @param[in] ResourceInfo: ResourceInfo returned by GmmLib 533*35ffd701SAndroid Build Coastguard Worker /// @param[in] ExpectedValue: expected value to check against 534*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 535*35ffd701SAndroid Build Coastguard Worker template <bool Verify> VerifyResourceSize(GMM_RESOURCE_INFO * ResourceInfo,uint64_t ExpectedValue)536*35ffd701SAndroid Build Coastguard Worker void VerifyResourceSize(GMM_RESOURCE_INFO *ResourceInfo, uint64_t ExpectedValue) 537*35ffd701SAndroid Build Coastguard Worker { 538*35ffd701SAndroid Build Coastguard Worker if(Verify) 539*35ffd701SAndroid Build Coastguard Worker { 540*35ffd701SAndroid Build Coastguard Worker EXPECT_EQ(ExpectedValue, ResourceInfo->GetSizeMainSurface()); 541*35ffd701SAndroid Build Coastguard Worker } 542*35ffd701SAndroid Build Coastguard Worker } 543*35ffd701SAndroid Build Coastguard Worker 544*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 545*35ffd701SAndroid Build Coastguard Worker /// Verifies if AuxCCSize matches the expected value. Fails test if value doesn't match 546*35ffd701SAndroid Build Coastguard Worker /// 547*35ffd701SAndroid Build Coastguard Worker /// @param[in] ResourceInfo: ResourceInfo returned by GmmLib 548*35ffd701SAndroid Build Coastguard Worker /// @param[in] ExpectedValue: expected value to check against 549*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 550*35ffd701SAndroid Build Coastguard Worker template <bool Verify> VerifyResourceAuxCCSize(GMM_RESOURCE_INFO * ResourceInfo,uint64_t ExpectedValue)551*35ffd701SAndroid Build Coastguard Worker void VerifyResourceAuxCCSize(GMM_RESOURCE_INFO *ResourceInfo, uint64_t ExpectedValue) 552*35ffd701SAndroid Build Coastguard Worker { 553*35ffd701SAndroid Build Coastguard Worker if(Verify) 554*35ffd701SAndroid Build Coastguard Worker { 555*35ffd701SAndroid Build Coastguard Worker EXPECT_EQ(ExpectedValue, ResourceInfo->GetSizeAuxSurface(GMM_AUX_CC)); 556*35ffd701SAndroid Build Coastguard Worker } 557*35ffd701SAndroid Build Coastguard Worker } 558*35ffd701SAndroid Build Coastguard Worker 559*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 560*35ffd701SAndroid Build Coastguard Worker /// Verifies if QPitch matches the expected value. Fails test if value doesn't match 561*35ffd701SAndroid Build Coastguard Worker /// 562*35ffd701SAndroid Build Coastguard Worker /// @param[in] ResourceInfo: ResourceInfo returned by GmmLib 563*35ffd701SAndroid Build Coastguard Worker /// @param[in] ExpectedValue: expected value to check against 564*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 565*35ffd701SAndroid Build Coastguard Worker template <bool Verify> VerifyResourceQPitch(GMM_RESOURCE_INFO * ResourceInfo,uint64_t ExpectedValue)566*35ffd701SAndroid Build Coastguard Worker void VerifyResourceQPitch(GMM_RESOURCE_INFO *ResourceInfo, uint64_t ExpectedValue) 567*35ffd701SAndroid Build Coastguard Worker { 568*35ffd701SAndroid Build Coastguard Worker if(Verify) 569*35ffd701SAndroid Build Coastguard Worker { 570*35ffd701SAndroid Build Coastguard Worker EXPECT_EQ(ExpectedValue, ResourceInfo->GetQPitch()); 571*35ffd701SAndroid Build Coastguard Worker } 572*35ffd701SAndroid Build Coastguard Worker } 573*35ffd701SAndroid Build Coastguard Worker 574*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 575*35ffd701SAndroid Build Coastguard Worker /// Verifies if Tile4 info flag is set or not. Fails test if Tile4 flag is not set 576*35ffd701SAndroid Build Coastguard Worker /// 577*35ffd701SAndroid Build Coastguard Worker /// @param[in] ResourceInfo: ResourceInfo returned by GmmLib 578*35ffd701SAndroid Build Coastguard Worker /// @param[in] ExpectedValue: expected value to check against 579*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////////////////// 580*35ffd701SAndroid Build Coastguard Worker template <bool Verify> VerifyResourceTile4(GMM_RESOURCE_INFO * ResourceInfo,bool ExpectedValue)581*35ffd701SAndroid Build Coastguard Worker void VerifyResourceTile4(GMM_RESOURCE_INFO *ResourceInfo, bool ExpectedValue) 582*35ffd701SAndroid Build Coastguard Worker { 583*35ffd701SAndroid Build Coastguard Worker if(Verify) 584*35ffd701SAndroid Build Coastguard Worker { 585*35ffd701SAndroid Build Coastguard Worker EXPECT_EQ(true, (GMM_IS_4KB_TILE(ResourceInfo->GetResFlags()))); 586*35ffd701SAndroid Build Coastguard Worker } 587*35ffd701SAndroid Build Coastguard Worker } 588*35ffd701SAndroid Build Coastguard Worker 589*35ffd701SAndroid Build Coastguard Worker public: 590*35ffd701SAndroid Build Coastguard Worker CTestResource(); 591*35ffd701SAndroid Build Coastguard Worker ~CTestResource(); 592*35ffd701SAndroid Build Coastguard Worker 593*35ffd701SAndroid Build Coastguard Worker static void SetUpTestCase(); 594*35ffd701SAndroid Build Coastguard Worker static void TearDownTestCase(); 595*35ffd701SAndroid Build Coastguard Worker 596*35ffd701SAndroid Build Coastguard Worker }; 597*35ffd701SAndroid Build Coastguard Worker 598*35ffd701SAndroid Build Coastguard Worker 599*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////// 600*35ffd701SAndroid Build Coastguard Worker /// Fixture class for Resources targeted for CpuBlt. This is CpuBlt resource 601*35ffd701SAndroid Build Coastguard Worker /// test case. Inherits CTestResource class. 602*35ffd701SAndroid Build Coastguard Worker /// @see CTestResource class 603*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////// 604*35ffd701SAndroid Build Coastguard Worker class CTestCpuBltResource : public CTestResource 605*35ffd701SAndroid Build Coastguard Worker { 606*35ffd701SAndroid Build Coastguard Worker public: 607*35ffd701SAndroid Build Coastguard Worker CTestCpuBltResource(); 608*35ffd701SAndroid Build Coastguard Worker ~CTestCpuBltResource(); 609*35ffd701SAndroid Build Coastguard Worker 610*35ffd701SAndroid Build Coastguard Worker static void SetUpTestCase(); 611*35ffd701SAndroid Build Coastguard Worker static void TearDownTestCase(); 612*35ffd701SAndroid Build Coastguard Worker 613*35ffd701SAndroid Build Coastguard Worker }; 614*35ffd701SAndroid Build Coastguard Worker 615*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////// 616*35ffd701SAndroid Build Coastguard Worker /// Helper function - builds list of input tuples 617*35ffd701SAndroid Build Coastguard Worker /// 618*35ffd701SAndroid Build Coastguard Worker /// @param[in/out] List: vector of tuple<int,int,int,bool,int,int> 619*35ffd701SAndroid Build Coastguard Worker /// @param[in] maxTestDimension: Number of elements in TestDimensions[] 620*35ffd701SAndroid Build Coastguard Worker /// @param[in] TestArray: Number fo elements in TestArraySize 621*35ffd701SAndroid Build Coastguard Worker /// 622*35ffd701SAndroid Build Coastguard Worker /// @return Number of tuples in the list 623*35ffd701SAndroid Build Coastguard Worker /// @see GmmGen9ResourceULT.cpp 624*35ffd701SAndroid Build Coastguard Worker ///////////////////////////////////////////////////////////////////////// 625*35ffd701SAndroid Build Coastguard Worker int BuildInputIterator(std::vector<std::tuple<int, int, int, bool, int, int>> &List, int maxTestDimension, int TestArray, bool XEHPPlus); 626