amdgpu/addrlib: Add a flag to skip calculate indices
This is useful for debugging and special cases for stencil surfaces do not require texture fetch compatible.
This commit is contained in:
@@ -513,7 +513,8 @@ typedef union _ADDR_SURFACE_FLAGS
|
||||
/// This flag indicates we need to override tile
|
||||
/// mode to PRT_* tile mode to disable slice rotation,
|
||||
/// which is needed by swizzle pattern equation.
|
||||
UINT_32 reserved : 8; ///< Reserved bits
|
||||
UINT_32 skipIndicesOutput : 1; ///< Skipping indices in output.
|
||||
UINT_32 reserved : 7; ///< Reserved bits
|
||||
};
|
||||
|
||||
UINT_32 value;
|
||||
|
||||
@@ -4486,19 +4486,25 @@ ADDR_E_RETURNCODE EgBasedAddrLib::HwlComputeSurfaceInfo(
|
||||
retCode = ADDR_INVALIDPARAMS;
|
||||
}
|
||||
|
||||
// Returns an index
|
||||
pOut->tileIndex = HwlPostCheckTileIndex(pOut->pTileInfo,
|
||||
pOut->tileMode,
|
||||
pOut->tileType,
|
||||
pOut->tileIndex);
|
||||
|
||||
if (IsMacroTiled(pOut->tileMode) && (pOut->macroModeIndex == TileIndexInvalid))
|
||||
// In case client uses tile info as input and would like to calculate a correct size and
|
||||
// alignment together with tile info as output when the tile info is not suppose to have any
|
||||
// matching indices in tile mode tables.
|
||||
if (pIn->flags.skipIndicesOutput == FALSE)
|
||||
{
|
||||
pOut->macroModeIndex = HwlComputeMacroModeIndex(pOut->tileIndex,
|
||||
pIn->flags,
|
||||
pIn->bpp,
|
||||
pIn->numSamples,
|
||||
pOut->pTileInfo);
|
||||
// Returns an index
|
||||
pOut->tileIndex = HwlPostCheckTileIndex(pOut->pTileInfo,
|
||||
pOut->tileMode,
|
||||
pOut->tileType,
|
||||
pOut->tileIndex);
|
||||
|
||||
if (IsMacroTiled(pOut->tileMode) && (pOut->macroModeIndex == TileIndexInvalid))
|
||||
{
|
||||
pOut->macroModeIndex = HwlComputeMacroModeIndex(pOut->tileIndex,
|
||||
pIn->flags,
|
||||
pIn->bpp,
|
||||
pIn->numSamples,
|
||||
pOut->pTileInfo);
|
||||
}
|
||||
}
|
||||
|
||||
// Resets pTileInfo to NULL if the internal tile info is used
|
||||
|
||||
@@ -3274,7 +3274,7 @@ VOID SiAddrLib::InitEquationTable()
|
||||
UINT_32 bpp = 1 << (log2ElementBytes + 3);
|
||||
|
||||
// Loop all possible tile index
|
||||
for (INT_32 tileIndex = 0; tileIndex < m_noOfEntries; tileIndex++)
|
||||
for (INT_32 tileIndex = 0; tileIndex < static_cast<INT_32>(m_noOfEntries); tileIndex++)
|
||||
{
|
||||
UINT_32 equationIndex = ADDR_INVALID_EQUATION_INDEX;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user