*/
/**
-***************************************************************************************************
+****************************************************************************************************
* @file addrtypes.h
* @brief Contains the helper function and constants
-***************************************************************************************************
+****************************************************************************************************
*/
#ifndef __ADDR_TYPES_H__
#define __ADDR_TYPES_H__
-#if defined(__APPLE__) || defined(TCORE_BUILD)
-// External definitions header maintained by Mac driver team (and TCORE team)
+#if defined(__APPLE__) && !defined(HAVE_TSERVER)
+// External definitions header maintained by Apple driver team, but not for diag team under Mac.
// Helps address compilation issues & reduces code covered by NDA
#include "addrExtDef.h"
#include <stdarg.h> // va_list...etc need this header
-#endif // defined (__APPLE__)
+#endif // defined (__APPLE__) && !defined(HAVE_TSERVER)
/**
-***************************************************************************************************
+****************************************************************************************************
* Calling conventions
-***************************************************************************************************
+****************************************************************************************************
*/
#ifndef ADDR_CDECL
#if defined(__GNUC__)
#ifndef ADDR_FASTCALL
#if defined(__GNUC__)
- #define ADDR_FASTCALL __attribute__((regparm(0)))
+ #if defined(__i386__)
+ #define ADDR_FASTCALL __attribute__((regparm(0)))
+ #else
+ #define ADDR_FASTCALL
+ #endif
#else
#define ADDR_FASTCALL __fastcall
#endif
#define ADDR_API ADDR_FASTCALL //default call convention is fast call
/**
-***************************************************************************************************
+****************************************************************************************************
* Global defines used by other modules
-***************************************************************************************************
+****************************************************************************************************
*/
#if !defined(TILEINDEX_INVALID)
#define TILEINDEX_INVALID -1
#endif
/**
-***************************************************************************************************
+****************************************************************************************************
* Return codes
-***************************************************************************************************
+****************************************************************************************************
*/
typedef enum _ADDR_E_RETURNCODE
{
} ADDR_E_RETURNCODE;
/**
-***************************************************************************************************
+****************************************************************************************************
* @brief
* Neutral enums that define tile modes for all H/W
* @note
* R600/R800 tiling mode can be cast to hw enums directly but never cast into HW enum from
* ADDR_TM_2D_TILED_XTHICK
*
-***************************************************************************************************
+****************************************************************************************************
*/
typedef enum _AddrTileMode
{
ADDR_TM_PRT_TILED_THICK = 22, ///< No bank/pipe rotation or hashing beyond macrotile size
ADDR_TM_PRT_2D_TILED_THICK = 23, ///< Same as 2D_TILED_THICK, PRT only
ADDR_TM_PRT_3D_TILED_THICK = 24, ///< Same as 3D_TILED_THICK, PRT only
- ADDR_TM_COUNT = 25, ///< Must be the value of the last tile mode
+ ADDR_TM_UNKNOWN = 25, ///< Unkown tile mode, should be decided by address lib
+ ADDR_TM_COUNT = 26, ///< Must be the value of the last tile mode
} AddrTileMode;
/**
-***************************************************************************************************
+****************************************************************************************************
* AddrFormat
*
* @brief
* Neutral enum for SurfaceFormat
*
-***************************************************************************************************
+****************************************************************************************************
*/
typedef enum _AddrFormat {
ADDR_FMT_INVALID = 0x00000000,
ADDR_FMT_APC7 = 0x0000003d,
ADDR_FMT_CTX1 = 0x0000003e,
ADDR_FMT_RESERVED_63 = 0x0000003f,
+ ADDR_FMT_ASTC_4x4 = 0x00000040,
+ ADDR_FMT_ASTC_5x4 = 0x00000041,
+ ADDR_FMT_ASTC_5x5 = 0x00000042,
+ ADDR_FMT_ASTC_6x5 = 0x00000043,
+ ADDR_FMT_ASTC_6x6 = 0x00000044,
+ ADDR_FMT_ASTC_8x5 = 0x00000045,
+ ADDR_FMT_ASTC_8x6 = 0x00000046,
+ ADDR_FMT_ASTC_8x8 = 0x00000047,
+ ADDR_FMT_ASTC_10x5 = 0x00000048,
+ ADDR_FMT_ASTC_10x6 = 0x00000049,
+ ADDR_FMT_ASTC_10x8 = 0x0000004a,
+ ADDR_FMT_ASTC_10x10 = 0x0000004b,
+ ADDR_FMT_ASTC_12x10 = 0x0000004c,
+ ADDR_FMT_ASTC_12x12 = 0x0000004d,
} AddrFormat;
/**
-***************************************************************************************************
+****************************************************************************************************
* AddrDepthFormat
*
* @brief
* Neutral enum for addrFlt32ToDepthPixel
*
-***************************************************************************************************
+****************************************************************************************************
*/
typedef enum _AddrDepthFormat
{
} AddrDepthFormat;
/**
-***************************************************************************************************
+****************************************************************************************************
* AddrColorFormat
*
* @brief
* Neutral enum for ColorFormat
*
-***************************************************************************************************
+****************************************************************************************************
*/
typedef enum _AddrColorFormat
{
} AddrColorFormat;
/**
-***************************************************************************************************
+****************************************************************************************************
* AddrSurfaceNumber
*
* @brief
* Neutral enum for SurfaceNumber
*
-***************************************************************************************************
+****************************************************************************************************
*/
typedef enum _AddrSurfaceNumber {
ADDR_NUMBER_UNORM = 0x00000000,
} AddrSurfaceNumber;
/**
-***************************************************************************************************
+****************************************************************************************************
* AddrSurfaceSwap
*
* @brief
* Neutral enum for SurfaceSwap
*
-***************************************************************************************************
+****************************************************************************************************
*/
typedef enum _AddrSurfaceSwap {
ADDR_SWAP_STD = 0x00000000,
} AddrSurfaceSwap;
/**
-***************************************************************************************************
+****************************************************************************************************
* AddrHtileBlockSize
*
* @brief
* Size of HTILE blocks, valid values are 4 or 8 for now
-***************************************************************************************************
+****************************************************************************************************
*/
typedef enum _AddrHtileBlockSize
{
/**
-***************************************************************************************************
+****************************************************************************************************
* AddrPipeCfg
*
* @brief
* For hw configurations w/ non-pow2 memory number of memory channels, it usually matches
* the number of ROP units(? TODO: which registers??)
* The enum value = hw enum + 1 which is to reserve 0 for requesting default.
-***************************************************************************************************
+****************************************************************************************************
*/
typedef enum _AddrPipeCfg
{
} AddrPipeCfg;
/**
-***************************************************************************************************
+****************************************************************************************************
* AddrTileType
*
* @brief
* Neutral enums that specifies micro tile type (MICRO_TILE_MODE)
-***************************************************************************************************
+****************************************************************************************************
*/
typedef enum _AddrTileType
{
ADDR_THICK = 4, ///< Thick micro-tiling, only valid for THICK and XTHICK
} AddrTileType;
-///////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Type definitions: short system-independent names for address library types
//
-///////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) || defined(HAVE_TSERVER)
#ifndef BOOL_32 // no bool type in C
/// @brief Boolean type, since none is defined in C
#define UINT_64 unsigned long long OR unsigned __int64
#endif
-#endif // #if !defined(__APPLE__)
+#endif // #if !defined(__APPLE__) || defined(HAVE_TSERVER)
// ADDR64X is used to print addresses in hex form on both Windows and Linux
//
} ADDR_FLT_32;
-///////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Macros for controlling linking and building on multiple systems
//
-///////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
#if defined(_MSC_VER)
#if defined(va_copy)
#undef va_copy //redefine va_copy to support VC2013