winsys/amdgpu: compute num_good_compute_units correctly
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
0d8e4f958f
commit
2b66bc87d4
|
@ -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));
|
||||||
|
|
Loading…
Reference in New Issue