Vulkan: Add VkUnknown code and display unknown VkResult in error message
This CL add the `VK_ERROR_UNKNOWN` as known VkResult code, and make the
error message on Vulkan backend display the value of unknown VkResult,
instead of just a "<Unknown VkResult>".
Change-Id: I15de90483c9a2666958247d93e28de83fec3478b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/196675
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
diff --git a/src/dawn/native/vulkan/VulkanError.cpp b/src/dawn/native/vulkan/VulkanError.cpp
index 7f42942..0d56055 100644
--- a/src/dawn/native/vulkan/VulkanError.cpp
+++ b/src/dawn/native/vulkan/VulkanError.cpp
@@ -31,7 +31,7 @@
namespace dawn::native::vulkan {
-const char* VkResultAsString(::VkResult result) {
+std::string VkResultAsString(::VkResult result) {
// Convert to a int32_t to silence and MSVC warning that the fake errors don't appear in
// the original VkResult enum.
int32_t code = static_cast<int32_t>(result);
@@ -73,6 +73,8 @@
return "VK_ERROR_FORMAT_NOT_SUPPORTED";
case VK_ERROR_FRAGMENTED_POOL:
return "VK_ERROR_FRAGMENTED_POOL";
+ case VK_ERROR_UNKNOWN:
+ return "VK_ERROR_UNKNOWN";
case VK_ERROR_SURFACE_LOST_KHR:
return "VK_ERROR_SURFACE_LOST_KHR";
@@ -83,8 +85,11 @@
return "VK_FAKE_DEVICE_OOM_FOR_TESTING";
case VK_FAKE_ERROR_FOR_TESTING:
return "VK_FAKE_ERROR_FOR_TESTING";
- default:
- return "<Unknown VkResult>";
+ default: {
+ std::stringstream s;
+ s << "<Unknown VkResult: " << code << ">";
+ return s.str();
+ }
}
}
diff --git a/src/dawn/native/vulkan/VulkanError.h b/src/dawn/native/vulkan/VulkanError.h
index afbb818..96bd0cf 100644
--- a/src/dawn/native/vulkan/VulkanError.h
+++ b/src/dawn/native/vulkan/VulkanError.h
@@ -28,6 +28,8 @@
#ifndef SRC_DAWN_NATIVE_VULKAN_VULKANERROR_H_
#define SRC_DAWN_NATIVE_VULKAN_VULKANERROR_H_
+#include <string>
+
#include "dawn/native/ErrorInjector.h"
#include "dawn/native/vulkan/VulkanFunctions.h"
@@ -37,7 +39,7 @@
namespace dawn::native::vulkan {
// Returns a string version of the result.
-const char* VkResultAsString(::VkResult result);
+std::string VkResultAsString(::VkResult result);
MaybeError CheckVkSuccessImpl(VkResult result, const char* context);
MaybeError CheckVkOOMThenSuccessImpl(VkResult result, const char* context);