freedreno/gmemtool: make GMEM alignment per-gen
authorRob Clark <robdclark@chromium.org>
Sat, 23 May 2020 18:50:14 +0000 (11:50 -0700)
committerMarge Bot <eric+marge@anholt.net>
Tue, 26 May 2020 19:29:34 +0000 (19:29 +0000)
`gmem_page_align` is generation specific (with the exception of a2xx
which has a different value for fast-clear).  So we should override the
value from the captured gmem_key according to the gpu we are emulating
for the purposes of calculating gmem config.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5189>

src/gallium/drivers/freedreno/gmemtool.c

index 9b68b28a9197cbefd53812df94b79db3f3de3c7a..5120797bbd43ce94a9ad1837ddbef34fc1e573d4 100644 (file)
@@ -77,6 +77,7 @@ struct gpu_info {
        uint32_t gmem_alignw;
        uint32_t gmem_alignh;
        uint32_t num_vsc_pipes;
+       uint8_t  gmem_page_align;
        uint32_t gmemsize_bytes;
 };
 
@@ -87,10 +88,10 @@ struct gpu_info {
 
 /* keep sorted by gpu name: */
 static const struct gpu_info gpu_infos[] = {
-       { "a306", 307, 32, 32,  8, SZ_128K },
-       { "a530", 530, 64, 32, 16, SZ_1M   },
-       { "a618", 618, 32, 32, 32, SZ_512K },
-       { "a630", 630, 32, 32, 32, SZ_1M   },
+       { "a306", 307, 32, 32,  8, 4, SZ_128K },
+       { "a530", 530, 64, 32, 16, 4, SZ_1M   },
+       { "a618", 618, 32, 32, 32, 1, SZ_512K },
+       { "a630", 630, 32, 32, 32, 1, SZ_1M   },
 };
 
 int
@@ -132,8 +133,9 @@ main(int argc, char **argv)
 
        /* And finally run thru all the GMEM keys: */
        for (int i = 0; i < ARRAY_SIZE(keys); i++) {
-               struct fd_gmem_stateobj *gmem =
-                               gmem_stateobj_init(&screen, (void *)&keys[i]);
+               struct gmem_key key = keys[i];
+               key.gmem_page_align = gpu_info->gmem_page_align;
+               struct fd_gmem_stateobj *gmem = gmem_stateobj_init(&screen, &key);
                dump_gmem_state(gmem);
                ralloc_free(gmem);
        }