1 // Copyright 2013 The Flutter Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef FLUTTER_VULKAN_VULKAN_INTERFACE_H_ 6 #define FLUTTER_VULKAN_VULKAN_INTERFACE_H_ 7 8 #include <string> 9 10 #ifndef RS_ENABLE_VK 11 #include "flutter/fml/build_config.h" 12 #include "flutter/fml/logging.h" 13 #endif 14 15 #ifndef RS_ENABLE_VK 16 #if !defined(FUCHSIA_SDK) 17 #define VULKAN_LINK_STATICALLY OS_FUCHSIA 18 #endif // !defined(FUCHSIA_SDK) 19 20 #if OS_ANDROID 21 #ifndef VK_USE_PLATFORM_ANDROID_KHR 22 #define VK_USE_PLATFORM_ANDROID_KHR 1 23 #endif // VK_USE_PLATFORM_ANDROID_KHR 24 #endif // OS_ANDROID 25 26 #if OS_FUCHSIA 27 #ifndef VK_USE_PLATFORM_MAGMA_KHR 28 #define VK_USE_PLATFORM_MAGMA_KHR 1 29 #endif // VK_USE_PLATFORM_MAGMA_KHR 30 #ifndef VK_USE_PLATFORM_FUCHSIA 31 #define VK_USE_PLATFORM_FUCHSIA 1 32 #endif // VK_USE_PLATFORM_FUCHSIA 33 #endif // OS_FUCHSIA 34 #endif // not define RS_ENABLE_VK 35 36 #ifdef RS_ENABLE_VK 37 #ifndef VK_USE_PLATFORM_OHOS_OPENHARMONY 38 #define VK_USE_PLATFORM_OHOS_OPENHARMONY 39 #endif // VK_USE_PLATFORM_OHOS_OPENHARMONY 40 #endif // RS_ENABLE_VK 41 42 #if !VULKAN_LINK_STATICALLY 43 #define VK_NO_PROTOTYPES 1 44 #endif // !VULKAN_LINK_STATICALLY 45 46 #include <vulkan/vulkan.h> 47 48 #ifndef NDEBUG 49 50 #ifdef RS_ENABLE_VK 51 #define VK_CALL_LOG_ERROR(expression) \ 52 ({ \ 53 __typeof__(expression) _rc = (expression); \ 54 if (_rc != VK_SUCCESS) { \ 55 LOGE("Vulkan call '" #expression "' failed with error %s", \ 56 vulkan::VulkanResultToString(_rc)); \ 57 } \ 58 _rc; \ 59 }) 60 #else 61 #define VK_CALL_LOG_ERROR(expression) \ 62 ({ \ 63 __typeof__(expression) _rc = (expression); \ 64 if (_rc != VK_SUCCESS) { \ 65 FML_DLOG(INFO) << "Vulkan call '" << #expression \ 66 << "' failed with error " \ 67 << vulkan::VulkanResultToString(_rc); \ 68 } \ 69 _rc; \ 70 }) 71 #endif 72 73 #else // NDEBUG 74 75 #define VK_CALL_LOG_ERROR(expression) (expression) 76 77 #endif // NDEBUG 78 79 namespace vulkan { 80 81 std::string VulkanResultToString(VkResult result); 82 83 } // namespace vulkan 84 85 #endif // FLUTTER_VULKAN_VULKAN_INTERFACE_H_ 86