summaryrefslogtreecommitdiffstats
path: root/src/amd
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2020-03-11 09:25:21 +0100
committerMarge Bot <[email protected]>2020-03-12 18:17:47 +0000
commita46e9f4d9ac827e4e5ecfee4bf24e38cb09e349b (patch)
tree0960be6b40182bb70a374f06784f0f80c251cdd4 /src/amd
parent741dd9e32bdfeb32ebccbe131d2eb5e82769b0a5 (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.c10
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));
}