From: Nicolai Hähnle <nicolai.haeh...@amd.com> Sometimes client driver passes valid tile info into address library, in this case, the tile index is computed in function HwlPostCheckTileIndex instead of CiAddrLib::HwlSetupTileCfg. We need to call HwlPostCheckTileIndex to calculate the correct tile index to get tile split bytes for this case. --- src/amd/addrlib/r800/ciaddrlib.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/src/amd/addrlib/r800/ciaddrlib.cpp b/src/amd/addrlib/r800/ciaddrlib.cpp index 57416dc..ccb0528 100644 --- a/src/amd/addrlib/r800/ciaddrlib.cpp +++ b/src/amd/addrlib/r800/ciaddrlib.cpp @@ -1270,28 +1270,39 @@ VOID CiAddrLib::HwlSetupTileInfo( pOut->tileIndex = 8; *pTileInfo = m_tileTable[8].info; } // Turn off tcCompatible for color surface if tileSplit happens. Depth/stencil is // handled at tileIndex selecting time. if (pOut->tcCompatible && (inTileType != ADDR_DEPTH_SAMPLE_ORDER)) { if (IsMacroTiled(tileMode)) { - // Non-depth entries store a split factor - UINT_32 sampleSplit = m_tileTable[pOut->tileIndex].info.tileSplitBytes; - UINT_32 tileBytes1x = BITS_TO_BYTES(bpp * MicroTilePixels * thickness); - UINT_32 colorTileSplit = Max(256u, sampleSplit * tileBytes1x); + UINT_32 tileIndex = static_cast<UINT_32>(pOut->tileIndex); - if (m_rowSize < colorTileSplit) + if ((tileIndex == TileIndexInvalid) && (IsTileInfoAllZero(pTileInfo) == FALSE)) { - pOut->tcCompatible = FALSE; + tileIndex = HwlPostCheckTileIndex(pTileInfo, tileMode, inTileType, tileIndex); + } + + if (tileIndex != TileIndexInvalid) + { + ADDR_ASSERT(tileIndex < TileTableSize); + // Non-depth entries store a split factor + UINT_32 sampleSplit = m_tileTable[tileIndex].info.tileSplitBytes; + UINT_32 tileBytes1x = BITS_TO_BYTES(bpp * MicroTilePixels * thickness); + UINT_32 colorTileSplit = Max(256u, sampleSplit * tileBytes1x); + + if (m_rowSize < colorTileSplit) + { + pOut->tcCompatible = FALSE; + } } } else { // Client should not enable tc compatible for linear and 1D tile modes. pOut->tcCompatible = FALSE; } } } -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev