ac/gpu_info: Correct Acturus cu bitmap
[mesa.git] / src / amd / common / ac_gpu_info.c
index bdd8de374ddf3e7ff9a186a6c94b633bcca0027b..f0128dcf0f09e834f53574bbf67439a83d91ff3c 100644 (file)
@@ -619,7 +619,19 @@ bool ac_query_gpu_info(int fd, void *dev_p,
        info->num_good_compute_units = 0;
        for (i = 0; i < info->max_se; i++) {
                for (j = 0; j < info->max_sh_per_se; j++) {
-                       info->cu_mask[i][j] = amdinfo->cu_bitmap[i][j];
+                       /*
+                        * The cu bitmap in amd gpu info structure is
+                        * 4x4 size array, and it's usually suitable for Vega
+                        * ASICs which has 4*2 SE/SH layout.
+                        * But for Arcturus, SE/SH layout is changed to 8*1.
+                        * To mostly reduce the impact, we make it compatible
+                        * with current bitmap array as below:
+                        *    SE4,SH0 --> cu_bitmap[0][1]
+                        *    SE5,SH0 --> cu_bitmap[1][1]
+                        *    SE6,SH0 --> cu_bitmap[2][1]
+                        *    SE7,SH0 --> cu_bitmap[3][1]
+                        */
+                       info->cu_mask[i%4][j+i/4] = amdinfo->cu_bitmap[i%4][j+i/4];
                        info->num_good_compute_units +=
                                util_bitcount(info->cu_mask[i][j]);
                }