winsys/amdgpu: compute num_good_compute_units correctly

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
Marek Olšák 2016-01-19 17:43:11 +01:00
parent 0d8e4f958f
commit 2b66bc87d4
1 changed files with 5 additions and 10 deletions

View File

@ -266,17 +266,12 @@ static boolean do_winsys_init(struct amdgpu_winsys *ws)
ws->info.r600_virtual_address = TRUE; ws->info.r600_virtual_address = TRUE;
ws->info.r600_has_dma = dma.available_rings != 0; ws->info.r600_has_dma = dma.available_rings != 0;
/* Guess what the maximum compute unit number is by looking at the mask /* Get the number of good compute units. */
* of enabled CUs. ws->info.num_good_compute_units = 0;
*/
for (i = 0; i < ws->info.max_se; i++) for (i = 0; i < ws->info.max_se; i++)
for (j = 0; j < ws->info.max_sh_per_se; j++) { for (j = 0; j < ws->info.max_sh_per_se; j++)
unsigned max = util_last_bit(ws->amdinfo.cu_bitmap[i][j]); ws->info.num_good_compute_units +=
util_bitcount(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;
memcpy(ws->info.si_tile_mode_array, ws->amdinfo.gb_tile_mode, memcpy(ws->info.si_tile_mode_array, ws->amdinfo.gb_tile_mode,
sizeof(ws->amdinfo.gb_tile_mode)); sizeof(ws->amdinfo.gb_tile_mode));