freedreno/a6xx: Fix UBWC blockheight for RG8.
authorEric Anholt <eric@anholt.net>
Wed, 6 May 2020 22:38:46 +0000 (15:38 -0700)
committerMarge Bot <eric+marge@anholt.net>
Wed, 13 May 2020 19:18:16 +0000 (19:18 +0000)
Using texturator on a P3A at 1024x1024, RG8 has log2w/h of 6x7 instead of
R16I/UI's 6x8.  The other blockw/h I verified other than cpp=1
(R8/R8I/R8UI didn't use UBWC) and 32 (would need a bigger type).

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4931>

src/freedreno/fdl/fd6_layout.c

index d6a83bfdd4a9f09596b58109efe3051e02fbaecd..336ca673b606c8e94453079643279ea051c68f1a 100644 (file)
@@ -39,6 +39,9 @@ static const struct tile_alignment {
        unsigned basealign;
        unsigned pitchalign;
        unsigned heightalign;
+       /* UBWC block width/height.  Used in size alignment, and calculating a
+        * descriptor's FLAG_BUFFER_LOG2W/H for mipmapping.
+        */
        uint8_t ubwc_blockwidth;
        uint8_t ubwc_blockheight;
 } tile_alignment[] = {
@@ -56,7 +59,7 @@ static const struct tile_alignment {
        [64] = { 256,  64, 16 },
 
        /* special cases for r8g8: */
-       [0]  = { 256, 64, 32, 16, 4 },
+       [0]  = { 256, 64, 32, 16, 8 },
 };
 
 #define RGB_TILE_WIDTH_ALIGNMENT 64