Mesa (master): winsys/amdgpu: compute num_good_compute_units correctly

Marek Olšák mareko at kemper.freedesktop.org
Fri Jan 22 14:03:20 UTC 2016


Module: Mesa
Branch: master
Commit: 2b66bc87d4dc50e7b97d3f4521767927fbf355a4
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b66bc87d4dc50e7b97d3f4521767927fbf355a4

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue Jan 19 17:43:11 2016 +0100

winsys/amdgpu: compute num_good_compute_units correctly

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
index 9835024..69df363 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
@@ -266,17 +266,12 @@ static boolean do_winsys_init(struct amdgpu_winsys *ws)
    ws->info.r600_virtual_address = TRUE;
    ws->info.r600_has_dma = dma.available_rings != 0;
 
-   /* Guess what the maximum compute unit number is by looking at the mask
-    * of enabled CUs.
-    */
+   /* Get the number of good compute units. */
+   ws->info.num_good_compute_units = 0;
    for (i = 0; i < ws->info.max_se; i++)
-      for (j = 0; j < ws->info.max_sh_per_se; j++) {
-         unsigned max = util_last_bit(ws->amdinfo.cu_bitmap[i][j]);
-
-         if (ws->info.num_good_compute_units < max)
-            ws->info.num_good_compute_units = max;
-      }
-   ws->info.num_good_compute_units *= ws->info.max_se * ws->info.max_sh_per_se;
+      for (j = 0; j < ws->info.max_sh_per_se; j++)
+         ws->info.num_good_compute_units +=
+            util_bitcount(ws->amdinfo.cu_bitmap[i][j]);
 
    memcpy(ws->info.si_tile_mode_array, ws->amdinfo.gb_tile_mode,
           sizeof(ws->amdinfo.gb_tile_mode));




More information about the mesa-commit mailing list