radv: fix a hang with binning on CHIP_RENOIR
authorChia-I Wu <olvaffe@gmail.com>
Sat, 11 Feb 2023 00:39:46 +0000 (16:39 -0800)
committerMarge Bot <emma+marge@anholt.net>
Mon, 13 Feb 2023 17:23:53 +0000 (17:23 +0000)
Using (6, 16) for (context_states_per_bin, persistent_states_per_bin)
causes gpu hang in RDR2 benchmark on CHIP_RENOIR.  Follow radeonsi and
use (3, 8) instead.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21254>

src/amd/vulkan/radv_device.c

index 297b0f0..1a8eb31 100644 (file)
@@ -741,23 +741,19 @@ static void
 radv_get_binning_settings(const struct radv_physical_device *pdevice,
                           struct radv_binning_settings *settings)
 {
-   if (pdevice->rad_info.has_dedicated_vram) {
-      if (pdevice->rad_info.max_render_backends > 4) {
-         settings->context_states_per_bin = 1;
-         settings->persistent_states_per_bin = 1;
-      } else {
-         settings->context_states_per_bin = 3;
-         settings->persistent_states_per_bin = 8;
-      }
-      settings->fpovs_per_batch = 63;
+   if (pdevice->rad_info.has_dedicated_vram &&
+       pdevice->rad_info.max_render_backends > 4) {
+      settings->context_states_per_bin = 1;
+      settings->persistent_states_per_bin = 1;
    } else {
-      /* The context states are affected by the scissor bug. */
-      settings->context_states_per_bin = 6;
+      settings->context_states_per_bin = 3;
       /* 32 causes hangs for RAVEN. */
-      settings->persistent_states_per_bin = 16;
-      settings->fpovs_per_batch = 63;
+      settings->persistent_states_per_bin = 8;
    }
 
+   settings->fpovs_per_batch = 63;
+
+   /* The context states are affected by the scissor bug. */
    if (pdevice->rad_info.has_gfx9_scissor_bug)
       settings->context_states_per_bin = 1;
 }