summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-05-18 13:51:16 -0700
committerJason Ekstrand <[email protected]>2017-05-18 16:32:11 -0700
commitc499faebd77d1d9656774406fe259cd5369af12c (patch)
tree439418e8a6ad473007171240bde0b4976a5ddd66
parent53f997de77357cd5fbeca3d167729793d188aab6 (diff)
anv: Add an option to abort on device loss
This is mostly for running in our CI system to prevent dEQP from continuing on to the next test if we get a GPU hang. As it currently stands, dEQP uses the same VkDevice for almost all tests and if one of the tests hangs, we set the anv_device::device_lost flag and report VK_ERROR_DEVICE_LOST for all queue operations from that point forward without sending anything to the GPU. dEQP will happily continue trying to run tests and reporting failures until it eventually gets crash that forces the test runner to start over. This circumvents the problem by just aborting the process if we ever get a GPU hang. Since this is not the recommended behavior most of the time, we hide it behind an environment variable. Reviewed-by: Lionel Landwerlin <[email protected]>
-rw-r--r--src/intel/vulkan/anv_util.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/intel/vulkan/anv_util.c b/src/intel/vulkan/anv_util.c
index ba91733d82b..4b916e27f2c 100644
--- a/src/intel/vulkan/anv_util.c
+++ b/src/intel/vulkan/anv_util.c
@@ -30,6 +30,7 @@
#include "anv_private.h"
#include "vk_enum_to_str.h"
+#include "util/debug.h"
/** Log an error message. */
void anv_printflike(1, 2)
@@ -95,5 +96,9 @@ __vk_errorf(VkResult error, const char *file, int line, const char *format, ...)
fprintf(stderr, "%s:%d: %s\n", file, line, error_str);
}
+ if (error == VK_ERROR_DEVICE_LOST &&
+ env_var_as_boolean("ANV_ABORT_ON_DEVICE_LOSS", false))
+ abort();
+
return error;
}