This will allow us to emit the CLEAR_STATE packet instead
of a bunch of useless packets when doing CS initialization.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
 src/amd/vulkan/radv_device.c  | 5 +++++
 src/amd/vulkan/radv_private.h | 1 +
 2 files changed, 6 insertions(+)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index e07a573819..5a195f438d 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -389,6 +389,11 @@ radv_physical_device_init(struct radv_physical_device 
*device,
                device->rbplus_allowed = device->rad_info.family == CHIP_STONEY;
        }
 
+       /* The mere presense of CLEAR_STATE in the IB causes random GPU hangs
+        * on SI.
+        */
+       device->has_clear_state = device->rad_info.chip_class >= CIK;
+
        return VK_SUCCESS;
 
 fail:
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 4d2b2c696b..316e28dc74 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -277,6 +277,7 @@ struct radv_physical_device {
 
        bool has_rbplus; /* if RB+ register exist */
        bool rbplus_allowed; /* if RB+ is allowed */
+       bool has_clear_state;
 };
 
 struct radv_instance {
-- 
2.14.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to