1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker ************************************************************************************************************************ 3*61046927SAndroid Build Coastguard Worker * 4*61046927SAndroid Build Coastguard Worker * Copyright (C) 2007-2022 Advanced Micro Devices, Inc. All rights reserved. 5*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT 6*61046927SAndroid Build Coastguard Worker * 7*61046927SAndroid Build Coastguard Worker ***********************************************************************************************************************/ 8*61046927SAndroid Build Coastguard Worker 9*61046927SAndroid Build Coastguard Worker /** 10*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 11*61046927SAndroid Build Coastguard Worker * @file addrinterface.h 12*61046927SAndroid Build Coastguard Worker * @brief Contains the addrlib interfaces declaration and parameter defines 13*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 14*61046927SAndroid Build Coastguard Worker */ 15*61046927SAndroid Build Coastguard Worker #ifndef __ADDR_INTERFACE_H__ 16*61046927SAndroid Build Coastguard Worker #define __ADDR_INTERFACE_H__ 17*61046927SAndroid Build Coastguard Worker 18*61046927SAndroid Build Coastguard Worker // Includes should be before extern "C" 19*61046927SAndroid Build Coastguard Worker #include "addrtypes.h" 20*61046927SAndroid Build Coastguard Worker 21*61046927SAndroid Build Coastguard Worker #if defined(__cplusplus) 22*61046927SAndroid Build Coastguard Worker extern "C" 23*61046927SAndroid Build Coastguard Worker { 24*61046927SAndroid Build Coastguard Worker #endif 25*61046927SAndroid Build Coastguard Worker 26*61046927SAndroid Build Coastguard Worker #define ADDRLIB_VERSION_MAJOR 9 27*61046927SAndroid Build Coastguard Worker #define ADDRLIB_VERSION_MINOR 11 28*61046927SAndroid Build Coastguard Worker #define ADDRLIB_MAKE_VERSION(major, minor) ((major << 16) | minor) 29*61046927SAndroid Build Coastguard Worker #define ADDRLIB_VERSION ADDRLIB_MAKE_VERSION(ADDRLIB_VERSION_MAJOR, ADDRLIB_VERSION_MINOR) 30*61046927SAndroid Build Coastguard Worker 31*61046927SAndroid Build Coastguard Worker /// Virtually all interface functions need ADDR_HANDLE as first parameter 32*61046927SAndroid Build Coastguard Worker typedef VOID* ADDR_HANDLE; 33*61046927SAndroid Build Coastguard Worker 34*61046927SAndroid Build Coastguard Worker /// Client handle used in callbacks 35*61046927SAndroid Build Coastguard Worker typedef VOID* ADDR_CLIENT_HANDLE; 36*61046927SAndroid Build Coastguard Worker 37*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_EXTENT3D 38*61046927SAndroid Build Coastguard Worker { 39*61046927SAndroid Build Coastguard Worker UINT_32 width; 40*61046927SAndroid Build Coastguard Worker UINT_32 height; 41*61046927SAndroid Build Coastguard Worker UINT_32 depth; // also slices for 2D images 42*61046927SAndroid Build Coastguard Worker } ADDR_EXTENT3D; 43*61046927SAndroid Build Coastguard Worker 44*61046927SAndroid Build Coastguard Worker /** 45*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 46*61046927SAndroid Build Coastguard Worker * // Callback functions 47*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 48*61046927SAndroid Build Coastguard Worker * typedef VOID* (ADDR_API* ADDR_ALLOCSYSMEM)( 49*61046927SAndroid Build Coastguard Worker * const ADDR_ALLOCSYSMEM_INPUT* pInput); 50*61046927SAndroid Build Coastguard Worker * typedef ADDR_E_RETURNCODE (ADDR_API* ADDR_FREESYSMEM)( 51*61046927SAndroid Build Coastguard Worker * VOID* pVirtAddr); 52*61046927SAndroid Build Coastguard Worker * typedef ADDR_E_RETURNCODE (ADDR_API* ADDR_DEBUGPRINT)( 53*61046927SAndroid Build Coastguard Worker * const ADDR_DEBUGPRINT_INPUT* pInput); 54*61046927SAndroid Build Coastguard Worker * 55*61046927SAndroid Build Coastguard Worker **/ 56*61046927SAndroid Build Coastguard Worker /** 57*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 58*61046927SAndroid Build Coastguard Worker * // Create/Destroy/Config functions 59*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 60*61046927SAndroid Build Coastguard Worker * AddrCreate() 61*61046927SAndroid Build Coastguard Worker * AddrDestroy() 62*61046927SAndroid Build Coastguard Worker * 63*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 64*61046927SAndroid Build Coastguard Worker * // Surface functions 65*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 66*61046927SAndroid Build Coastguard Worker * AddrComputeSurfaceInfo() 67*61046927SAndroid Build Coastguard Worker * AddrComputeSurfaceAddrFromCoord() 68*61046927SAndroid Build Coastguard Worker * AddrComputeSurfaceCoordFromAddr() 69*61046927SAndroid Build Coastguard Worker * 70*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 71*61046927SAndroid Build Coastguard Worker * // HTile functions 72*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 73*61046927SAndroid Build Coastguard Worker * AddrComputeHtileInfo() 74*61046927SAndroid Build Coastguard Worker * AddrComputeHtileAddrFromCoord() 75*61046927SAndroid Build Coastguard Worker * AddrComputeHtileCoordFromAddr() 76*61046927SAndroid Build Coastguard Worker * 77*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 78*61046927SAndroid Build Coastguard Worker * // C-mask functions 79*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 80*61046927SAndroid Build Coastguard Worker * AddrComputeCmaskInfo() 81*61046927SAndroid Build Coastguard Worker * AddrComputeCmaskAddrFromCoord() 82*61046927SAndroid Build Coastguard Worker * AddrComputeCmaskCoordFromAddr() 83*61046927SAndroid Build Coastguard Worker * 84*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 85*61046927SAndroid Build Coastguard Worker * // F-mask functions 86*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 87*61046927SAndroid Build Coastguard Worker * AddrComputeFmaskInfo() 88*61046927SAndroid Build Coastguard Worker * AddrComputeFmaskAddrFromCoord() 89*61046927SAndroid Build Coastguard Worker * AddrComputeFmaskCoordFromAddr() 90*61046927SAndroid Build Coastguard Worker * 91*61046927SAndroid Build Coastguard Worker **/ 92*61046927SAndroid Build Coastguard Worker /** 93*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 94*61046927SAndroid Build Coastguard Worker * // Element/Utility functions 95*61046927SAndroid Build Coastguard Worker * ///////////////////////////////////////////////////////////////////////////////////////////////// 96*61046927SAndroid Build Coastguard Worker * ElemFlt32ToDepthPixel() 97*61046927SAndroid Build Coastguard Worker * ElemFlt32ToColorPixel() 98*61046927SAndroid Build Coastguard Worker **/ 99*61046927SAndroid Build Coastguard Worker /** 100*61046927SAndroid Build Coastguard Worker * AddrExtractBankPipeSwizzle() 101*61046927SAndroid Build Coastguard Worker * AddrCombineBankPipeSwizzle() 102*61046927SAndroid Build Coastguard Worker * AddrComputeSliceSwizzle() 103*61046927SAndroid Build Coastguard Worker * AddrConvertTileInfoToHW() 104*61046927SAndroid Build Coastguard Worker * AddrConvertTileIndex() 105*61046927SAndroid Build Coastguard Worker * AddrConvertTileIndex1() 106*61046927SAndroid Build Coastguard Worker * AddrGetTileIndex() 107*61046927SAndroid Build Coastguard Worker * AddrComputeBaseSwizzle() 108*61046927SAndroid Build Coastguard Worker * AddrUseTileIndex() 109*61046927SAndroid Build Coastguard Worker * AddrUseCombinedSwizzle() 110*61046927SAndroid Build Coastguard Worker * 111*61046927SAndroid Build Coastguard Worker **/ 112*61046927SAndroid Build Coastguard Worker 113*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 114*61046927SAndroid Build Coastguard Worker // Callback functions 115*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 116*61046927SAndroid Build Coastguard Worker 117*61046927SAndroid Build Coastguard Worker /** 118*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 119*61046927SAndroid Build Coastguard Worker * @brief channel setting structure 120*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 121*61046927SAndroid Build Coastguard Worker */ 122*61046927SAndroid Build Coastguard Worker typedef union _ADDR_CHANNEL_SETTING 123*61046927SAndroid Build Coastguard Worker { 124*61046927SAndroid Build Coastguard Worker struct 125*61046927SAndroid Build Coastguard Worker { 126*61046927SAndroid Build Coastguard Worker UINT_8 valid : 1; ///< Indicate whehter this channel setting is valid 127*61046927SAndroid Build Coastguard Worker UINT_8 channel : 2; ///< 0 for x channel, 1 for y channel, 2 for z channel, 3 for MSAA sample index 128*61046927SAndroid Build Coastguard Worker UINT_8 index : 5; ///< Channel index 129*61046927SAndroid Build Coastguard Worker }; 130*61046927SAndroid Build Coastguard Worker UINT_8 value; ///< Value 131*61046927SAndroid Build Coastguard Worker } ADDR_CHANNEL_SETTING; 132*61046927SAndroid Build Coastguard Worker 133*61046927SAndroid Build Coastguard Worker /** 134*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 135*61046927SAndroid Build Coastguard Worker * @brief address equation key structure 136*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 137*61046927SAndroid Build Coastguard Worker */ 138*61046927SAndroid Build Coastguard Worker typedef union _ADDR_EQUATION_KEY 139*61046927SAndroid Build Coastguard Worker { 140*61046927SAndroid Build Coastguard Worker struct 141*61046927SAndroid Build Coastguard Worker { 142*61046927SAndroid Build Coastguard Worker UINT_32 log2ElementBytes : 3; ///< Log2 of Bytes per pixel 143*61046927SAndroid Build Coastguard Worker UINT_32 tileMode : 5; ///< Tile mode 144*61046927SAndroid Build Coastguard Worker UINT_32 microTileType : 3; ///< Micro tile type 145*61046927SAndroid Build Coastguard Worker UINT_32 pipeConfig : 5; ///< pipe config 146*61046927SAndroid Build Coastguard Worker UINT_32 numBanksLog2 : 3; ///< Number of banks log2 147*61046927SAndroid Build Coastguard Worker UINT_32 bankWidth : 4; ///< Bank width 148*61046927SAndroid Build Coastguard Worker UINT_32 bankHeight : 4; ///< Bank height 149*61046927SAndroid Build Coastguard Worker UINT_32 macroAspectRatio : 3; ///< Macro tile aspect ratio 150*61046927SAndroid Build Coastguard Worker UINT_32 prt : 1; ///< SI only, indicate whether this equation is for prt 151*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 1; ///< Reserved bit 152*61046927SAndroid Build Coastguard Worker } fields; 153*61046927SAndroid Build Coastguard Worker UINT_32 value; 154*61046927SAndroid Build Coastguard Worker } ADDR_EQUATION_KEY; 155*61046927SAndroid Build Coastguard Worker 156*61046927SAndroid Build Coastguard Worker /** 157*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 158*61046927SAndroid Build Coastguard Worker * @brief address equation structure 159*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 160*61046927SAndroid Build Coastguard Worker */ 161*61046927SAndroid Build Coastguard Worker #define ADDR_MAX_LEGACY_EQUATION_COMP 3u 162*61046927SAndroid Build Coastguard Worker #define ADDR_MAX_EQUATION_COMP 5u 163*61046927SAndroid Build Coastguard Worker #define ADDR_MAX_EQUATION_BIT 20u 164*61046927SAndroid Build Coastguard Worker 165*61046927SAndroid Build Coastguard Worker // Invalid equation index 166*61046927SAndroid Build Coastguard Worker #define ADDR_INVALID_EQUATION_INDEX 0xFFFFFFFF 167*61046927SAndroid Build Coastguard Worker 168*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_EQUATION 169*61046927SAndroid Build Coastguard Worker { 170*61046927SAndroid Build Coastguard Worker union 171*61046927SAndroid Build Coastguard Worker { 172*61046927SAndroid Build Coastguard Worker struct { 173*61046927SAndroid Build Coastguard Worker ADDR_CHANNEL_SETTING addr[ADDR_MAX_EQUATION_BIT]; ///< addr setting 174*61046927SAndroid Build Coastguard Worker ADDR_CHANNEL_SETTING xor1[ADDR_MAX_EQUATION_BIT]; ///< xor setting 175*61046927SAndroid Build Coastguard Worker ADDR_CHANNEL_SETTING xor2[ADDR_MAX_EQUATION_BIT]; ///< xor2 setting 176*61046927SAndroid Build Coastguard Worker ADDR_CHANNEL_SETTING xor3[ADDR_MAX_EQUATION_BIT]; ///< xor3 setting 177*61046927SAndroid Build Coastguard Worker ADDR_CHANNEL_SETTING xor4[ADDR_MAX_EQUATION_BIT]; ///< xor4 setting 178*61046927SAndroid Build Coastguard Worker }; 179*61046927SAndroid Build Coastguard Worker ///< Components showing the sources of each bit; each bit is result of addr ^ xor ^ xor2... 180*61046927SAndroid Build Coastguard Worker ADDR_CHANNEL_SETTING comps[ADDR_MAX_EQUATION_COMP][ADDR_MAX_EQUATION_BIT]; 181*61046927SAndroid Build Coastguard Worker }; 182*61046927SAndroid Build Coastguard Worker UINT_32 numBits; ///< The number of bits in equation 183*61046927SAndroid Build Coastguard Worker UINT_32 numBitComponents; ///< The max number of channels contributing to a bit 184*61046927SAndroid Build Coastguard Worker BOOL_32 stackedDepthSlices; ///< TRUE if depth slices are treated as being 185*61046927SAndroid Build Coastguard Worker ///< stacked vertically prior to swizzling 186*61046927SAndroid Build Coastguard Worker } ADDR_EQUATION; 187*61046927SAndroid Build Coastguard Worker 188*61046927SAndroid Build Coastguard Worker 189*61046927SAndroid Build Coastguard Worker /** 190*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 191*61046927SAndroid Build Coastguard Worker * @brief Alloc system memory flags. 192*61046927SAndroid Build Coastguard Worker * @note These flags are reserved for future use and if flags are added will minimize the impact 193*61046927SAndroid Build Coastguard Worker * of the client. 194*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 195*61046927SAndroid Build Coastguard Worker */ 196*61046927SAndroid Build Coastguard Worker typedef union _ADDR_ALLOCSYSMEM_FLAGS 197*61046927SAndroid Build Coastguard Worker { 198*61046927SAndroid Build Coastguard Worker struct 199*61046927SAndroid Build Coastguard Worker { 200*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 32; ///< Reserved for future use. 201*61046927SAndroid Build Coastguard Worker } fields; 202*61046927SAndroid Build Coastguard Worker UINT_32 value; 203*61046927SAndroid Build Coastguard Worker 204*61046927SAndroid Build Coastguard Worker } ADDR_ALLOCSYSMEM_FLAGS; 205*61046927SAndroid Build Coastguard Worker 206*61046927SAndroid Build Coastguard Worker /** 207*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 208*61046927SAndroid Build Coastguard Worker * @brief Alloc system memory input structure 209*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 210*61046927SAndroid Build Coastguard Worker */ 211*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_ALLOCSYSMEM_INPUT 212*61046927SAndroid Build Coastguard Worker { 213*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 214*61046927SAndroid Build Coastguard Worker 215*61046927SAndroid Build Coastguard Worker ADDR_ALLOCSYSMEM_FLAGS flags; ///< System memory flags. 216*61046927SAndroid Build Coastguard Worker UINT_32 sizeInBytes; ///< System memory allocation size in bytes. 217*61046927SAndroid Build Coastguard Worker ADDR_CLIENT_HANDLE hClient; ///< Client handle 218*61046927SAndroid Build Coastguard Worker } ADDR_ALLOCSYSMEM_INPUT; 219*61046927SAndroid Build Coastguard Worker 220*61046927SAndroid Build Coastguard Worker /** 221*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 222*61046927SAndroid Build Coastguard Worker * ADDR_ALLOCSYSMEM 223*61046927SAndroid Build Coastguard Worker * @brief 224*61046927SAndroid Build Coastguard Worker * Allocate system memory callback function. Returns valid pointer on success. 225*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 226*61046927SAndroid Build Coastguard Worker */ 227*61046927SAndroid Build Coastguard Worker typedef VOID* (ADDR_API* ADDR_ALLOCSYSMEM)( 228*61046927SAndroid Build Coastguard Worker const ADDR_ALLOCSYSMEM_INPUT* pInput); 229*61046927SAndroid Build Coastguard Worker 230*61046927SAndroid Build Coastguard Worker /** 231*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 232*61046927SAndroid Build Coastguard Worker * @brief Free system memory input structure 233*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 234*61046927SAndroid Build Coastguard Worker */ 235*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_FREESYSMEM_INPUT 236*61046927SAndroid Build Coastguard Worker { 237*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 238*61046927SAndroid Build Coastguard Worker 239*61046927SAndroid Build Coastguard Worker VOID* pVirtAddr; ///< Virtual address 240*61046927SAndroid Build Coastguard Worker ADDR_CLIENT_HANDLE hClient; ///< Client handle 241*61046927SAndroid Build Coastguard Worker } ADDR_FREESYSMEM_INPUT; 242*61046927SAndroid Build Coastguard Worker 243*61046927SAndroid Build Coastguard Worker /** 244*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 245*61046927SAndroid Build Coastguard Worker * ADDR_FREESYSMEM 246*61046927SAndroid Build Coastguard Worker * @brief 247*61046927SAndroid Build Coastguard Worker * Free system memory callback function. 248*61046927SAndroid Build Coastguard Worker * Returns ADDR_OK on success. 249*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 250*61046927SAndroid Build Coastguard Worker */ 251*61046927SAndroid Build Coastguard Worker typedef ADDR_E_RETURNCODE (ADDR_API* ADDR_FREESYSMEM)( 252*61046927SAndroid Build Coastguard Worker const ADDR_FREESYSMEM_INPUT* pInput); 253*61046927SAndroid Build Coastguard Worker 254*61046927SAndroid Build Coastguard Worker /** 255*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 256*61046927SAndroid Build Coastguard Worker * @brief Print debug message input structure 257*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 258*61046927SAndroid Build Coastguard Worker */ 259*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_DEBUGPRINT_INPUT 260*61046927SAndroid Build Coastguard Worker { 261*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 262*61046927SAndroid Build Coastguard Worker 263*61046927SAndroid Build Coastguard Worker CHAR* pDebugString; ///< Debug print string 264*61046927SAndroid Build Coastguard Worker va_list ap; ///< Variable argument list 265*61046927SAndroid Build Coastguard Worker ADDR_CLIENT_HANDLE hClient; ///< Client handle 266*61046927SAndroid Build Coastguard Worker } ADDR_DEBUGPRINT_INPUT; 267*61046927SAndroid Build Coastguard Worker 268*61046927SAndroid Build Coastguard Worker /** 269*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 270*61046927SAndroid Build Coastguard Worker * ADDR_DEBUGPRINT 271*61046927SAndroid Build Coastguard Worker * @brief 272*61046927SAndroid Build Coastguard Worker * Print debug message callback function. 273*61046927SAndroid Build Coastguard Worker * Returns ADDR_OK on success. 274*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 275*61046927SAndroid Build Coastguard Worker */ 276*61046927SAndroid Build Coastguard Worker typedef ADDR_E_RETURNCODE (ADDR_API* ADDR_DEBUGPRINT)( 277*61046927SAndroid Build Coastguard Worker const ADDR_DEBUGPRINT_INPUT* pInput); 278*61046927SAndroid Build Coastguard Worker 279*61046927SAndroid Build Coastguard Worker /** 280*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 281*61046927SAndroid Build Coastguard Worker * ADDR_CALLBACKS 282*61046927SAndroid Build Coastguard Worker * 283*61046927SAndroid Build Coastguard Worker * @brief 284*61046927SAndroid Build Coastguard Worker * Address Library needs client to provide system memory alloc/free routines. 285*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 286*61046927SAndroid Build Coastguard Worker */ 287*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_CALLBACKS 288*61046927SAndroid Build Coastguard Worker { 289*61046927SAndroid Build Coastguard Worker ADDR_ALLOCSYSMEM allocSysMem; ///< Routine to allocate system memory 290*61046927SAndroid Build Coastguard Worker ADDR_FREESYSMEM freeSysMem; ///< Routine to free system memory 291*61046927SAndroid Build Coastguard Worker ADDR_DEBUGPRINT debugPrint; ///< Routine to print debug message 292*61046927SAndroid Build Coastguard Worker } ADDR_CALLBACKS; 293*61046927SAndroid Build Coastguard Worker 294*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 295*61046927SAndroid Build Coastguard Worker // Create/Destroy functions 296*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 297*61046927SAndroid Build Coastguard Worker 298*61046927SAndroid Build Coastguard Worker /** 299*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 300*61046927SAndroid Build Coastguard Worker * ADDR_CREATE_FLAGS 301*61046927SAndroid Build Coastguard Worker * 302*61046927SAndroid Build Coastguard Worker * @brief 303*61046927SAndroid Build Coastguard Worker * This structure is used to pass some setup in creation of AddrLib 304*61046927SAndroid Build Coastguard Worker * @note 305*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 306*61046927SAndroid Build Coastguard Worker */ 307*61046927SAndroid Build Coastguard Worker typedef union _ADDR_CREATE_FLAGS 308*61046927SAndroid Build Coastguard Worker { 309*61046927SAndroid Build Coastguard Worker struct 310*61046927SAndroid Build Coastguard Worker { 311*61046927SAndroid Build Coastguard Worker UINT_32 noCubeMipSlicesPad : 1; ///< Turn cubemap faces padding off 312*61046927SAndroid Build Coastguard Worker UINT_32 fillSizeFields : 1; ///< If clients fill size fields in all input and 313*61046927SAndroid Build Coastguard Worker /// output structure 314*61046927SAndroid Build Coastguard Worker UINT_32 useTileIndex : 1; ///< Make tileIndex field in input valid 315*61046927SAndroid Build Coastguard Worker UINT_32 useCombinedSwizzle : 1; ///< Use combined tile swizzle 316*61046927SAndroid Build Coastguard Worker UINT_32 checkLast2DLevel : 1; ///< Check the last 2D mip sub level 317*61046927SAndroid Build Coastguard Worker UINT_32 useHtileSliceAlign : 1; ///< Do htile single slice alignment 318*61046927SAndroid Build Coastguard Worker UINT_32 allowLargeThickTile : 1; ///< Allow 64*thickness*bytesPerPixel > rowSize 319*61046927SAndroid Build Coastguard Worker UINT_32 forceDccAndTcCompat : 1; ///< Force enable DCC and TC compatibility 320*61046927SAndroid Build Coastguard Worker UINT_32 nonPower2MemConfig : 1; ///< Video memory bit width is not power of 2 321*61046927SAndroid Build Coastguard Worker UINT_32 enableAltTiling : 1; ///< Enable alt tile mode 322*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 22; ///< Reserved bits for future use 323*61046927SAndroid Build Coastguard Worker }; 324*61046927SAndroid Build Coastguard Worker 325*61046927SAndroid Build Coastguard Worker UINT_32 value; 326*61046927SAndroid Build Coastguard Worker } ADDR_CREATE_FLAGS; 327*61046927SAndroid Build Coastguard Worker 328*61046927SAndroid Build Coastguard Worker /** 329*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 330*61046927SAndroid Build Coastguard Worker * ADDR_REGISTER_VALUE 331*61046927SAndroid Build Coastguard Worker * 332*61046927SAndroid Build Coastguard Worker * @brief 333*61046927SAndroid Build Coastguard Worker * Data from registers to setup AddrLib global data, used in AddrCreate 334*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 335*61046927SAndroid Build Coastguard Worker */ 336*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_REGISTER_VALUE 337*61046927SAndroid Build Coastguard Worker { 338*61046927SAndroid Build Coastguard Worker UINT_32 gbAddrConfig; ///< For R8xx, use GB_ADDR_CONFIG register value. 339*61046927SAndroid Build Coastguard Worker /// For R6xx/R7xx, use GB_TILING_CONFIG. 340*61046927SAndroid Build Coastguard Worker /// But they can be treated as the same. 341*61046927SAndroid Build Coastguard Worker /// if this value is 0, use chip to set default value 342*61046927SAndroid Build Coastguard Worker UINT_32 backendDisables; ///< 1 bit per backend, starting with LSB. 1=disabled,0=enabled. 343*61046927SAndroid Build Coastguard Worker /// Register value of CC_RB_BACKEND_DISABLE.BACKEND_DISABLE 344*61046927SAndroid Build Coastguard Worker 345*61046927SAndroid Build Coastguard Worker /// R800 registers----------------------------------------------- 346*61046927SAndroid Build Coastguard Worker UINT_32 noOfBanks; ///< Number of h/w ram banks - For r800: MC_ARB_RAMCFG.NOOFBANK 347*61046927SAndroid Build Coastguard Worker /// No enums for this value in h/w header files 348*61046927SAndroid Build Coastguard Worker /// 0: 4 349*61046927SAndroid Build Coastguard Worker /// 1: 8 350*61046927SAndroid Build Coastguard Worker /// 2: 16 351*61046927SAndroid Build Coastguard Worker UINT_32 noOfRanks; /// MC_ARB_RAMCFG.NOOFRANK 352*61046927SAndroid Build Coastguard Worker /// 0: 1 353*61046927SAndroid Build Coastguard Worker /// 1: 2 354*61046927SAndroid Build Coastguard Worker /// SI (R1000) registers----------------------------------------- 355*61046927SAndroid Build Coastguard Worker const UINT_32* pTileConfig; ///< Global tile setting tables 356*61046927SAndroid Build Coastguard Worker UINT_32 noOfEntries; ///< Number of entries in pTileConfig 357*61046927SAndroid Build Coastguard Worker 358*61046927SAndroid Build Coastguard Worker ///< CI registers------------------------------------------------- 359*61046927SAndroid Build Coastguard Worker const UINT_32* pMacroTileConfig; ///< Global macro tile mode table 360*61046927SAndroid Build Coastguard Worker UINT_32 noOfMacroEntries; ///< Number of entries in pMacroTileConfig 361*61046927SAndroid Build Coastguard Worker } ADDR_REGISTER_VALUE; 362*61046927SAndroid Build Coastguard Worker 363*61046927SAndroid Build Coastguard Worker /** 364*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 365*61046927SAndroid Build Coastguard Worker * ADDR_CREATE_INPUT 366*61046927SAndroid Build Coastguard Worker * 367*61046927SAndroid Build Coastguard Worker * @brief 368*61046927SAndroid Build Coastguard Worker * Parameters use to create an AddrLib Object. Caller must provide all fields. 369*61046927SAndroid Build Coastguard Worker * 370*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 371*61046927SAndroid Build Coastguard Worker */ 372*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_CREATE_INPUT 373*61046927SAndroid Build Coastguard Worker { 374*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 375*61046927SAndroid Build Coastguard Worker 376*61046927SAndroid Build Coastguard Worker UINT_32 chipEngine; ///< Chip Engine 377*61046927SAndroid Build Coastguard Worker UINT_32 chipFamily; ///< Chip Family 378*61046927SAndroid Build Coastguard Worker UINT_32 chipRevision; ///< Chip Revision 379*61046927SAndroid Build Coastguard Worker ADDR_CALLBACKS callbacks; ///< Callbacks for sysmem alloc/free/print 380*61046927SAndroid Build Coastguard Worker ADDR_CREATE_FLAGS createFlags; ///< Flags to setup AddrLib 381*61046927SAndroid Build Coastguard Worker ADDR_REGISTER_VALUE regValue; ///< Data from registers to setup AddrLib global data 382*61046927SAndroid Build Coastguard Worker ADDR_CLIENT_HANDLE hClient; ///< Client handle 383*61046927SAndroid Build Coastguard Worker UINT_32 minPitchAlignPixels; ///< Minimum pitch alignment in pixels 384*61046927SAndroid Build Coastguard Worker } ADDR_CREATE_INPUT; 385*61046927SAndroid Build Coastguard Worker 386*61046927SAndroid Build Coastguard Worker /** 387*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 388*61046927SAndroid Build Coastguard Worker * ADDR_CREATEINFO_OUTPUT 389*61046927SAndroid Build Coastguard Worker * 390*61046927SAndroid Build Coastguard Worker * @brief 391*61046927SAndroid Build Coastguard Worker * Return AddrLib handle to client driver 392*61046927SAndroid Build Coastguard Worker * 393*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 394*61046927SAndroid Build Coastguard Worker */ 395*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_CREATE_OUTPUT 396*61046927SAndroid Build Coastguard Worker { 397*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 398*61046927SAndroid Build Coastguard Worker 399*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib; ///< Address lib handle 400*61046927SAndroid Build Coastguard Worker 401*61046927SAndroid Build Coastguard Worker UINT_32 numEquations; ///< Number of equations in the table 402*61046927SAndroid Build Coastguard Worker const ADDR_EQUATION* pEquationTable; ///< Pointer to the equation table 403*61046927SAndroid Build Coastguard Worker } ADDR_CREATE_OUTPUT; 404*61046927SAndroid Build Coastguard Worker 405*61046927SAndroid Build Coastguard Worker /** 406*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 407*61046927SAndroid Build Coastguard Worker * AddrCreate 408*61046927SAndroid Build Coastguard Worker * 409*61046927SAndroid Build Coastguard Worker * @brief 410*61046927SAndroid Build Coastguard Worker * Create AddrLib object, must be called before any interface calls 411*61046927SAndroid Build Coastguard Worker * 412*61046927SAndroid Build Coastguard Worker * @return 413*61046927SAndroid Build Coastguard Worker * ADDR_OK if successful 414*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 415*61046927SAndroid Build Coastguard Worker */ 416*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrCreate( 417*61046927SAndroid Build Coastguard Worker const ADDR_CREATE_INPUT* pAddrCreateIn, 418*61046927SAndroid Build Coastguard Worker ADDR_CREATE_OUTPUT* pAddrCreateOut); 419*61046927SAndroid Build Coastguard Worker 420*61046927SAndroid Build Coastguard Worker 421*61046927SAndroid Build Coastguard Worker 422*61046927SAndroid Build Coastguard Worker /** 423*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 424*61046927SAndroid Build Coastguard Worker * AddrDestroy 425*61046927SAndroid Build Coastguard Worker * 426*61046927SAndroid Build Coastguard Worker * @brief 427*61046927SAndroid Build Coastguard Worker * Destroy AddrLib object, must be called to free internally allocated resources. 428*61046927SAndroid Build Coastguard Worker * 429*61046927SAndroid Build Coastguard Worker * @return 430*61046927SAndroid Build Coastguard Worker * ADDR_OK if successful 431*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 432*61046927SAndroid Build Coastguard Worker */ 433*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrDestroy( 434*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib); 435*61046927SAndroid Build Coastguard Worker 436*61046927SAndroid Build Coastguard Worker 437*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 438*61046927SAndroid Build Coastguard Worker // Surface functions 439*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 440*61046927SAndroid Build Coastguard Worker 441*61046927SAndroid Build Coastguard Worker /** 442*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 443*61046927SAndroid Build Coastguard Worker * @brief 444*61046927SAndroid Build Coastguard Worker * Bank/tiling parameters. On function input, these can be set as desired or 445*61046927SAndroid Build Coastguard Worker * left 0 for AddrLib to calculate/default. On function output, these are the actual 446*61046927SAndroid Build Coastguard Worker * parameters used. 447*61046927SAndroid Build Coastguard Worker * @note 448*61046927SAndroid Build Coastguard Worker * Valid bankWidth/bankHeight value: 449*61046927SAndroid Build Coastguard Worker * 1,2,4,8. They are factors instead of pixels or bytes. 450*61046927SAndroid Build Coastguard Worker * 451*61046927SAndroid Build Coastguard Worker * The bank number remains constant across each row of the 452*61046927SAndroid Build Coastguard Worker * macro tile as each pipe is selected, so the number of 453*61046927SAndroid Build Coastguard Worker * tiles in the x direction with the same bank number will 454*61046927SAndroid Build Coastguard Worker * be bank_width * num_pipes. 455*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 456*61046927SAndroid Build Coastguard Worker */ 457*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_TILEINFO 458*61046927SAndroid Build Coastguard Worker { 459*61046927SAndroid Build Coastguard Worker /// Any of these parameters can be set to 0 to use the HW default. 460*61046927SAndroid Build Coastguard Worker UINT_32 banks; ///< Number of banks, numerical value 461*61046927SAndroid Build Coastguard Worker UINT_32 bankWidth; ///< Number of tiles in the X direction in the same bank 462*61046927SAndroid Build Coastguard Worker UINT_32 bankHeight; ///< Number of tiles in the Y direction in the same bank 463*61046927SAndroid Build Coastguard Worker UINT_32 macroAspectRatio; ///< Macro tile aspect ratio. 1-1:1, 2-4:1, 4-16:1, 8-64:1 464*61046927SAndroid Build Coastguard Worker UINT_32 tileSplitBytes; ///< Tile split size, in bytes 465*61046927SAndroid Build Coastguard Worker AddrPipeCfg pipeConfig; ///< Pipe Config = HW enum + 1 466*61046927SAndroid Build Coastguard Worker } ADDR_TILEINFO; 467*61046927SAndroid Build Coastguard Worker 468*61046927SAndroid Build Coastguard Worker // Create a define to avoid client change. The removal of R800 is because we plan to implement SI 469*61046927SAndroid Build Coastguard Worker // within 800 HWL - An AddrPipeCfg is added in above data structure 470*61046927SAndroid Build Coastguard Worker typedef ADDR_TILEINFO ADDR_R800_TILEINFO; 471*61046927SAndroid Build Coastguard Worker 472*61046927SAndroid Build Coastguard Worker /** 473*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 474*61046927SAndroid Build Coastguard Worker * @brief 475*61046927SAndroid Build Coastguard Worker * Information needed by quad buffer stereo support 476*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 477*61046927SAndroid Build Coastguard Worker */ 478*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_QBSTEREOINFO 479*61046927SAndroid Build Coastguard Worker { 480*61046927SAndroid Build Coastguard Worker UINT_32 eyeHeight; ///< Height (in pixel rows) to right eye 481*61046927SAndroid Build Coastguard Worker UINT_32 rightOffset; ///< Offset (in bytes) to right eye 482*61046927SAndroid Build Coastguard Worker UINT_32 rightSwizzle; ///< TileSwizzle for right eyes 483*61046927SAndroid Build Coastguard Worker } ADDR_QBSTEREOINFO; 484*61046927SAndroid Build Coastguard Worker 485*61046927SAndroid Build Coastguard Worker /** 486*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 487*61046927SAndroid Build Coastguard Worker * ADDR_SURFACE_FLAGS 488*61046927SAndroid Build Coastguard Worker * 489*61046927SAndroid Build Coastguard Worker * @brief 490*61046927SAndroid Build Coastguard Worker * Surface flags 491*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 492*61046927SAndroid Build Coastguard Worker */ 493*61046927SAndroid Build Coastguard Worker typedef union _ADDR_SURFACE_FLAGS 494*61046927SAndroid Build Coastguard Worker { 495*61046927SAndroid Build Coastguard Worker struct 496*61046927SAndroid Build Coastguard Worker { 497*61046927SAndroid Build Coastguard Worker UINT_32 color : 1; ///< Flag indicates this is a color buffer 498*61046927SAndroid Build Coastguard Worker UINT_32 depth : 1; ///< Flag indicates this is a depth/stencil buffer 499*61046927SAndroid Build Coastguard Worker UINT_32 stencil : 1; ///< Flag indicates this is a stencil buffer 500*61046927SAndroid Build Coastguard Worker UINT_32 texture : 1; ///< Flag indicates this is a texture 501*61046927SAndroid Build Coastguard Worker UINT_32 cube : 1; ///< Flag indicates this is a cubemap 502*61046927SAndroid Build Coastguard Worker UINT_32 volume : 1; ///< Flag indicates this is a volume texture 503*61046927SAndroid Build Coastguard Worker UINT_32 fmask : 1; ///< Flag indicates this is an fmask 504*61046927SAndroid Build Coastguard Worker UINT_32 cubeAsArray : 1; ///< Flag indicates if treat cubemap as arrays 505*61046927SAndroid Build Coastguard Worker UINT_32 compressZ : 1; ///< Flag indicates z buffer is compressed 506*61046927SAndroid Build Coastguard Worker UINT_32 overlay : 1; ///< Flag indicates this is an overlay surface 507*61046927SAndroid Build Coastguard Worker UINT_32 noStencil : 1; ///< Flag indicates this depth has no separate stencil 508*61046927SAndroid Build Coastguard Worker UINT_32 display : 1; ///< Flag indicates this should match display controller req. 509*61046927SAndroid Build Coastguard Worker UINT_32 opt4Space : 1; ///< Flag indicates this surface should be optimized for space 510*61046927SAndroid Build Coastguard Worker /// i.e. save some memory but may lose performance 511*61046927SAndroid Build Coastguard Worker UINT_32 prt : 1; ///< Flag for partially resident texture 512*61046927SAndroid Build Coastguard Worker UINT_32 qbStereo : 1; ///< Quad buffer stereo surface 513*61046927SAndroid Build Coastguard Worker UINT_32 pow2Pad : 1; ///< SI: Pad to pow2, must set for mipmap (include level0) 514*61046927SAndroid Build Coastguard Worker UINT_32 interleaved : 1; ///< Special flag for interleaved YUV surface padding 515*61046927SAndroid Build Coastguard Worker UINT_32 tcCompatible : 1; ///< Flag indicates surface needs to be shader readable 516*61046927SAndroid Build Coastguard Worker UINT_32 dispTileType : 1; ///< NI: force display Tiling for 128 bit shared resoruce 517*61046927SAndroid Build Coastguard Worker UINT_32 dccCompatible : 1; ///< VI: whether to make MSAA surface support dcc fast clear 518*61046927SAndroid Build Coastguard Worker UINT_32 dccPipeWorkaround : 1; ///< VI: whether to workaround the HW limit that 519*61046927SAndroid Build Coastguard Worker /// dcc can't be enabled if pipe config of tile mode 520*61046927SAndroid Build Coastguard Worker /// is different from that of ASIC, this flag 521*61046927SAndroid Build Coastguard Worker /// is address lib internal flag, client should ignore it 522*61046927SAndroid Build Coastguard Worker UINT_32 czDispCompatible : 1; ///< SI+: CZ family has a HW bug needs special alignment. 523*61046927SAndroid Build Coastguard Worker /// This flag indicates we need to follow the 524*61046927SAndroid Build Coastguard Worker /// alignment with CZ families or other ASICs under 525*61046927SAndroid Build Coastguard Worker /// PX configuration + CZ. 526*61046927SAndroid Build Coastguard Worker UINT_32 nonSplit : 1; ///< CI: depth texture should not be split 527*61046927SAndroid Build Coastguard Worker UINT_32 disableLinearOpt : 1; ///< Disable tile mode optimization to linear 528*61046927SAndroid Build Coastguard Worker UINT_32 needEquation : 1; ///< Make the surface tile setting equation compatible. 529*61046927SAndroid Build Coastguard Worker /// This flag indicates we need to override tile 530*61046927SAndroid Build Coastguard Worker /// mode to PRT_* tile mode to disable slice rotation, 531*61046927SAndroid Build Coastguard Worker /// which is needed by swizzle pattern equation. 532*61046927SAndroid Build Coastguard Worker UINT_32 skipIndicesOutput : 1; ///< Skipping indices in output. 533*61046927SAndroid Build Coastguard Worker UINT_32 rotateDisplay : 1; ///< Rotate micro tile type 534*61046927SAndroid Build Coastguard Worker UINT_32 minimizeAlignment : 1; ///< Minimize alignment 535*61046927SAndroid Build Coastguard Worker UINT_32 preferEquation : 1; ///< Return equation index without adjusting tile mode 536*61046927SAndroid Build Coastguard Worker UINT_32 matchStencilTileCfg : 1; ///< Select tile index of stencil as well as depth surface 537*61046927SAndroid Build Coastguard Worker /// to make sure they share same tile config parameters 538*61046927SAndroid Build Coastguard Worker UINT_32 disallowLargeThickDegrade : 1; ///< Disallow large thick tile degrade 539*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 1; ///< Reserved bits 540*61046927SAndroid Build Coastguard Worker }; 541*61046927SAndroid Build Coastguard Worker 542*61046927SAndroid Build Coastguard Worker UINT_32 value; 543*61046927SAndroid Build Coastguard Worker } ADDR_SURFACE_FLAGS; 544*61046927SAndroid Build Coastguard Worker 545*61046927SAndroid Build Coastguard Worker /** 546*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 547*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_SURFACE_INFO_INPUT 548*61046927SAndroid Build Coastguard Worker * 549*61046927SAndroid Build Coastguard Worker * @brief 550*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputeSurfaceInfo 551*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 552*61046927SAndroid Build Coastguard Worker */ 553*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_SURFACE_INFO_INPUT 554*61046927SAndroid Build Coastguard Worker { 555*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 556*61046927SAndroid Build Coastguard Worker 557*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile mode 558*61046927SAndroid Build Coastguard Worker AddrFormat format; ///< If format is set to valid one, bpp/width/height 559*61046927SAndroid Build Coastguard Worker /// might be overwritten 560*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel 561*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 562*61046927SAndroid Build Coastguard Worker UINT_32 width; ///< Width, in pixels 563*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height, in pixels 564*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of surface slices or depth 565*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 566*61046927SAndroid Build Coastguard Worker UINT_32 mipLevel; ///< Current mipmap level 567*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Number of mips in mip chain 568*61046927SAndroid Build Coastguard Worker ADDR_SURFACE_FLAGS flags; ///< Surface type flags 569*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 570*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 571*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 572*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 573*61046927SAndroid Build Coastguard Worker // Needed by 2D tiling, for linear and 1D tiling, just keep them 0's 574*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< 2D tile parameters. Set to 0 to default/calculate 575*61046927SAndroid Build Coastguard Worker AddrTileType tileType; ///< Micro tiling type, not needed when tileIndex != -1 576*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 577*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 578*61046927SAndroid Build Coastguard Worker UINT_32 basePitch; ///< Base level pitch in pixels, 0 means ignored, is a 579*61046927SAndroid Build Coastguard Worker /// must for mip levels from SI+. 580*61046927SAndroid Build Coastguard Worker /// Don't use pitch in blocks for compressed formats! 581*61046927SAndroid Build Coastguard Worker UINT_32 maxBaseAlign; ///< Max base alignment request from client 582*61046927SAndroid Build Coastguard Worker UINT_32 pitchAlign; ///< Pitch alignment request from client 583*61046927SAndroid Build Coastguard Worker UINT_32 heightAlign; ///< Height alignment request from client 584*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_SURFACE_INFO_INPUT; 585*61046927SAndroid Build Coastguard Worker 586*61046927SAndroid Build Coastguard Worker /** 587*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 588*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_SURFACE_INFO_OUTPUT 589*61046927SAndroid Build Coastguard Worker * 590*61046927SAndroid Build Coastguard Worker * @brief 591*61046927SAndroid Build Coastguard Worker * Output structure for AddrComputeSurfInfo 592*61046927SAndroid Build Coastguard Worker * @note 593*61046927SAndroid Build Coastguard Worker Element: AddrLib unit for computing. e.g. BCn: 4x4 blocks; R32B32B32: 32bit with 3x pitch 594*61046927SAndroid Build Coastguard Worker Pixel: Original pixel 595*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 596*61046927SAndroid Build Coastguard Worker */ 597*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_SURFACE_INFO_OUTPUT 598*61046927SAndroid Build Coastguard Worker { 599*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 600*61046927SAndroid Build Coastguard Worker 601*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch in elements (in blocks for compressed formats) 602*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height in elements (in blocks for compressed formats) 603*61046927SAndroid Build Coastguard Worker UINT_32 depth; ///< Number of slice/depth 604*61046927SAndroid Build Coastguard Worker UINT_64 surfSize; ///< Surface size in bytes 605*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Actual tile mode. May differ from that in input 606*61046927SAndroid Build Coastguard Worker UINT_32 baseAlign; ///< Base address alignment 607*61046927SAndroid Build Coastguard Worker UINT_32 pitchAlign; ///< Pitch alignment, in elements 608*61046927SAndroid Build Coastguard Worker UINT_32 heightAlign; ///< Height alignment, in elements 609*61046927SAndroid Build Coastguard Worker UINT_32 depthAlign; ///< Depth alignment, aligned to thickness, for 3d texture 610*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per elements (e.g. blocks for BCn, 1/3 for 96bit) 611*61046927SAndroid Build Coastguard Worker UINT_32 pixelPitch; ///< Pitch in original pixels 612*61046927SAndroid Build Coastguard Worker UINT_32 pixelHeight; ///< Height in original pixels 613*61046927SAndroid Build Coastguard Worker UINT_32 pixelBits; ///< Original bits per pixel, passed from input 614*61046927SAndroid Build Coastguard Worker UINT_64 sliceSize; ///< Size of slice specified by input's slice 615*61046927SAndroid Build Coastguard Worker /// The result is controlled by surface flags & createFlags 616*61046927SAndroid Build Coastguard Worker /// By default this value equals to surfSize for volume 617*61046927SAndroid Build Coastguard Worker UINT_32 pitchTileMax; ///< PITCH_TILE_MAX value for h/w register 618*61046927SAndroid Build Coastguard Worker UINT_32 heightTileMax; ///< HEIGHT_TILE_MAX value for h/w register 619*61046927SAndroid Build Coastguard Worker UINT_32 sliceTileMax; ///< SLICE_TILE_MAX value for h/w register 620*61046927SAndroid Build Coastguard Worker 621*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Pass the effective numSamples processed in this call 622*61046927SAndroid Build Coastguard Worker 623*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 624*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile parameters used. Filled in if 0 on input 625*61046927SAndroid Build Coastguard Worker AddrTileType tileType; ///< Micro tiling type, only valid when tileIndex != -1 626*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MAY be "downgraded" 627*61046927SAndroid Build Coastguard Worker 628*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 629*61046927SAndroid Build Coastguard Worker /// Output flags 630*61046927SAndroid Build Coastguard Worker struct 631*61046927SAndroid Build Coastguard Worker { 632*61046927SAndroid Build Coastguard Worker /// Special information to work around SI mipmap swizzle bug UBTS #317508 633*61046927SAndroid Build Coastguard Worker UINT_32 last2DLevel : 1; ///< TRUE if this is the last 2D(3D) tiled 634*61046927SAndroid Build Coastguard Worker ///< Only meaningful when create flag checkLast2DLevel is set 635*61046927SAndroid Build Coastguard Worker UINT_32 tcCompatible : 1; ///< If the surface can be shader compatible 636*61046927SAndroid Build Coastguard Worker UINT_32 dccUnsupport : 1; ///< If the surface can support DCC compressed rendering 637*61046927SAndroid Build Coastguard Worker UINT_32 prtTileIndex : 1; ///< SI only, indicate the returned tile index is for PRT 638*61046927SAndroid Build Coastguard Worker ///< If address lib return true for mip 0, client should set prt flag 639*61046927SAndroid Build Coastguard Worker ///< for child mips in subsequent compute surface info calls 640*61046927SAndroid Build Coastguard Worker UINT_32 reserved :28; ///< Reserved bits 641*61046927SAndroid Build Coastguard Worker }; 642*61046927SAndroid Build Coastguard Worker 643*61046927SAndroid Build Coastguard Worker UINT_32 equationIndex; ///< Equation index in the equation table; 644*61046927SAndroid Build Coastguard Worker 645*61046927SAndroid Build Coastguard Worker UINT_32 blockWidth; ///< Width in element inside one block(1D->Micro, 2D->Macro) 646*61046927SAndroid Build Coastguard Worker UINT_32 blockHeight; ///< Height in element inside one block(1D->Micro, 2D->Macro) 647*61046927SAndroid Build Coastguard Worker UINT_32 blockSlices; ///< Slice number inside one block(1D->Micro, 2D->Macro) 648*61046927SAndroid Build Coastguard Worker 649*61046927SAndroid Build Coastguard Worker /// Stereo info 650*61046927SAndroid Build Coastguard Worker ADDR_QBSTEREOINFO* pStereoInfo;///< Stereo information, needed when .qbStereo flag is TRUE 651*61046927SAndroid Build Coastguard Worker 652*61046927SAndroid Build Coastguard Worker INT_32 stencilTileIdx; ///< stencil tile index output when matchStencilTileCfg was set 653*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_SURFACE_INFO_OUTPUT; 654*61046927SAndroid Build Coastguard Worker 655*61046927SAndroid Build Coastguard Worker /** 656*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 657*61046927SAndroid Build Coastguard Worker * AddrComputeSurfaceInfo 658*61046927SAndroid Build Coastguard Worker * 659*61046927SAndroid Build Coastguard Worker * @brief 660*61046927SAndroid Build Coastguard Worker * Compute surface width/height/depth/alignments and suitable tiling mode 661*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 662*61046927SAndroid Build Coastguard Worker */ 663*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeSurfaceInfo( 664*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 665*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_SURFACE_INFO_INPUT* pIn, 666*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_SURFACE_INFO_OUTPUT* pOut); 667*61046927SAndroid Build Coastguard Worker 668*61046927SAndroid Build Coastguard Worker 669*61046927SAndroid Build Coastguard Worker 670*61046927SAndroid Build Coastguard Worker /** 671*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 672*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT 673*61046927SAndroid Build Coastguard Worker * 674*61046927SAndroid Build Coastguard Worker * @brief 675*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputeSurfaceAddrFromCoord 676*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 677*61046927SAndroid Build Coastguard Worker */ 678*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT 679*61046927SAndroid Build Coastguard Worker { 680*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 681*61046927SAndroid Build Coastguard Worker 682*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 683*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 684*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 685*61046927SAndroid Build Coastguard Worker UINT_32 sample; ///< Sample index, use fragment index for EQAA 686*61046927SAndroid Build Coastguard Worker 687*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel 688*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Surface pitch, in pixels 689*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Surface height, in pixels 690*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Surface depth 691*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 692*61046927SAndroid Build Coastguard Worker 693*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile mode 694*61046927SAndroid Build Coastguard Worker BOOL_32 isDepth; ///< TRUE if the surface uses depth sample ordering within 695*61046927SAndroid Build Coastguard Worker /// micro tile. Textures can also choose depth sample order 696*61046927SAndroid Build Coastguard Worker UINT_32 tileBase; ///< Base offset (in bits) inside micro tile which handles 697*61046927SAndroid Build Coastguard Worker /// the case that components are stored separately 698*61046927SAndroid Build Coastguard Worker UINT_32 compBits; ///< The component bits actually needed(for planar surface) 699*61046927SAndroid Build Coastguard Worker 700*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 701*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 702*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 703*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 704*61046927SAndroid Build Coastguard Worker // Used for 1D tiling above 705*61046927SAndroid Build Coastguard Worker AddrTileType tileType; ///< See defintion of AddrTileType 706*61046927SAndroid Build Coastguard Worker struct 707*61046927SAndroid Build Coastguard Worker { 708*61046927SAndroid Build Coastguard Worker UINT_32 ignoreSE : 1; ///< TRUE if shader engines are ignored. This is texture 709*61046927SAndroid Build Coastguard Worker /// only flag. Only non-RT texture can set this to TRUE 710*61046927SAndroid Build Coastguard Worker UINT_32 reserved :31; ///< Reserved for future use. 711*61046927SAndroid Build Coastguard Worker }; 712*61046927SAndroid Build Coastguard Worker // 2D tiling needs following structure 713*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< 2D tile parameters. Client must provide all data 714*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 715*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 716*61046927SAndroid Build Coastguard Worker union 717*61046927SAndroid Build Coastguard Worker { 718*61046927SAndroid Build Coastguard Worker struct 719*61046927SAndroid Build Coastguard Worker { 720*61046927SAndroid Build Coastguard Worker UINT_32 bankSwizzle; ///< Bank swizzle 721*61046927SAndroid Build Coastguard Worker UINT_32 pipeSwizzle; ///< Pipe swizzle 722*61046927SAndroid Build Coastguard Worker }; 723*61046927SAndroid Build Coastguard Worker UINT_32 tileSwizzle; ///< Combined swizzle, if useCombinedSwizzle is TRUE 724*61046927SAndroid Build Coastguard Worker }; 725*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT; 726*61046927SAndroid Build Coastguard Worker 727*61046927SAndroid Build Coastguard Worker /** 728*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 729*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT 730*61046927SAndroid Build Coastguard Worker * 731*61046927SAndroid Build Coastguard Worker * @brief 732*61046927SAndroid Build Coastguard Worker * Output structure for AddrComputeSurfaceAddrFromCoord 733*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 734*61046927SAndroid Build Coastguard Worker */ 735*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT 736*61046927SAndroid Build Coastguard Worker { 737*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 738*61046927SAndroid Build Coastguard Worker 739*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Byte address 740*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within surfaceAddr, 0-7. 741*61046927SAndroid Build Coastguard Worker /// For surface bpp < 8, e.g. FMT_1. 742*61046927SAndroid Build Coastguard Worker UINT_32 prtBlockIndex; ///< Index of a PRT tile (64K block) 743*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT; 744*61046927SAndroid Build Coastguard Worker 745*61046927SAndroid Build Coastguard Worker /** 746*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 747*61046927SAndroid Build Coastguard Worker * AddrComputeSurfaceAddrFromCoord 748*61046927SAndroid Build Coastguard Worker * 749*61046927SAndroid Build Coastguard Worker * @brief 750*61046927SAndroid Build Coastguard Worker * Compute surface address from a given coordinate. 751*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 752*61046927SAndroid Build Coastguard Worker */ 753*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeSurfaceAddrFromCoord( 754*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 755*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT* pIn, 756*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT* pOut); 757*61046927SAndroid Build Coastguard Worker 758*61046927SAndroid Build Coastguard Worker 759*61046927SAndroid Build Coastguard Worker 760*61046927SAndroid Build Coastguard Worker /** 761*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 762*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_SURFACE_COORDFROMADDR_INPUT 763*61046927SAndroid Build Coastguard Worker * 764*61046927SAndroid Build Coastguard Worker * @brief 765*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputeSurfaceCoordFromAddr 766*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 767*61046927SAndroid Build Coastguard Worker */ 768*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_SURFACE_COORDFROMADDR_INPUT 769*61046927SAndroid Build Coastguard Worker { 770*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 771*61046927SAndroid Build Coastguard Worker 772*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Address in bytes 773*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position in addr. 0-7. for surface bpp < 8, 774*61046927SAndroid Build Coastguard Worker /// e.g. FMT_1; 775*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel 776*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch, in pixels 777*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height in pixels 778*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Surface depth 779*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 780*61046927SAndroid Build Coastguard Worker 781*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile mode 782*61046927SAndroid Build Coastguard Worker BOOL_32 isDepth; ///< Surface uses depth sample ordering within micro tile. 783*61046927SAndroid Build Coastguard Worker /// Note: Textures can choose depth sample order as well. 784*61046927SAndroid Build Coastguard Worker UINT_32 tileBase; ///< Base offset (in bits) inside micro tile which handles 785*61046927SAndroid Build Coastguard Worker /// the case that components are stored separately 786*61046927SAndroid Build Coastguard Worker UINT_32 compBits; ///< The component bits actually needed(for planar surface) 787*61046927SAndroid Build Coastguard Worker 788*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 789*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 790*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 791*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 792*61046927SAndroid Build Coastguard Worker // Used for 1D tiling above 793*61046927SAndroid Build Coastguard Worker AddrTileType tileType; ///< See defintion of AddrTileType 794*61046927SAndroid Build Coastguard Worker struct 795*61046927SAndroid Build Coastguard Worker { 796*61046927SAndroid Build Coastguard Worker UINT_32 ignoreSE : 1; ///< TRUE if shader engines are ignored. This is texture 797*61046927SAndroid Build Coastguard Worker /// only flag. Only non-RT texture can set this to TRUE 798*61046927SAndroid Build Coastguard Worker UINT_32 reserved :31; ///< Reserved for future use. 799*61046927SAndroid Build Coastguard Worker }; 800*61046927SAndroid Build Coastguard Worker // 2D tiling needs following structure 801*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< 2D tile parameters. Client must provide all data 802*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 803*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 804*61046927SAndroid Build Coastguard Worker union 805*61046927SAndroid Build Coastguard Worker { 806*61046927SAndroid Build Coastguard Worker struct 807*61046927SAndroid Build Coastguard Worker { 808*61046927SAndroid Build Coastguard Worker UINT_32 bankSwizzle; ///< Bank swizzle 809*61046927SAndroid Build Coastguard Worker UINT_32 pipeSwizzle; ///< Pipe swizzle 810*61046927SAndroid Build Coastguard Worker }; 811*61046927SAndroid Build Coastguard Worker UINT_32 tileSwizzle; ///< Combined swizzle, if useCombinedSwizzle is TRUE 812*61046927SAndroid Build Coastguard Worker }; 813*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_SURFACE_COORDFROMADDR_INPUT; 814*61046927SAndroid Build Coastguard Worker 815*61046927SAndroid Build Coastguard Worker /** 816*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 817*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT 818*61046927SAndroid Build Coastguard Worker * 819*61046927SAndroid Build Coastguard Worker * @brief 820*61046927SAndroid Build Coastguard Worker * Output structure for AddrComputeSurfaceCoordFromAddr 821*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 822*61046927SAndroid Build Coastguard Worker */ 823*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT 824*61046927SAndroid Build Coastguard Worker { 825*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 826*61046927SAndroid Build Coastguard Worker 827*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 828*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 829*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Index of slices 830*61046927SAndroid Build Coastguard Worker UINT_32 sample; ///< Index of samples, means fragment index for EQAA 831*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT; 832*61046927SAndroid Build Coastguard Worker 833*61046927SAndroid Build Coastguard Worker /** 834*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 835*61046927SAndroid Build Coastguard Worker * AddrComputeSurfaceCoordFromAddr 836*61046927SAndroid Build Coastguard Worker * 837*61046927SAndroid Build Coastguard Worker * @brief 838*61046927SAndroid Build Coastguard Worker * Compute coordinate from a given surface address 839*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 840*61046927SAndroid Build Coastguard Worker */ 841*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeSurfaceCoordFromAddr( 842*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 843*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_SURFACE_COORDFROMADDR_INPUT* pIn, 844*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT* pOut); 845*61046927SAndroid Build Coastguard Worker 846*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 847*61046927SAndroid Build Coastguard Worker // HTile functions 848*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 849*61046927SAndroid Build Coastguard Worker 850*61046927SAndroid Build Coastguard Worker /** 851*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 852*61046927SAndroid Build Coastguard Worker * ADDR_HTILE_FLAGS 853*61046927SAndroid Build Coastguard Worker * 854*61046927SAndroid Build Coastguard Worker * @brief 855*61046927SAndroid Build Coastguard Worker * HTILE flags 856*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 857*61046927SAndroid Build Coastguard Worker */ 858*61046927SAndroid Build Coastguard Worker typedef union _ADDR_HTILE_FLAGS 859*61046927SAndroid Build Coastguard Worker { 860*61046927SAndroid Build Coastguard Worker struct 861*61046927SAndroid Build Coastguard Worker { 862*61046927SAndroid Build Coastguard Worker UINT_32 tcCompatible : 1; ///< Flag indicates surface needs to be shader readable 863*61046927SAndroid Build Coastguard Worker UINT_32 skipTcCompatSizeAlign : 1; ///< Flag indicates that addrLib will not align htile 864*61046927SAndroid Build Coastguard Worker /// size to 256xBankxPipe when computing tc-compatible 865*61046927SAndroid Build Coastguard Worker /// htile info. 866*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 30; ///< Reserved bits 867*61046927SAndroid Build Coastguard Worker }; 868*61046927SAndroid Build Coastguard Worker 869*61046927SAndroid Build Coastguard Worker UINT_32 value; 870*61046927SAndroid Build Coastguard Worker } ADDR_HTILE_FLAGS; 871*61046927SAndroid Build Coastguard Worker 872*61046927SAndroid Build Coastguard Worker /** 873*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 874*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_HTILE_INFO_INPUT 875*61046927SAndroid Build Coastguard Worker * 876*61046927SAndroid Build Coastguard Worker * @brief 877*61046927SAndroid Build Coastguard Worker * Input structure of AddrComputeHtileInfo 878*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 879*61046927SAndroid Build Coastguard Worker */ 880*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_HTILE_INFO_INPUT 881*61046927SAndroid Build Coastguard Worker { 882*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 883*61046927SAndroid Build Coastguard Worker 884*61046927SAndroid Build Coastguard Worker ADDR_HTILE_FLAGS flags; ///< HTILE flags 885*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Surface pitch, in pixels 886*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Surface height, in pixels 887*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slices 888*61046927SAndroid Build Coastguard Worker BOOL_32 isLinear; ///< Linear or tiled HTILE layout 889*61046927SAndroid Build Coastguard Worker AddrHtileBlockSize blockWidth; ///< 4 or 8. EG above only support 8 890*61046927SAndroid Build Coastguard Worker AddrHtileBlockSize blockHeight; ///< 4 or 8. EG above only support 8 891*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile info 892*61046927SAndroid Build Coastguard Worker 893*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 894*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 895*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 896*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 897*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_HTILE_INFO_INPUT; 898*61046927SAndroid Build Coastguard Worker 899*61046927SAndroid Build Coastguard Worker /** 900*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 901*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_HTILE_INFO_OUTPUT 902*61046927SAndroid Build Coastguard Worker * 903*61046927SAndroid Build Coastguard Worker * @brief 904*61046927SAndroid Build Coastguard Worker * Output structure of AddrComputeHtileInfo 905*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 906*61046927SAndroid Build Coastguard Worker */ 907*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_HTILE_INFO_OUTPUT 908*61046927SAndroid Build Coastguard Worker { 909*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 910*61046927SAndroid Build Coastguard Worker 911*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch in pixels of depth buffer represented in this 912*61046927SAndroid Build Coastguard Worker /// HTile buffer. This might be larger than original depth 913*61046927SAndroid Build Coastguard Worker /// buffer pitch when called with an unaligned pitch. 914*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height in pixels, as above 915*61046927SAndroid Build Coastguard Worker UINT_64 htileBytes; ///< Size of HTILE buffer, in bytes 916*61046927SAndroid Build Coastguard Worker UINT_32 baseAlign; ///< Base alignment 917*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel for HTILE is how many bits for an 8x8 block! 918*61046927SAndroid Build Coastguard Worker UINT_32 macroWidth; ///< Macro width in pixels, actually squared cache shape 919*61046927SAndroid Build Coastguard Worker UINT_32 macroHeight; ///< Macro height in pixels 920*61046927SAndroid Build Coastguard Worker UINT_64 sliceSize; ///< Slice size, in bytes. 921*61046927SAndroid Build Coastguard Worker BOOL_32 sliceInterleaved; ///< Flag to indicate if different slice's htile is interleaved 922*61046927SAndroid Build Coastguard Worker /// Compute engine clear can't be used if htile is interleaved 923*61046927SAndroid Build Coastguard Worker BOOL_32 nextMipLevelCompressible; ///< Flag to indicate whether HTILE can be enabled in 924*61046927SAndroid Build Coastguard Worker /// next mip level, it also indicates if memory set based 925*61046927SAndroid Build Coastguard Worker /// fast clear can be used for current mip level. 926*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_HTILE_INFO_OUTPUT; 927*61046927SAndroid Build Coastguard Worker 928*61046927SAndroid Build Coastguard Worker /** 929*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 930*61046927SAndroid Build Coastguard Worker * AddrComputeHtileInfo 931*61046927SAndroid Build Coastguard Worker * 932*61046927SAndroid Build Coastguard Worker * @brief 933*61046927SAndroid Build Coastguard Worker * Compute Htile pitch, height, base alignment and size in bytes 934*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 935*61046927SAndroid Build Coastguard Worker */ 936*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeHtileInfo( 937*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 938*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_HTILE_INFO_INPUT* pIn, 939*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_HTILE_INFO_OUTPUT* pOut); 940*61046927SAndroid Build Coastguard Worker 941*61046927SAndroid Build Coastguard Worker 942*61046927SAndroid Build Coastguard Worker 943*61046927SAndroid Build Coastguard Worker /** 944*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 945*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_HTILE_ADDRFROMCOORD_INPUT 946*61046927SAndroid Build Coastguard Worker * 947*61046927SAndroid Build Coastguard Worker * @brief 948*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputeHtileAddrFromCoord 949*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 950*61046927SAndroid Build Coastguard Worker */ 951*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_HTILE_ADDRFROMCOORD_INPUT 952*61046927SAndroid Build Coastguard Worker { 953*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 954*61046927SAndroid Build Coastguard Worker 955*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch, in pixels 956*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height in pixels 957*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 958*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 959*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Index of slice 960*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slices 961*61046927SAndroid Build Coastguard Worker BOOL_32 isLinear; ///< Linear or tiled HTILE layout 962*61046927SAndroid Build Coastguard Worker ADDR_HTILE_FLAGS flags; ///< htile flags 963*61046927SAndroid Build Coastguard Worker AddrHtileBlockSize blockWidth; ///< 4 or 8. 1 means 8, 0 means 4. EG above only support 8 964*61046927SAndroid Build Coastguard Worker AddrHtileBlockSize blockHeight; ///< 4 or 8. 1 means 8, 0 means 4. EG above only support 8 965*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile info 966*61046927SAndroid Build Coastguard Worker 967*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 968*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 969*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 970*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 971*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< depth/stencil buffer bit per pixel size 972*61046927SAndroid Build Coastguard Worker UINT_32 zStencilAddr; ///< tcCompatible Z/Stencil surface address 973*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_HTILE_ADDRFROMCOORD_INPUT; 974*61046927SAndroid Build Coastguard Worker 975*61046927SAndroid Build Coastguard Worker /** 976*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 977*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT 978*61046927SAndroid Build Coastguard Worker * 979*61046927SAndroid Build Coastguard Worker * @brief 980*61046927SAndroid Build Coastguard Worker * Output structure for AddrComputeHtileAddrFromCoord 981*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 982*61046927SAndroid Build Coastguard Worker */ 983*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT 984*61046927SAndroid Build Coastguard Worker { 985*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 986*61046927SAndroid Build Coastguard Worker 987*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Address in bytes 988*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position, 0 or 4. CMASK and HTILE shares some lib method. 989*61046927SAndroid Build Coastguard Worker /// So we keep bitPosition for HTILE as well 990*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT; 991*61046927SAndroid Build Coastguard Worker 992*61046927SAndroid Build Coastguard Worker /** 993*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 994*61046927SAndroid Build Coastguard Worker * AddrComputeHtileAddrFromCoord 995*61046927SAndroid Build Coastguard Worker * 996*61046927SAndroid Build Coastguard Worker * @brief 997*61046927SAndroid Build Coastguard Worker * Compute Htile address according to coordinates (of depth buffer) 998*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 999*61046927SAndroid Build Coastguard Worker */ 1000*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeHtileAddrFromCoord( 1001*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1002*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_HTILE_ADDRFROMCOORD_INPUT* pIn, 1003*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT* pOut); 1004*61046927SAndroid Build Coastguard Worker 1005*61046927SAndroid Build Coastguard Worker 1006*61046927SAndroid Build Coastguard Worker 1007*61046927SAndroid Build Coastguard Worker /** 1008*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1009*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_HTILE_COORDFROMADDR_INPUT 1010*61046927SAndroid Build Coastguard Worker * 1011*61046927SAndroid Build Coastguard Worker * @brief 1012*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputeHtileCoordFromAddr 1013*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1014*61046927SAndroid Build Coastguard Worker */ 1015*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_HTILE_COORDFROMADDR_INPUT 1016*61046927SAndroid Build Coastguard Worker { 1017*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1018*61046927SAndroid Build Coastguard Worker 1019*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Address 1020*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position 0 or 4. CMASK and HTILE share some methods 1021*61046927SAndroid Build Coastguard Worker /// so we keep bitPosition for HTILE as well 1022*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch, in pixels 1023*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height, in pixels 1024*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slices 1025*61046927SAndroid Build Coastguard Worker BOOL_32 isLinear; ///< Linear or tiled HTILE layout 1026*61046927SAndroid Build Coastguard Worker AddrHtileBlockSize blockWidth; ///< 4 or 8. 1 means 8, 0 means 4. R8xx/R9xx only support 8 1027*61046927SAndroid Build Coastguard Worker AddrHtileBlockSize blockHeight; ///< 4 or 8. 1 means 8, 0 means 4. R8xx/R9xx only support 8 1028*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile info 1029*61046927SAndroid Build Coastguard Worker 1030*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 1031*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 1032*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 1033*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 1034*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_HTILE_COORDFROMADDR_INPUT; 1035*61046927SAndroid Build Coastguard Worker 1036*61046927SAndroid Build Coastguard Worker /** 1037*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1038*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_HTILE_COORDFROMADDR_OUTPUT 1039*61046927SAndroid Build Coastguard Worker * 1040*61046927SAndroid Build Coastguard Worker * @brief 1041*61046927SAndroid Build Coastguard Worker * Output structure for AddrComputeHtileCoordFromAddr 1042*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1043*61046927SAndroid Build Coastguard Worker */ 1044*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_HTILE_COORDFROMADDR_OUTPUT 1045*61046927SAndroid Build Coastguard Worker { 1046*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1047*61046927SAndroid Build Coastguard Worker 1048*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 1049*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 1050*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 1051*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_HTILE_COORDFROMADDR_OUTPUT; 1052*61046927SAndroid Build Coastguard Worker 1053*61046927SAndroid Build Coastguard Worker /** 1054*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1055*61046927SAndroid Build Coastguard Worker * AddrComputeHtileCoordFromAddr 1056*61046927SAndroid Build Coastguard Worker * 1057*61046927SAndroid Build Coastguard Worker * @brief 1058*61046927SAndroid Build Coastguard Worker * Compute coordinates within depth buffer (1st pixel of a micro tile) according to 1059*61046927SAndroid Build Coastguard Worker * Htile address 1060*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1061*61046927SAndroid Build Coastguard Worker */ 1062*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeHtileCoordFromAddr( 1063*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1064*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_HTILE_COORDFROMADDR_INPUT* pIn, 1065*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_HTILE_COORDFROMADDR_OUTPUT* pOut); 1066*61046927SAndroid Build Coastguard Worker 1067*61046927SAndroid Build Coastguard Worker 1068*61046927SAndroid Build Coastguard Worker 1069*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 1070*61046927SAndroid Build Coastguard Worker // C-mask functions 1071*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 1072*61046927SAndroid Build Coastguard Worker 1073*61046927SAndroid Build Coastguard Worker /** 1074*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1075*61046927SAndroid Build Coastguard Worker * ADDR_CMASK_FLAGS 1076*61046927SAndroid Build Coastguard Worker * 1077*61046927SAndroid Build Coastguard Worker * @brief 1078*61046927SAndroid Build Coastguard Worker * CMASK flags 1079*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1080*61046927SAndroid Build Coastguard Worker */ 1081*61046927SAndroid Build Coastguard Worker typedef union _ADDR_CMASK_FLAGS 1082*61046927SAndroid Build Coastguard Worker { 1083*61046927SAndroid Build Coastguard Worker struct 1084*61046927SAndroid Build Coastguard Worker { 1085*61046927SAndroid Build Coastguard Worker UINT_32 tcCompatible : 1; ///< Flag indicates surface needs to be shader readable 1086*61046927SAndroid Build Coastguard Worker UINT_32 reserved :31; ///< Reserved bits 1087*61046927SAndroid Build Coastguard Worker }; 1088*61046927SAndroid Build Coastguard Worker 1089*61046927SAndroid Build Coastguard Worker UINT_32 value; 1090*61046927SAndroid Build Coastguard Worker } ADDR_CMASK_FLAGS; 1091*61046927SAndroid Build Coastguard Worker 1092*61046927SAndroid Build Coastguard Worker /** 1093*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1094*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_CMASK_INFO_INPUT 1095*61046927SAndroid Build Coastguard Worker * 1096*61046927SAndroid Build Coastguard Worker * @brief 1097*61046927SAndroid Build Coastguard Worker * Input structure of AddrComputeCmaskInfo 1098*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1099*61046927SAndroid Build Coastguard Worker */ 1100*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_CMASKINFO_INPUT 1101*61046927SAndroid Build Coastguard Worker { 1102*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1103*61046927SAndroid Build Coastguard Worker 1104*61046927SAndroid Build Coastguard Worker ADDR_CMASK_FLAGS flags; ///< CMASK flags 1105*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch, in pixels, of color buffer 1106*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height, in pixels, of color buffer 1107*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slices, of color buffer 1108*61046927SAndroid Build Coastguard Worker BOOL_32 isLinear; ///< Linear or tiled layout, Only SI can be linear 1109*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile info 1110*61046927SAndroid Build Coastguard Worker 1111*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 1112*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 1113*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 1114*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 1115*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_CMASK_INFO_INPUT; 1116*61046927SAndroid Build Coastguard Worker 1117*61046927SAndroid Build Coastguard Worker /** 1118*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1119*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_CMASK_INFO_OUTPUT 1120*61046927SAndroid Build Coastguard Worker * 1121*61046927SAndroid Build Coastguard Worker * @brief 1122*61046927SAndroid Build Coastguard Worker * Output structure of AddrComputeCmaskInfo 1123*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1124*61046927SAndroid Build Coastguard Worker */ 1125*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_CMASK_INFO_OUTPUT 1126*61046927SAndroid Build Coastguard Worker { 1127*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1128*61046927SAndroid Build Coastguard Worker 1129*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch in pixels of color buffer which 1130*61046927SAndroid Build Coastguard Worker /// this Cmask matches. The size might be larger than 1131*61046927SAndroid Build Coastguard Worker /// original color buffer pitch when called with 1132*61046927SAndroid Build Coastguard Worker /// an unaligned pitch. 1133*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height in pixels, as above 1134*61046927SAndroid Build Coastguard Worker UINT_64 cmaskBytes; ///< Size in bytes of CMask buffer 1135*61046927SAndroid Build Coastguard Worker UINT_32 baseAlign; ///< Base alignment 1136*61046927SAndroid Build Coastguard Worker UINT_32 blockMax; ///< Cmask block size. Need this to set CB_COLORn_MASK register 1137*61046927SAndroid Build Coastguard Worker UINT_32 macroWidth; ///< Macro width in pixels, actually squared cache shape 1138*61046927SAndroid Build Coastguard Worker UINT_32 macroHeight; ///< Macro height in pixels 1139*61046927SAndroid Build Coastguard Worker UINT_64 sliceSize; ///< Slice size, in bytes. 1140*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_CMASK_INFO_OUTPUT; 1141*61046927SAndroid Build Coastguard Worker 1142*61046927SAndroid Build Coastguard Worker /** 1143*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1144*61046927SAndroid Build Coastguard Worker * AddrComputeCmaskInfo 1145*61046927SAndroid Build Coastguard Worker * 1146*61046927SAndroid Build Coastguard Worker * @brief 1147*61046927SAndroid Build Coastguard Worker * Compute Cmask pitch, height, base alignment and size in bytes from color buffer 1148*61046927SAndroid Build Coastguard Worker * info 1149*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1150*61046927SAndroid Build Coastguard Worker */ 1151*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeCmaskInfo( 1152*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1153*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_CMASK_INFO_INPUT* pIn, 1154*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_CMASK_INFO_OUTPUT* pOut); 1155*61046927SAndroid Build Coastguard Worker 1156*61046927SAndroid Build Coastguard Worker 1157*61046927SAndroid Build Coastguard Worker 1158*61046927SAndroid Build Coastguard Worker /** 1159*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1160*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_CMASK_ADDRFROMCOORD_INPUT 1161*61046927SAndroid Build Coastguard Worker * 1162*61046927SAndroid Build Coastguard Worker * @brief 1163*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputeCmaskAddrFromCoord 1164*61046927SAndroid Build Coastguard Worker * 1165*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1166*61046927SAndroid Build Coastguard Worker */ 1167*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_CMASK_ADDRFROMCOORD_INPUT 1168*61046927SAndroid Build Coastguard Worker { 1169*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1170*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 1171*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 1172*61046927SAndroid Build Coastguard Worker UINT_64 fmaskAddr; ///< Fmask addr for tc compatible Cmask 1173*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 1174*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch in pixels, of color buffer 1175*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height in pixels, of color buffer 1176*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slices 1177*61046927SAndroid Build Coastguard Worker UINT_32 bpp; 1178*61046927SAndroid Build Coastguard Worker BOOL_32 isLinear; ///< Linear or tiled layout, Only SI can be linear 1179*61046927SAndroid Build Coastguard Worker ADDR_CMASK_FLAGS flags; ///< CMASK flags 1180*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile info 1181*61046927SAndroid Build Coastguard Worker 1182*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 1183*61046927SAndroid Build Coastguard Worker ///< while the global useTileIndex is set to 1 1184*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 1185*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 1186*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_CMASK_ADDRFROMCOORD_INPUT; 1187*61046927SAndroid Build Coastguard Worker 1188*61046927SAndroid Build Coastguard Worker /** 1189*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1190*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT 1191*61046927SAndroid Build Coastguard Worker * 1192*61046927SAndroid Build Coastguard Worker * @brief 1193*61046927SAndroid Build Coastguard Worker * Output structure for AddrComputeCmaskAddrFromCoord 1194*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1195*61046927SAndroid Build Coastguard Worker */ 1196*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT 1197*61046927SAndroid Build Coastguard Worker { 1198*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1199*61046927SAndroid Build Coastguard Worker 1200*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< CMASK address in bytes 1201*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within addr, 0-7. CMASK is 4 bpp, 1202*61046927SAndroid Build Coastguard Worker /// so the address may be located in bit 0 (0) or 4 (4) 1203*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT; 1204*61046927SAndroid Build Coastguard Worker 1205*61046927SAndroid Build Coastguard Worker /** 1206*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1207*61046927SAndroid Build Coastguard Worker * AddrComputeCmaskAddrFromCoord 1208*61046927SAndroid Build Coastguard Worker * 1209*61046927SAndroid Build Coastguard Worker * @brief 1210*61046927SAndroid Build Coastguard Worker * Compute Cmask address according to coordinates (of MSAA color buffer) 1211*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1212*61046927SAndroid Build Coastguard Worker */ 1213*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeCmaskAddrFromCoord( 1214*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1215*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_CMASK_ADDRFROMCOORD_INPUT* pIn, 1216*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT* pOut); 1217*61046927SAndroid Build Coastguard Worker 1218*61046927SAndroid Build Coastguard Worker 1219*61046927SAndroid Build Coastguard Worker 1220*61046927SAndroid Build Coastguard Worker /** 1221*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1222*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_CMASK_COORDFROMADDR_INPUT 1223*61046927SAndroid Build Coastguard Worker * 1224*61046927SAndroid Build Coastguard Worker * @brief 1225*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputeCmaskCoordFromAddr 1226*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1227*61046927SAndroid Build Coastguard Worker */ 1228*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_CMASK_COORDFROMADDR_INPUT 1229*61046927SAndroid Build Coastguard Worker { 1230*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1231*61046927SAndroid Build Coastguard Worker 1232*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< CMASK address in bytes 1233*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within addr, 0-7. CMASK is 4 bpp, 1234*61046927SAndroid Build Coastguard Worker /// so the address may be located in bit 0 (0) or 4 (4) 1235*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch, in pixels 1236*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height in pixels 1237*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slices 1238*61046927SAndroid Build Coastguard Worker BOOL_32 isLinear; ///< Linear or tiled layout, Only SI can be linear 1239*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile info 1240*61046927SAndroid Build Coastguard Worker 1241*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 1242*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 1243*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 1244*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 1245*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_CMASK_COORDFROMADDR_INPUT; 1246*61046927SAndroid Build Coastguard Worker 1247*61046927SAndroid Build Coastguard Worker /** 1248*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1249*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_CMASK_COORDFROMADDR_OUTPUT 1250*61046927SAndroid Build Coastguard Worker * 1251*61046927SAndroid Build Coastguard Worker * @brief 1252*61046927SAndroid Build Coastguard Worker * Output structure for AddrComputeCmaskCoordFromAddr 1253*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1254*61046927SAndroid Build Coastguard Worker */ 1255*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_CMASK_COORDFROMADDR_OUTPUT 1256*61046927SAndroid Build Coastguard Worker { 1257*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1258*61046927SAndroid Build Coastguard Worker 1259*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 1260*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 1261*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 1262*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_CMASK_COORDFROMADDR_OUTPUT; 1263*61046927SAndroid Build Coastguard Worker 1264*61046927SAndroid Build Coastguard Worker /** 1265*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1266*61046927SAndroid Build Coastguard Worker * AddrComputeCmaskCoordFromAddr 1267*61046927SAndroid Build Coastguard Worker * 1268*61046927SAndroid Build Coastguard Worker * @brief 1269*61046927SAndroid Build Coastguard Worker * Compute coordinates within color buffer (1st pixel of a micro tile) according to 1270*61046927SAndroid Build Coastguard Worker * Cmask address 1271*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1272*61046927SAndroid Build Coastguard Worker */ 1273*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeCmaskCoordFromAddr( 1274*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1275*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_CMASK_COORDFROMADDR_INPUT* pIn, 1276*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_CMASK_COORDFROMADDR_OUTPUT* pOut); 1277*61046927SAndroid Build Coastguard Worker 1278*61046927SAndroid Build Coastguard Worker 1279*61046927SAndroid Build Coastguard Worker 1280*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 1281*61046927SAndroid Build Coastguard Worker // F-mask functions 1282*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 1283*61046927SAndroid Build Coastguard Worker 1284*61046927SAndroid Build Coastguard Worker /** 1285*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1286*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_FMASK_INFO_INPUT 1287*61046927SAndroid Build Coastguard Worker * 1288*61046927SAndroid Build Coastguard Worker * @brief 1289*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputeFmaskInfo 1290*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1291*61046927SAndroid Build Coastguard Worker */ 1292*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_FMASK_INFO_INPUT 1293*61046927SAndroid Build Coastguard Worker { 1294*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1295*61046927SAndroid Build Coastguard Worker 1296*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile mode 1297*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Surface pitch, in pixels 1298*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Surface height, in pixels 1299*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slice/depth 1300*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 1301*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 1302*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 1303*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 1304*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 1305*61046927SAndroid Build Coastguard Worker struct 1306*61046927SAndroid Build Coastguard Worker { 1307*61046927SAndroid Build Coastguard Worker UINT_32 resolved: 1; ///< TRUE if the surface is for resolved fmask, only used 1308*61046927SAndroid Build Coastguard Worker /// by H/W clients. S/W should always set it to FALSE. 1309*61046927SAndroid Build Coastguard Worker UINT_32 reserved: 31; ///< Reserved for future use. 1310*61046927SAndroid Build Coastguard Worker }; 1311*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< 2D tiling parameters. Clients must give valid data 1312*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 1313*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 1314*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_FMASK_INFO_INPUT; 1315*61046927SAndroid Build Coastguard Worker 1316*61046927SAndroid Build Coastguard Worker /** 1317*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1318*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_FMASK_INFO_OUTPUT 1319*61046927SAndroid Build Coastguard Worker * 1320*61046927SAndroid Build Coastguard Worker * @brief 1321*61046927SAndroid Build Coastguard Worker * Output structure for AddrComputeFmaskInfo 1322*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1323*61046927SAndroid Build Coastguard Worker */ 1324*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_FMASK_INFO_OUTPUT 1325*61046927SAndroid Build Coastguard Worker { 1326*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1327*61046927SAndroid Build Coastguard Worker 1328*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch of fmask in pixels 1329*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height of fmask in pixels 1330*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Slices of fmask 1331*61046927SAndroid Build Coastguard Worker UINT_64 fmaskBytes; ///< Size of fmask in bytes 1332*61046927SAndroid Build Coastguard Worker UINT_32 baseAlign; ///< Base address alignment 1333*61046927SAndroid Build Coastguard Worker UINT_32 pitchAlign; ///< Pitch alignment 1334*61046927SAndroid Build Coastguard Worker UINT_32 heightAlign; ///< Height alignment 1335*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel of FMASK is: number of bit planes 1336*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples, used for dump, export this since input 1337*61046927SAndroid Build Coastguard Worker /// may be changed in 9xx and above 1338*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 1339*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile parameters used. Fmask can have different 1340*61046927SAndroid Build Coastguard Worker /// bank_height from color buffer 1341*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 1342*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 1343*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 1344*61046927SAndroid Build Coastguard Worker UINT_64 sliceSize; ///< Size of slice in bytes 1345*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_FMASK_INFO_OUTPUT; 1346*61046927SAndroid Build Coastguard Worker 1347*61046927SAndroid Build Coastguard Worker /** 1348*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1349*61046927SAndroid Build Coastguard Worker * AddrComputeFmaskInfo 1350*61046927SAndroid Build Coastguard Worker * 1351*61046927SAndroid Build Coastguard Worker * @brief 1352*61046927SAndroid Build Coastguard Worker * Compute Fmask pitch/height/depth/alignments and size in bytes 1353*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1354*61046927SAndroid Build Coastguard Worker */ 1355*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeFmaskInfo( 1356*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1357*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_FMASK_INFO_INPUT* pIn, 1358*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_FMASK_INFO_OUTPUT* pOut); 1359*61046927SAndroid Build Coastguard Worker 1360*61046927SAndroid Build Coastguard Worker 1361*61046927SAndroid Build Coastguard Worker 1362*61046927SAndroid Build Coastguard Worker /** 1363*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1364*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_FMASK_ADDRFROMCOORD_INPUT 1365*61046927SAndroid Build Coastguard Worker * 1366*61046927SAndroid Build Coastguard Worker * @brief 1367*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputeFmaskAddrFromCoord 1368*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1369*61046927SAndroid Build Coastguard Worker */ 1370*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_FMASK_ADDRFROMCOORD_INPUT 1371*61046927SAndroid Build Coastguard Worker { 1372*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1373*61046927SAndroid Build Coastguard Worker 1374*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 1375*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 1376*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 1377*61046927SAndroid Build Coastguard Worker UINT_32 plane; ///< Plane number 1378*61046927SAndroid Build Coastguard Worker UINT_32 sample; ///< Sample index (fragment index for EQAA) 1379*61046927SAndroid Build Coastguard Worker 1380*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Surface pitch, in pixels 1381*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Surface height, in pixels 1382*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 1383*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 1384*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 1385*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 1386*61046927SAndroid Build Coastguard Worker 1387*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile mode 1388*61046927SAndroid Build Coastguard Worker union 1389*61046927SAndroid Build Coastguard Worker { 1390*61046927SAndroid Build Coastguard Worker struct 1391*61046927SAndroid Build Coastguard Worker { 1392*61046927SAndroid Build Coastguard Worker UINT_32 bankSwizzle; ///< Bank swizzle 1393*61046927SAndroid Build Coastguard Worker UINT_32 pipeSwizzle; ///< Pipe swizzle 1394*61046927SAndroid Build Coastguard Worker }; 1395*61046927SAndroid Build Coastguard Worker UINT_32 tileSwizzle; ///< Combined swizzle, if useCombinedSwizzle is TRUE 1396*61046927SAndroid Build Coastguard Worker }; 1397*61046927SAndroid Build Coastguard Worker 1398*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 1399*61046927SAndroid Build Coastguard Worker struct 1400*61046927SAndroid Build Coastguard Worker { 1401*61046927SAndroid Build Coastguard Worker UINT_32 resolved: 1; ///< TRUE if this is a resolved fmask, used by H/W clients 1402*61046927SAndroid Build Coastguard Worker UINT_32 ignoreSE: 1; ///< TRUE if shader engines are ignored. 1403*61046927SAndroid Build Coastguard Worker UINT_32 reserved: 30; ///< Reserved for future use. 1404*61046927SAndroid Build Coastguard Worker }; 1405*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< 2D tiling parameters. Client must provide all data 1406*61046927SAndroid Build Coastguard Worker 1407*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_FMASK_ADDRFROMCOORD_INPUT; 1408*61046927SAndroid Build Coastguard Worker 1409*61046927SAndroid Build Coastguard Worker /** 1410*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1411*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT 1412*61046927SAndroid Build Coastguard Worker * 1413*61046927SAndroid Build Coastguard Worker * @brief 1414*61046927SAndroid Build Coastguard Worker * Output structure for AddrComputeFmaskAddrFromCoord 1415*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1416*61046927SAndroid Build Coastguard Worker */ 1417*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT 1418*61046927SAndroid Build Coastguard Worker { 1419*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1420*61046927SAndroid Build Coastguard Worker 1421*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Fmask address 1422*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within fmaskAddr, 0-7. 1423*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT; 1424*61046927SAndroid Build Coastguard Worker 1425*61046927SAndroid Build Coastguard Worker /** 1426*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1427*61046927SAndroid Build Coastguard Worker * AddrComputeFmaskAddrFromCoord 1428*61046927SAndroid Build Coastguard Worker * 1429*61046927SAndroid Build Coastguard Worker * @brief 1430*61046927SAndroid Build Coastguard Worker * Compute Fmask address according to coordinates (x,y,slice,sample,plane) 1431*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1432*61046927SAndroid Build Coastguard Worker */ 1433*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeFmaskAddrFromCoord( 1434*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1435*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_FMASK_ADDRFROMCOORD_INPUT* pIn, 1436*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT* pOut); 1437*61046927SAndroid Build Coastguard Worker 1438*61046927SAndroid Build Coastguard Worker 1439*61046927SAndroid Build Coastguard Worker 1440*61046927SAndroid Build Coastguard Worker /** 1441*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1442*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_FMASK_COORDFROMADDR_INPUT 1443*61046927SAndroid Build Coastguard Worker * 1444*61046927SAndroid Build Coastguard Worker * @brief 1445*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputeFmaskCoordFromAddr 1446*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1447*61046927SAndroid Build Coastguard Worker */ 1448*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_FMASK_COORDFROMADDR_INPUT 1449*61046927SAndroid Build Coastguard Worker { 1450*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1451*61046927SAndroid Build Coastguard Worker 1452*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Address 1453*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within addr, 0-7. 1454*61046927SAndroid Build Coastguard Worker 1455*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch, in pixels 1456*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height in pixels 1457*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 1458*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments 1459*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile mode 1460*61046927SAndroid Build Coastguard Worker union 1461*61046927SAndroid Build Coastguard Worker { 1462*61046927SAndroid Build Coastguard Worker struct 1463*61046927SAndroid Build Coastguard Worker { 1464*61046927SAndroid Build Coastguard Worker UINT_32 bankSwizzle; ///< Bank swizzle 1465*61046927SAndroid Build Coastguard Worker UINT_32 pipeSwizzle; ///< Pipe swizzle 1466*61046927SAndroid Build Coastguard Worker }; 1467*61046927SAndroid Build Coastguard Worker UINT_32 tileSwizzle; ///< Combined swizzle, if useCombinedSwizzle is TRUE 1468*61046927SAndroid Build Coastguard Worker }; 1469*61046927SAndroid Build Coastguard Worker 1470*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 1471*61046927SAndroid Build Coastguard Worker struct 1472*61046927SAndroid Build Coastguard Worker { 1473*61046927SAndroid Build Coastguard Worker UINT_32 resolved: 1; ///< TRUE if this is a resolved fmask, used by HW components 1474*61046927SAndroid Build Coastguard Worker UINT_32 ignoreSE: 1; ///< TRUE if shader engines are ignored. 1475*61046927SAndroid Build Coastguard Worker UINT_32 reserved: 30; ///< Reserved for future use. 1476*61046927SAndroid Build Coastguard Worker }; 1477*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< 2D tile parameters. Client must provide all data 1478*61046927SAndroid Build Coastguard Worker 1479*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_FMASK_COORDFROMADDR_INPUT; 1480*61046927SAndroid Build Coastguard Worker 1481*61046927SAndroid Build Coastguard Worker /** 1482*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1483*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_FMASK_COORDFROMADDR_OUTPUT 1484*61046927SAndroid Build Coastguard Worker * 1485*61046927SAndroid Build Coastguard Worker * @brief 1486*61046927SAndroid Build Coastguard Worker * Output structure for AddrComputeFmaskCoordFromAddr 1487*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1488*61046927SAndroid Build Coastguard Worker */ 1489*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_FMASK_COORDFROMADDR_OUTPUT 1490*61046927SAndroid Build Coastguard Worker { 1491*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1492*61046927SAndroid Build Coastguard Worker 1493*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 1494*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 1495*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 1496*61046927SAndroid Build Coastguard Worker UINT_32 plane; ///< Plane number 1497*61046927SAndroid Build Coastguard Worker UINT_32 sample; ///< Sample index (fragment index for EQAA) 1498*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_FMASK_COORDFROMADDR_OUTPUT; 1499*61046927SAndroid Build Coastguard Worker 1500*61046927SAndroid Build Coastguard Worker /** 1501*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1502*61046927SAndroid Build Coastguard Worker * AddrComputeFmaskCoordFromAddr 1503*61046927SAndroid Build Coastguard Worker * 1504*61046927SAndroid Build Coastguard Worker * @brief 1505*61046927SAndroid Build Coastguard Worker * Compute FMASK coordinate from an given address 1506*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1507*61046927SAndroid Build Coastguard Worker */ 1508*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeFmaskCoordFromAddr( 1509*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1510*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_FMASK_COORDFROMADDR_INPUT* pIn, 1511*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_FMASK_COORDFROMADDR_OUTPUT* pOut); 1512*61046927SAndroid Build Coastguard Worker 1513*61046927SAndroid Build Coastguard Worker 1514*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 1515*61046927SAndroid Build Coastguard Worker // Element/utility functions 1516*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 1517*61046927SAndroid Build Coastguard Worker 1518*61046927SAndroid Build Coastguard Worker /** 1519*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1520*61046927SAndroid Build Coastguard Worker * AddrGetVersion 1521*61046927SAndroid Build Coastguard Worker * 1522*61046927SAndroid Build Coastguard Worker * @brief 1523*61046927SAndroid Build Coastguard Worker * Get AddrLib version number 1524*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1525*61046927SAndroid Build Coastguard Worker */ 1526*61046927SAndroid Build Coastguard Worker UINT_32 ADDR_API AddrGetVersion(ADDR_HANDLE hLib); 1527*61046927SAndroid Build Coastguard Worker 1528*61046927SAndroid Build Coastguard Worker /** 1529*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1530*61046927SAndroid Build Coastguard Worker * AddrUseTileIndex 1531*61046927SAndroid Build Coastguard Worker * 1532*61046927SAndroid Build Coastguard Worker * @brief 1533*61046927SAndroid Build Coastguard Worker * Return TRUE if tileIndex is enabled in this address library 1534*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1535*61046927SAndroid Build Coastguard Worker */ 1536*61046927SAndroid Build Coastguard Worker BOOL_32 ADDR_API AddrUseTileIndex(ADDR_HANDLE hLib); 1537*61046927SAndroid Build Coastguard Worker 1538*61046927SAndroid Build Coastguard Worker /** 1539*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1540*61046927SAndroid Build Coastguard Worker * AddrUseCombinedSwizzle 1541*61046927SAndroid Build Coastguard Worker * 1542*61046927SAndroid Build Coastguard Worker * @brief 1543*61046927SAndroid Build Coastguard Worker * Return TRUE if combined swizzle is enabled in this address library 1544*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1545*61046927SAndroid Build Coastguard Worker */ 1546*61046927SAndroid Build Coastguard Worker BOOL_32 ADDR_API AddrUseCombinedSwizzle(ADDR_HANDLE hLib); 1547*61046927SAndroid Build Coastguard Worker 1548*61046927SAndroid Build Coastguard Worker /** 1549*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1550*61046927SAndroid Build Coastguard Worker * ADDR_EXTRACT_BANKPIPE_SWIZZLE_INPUT 1551*61046927SAndroid Build Coastguard Worker * 1552*61046927SAndroid Build Coastguard Worker * @brief 1553*61046927SAndroid Build Coastguard Worker * Input structure of AddrExtractBankPipeSwizzle 1554*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1555*61046927SAndroid Build Coastguard Worker */ 1556*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_EXTRACT_BANKPIPE_SWIZZLE_INPUT 1557*61046927SAndroid Build Coastguard Worker { 1558*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1559*61046927SAndroid Build Coastguard Worker 1560*61046927SAndroid Build Coastguard Worker UINT_32 base256b; ///< Base256b value 1561*61046927SAndroid Build Coastguard Worker 1562*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 1563*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< 2D tile parameters. Client must provide all data 1564*61046927SAndroid Build Coastguard Worker 1565*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 1566*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 1567*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 1568*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 1569*61046927SAndroid Build Coastguard Worker } ADDR_EXTRACT_BANKPIPE_SWIZZLE_INPUT; 1570*61046927SAndroid Build Coastguard Worker 1571*61046927SAndroid Build Coastguard Worker /** 1572*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1573*61046927SAndroid Build Coastguard Worker * ADDR_EXTRACT_BANKPIPE_SWIZZLE_OUTPUT 1574*61046927SAndroid Build Coastguard Worker * 1575*61046927SAndroid Build Coastguard Worker * @brief 1576*61046927SAndroid Build Coastguard Worker * Output structure of AddrExtractBankPipeSwizzle 1577*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1578*61046927SAndroid Build Coastguard Worker */ 1579*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_EXTRACT_BANKPIPE_SWIZZLE_OUTPUT 1580*61046927SAndroid Build Coastguard Worker { 1581*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1582*61046927SAndroid Build Coastguard Worker 1583*61046927SAndroid Build Coastguard Worker UINT_32 bankSwizzle; ///< Bank swizzle 1584*61046927SAndroid Build Coastguard Worker UINT_32 pipeSwizzle; ///< Pipe swizzle 1585*61046927SAndroid Build Coastguard Worker } ADDR_EXTRACT_BANKPIPE_SWIZZLE_OUTPUT; 1586*61046927SAndroid Build Coastguard Worker 1587*61046927SAndroid Build Coastguard Worker /** 1588*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1589*61046927SAndroid Build Coastguard Worker * AddrExtractBankPipeSwizzle 1590*61046927SAndroid Build Coastguard Worker * 1591*61046927SAndroid Build Coastguard Worker * @brief 1592*61046927SAndroid Build Coastguard Worker * Extract Bank and Pipe swizzle from base256b 1593*61046927SAndroid Build Coastguard Worker * @return 1594*61046927SAndroid Build Coastguard Worker * ADDR_OK if no error 1595*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1596*61046927SAndroid Build Coastguard Worker */ 1597*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrExtractBankPipeSwizzle( 1598*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1599*61046927SAndroid Build Coastguard Worker const ADDR_EXTRACT_BANKPIPE_SWIZZLE_INPUT* pIn, 1600*61046927SAndroid Build Coastguard Worker ADDR_EXTRACT_BANKPIPE_SWIZZLE_OUTPUT* pOut); 1601*61046927SAndroid Build Coastguard Worker 1602*61046927SAndroid Build Coastguard Worker 1603*61046927SAndroid Build Coastguard Worker /** 1604*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1605*61046927SAndroid Build Coastguard Worker * ADDR_COMBINE_BANKPIPE_SWIZZLE_INPUT 1606*61046927SAndroid Build Coastguard Worker * 1607*61046927SAndroid Build Coastguard Worker * @brief 1608*61046927SAndroid Build Coastguard Worker * Input structure of AddrCombineBankPipeSwizzle 1609*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1610*61046927SAndroid Build Coastguard Worker */ 1611*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMBINE_BANKPIPE_SWIZZLE_INPUT 1612*61046927SAndroid Build Coastguard Worker { 1613*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1614*61046927SAndroid Build Coastguard Worker 1615*61046927SAndroid Build Coastguard Worker UINT_32 bankSwizzle; ///< Bank swizzle 1616*61046927SAndroid Build Coastguard Worker UINT_32 pipeSwizzle; ///< Pipe swizzle 1617*61046927SAndroid Build Coastguard Worker UINT_64 baseAddr; ///< Base address (leave it zero for driver clients) 1618*61046927SAndroid Build Coastguard Worker 1619*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 1620*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< 2D tile parameters. Client must provide all data 1621*61046927SAndroid Build Coastguard Worker 1622*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 1623*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 1624*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 1625*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 1626*61046927SAndroid Build Coastguard Worker } ADDR_COMBINE_BANKPIPE_SWIZZLE_INPUT; 1627*61046927SAndroid Build Coastguard Worker 1628*61046927SAndroid Build Coastguard Worker /** 1629*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1630*61046927SAndroid Build Coastguard Worker * ADDR_COMBINE_BANKPIPE_SWIZZLE_OUTPUT 1631*61046927SAndroid Build Coastguard Worker * 1632*61046927SAndroid Build Coastguard Worker * @brief 1633*61046927SAndroid Build Coastguard Worker * Output structure of AddrCombineBankPipeSwizzle 1634*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1635*61046927SAndroid Build Coastguard Worker */ 1636*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMBINE_BANKPIPE_SWIZZLE_OUTPUT 1637*61046927SAndroid Build Coastguard Worker { 1638*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1639*61046927SAndroid Build Coastguard Worker 1640*61046927SAndroid Build Coastguard Worker UINT_32 tileSwizzle; ///< Combined swizzle 1641*61046927SAndroid Build Coastguard Worker } ADDR_COMBINE_BANKPIPE_SWIZZLE_OUTPUT; 1642*61046927SAndroid Build Coastguard Worker 1643*61046927SAndroid Build Coastguard Worker /** 1644*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1645*61046927SAndroid Build Coastguard Worker * AddrCombineBankPipeSwizzle 1646*61046927SAndroid Build Coastguard Worker * 1647*61046927SAndroid Build Coastguard Worker * @brief 1648*61046927SAndroid Build Coastguard Worker * Combine Bank and Pipe swizzle 1649*61046927SAndroid Build Coastguard Worker * @return 1650*61046927SAndroid Build Coastguard Worker * ADDR_OK if no error 1651*61046927SAndroid Build Coastguard Worker * @note 1652*61046927SAndroid Build Coastguard Worker * baseAddr here is full MCAddress instead of base256b 1653*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1654*61046927SAndroid Build Coastguard Worker */ 1655*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrCombineBankPipeSwizzle( 1656*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1657*61046927SAndroid Build Coastguard Worker const ADDR_COMBINE_BANKPIPE_SWIZZLE_INPUT* pIn, 1658*61046927SAndroid Build Coastguard Worker ADDR_COMBINE_BANKPIPE_SWIZZLE_OUTPUT* pOut); 1659*61046927SAndroid Build Coastguard Worker 1660*61046927SAndroid Build Coastguard Worker 1661*61046927SAndroid Build Coastguard Worker 1662*61046927SAndroid Build Coastguard Worker /** 1663*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1664*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_SLICESWIZZLE_INPUT 1665*61046927SAndroid Build Coastguard Worker * 1666*61046927SAndroid Build Coastguard Worker * @brief 1667*61046927SAndroid Build Coastguard Worker * Input structure of AddrComputeSliceSwizzle 1668*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1669*61046927SAndroid Build Coastguard Worker */ 1670*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_SLICESWIZZLE_INPUT 1671*61046927SAndroid Build Coastguard Worker { 1672*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1673*61046927SAndroid Build Coastguard Worker 1674*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile Mode 1675*61046927SAndroid Build Coastguard Worker UINT_32 baseSwizzle; ///< Base tile swizzle 1676*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 1677*61046927SAndroid Build Coastguard Worker UINT_64 baseAddr; ///< Base address, driver should leave it 0 in most cases 1678*61046927SAndroid Build Coastguard Worker 1679*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 1680*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< 2D tile parameters. Actually banks needed here! 1681*61046927SAndroid Build Coastguard Worker 1682*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 1683*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 1684*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 1685*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 1686*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_SLICESWIZZLE_INPUT; 1687*61046927SAndroid Build Coastguard Worker 1688*61046927SAndroid Build Coastguard Worker 1689*61046927SAndroid Build Coastguard Worker 1690*61046927SAndroid Build Coastguard Worker /** 1691*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1692*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_SLICESWIZZLE_OUTPUT 1693*61046927SAndroid Build Coastguard Worker * 1694*61046927SAndroid Build Coastguard Worker * @brief 1695*61046927SAndroid Build Coastguard Worker * Output structure of AddrComputeSliceSwizzle 1696*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1697*61046927SAndroid Build Coastguard Worker */ 1698*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_SLICESWIZZLE_OUTPUT 1699*61046927SAndroid Build Coastguard Worker { 1700*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1701*61046927SAndroid Build Coastguard Worker 1702*61046927SAndroid Build Coastguard Worker UINT_32 tileSwizzle; ///< Recalculated tileSwizzle value 1703*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_SLICESWIZZLE_OUTPUT; 1704*61046927SAndroid Build Coastguard Worker 1705*61046927SAndroid Build Coastguard Worker /** 1706*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1707*61046927SAndroid Build Coastguard Worker * AddrComputeSliceSwizzle 1708*61046927SAndroid Build Coastguard Worker * 1709*61046927SAndroid Build Coastguard Worker * @brief 1710*61046927SAndroid Build Coastguard Worker * Extract Bank and Pipe swizzle from base256b 1711*61046927SAndroid Build Coastguard Worker * @return 1712*61046927SAndroid Build Coastguard Worker * ADDR_OK if no error 1713*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1714*61046927SAndroid Build Coastguard Worker */ 1715*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeSliceSwizzle( 1716*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1717*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_SLICESWIZZLE_INPUT* pIn, 1718*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_SLICESWIZZLE_OUTPUT* pOut); 1719*61046927SAndroid Build Coastguard Worker 1720*61046927SAndroid Build Coastguard Worker 1721*61046927SAndroid Build Coastguard Worker /** 1722*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1723*61046927SAndroid Build Coastguard Worker * AddrSwizzleGenOption 1724*61046927SAndroid Build Coastguard Worker * 1725*61046927SAndroid Build Coastguard Worker * @brief 1726*61046927SAndroid Build Coastguard Worker * Which swizzle generating options: legacy or linear 1727*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1728*61046927SAndroid Build Coastguard Worker */ 1729*61046927SAndroid Build Coastguard Worker typedef enum _AddrSwizzleGenOption 1730*61046927SAndroid Build Coastguard Worker { 1731*61046927SAndroid Build Coastguard Worker ADDR_SWIZZLE_GEN_DEFAULT = 0, ///< As is in client driver implemention for swizzle 1732*61046927SAndroid Build Coastguard Worker ADDR_SWIZZLE_GEN_LINEAR = 1, ///< Using a linear increment of swizzle 1733*61046927SAndroid Build Coastguard Worker } AddrSwizzleGenOption; 1734*61046927SAndroid Build Coastguard Worker 1735*61046927SAndroid Build Coastguard Worker /** 1736*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1737*61046927SAndroid Build Coastguard Worker * AddrBlockType 1738*61046927SAndroid Build Coastguard Worker * 1739*61046927SAndroid Build Coastguard Worker * @brief 1740*61046927SAndroid Build Coastguard Worker * Macro define resource block type 1741*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1742*61046927SAndroid Build Coastguard Worker */ 1743*61046927SAndroid Build Coastguard Worker typedef enum 1744*61046927SAndroid Build Coastguard Worker { 1745*61046927SAndroid Build Coastguard Worker AddrBlockLinear = 0, // Resource uses linear swizzle mode 1746*61046927SAndroid Build Coastguard Worker AddrBlockMicro = 1, // Resource uses 256B block 1747*61046927SAndroid Build Coastguard Worker AddrBlockThin4KB = 2, // Resource uses thin 4KB block 1748*61046927SAndroid Build Coastguard Worker AddrBlockThick4KB = 3, // Resource uses thick 4KB block 1749*61046927SAndroid Build Coastguard Worker AddrBlockThin64KB = 4, // Resource uses thin 64KB block 1750*61046927SAndroid Build Coastguard Worker AddrBlockThick64KB = 5, // Resource uses thick 64KB block 1751*61046927SAndroid Build Coastguard Worker AddrBlockThinVar = 6, // Resource uses thin var block 1752*61046927SAndroid Build Coastguard Worker AddrBlockThickVar = 7, // Resource uses thick var block 1753*61046927SAndroid Build Coastguard Worker AddrBlockMaxTiledType, 1754*61046927SAndroid Build Coastguard Worker 1755*61046927SAndroid Build Coastguard Worker AddrBlockThin256KB = AddrBlockThinVar, 1756*61046927SAndroid Build Coastguard Worker AddrBlockThick256KB = AddrBlockThickVar, 1757*61046927SAndroid Build Coastguard Worker } AddrBlockType; 1758*61046927SAndroid Build Coastguard Worker 1759*61046927SAndroid Build Coastguard Worker /** 1760*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1761*61046927SAndroid Build Coastguard Worker * AddrSwizzleOption 1762*61046927SAndroid Build Coastguard Worker * 1763*61046927SAndroid Build Coastguard Worker * @brief 1764*61046927SAndroid Build Coastguard Worker * Controls how swizzle is generated 1765*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1766*61046927SAndroid Build Coastguard Worker */ 1767*61046927SAndroid Build Coastguard Worker typedef union _ADDR_SWIZZLE_OPTION 1768*61046927SAndroid Build Coastguard Worker { 1769*61046927SAndroid Build Coastguard Worker struct 1770*61046927SAndroid Build Coastguard Worker { 1771*61046927SAndroid Build Coastguard Worker UINT_32 genOption : 1; ///< The way swizzle is generated, see AddrSwizzleGenOption 1772*61046927SAndroid Build Coastguard Worker UINT_32 reduceBankBit : 1; ///< TRUE if we need reduce swizzle bits 1773*61046927SAndroid Build Coastguard Worker UINT_32 reserved :30; ///< Reserved bits 1774*61046927SAndroid Build Coastguard Worker }; 1775*61046927SAndroid Build Coastguard Worker 1776*61046927SAndroid Build Coastguard Worker UINT_32 value; 1777*61046927SAndroid Build Coastguard Worker 1778*61046927SAndroid Build Coastguard Worker } ADDR_SWIZZLE_OPTION; 1779*61046927SAndroid Build Coastguard Worker 1780*61046927SAndroid Build Coastguard Worker /** 1781*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1782*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_BASE_SWIZZLE_INPUT 1783*61046927SAndroid Build Coastguard Worker * 1784*61046927SAndroid Build Coastguard Worker * @brief 1785*61046927SAndroid Build Coastguard Worker * Input structure of AddrComputeBaseSwizzle 1786*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1787*61046927SAndroid Build Coastguard Worker */ 1788*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_BASE_SWIZZLE_INPUT 1789*61046927SAndroid Build Coastguard Worker { 1790*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1791*61046927SAndroid Build Coastguard Worker 1792*61046927SAndroid Build Coastguard Worker ADDR_SWIZZLE_OPTION option; ///< Swizzle option 1793*61046927SAndroid Build Coastguard Worker UINT_32 surfIndex; ///< Index of this surface type 1794*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile Mode 1795*61046927SAndroid Build Coastguard Worker 1796*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 1797*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< 2D tile parameters. Actually banks needed here! 1798*61046927SAndroid Build Coastguard Worker 1799*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 1800*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 1801*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 1802*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 1803*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_BASE_SWIZZLE_INPUT; 1804*61046927SAndroid Build Coastguard Worker 1805*61046927SAndroid Build Coastguard Worker /** 1806*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1807*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_BASE_SWIZZLE_OUTPUT 1808*61046927SAndroid Build Coastguard Worker * 1809*61046927SAndroid Build Coastguard Worker * @brief 1810*61046927SAndroid Build Coastguard Worker * Output structure of AddrComputeBaseSwizzle 1811*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1812*61046927SAndroid Build Coastguard Worker */ 1813*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_BASE_SWIZZLE_OUTPUT 1814*61046927SAndroid Build Coastguard Worker { 1815*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1816*61046927SAndroid Build Coastguard Worker 1817*61046927SAndroid Build Coastguard Worker UINT_32 tileSwizzle; ///< Combined swizzle 1818*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_BASE_SWIZZLE_OUTPUT; 1819*61046927SAndroid Build Coastguard Worker 1820*61046927SAndroid Build Coastguard Worker /** 1821*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1822*61046927SAndroid Build Coastguard Worker * AddrComputeBaseSwizzle 1823*61046927SAndroid Build Coastguard Worker * 1824*61046927SAndroid Build Coastguard Worker * @brief 1825*61046927SAndroid Build Coastguard Worker * Return a Combined Bank and Pipe swizzle base on surface based on surface type/index 1826*61046927SAndroid Build Coastguard Worker * @return 1827*61046927SAndroid Build Coastguard Worker * ADDR_OK if no error 1828*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1829*61046927SAndroid Build Coastguard Worker */ 1830*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeBaseSwizzle( 1831*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1832*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_BASE_SWIZZLE_INPUT* pIn, 1833*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_BASE_SWIZZLE_OUTPUT* pOut); 1834*61046927SAndroid Build Coastguard Worker 1835*61046927SAndroid Build Coastguard Worker 1836*61046927SAndroid Build Coastguard Worker /** 1837*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1838*61046927SAndroid Build Coastguard Worker * ELEM_GETEXPORTNORM_INPUT 1839*61046927SAndroid Build Coastguard Worker * 1840*61046927SAndroid Build Coastguard Worker * @brief 1841*61046927SAndroid Build Coastguard Worker * Input structure for ElemGetExportNorm 1842*61046927SAndroid Build Coastguard Worker * 1843*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1844*61046927SAndroid Build Coastguard Worker */ 1845*61046927SAndroid Build Coastguard Worker typedef struct _ELEM_GETEXPORTNORM_INPUT 1846*61046927SAndroid Build Coastguard Worker { 1847*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1848*61046927SAndroid Build Coastguard Worker 1849*61046927SAndroid Build Coastguard Worker AddrColorFormat format; ///< Color buffer format; Client should use ColorFormat 1850*61046927SAndroid Build Coastguard Worker AddrSurfaceNumber num; ///< Surface number type; Client should use NumberType 1851*61046927SAndroid Build Coastguard Worker AddrSurfaceSwap swap; ///< Surface swap byte swap; Client should use SurfaceSwap 1852*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 1853*61046927SAndroid Build Coastguard Worker } ELEM_GETEXPORTNORM_INPUT; 1854*61046927SAndroid Build Coastguard Worker 1855*61046927SAndroid Build Coastguard Worker /** 1856*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1857*61046927SAndroid Build Coastguard Worker * ElemGetExportNorm 1858*61046927SAndroid Build Coastguard Worker * 1859*61046927SAndroid Build Coastguard Worker * @brief 1860*61046927SAndroid Build Coastguard Worker * Helper function to check one format can be EXPORT_NUM, which is a register 1861*61046927SAndroid Build Coastguard Worker * CB_COLOR_INFO.SURFACE_FORMAT. FP16 can be reported as EXPORT_NORM for rv770 in r600 1862*61046927SAndroid Build Coastguard Worker * family 1863*61046927SAndroid Build Coastguard Worker * @note 1864*61046927SAndroid Build Coastguard Worker * The implementation is only for r600. 1865*61046927SAndroid Build Coastguard Worker * 00 - EXPORT_FULL: PS exports are 4 pixels with 4 components with 32-bits-per-component. (two 1866*61046927SAndroid Build Coastguard Worker * clocks per export) 1867*61046927SAndroid Build Coastguard Worker * 01 - EXPORT_NORM: PS exports are 4 pixels with 4 components with 16-bits-per-component. (one 1868*61046927SAndroid Build Coastguard Worker * clock per export) 1869*61046927SAndroid Build Coastguard Worker * 1870*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1871*61046927SAndroid Build Coastguard Worker */ 1872*61046927SAndroid Build Coastguard Worker BOOL_32 ADDR_API ElemGetExportNorm( 1873*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1874*61046927SAndroid Build Coastguard Worker const ELEM_GETEXPORTNORM_INPUT* pIn); 1875*61046927SAndroid Build Coastguard Worker 1876*61046927SAndroid Build Coastguard Worker 1877*61046927SAndroid Build Coastguard Worker 1878*61046927SAndroid Build Coastguard Worker /** 1879*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1880*61046927SAndroid Build Coastguard Worker * ELEM_FLT32TODEPTHPIXEL_INPUT 1881*61046927SAndroid Build Coastguard Worker * 1882*61046927SAndroid Build Coastguard Worker * @brief 1883*61046927SAndroid Build Coastguard Worker * Input structure for addrFlt32ToDepthPixel 1884*61046927SAndroid Build Coastguard Worker * 1885*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1886*61046927SAndroid Build Coastguard Worker */ 1887*61046927SAndroid Build Coastguard Worker typedef struct _ELEM_FLT32TODEPTHPIXEL_INPUT 1888*61046927SAndroid Build Coastguard Worker { 1889*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1890*61046927SAndroid Build Coastguard Worker 1891*61046927SAndroid Build Coastguard Worker AddrDepthFormat format; ///< Depth buffer format 1892*61046927SAndroid Build Coastguard Worker ADDR_FLT_32 comps[2]; ///< Component values (Z/stencil) 1893*61046927SAndroid Build Coastguard Worker } ELEM_FLT32TODEPTHPIXEL_INPUT; 1894*61046927SAndroid Build Coastguard Worker 1895*61046927SAndroid Build Coastguard Worker /** 1896*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1897*61046927SAndroid Build Coastguard Worker * ELEM_FLT32TODEPTHPIXEL_INPUT 1898*61046927SAndroid Build Coastguard Worker * 1899*61046927SAndroid Build Coastguard Worker * @brief 1900*61046927SAndroid Build Coastguard Worker * Output structure for ElemFlt32ToDepthPixel 1901*61046927SAndroid Build Coastguard Worker * 1902*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1903*61046927SAndroid Build Coastguard Worker */ 1904*61046927SAndroid Build Coastguard Worker typedef struct _ELEM_FLT32TODEPTHPIXEL_OUTPUT 1905*61046927SAndroid Build Coastguard Worker { 1906*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1907*61046927SAndroid Build Coastguard Worker 1908*61046927SAndroid Build Coastguard Worker UINT_8* pPixel; ///< Real depth value. Same data type as depth buffer. 1909*61046927SAndroid Build Coastguard Worker /// Client must provide enough storage for this type. 1910*61046927SAndroid Build Coastguard Worker UINT_32 depthBase; ///< Tile base in bits for depth bits 1911*61046927SAndroid Build Coastguard Worker UINT_32 stencilBase; ///< Tile base in bits for stencil bits 1912*61046927SAndroid Build Coastguard Worker UINT_32 depthBits; ///< Bits for depth 1913*61046927SAndroid Build Coastguard Worker UINT_32 stencilBits; ///< Bits for stencil 1914*61046927SAndroid Build Coastguard Worker } ELEM_FLT32TODEPTHPIXEL_OUTPUT; 1915*61046927SAndroid Build Coastguard Worker 1916*61046927SAndroid Build Coastguard Worker /** 1917*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1918*61046927SAndroid Build Coastguard Worker * ElemFlt32ToDepthPixel 1919*61046927SAndroid Build Coastguard Worker * 1920*61046927SAndroid Build Coastguard Worker * @brief 1921*61046927SAndroid Build Coastguard Worker * Convert a FLT_32 value to a depth/stencil pixel value 1922*61046927SAndroid Build Coastguard Worker * 1923*61046927SAndroid Build Coastguard Worker * @return 1924*61046927SAndroid Build Coastguard Worker * Return code 1925*61046927SAndroid Build Coastguard Worker * 1926*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1927*61046927SAndroid Build Coastguard Worker */ 1928*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API ElemFlt32ToDepthPixel( 1929*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1930*61046927SAndroid Build Coastguard Worker const ELEM_FLT32TODEPTHPIXEL_INPUT* pIn, 1931*61046927SAndroid Build Coastguard Worker ELEM_FLT32TODEPTHPIXEL_OUTPUT* pOut); 1932*61046927SAndroid Build Coastguard Worker 1933*61046927SAndroid Build Coastguard Worker 1934*61046927SAndroid Build Coastguard Worker 1935*61046927SAndroid Build Coastguard Worker /** 1936*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1937*61046927SAndroid Build Coastguard Worker * ELEM_FLT32TOCOLORPIXEL_INPUT 1938*61046927SAndroid Build Coastguard Worker * 1939*61046927SAndroid Build Coastguard Worker * @brief 1940*61046927SAndroid Build Coastguard Worker * Input structure for addrFlt32ToColorPixel 1941*61046927SAndroid Build Coastguard Worker * 1942*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1943*61046927SAndroid Build Coastguard Worker */ 1944*61046927SAndroid Build Coastguard Worker typedef struct _ELEM_FLT32TOCOLORPIXEL_INPUT 1945*61046927SAndroid Build Coastguard Worker { 1946*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1947*61046927SAndroid Build Coastguard Worker 1948*61046927SAndroid Build Coastguard Worker AddrColorFormat format; ///< Color buffer format 1949*61046927SAndroid Build Coastguard Worker AddrSurfaceNumber surfNum; ///< Surface number 1950*61046927SAndroid Build Coastguard Worker AddrSurfaceSwap surfSwap; ///< Surface swap 1951*61046927SAndroid Build Coastguard Worker ADDR_FLT_32 comps[4]; ///< Component values (r/g/b/a) 1952*61046927SAndroid Build Coastguard Worker } ELEM_FLT32TOCOLORPIXEL_INPUT; 1953*61046927SAndroid Build Coastguard Worker 1954*61046927SAndroid Build Coastguard Worker /** 1955*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1956*61046927SAndroid Build Coastguard Worker * ELEM_FLT32TOCOLORPIXEL_INPUT 1957*61046927SAndroid Build Coastguard Worker * 1958*61046927SAndroid Build Coastguard Worker * @brief 1959*61046927SAndroid Build Coastguard Worker * Output structure for ElemFlt32ToColorPixel 1960*61046927SAndroid Build Coastguard Worker * 1961*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1962*61046927SAndroid Build Coastguard Worker */ 1963*61046927SAndroid Build Coastguard Worker typedef struct _ELEM_FLT32TOCOLORPIXEL_OUTPUT 1964*61046927SAndroid Build Coastguard Worker { 1965*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 1966*61046927SAndroid Build Coastguard Worker 1967*61046927SAndroid Build Coastguard Worker UINT_8* pPixel; ///< Real color value. Same data type as color buffer. 1968*61046927SAndroid Build Coastguard Worker /// Client must provide enough storage for this type. 1969*61046927SAndroid Build Coastguard Worker } ELEM_FLT32TOCOLORPIXEL_OUTPUT; 1970*61046927SAndroid Build Coastguard Worker 1971*61046927SAndroid Build Coastguard Worker /** 1972*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1973*61046927SAndroid Build Coastguard Worker * ElemFlt32ToColorPixel 1974*61046927SAndroid Build Coastguard Worker * 1975*61046927SAndroid Build Coastguard Worker * @brief 1976*61046927SAndroid Build Coastguard Worker * Convert a FLT_32 value to a red/green/blue/alpha pixel value 1977*61046927SAndroid Build Coastguard Worker * 1978*61046927SAndroid Build Coastguard Worker * @return 1979*61046927SAndroid Build Coastguard Worker * Return code 1980*61046927SAndroid Build Coastguard Worker * 1981*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1982*61046927SAndroid Build Coastguard Worker */ 1983*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API ElemFlt32ToColorPixel( 1984*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 1985*61046927SAndroid Build Coastguard Worker const ELEM_FLT32TOCOLORPIXEL_INPUT* pIn, 1986*61046927SAndroid Build Coastguard Worker ELEM_FLT32TOCOLORPIXEL_OUTPUT* pOut); 1987*61046927SAndroid Build Coastguard Worker 1988*61046927SAndroid Build Coastguard Worker /** 1989*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1990*61046927SAndroid Build Coastguard Worker * ElemSize 1991*61046927SAndroid Build Coastguard Worker * 1992*61046927SAndroid Build Coastguard Worker * @brief 1993*61046927SAndroid Build Coastguard Worker * Get bits-per-element for specified format 1994*61046927SAndroid Build Coastguard Worker * 1995*61046927SAndroid Build Coastguard Worker * @return 1996*61046927SAndroid Build Coastguard Worker * Bits-per-element of specified format 1997*61046927SAndroid Build Coastguard Worker * 1998*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 1999*61046927SAndroid Build Coastguard Worker */ 2000*61046927SAndroid Build Coastguard Worker UINT_32 ADDR_API ElemSize( 2001*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2002*61046927SAndroid Build Coastguard Worker AddrFormat format); 2003*61046927SAndroid Build Coastguard Worker 2004*61046927SAndroid Build Coastguard Worker /** 2005*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2006*61046927SAndroid Build Coastguard Worker * ADDR_CONVERT_TILEINFOTOHW_INPUT 2007*61046927SAndroid Build Coastguard Worker * 2008*61046927SAndroid Build Coastguard Worker * @brief 2009*61046927SAndroid Build Coastguard Worker * Input structure for AddrConvertTileInfoToHW 2010*61046927SAndroid Build Coastguard Worker * @note 2011*61046927SAndroid Build Coastguard Worker * When reverse is TRUE, indices are igonred 2012*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2013*61046927SAndroid Build Coastguard Worker */ 2014*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_CONVERT_TILEINFOTOHW_INPUT 2015*61046927SAndroid Build Coastguard Worker { 2016*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2017*61046927SAndroid Build Coastguard Worker BOOL_32 reverse; ///< Convert control flag. 2018*61046927SAndroid Build Coastguard Worker /// FALSE: convert from real value to HW value; 2019*61046927SAndroid Build Coastguard Worker /// TRUE: convert from HW value to real value. 2020*61046927SAndroid Build Coastguard Worker 2021*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 2022*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile parameters with real value 2023*61046927SAndroid Build Coastguard Worker 2024*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index, MUST be -1 if you don't want to use it 2025*61046927SAndroid Build Coastguard Worker /// while the global useTileIndex is set to 1 2026*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 2027*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 2028*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel 2029*61046927SAndroid Build Coastguard Worker } ADDR_CONVERT_TILEINFOTOHW_INPUT; 2030*61046927SAndroid Build Coastguard Worker 2031*61046927SAndroid Build Coastguard Worker /** 2032*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2033*61046927SAndroid Build Coastguard Worker * ADDR_CONVERT_TILEINFOTOHW_OUTPUT 2034*61046927SAndroid Build Coastguard Worker * 2035*61046927SAndroid Build Coastguard Worker * @brief 2036*61046927SAndroid Build Coastguard Worker * Output structure for AddrConvertTileInfoToHW 2037*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2038*61046927SAndroid Build Coastguard Worker */ 2039*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_CONVERT_TILEINFOTOHW_OUTPUT 2040*61046927SAndroid Build Coastguard Worker { 2041*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2042*61046927SAndroid Build Coastguard Worker 2043*61046927SAndroid Build Coastguard Worker /// r800 and later HWL parameters 2044*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile parameters with hardware register value 2045*61046927SAndroid Build Coastguard Worker 2046*61046927SAndroid Build Coastguard Worker } ADDR_CONVERT_TILEINFOTOHW_OUTPUT; 2047*61046927SAndroid Build Coastguard Worker 2048*61046927SAndroid Build Coastguard Worker /** 2049*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2050*61046927SAndroid Build Coastguard Worker * AddrConvertTileInfoToHW 2051*61046927SAndroid Build Coastguard Worker * 2052*61046927SAndroid Build Coastguard Worker * @brief 2053*61046927SAndroid Build Coastguard Worker * Convert tile info from real value to hardware register value 2054*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2055*61046927SAndroid Build Coastguard Worker */ 2056*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrConvertTileInfoToHW( 2057*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2058*61046927SAndroid Build Coastguard Worker const ADDR_CONVERT_TILEINFOTOHW_INPUT* pIn, 2059*61046927SAndroid Build Coastguard Worker ADDR_CONVERT_TILEINFOTOHW_OUTPUT* pOut); 2060*61046927SAndroid Build Coastguard Worker 2061*61046927SAndroid Build Coastguard Worker 2062*61046927SAndroid Build Coastguard Worker 2063*61046927SAndroid Build Coastguard Worker /** 2064*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2065*61046927SAndroid Build Coastguard Worker * ADDR_CONVERT_TILEINDEX_INPUT 2066*61046927SAndroid Build Coastguard Worker * 2067*61046927SAndroid Build Coastguard Worker * @brief 2068*61046927SAndroid Build Coastguard Worker * Input structure for AddrConvertTileIndex 2069*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2070*61046927SAndroid Build Coastguard Worker */ 2071*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_CONVERT_TILEINDEX_INPUT 2072*61046927SAndroid Build Coastguard Worker { 2073*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2074*61046927SAndroid Build Coastguard Worker 2075*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index 2076*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 2077*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel 2078*61046927SAndroid Build Coastguard Worker BOOL_32 tileInfoHw; ///< Set to TRUE if client wants HW enum, otherwise actual 2079*61046927SAndroid Build Coastguard Worker } ADDR_CONVERT_TILEINDEX_INPUT; 2080*61046927SAndroid Build Coastguard Worker 2081*61046927SAndroid Build Coastguard Worker /** 2082*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2083*61046927SAndroid Build Coastguard Worker * ADDR_CONVERT_TILEINDEX_OUTPUT 2084*61046927SAndroid Build Coastguard Worker * 2085*61046927SAndroid Build Coastguard Worker * @brief 2086*61046927SAndroid Build Coastguard Worker * Output structure for AddrConvertTileIndex 2087*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2088*61046927SAndroid Build Coastguard Worker */ 2089*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_CONVERT_TILEINDEX_OUTPUT 2090*61046927SAndroid Build Coastguard Worker { 2091*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2092*61046927SAndroid Build Coastguard Worker 2093*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile mode 2094*61046927SAndroid Build Coastguard Worker AddrTileType tileType; ///< Tile type 2095*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Tile info 2096*61046927SAndroid Build Coastguard Worker 2097*61046927SAndroid Build Coastguard Worker } ADDR_CONVERT_TILEINDEX_OUTPUT; 2098*61046927SAndroid Build Coastguard Worker 2099*61046927SAndroid Build Coastguard Worker /** 2100*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2101*61046927SAndroid Build Coastguard Worker * AddrConvertTileIndex 2102*61046927SAndroid Build Coastguard Worker * 2103*61046927SAndroid Build Coastguard Worker * @brief 2104*61046927SAndroid Build Coastguard Worker * Convert tile index to tile mode/type/info 2105*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2106*61046927SAndroid Build Coastguard Worker */ 2107*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrConvertTileIndex( 2108*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2109*61046927SAndroid Build Coastguard Worker const ADDR_CONVERT_TILEINDEX_INPUT* pIn, 2110*61046927SAndroid Build Coastguard Worker ADDR_CONVERT_TILEINDEX_OUTPUT* pOut); 2111*61046927SAndroid Build Coastguard Worker 2112*61046927SAndroid Build Coastguard Worker /** 2113*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2114*61046927SAndroid Build Coastguard Worker * ADDR_GET_MACROMODEINDEX_INPUT 2115*61046927SAndroid Build Coastguard Worker * 2116*61046927SAndroid Build Coastguard Worker * @brief 2117*61046927SAndroid Build Coastguard Worker * Input structure for AddrGetMacroModeIndex 2118*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2119*61046927SAndroid Build Coastguard Worker */ 2120*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_GET_MACROMODEINDEX_INPUT 2121*61046927SAndroid Build Coastguard Worker { 2122*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2123*61046927SAndroid Build Coastguard Worker ADDR_SURFACE_FLAGS flags; ///< Surface flag 2124*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index 2125*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel 2126*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of color fragments 2127*61046927SAndroid Build Coastguard Worker } ADDR_GET_MACROMODEINDEX_INPUT; 2128*61046927SAndroid Build Coastguard Worker 2129*61046927SAndroid Build Coastguard Worker /** 2130*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2131*61046927SAndroid Build Coastguard Worker * ADDR_GET_MACROMODEINDEX_OUTPUT 2132*61046927SAndroid Build Coastguard Worker * 2133*61046927SAndroid Build Coastguard Worker * @brief 2134*61046927SAndroid Build Coastguard Worker * Output structure for AddrGetMacroModeIndex 2135*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2136*61046927SAndroid Build Coastguard Worker */ 2137*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_GET_MACROMODEINDEX_OUTPUT 2138*61046927SAndroid Build Coastguard Worker { 2139*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2140*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 2141*61046927SAndroid Build Coastguard Worker } ADDR_GET_MACROMODEINDEX_OUTPUT; 2142*61046927SAndroid Build Coastguard Worker 2143*61046927SAndroid Build Coastguard Worker /** 2144*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2145*61046927SAndroid Build Coastguard Worker * AddrGetMacroModeIndex 2146*61046927SAndroid Build Coastguard Worker * 2147*61046927SAndroid Build Coastguard Worker * @brief 2148*61046927SAndroid Build Coastguard Worker * Get macro mode index based on input parameters 2149*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2150*61046927SAndroid Build Coastguard Worker */ 2151*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrGetMacroModeIndex( 2152*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2153*61046927SAndroid Build Coastguard Worker const ADDR_GET_MACROMODEINDEX_INPUT* pIn, 2154*61046927SAndroid Build Coastguard Worker ADDR_GET_MACROMODEINDEX_OUTPUT* pOut); 2155*61046927SAndroid Build Coastguard Worker 2156*61046927SAndroid Build Coastguard Worker /** 2157*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2158*61046927SAndroid Build Coastguard Worker * ADDR_CONVERT_TILEINDEX1_INPUT 2159*61046927SAndroid Build Coastguard Worker * 2160*61046927SAndroid Build Coastguard Worker * @brief 2161*61046927SAndroid Build Coastguard Worker * Input structure for AddrConvertTileIndex1 (without macro mode index) 2162*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2163*61046927SAndroid Build Coastguard Worker */ 2164*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_CONVERT_TILEINDEX1_INPUT 2165*61046927SAndroid Build Coastguard Worker { 2166*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2167*61046927SAndroid Build Coastguard Worker 2168*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index 2169*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel 2170*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 2171*61046927SAndroid Build Coastguard Worker BOOL_32 tileInfoHw; ///< Set to TRUE if client wants HW enum, otherwise actual 2172*61046927SAndroid Build Coastguard Worker } ADDR_CONVERT_TILEINDEX1_INPUT; 2173*61046927SAndroid Build Coastguard Worker 2174*61046927SAndroid Build Coastguard Worker /** 2175*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2176*61046927SAndroid Build Coastguard Worker * AddrConvertTileIndex1 2177*61046927SAndroid Build Coastguard Worker * 2178*61046927SAndroid Build Coastguard Worker * @brief 2179*61046927SAndroid Build Coastguard Worker * Convert tile index to tile mode/type/info 2180*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2181*61046927SAndroid Build Coastguard Worker */ 2182*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrConvertTileIndex1( 2183*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2184*61046927SAndroid Build Coastguard Worker const ADDR_CONVERT_TILEINDEX1_INPUT* pIn, 2185*61046927SAndroid Build Coastguard Worker ADDR_CONVERT_TILEINDEX_OUTPUT* pOut); 2186*61046927SAndroid Build Coastguard Worker 2187*61046927SAndroid Build Coastguard Worker 2188*61046927SAndroid Build Coastguard Worker 2189*61046927SAndroid Build Coastguard Worker /** 2190*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2191*61046927SAndroid Build Coastguard Worker * ADDR_GET_TILEINDEX_INPUT 2192*61046927SAndroid Build Coastguard Worker * 2193*61046927SAndroid Build Coastguard Worker * @brief 2194*61046927SAndroid Build Coastguard Worker * Input structure for AddrGetTileIndex 2195*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2196*61046927SAndroid Build Coastguard Worker */ 2197*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_GET_TILEINDEX_INPUT 2198*61046927SAndroid Build Coastguard Worker { 2199*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2200*61046927SAndroid Build Coastguard Worker 2201*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile mode 2202*61046927SAndroid Build Coastguard Worker AddrTileType tileType; ///< Tile-type: disp/non-disp/... 2203*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO* pTileInfo; ///< Pointer to tile-info structure, can be NULL for linear/1D 2204*61046927SAndroid Build Coastguard Worker } ADDR_GET_TILEINDEX_INPUT; 2205*61046927SAndroid Build Coastguard Worker 2206*61046927SAndroid Build Coastguard Worker /** 2207*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2208*61046927SAndroid Build Coastguard Worker * ADDR_GET_TILEINDEX_OUTPUT 2209*61046927SAndroid Build Coastguard Worker * 2210*61046927SAndroid Build Coastguard Worker * @brief 2211*61046927SAndroid Build Coastguard Worker * Output structure for AddrGetTileIndex 2212*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2213*61046927SAndroid Build Coastguard Worker */ 2214*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_GET_TILEINDEX_OUTPUT 2215*61046927SAndroid Build Coastguard Worker { 2216*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2217*61046927SAndroid Build Coastguard Worker 2218*61046927SAndroid Build Coastguard Worker INT_32 index; ///< index in table 2219*61046927SAndroid Build Coastguard Worker } ADDR_GET_TILEINDEX_OUTPUT; 2220*61046927SAndroid Build Coastguard Worker 2221*61046927SAndroid Build Coastguard Worker /** 2222*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2223*61046927SAndroid Build Coastguard Worker * AddrGetTileIndex 2224*61046927SAndroid Build Coastguard Worker * 2225*61046927SAndroid Build Coastguard Worker * @brief 2226*61046927SAndroid Build Coastguard Worker * Get the tiling mode index in table 2227*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2228*61046927SAndroid Build Coastguard Worker */ 2229*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrGetTileIndex( 2230*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2231*61046927SAndroid Build Coastguard Worker const ADDR_GET_TILEINDEX_INPUT* pIn, 2232*61046927SAndroid Build Coastguard Worker ADDR_GET_TILEINDEX_OUTPUT* pOut); 2233*61046927SAndroid Build Coastguard Worker 2234*61046927SAndroid Build Coastguard Worker 2235*61046927SAndroid Build Coastguard Worker 2236*61046927SAndroid Build Coastguard Worker /** 2237*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2238*61046927SAndroid Build Coastguard Worker * ADDR_PRT_INFO_INPUT 2239*61046927SAndroid Build Coastguard Worker * 2240*61046927SAndroid Build Coastguard Worker * @brief 2241*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputePrtInfo 2242*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2243*61046927SAndroid Build Coastguard Worker */ 2244*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_PRT_INFO_INPUT 2245*61046927SAndroid Build Coastguard Worker { 2246*61046927SAndroid Build Coastguard Worker AddrFormat format; ///< Surface format 2247*61046927SAndroid Build Coastguard Worker UINT_32 baseMipWidth; ///< Base mipmap width 2248*61046927SAndroid Build Coastguard Worker UINT_32 baseMipHeight; ///< Base mipmap height 2249*61046927SAndroid Build Coastguard Worker UINT_32 baseMipDepth; ///< Base mipmap depth 2250*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, 2251*61046927SAndroid Build Coastguard Worker } ADDR_PRT_INFO_INPUT; 2252*61046927SAndroid Build Coastguard Worker 2253*61046927SAndroid Build Coastguard Worker /** 2254*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2255*61046927SAndroid Build Coastguard Worker * ADDR_PRT_INFO_OUTPUT 2256*61046927SAndroid Build Coastguard Worker * 2257*61046927SAndroid Build Coastguard Worker * @brief 2258*61046927SAndroid Build Coastguard Worker * Input structure for AddrComputePrtInfo 2259*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2260*61046927SAndroid Build Coastguard Worker */ 2261*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_PRT_INFO_OUTPUT 2262*61046927SAndroid Build Coastguard Worker { 2263*61046927SAndroid Build Coastguard Worker UINT_32 prtTileWidth; 2264*61046927SAndroid Build Coastguard Worker UINT_32 prtTileHeight; 2265*61046927SAndroid Build Coastguard Worker } ADDR_PRT_INFO_OUTPUT; 2266*61046927SAndroid Build Coastguard Worker 2267*61046927SAndroid Build Coastguard Worker /** 2268*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2269*61046927SAndroid Build Coastguard Worker * AddrComputePrtInfo 2270*61046927SAndroid Build Coastguard Worker * 2271*61046927SAndroid Build Coastguard Worker * @brief 2272*61046927SAndroid Build Coastguard Worker * Compute prt surface related information 2273*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2274*61046927SAndroid Build Coastguard Worker */ 2275*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputePrtInfo( 2276*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2277*61046927SAndroid Build Coastguard Worker const ADDR_PRT_INFO_INPUT* pIn, 2278*61046927SAndroid Build Coastguard Worker ADDR_PRT_INFO_OUTPUT* pOut); 2279*61046927SAndroid Build Coastguard Worker 2280*61046927SAndroid Build Coastguard Worker 2281*61046927SAndroid Build Coastguard Worker 2282*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 2283*61046927SAndroid Build Coastguard Worker // DCC key functions 2284*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 2285*61046927SAndroid Build Coastguard Worker 2286*61046927SAndroid Build Coastguard Worker /** 2287*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2288*61046927SAndroid Build Coastguard Worker * _ADDR_COMPUTE_DCCINFO_INPUT 2289*61046927SAndroid Build Coastguard Worker * 2290*61046927SAndroid Build Coastguard Worker * @brief 2291*61046927SAndroid Build Coastguard Worker * Input structure of AddrComputeDccInfo 2292*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2293*61046927SAndroid Build Coastguard Worker */ 2294*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_DCCINFO_INPUT 2295*61046927SAndroid Build Coastguard Worker { 2296*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2297*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< BitPP of color surface 2298*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Sample number of color surface 2299*61046927SAndroid Build Coastguard Worker UINT_64 colorSurfSize; ///< Size of color surface to which dcc key is bound 2300*61046927SAndroid Build Coastguard Worker AddrTileMode tileMode; ///< Tile mode of color surface 2301*61046927SAndroid Build Coastguard Worker ADDR_TILEINFO tileInfo; ///< Tile info of color surface 2302*61046927SAndroid Build Coastguard Worker UINT_32 tileSwizzle; ///< Tile swizzle 2303*61046927SAndroid Build Coastguard Worker INT_32 tileIndex; ///< Tile index of color surface, 2304*61046927SAndroid Build Coastguard Worker ///< MUST be -1 if you don't want to use it 2305*61046927SAndroid Build Coastguard Worker ///< while the global useTileIndex is set to 1 2306*61046927SAndroid Build Coastguard Worker INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI) 2307*61046927SAndroid Build Coastguard Worker ///< README: When tileIndex is not -1, this must be valid 2308*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_DCCINFO_INPUT; 2309*61046927SAndroid Build Coastguard Worker 2310*61046927SAndroid Build Coastguard Worker /** 2311*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2312*61046927SAndroid Build Coastguard Worker * ADDR_COMPUTE_DCCINFO_OUTPUT 2313*61046927SAndroid Build Coastguard Worker * 2314*61046927SAndroid Build Coastguard Worker * @brief 2315*61046927SAndroid Build Coastguard Worker * Output structure of AddrComputeDccInfo 2316*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2317*61046927SAndroid Build Coastguard Worker */ 2318*61046927SAndroid Build Coastguard Worker typedef struct _ADDR_COMPUTE_DCCINFO_OUTPUT 2319*61046927SAndroid Build Coastguard Worker { 2320*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2321*61046927SAndroid Build Coastguard Worker UINT_32 dccRamBaseAlign; ///< Base alignment of dcc key 2322*61046927SAndroid Build Coastguard Worker UINT_64 dccRamSize; ///< Size of dcc key 2323*61046927SAndroid Build Coastguard Worker UINT_64 dccFastClearSize; ///< Size of dcc key portion that can be fast cleared 2324*61046927SAndroid Build Coastguard Worker BOOL_32 subLvlCompressible; ///< Whether sub resource is compressiable 2325*61046927SAndroid Build Coastguard Worker BOOL_32 dccRamSizeAligned; ///< Whether the dcc key size is aligned 2326*61046927SAndroid Build Coastguard Worker } ADDR_COMPUTE_DCCINFO_OUTPUT; 2327*61046927SAndroid Build Coastguard Worker 2328*61046927SAndroid Build Coastguard Worker /** 2329*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2330*61046927SAndroid Build Coastguard Worker * AddrComputeDccInfo 2331*61046927SAndroid Build Coastguard Worker * 2332*61046927SAndroid Build Coastguard Worker * @brief 2333*61046927SAndroid Build Coastguard Worker * Compute DCC key size, base alignment 2334*61046927SAndroid Build Coastguard Worker * info 2335*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2336*61046927SAndroid Build Coastguard Worker */ 2337*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrComputeDccInfo( 2338*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2339*61046927SAndroid Build Coastguard Worker const ADDR_COMPUTE_DCCINFO_INPUT* pIn, 2340*61046927SAndroid Build Coastguard Worker ADDR_COMPUTE_DCCINFO_OUTPUT* pOut); 2341*61046927SAndroid Build Coastguard Worker 2342*61046927SAndroid Build Coastguard Worker 2343*61046927SAndroid Build Coastguard Worker /** 2344*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2345*61046927SAndroid Build Coastguard Worker * ADDR_GET_MAX_ALIGNMENTS_OUTPUT 2346*61046927SAndroid Build Coastguard Worker * 2347*61046927SAndroid Build Coastguard Worker * @brief 2348*61046927SAndroid Build Coastguard Worker * Output structure of AddrGetMaxAlignments 2349*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2350*61046927SAndroid Build Coastguard Worker */ 2351*61046927SAndroid Build Coastguard Worker typedef struct ADDR_GET_MAX_ALINGMENTS_OUTPUT 2352*61046927SAndroid Build Coastguard Worker { 2353*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2354*61046927SAndroid Build Coastguard Worker UINT_32 baseAlign; ///< Maximum base alignment in bytes 2355*61046927SAndroid Build Coastguard Worker } ADDR_GET_MAX_ALIGNMENTS_OUTPUT; 2356*61046927SAndroid Build Coastguard Worker 2357*61046927SAndroid Build Coastguard Worker /** 2358*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2359*61046927SAndroid Build Coastguard Worker * AddrGetMaxAlignments 2360*61046927SAndroid Build Coastguard Worker * 2361*61046927SAndroid Build Coastguard Worker * @brief 2362*61046927SAndroid Build Coastguard Worker * Gets maximnum alignments 2363*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2364*61046927SAndroid Build Coastguard Worker */ 2365*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrGetMaxAlignments( 2366*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2367*61046927SAndroid Build Coastguard Worker ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut); 2368*61046927SAndroid Build Coastguard Worker 2369*61046927SAndroid Build Coastguard Worker /** 2370*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2371*61046927SAndroid Build Coastguard Worker * AddrGetMaxMetaAlignments 2372*61046927SAndroid Build Coastguard Worker * 2373*61046927SAndroid Build Coastguard Worker * @brief 2374*61046927SAndroid Build Coastguard Worker * Gets maximnum alignments for metadata 2375*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2376*61046927SAndroid Build Coastguard Worker */ 2377*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API AddrGetMaxMetaAlignments( 2378*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2379*61046927SAndroid Build Coastguard Worker ADDR_GET_MAX_ALIGNMENTS_OUTPUT* pOut); 2380*61046927SAndroid Build Coastguard Worker 2381*61046927SAndroid Build Coastguard Worker /** 2382*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2383*61046927SAndroid Build Coastguard Worker * Address library interface version 2 2384*61046927SAndroid Build Coastguard Worker * available from Gfx9 hardware 2385*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2386*61046927SAndroid Build Coastguard Worker * Addr2ComputeSurfaceInfo() 2387*61046927SAndroid Build Coastguard Worker * Addr2ComputeSurfaceAddrFromCoord() 2388*61046927SAndroid Build Coastguard Worker * Addr2ComputeSurfaceCoordFromAddr() 2389*61046927SAndroid Build Coastguard Worker 2390*61046927SAndroid Build Coastguard Worker * Addr2ComputeHtileInfo() 2391*61046927SAndroid Build Coastguard Worker * Addr2ComputeHtileAddrFromCoord() 2392*61046927SAndroid Build Coastguard Worker * Addr2ComputeHtileCoordFromAddr() 2393*61046927SAndroid Build Coastguard Worker * 2394*61046927SAndroid Build Coastguard Worker * Addr2ComputeCmaskInfo() 2395*61046927SAndroid Build Coastguard Worker * Addr2ComputeCmaskAddrFromCoord() 2396*61046927SAndroid Build Coastguard Worker * Addr2ComputeCmaskCoordFromAddr() 2397*61046927SAndroid Build Coastguard Worker * 2398*61046927SAndroid Build Coastguard Worker * Addr2ComputeFmaskInfo() 2399*61046927SAndroid Build Coastguard Worker * Addr2ComputeFmaskAddrFromCoord() 2400*61046927SAndroid Build Coastguard Worker * Addr2ComputeFmaskCoordFromAddr() 2401*61046927SAndroid Build Coastguard Worker * 2402*61046927SAndroid Build Coastguard Worker * Addr2ComputeDccInfo() 2403*61046927SAndroid Build Coastguard Worker * 2404*61046927SAndroid Build Coastguard Worker **/ 2405*61046927SAndroid Build Coastguard Worker 2406*61046927SAndroid Build Coastguard Worker 2407*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 2408*61046927SAndroid Build Coastguard Worker // Surface functions for Addr2 2409*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 2410*61046927SAndroid Build Coastguard Worker 2411*61046927SAndroid Build Coastguard Worker /** 2412*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2413*61046927SAndroid Build Coastguard Worker * ADDR2_SURFACE_FLAGS 2414*61046927SAndroid Build Coastguard Worker * 2415*61046927SAndroid Build Coastguard Worker * @brief 2416*61046927SAndroid Build Coastguard Worker * Surface flags 2417*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2418*61046927SAndroid Build Coastguard Worker */ 2419*61046927SAndroid Build Coastguard Worker typedef union _ADDR2_SURFACE_FLAGS 2420*61046927SAndroid Build Coastguard Worker { 2421*61046927SAndroid Build Coastguard Worker struct 2422*61046927SAndroid Build Coastguard Worker { 2423*61046927SAndroid Build Coastguard Worker UINT_32 color : 1; ///< This resource is a color buffer, can be used with RTV 2424*61046927SAndroid Build Coastguard Worker UINT_32 depth : 1; ///< Thie resource is a depth buffer, can be used with DSV 2425*61046927SAndroid Build Coastguard Worker UINT_32 stencil : 1; ///< Thie resource is a stencil buffer, can be used with DSV 2426*61046927SAndroid Build Coastguard Worker UINT_32 fmask : 1; ///< This is an fmask surface 2427*61046927SAndroid Build Coastguard Worker UINT_32 overlay : 1; ///< This is an overlay surface 2428*61046927SAndroid Build Coastguard Worker UINT_32 display : 1; ///< This resource is displayable, can be used with DRV 2429*61046927SAndroid Build Coastguard Worker UINT_32 prt : 1; ///< This is a partially resident texture 2430*61046927SAndroid Build Coastguard Worker UINT_32 qbStereo : 1; ///< This is a quad buffer stereo surface 2431*61046927SAndroid Build Coastguard Worker UINT_32 interleaved : 1; ///< Special flag for interleaved YUV surface padding 2432*61046927SAndroid Build Coastguard Worker UINT_32 texture : 1; ///< This resource can be used with SRV 2433*61046927SAndroid Build Coastguard Worker UINT_32 unordered : 1; ///< This resource can be used with UAV 2434*61046927SAndroid Build Coastguard Worker UINT_32 rotated : 1; ///< This resource is rotated and displayable 2435*61046927SAndroid Build Coastguard Worker UINT_32 needEquation : 1; ///< This resource needs equation to be generated if possible 2436*61046927SAndroid Build Coastguard Worker UINT_32 opt4space : 1; ///< This resource should be optimized for space 2437*61046927SAndroid Build Coastguard Worker UINT_32 minimizeAlign : 1; ///< This resource should use minimum alignment 2438*61046927SAndroid Build Coastguard Worker UINT_32 noMetadata : 1; ///< This resource has no metadata 2439*61046927SAndroid Build Coastguard Worker UINT_32 metaRbUnaligned : 1; ///< This resource has rb unaligned metadata 2440*61046927SAndroid Build Coastguard Worker UINT_32 metaPipeUnaligned : 1; ///< This resource has pipe unaligned metadata 2441*61046927SAndroid Build Coastguard Worker UINT_32 view3dAs2dArray : 1; ///< This resource is a 3D resource viewed as 2D array 2442*61046927SAndroid Build Coastguard Worker UINT_32 allowExtEquation : 1; ///< If unset, only legacy DX eqs are allowed (2 XORs) 2443*61046927SAndroid Build Coastguard Worker UINT_32 requireMetadata : 1; ///< This resource must support metadata 2444*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 11; ///< Reserved bits 2445*61046927SAndroid Build Coastguard Worker }; 2446*61046927SAndroid Build Coastguard Worker 2447*61046927SAndroid Build Coastguard Worker UINT_32 value; 2448*61046927SAndroid Build Coastguard Worker } ADDR2_SURFACE_FLAGS; 2449*61046927SAndroid Build Coastguard Worker 2450*61046927SAndroid Build Coastguard Worker /** 2451*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2452*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_SURFACE_INFO_INPUT 2453*61046927SAndroid Build Coastguard Worker * 2454*61046927SAndroid Build Coastguard Worker * @brief 2455*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeSurfaceInfo 2456*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2457*61046927SAndroid Build Coastguard Worker */ 2458*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_SURFACE_INFO_INPUT 2459*61046927SAndroid Build Coastguard Worker { 2460*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2461*61046927SAndroid Build Coastguard Worker 2462*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS flags; ///< Surface flags 2463*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Swizzle Mode for Addr2 2464*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface type 2465*61046927SAndroid Build Coastguard Worker AddrFormat format; ///< Surface format 2466*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< bits per pixel 2467*61046927SAndroid Build Coastguard Worker UINT_32 width; ///< Width (of mip0), in pixels 2468*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height (of mip0), in pixels 2469*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number surface slice/depth (of mip0), 2470*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels. 2471*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 2472*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 2473*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 2474*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 2475*61046927SAndroid Build Coastguard Worker UINT_32 pitchInElement; ///< Pitch in elements (blocks for compressed formats) 2476*61046927SAndroid Build Coastguard Worker UINT_32 sliceAlign; ///< Required slice size in bytes 2477*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_SURFACE_INFO_INPUT; 2478*61046927SAndroid Build Coastguard Worker 2479*61046927SAndroid Build Coastguard Worker /** 2480*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2481*61046927SAndroid Build Coastguard Worker * ADDR2_MIP_INFO 2482*61046927SAndroid Build Coastguard Worker * 2483*61046927SAndroid Build Coastguard Worker * @brief 2484*61046927SAndroid Build Coastguard Worker * Structure that contains information for mip level 2485*61046927SAndroid Build Coastguard Worker * 2486*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2487*61046927SAndroid Build Coastguard Worker */ 2488*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_MIP_INFO 2489*61046927SAndroid Build Coastguard Worker { 2490*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch in elements 2491*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Padded height in elements 2492*61046927SAndroid Build Coastguard Worker UINT_32 depth; ///< Padded depth 2493*61046927SAndroid Build Coastguard Worker UINT_32 pixelPitch; ///< Pitch in pixels 2494*61046927SAndroid Build Coastguard Worker UINT_32 pixelHeight; ///< Padded height in pixels 2495*61046927SAndroid Build Coastguard Worker UINT_32 equationIndex; ///< Equation index in the equation table 2496*61046927SAndroid Build Coastguard Worker UINT_64 offset; ///< Offset in bytes from mip base, should only be used 2497*61046927SAndroid Build Coastguard Worker ///< to setup vam surface descriptor, can't be used 2498*61046927SAndroid Build Coastguard Worker ///< to setup swizzle pattern 2499*61046927SAndroid Build Coastguard Worker UINT_64 macroBlockOffset; ///< macro block offset in bytes from mip base 2500*61046927SAndroid Build Coastguard Worker UINT_32 mipTailOffset; ///< mip tail offset in bytes 2501*61046927SAndroid Build Coastguard Worker UINT_32 mipTailCoordX; ///< mip tail coord x 2502*61046927SAndroid Build Coastguard Worker UINT_32 mipTailCoordY; ///< mip tail coord y 2503*61046927SAndroid Build Coastguard Worker UINT_32 mipTailCoordZ; ///< mip tail coord z 2504*61046927SAndroid Build Coastguard Worker } ADDR2_MIP_INFO; 2505*61046927SAndroid Build Coastguard Worker 2506*61046927SAndroid Build Coastguard Worker /** 2507*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2508*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_SURFACE_INFO_OUTPUT 2509*61046927SAndroid Build Coastguard Worker * 2510*61046927SAndroid Build Coastguard Worker * @brief 2511*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeSurfInfo 2512*61046927SAndroid Build Coastguard Worker * @note 2513*61046927SAndroid Build Coastguard Worker Element: AddrLib unit for computing. e.g. BCn: 4x4 blocks; R32B32B32: 32bit with 3x pitch 2514*61046927SAndroid Build Coastguard Worker Pixel: Original pixel 2515*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2516*61046927SAndroid Build Coastguard Worker */ 2517*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_SURFACE_INFO_OUTPUT 2518*61046927SAndroid Build Coastguard Worker { 2519*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2520*61046927SAndroid Build Coastguard Worker 2521*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch in elements (blocks for compressed formats) 2522*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Padded height (of mip0) in elements 2523*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Padded depth for 3d resource 2524*61046927SAndroid Build Coastguard Worker ///< or padded number of slices for 2d array resource 2525*61046927SAndroid Build Coastguard Worker UINT_32 mipChainPitch; ///< Pitch (of total mip chain) in elements 2526*61046927SAndroid Build Coastguard Worker UINT_32 mipChainHeight; ///< Padded height (of total mip chain) in elements 2527*61046927SAndroid Build Coastguard Worker UINT_32 mipChainSlice; ///< Padded depth (of total mip chain) 2528*61046927SAndroid Build Coastguard Worker UINT_64 sliceSize; ///< Slice (total mip chain) size in bytes 2529*61046927SAndroid Build Coastguard Worker UINT_64 surfSize; ///< Surface (total mip chain) size in bytes 2530*61046927SAndroid Build Coastguard Worker UINT_32 baseAlign; ///< Base address alignment 2531*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per elements 2532*61046927SAndroid Build Coastguard Worker /// (e.g. blocks for BCn, 1/3 for 96bit) 2533*61046927SAndroid Build Coastguard Worker UINT_32 pixelMipChainPitch; ///< Mip chain pitch in original pixels 2534*61046927SAndroid Build Coastguard Worker UINT_32 pixelMipChainHeight; ///< Mip chain height in original pixels 2535*61046927SAndroid Build Coastguard Worker UINT_32 pixelPitch; ///< Pitch in original pixels 2536*61046927SAndroid Build Coastguard Worker UINT_32 pixelHeight; ///< Height in original pixels 2537*61046927SAndroid Build Coastguard Worker UINT_32 pixelBits; ///< Original bits per pixel, passed from input 2538*61046927SAndroid Build Coastguard Worker 2539*61046927SAndroid Build Coastguard Worker UINT_32 blockWidth; ///< Width in element inside one block 2540*61046927SAndroid Build Coastguard Worker UINT_32 blockHeight; ///< Height in element inside one block 2541*61046927SAndroid Build Coastguard Worker UINT_32 blockSlices; ///< Slice number inside one block 2542*61046927SAndroid Build Coastguard Worker ///< Prt tile is one block, its width/height/slice 2543*61046927SAndroid Build Coastguard Worker ///< equals to blcok width/height/slice 2544*61046927SAndroid Build Coastguard Worker 2545*61046927SAndroid Build Coastguard Worker BOOL_32 epitchIsHeight; ///< Whether to use height to program epitch register 2546*61046927SAndroid Build Coastguard Worker /// Stereo info 2547*61046927SAndroid Build Coastguard Worker ADDR_QBSTEREOINFO* pStereoInfo; ///< Stereo info, needed if qbStereo flag is TRUE 2548*61046927SAndroid Build Coastguard Worker /// Mip info 2549*61046927SAndroid Build Coastguard Worker ADDR2_MIP_INFO* pMipInfo; ///< Pointer to mip information array 2550*61046927SAndroid Build Coastguard Worker /// if it is not NULL, the array is assumed to 2551*61046927SAndroid Build Coastguard Worker /// contain numMipLevels entries 2552*61046927SAndroid Build Coastguard Worker 2553*61046927SAndroid Build Coastguard Worker UINT_32 equationIndex; ///< Equation index in the equation table of mip0 2554*61046927SAndroid Build Coastguard Worker BOOL_32 mipChainInTail; ///< If whole mipchain falls into mip tail block 2555*61046927SAndroid Build Coastguard Worker UINT_32 firstMipIdInTail; ///< The id of first mip in tail, if there is no mip 2556*61046927SAndroid Build Coastguard Worker /// in tail, it will be set to number of mip levels 2557*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_SURFACE_INFO_OUTPUT; 2558*61046927SAndroid Build Coastguard Worker 2559*61046927SAndroid Build Coastguard Worker /** 2560*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2561*61046927SAndroid Build Coastguard Worker * Addr2ComputeSurfaceInfo 2562*61046927SAndroid Build Coastguard Worker * 2563*61046927SAndroid Build Coastguard Worker * @brief 2564*61046927SAndroid Build Coastguard Worker * Compute surface width/height/slices/alignments and suitable tiling mode 2565*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2566*61046927SAndroid Build Coastguard Worker */ 2567*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeSurfaceInfo( 2568*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2569*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_SURFACE_INFO_INPUT* pIn, 2570*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_SURFACE_INFO_OUTPUT* pOut); 2571*61046927SAndroid Build Coastguard Worker 2572*61046927SAndroid Build Coastguard Worker 2573*61046927SAndroid Build Coastguard Worker 2574*61046927SAndroid Build Coastguard Worker /** 2575*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2576*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT 2577*61046927SAndroid Build Coastguard Worker * 2578*61046927SAndroid Build Coastguard Worker * @brief 2579*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeSurfaceAddrFromCoord 2580*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2581*61046927SAndroid Build Coastguard Worker */ 2582*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT 2583*61046927SAndroid Build Coastguard Worker { 2584*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2585*61046927SAndroid Build Coastguard Worker 2586*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 2587*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 2588*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 2589*61046927SAndroid Build Coastguard Worker UINT_32 sample; ///< Sample index, use fragment index for EQAA 2590*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< the mip ID in mip chain 2591*61046927SAndroid Build Coastguard Worker 2592*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Swizzle mode for Addr2 2593*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS flags; ///< Surface flags 2594*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface type 2595*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel 2596*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Surface original width (of mip0) 2597*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Surface original height (of mip0) 2598*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Surface original slices (of mip0) 2599*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels 2600*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 2601*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 2602*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 2603*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 2604*61046927SAndroid Build Coastguard Worker 2605*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Combined swizzle used to do bank/pipe rotation 2606*61046927SAndroid Build Coastguard Worker UINT_32 pitchInElement; ///< Pitch in elements (blocks for compressed formats) 2607*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT; 2608*61046927SAndroid Build Coastguard Worker 2609*61046927SAndroid Build Coastguard Worker /** 2610*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2611*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT 2612*61046927SAndroid Build Coastguard Worker * 2613*61046927SAndroid Build Coastguard Worker * @brief 2614*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeSurfaceAddrFromCoord 2615*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2616*61046927SAndroid Build Coastguard Worker */ 2617*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT 2618*61046927SAndroid Build Coastguard Worker { 2619*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2620*61046927SAndroid Build Coastguard Worker 2621*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Byte offset from the image starting address 2622*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within surfaceAddr, 0-7. 2623*61046927SAndroid Build Coastguard Worker /// For surface bpp < 8, e.g. FMT_1. 2624*61046927SAndroid Build Coastguard Worker UINT_32 prtBlockIndex; ///< Index of a PRT tile (64K block) 2625*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT; 2626*61046927SAndroid Build Coastguard Worker 2627*61046927SAndroid Build Coastguard Worker /** 2628*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2629*61046927SAndroid Build Coastguard Worker * Addr2ComputeSurfaceAddrFromCoord 2630*61046927SAndroid Build Coastguard Worker * 2631*61046927SAndroid Build Coastguard Worker * @brief 2632*61046927SAndroid Build Coastguard Worker * Compute surface address from a given coordinate. 2633*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2634*61046927SAndroid Build Coastguard Worker */ 2635*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeSurfaceAddrFromCoord( 2636*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2637*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT* pIn, 2638*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT* pOut); 2639*61046927SAndroid Build Coastguard Worker 2640*61046927SAndroid Build Coastguard Worker 2641*61046927SAndroid Build Coastguard Worker 2642*61046927SAndroid Build Coastguard Worker /** 2643*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2644*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_SURFACE_COORDFROMADDR_INPUT 2645*61046927SAndroid Build Coastguard Worker * 2646*61046927SAndroid Build Coastguard Worker * @brief 2647*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeSurfaceCoordFromAddr 2648*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2649*61046927SAndroid Build Coastguard Worker */ 2650*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_SURFACE_COORDFROMADDR_INPUT 2651*61046927SAndroid Build Coastguard Worker { 2652*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2653*61046927SAndroid Build Coastguard Worker 2654*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Address in bytes 2655*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position in addr. 0-7. for surface bpp < 8, 2656*61046927SAndroid Build Coastguard Worker /// e.g. FMT_1; 2657*61046927SAndroid Build Coastguard Worker 2658*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Swizzle mode for Addr2 2659*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS flags; ///< Surface flags 2660*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface type 2661*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel 2662*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Surface original width (of mip0) 2663*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Surface original height (of mip0) 2664*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Surface original slices (of mip0) 2665*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels. 2666*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 2667*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 2668*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 2669*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 2670*61046927SAndroid Build Coastguard Worker 2671*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Combined swizzle used to do bank/pipe rotation 2672*61046927SAndroid Build Coastguard Worker UINT_32 pitchInElement; ///< Pitch in elements (blocks for compressed formats) 2673*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_SURFACE_COORDFROMADDR_INPUT; 2674*61046927SAndroid Build Coastguard Worker 2675*61046927SAndroid Build Coastguard Worker /** 2676*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2677*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT 2678*61046927SAndroid Build Coastguard Worker * 2679*61046927SAndroid Build Coastguard Worker * @brief 2680*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeSurfaceCoordFromAddr 2681*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2682*61046927SAndroid Build Coastguard Worker */ 2683*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT 2684*61046927SAndroid Build Coastguard Worker { 2685*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2686*61046927SAndroid Build Coastguard Worker 2687*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 2688*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 2689*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Index of slices 2690*61046927SAndroid Build Coastguard Worker UINT_32 sample; ///< Index of samples, means fragment index for EQAA 2691*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< mipmap level id 2692*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT; 2693*61046927SAndroid Build Coastguard Worker 2694*61046927SAndroid Build Coastguard Worker /** 2695*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2696*61046927SAndroid Build Coastguard Worker * Addr2ComputeSurfaceCoordFromAddr 2697*61046927SAndroid Build Coastguard Worker * 2698*61046927SAndroid Build Coastguard Worker * @brief 2699*61046927SAndroid Build Coastguard Worker * Compute coordinate from a given surface address 2700*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2701*61046927SAndroid Build Coastguard Worker */ 2702*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeSurfaceCoordFromAddr( 2703*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2704*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_SURFACE_COORDFROMADDR_INPUT* pIn, 2705*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT* pOut); 2706*61046927SAndroid Build Coastguard Worker 2707*61046927SAndroid Build Coastguard Worker 2708*61046927SAndroid Build Coastguard Worker 2709*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 2710*61046927SAndroid Build Coastguard Worker // HTile functions for Addr2 2711*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 2712*61046927SAndroid Build Coastguard Worker 2713*61046927SAndroid Build Coastguard Worker /** 2714*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2715*61046927SAndroid Build Coastguard Worker * ADDR2_META_FLAGS 2716*61046927SAndroid Build Coastguard Worker * 2717*61046927SAndroid Build Coastguard Worker * @brief 2718*61046927SAndroid Build Coastguard Worker * Metadata flags 2719*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2720*61046927SAndroid Build Coastguard Worker */ 2721*61046927SAndroid Build Coastguard Worker typedef union _ADDR2_META_FLAGS 2722*61046927SAndroid Build Coastguard Worker { 2723*61046927SAndroid Build Coastguard Worker struct 2724*61046927SAndroid Build Coastguard Worker { 2725*61046927SAndroid Build Coastguard Worker UINT_32 pipeAligned : 1; ///< if Metadata being pipe aligned 2726*61046927SAndroid Build Coastguard Worker UINT_32 rbAligned : 1; ///< if Metadata being RB aligned 2727*61046927SAndroid Build Coastguard Worker UINT_32 linear : 1; ///< if Metadata linear, GFX9 does not suppord this! 2728*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 29; ///< Reserved bits 2729*61046927SAndroid Build Coastguard Worker }; 2730*61046927SAndroid Build Coastguard Worker 2731*61046927SAndroid Build Coastguard Worker UINT_32 value; 2732*61046927SAndroid Build Coastguard Worker } ADDR2_META_FLAGS; 2733*61046927SAndroid Build Coastguard Worker 2734*61046927SAndroid Build Coastguard Worker /** 2735*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2736*61046927SAndroid Build Coastguard Worker * ADDR2_META_MIP_INFO 2737*61046927SAndroid Build Coastguard Worker * 2738*61046927SAndroid Build Coastguard Worker * @brief 2739*61046927SAndroid Build Coastguard Worker * Structure to store per mip metadata information 2740*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2741*61046927SAndroid Build Coastguard Worker */ 2742*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_META_MIP_INFO 2743*61046927SAndroid Build Coastguard Worker { 2744*61046927SAndroid Build Coastguard Worker BOOL_32 inMiptail; 2745*61046927SAndroid Build Coastguard Worker union 2746*61046927SAndroid Build Coastguard Worker { 2747*61046927SAndroid Build Coastguard Worker struct 2748*61046927SAndroid Build Coastguard Worker { 2749*61046927SAndroid Build Coastguard Worker UINT_32 startX; 2750*61046927SAndroid Build Coastguard Worker UINT_32 startY; 2751*61046927SAndroid Build Coastguard Worker UINT_32 startZ; 2752*61046927SAndroid Build Coastguard Worker UINT_32 width; 2753*61046927SAndroid Build Coastguard Worker UINT_32 height; 2754*61046927SAndroid Build Coastguard Worker UINT_32 depth; 2755*61046927SAndroid Build Coastguard Worker }; 2756*61046927SAndroid Build Coastguard Worker 2757*61046927SAndroid Build Coastguard Worker // GFX10 2758*61046927SAndroid Build Coastguard Worker struct 2759*61046927SAndroid Build Coastguard Worker { 2760*61046927SAndroid Build Coastguard Worker UINT_32 offset; ///< Metadata offset within one slice, 2761*61046927SAndroid Build Coastguard Worker /// the thickness of a slice is meta block depth. 2762*61046927SAndroid Build Coastguard Worker UINT_32 sliceSize; ///< Metadata size within one slice, 2763*61046927SAndroid Build Coastguard Worker /// the thickness of a slice is meta block depth. 2764*61046927SAndroid Build Coastguard Worker }; 2765*61046927SAndroid Build Coastguard Worker }; 2766*61046927SAndroid Build Coastguard Worker } ADDR2_META_MIP_INFO; 2767*61046927SAndroid Build Coastguard Worker 2768*61046927SAndroid Build Coastguard Worker /** 2769*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2770*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_HTILE_INFO_INPUT 2771*61046927SAndroid Build Coastguard Worker * 2772*61046927SAndroid Build Coastguard Worker * @brief 2773*61046927SAndroid Build Coastguard Worker * Input structure of Addr2ComputeHtileInfo 2774*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2775*61046927SAndroid Build Coastguard Worker */ 2776*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_HTILE_INFO_INPUT 2777*61046927SAndroid Build Coastguard Worker { 2778*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2779*61046927SAndroid Build Coastguard Worker 2780*61046927SAndroid Build Coastguard Worker ADDR2_META_FLAGS hTileFlags; ///< HTILE flags 2781*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS depthFlags; ///< Depth surface flags 2782*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Depth surface swizzle mode 2783*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Depth surface original width (of mip0) 2784*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Depth surface original height (of mip0) 2785*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slices of depth surface (of mip0) 2786*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels of color surface 2787*61046927SAndroid Build Coastguard Worker UINT_32 firstMipIdInTail; /// Id of the first mip in tail, 2788*61046927SAndroid Build Coastguard Worker /// if no mip is in tail, it should be set to 2789*61046927SAndroid Build Coastguard Worker /// number of mip levels 2790*61046927SAndroid Build Coastguard Worker /// Only for GFX10 2791*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_HTILE_INFO_INPUT; 2792*61046927SAndroid Build Coastguard Worker 2793*61046927SAndroid Build Coastguard Worker /** 2794*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2795*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_HTILE_INFO_OUTPUT 2796*61046927SAndroid Build Coastguard Worker * 2797*61046927SAndroid Build Coastguard Worker * @brief 2798*61046927SAndroid Build Coastguard Worker * Output structure of Addr2ComputeHtileInfo 2799*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2800*61046927SAndroid Build Coastguard Worker */ 2801*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_HTILE_INFO_OUTPUT 2802*61046927SAndroid Build Coastguard Worker { 2803*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2804*61046927SAndroid Build Coastguard Worker 2805*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch in pixels of depth buffer represented in this 2806*61046927SAndroid Build Coastguard Worker /// HTile buffer. This might be larger than original depth 2807*61046927SAndroid Build Coastguard Worker /// buffer pitch when called with an unaligned pitch. 2808*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height in pixels, as above 2809*61046927SAndroid Build Coastguard Worker UINT_32 baseAlign; ///< Base alignment 2810*61046927SAndroid Build Coastguard Worker UINT_32 sliceSize; ///< Slice size, in bytes. 2811*61046927SAndroid Build Coastguard Worker UINT_32 htileBytes; ///< Size of HTILE buffer, in bytes 2812*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkWidth; ///< Meta block width 2813*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkHeight; ///< Meta block height 2814*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkNumPerSlice; ///< Number of metablock within one slice 2815*61046927SAndroid Build Coastguard Worker 2816*61046927SAndroid Build Coastguard Worker ADDR2_META_MIP_INFO* pMipInfo; ///< HTILE mip information 2817*61046927SAndroid Build Coastguard Worker 2818*61046927SAndroid Build Coastguard Worker struct { 2819*61046927SAndroid Build Coastguard Worker UINT_16* gfx10_bits; /* 72 2-byte elements */ 2820*61046927SAndroid Build Coastguard Worker } equation; 2821*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_HTILE_INFO_OUTPUT; 2822*61046927SAndroid Build Coastguard Worker 2823*61046927SAndroid Build Coastguard Worker /** 2824*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2825*61046927SAndroid Build Coastguard Worker * Addr2ComputeHtileInfo 2826*61046927SAndroid Build Coastguard Worker * 2827*61046927SAndroid Build Coastguard Worker * @brief 2828*61046927SAndroid Build Coastguard Worker * Compute Htile pitch, height, base alignment and size in bytes 2829*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2830*61046927SAndroid Build Coastguard Worker */ 2831*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeHtileInfo( 2832*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2833*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_HTILE_INFO_INPUT* pIn, 2834*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_HTILE_INFO_OUTPUT* pOut); 2835*61046927SAndroid Build Coastguard Worker 2836*61046927SAndroid Build Coastguard Worker 2837*61046927SAndroid Build Coastguard Worker 2838*61046927SAndroid Build Coastguard Worker /** 2839*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2840*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT 2841*61046927SAndroid Build Coastguard Worker * 2842*61046927SAndroid Build Coastguard Worker * @brief 2843*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeHtileAddrFromCoord 2844*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2845*61046927SAndroid Build Coastguard Worker */ 2846*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT 2847*61046927SAndroid Build Coastguard Worker { 2848*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2849*61046927SAndroid Build Coastguard Worker 2850*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 2851*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 2852*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Index of slices 2853*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< mipmap level id 2854*61046927SAndroid Build Coastguard Worker 2855*61046927SAndroid Build Coastguard Worker ADDR2_META_FLAGS hTileFlags; ///< HTILE flags 2856*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS depthflags; ///< Depth surface flags 2857*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Depth surface swizzle mode 2858*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Depth surface bits per pixel 2859*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Depth surface original width (of mip0) 2860*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Depth surface original height (of mip0) 2861*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Depth surface original depth (of mip0) 2862*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Depth surface total mipmap levels 2863*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Depth surface number of samples 2864*61046927SAndroid Build Coastguard Worker UINT_32 pipeXor; ///< Pipe xor setting 2865*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT; 2866*61046927SAndroid Build Coastguard Worker 2867*61046927SAndroid Build Coastguard Worker /** 2868*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2869*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT 2870*61046927SAndroid Build Coastguard Worker * 2871*61046927SAndroid Build Coastguard Worker * @brief 2872*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeHtileAddrFromCoord 2873*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2874*61046927SAndroid Build Coastguard Worker */ 2875*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT 2876*61046927SAndroid Build Coastguard Worker { 2877*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2878*61046927SAndroid Build Coastguard Worker 2879*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Address in bytes 2880*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT; 2881*61046927SAndroid Build Coastguard Worker 2882*61046927SAndroid Build Coastguard Worker /** 2883*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2884*61046927SAndroid Build Coastguard Worker * Addr2ComputeHtileAddrFromCoord 2885*61046927SAndroid Build Coastguard Worker * 2886*61046927SAndroid Build Coastguard Worker * @brief 2887*61046927SAndroid Build Coastguard Worker * Compute Htile address according to coordinates (of depth buffer) 2888*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2889*61046927SAndroid Build Coastguard Worker */ 2890*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeHtileAddrFromCoord( 2891*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2892*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_INPUT* pIn, 2893*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_HTILE_ADDRFROMCOORD_OUTPUT* pOut); 2894*61046927SAndroid Build Coastguard Worker 2895*61046927SAndroid Build Coastguard Worker 2896*61046927SAndroid Build Coastguard Worker 2897*61046927SAndroid Build Coastguard Worker /** 2898*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2899*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT 2900*61046927SAndroid Build Coastguard Worker * 2901*61046927SAndroid Build Coastguard Worker * @brief 2902*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeHtileCoordFromAddr 2903*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2904*61046927SAndroid Build Coastguard Worker */ 2905*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT 2906*61046927SAndroid Build Coastguard Worker { 2907*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2908*61046927SAndroid Build Coastguard Worker 2909*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Address 2910*61046927SAndroid Build Coastguard Worker 2911*61046927SAndroid Build Coastguard Worker ADDR2_META_FLAGS hTileFlags; ///< HTILE flags 2912*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS depthFlags; ///< Depth surface flags 2913*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Depth surface swizzle mode 2914*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Depth surface bits per pixel 2915*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Depth surface original width (of mip0) 2916*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Depth surface original height (of mip0) 2917*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Depth surface original depth (of mip0) 2918*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Depth surface total mipmap levels 2919*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Depth surface number of samples 2920*61046927SAndroid Build Coastguard Worker UINT_32 pipeXor; ///< Pipe xor setting 2921*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT; 2922*61046927SAndroid Build Coastguard Worker 2923*61046927SAndroid Build Coastguard Worker /** 2924*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2925*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT 2926*61046927SAndroid Build Coastguard Worker * 2927*61046927SAndroid Build Coastguard Worker * @brief 2928*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeHtileCoordFromAddr 2929*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2930*61046927SAndroid Build Coastguard Worker */ 2931*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT 2932*61046927SAndroid Build Coastguard Worker { 2933*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2934*61046927SAndroid Build Coastguard Worker 2935*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 2936*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 2937*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Index of slices 2938*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< mipmap level id 2939*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT; 2940*61046927SAndroid Build Coastguard Worker 2941*61046927SAndroid Build Coastguard Worker /** 2942*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2943*61046927SAndroid Build Coastguard Worker * Addr2ComputeHtileCoordFromAddr 2944*61046927SAndroid Build Coastguard Worker * 2945*61046927SAndroid Build Coastguard Worker * @brief 2946*61046927SAndroid Build Coastguard Worker * Compute coordinates within depth buffer (1st pixel of a micro tile) according to 2947*61046927SAndroid Build Coastguard Worker * Htile address 2948*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2949*61046927SAndroid Build Coastguard Worker */ 2950*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeHtileCoordFromAddr( 2951*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 2952*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_HTILE_COORDFROMADDR_INPUT* pIn, 2953*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_HTILE_COORDFROMADDR_OUTPUT* pOut); 2954*61046927SAndroid Build Coastguard Worker 2955*61046927SAndroid Build Coastguard Worker 2956*61046927SAndroid Build Coastguard Worker 2957*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 2958*61046927SAndroid Build Coastguard Worker // C-mask functions for Addr2 2959*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 2960*61046927SAndroid Build Coastguard Worker 2961*61046927SAndroid Build Coastguard Worker /** 2962*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2963*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_CMASK_INFO_INPUT 2964*61046927SAndroid Build Coastguard Worker * 2965*61046927SAndroid Build Coastguard Worker * @brief 2966*61046927SAndroid Build Coastguard Worker * Input structure of Addr2ComputeCmaskInfo 2967*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 2968*61046927SAndroid Build Coastguard Worker */ 2969*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_CMASKINFO_INPUT 2970*61046927SAndroid Build Coastguard Worker { 2971*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 2972*61046927SAndroid Build Coastguard Worker 2973*61046927SAndroid Build Coastguard Worker ADDR2_META_FLAGS cMaskFlags; ///< CMASK flags 2974*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS colorFlags; ///< Color surface flags 2975*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Color surface type 2976*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< FMask surface swizzle mode 2977*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Color surface original width 2978*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Color surface original height 2979*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slices of color buffer 2980*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Number of mip levels 2981*61046927SAndroid Build Coastguard Worker UINT_32 firstMipIdInTail; ///< The id of first mip in tail, if no mip is in tail, 2982*61046927SAndroid Build Coastguard Worker /// it should be number of mip levels 2983*61046927SAndroid Build Coastguard Worker /// Only for GFX10 2984*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_CMASK_INFO_INPUT; 2985*61046927SAndroid Build Coastguard Worker 2986*61046927SAndroid Build Coastguard Worker /* DCC addr meta equation for GFX9. */ 2987*61046927SAndroid Build Coastguard Worker struct gfx9_addr_meta_equation { 2988*61046927SAndroid Build Coastguard Worker UINT_8 num_bits; 2989*61046927SAndroid Build Coastguard Worker 2990*61046927SAndroid Build Coastguard Worker struct { 2991*61046927SAndroid Build Coastguard Worker struct { 2992*61046927SAndroid Build Coastguard Worker UINT_8 dim; /* 0..4 as index, 5 means invalid */ 2993*61046927SAndroid Build Coastguard Worker UINT_8 ord; /* 0..31 */ 2994*61046927SAndroid Build Coastguard Worker } coord[8]; /* 0..num_coords */ 2995*61046927SAndroid Build Coastguard Worker } bit[32]; /* 0..num_bits */ 2996*61046927SAndroid Build Coastguard Worker 2997*61046927SAndroid Build Coastguard Worker UINT_8 numPipeBits; 2998*61046927SAndroid Build Coastguard Worker }; 2999*61046927SAndroid Build Coastguard Worker 3000*61046927SAndroid Build Coastguard Worker /** 3001*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3002*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_CMASK_INFO_OUTPUT 3003*61046927SAndroid Build Coastguard Worker * 3004*61046927SAndroid Build Coastguard Worker * @brief 3005*61046927SAndroid Build Coastguard Worker * Output structure of Addr2ComputeCmaskInfo 3006*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3007*61046927SAndroid Build Coastguard Worker */ 3008*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_CMASK_INFO_OUTPUT 3009*61046927SAndroid Build Coastguard Worker { 3010*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3011*61046927SAndroid Build Coastguard Worker 3012*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch in pixels of color buffer which 3013*61046927SAndroid Build Coastguard Worker /// this Cmask matches. The size might be larger than 3014*61046927SAndroid Build Coastguard Worker /// original color buffer pitch when called with 3015*61046927SAndroid Build Coastguard Worker /// an unaligned pitch. 3016*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height in pixels, as above 3017*61046927SAndroid Build Coastguard Worker UINT_32 baseAlign; ///< Base alignment 3018*61046927SAndroid Build Coastguard Worker UINT_32 sliceSize; ///< Slice size, in bytes. 3019*61046927SAndroid Build Coastguard Worker UINT_32 cmaskBytes; ///< Size in bytes of CMask buffer 3020*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkWidth; ///< Meta block width 3021*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkHeight; ///< Meta block height 3022*61046927SAndroid Build Coastguard Worker 3023*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkNumPerSlice; ///< Number of metablock within one slice 3024*61046927SAndroid Build Coastguard Worker 3025*61046927SAndroid Build Coastguard Worker ADDR2_META_MIP_INFO* pMipInfo; ///< CMASK mip information 3026*61046927SAndroid Build Coastguard Worker 3027*61046927SAndroid Build Coastguard Worker /* The equation for doing CMASK address computations in shaders. */ 3028*61046927SAndroid Build Coastguard Worker union { 3029*61046927SAndroid Build Coastguard Worker /* This is chip-specific, and it varies with: 3030*61046927SAndroid Build Coastguard Worker * - resource type 3031*61046927SAndroid Build Coastguard Worker * - swizzle_mode 3032*61046927SAndroid Build Coastguard Worker * - bpp 3033*61046927SAndroid Build Coastguard Worker * - pipe_aligned 3034*61046927SAndroid Build Coastguard Worker * - rb_aligned 3035*61046927SAndroid Build Coastguard Worker */ 3036*61046927SAndroid Build Coastguard Worker struct gfx9_addr_meta_equation gfx9; 3037*61046927SAndroid Build Coastguard Worker 3038*61046927SAndroid Build Coastguard Worker /* This is chip-specific, it requires 64KB_Z_X. */ 3039*61046927SAndroid Build Coastguard Worker UINT_16 *gfx10_bits; /* 68 2-byte elements */ 3040*61046927SAndroid Build Coastguard Worker } equation; 3041*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_CMASK_INFO_OUTPUT; 3042*61046927SAndroid Build Coastguard Worker 3043*61046927SAndroid Build Coastguard Worker /** 3044*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3045*61046927SAndroid Build Coastguard Worker * Addr2ComputeCmaskInfo 3046*61046927SAndroid Build Coastguard Worker * 3047*61046927SAndroid Build Coastguard Worker * @brief 3048*61046927SAndroid Build Coastguard Worker * Compute Cmask pitch, height, base alignment and size in bytes from color buffer 3049*61046927SAndroid Build Coastguard Worker * info 3050*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3051*61046927SAndroid Build Coastguard Worker */ 3052*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeCmaskInfo( 3053*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3054*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_CMASK_INFO_INPUT* pIn, 3055*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_CMASK_INFO_OUTPUT* pOut); 3056*61046927SAndroid Build Coastguard Worker 3057*61046927SAndroid Build Coastguard Worker 3058*61046927SAndroid Build Coastguard Worker 3059*61046927SAndroid Build Coastguard Worker /** 3060*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3061*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT 3062*61046927SAndroid Build Coastguard Worker * 3063*61046927SAndroid Build Coastguard Worker * @brief 3064*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeCmaskAddrFromCoord 3065*61046927SAndroid Build Coastguard Worker * 3066*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3067*61046927SAndroid Build Coastguard Worker */ 3068*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT 3069*61046927SAndroid Build Coastguard Worker { 3070*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3071*61046927SAndroid Build Coastguard Worker 3072*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 3073*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 3074*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Index of slices 3075*61046927SAndroid Build Coastguard Worker 3076*61046927SAndroid Build Coastguard Worker ADDR2_META_FLAGS cMaskFlags; ///< CMASK flags 3077*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS colorFlags; ///< Color surface flags 3078*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Color surface type 3079*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< FMask surface swizzle mode 3080*61046927SAndroid Build Coastguard Worker 3081*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Color surface original width (of mip0) 3082*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Color surface original height (of mip0) 3083*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Color surface original slices (of mip0) 3084*61046927SAndroid Build Coastguard Worker 3085*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Color surfae sample number 3086*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Color surface fragment number 3087*61046927SAndroid Build Coastguard Worker 3088*61046927SAndroid Build Coastguard Worker UINT_32 pipeXor; ///< pipe Xor setting 3089*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT; 3090*61046927SAndroid Build Coastguard Worker 3091*61046927SAndroid Build Coastguard Worker /** 3092*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3093*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT 3094*61046927SAndroid Build Coastguard Worker * 3095*61046927SAndroid Build Coastguard Worker * @brief 3096*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeCmaskAddrFromCoord 3097*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3098*61046927SAndroid Build Coastguard Worker */ 3099*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT 3100*61046927SAndroid Build Coastguard Worker { 3101*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3102*61046927SAndroid Build Coastguard Worker 3103*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< CMASK address in bytes 3104*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within addr, 0 or 4 3105*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT; 3106*61046927SAndroid Build Coastguard Worker 3107*61046927SAndroid Build Coastguard Worker /** 3108*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3109*61046927SAndroid Build Coastguard Worker * Addr2ComputeCmaskAddrFromCoord 3110*61046927SAndroid Build Coastguard Worker * 3111*61046927SAndroid Build Coastguard Worker * @brief 3112*61046927SAndroid Build Coastguard Worker * Compute Cmask address according to coordinates (of MSAA color buffer) 3113*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3114*61046927SAndroid Build Coastguard Worker */ 3115*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeCmaskAddrFromCoord( 3116*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3117*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_INPUT* pIn, 3118*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_CMASK_ADDRFROMCOORD_OUTPUT* pOut); 3119*61046927SAndroid Build Coastguard Worker 3120*61046927SAndroid Build Coastguard Worker 3121*61046927SAndroid Build Coastguard Worker 3122*61046927SAndroid Build Coastguard Worker /** 3123*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3124*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_CMASK_COORDFROMADDR_INPUT 3125*61046927SAndroid Build Coastguard Worker * 3126*61046927SAndroid Build Coastguard Worker * @brief 3127*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeCmaskCoordFromAddr 3128*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3129*61046927SAndroid Build Coastguard Worker */ 3130*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_CMASK_COORDFROMADDR_INPUT 3131*61046927SAndroid Build Coastguard Worker { 3132*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3133*61046927SAndroid Build Coastguard Worker 3134*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< CMASK address in bytes 3135*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within addr, 0 or 4 3136*61046927SAndroid Build Coastguard Worker 3137*61046927SAndroid Build Coastguard Worker ADDR2_META_FLAGS cMaskFlags; ///< CMASK flags 3138*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS colorFlags; ///< Color surface flags 3139*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Color surface type 3140*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< FMask surface swizzle mode 3141*61046927SAndroid Build Coastguard Worker 3142*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Color surface original width (of mip0) 3143*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Color surface original height (of mip0) 3144*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Color surface original slices (of mip0) 3145*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Color surface total mipmap levels. 3146*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_CMASK_COORDFROMADDR_INPUT; 3147*61046927SAndroid Build Coastguard Worker 3148*61046927SAndroid Build Coastguard Worker /** 3149*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3150*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_CMASK_COORDFROMADDR_OUTPUT 3151*61046927SAndroid Build Coastguard Worker * 3152*61046927SAndroid Build Coastguard Worker * @brief 3153*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeCmaskCoordFromAddr 3154*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3155*61046927SAndroid Build Coastguard Worker */ 3156*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_CMASK_COORDFROMADDR_OUTPUT 3157*61046927SAndroid Build Coastguard Worker { 3158*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3159*61046927SAndroid Build Coastguard Worker 3160*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 3161*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 3162*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Index of slices 3163*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< mipmap level id 3164*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_CMASK_COORDFROMADDR_OUTPUT; 3165*61046927SAndroid Build Coastguard Worker 3166*61046927SAndroid Build Coastguard Worker /** 3167*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3168*61046927SAndroid Build Coastguard Worker * Addr2ComputeCmaskCoordFromAddr 3169*61046927SAndroid Build Coastguard Worker * 3170*61046927SAndroid Build Coastguard Worker * @brief 3171*61046927SAndroid Build Coastguard Worker * Compute coordinates within color buffer (1st pixel of a micro tile) according to 3172*61046927SAndroid Build Coastguard Worker * Cmask address 3173*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3174*61046927SAndroid Build Coastguard Worker */ 3175*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeCmaskCoordFromAddr( 3176*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3177*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_CMASK_COORDFROMADDR_INPUT* pIn, 3178*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_CMASK_COORDFROMADDR_OUTPUT* pOut); 3179*61046927SAndroid Build Coastguard Worker 3180*61046927SAndroid Build Coastguard Worker 3181*61046927SAndroid Build Coastguard Worker 3182*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 3183*61046927SAndroid Build Coastguard Worker // F-mask functions for Addr2 3184*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 3185*61046927SAndroid Build Coastguard Worker 3186*61046927SAndroid Build Coastguard Worker /** 3187*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3188*61046927SAndroid Build Coastguard Worker * ADDR2_FMASK_FLAGS 3189*61046927SAndroid Build Coastguard Worker * 3190*61046927SAndroid Build Coastguard Worker * @brief 3191*61046927SAndroid Build Coastguard Worker * FMASK flags 3192*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3193*61046927SAndroid Build Coastguard Worker */ 3194*61046927SAndroid Build Coastguard Worker typedef union _ADDR2_FMASK_FLAGS 3195*61046927SAndroid Build Coastguard Worker { 3196*61046927SAndroid Build Coastguard Worker struct 3197*61046927SAndroid Build Coastguard Worker { 3198*61046927SAndroid Build Coastguard Worker UINT_32 resolved : 1; ///< TRUE if this is a resolved fmask, used by H/W clients 3199*61046927SAndroid Build Coastguard Worker /// by H/W clients. S/W should always set it to FALSE. 3200*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 31; ///< Reserved for future use. 3201*61046927SAndroid Build Coastguard Worker }; 3202*61046927SAndroid Build Coastguard Worker 3203*61046927SAndroid Build Coastguard Worker UINT_32 value; 3204*61046927SAndroid Build Coastguard Worker } ADDR2_FMASK_FLAGS; 3205*61046927SAndroid Build Coastguard Worker 3206*61046927SAndroid Build Coastguard Worker /** 3207*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3208*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_FMASK_INFO_INPUT 3209*61046927SAndroid Build Coastguard Worker * 3210*61046927SAndroid Build Coastguard Worker * @brief 3211*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeFmaskInfo 3212*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3213*61046927SAndroid Build Coastguard Worker */ 3214*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_FMASK_INFO_INPUT 3215*61046927SAndroid Build Coastguard Worker { 3216*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3217*61046927SAndroid Build Coastguard Worker 3218*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< FMask surface swizzle mode 3219*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Color surface original width 3220*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Color surface original height 3221*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slices/depth 3222*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 3223*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 3224*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 3225*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 3226*61046927SAndroid Build Coastguard Worker ADDR2_FMASK_FLAGS fMaskFlags; ///< FMASK flags 3227*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_FMASK_INFO_INPUT; 3228*61046927SAndroid Build Coastguard Worker 3229*61046927SAndroid Build Coastguard Worker /** 3230*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3231*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_FMASK_INFO_OUTPUT 3232*61046927SAndroid Build Coastguard Worker * 3233*61046927SAndroid Build Coastguard Worker * @brief 3234*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeFmaskInfo 3235*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3236*61046927SAndroid Build Coastguard Worker */ 3237*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_FMASK_INFO_OUTPUT 3238*61046927SAndroid Build Coastguard Worker { 3239*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3240*61046927SAndroid Build Coastguard Worker 3241*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch of fmask in pixels 3242*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height of fmask in pixels 3243*61046927SAndroid Build Coastguard Worker UINT_32 baseAlign; ///< Base alignment 3244*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Slices of fmask 3245*61046927SAndroid Build Coastguard Worker UINT_32 fmaskBytes; ///< Size of fmask in bytes 3246*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel of FMASK is: number of bit planes 3247*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 3248*61046927SAndroid Build Coastguard Worker UINT_32 sliceSize; ///< Size of slice in bytes 3249*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_FMASK_INFO_OUTPUT; 3250*61046927SAndroid Build Coastguard Worker 3251*61046927SAndroid Build Coastguard Worker /** 3252*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3253*61046927SAndroid Build Coastguard Worker * Addr2ComputeFmaskInfo 3254*61046927SAndroid Build Coastguard Worker * 3255*61046927SAndroid Build Coastguard Worker * @brief 3256*61046927SAndroid Build Coastguard Worker * Compute Fmask pitch/height/slices/alignments and size in bytes 3257*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3258*61046927SAndroid Build Coastguard Worker */ 3259*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeFmaskInfo( 3260*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3261*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_FMASK_INFO_INPUT* pIn, 3262*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_FMASK_INFO_OUTPUT* pOut); 3263*61046927SAndroid Build Coastguard Worker 3264*61046927SAndroid Build Coastguard Worker 3265*61046927SAndroid Build Coastguard Worker 3266*61046927SAndroid Build Coastguard Worker /** 3267*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3268*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_INPUT 3269*61046927SAndroid Build Coastguard Worker * 3270*61046927SAndroid Build Coastguard Worker * @brief 3271*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeFmaskAddrFromCoord 3272*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3273*61046927SAndroid Build Coastguard Worker */ 3274*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_INPUT 3275*61046927SAndroid Build Coastguard Worker { 3276*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3277*61046927SAndroid Build Coastguard Worker 3278*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< FMask surface swizzle mode 3279*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 3280*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 3281*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 3282*61046927SAndroid Build Coastguard Worker UINT_32 sample; ///< Sample index (fragment index for EQAA) 3283*61046927SAndroid Build Coastguard Worker UINT_32 plane; ///< Plane number 3284*61046927SAndroid Build Coastguard Worker 3285*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Color surface original width 3286*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Color surface original height 3287*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 3288*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 3289*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 3290*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 3291*61046927SAndroid Build Coastguard Worker UINT_32 tileSwizzle; ///< Combined swizzle used to do bank/pipe rotation 3292*61046927SAndroid Build Coastguard Worker 3293*61046927SAndroid Build Coastguard Worker ADDR2_FMASK_FLAGS fMaskFlags; ///< FMASK flags 3294*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_INPUT; 3295*61046927SAndroid Build Coastguard Worker 3296*61046927SAndroid Build Coastguard Worker /** 3297*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3298*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT 3299*61046927SAndroid Build Coastguard Worker * 3300*61046927SAndroid Build Coastguard Worker * @brief 3301*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeFmaskAddrFromCoord 3302*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3303*61046927SAndroid Build Coastguard Worker */ 3304*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT 3305*61046927SAndroid Build Coastguard Worker { 3306*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3307*61046927SAndroid Build Coastguard Worker 3308*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Fmask address 3309*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within fmaskAddr, 0-7. 3310*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT; 3311*61046927SAndroid Build Coastguard Worker 3312*61046927SAndroid Build Coastguard Worker /** 3313*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3314*61046927SAndroid Build Coastguard Worker * Addr2ComputeFmaskAddrFromCoord 3315*61046927SAndroid Build Coastguard Worker * 3316*61046927SAndroid Build Coastguard Worker * @brief 3317*61046927SAndroid Build Coastguard Worker * Compute Fmask address according to coordinates (x,y,slice,sample,plane) 3318*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3319*61046927SAndroid Build Coastguard Worker */ 3320*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeFmaskAddrFromCoord( 3321*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3322*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_INPUT* pIn, 3323*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_FMASK_ADDRFROMCOORD_OUTPUT* pOut); 3324*61046927SAndroid Build Coastguard Worker 3325*61046927SAndroid Build Coastguard Worker 3326*61046927SAndroid Build Coastguard Worker 3327*61046927SAndroid Build Coastguard Worker /** 3328*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3329*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_FMASK_COORDFROMADDR_INPUT 3330*61046927SAndroid Build Coastguard Worker * 3331*61046927SAndroid Build Coastguard Worker * @brief 3332*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeFmaskCoordFromAddr 3333*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3334*61046927SAndroid Build Coastguard Worker */ 3335*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_FMASK_COORDFROMADDR_INPUT 3336*61046927SAndroid Build Coastguard Worker { 3337*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3338*61046927SAndroid Build Coastguard Worker 3339*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Address 3340*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within addr, 0-7. 3341*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< FMask surface swizzle mode 3342*61046927SAndroid Build Coastguard Worker 3343*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Color surface original width 3344*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Color surface original height 3345*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 3346*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments 3347*61046927SAndroid Build Coastguard Worker 3348*61046927SAndroid Build Coastguard Worker UINT_32 tileSwizzle; ///< Combined swizzle used to do bank/pipe rotation 3349*61046927SAndroid Build Coastguard Worker 3350*61046927SAndroid Build Coastguard Worker ADDR2_FMASK_FLAGS fMaskFlags; ///< FMASK flags 3351*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_FMASK_COORDFROMADDR_INPUT; 3352*61046927SAndroid Build Coastguard Worker 3353*61046927SAndroid Build Coastguard Worker /** 3354*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3355*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_FMASK_COORDFROMADDR_OUTPUT 3356*61046927SAndroid Build Coastguard Worker * 3357*61046927SAndroid Build Coastguard Worker * @brief 3358*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeFmaskCoordFromAddr 3359*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3360*61046927SAndroid Build Coastguard Worker */ 3361*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_FMASK_COORDFROMADDR_OUTPUT 3362*61046927SAndroid Build Coastguard Worker { 3363*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3364*61046927SAndroid Build Coastguard Worker 3365*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 3366*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 3367*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 3368*61046927SAndroid Build Coastguard Worker UINT_32 sample; ///< Sample index (fragment index for EQAA) 3369*61046927SAndroid Build Coastguard Worker UINT_32 plane; ///< Plane number 3370*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_FMASK_COORDFROMADDR_OUTPUT; 3371*61046927SAndroid Build Coastguard Worker 3372*61046927SAndroid Build Coastguard Worker /** 3373*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3374*61046927SAndroid Build Coastguard Worker * Addr2ComputeFmaskCoordFromAddr 3375*61046927SAndroid Build Coastguard Worker * 3376*61046927SAndroid Build Coastguard Worker * @brief 3377*61046927SAndroid Build Coastguard Worker * Compute FMASK coordinate from an given address 3378*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3379*61046927SAndroid Build Coastguard Worker */ 3380*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeFmaskCoordFromAddr( 3381*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3382*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_FMASK_COORDFROMADDR_INPUT* pIn, 3383*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_FMASK_COORDFROMADDR_OUTPUT* pOut); 3384*61046927SAndroid Build Coastguard Worker 3385*61046927SAndroid Build Coastguard Worker 3386*61046927SAndroid Build Coastguard Worker 3387*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 3388*61046927SAndroid Build Coastguard Worker // DCC key functions for Addr2 3389*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 3390*61046927SAndroid Build Coastguard Worker 3391*61046927SAndroid Build Coastguard Worker /** 3392*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3393*61046927SAndroid Build Coastguard Worker * _ADDR2_COMPUTE_DCCINFO_INPUT 3394*61046927SAndroid Build Coastguard Worker * 3395*61046927SAndroid Build Coastguard Worker * @brief 3396*61046927SAndroid Build Coastguard Worker * Input structure of Addr2ComputeDccInfo 3397*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3398*61046927SAndroid Build Coastguard Worker */ 3399*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_DCCINFO_INPUT 3400*61046927SAndroid Build Coastguard Worker { 3401*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3402*61046927SAndroid Build Coastguard Worker 3403*61046927SAndroid Build Coastguard Worker ADDR2_META_FLAGS dccKeyFlags; ///< DCC key flags 3404*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS colorFlags; ///< Color surface flags 3405*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Color surface type 3406*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Color surface swizzle mode 3407*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< bits per pixel 3408*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Color surface original width (of mip0) 3409*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Color surface original height (of mip0) 3410*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number of slices, of color surface (of mip0) 3411*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Fragment number of color surface 3412*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels of color surface 3413*61046927SAndroid Build Coastguard Worker UINT_32 dataSurfaceSize; ///< The padded size of all slices and mip levels 3414*61046927SAndroid Build Coastguard Worker ///< useful in meta linear case 3415*61046927SAndroid Build Coastguard Worker UINT_32 firstMipIdInTail; ///< The id of first mip in tail, if no mip is in tail, 3416*61046927SAndroid Build Coastguard Worker /// it should be number of mip levels 3417*61046927SAndroid Build Coastguard Worker /// Only for GFX10 3418*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_DCCINFO_INPUT; 3419*61046927SAndroid Build Coastguard Worker 3420*61046927SAndroid Build Coastguard Worker /** 3421*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3422*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_DCCINFO_OUTPUT 3423*61046927SAndroid Build Coastguard Worker * 3424*61046927SAndroid Build Coastguard Worker * @brief 3425*61046927SAndroid Build Coastguard Worker * Output structure of Addr2ComputeDccInfo 3426*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3427*61046927SAndroid Build Coastguard Worker */ 3428*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_DCCINFO_OUTPUT 3429*61046927SAndroid Build Coastguard Worker { 3430*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3431*61046927SAndroid Build Coastguard Worker 3432*61046927SAndroid Build Coastguard Worker UINT_32 dccRamBaseAlign; ///< Base alignment of dcc key 3433*61046927SAndroid Build Coastguard Worker UINT_32 dccRamSize; ///< Size of dcc key 3434*61046927SAndroid Build Coastguard Worker 3435*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< DCC surface mip chain pitch 3436*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< DCC surface mip chain height 3437*61046927SAndroid Build Coastguard Worker UINT_32 depth; ///< DCC surface mip chain depth 3438*61046927SAndroid Build Coastguard Worker 3439*61046927SAndroid Build Coastguard Worker UINT_32 compressBlkWidth; ///< DCC compress block width 3440*61046927SAndroid Build Coastguard Worker UINT_32 compressBlkHeight; ///< DCC compress block height 3441*61046927SAndroid Build Coastguard Worker UINT_32 compressBlkDepth; ///< DCC compress block depth 3442*61046927SAndroid Build Coastguard Worker 3443*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkWidth; ///< DCC meta block width 3444*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkHeight; ///< DCC meta block height 3445*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkDepth; ///< DCC meta block depth 3446*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkSize; ///< DCC meta block size in bytes 3447*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkNumPerSlice; ///< Number of metablock within one slice 3448*61046927SAndroid Build Coastguard Worker 3449*61046927SAndroid Build Coastguard Worker union 3450*61046927SAndroid Build Coastguard Worker { 3451*61046927SAndroid Build Coastguard Worker UINT_32 fastClearSizePerSlice; ///< Size of DCC within a slice should be fast cleared 3452*61046927SAndroid Build Coastguard Worker UINT_32 dccRamSliceSize; ///< DCC ram size per slice. For mipmap, it's 3453*61046927SAndroid Build Coastguard Worker /// the slize size of a mip chain, the thickness of a 3454*61046927SAndroid Build Coastguard Worker /// a slice is meta block depth 3455*61046927SAndroid Build Coastguard Worker /// Only for GFX10 3456*61046927SAndroid Build Coastguard Worker }; 3457*61046927SAndroid Build Coastguard Worker 3458*61046927SAndroid Build Coastguard Worker ADDR2_META_MIP_INFO* pMipInfo; ///< DCC mip information 3459*61046927SAndroid Build Coastguard Worker 3460*61046927SAndroid Build Coastguard Worker /* The equation for doing DCC address computations in shaders. */ 3461*61046927SAndroid Build Coastguard Worker union { 3462*61046927SAndroid Build Coastguard Worker /* This is chip-specific, and it varies with: 3463*61046927SAndroid Build Coastguard Worker * - resource type 3464*61046927SAndroid Build Coastguard Worker * - swizzle_mode 3465*61046927SAndroid Build Coastguard Worker * - bpp 3466*61046927SAndroid Build Coastguard Worker * - number of fragments 3467*61046927SAndroid Build Coastguard Worker * - pipe_aligned 3468*61046927SAndroid Build Coastguard Worker * - rb_aligned 3469*61046927SAndroid Build Coastguard Worker */ 3470*61046927SAndroid Build Coastguard Worker struct gfx9_addr_meta_equation gfx9; 3471*61046927SAndroid Build Coastguard Worker 3472*61046927SAndroid Build Coastguard Worker /* This is chip-specific, it requires 64KB_R_X, and it varies with: 3473*61046927SAndroid Build Coastguard Worker * - bpp 3474*61046927SAndroid Build Coastguard Worker * - pipe_aligned 3475*61046927SAndroid Build Coastguard Worker */ 3476*61046927SAndroid Build Coastguard Worker UINT_16 *gfx10_bits; /* 68 2-byte elements */ 3477*61046927SAndroid Build Coastguard Worker } equation; 3478*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_DCCINFO_OUTPUT; 3479*61046927SAndroid Build Coastguard Worker 3480*61046927SAndroid Build Coastguard Worker /** 3481*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3482*61046927SAndroid Build Coastguard Worker * Addr2ComputeDccInfo 3483*61046927SAndroid Build Coastguard Worker * 3484*61046927SAndroid Build Coastguard Worker * @brief 3485*61046927SAndroid Build Coastguard Worker * Compute DCC key size, base alignment 3486*61046927SAndroid Build Coastguard Worker * info 3487*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3488*61046927SAndroid Build Coastguard Worker */ 3489*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeDccInfo( 3490*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3491*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_DCCINFO_INPUT* pIn, 3492*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_DCCINFO_OUTPUT* pOut); 3493*61046927SAndroid Build Coastguard Worker 3494*61046927SAndroid Build Coastguard Worker 3495*61046927SAndroid Build Coastguard Worker /** 3496*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3497*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT 3498*61046927SAndroid Build Coastguard Worker * 3499*61046927SAndroid Build Coastguard Worker * @brief 3500*61046927SAndroid Build Coastguard Worker * Input structure for Addr2ComputeDccAddrFromCoord 3501*61046927SAndroid Build Coastguard Worker * 3502*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3503*61046927SAndroid Build Coastguard Worker */ 3504*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT 3505*61046927SAndroid Build Coastguard Worker { 3506*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3507*61046927SAndroid Build Coastguard Worker 3508*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 3509*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 3510*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Index of slices 3511*61046927SAndroid Build Coastguard Worker UINT_32 sample; ///< Index of samples, means fragment index for EQAA 3512*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< mipmap level id 3513*61046927SAndroid Build Coastguard Worker 3514*61046927SAndroid Build Coastguard Worker ADDR2_META_FLAGS dccKeyFlags; ///< DCC flags 3515*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS colorFlags; ///< Color surface flags 3516*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Color surface type 3517*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Color surface swizzle mode 3518*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Color surface bits per pixel 3519*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Color surface original width (of mip0) 3520*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Color surface original height (of mip0) 3521*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Color surface original slices (of mip0) 3522*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Color surface mipmap levels 3523*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Color surface fragment number 3524*61046927SAndroid Build Coastguard Worker 3525*61046927SAndroid Build Coastguard Worker UINT_32 pipeXor; ///< pipe Xor setting 3526*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< ADDR2_COMPUTE_DCC_INFO_OUTPUT::pitch 3527*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< ADDR2_COMPUTE_DCC_INFO_OUTPUT::height 3528*61046927SAndroid Build Coastguard Worker UINT_32 compressBlkWidth; ///< ADDR2_COMPUTE_DCC_INFO_OUTPUT::compressBlkWidth 3529*61046927SAndroid Build Coastguard Worker UINT_32 compressBlkHeight; ///< ADDR2_COMPUTE_DCC_INFO_OUTPUT::compressBlkHeight 3530*61046927SAndroid Build Coastguard Worker UINT_32 compressBlkDepth; ///< ADDR2_COMPUTE_DCC_INFO_OUTPUT::compressBlkDepth 3531*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkWidth; ///< ADDR2_COMPUTE_DCC_INFO_OUTPUT::metaBlkWidth 3532*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkHeight; ///< ADDR2_COMPUTE_DCC_INFO_OUTPUT::metaBlkHeight 3533*61046927SAndroid Build Coastguard Worker UINT_32 metaBlkDepth; ///< ADDR2_COMPUTE_DCC_INFO_OUTPUT::metaBlkDepth 3534*61046927SAndroid Build Coastguard Worker UINT_32 dccRamSliceSize; ///< ADDR2_COMPUTE_DCC_INFO_OUTPUT::dccRamSliceSize 3535*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT; 3536*61046927SAndroid Build Coastguard Worker 3537*61046927SAndroid Build Coastguard Worker /** 3538*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3539*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT 3540*61046927SAndroid Build Coastguard Worker * 3541*61046927SAndroid Build Coastguard Worker * @brief 3542*61046927SAndroid Build Coastguard Worker * Output structure for Addr2ComputeDccAddrFromCoord 3543*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3544*61046927SAndroid Build Coastguard Worker */ 3545*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT 3546*61046927SAndroid Build Coastguard Worker { 3547*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3548*61046927SAndroid Build Coastguard Worker 3549*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< DCC address in bytes 3550*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT; 3551*61046927SAndroid Build Coastguard Worker 3552*61046927SAndroid Build Coastguard Worker /** 3553*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3554*61046927SAndroid Build Coastguard Worker * Addr2ComputeDccAddrFromCoord 3555*61046927SAndroid Build Coastguard Worker * 3556*61046927SAndroid Build Coastguard Worker * @brief 3557*61046927SAndroid Build Coastguard Worker * Compute DCC address according to coordinates (of MSAA color buffer) 3558*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3559*61046927SAndroid Build Coastguard Worker */ 3560*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeDccAddrFromCoord( 3561*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3562*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_DCC_ADDRFROMCOORD_INPUT* pIn, 3563*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_DCC_ADDRFROMCOORD_OUTPUT* pOut); 3564*61046927SAndroid Build Coastguard Worker 3565*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 3566*61046927SAndroid Build Coastguard Worker // Misc functions for Addr2 3567*61046927SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////////////////////////// 3568*61046927SAndroid Build Coastguard Worker 3569*61046927SAndroid Build Coastguard Worker /** 3570*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3571*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_PIPEBANKXOR_INPUT 3572*61046927SAndroid Build Coastguard Worker * 3573*61046927SAndroid Build Coastguard Worker * @brief 3574*61046927SAndroid Build Coastguard Worker * Input structure of Addr2ComputePipebankXor 3575*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3576*61046927SAndroid Build Coastguard Worker */ 3577*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_PIPEBANKXOR_INPUT 3578*61046927SAndroid Build Coastguard Worker { 3579*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3580*61046927SAndroid Build Coastguard Worker UINT_32 surfIndex; ///< Input surface index 3581*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS flags; ///< Surface flag 3582*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Surface swizzle mode 3583*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface resource type 3584*61046927SAndroid Build Coastguard Worker AddrFormat format; ///< Surface format 3585*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 3586*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 3587*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 3588*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 3589*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_PIPEBANKXOR_INPUT; 3590*61046927SAndroid Build Coastguard Worker 3591*61046927SAndroid Build Coastguard Worker /** 3592*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3593*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_PIPEBANKXOR_OUTPUT 3594*61046927SAndroid Build Coastguard Worker * 3595*61046927SAndroid Build Coastguard Worker * @brief 3596*61046927SAndroid Build Coastguard Worker * Output structure of Addr2ComputePipebankXor 3597*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3598*61046927SAndroid Build Coastguard Worker */ 3599*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_PIPEBANKXOR_OUTPUT 3600*61046927SAndroid Build Coastguard Worker { 3601*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3602*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Pipe bank xor 3603*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_PIPEBANKXOR_OUTPUT; 3604*61046927SAndroid Build Coastguard Worker 3605*61046927SAndroid Build Coastguard Worker /** 3606*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3607*61046927SAndroid Build Coastguard Worker * Addr2ComputePipeBankXor 3608*61046927SAndroid Build Coastguard Worker * 3609*61046927SAndroid Build Coastguard Worker * @brief 3610*61046927SAndroid Build Coastguard Worker * Calculate a valid bank pipe xor value for client to use. 3611*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3612*61046927SAndroid Build Coastguard Worker */ 3613*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputePipeBankXor( 3614*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3615*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_PIPEBANKXOR_INPUT* pIn, 3616*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_PIPEBANKXOR_OUTPUT* pOut); 3617*61046927SAndroid Build Coastguard Worker 3618*61046927SAndroid Build Coastguard Worker /** 3619*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3620*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_SLICE_PIPEBANKXOR_INPUT 3621*61046927SAndroid Build Coastguard Worker * 3622*61046927SAndroid Build Coastguard Worker * @brief 3623*61046927SAndroid Build Coastguard Worker * Input structure of Addr2ComputeSlicePipeBankXor 3624*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3625*61046927SAndroid Build Coastguard Worker */ 3626*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_SLICE_PIPEBANKXOR_INPUT 3627*61046927SAndroid Build Coastguard Worker { 3628*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3629*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Surface swizzle mode 3630*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface resource type 3631*61046927SAndroid Build Coastguard Worker UINT_32 bpe; ///< bits per element (e.g. block size for BCn format) 3632*61046927SAndroid Build Coastguard Worker UINT_32 basePipeBankXor; ///< Base pipe bank xor 3633*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice id 3634*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 3635*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_SLICE_PIPEBANKXOR_INPUT; 3636*61046927SAndroid Build Coastguard Worker 3637*61046927SAndroid Build Coastguard Worker /** 3638*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3639*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT 3640*61046927SAndroid Build Coastguard Worker * 3641*61046927SAndroid Build Coastguard Worker * @brief 3642*61046927SAndroid Build Coastguard Worker * Output structure of Addr2ComputeSlicePipeBankXor 3643*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3644*61046927SAndroid Build Coastguard Worker */ 3645*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT 3646*61046927SAndroid Build Coastguard Worker { 3647*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3648*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Pipe bank xor 3649*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT; 3650*61046927SAndroid Build Coastguard Worker 3651*61046927SAndroid Build Coastguard Worker /** 3652*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3653*61046927SAndroid Build Coastguard Worker * Addr2ComputeSlicePipeBankXor 3654*61046927SAndroid Build Coastguard Worker * 3655*61046927SAndroid Build Coastguard Worker * @brief 3656*61046927SAndroid Build Coastguard Worker * Calculate slice pipe bank xor value based on base pipe bank xor and slice id. 3657*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3658*61046927SAndroid Build Coastguard Worker */ 3659*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeSlicePipeBankXor( 3660*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3661*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_SLICE_PIPEBANKXOR_INPUT* pIn, 3662*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT* pOut); 3663*61046927SAndroid Build Coastguard Worker 3664*61046927SAndroid Build Coastguard Worker /** 3665*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3666*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT 3667*61046927SAndroid Build Coastguard Worker * 3668*61046927SAndroid Build Coastguard Worker * @brief 3669*61046927SAndroid Build Coastguard Worker * Input structure of Addr2ComputeSubResourceOffsetForSwizzlePattern 3670*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3671*61046927SAndroid Build Coastguard Worker */ 3672*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT 3673*61046927SAndroid Build Coastguard Worker { 3674*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3675*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Surface swizzle mode 3676*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface resource type 3677*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Per resource xor 3678*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice id 3679*61046927SAndroid Build Coastguard Worker UINT_64 sliceSize; ///< Slice size of a mip chain 3680*61046927SAndroid Build Coastguard Worker UINT_64 macroBlockOffset; ///< Macro block offset, returned in ADDR2_MIP_INFO 3681*61046927SAndroid Build Coastguard Worker UINT_32 mipTailOffset; ///< Mip tail offset, returned in ADDR2_MIP_INFO 3682*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT; 3683*61046927SAndroid Build Coastguard Worker 3684*61046927SAndroid Build Coastguard Worker /** 3685*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3686*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT 3687*61046927SAndroid Build Coastguard Worker * 3688*61046927SAndroid Build Coastguard Worker * @brief 3689*61046927SAndroid Build Coastguard Worker * Output structure of Addr2ComputeSubResourceOffsetForSwizzlePattern 3690*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3691*61046927SAndroid Build Coastguard Worker */ 3692*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT 3693*61046927SAndroid Build Coastguard Worker { 3694*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3695*61046927SAndroid Build Coastguard Worker UINT_64 offset; ///< offset 3696*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT; 3697*61046927SAndroid Build Coastguard Worker 3698*61046927SAndroid Build Coastguard Worker /** 3699*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3700*61046927SAndroid Build Coastguard Worker * Addr2ComputeSubResourceOffsetForSwizzlePattern 3701*61046927SAndroid Build Coastguard Worker * 3702*61046927SAndroid Build Coastguard Worker * @brief 3703*61046927SAndroid Build Coastguard Worker * Calculate sub resource offset to support swizzle pattern. 3704*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3705*61046927SAndroid Build Coastguard Worker */ 3706*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeSubResourceOffsetForSwizzlePattern( 3707*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3708*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT* pIn, 3709*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT* pOut); 3710*61046927SAndroid Build Coastguard Worker 3711*61046927SAndroid Build Coastguard Worker /** 3712*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3713*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT 3714*61046927SAndroid Build Coastguard Worker * 3715*61046927SAndroid Build Coastguard Worker * @brief 3716*61046927SAndroid Build Coastguard Worker * Input structure of Addr2ComputeNonBlockCompressedView 3717*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3718*61046927SAndroid Build Coastguard Worker */ 3719*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT 3720*61046927SAndroid Build Coastguard Worker { 3721*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3722*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS flags; ///< Surface flags 3723*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Swizzle Mode for Addr2 3724*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface type 3725*61046927SAndroid Build Coastguard Worker AddrFormat format; ///< Surface format 3726*61046927SAndroid Build Coastguard Worker UINT_32 width; ///< Width of mip0 in texels (not in compressed block) 3727*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height of mip0 in texels (not in compressed block) 3728*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number surface slice/depth of mip0 3729*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels. 3730*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Combined swizzle used to do bank/pipe rotation 3731*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Index of slice to view 3732*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< Id of mip to view 3733*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT; 3734*61046927SAndroid Build Coastguard Worker 3735*61046927SAndroid Build Coastguard Worker /** 3736*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3737*61046927SAndroid Build Coastguard Worker * ADDR2_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT 3738*61046927SAndroid Build Coastguard Worker * 3739*61046927SAndroid Build Coastguard Worker * @brief 3740*61046927SAndroid Build Coastguard Worker * Output structure of Addr2ComputeNonBlockCompressedView 3741*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3742*61046927SAndroid Build Coastguard Worker */ 3743*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT 3744*61046927SAndroid Build Coastguard Worker { 3745*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3746*61046927SAndroid Build Coastguard Worker UINT_64 offset; ///< Offset shifted from resource base for the view 3747*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Pipe bank xor for the view 3748*61046927SAndroid Build Coastguard Worker UINT_32 unalignedWidth; ///< Mip0 width (in element) for the view 3749*61046927SAndroid Build Coastguard Worker UINT_32 unalignedHeight; ///< Mip0 height (in element) for the view 3750*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels for the view 3751*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< Mip ID for the view 3752*61046927SAndroid Build Coastguard Worker } ADDR2_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT; 3753*61046927SAndroid Build Coastguard Worker 3754*61046927SAndroid Build Coastguard Worker /** 3755*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3756*61046927SAndroid Build Coastguard Worker * Addr2ComputeNonBlockCompressedView 3757*61046927SAndroid Build Coastguard Worker * 3758*61046927SAndroid Build Coastguard Worker * @brief 3759*61046927SAndroid Build Coastguard Worker * Compute non-block-compressed view for a given mipmap level/slice 3760*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3761*61046927SAndroid Build Coastguard Worker */ 3762*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2ComputeNonBlockCompressedView( 3763*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3764*61046927SAndroid Build Coastguard Worker const ADDR2_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT* pIn, 3765*61046927SAndroid Build Coastguard Worker ADDR2_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT* pOut); 3766*61046927SAndroid Build Coastguard Worker 3767*61046927SAndroid Build Coastguard Worker /** 3768*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3769*61046927SAndroid Build Coastguard Worker * ADDR2_BLOCK_SET 3770*61046927SAndroid Build Coastguard Worker * 3771*61046927SAndroid Build Coastguard Worker * @brief 3772*61046927SAndroid Build Coastguard Worker * Bit field that defines block type 3773*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3774*61046927SAndroid Build Coastguard Worker */ 3775*61046927SAndroid Build Coastguard Worker typedef union _ADDR2_BLOCK_SET 3776*61046927SAndroid Build Coastguard Worker { 3777*61046927SAndroid Build Coastguard Worker struct 3778*61046927SAndroid Build Coastguard Worker { 3779*61046927SAndroid Build Coastguard Worker UINT_32 micro : 1; // 256B block for 2D resource 3780*61046927SAndroid Build Coastguard Worker UINT_32 macroThin4KB : 1; // Thin 4KB for 2D/3D resource 3781*61046927SAndroid Build Coastguard Worker UINT_32 macroThick4KB : 1; // Thick 4KB for 3D resource 3782*61046927SAndroid Build Coastguard Worker UINT_32 macroThin64KB : 1; // Thin 64KB for 2D/3D resource 3783*61046927SAndroid Build Coastguard Worker UINT_32 macroThick64KB : 1; // Thick 64KB for 3D resource 3784*61046927SAndroid Build Coastguard Worker UINT_32 var : 1; // VAR block 3785*61046927SAndroid Build Coastguard Worker UINT_32 : 1; 3786*61046927SAndroid Build Coastguard Worker UINT_32 linear : 1; // Linear block 3787*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 24; 3788*61046927SAndroid Build Coastguard Worker }; 3789*61046927SAndroid Build Coastguard Worker 3790*61046927SAndroid Build Coastguard Worker struct 3791*61046927SAndroid Build Coastguard Worker { 3792*61046927SAndroid Build Coastguard Worker UINT_32 : 5; 3793*61046927SAndroid Build Coastguard Worker UINT_32 thin256KB : 1; // Thin 256KB block 3794*61046927SAndroid Build Coastguard Worker UINT_32 thick256KB : 1; // Thick 256KB block 3795*61046927SAndroid Build Coastguard Worker UINT_32 : 25; 3796*61046927SAndroid Build Coastguard Worker } gfx11; 3797*61046927SAndroid Build Coastguard Worker 3798*61046927SAndroid Build Coastguard Worker UINT_32 value; 3799*61046927SAndroid Build Coastguard Worker } ADDR2_BLOCK_SET; 3800*61046927SAndroid Build Coastguard Worker 3801*61046927SAndroid Build Coastguard Worker /** 3802*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3803*61046927SAndroid Build Coastguard Worker * ADDR2_SWTYPE_SET 3804*61046927SAndroid Build Coastguard Worker * 3805*61046927SAndroid Build Coastguard Worker * @brief 3806*61046927SAndroid Build Coastguard Worker * Bit field that defines swizzle type 3807*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3808*61046927SAndroid Build Coastguard Worker */ 3809*61046927SAndroid Build Coastguard Worker typedef union _ADDR2_SWTYPE_SET 3810*61046927SAndroid Build Coastguard Worker { 3811*61046927SAndroid Build Coastguard Worker struct 3812*61046927SAndroid Build Coastguard Worker { 3813*61046927SAndroid Build Coastguard Worker UINT_32 sw_Z : 1; // SW_*_Z_* 3814*61046927SAndroid Build Coastguard Worker UINT_32 sw_S : 1; // SW_*_S_* 3815*61046927SAndroid Build Coastguard Worker UINT_32 sw_D : 1; // SW_*_D_* 3816*61046927SAndroid Build Coastguard Worker UINT_32 sw_R : 1; // SW_*_R_* 3817*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 28; 3818*61046927SAndroid Build Coastguard Worker }; 3819*61046927SAndroid Build Coastguard Worker 3820*61046927SAndroid Build Coastguard Worker UINT_32 value; 3821*61046927SAndroid Build Coastguard Worker } ADDR2_SWTYPE_SET; 3822*61046927SAndroid Build Coastguard Worker 3823*61046927SAndroid Build Coastguard Worker /** 3824*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3825*61046927SAndroid Build Coastguard Worker * ADDR2_SWMODE_SET 3826*61046927SAndroid Build Coastguard Worker * 3827*61046927SAndroid Build Coastguard Worker * @brief 3828*61046927SAndroid Build Coastguard Worker * Bit field that defines swizzle type 3829*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3830*61046927SAndroid Build Coastguard Worker */ 3831*61046927SAndroid Build Coastguard Worker typedef union _ADDR2_SWMODE_SET 3832*61046927SAndroid Build Coastguard Worker { 3833*61046927SAndroid Build Coastguard Worker struct 3834*61046927SAndroid Build Coastguard Worker { 3835*61046927SAndroid Build Coastguard Worker UINT_32 swLinear : 1; 3836*61046927SAndroid Build Coastguard Worker UINT_32 sw256B_S : 1; 3837*61046927SAndroid Build Coastguard Worker UINT_32 sw256B_D : 1; 3838*61046927SAndroid Build Coastguard Worker UINT_32 sw256B_R : 1; 3839*61046927SAndroid Build Coastguard Worker UINT_32 sw4KB_Z : 1; 3840*61046927SAndroid Build Coastguard Worker UINT_32 sw4KB_S : 1; 3841*61046927SAndroid Build Coastguard Worker UINT_32 sw4KB_D : 1; 3842*61046927SAndroid Build Coastguard Worker UINT_32 sw4KB_R : 1; 3843*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_Z : 1; 3844*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_S : 1; 3845*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_D : 1; 3846*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_R : 1; 3847*61046927SAndroid Build Coastguard Worker UINT_32 swMiscDef12 : 1; 3848*61046927SAndroid Build Coastguard Worker UINT_32 swMiscDef13 : 1; 3849*61046927SAndroid Build Coastguard Worker UINT_32 swMiscDef14 : 1; 3850*61046927SAndroid Build Coastguard Worker UINT_32 swMiscDef15 : 1; 3851*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_Z_T : 1; 3852*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_S_T : 1; 3853*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_D_T : 1; 3854*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_R_T : 1; 3855*61046927SAndroid Build Coastguard Worker UINT_32 sw4KB_Z_X : 1; 3856*61046927SAndroid Build Coastguard Worker UINT_32 sw4KB_S_X : 1; 3857*61046927SAndroid Build Coastguard Worker UINT_32 sw4KB_D_X : 1; 3858*61046927SAndroid Build Coastguard Worker UINT_32 sw4KB_R_X : 1; 3859*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_Z_X : 1; 3860*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_S_X : 1; 3861*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_D_X : 1; 3862*61046927SAndroid Build Coastguard Worker UINT_32 sw64KB_R_X : 1; 3863*61046927SAndroid Build Coastguard Worker UINT_32 swMiscDef28 : 1; 3864*61046927SAndroid Build Coastguard Worker UINT_32 swMiscDef29 : 1; 3865*61046927SAndroid Build Coastguard Worker UINT_32 swMiscDef30 : 1; 3866*61046927SAndroid Build Coastguard Worker UINT_32 swMiscDef31 : 1; 3867*61046927SAndroid Build Coastguard Worker }; 3868*61046927SAndroid Build Coastguard Worker 3869*61046927SAndroid Build Coastguard Worker struct 3870*61046927SAndroid Build Coastguard Worker { 3871*61046927SAndroid Build Coastguard Worker UINT_32 : 28; 3872*61046927SAndroid Build Coastguard Worker UINT_32 swVar_Z_X : 1; 3873*61046927SAndroid Build Coastguard Worker UINT_32 : 2; 3874*61046927SAndroid Build Coastguard Worker UINT_32 swVar_R_X : 1; 3875*61046927SAndroid Build Coastguard Worker } gfx10; 3876*61046927SAndroid Build Coastguard Worker 3877*61046927SAndroid Build Coastguard Worker struct 3878*61046927SAndroid Build Coastguard Worker { 3879*61046927SAndroid Build Coastguard Worker UINT_32 : 28; 3880*61046927SAndroid Build Coastguard Worker UINT_32 sw256KB_Z_X : 1; 3881*61046927SAndroid Build Coastguard Worker UINT_32 sw256KB_S_X : 1; 3882*61046927SAndroid Build Coastguard Worker UINT_32 sw256KB_D_X : 1; 3883*61046927SAndroid Build Coastguard Worker UINT_32 sw256KB_R_X : 1; 3884*61046927SAndroid Build Coastguard Worker } gfx11; 3885*61046927SAndroid Build Coastguard Worker 3886*61046927SAndroid Build Coastguard Worker UINT_32 value; 3887*61046927SAndroid Build Coastguard Worker } ADDR2_SWMODE_SET; 3888*61046927SAndroid Build Coastguard Worker 3889*61046927SAndroid Build Coastguard Worker /** 3890*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3891*61046927SAndroid Build Coastguard Worker * ADDR2_GET_PREFERRED_SURF_SETTING_INPUT 3892*61046927SAndroid Build Coastguard Worker * 3893*61046927SAndroid Build Coastguard Worker * @brief 3894*61046927SAndroid Build Coastguard Worker * Input structure of Addr2GetPreferredSurfaceSetting 3895*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3896*61046927SAndroid Build Coastguard Worker */ 3897*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_GET_PREFERRED_SURF_SETTING_INPUT 3898*61046927SAndroid Build Coastguard Worker { 3899*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3900*61046927SAndroid Build Coastguard Worker 3901*61046927SAndroid Build Coastguard Worker ADDR2_SURFACE_FLAGS flags; ///< Surface flags 3902*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface type 3903*61046927SAndroid Build Coastguard Worker AddrFormat format; ///< Surface format 3904*61046927SAndroid Build Coastguard Worker AddrResrouceLocation resourceLoction; ///< Surface heap choice 3905*61046927SAndroid Build Coastguard Worker ADDR2_BLOCK_SET forbiddenBlock; ///< Client can use it to disable some block setting 3906*61046927SAndroid Build Coastguard Worker ///< such as linear for DXTn, tiled for YUV 3907*61046927SAndroid Build Coastguard Worker ADDR2_SWTYPE_SET preferredSwSet; ///< Client can use it to specify sw type(s) wanted 3908*61046927SAndroid Build Coastguard Worker BOOL_32 noXor; ///< Do not use xor mode for this resource 3909*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< bits per pixel 3910*61046927SAndroid Build Coastguard Worker UINT_32 width; ///< Width (of mip0), in pixels 3911*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height (of mip0), in pixels 3912*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number surface slice/depth (of mip0), 3913*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels. 3914*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 3915*61046927SAndroid Build Coastguard Worker UINT_32 numFrags; ///< Number of fragments, leave it zero or the same as 3916*61046927SAndroid Build Coastguard Worker /// number of samples for normal AA; Set it to the 3917*61046927SAndroid Build Coastguard Worker /// number of fragments for EQAA 3918*61046927SAndroid Build Coastguard Worker UINT_32 maxAlign; ///< maximum base/size alignment requested by client 3919*61046927SAndroid Build Coastguard Worker UINT_32 minSizeAlign; ///< memory allocated for surface in client driver will 3920*61046927SAndroid Build Coastguard Worker /// be padded to multiple of this value (in bytes) 3921*61046927SAndroid Build Coastguard Worker DOUBLE memoryBudget; ///< Memory consumption ratio based on minimum possible 3922*61046927SAndroid Build Coastguard Worker /// size. 3923*61046927SAndroid Build Coastguard Worker } ADDR2_GET_PREFERRED_SURF_SETTING_INPUT; 3924*61046927SAndroid Build Coastguard Worker 3925*61046927SAndroid Build Coastguard Worker /** 3926*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3927*61046927SAndroid Build Coastguard Worker * ADDR2_GET_PREFERRED_SURF_SETTING_OUTPUT 3928*61046927SAndroid Build Coastguard Worker * 3929*61046927SAndroid Build Coastguard Worker * @brief 3930*61046927SAndroid Build Coastguard Worker * Output structure of Addr2GetPreferredSurfaceSetting 3931*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3932*61046927SAndroid Build Coastguard Worker */ 3933*61046927SAndroid Build Coastguard Worker typedef struct _ADDR2_GET_PREFERRED_SURF_SETTING_OUTPUT 3934*61046927SAndroid Build Coastguard Worker { 3935*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 3936*61046927SAndroid Build Coastguard Worker 3937*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode; ///< Suggested swizzle mode to be used 3938*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Suggested resource type to program HW 3939*61046927SAndroid Build Coastguard Worker ADDR2_BLOCK_SET validBlockSet; ///< Valid block type bit conbination 3940*61046927SAndroid Build Coastguard Worker BOOL_32 canXor; ///< If client can use xor on a valid macro block 3941*61046927SAndroid Build Coastguard Worker /// type 3942*61046927SAndroid Build Coastguard Worker ADDR2_SWTYPE_SET validSwTypeSet; ///< Valid swizzle type bit combination 3943*61046927SAndroid Build Coastguard Worker ADDR2_SWTYPE_SET clientPreferredSwSet; ///< Client-preferred swizzle type bit combination 3944*61046927SAndroid Build Coastguard Worker ADDR2_SWMODE_SET validSwModeSet; ///< Valid swizzle mode bit combination 3945*61046927SAndroid Build Coastguard Worker } ADDR2_GET_PREFERRED_SURF_SETTING_OUTPUT; 3946*61046927SAndroid Build Coastguard Worker 3947*61046927SAndroid Build Coastguard Worker /** 3948*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3949*61046927SAndroid Build Coastguard Worker * Addr2GetPreferredSurfaceSetting 3950*61046927SAndroid Build Coastguard Worker * 3951*61046927SAndroid Build Coastguard Worker * @brief 3952*61046927SAndroid Build Coastguard Worker * Suggest a preferred setting for client driver to program HW register 3953*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3954*61046927SAndroid Build Coastguard Worker */ 3955*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2GetPreferredSurfaceSetting( 3956*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3957*61046927SAndroid Build Coastguard Worker const ADDR2_GET_PREFERRED_SURF_SETTING_INPUT* pIn, 3958*61046927SAndroid Build Coastguard Worker ADDR2_GET_PREFERRED_SURF_SETTING_OUTPUT* pOut); 3959*61046927SAndroid Build Coastguard Worker 3960*61046927SAndroid Build Coastguard Worker /** 3961*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3962*61046927SAndroid Build Coastguard Worker * Addr2GetPossibleSwizzleModes 3963*61046927SAndroid Build Coastguard Worker * 3964*61046927SAndroid Build Coastguard Worker * @brief 3965*61046927SAndroid Build Coastguard Worker * Returns a list of swizzle modes that are valid from the hardware's perspective for the 3966*61046927SAndroid Build Coastguard Worker * client to choose from 3967*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3968*61046927SAndroid Build Coastguard Worker */ 3969*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2GetPossibleSwizzleModes( 3970*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3971*61046927SAndroid Build Coastguard Worker const ADDR2_GET_PREFERRED_SURF_SETTING_INPUT* pIn, 3972*61046927SAndroid Build Coastguard Worker ADDR2_GET_PREFERRED_SURF_SETTING_OUTPUT* pOut); 3973*61046927SAndroid Build Coastguard Worker 3974*61046927SAndroid Build Coastguard Worker /** 3975*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3976*61046927SAndroid Build Coastguard Worker * Addr2IsValidDisplaySwizzleMode 3977*61046927SAndroid Build Coastguard Worker * 3978*61046927SAndroid Build Coastguard Worker * @brief 3979*61046927SAndroid Build Coastguard Worker * Return whether the swizzle mode is supported by display engine 3980*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3981*61046927SAndroid Build Coastguard Worker */ 3982*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2IsValidDisplaySwizzleMode( 3983*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3984*61046927SAndroid Build Coastguard Worker AddrSwizzleMode swizzleMode, 3985*61046927SAndroid Build Coastguard Worker UINT_32 bpp, 3986*61046927SAndroid Build Coastguard Worker BOOL_32 *pResult); 3987*61046927SAndroid Build Coastguard Worker 3988*61046927SAndroid Build Coastguard Worker /** 3989*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3990*61046927SAndroid Build Coastguard Worker * Addr2GetAllowedBlockSet 3991*61046927SAndroid Build Coastguard Worker * 3992*61046927SAndroid Build Coastguard Worker * @brief 3993*61046927SAndroid Build Coastguard Worker * Returns the set of allowed block sizes given the allowed swizzle modes and resource type 3994*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 3995*61046927SAndroid Build Coastguard Worker */ 3996*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2GetAllowedBlockSet( 3997*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 3998*61046927SAndroid Build Coastguard Worker ADDR2_SWMODE_SET allowedSwModeSet, 3999*61046927SAndroid Build Coastguard Worker AddrResourceType rsrcType, 4000*61046927SAndroid Build Coastguard Worker ADDR2_BLOCK_SET* pAllowedBlockSet); 4001*61046927SAndroid Build Coastguard Worker 4002*61046927SAndroid Build Coastguard Worker /** 4003*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4004*61046927SAndroid Build Coastguard Worker * Addr2GetAllowedSwSet 4005*61046927SAndroid Build Coastguard Worker * 4006*61046927SAndroid Build Coastguard Worker * @brief 4007*61046927SAndroid Build Coastguard Worker * Returns the set of allowed swizzle types given the allowed swizzle modes 4008*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4009*61046927SAndroid Build Coastguard Worker */ 4010*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr2GetAllowedSwSet( 4011*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 4012*61046927SAndroid Build Coastguard Worker ADDR2_SWMODE_SET allowedSwModeSet, 4013*61046927SAndroid Build Coastguard Worker ADDR2_SWTYPE_SET* pAllowedSwSet); 4014*61046927SAndroid Build Coastguard Worker 4015*61046927SAndroid Build Coastguard Worker /** 4016*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4017*61046927SAndroid Build Coastguard Worker * Addr2IsBlockTypeAvailable 4018*61046927SAndroid Build Coastguard Worker * 4019*61046927SAndroid Build Coastguard Worker * @brief 4020*61046927SAndroid Build Coastguard Worker * Determine whether a block type is allowed in a given blockSet 4021*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4022*61046927SAndroid Build Coastguard Worker */ 4023*61046927SAndroid Build Coastguard Worker BOOL_32 Addr2IsBlockTypeAvailable(ADDR2_BLOCK_SET blockSet, AddrBlockType blockType); 4024*61046927SAndroid Build Coastguard Worker 4025*61046927SAndroid Build Coastguard Worker /** 4026*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4027*61046927SAndroid Build Coastguard Worker * Addr2BlockTypeWithinMemoryBudget 4028*61046927SAndroid Build Coastguard Worker * 4029*61046927SAndroid Build Coastguard Worker * @brief 4030*61046927SAndroid Build Coastguard Worker * Determine whether a new block type is acceptable based on memory waste ratio. Will favor 4031*61046927SAndroid Build Coastguard Worker * larger block types. 4032*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4033*61046927SAndroid Build Coastguard Worker */ 4034*61046927SAndroid Build Coastguard Worker BOOL_32 Addr2BlockTypeWithinMemoryBudget( 4035*61046927SAndroid Build Coastguard Worker UINT_64 minSize, 4036*61046927SAndroid Build Coastguard Worker UINT_64 newBlockTypeSize, 4037*61046927SAndroid Build Coastguard Worker UINT_32 ratioLow, 4038*61046927SAndroid Build Coastguard Worker UINT_32 ratioHi, 4039*61046927SAndroid Build Coastguard Worker #if defined(__cplusplus) 4040*61046927SAndroid Build Coastguard Worker DOUBLE memoryBudget = 0.0f, 4041*61046927SAndroid Build Coastguard Worker BOOL_32 newBlockTypeBigger = TRUE); 4042*61046927SAndroid Build Coastguard Worker #else 4043*61046927SAndroid Build Coastguard Worker DOUBLE memoryBudget, 4044*61046927SAndroid Build Coastguard Worker BOOL_32 newBlockTypeBigger); 4045*61046927SAndroid Build Coastguard Worker #endif 4046*61046927SAndroid Build Coastguard Worker 4047*61046927SAndroid Build Coastguard Worker /** 4048*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4049*61046927SAndroid Build Coastguard Worker * ADDR3_SURFACE_FLAGS 4050*61046927SAndroid Build Coastguard Worker * 4051*61046927SAndroid Build Coastguard Worker * @brief 4052*61046927SAndroid Build Coastguard Worker * Surface flags 4053*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4054*61046927SAndroid Build Coastguard Worker */ 4055*61046927SAndroid Build Coastguard Worker typedef union _ADDR3_SURFACE_FLAGS 4056*61046927SAndroid Build Coastguard Worker { 4057*61046927SAndroid Build Coastguard Worker struct 4058*61046927SAndroid Build Coastguard Worker { 4059*61046927SAndroid Build Coastguard Worker UINT_32 color : 1; ///< This resource is a color buffer, can be used with RTV 4060*61046927SAndroid Build Coastguard Worker UINT_32 depth : 1; ///< This resource is a depth buffer, can be used with DSV 4061*61046927SAndroid Build Coastguard Worker UINT_32 stencil : 1; ///< This resource is a stencil buffer, can be used with DSV 4062*61046927SAndroid Build Coastguard Worker UINT_32 texture : 1; ///< This resource can be used with SRV 4063*61046927SAndroid Build Coastguard Worker UINT_32 unordered : 1; ///< This resource can be used with UAV 4064*61046927SAndroid Build Coastguard Worker UINT_32 hiZHiS : 1; 4065*61046927SAndroid Build Coastguard Worker UINT_32 blockCompressed : 1; 4066*61046927SAndroid Build Coastguard Worker UINT_32 nv12 : 1; 4067*61046927SAndroid Build Coastguard Worker UINT_32 p010 : 1; 4068*61046927SAndroid Build Coastguard Worker UINT_32 view3dAs2dArray : 1; 4069*61046927SAndroid Build Coastguard Worker UINT_32 isVrsImage : 1; ///< This resource is a VRS source image 4070*61046927SAndroid Build Coastguard Worker UINT_32 reserved1 : 2; 4071*61046927SAndroid Build Coastguard Worker UINT_32 denseSliceExact : 1; ///< Pad dimensions such that 4072*61046927SAndroid Build Coastguard Worker /// Pow2Align(pitch*height, surfAlign)==pitch*height 4073*61046927SAndroid Build Coastguard Worker UINT_32 qbStereo : 1; ///< Quad buffer stereo surface 4074*61046927SAndroid Build Coastguard Worker UINT_32 display : 1; ///< This resource is displayable, can be used with DRV 4075*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 16; ///< Reserved bits 4076*61046927SAndroid Build Coastguard Worker }; 4077*61046927SAndroid Build Coastguard Worker 4078*61046927SAndroid Build Coastguard Worker UINT_32 value; 4079*61046927SAndroid Build Coastguard Worker } ADDR3_SURFACE_FLAGS; 4080*61046927SAndroid Build Coastguard Worker 4081*61046927SAndroid Build Coastguard Worker /** 4082*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4083*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_SURFACE_INFO_INPUT 4084*61046927SAndroid Build Coastguard Worker * 4085*61046927SAndroid Build Coastguard Worker * @brief 4086*61046927SAndroid Build Coastguard Worker * Input structure for Addr3ComputeSurfaceInfo 4087*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4088*61046927SAndroid Build Coastguard Worker */ 4089*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_SURFACE_INFO_INPUT 4090*61046927SAndroid Build Coastguard Worker { 4091*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4092*61046927SAndroid Build Coastguard Worker 4093*61046927SAndroid Build Coastguard Worker ADDR3_SURFACE_FLAGS flags; ///< Surface flags 4094*61046927SAndroid Build Coastguard Worker Addr3SwizzleMode swizzleMode; ///< Swizzle Mode for Gfx12 4095*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface type 4096*61046927SAndroid Build Coastguard Worker AddrFormat format; ///< Surface format 4097*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< bits per pixel 4098*61046927SAndroid Build Coastguard Worker UINT_32 width; ///< Width (of mip0), in pixels 4099*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height (of mip0), in pixels 4100*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number surface slice/depth (of mip0), 4101*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels. 4102*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 4103*61046927SAndroid Build Coastguard Worker UINT_32 pitchInElement; ///< Pitch in elements (blocks for compressed formats) 4104*61046927SAndroid Build Coastguard Worker UINT_32 sliceAlign; ///< Required slice size in bytes 4105*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_SURFACE_INFO_INPUT; 4106*61046927SAndroid Build Coastguard Worker 4107*61046927SAndroid Build Coastguard Worker /** 4108*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4109*61046927SAndroid Build Coastguard Worker * ADDR3_MIP_INFO 4110*61046927SAndroid Build Coastguard Worker * 4111*61046927SAndroid Build Coastguard Worker * @brief 4112*61046927SAndroid Build Coastguard Worker * Structure that contains information for mip level 4113*61046927SAndroid Build Coastguard Worker * 4114*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4115*61046927SAndroid Build Coastguard Worker */ 4116*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_MIP_INFO 4117*61046927SAndroid Build Coastguard Worker { 4118*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch in elements of image data 4119*61046927SAndroid Build Coastguard Worker UINT_32 pitchForSlice; ///< Pitch in elements used to compute slice size 4120*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Padded height in elements 4121*61046927SAndroid Build Coastguard Worker UINT_32 depth; ///< Padded depth 4122*61046927SAndroid Build Coastguard Worker UINT_32 pixelPitch; ///< Pitch in pixels for image data 4123*61046927SAndroid Build Coastguard Worker UINT_32 pixelHeight; ///< Padded height in pixels 4124*61046927SAndroid Build Coastguard Worker UINT_32 equationIndex; ///< Equation index in the equation table 4125*61046927SAndroid Build Coastguard Worker UINT_64 offset; ///< Offset in bytes from mip base, should only be used 4126*61046927SAndroid Build Coastguard Worker ///< to setup vam surface descriptor, can't be used 4127*61046927SAndroid Build Coastguard Worker ///< to setup swizzle pattern 4128*61046927SAndroid Build Coastguard Worker UINT_64 macroBlockOffset; ///< macro block offset in bytes from mip base 4129*61046927SAndroid Build Coastguard Worker UINT_32 mipTailOffset; ///< mip tail offset in bytes 4130*61046927SAndroid Build Coastguard Worker UINT_32 mipTailCoordX; ///< mip tail coord x 4131*61046927SAndroid Build Coastguard Worker UINT_32 mipTailCoordY; ///< mip tail coord y 4132*61046927SAndroid Build Coastguard Worker UINT_32 mipTailCoordZ; ///< mip tail coord z 4133*61046927SAndroid Build Coastguard Worker } ADDR3_MIP_INFO; 4134*61046927SAndroid Build Coastguard Worker 4135*61046927SAndroid Build Coastguard Worker /** 4136*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4137*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_SURFACE_INFO_OUTPUT 4138*61046927SAndroid Build Coastguard Worker * 4139*61046927SAndroid Build Coastguard Worker * @brief 4140*61046927SAndroid Build Coastguard Worker * Output structure for Addr3ComputeSurfaceInfo 4141*61046927SAndroid Build Coastguard Worker * @note 4142*61046927SAndroid Build Coastguard Worker Element: AddrLib unit for computing. e.g. BCn: 4x4 blocks; R32B32B32: 32bit with 3x pitch 4143*61046927SAndroid Build Coastguard Worker Pixel: Original pixel 4144*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4145*61046927SAndroid Build Coastguard Worker */ 4146*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_SURFACE_INFO_OUTPUT 4147*61046927SAndroid Build Coastguard Worker { 4148*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4149*61046927SAndroid Build Coastguard Worker UINT_32 pitch; ///< Pitch in elements for image data 4150*61046927SAndroid Build Coastguard Worker UINT_32 pitchForSlice; ///< Pitch in elements used to compute slice size 4151*61046927SAndroid Build Coastguard Worker UINT_32 pixelPitch; ///< Pitch in original pixels 4152*61046927SAndroid Build Coastguard Worker UINT_32 pixelHeight; ///< Height in original pixels 4153*61046927SAndroid Build Coastguard Worker UINT_32 pixelBits; ///< Original bits per pixel, passed from input 4154*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per elements 4155*61046927SAndroid Build Coastguard Worker /// (e.g. blocks for BCn, 1/3 for 96bit) 4156*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Padded depth for 3d resource 4157*61046927SAndroid Build Coastguard Worker /// or padded number of slices for 2d array resource 4158*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Padded height (of mip0) in elements 4159*61046927SAndroid Build Coastguard Worker UINT_64 sliceSize; ///< Slice (total mip chain) size in bytes 4160*61046927SAndroid Build Coastguard Worker UINT_64 sliceSizeDensePacked; ///< Slice (total mip chain) size of image data in bytes 4161*61046927SAndroid Build Coastguard Worker UINT_64 surfSize; ///< Surface (total mip chain) size in bytes 4162*61046927SAndroid Build Coastguard Worker UINT_32 baseAlign; ///< Base address alignment 4163*61046927SAndroid Build Coastguard Worker ADDR_EXTENT3D blockExtent; ///< Dimensions in element inside one block 4164*61046927SAndroid Build Coastguard Worker UINT_32 pixelMipChainPitch; ///< Mip chain pitch in original pixels 4165*61046927SAndroid Build Coastguard Worker UINT_32 pixelMipChainHeight; ///< Mip chain height in original pixels 4166*61046927SAndroid Build Coastguard Worker ADDR3_MIP_INFO* pMipInfo; ///< Info regarding the start, sizes of the mip levels 4167*61046927SAndroid Build Coastguard Worker BOOL_32 mipChainInTail; ///< If whole mipchain falls into mip tail block 4168*61046927SAndroid Build Coastguard Worker UINT_32 firstMipIdInTail; ///< The id of first mip in tail, if there is no mip 4169*61046927SAndroid Build Coastguard Worker /// in tail, it will be set to number of mip levels 4170*61046927SAndroid Build Coastguard Worker /// Stereo info 4171*61046927SAndroid Build Coastguard Worker ADDR_QBSTEREOINFO* pStereoInfo; ///< Stereo info, needed if qbStereo flag is TRUE 4172*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_SURFACE_INFO_OUTPUT; 4173*61046927SAndroid Build Coastguard Worker 4174*61046927SAndroid Build Coastguard Worker /** 4175*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4176*61046927SAndroid Build Coastguard Worker * ADDR3_SWMODE_SET 4177*61046927SAndroid Build Coastguard Worker * 4178*61046927SAndroid Build Coastguard Worker * @brief 4179*61046927SAndroid Build Coastguard Worker * Bit field that defines swizzle type 4180*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4181*61046927SAndroid Build Coastguard Worker */ 4182*61046927SAndroid Build Coastguard Worker // The bit order MUST be the same as Addr3SwizzleMode enumerations, otherwise using bitset to enable 4183*61046927SAndroid Build Coastguard Worker // or disable swizzle modes will be problematic. 4184*61046927SAndroid Build Coastguard Worker typedef union _ADDR3_SWMODE_SET 4185*61046927SAndroid Build Coastguard Worker { 4186*61046927SAndroid Build Coastguard Worker struct 4187*61046927SAndroid Build Coastguard Worker { 4188*61046927SAndroid Build Coastguard Worker UINT_32 swLinear : 1; 4189*61046927SAndroid Build Coastguard Worker UINT_32 sw2d256B : 1; 4190*61046927SAndroid Build Coastguard Worker UINT_32 sw2d4kB : 1; 4191*61046927SAndroid Build Coastguard Worker UINT_32 sw2d64kB : 1; 4192*61046927SAndroid Build Coastguard Worker UINT_32 sw2d256kB : 1; 4193*61046927SAndroid Build Coastguard Worker UINT_32 sw3d4kB : 1; 4194*61046927SAndroid Build Coastguard Worker UINT_32 sw3d64kB : 1; 4195*61046927SAndroid Build Coastguard Worker UINT_32 sw3d256kB : 1; 4196*61046927SAndroid Build Coastguard Worker UINT_32 reserved1 : 2; 4197*61046927SAndroid Build Coastguard Worker UINT_32 reserved : 22; 4198*61046927SAndroid Build Coastguard Worker }; 4199*61046927SAndroid Build Coastguard Worker 4200*61046927SAndroid Build Coastguard Worker UINT_32 value; 4201*61046927SAndroid Build Coastguard Worker } ADDR3_SWMODE_SET; 4202*61046927SAndroid Build Coastguard Worker 4203*61046927SAndroid Build Coastguard Worker /** 4204*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4205*61046927SAndroid Build Coastguard Worker * ADDR3_GET_POSSIBLE_SWIZZLE_MODE_INPUT 4206*61046927SAndroid Build Coastguard Worker * 4207*61046927SAndroid Build Coastguard Worker * @brief 4208*61046927SAndroid Build Coastguard Worker * Input structure of Addr3GetPossibleSwizzleModes 4209*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4210*61046927SAndroid Build Coastguard Worker */ 4211*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_GET_POSSIBLE_SWIZZLE_MODE_INPUT 4212*61046927SAndroid Build Coastguard Worker { 4213*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4214*61046927SAndroid Build Coastguard Worker 4215*61046927SAndroid Build Coastguard Worker ADDR3_SURFACE_FLAGS flags; ///< Surface flags 4216*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface type 4217*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< bits per pixel 4218*61046927SAndroid Build Coastguard Worker UINT_32 width; ///< Width (of mip0), in pixels 4219*61046927SAndroid Build Coastguard Worker UINT_32 height; ///< Height (of mip0), in pixels 4220*61046927SAndroid Build Coastguard Worker UINT_32 numSlices; ///< Number surface slice/depth (of mip0), 4221*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels. 4222*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 4223*61046927SAndroid Build Coastguard Worker UINT_32 maxAlign; ///< maximum base/size alignment requested by client 4224*61046927SAndroid Build Coastguard Worker } ADDR3_GET_POSSIBLE_SWIZZLE_MODE_INPUT; 4225*61046927SAndroid Build Coastguard Worker 4226*61046927SAndroid Build Coastguard Worker /** 4227*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4228*61046927SAndroid Build Coastguard Worker * ADDR3_GET_POSSIBLE_SWIZZLE_MODE_OUTPUT 4229*61046927SAndroid Build Coastguard Worker * 4230*61046927SAndroid Build Coastguard Worker * @brief 4231*61046927SAndroid Build Coastguard Worker * Output structure of Addr3GetPossibleSwizzleModes 4232*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4233*61046927SAndroid Build Coastguard Worker */ 4234*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_GET_POSSIBLE_SWIZZLE_MODE_OUTPUT 4235*61046927SAndroid Build Coastguard Worker { 4236*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4237*61046927SAndroid Build Coastguard Worker ADDR3_SWMODE_SET validModes; ///< List of valid swizzle modes for this function. 4238*61046927SAndroid Build Coastguard Worker } ADDR3_GET_POSSIBLE_SWIZZLE_MODE_OUTPUT; 4239*61046927SAndroid Build Coastguard Worker 4240*61046927SAndroid Build Coastguard Worker /** 4241*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4242*61046927SAndroid Build Coastguard Worker * Addr3ComputeSurfaceInfo 4243*61046927SAndroid Build Coastguard Worker * 4244*61046927SAndroid Build Coastguard Worker * @brief 4245*61046927SAndroid Build Coastguard Worker * Compute surface width/height/slices/alignments and suitable tiling mode 4246*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4247*61046927SAndroid Build Coastguard Worker */ 4248*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr3ComputeSurfaceInfo( 4249*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 4250*61046927SAndroid Build Coastguard Worker const ADDR3_COMPUTE_SURFACE_INFO_INPUT* pIn, 4251*61046927SAndroid Build Coastguard Worker ADDR3_COMPUTE_SURFACE_INFO_OUTPUT* pOut); 4252*61046927SAndroid Build Coastguard Worker 4253*61046927SAndroid Build Coastguard Worker /** 4254*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4255*61046927SAndroid Build Coastguard Worker * Addr3GetPossibleSwizzleModes 4256*61046927SAndroid Build Coastguard Worker * 4257*61046927SAndroid Build Coastguard Worker * @brief 4258*61046927SAndroid Build Coastguard Worker * Returns a list of swizzle modes that are valid from the hardware's perspective for the 4259*61046927SAndroid Build Coastguard Worker * client to choose from 4260*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4261*61046927SAndroid Build Coastguard Worker */ 4262*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr3GetPossibleSwizzleModes( 4263*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 4264*61046927SAndroid Build Coastguard Worker const ADDR3_GET_POSSIBLE_SWIZZLE_MODE_INPUT* pIn, 4265*61046927SAndroid Build Coastguard Worker ADDR3_GET_POSSIBLE_SWIZZLE_MODE_OUTPUT* pOut); 4266*61046927SAndroid Build Coastguard Worker 4267*61046927SAndroid Build Coastguard Worker /** 4268*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4269*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT 4270*61046927SAndroid Build Coastguard Worker * 4271*61046927SAndroid Build Coastguard Worker * @brief 4272*61046927SAndroid Build Coastguard Worker * Input structure for Addr3ComputeSurfaceAddrFromCoord 4273*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4274*61046927SAndroid Build Coastguard Worker */ 4275*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT 4276*61046927SAndroid Build Coastguard Worker { 4277*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4278*61046927SAndroid Build Coastguard Worker 4279*61046927SAndroid Build Coastguard Worker UINT_32 x; ///< X coordinate 4280*61046927SAndroid Build Coastguard Worker UINT_32 y; ///< Y coordinate 4281*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice index 4282*61046927SAndroid Build Coastguard Worker UINT_32 sample; ///< Sample index, use fragment index for EQAA 4283*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< the mip ID in mip chain 4284*61046927SAndroid Build Coastguard Worker 4285*61046927SAndroid Build Coastguard Worker Addr3SwizzleMode swizzleMode; ///< Swizzle mode for Gfx12 4286*61046927SAndroid Build Coastguard Worker ADDR3_SURFACE_FLAGS flags; ///< Surface flags 4287*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface type 4288*61046927SAndroid Build Coastguard Worker UINT_32 bpp; ///< Bits per pixel 4289*61046927SAndroid Build Coastguard Worker ADDR_EXTENT3D unAlignedDims; ///< Surface original dimensions (of mip0) 4290*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels 4291*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 4292*61046927SAndroid Build Coastguard Worker UINT_32 pitchInElement; ///< Pitch in elements (blocks for compressed formats) 4293*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT; 4294*61046927SAndroid Build Coastguard Worker 4295*61046927SAndroid Build Coastguard Worker /** 4296*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4297*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT 4298*61046927SAndroid Build Coastguard Worker * 4299*61046927SAndroid Build Coastguard Worker * @brief 4300*61046927SAndroid Build Coastguard Worker * Output structure for Addr3ComputeSurfaceAddrFromCoord 4301*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4302*61046927SAndroid Build Coastguard Worker */ 4303*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT 4304*61046927SAndroid Build Coastguard Worker { 4305*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4306*61046927SAndroid Build Coastguard Worker 4307*61046927SAndroid Build Coastguard Worker UINT_64 addr; ///< Byte offset from the image starting address 4308*61046927SAndroid Build Coastguard Worker UINT_32 bitPosition; ///< Bit position within surfaceAddr, 0-7. 4309*61046927SAndroid Build Coastguard Worker /// For surface bpp < 8, e.g. FMT_1. 4310*61046927SAndroid Build Coastguard Worker UINT_32 prtBlockIndex; ///< Index of a PRT tile (64K block) 4311*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT; 4312*61046927SAndroid Build Coastguard Worker 4313*61046927SAndroid Build Coastguard Worker /** 4314*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4315*61046927SAndroid Build Coastguard Worker * Addr3ComputeSurfaceAddrFromCoord 4316*61046927SAndroid Build Coastguard Worker * 4317*61046927SAndroid Build Coastguard Worker * @brief 4318*61046927SAndroid Build Coastguard Worker * Compute surface address from a given coordinate. 4319*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4320*61046927SAndroid Build Coastguard Worker */ 4321*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr3ComputeSurfaceAddrFromCoord( 4322*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 4323*61046927SAndroid Build Coastguard Worker const ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT* pIn, 4324*61046927SAndroid Build Coastguard Worker ADDR3_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT* pOut); 4325*61046927SAndroid Build Coastguard Worker 4326*61046927SAndroid Build Coastguard Worker /** 4327*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4328*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_PIPEBANKXOR_INPUT 4329*61046927SAndroid Build Coastguard Worker * 4330*61046927SAndroid Build Coastguard Worker * @brief 4331*61046927SAndroid Build Coastguard Worker * Input structure of Addr3ComputePipebankXor 4332*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4333*61046927SAndroid Build Coastguard Worker */ 4334*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_PIPEBANKXOR_INPUT 4335*61046927SAndroid Build Coastguard Worker { 4336*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4337*61046927SAndroid Build Coastguard Worker UINT_32 surfIndex; ///< Input surface index 4338*61046927SAndroid Build Coastguard Worker Addr3SwizzleMode swizzleMode; ///< Surface swizzle mode 4339*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_PIPEBANKXOR_INPUT; 4340*61046927SAndroid Build Coastguard Worker 4341*61046927SAndroid Build Coastguard Worker /** 4342*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4343*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_PIPEBANKXOR_OUTPUT 4344*61046927SAndroid Build Coastguard Worker * 4345*61046927SAndroid Build Coastguard Worker * @brief 4346*61046927SAndroid Build Coastguard Worker * Output structure of Addr3ComputePipebankXor 4347*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4348*61046927SAndroid Build Coastguard Worker */ 4349*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_PIPEBANKXOR_OUTPUT 4350*61046927SAndroid Build Coastguard Worker { 4351*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4352*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Pipe bank xor 4353*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_PIPEBANKXOR_OUTPUT; 4354*61046927SAndroid Build Coastguard Worker 4355*61046927SAndroid Build Coastguard Worker /** 4356*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4357*61046927SAndroid Build Coastguard Worker * Addr3ComputePipeBankXor 4358*61046927SAndroid Build Coastguard Worker * 4359*61046927SAndroid Build Coastguard Worker * @brief 4360*61046927SAndroid Build Coastguard Worker * Calculate a valid bank pipe xor value for client to use. 4361*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4362*61046927SAndroid Build Coastguard Worker */ 4363*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr3ComputePipeBankXor( 4364*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 4365*61046927SAndroid Build Coastguard Worker const ADDR3_COMPUTE_PIPEBANKXOR_INPUT* pIn, 4366*61046927SAndroid Build Coastguard Worker ADDR3_COMPUTE_PIPEBANKXOR_OUTPUT* pOut); 4367*61046927SAndroid Build Coastguard Worker 4368*61046927SAndroid Build Coastguard Worker /** 4369*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4370*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT 4371*61046927SAndroid Build Coastguard Worker * 4372*61046927SAndroid Build Coastguard Worker * @brief 4373*61046927SAndroid Build Coastguard Worker * Input structure of Addr3ComputeNonBlockCompressedView 4374*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4375*61046927SAndroid Build Coastguard Worker */ 4376*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT 4377*61046927SAndroid Build Coastguard Worker { 4378*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4379*61046927SAndroid Build Coastguard Worker ADDR3_SURFACE_FLAGS flags; ///< Surface flags 4380*61046927SAndroid Build Coastguard Worker Addr3SwizzleMode swizzleMode; ///< Swizzle Mode for Gfx12 4381*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface type 4382*61046927SAndroid Build Coastguard Worker AddrFormat format; ///< Surface format 4383*61046927SAndroid Build Coastguard Worker ADDR_EXTENT3D unAlignedDims; ///< Surface original dimensions (of mip0) 4384*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels. 4385*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Combined swizzle used to do bank/pipe rotation 4386*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Index of slice to view 4387*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< Id of mip to view 4388*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT; 4389*61046927SAndroid Build Coastguard Worker 4390*61046927SAndroid Build Coastguard Worker /** 4391*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4392*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT 4393*61046927SAndroid Build Coastguard Worker * 4394*61046927SAndroid Build Coastguard Worker * @brief 4395*61046927SAndroid Build Coastguard Worker * Output structure of Addr3ComputeNonBlockCompressedView 4396*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4397*61046927SAndroid Build Coastguard Worker */ 4398*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT 4399*61046927SAndroid Build Coastguard Worker { 4400*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4401*61046927SAndroid Build Coastguard Worker UINT_64 offset; ///< Offset from resource base for the view 4402*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Pipe bank xor for the view 4403*61046927SAndroid Build Coastguard Worker ADDR_EXTENT3D unAlignedDims; ///< Mip0 dimens (in element) for the view 4404*61046927SAndroid Build Coastguard Worker UINT_32 numMipLevels; ///< Total mipmap levels for the view 4405*61046927SAndroid Build Coastguard Worker UINT_32 mipId; ///< Mip ID for the view 4406*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT; 4407*61046927SAndroid Build Coastguard Worker 4408*61046927SAndroid Build Coastguard Worker /** 4409*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4410*61046927SAndroid Build Coastguard Worker * Addr3ComputeNonBlockCompressedView 4411*61046927SAndroid Build Coastguard Worker * 4412*61046927SAndroid Build Coastguard Worker * @brief 4413*61046927SAndroid Build Coastguard Worker * Compute non-block-compressed view for a given mipmap level/slice 4414*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4415*61046927SAndroid Build Coastguard Worker */ 4416*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr3ComputeNonBlockCompressedView( 4417*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 4418*61046927SAndroid Build Coastguard Worker const ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_INPUT* pIn, 4419*61046927SAndroid Build Coastguard Worker ADDR3_COMPUTE_NONBLOCKCOMPRESSEDVIEW_OUTPUT* pOut); 4420*61046927SAndroid Build Coastguard Worker 4421*61046927SAndroid Build Coastguard Worker /** 4422*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4423*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT 4424*61046927SAndroid Build Coastguard Worker * 4425*61046927SAndroid Build Coastguard Worker * @brief 4426*61046927SAndroid Build Coastguard Worker * Input structure of Addr3ComputeSubResourceOffsetForSwizzlePattern 4427*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4428*61046927SAndroid Build Coastguard Worker */ 4429*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT 4430*61046927SAndroid Build Coastguard Worker { 4431*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4432*61046927SAndroid Build Coastguard Worker Addr3SwizzleMode swizzleMode; ///< Surface swizzle mode 4433*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface resource type 4434*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Per resource xor 4435*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice id 4436*61046927SAndroid Build Coastguard Worker UINT_64 sliceSize; ///< Slice size of a mip chain 4437*61046927SAndroid Build Coastguard Worker UINT_64 macroBlockOffset; ///< Macro block offset, returned in ADDR3_MIP_INFO 4438*61046927SAndroid Build Coastguard Worker UINT_32 mipTailOffset; ///< Mip tail offset, returned in ADDR3_MIP_INFO 4439*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT; 4440*61046927SAndroid Build Coastguard Worker 4441*61046927SAndroid Build Coastguard Worker /** 4442*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4443*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT 4444*61046927SAndroid Build Coastguard Worker * 4445*61046927SAndroid Build Coastguard Worker * @brief 4446*61046927SAndroid Build Coastguard Worker * Output structure of Addr3ComputeSubResourceOffsetForSwizzlePattern 4447*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4448*61046927SAndroid Build Coastguard Worker */ 4449*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT 4450*61046927SAndroid Build Coastguard Worker { 4451*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4452*61046927SAndroid Build Coastguard Worker UINT_64 offset; ///< offset 4453*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT; 4454*61046927SAndroid Build Coastguard Worker 4455*61046927SAndroid Build Coastguard Worker /** 4456*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4457*61046927SAndroid Build Coastguard Worker * Addr3ComputeSubResourceOffsetForSwizzlePattern 4458*61046927SAndroid Build Coastguard Worker * 4459*61046927SAndroid Build Coastguard Worker * @brief 4460*61046927SAndroid Build Coastguard Worker * Calculate sub resource offset to support swizzle pattern. 4461*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4462*61046927SAndroid Build Coastguard Worker */ 4463*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr3ComputeSubResourceOffsetForSwizzlePattern( 4464*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 4465*61046927SAndroid Build Coastguard Worker const ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_INPUT* pIn, 4466*61046927SAndroid Build Coastguard Worker ADDR3_COMPUTE_SUBRESOURCE_OFFSET_FORSWIZZLEPATTERN_OUTPUT* pOut); 4467*61046927SAndroid Build Coastguard Worker 4468*61046927SAndroid Build Coastguard Worker /** 4469*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4470*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_SLICE_PIPEBANKXOR_INPUT 4471*61046927SAndroid Build Coastguard Worker * 4472*61046927SAndroid Build Coastguard Worker * @brief 4473*61046927SAndroid Build Coastguard Worker * Input structure of Addr2ComputeSlicePipeBankXor 4474*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4475*61046927SAndroid Build Coastguard Worker */ 4476*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_SLICE_PIPEBANKXOR_INPUT 4477*61046927SAndroid Build Coastguard Worker { 4478*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4479*61046927SAndroid Build Coastguard Worker Addr3SwizzleMode swizzleMode; ///< Surface swizzle mode 4480*61046927SAndroid Build Coastguard Worker AddrResourceType resourceType; ///< Surface resource type 4481*61046927SAndroid Build Coastguard Worker UINT_32 bpe; ///< bits per element (e.g. block size for BCn format) 4482*61046927SAndroid Build Coastguard Worker UINT_32 basePipeBankXor; ///< Base pipe bank xor 4483*61046927SAndroid Build Coastguard Worker UINT_32 slice; ///< Slice id 4484*61046927SAndroid Build Coastguard Worker UINT_32 numSamples; ///< Number of samples 4485*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_SLICE_PIPEBANKXOR_INPUT; 4486*61046927SAndroid Build Coastguard Worker 4487*61046927SAndroid Build Coastguard Worker /** 4488*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4489*61046927SAndroid Build Coastguard Worker * ADDR3_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT 4490*61046927SAndroid Build Coastguard Worker * 4491*61046927SAndroid Build Coastguard Worker * @brief 4492*61046927SAndroid Build Coastguard Worker * Output structure of Addr3ComputeSlicePipeBankXor 4493*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4494*61046927SAndroid Build Coastguard Worker */ 4495*61046927SAndroid Build Coastguard Worker typedef struct _ADDR3_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT 4496*61046927SAndroid Build Coastguard Worker { 4497*61046927SAndroid Build Coastguard Worker UINT_32 size; ///< Size of this structure in bytes 4498*61046927SAndroid Build Coastguard Worker UINT_32 pipeBankXor; ///< Pipe bank xor 4499*61046927SAndroid Build Coastguard Worker } ADDR3_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT; 4500*61046927SAndroid Build Coastguard Worker 4501*61046927SAndroid Build Coastguard Worker /** 4502*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4503*61046927SAndroid Build Coastguard Worker * Addr3ComputeSlicePipeBankXor 4504*61046927SAndroid Build Coastguard Worker * 4505*61046927SAndroid Build Coastguard Worker * @brief 4506*61046927SAndroid Build Coastguard Worker * Calculate slice pipe bank xor value based on base pipe bank xor and slice id. 4507*61046927SAndroid Build Coastguard Worker **************************************************************************************************** 4508*61046927SAndroid Build Coastguard Worker */ 4509*61046927SAndroid Build Coastguard Worker ADDR_E_RETURNCODE ADDR_API Addr3ComputeSlicePipeBankXor( 4510*61046927SAndroid Build Coastguard Worker ADDR_HANDLE hLib, 4511*61046927SAndroid Build Coastguard Worker const ADDR3_COMPUTE_SLICE_PIPEBANKXOR_INPUT* pIn, 4512*61046927SAndroid Build Coastguard Worker ADDR3_COMPUTE_SLICE_PIPEBANKXOR_OUTPUT* pOut); 4513*61046927SAndroid Build Coastguard Worker 4514*61046927SAndroid Build Coastguard Worker #if defined(__cplusplus) 4515*61046927SAndroid Build Coastguard Worker } 4516*61046927SAndroid Build Coastguard Worker #endif 4517*61046927SAndroid Build Coastguard Worker 4518*61046927SAndroid Build Coastguard Worker #endif // __ADDR_INTERFACE_H__ 4519