// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef FLUTTER_VULKAN_VULKAN_INTERFACE_H_ #define FLUTTER_VULKAN_VULKAN_INTERFACE_H_ #include #include "flutter/fml/build_config.h" #include "flutter/fml/logging.h" #if !defined(FUCHSIA_SDK) #define VULKAN_LINK_STATICALLY OS_FUCHSIA #endif // !defined(FUCHSIA_SDK) #if OS_ANDROID #ifndef VK_USE_PLATFORM_ANDROID_KHR #define VK_USE_PLATFORM_ANDROID_KHR 1 #endif // VK_USE_PLATFORM_ANDROID_KHR #endif // OS_ANDROID #if OS_FUCHSIA #ifndef VK_USE_PLATFORM_MAGMA_KHR #define VK_USE_PLATFORM_MAGMA_KHR 1 #endif // VK_USE_PLATFORM_MAGMA_KHR #ifndef VK_USE_PLATFORM_FUCHSIA #define VK_USE_PLATFORM_FUCHSIA 1 #endif // VK_USE_PLATFORM_FUCHSIA #endif // OS_FUCHSIA #if !VULKAN_LINK_STATICALLY #define VK_NO_PROTOTYPES 1 #endif // !VULKAN_LINK_STATICALLY #include #ifndef NDEBUG #define VK_CALL_LOG_ERROR(expression) \ ({ \ __typeof__(expression) _rc = (expression); \ if (_rc != VK_SUCCESS) { \ FML_DLOG(INFO) << "Vulkan call '" << #expression \ << "' failed with error " \ << vulkan::VulkanResultToString(_rc); \ } \ _rc; \ }) #else // NDEBUG #define VK_CALL_LOG_ERROR(expression) (expression) #endif // NDEBUG namespace vulkan { std::string VulkanResultToString(VkResult result); } // namespace vulkan #endif // FLUTTER_VULKAN_VULKAN_INTERFACE_H_