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