radv: use ac_gpu_info::use_late_alloc
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 11 Mar 2020 08:25:21 +0000 (09:25 +0100)
committerMarge Bot <eric+marge@anholt.net>
Thu, 12 Mar 2020 18:17:47 +0000 (18:17 +0000)
Based on PAL and RadeonSI.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4144>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4144>

src/amd/vulkan/si_cmd_buffer.c

index 0a15a3c40051d1e9b88847b8621e368439d7ad9d..e53efc87f92208eb73e098e3b45257510eec9006 100644 (file)
@@ -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));
        }