• 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 #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