Module: Mesa
Branch: main
Commit: 46dc02354ae0df85440a1d9cc5dc0d4ef1e534ca
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=46dc02354ae0df85440a1d9cc5dc0d4ef1e534ca

Author: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Date:   Mon Oct 30 10:13:02 2023 +0100

radv: adjust binning settings to improve performance on GFX9

This partially reverts 74ab9401561c5d5bef62330c0b1264f42bfe52da which
was a fix for random GPU hangs with binning on GFX10+. Though,
according to RadeonSI, only GFX10+ is affected and this reduced perf
on GFX9 chips.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25951>

---

 src/amd/vulkan/radv_physical_device.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/amd/vulkan/radv_physical_device.c 
b/src/amd/vulkan/radv_physical_device.c
index efdbb0de379..580c51291d3 100644
--- a/src/amd/vulkan/radv_physical_device.c
+++ b/src/amd/vulkan/radv_physical_device.c
@@ -370,8 +370,16 @@ radv_find_memory_index(const struct radv_physical_device 
*pdevice, VkMemoryPrope
 static void
 radv_get_binning_settings(const struct radv_physical_device *pdevice, struct 
radv_binning_settings *settings)
 {
-   settings->context_states_per_bin = 1;
-   settings->persistent_states_per_bin = 1;
+   if ((pdevice->rad_info.has_dedicated_vram && 
pdevice->rad_info.max_render_backends > 4) ||
+       pdevice->rad_info.gfx_level >= GFX10) {
+      /* Using higher settings on GFX10+ can cause random GPU hangs. */
+      settings->context_states_per_bin = 1;
+      settings->persistent_states_per_bin = 1;
+   } else {
+      settings->context_states_per_bin = 
pdevice->rad_info.has_gfx9_scissor_bug ? 1 : 3;
+      settings->persistent_states_per_bin = 1;
+   }
+
    settings->fpovs_per_batch = 63;
 }
 

Reply via email to