xref: /aosp_15_r20/external/mesa3d/src/amd/addrlib/inc/addrinterface.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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