diff --git a/src/amd/vulkan/radv_debug.c b/src/amd/vulkan/radv_debug.c index f4b2b34922e..f0dbb5b75c1 100644 --- a/src/amd/vulkan/radv_debug.c +++ b/src/amd/vulkan/radv_debug.c @@ -706,7 +706,7 @@ enum radv_device_fault_chunk { RADV_DEVICE_FAULT_CHUNK_COUNT, }; -void +VkResult radv_check_gpu_hangs(struct radv_queue *queue, const struct radv_winsys_submit_info *submit_info) { enum amd_ip_type ring; @@ -715,7 +715,7 @@ radv_check_gpu_hangs(struct radv_queue *queue, const struct radv_winsys_submit_i bool hang_occurred = radv_gpu_hang_occurred(queue, ring); if (!hang_occurred) - return; + return VK_SUCCESS; fprintf(stderr, "radv: GPU hang detected...\n"); @@ -849,6 +849,7 @@ radv_check_gpu_hangs(struct radv_queue *queue, const struct radv_winsys_submit_i } #endif + return VK_ERROR_DEVICE_LOST; } void diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h index ac531c6d7fc..ea10b7cf5a1 100644 --- a/src/amd/vulkan/radv_debug.h +++ b/src/amd/vulkan/radv_debug.h @@ -85,7 +85,7 @@ enum { bool radv_init_trace(struct radv_device *device); void radv_finish_trace(struct radv_device *device); -void radv_check_gpu_hangs(struct radv_queue *queue, const struct radv_winsys_submit_info *submit_info); +VkResult radv_check_gpu_hangs(struct radv_queue *queue, const struct radv_winsys_submit_info *submit_info); void radv_print_spirv(const char *data, uint32_t size, FILE *fp); diff --git a/src/amd/vulkan/radv_queue.c b/src/amd/vulkan/radv_queue.c index 876afd7dad9..7a441d6eaec 100644 --- a/src/amd/vulkan/radv_queue.c +++ b/src/amd/vulkan/radv_queue.c @@ -2162,7 +2162,7 @@ radv_queue_submit_normal(struct radv_queue *queue, struct vk_queue_submit *submi goto fail; if (radv_device_fault_detection_enabled(device)) { - radv_check_gpu_hangs(queue, &submit); + result = radv_check_gpu_hangs(queue, &submit); } if (device->tma_bo) {