From: Nicolai Hähnle <nicolai.haeh...@amd.com>

If this flag is set for mip0, client should set prt flag for sub mips,
so that address lib can select the correct tile index for sub mips.
---
 src/amd/addrlib/addrinterface.h    | 5 ++++-
 src/amd/addrlib/r800/siaddrlib.cpp | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/amd/addrlib/addrinterface.h b/src/amd/addrlib/addrinterface.h
index 2a61b2b..8506a45 100644
--- a/src/amd/addrlib/addrinterface.h
+++ b/src/amd/addrlib/addrinterface.h
@@ -612,21 +612,24 @@ typedef struct _ADDR_COMPUTE_SURFACE_INFO_OUTPUT
 
     INT_32          macroModeIndex; ///< Index in macro tile mode table if 
there is one (CI)
     /// Output flags
     struct
     {
         /// Special information to work around SI mipmap swizzle bug UBTS 
#317508
         UINT_32     last2DLevel  : 1;  ///< TRUE if this is the last 2D(3D) 
tiled
                                        ///< Only meaningful when create flag 
checkLast2DLevel is set
         UINT_32     tcCompatible : 1;  ///< If the surface can be shader 
compatible
         UINT_32     dccUnsupport : 1;  ///< If the surface can support DCC 
compressed rendering
-        UINT_32     reserved     :29;  ///< Reserved bits
+        UINT_32     prtTileIndex : 1;  ///< SI only, indicate the returned 
tile index is for PRT
+                                       ///< If address lib return true for mip 
0, client should set prt flag
+                                       ///< for child mips in subsequent 
compute surface info calls
+        UINT_32     reserved     :28;  ///< Reserved bits
     };
 
     UINT_32         equationIndex;     ///< Equation index in the equation 
table;
 
     UINT_32         blockWidth;        ///< Width in element inside one 
block(1D->Micro, 2D->Macro)
     UINT_32         blockHeight;       ///< Height in element inside one 
block(1D->Micro, 2D->Macro)
     UINT_32         blockSlices;       ///< Slice number inside one 
block(1D->Micro, 2D->Macro)
 
     /// Stereo info
     ADDR_QBSTEREOINFO*  pStereoInfo;///< Stereo information, needed when 
.qbStereo flag is TRUE
diff --git a/src/amd/addrlib/r800/siaddrlib.cpp 
b/src/amd/addrlib/r800/siaddrlib.cpp
index d3e9486..d358f0d 100644
--- a/src/amd/addrlib/r800/siaddrlib.cpp
+++ b/src/amd/addrlib/r800/siaddrlib.cpp
@@ -2224,20 +2224,21 @@ VOID SiLib::HwlSetupTileInfo(
             {
                 // Stencil always uses index 0
                 *pTileInfo = m_tileTable[0].info;
             }
         }
         // Pass through tile type
         pOut->tileType = inTileType;
     }
 
     pOut->tileIndex = index;
+    pOut->prtTileIndex = flags.prt;
 }
 
 /**
 
****************************************************************************************************
 *   SiLib::DecodeGbRegs
 *
 *   @brief
 *       Decodes GB_ADDR_CONFIG and noOfBanks/noOfRanks
 *
 *   @return
-- 
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to