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 #include "flutter/fml/build_config.h" 11 #include "flutter/fml/logging.h" 12 13 #if !defined(FUCHSIA_SDK) 14 #define VULKAN_LINK_STATICALLY OS_FUCHSIA 15 #endif // !defined(FUCHSIA_SDK) 16 17 #if OS_ANDROID 18 #ifndef VK_USE_PLATFORM_ANDROID_KHR 19 #define VK_USE_PLATFORM_ANDROID_KHR 1 20 #endif // VK_USE_PLATFORM_ANDROID_KHR 21 #endif // OS_ANDROID 22 23 #if OS_FUCHSIA 24 #ifndef VK_USE_PLATFORM_MAGMA_KHR 25 #define VK_USE_PLATFORM_MAGMA_KHR 1 26 #endif // VK_USE_PLATFORM_MAGMA_KHR 27 #ifndef VK_USE_PLATFORM_FUCHSIA 28 #define VK_USE_PLATFORM_FUCHSIA 1 29 #endif // VK_USE_PLATFORM_FUCHSIA 30 #endif // OS_FUCHSIA 31 32 #if !VULKAN_LINK_STATICALLY 33 #define VK_NO_PROTOTYPES 1 34 #endif // !VULKAN_LINK_STATICALLY 35 36 #include <vulkan/vulkan.h> 37 38 #ifndef NDEBUG 39 40 #define VK_CALL_LOG_ERROR(expression) \ 41 ({ \ 42 __typeof__(expression) _rc = (expression); \ 43 if (_rc != VK_SUCCESS) { \ 44 FML_DLOG(INFO) << "Vulkan call '" << #expression \ 45 << "' failed with error " \ 46 << vulkan::VulkanResultToString(_rc); \ 47 } \ 48 _rc; \ 49 }) 50 51 #else // NDEBUG 52 53 #define VK_CALL_LOG_ERROR(expression) (expression) 54 55 #endif // NDEBUG 56 57 namespace vulkan { 58 59 std::string VulkanResultToString(VkResult result); 60 61 } // namespace vulkan 62 63 #endif // FLUTTER_VULKAN_VULKAN_INTERFACE_H_ 64