radv: set the maximum number of IBs per submit to 192
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 12 Mar 2019 20:49:42 +0000 (21:49 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 12 Mar 2019 21:15:45 +0000 (22:15 +0100)
This fixes random SteamVR corruption, see
https://github.com/ValveSoftware/SteamVR-for-Linux/issues/181

Fixes: 4d30f2c6f42 ("radv/winsys: remove the max IBs per submit limit for the fallback path")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_device.c
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys_public.h

index 83d218fb6bf01a9109337ffe7a290f0e77780033..9570c15af02b7afb89b7d2de097e62e869717025 100644 (file)
@@ -2815,7 +2815,7 @@ VkResult radv_QueueSubmit(
        struct radeon_winsys_fence *base_fence = fence ? fence->fence : NULL;
        struct radeon_winsys_ctx *ctx = queue->hw_ctx;
        int ret;
-       uint32_t max_cs_submission = queue->device->trace_bo ? 1 : UINT32_MAX;
+       uint32_t max_cs_submission = queue->device->trace_bo ? 1 : RADV_MAX_IBS_PER_SUBMIT;
        uint32_t scratch_size = 0;
        uint32_t compute_scratch_size = 0;
        uint32_t esgs_ring_size = 0, gsvs_ring_size = 0;
index 854e216551f487aba1b3128a2f86f5122b52ef6d..709669b2a570383ac5315b927e0d9c73825be7a6 100644 (file)
 #ifndef RADV_AMDGPU_WINSYS_PUBLIC_H
 #define RADV_AMDGPU_WINSYS_PUBLIC_H
 
+/* The number of IBs per submit isn't infinite, it depends on the ring type
+ * (ie. some initial setup needed for a submit) and the number of IBs (4 DW).
+ * This limit is arbitrary but should be safe for now.  Ideally, we should get
+ * this limit from the KMD.
+*/
+#define RADV_MAX_IBS_PER_SUBMIT 192
+
 struct radeon_winsys *radv_amdgpu_winsys_create(int fd, uint64_t debug_flags,
                                                uint64_t perftest_flags);