mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-06 06:33:30 +00:00
This adds a CheckVkSuccess utility function that adds the VkResult value to the context lost error message. Also adds a small fix to dawn_native/Error.h interoperability between MaybeError and ResultOrError<NonPointer> with tests. BUG=chromium:917555 BUG=dawn:79 Change-Id: Icc01122d62d83693fc0ea3f26b272f2372fd3087 Reviewed-on: https://dawn-review.googlesource.com/c/3623 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
74 lines
2.8 KiB
C++
74 lines
2.8 KiB
C++
// Copyright 2019 The Dawn Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#include "dawn_native/vulkan/VulkanError.h"
|
|
|
|
#include <string>
|
|
|
|
namespace dawn_native { namespace vulkan {
|
|
|
|
const char* VkResultAsString(VkResult result) {
|
|
switch (result) {
|
|
case VK_SUCCESS:
|
|
return "VK_SUCCESS";
|
|
case VK_NOT_READY:
|
|
return "VK_NOT_READY";
|
|
case VK_TIMEOUT:
|
|
return "VK_TIMEOUT";
|
|
case VK_EVENT_SET:
|
|
return "VK_EVENT_SET";
|
|
case VK_EVENT_RESET:
|
|
return "VK_EVENT_RESET";
|
|
case VK_INCOMPLETE:
|
|
return "VK_INCOMPLETE";
|
|
case VK_ERROR_OUT_OF_HOST_MEMORY:
|
|
return "VK_ERROR_OUT_OF_HOST_MEMORY";
|
|
case VK_ERROR_OUT_OF_DEVICE_MEMORY:
|
|
return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
|
|
case VK_ERROR_INITIALIZATION_FAILED:
|
|
return "VK_ERROR_INITIALIZATION_FAILED";
|
|
case VK_ERROR_DEVICE_LOST:
|
|
return "VK_ERROR_DEVICE_LOST";
|
|
case VK_ERROR_MEMORY_MAP_FAILED:
|
|
return "VK_ERROR_MEMORY_MAP_FAILED";
|
|
case VK_ERROR_LAYER_NOT_PRESENT:
|
|
return "VK_ERROR_LAYER_NOT_PRESENT";
|
|
case VK_ERROR_EXTENSION_NOT_PRESENT:
|
|
return "VK_ERROR_EXTENSION_NOT_PRESENT";
|
|
case VK_ERROR_FEATURE_NOT_PRESENT:
|
|
return "VK_ERROR_FEATURE_NOT_PRESENT";
|
|
case VK_ERROR_INCOMPATIBLE_DRIVER:
|
|
return "VK_ERROR_INCOMPATIBLE_DRIVER";
|
|
case VK_ERROR_TOO_MANY_OBJECTS:
|
|
return "VK_ERROR_TOO_MANY_OBJECTS";
|
|
case VK_ERROR_FORMAT_NOT_SUPPORTED:
|
|
return "VK_ERROR_FORMAT_NOT_SUPPORTED";
|
|
case VK_ERROR_FRAGMENTED_POOL:
|
|
return "VK_ERROR_FRAGMENTED_POOL";
|
|
default:
|
|
return "<Unknown VkResult>";
|
|
}
|
|
}
|
|
|
|
MaybeError CheckVkSuccess(VkResult result, const char* context) {
|
|
if (DAWN_LIKELY(result == VK_SUCCESS)) {
|
|
return {};
|
|
}
|
|
|
|
std::string message = std::string(context) + " failed with " + VkResultAsString(result);
|
|
return DAWN_CONTEXT_LOST_ERROR(message);
|
|
}
|
|
|
|
}} // namespace dawn_native::vulkan
|