amdgpu/addrlib: Add new interface to support macro mode index query

This commit is contained in:
Frans Gu 2015-04-10 04:20:06 -04:00 committed by Marek Olšák
parent c16e1e2041
commit 7293a020bd
4 changed files with 115 additions and 0 deletions

View file

@ -909,6 +909,38 @@ ADDR_E_RETURNCODE ADDR_API AddrConvertTileIndex(
return returnCode;
}
/**
***************************************************************************************************
* AddrGetMacroModeIndex
*
* @brief
* Get macro mode index based on input parameters
*
* @return
* ADDR_OK if successful, otherwise an error code of ADDR_E_RETURNCODE
***************************************************************************************************
*/
ADDR_E_RETURNCODE ADDR_API AddrGetMacroModeIndex(
ADDR_HANDLE hLib, ///< address lib handle
const ADDR_GET_MACROMODEINDEX_INPUT* pIn, ///< [in] input
ADDR_GET_MACROMODEINDEX_OUTPUT* pOut) ///< [out] macro mode index
{
AddrLib1* pLib = AddrLib1::GetAddrLib1(hLib);
ADDR_E_RETURNCODE returnCode;
if (pLib != NULL)
{
returnCode = pLib->GetMacroModeIndex(pIn, pOut);
}
else
{
returnCode = ADDR_ERROR;
}
return returnCode;
}
/**
***************************************************************************************************
* AddrConvertTileIndex1

View file

@ -1964,7 +1964,49 @@ ADDR_E_RETURNCODE ADDR_API AddrConvertTileIndex(
const ADDR_CONVERT_TILEINDEX_INPUT* pIn,
ADDR_CONVERT_TILEINDEX_OUTPUT* pOut);
/**
***************************************************************************************************
* ADDR_GET_MACROMODEINDEX_INPUT
*
* @brief
* Input structure for AddrGetMacroModeIndex
***************************************************************************************************
*/
typedef struct _ADDR_GET_MACROMODEINDEX_INPUT
{
UINT_32 size; ///< Size of this structure in bytes
ADDR_SURFACE_FLAGS flags; ///< Surface flag
INT_32 tileIndex; ///< Tile index
UINT_32 bpp; ///< Bits per pixel
UINT_32 numFrags; ///< Number of color fragments
} ADDR_GET_MACROMODEINDEX_INPUT;
/**
***************************************************************************************************
* ADDR_GET_MACROMODEINDEX_OUTPUT
*
* @brief
* Output structure for AddrGetMacroModeIndex
***************************************************************************************************
*/
typedef struct _ADDR_GET_MACROMODEINDEX_OUTPUT
{
UINT_32 size; ///< Size of this structure in bytes
INT_32 macroModeIndex; ///< Index in macro tile mode table if there is one (CI)
} ADDR_GET_MACROMODEINDEX_OUTPUT;
/**
***************************************************************************************************
* AddrGetMacroModeIndex
*
* @brief
* Get macro mode index based on input parameters
***************************************************************************************************
*/
ADDR_E_RETURNCODE ADDR_API AddrGetMacroModeIndex(
ADDR_HANDLE hLib,
const ADDR_GET_MACROMODEINDEX_INPUT* pIn,
ADDR_GET_MACROMODEINDEX_OUTPUT* pOut);
/**
***************************************************************************************************

View file

@ -1079,6 +1079,43 @@ ADDR_E_RETURNCODE AddrLib1::ConvertTileIndex(
return returnCode;
}
/**
***************************************************************************************************
* AddrLib1::GetMacroModeIndex
*
* @brief
* Get macro mode index based on input info
*
* @return
* ADDR_E_RETURNCODE
***************************************************************************************************
*/
ADDR_E_RETURNCODE AddrLib1::GetMacroModeIndex(
const ADDR_GET_MACROMODEINDEX_INPUT* pIn, ///< [in] input structure
ADDR_GET_MACROMODEINDEX_OUTPUT* pOut ///< [out] output structure
) const
{
ADDR_E_RETURNCODE returnCode = ADDR_OK;
if (GetFillSizeFieldsFlags())
{
if ((pIn->size != sizeof(ADDR_GET_MACROMODEINDEX_INPUT)) ||
(pOut->size != sizeof(ADDR_GET_MACROMODEINDEX_OUTPUT)))
{
returnCode = ADDR_PARAMSIZEMISMATCH;
}
}
if (returnCode == ADDR_OK)
{
ADDR_TILEINFO tileInfo = {0};
pOut->macroModeIndex = HwlComputeMacroModeIndex(pIn->tileIndex, pIn->flags, pIn->bpp,
pIn->numFrags, &tileInfo);
}
return returnCode;
}
/**
***************************************************************************************************
* AddrLib1::ConvertTileIndex1

View file

@ -143,6 +143,10 @@ public:
const ADDR_CONVERT_TILEINDEX_INPUT* pIn,
ADDR_CONVERT_TILEINDEX_OUTPUT* pOut) const;
ADDR_E_RETURNCODE GetMacroModeIndex(
const ADDR_GET_MACROMODEINDEX_INPUT* pIn,
ADDR_GET_MACROMODEINDEX_OUTPUT* pOut) const;
ADDR_E_RETURNCODE ConvertTileIndex1(
const ADDR_CONVERT_TILEINDEX1_INPUT* pIn,
ADDR_CONVERT_TILEINDEX_OUTPUT* pOut) const;