• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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