/*
 * Copyright 2017 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef GrVulkanDefines_DEFINED
#define GrVulkanDefines_DEFINED

#include "include/core/SkTypes.h"

#if defined(SK_BUILD_FOR_WIN)
#   if !defined(VK_USE_PLATFORM_WIN32_KHR)
#      define VK_USE_PLATFORM_WIN32_KHR
#   endif
#elif defined(SK_BUILD_FOR_ANDROID)
#   if !defined(VK_USE_PLATFORM_ANDROID_KHR)
#      define VK_USE_PLATFORM_ANDROID_KHR
#   endif
#elif defined(SK_BUILD_FOR_UNIX)
#   if !defined(__Fuchsia__) && !defined(VK_USE_PLATFORM_XCB_KHR) && !defined(SK_BUILD_FOR_GOOGLE3)
#      define VK_USE_PLATFORM_XCB_KHR
#   endif
#elif defined(SK_BUILD_FOR_MAC)
#   if !defined(VK_USE_PLATFORM_MACOS_MVK)
#      define VK_USE_PLATFORM_MACOS_MVK
#   endif
#elif defined(SK_BUILD_FOR_IOS)
#   if !defined(VK_USE_PLATFORM_IOS_MVK)
#      define VK_USE_PLATFORM_IOS_MVK
#   endif
#endif

// We create our own function table and never directly call any functions via vk*(). So no
// need to include the prototype functions.
#if !defined(VK_NO_PROTOTYPES)
    #define VK_NO_PROTOTYPES
#endif

#include <vulkan/vulkan.h> // IWYU pragma: export

#endif
