diff options
author | Samuel Pitoiset <[email protected]> | 2020-03-11 09:25:21 +0100 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-03-12 18:17:47 +0000 |
commit | a46e9f4d9ac827e4e5ecfee4bf24e38cb09e349b (patch) | |
tree | 0960be6b40182bb70a374f06784f0f80c251cdd4 /src/amd | |
parent | 741dd9e32bdfeb32ebccbe131d2eb5e82769b0a5 (diff) |
radv: use ac_gpu_info::use_late_alloc
Based on PAL and RadeonSI.
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4144>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4144>
Diffstat (limited to 'src/amd')
-rw-r--r-- | src/amd/vulkan/si_cmd_buffer.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/amd/vulkan/si_cmd_buffer.c b/src/amd/vulkan/si_cmd_buffer.c index 0a15a3c4005..e53efc87f92 100644 --- a/src/amd/vulkan/si_cmd_buffer.c +++ b/src/amd/vulkan/si_cmd_buffer.c @@ -302,7 +302,9 @@ si_emit_graphics(struct radv_physical_device *physical_device, /* For Wave32, the hw will launch twice the number of late * alloc waves, so 1 == 2x wave32. */ - if (num_cu_per_sh <= 6) { + if (!physical_device->rad_info.use_late_alloc) { + late_alloc_wave64 = 0; + } else if (num_cu_per_sh <= 6) { late_alloc_wave64 = num_cu_per_sh - 2; } else { late_alloc_wave64 = (num_cu_per_sh - 2) * 4; @@ -323,8 +325,8 @@ si_emit_graphics(struct radv_physical_device *physical_device, cu_mask_gs = 0xffff; } } else { - if (physical_device->rad_info.family == CHIP_KABINI) { - late_alloc_wave64 = 0; /* Potential hang on Kabini. */ + if (!physical_device->rad_info.use_late_alloc) { + late_alloc_wave64 = 0; } else if (num_cu_per_sh <= 4) { /* Too few available compute units per SH. * Disallowing VS to run on one CU could hurt @@ -425,7 +427,7 @@ si_emit_graphics(struct radv_physical_device *physical_device, /* TODO: For culling, replace 128 with 256. */ radeon_set_uconfig_reg(cs, R_030980_GE_PC_ALLOC, - S_030980_OVERSUB_EN(1) | + S_030980_OVERSUB_EN(physical_device->rad_info.use_late_alloc) | S_030980_NUM_PC_LINES(128 * physical_device->rad_info.max_se - 1)); } |