freedreno: Switch the 16-bit workaround to match what turnip does.
authorEric Anholt <eric@anholt.net>
Tue, 26 Nov 2019 23:25:29 +0000 (15:25 -0800)
committerEric Anholt <eric@anholt.net>
Wed, 11 Dec 2019 04:24:18 +0000 (04:24 +0000)
Prevents regressions on argb1555 and rgb565 when making turnip use
freedreno's layout.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
src/freedreno/fdl/fd6_layout.c

index f9499b3a8a671f832090c5e75966ba4a74e3b25b..82b3a3e715cd285d53f5c70b3b5fbcc9b4e29071 100644 (file)
@@ -35,7 +35,7 @@ static const struct {
        unsigned heightalign;
 } tile_alignment[] = {
        [1]  = { 128, 32 },
-       [2]  = {  64, 32 },
+       [2]  = { 128, 16 },
        [3]  = {  64, 32 },
        [4]  = {  64, 16 },
        [6]  = {  64, 16 },
@@ -47,8 +47,8 @@ static const struct {
        [48] = {  64, 16 },
        [64] = {  64, 16 },
 
-       /* special cases for r16: */
-       [0]  = { 128, 16 },
+       /* special cases for r8g8: */
+       [0]  = {  64, 32 },
 };
 
 /* NOTE: good way to test this is:  (for example)
@@ -81,7 +81,7 @@ fdl6_layout(struct fdl_layout *layout,
        int ta = layout->cpp;
 
        /* The z16/r16 formats seem to not play by the normal tiling rules: */
-       if ((layout->cpp == 2) && (util_format_get_nr_components(format) == 1))
+       if ((layout->cpp == 2) && (util_format_get_nr_components(format) == 2))
                ta = 0;
 
        uint32_t alignment;