| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // |
| // |
| // |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| |
| // |
| // |
| // |
| |
| #include "assert.h" |
| |
| // |
| // |
| // |
| |
| #define VK_RESULT_TO_STRING(result) \ |
| case result: \ |
| return #result |
| |
| // |
| // FIXME -- results and errors |
| // |
| |
| char const * |
| vk_get_result_string(VkResult const result) |
| { |
| switch (result) |
| { |
| // |
| // Results |
| // |
| VK_RESULT_TO_STRING(VK_SUCCESS); |
| VK_RESULT_TO_STRING(VK_NOT_READY); |
| VK_RESULT_TO_STRING(VK_TIMEOUT); |
| VK_RESULT_TO_STRING(VK_EVENT_SET); |
| VK_RESULT_TO_STRING(VK_EVENT_RESET); |
| VK_RESULT_TO_STRING(VK_INCOMPLETE); |
| // |
| // Errors |
| // |
| VK_RESULT_TO_STRING(VK_ERROR_OUT_OF_HOST_MEMORY); |
| VK_RESULT_TO_STRING(VK_ERROR_OUT_OF_DEVICE_MEMORY); |
| VK_RESULT_TO_STRING(VK_ERROR_INITIALIZATION_FAILED); |
| VK_RESULT_TO_STRING(VK_ERROR_DEVICE_LOST); |
| VK_RESULT_TO_STRING(VK_ERROR_MEMORY_MAP_FAILED); |
| VK_RESULT_TO_STRING(VK_ERROR_LAYER_NOT_PRESENT); |
| VK_RESULT_TO_STRING(VK_ERROR_EXTENSION_NOT_PRESENT); |
| VK_RESULT_TO_STRING(VK_ERROR_FEATURE_NOT_PRESENT); |
| VK_RESULT_TO_STRING(VK_ERROR_INCOMPATIBLE_DRIVER); |
| VK_RESULT_TO_STRING(VK_ERROR_TOO_MANY_OBJECTS); |
| VK_RESULT_TO_STRING(VK_ERROR_FORMAT_NOT_SUPPORTED); |
| VK_RESULT_TO_STRING(VK_ERROR_FRAGMENTED_POOL); |
| VK_RESULT_TO_STRING(VK_ERROR_OUT_OF_POOL_MEMORY); |
| VK_RESULT_TO_STRING(VK_ERROR_INVALID_EXTERNAL_HANDLE); |
| VK_RESULT_TO_STRING(VK_ERROR_SURFACE_LOST_KHR); |
| VK_RESULT_TO_STRING(VK_ERROR_NATIVE_WINDOW_IN_USE_KHR); |
| VK_RESULT_TO_STRING(VK_SUBOPTIMAL_KHR); |
| VK_RESULT_TO_STRING(VK_ERROR_OUT_OF_DATE_KHR); |
| VK_RESULT_TO_STRING(VK_ERROR_INCOMPATIBLE_DISPLAY_KHR); |
| VK_RESULT_TO_STRING(VK_ERROR_VALIDATION_FAILED_EXT); |
| VK_RESULT_TO_STRING(VK_ERROR_INVALID_SHADER_NV); |
| VK_RESULT_TO_STRING(VK_ERROR_FRAGMENTATION_EXT); |
| VK_RESULT_TO_STRING(VK_ERROR_NOT_PERMITTED_EXT); |
| |
| // |
| // Extensions: vk_xyz |
| // |
| default: |
| return "UNKNOWN VULKAN RESULT"; |
| } |
| } |
| |
| // |
| // |
| // |
| |
| VkResult |
| vk_assert(VkResult const result, char const * const file, int const line, bool const is_abort) |
| { |
| if (result != VK_SUCCESS) |
| { |
| char const * const vk_result_str = vk_get_result_string(result); |
| |
| fprintf(stderr, |
| "\"%s\", line %d: vk_assert( %d ) = \"%s\"\n", |
| file, |
| line, |
| result, |
| vk_result_str); |
| |
| if (is_abort) |
| { |
| abort(); |
| } |
| } |
| |
| return result; |
| } |
| |
| // |
| // |
| // |