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);