vk_platform.h revision a64292517b1876c4bbe5d3e62c577812f40bd922
1//
2// File: vk_platform.h
3//
4/*
5** Copyright (c) 2014-2015 The Khronos Group Inc.
6**
7** Permission is hereby granted, free of charge, to any person obtaining a
8** copy of this software and/or associated documentation files (the
9** "Materials"), to deal in the Materials without restriction, including
10** without limitation the rights to use, copy, modify, merge, publish,
11** distribute, sublicense, and/or sell copies of the Materials, and to
12** permit persons to whom the Materials are furnished to do so, subject to
13** the following conditions:
14**
15** The above copyright notice and this permission notice shall be included
16** in all copies or substantial portions of the Materials.
17**
18** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
25*/
26
27
28#ifndef __VK_PLATFORM_H__
29#define __VK_PLATFORM_H__
30
31#ifdef __cplusplus
32extern "C"
33{
34#endif // __cplusplus
35
36/*
37***************************************************************************************************
38*   Platform-specific directives and type declarations
39***************************************************************************************************
40*/
41
42#if defined(_WIN32)
43    // On Windows, VKAPI should equate to the __stdcall convention
44    #define VKAPI   __stdcall
45#elif defined(__GNUC__)
46    // On other platforms using GCC, VKAPI stays undefined
47    #define VKAPI
48#else
49    // Unsupported Platform!
50    #error "Unsupported OS Platform detected!"
51#endif
52
53#include <stddef.h>
54
55#if !defined(VK_NO_STDINT_H)
56    #if defined(_MSC_VER) && (_MSC_VER < 1600)
57        typedef signed   __int8  int8_t;
58        typedef unsigned __int8  uint8_t;
59        typedef signed   __int16 int16_t;
60        typedef unsigned __int16 uint16_t;
61        typedef signed   __int32 int32_t;
62        typedef unsigned __int32 uint32_t;
63        typedef signed   __int64 int64_t;
64        typedef unsigned __int64 uint64_t;
65    #else
66        #include <stdint.h>
67    #endif
68#endif // !defined(VK_NO_STDINT_H)
69
70#ifdef __cplusplus
71} // extern "C"
72#endif // __cplusplus
73
74// Platform-specific headers required by platform window system extensions.
75// These are enabled prior to #including "vulkan.h". The same enable then
76// controls inclusion of the extension interfaces in vulkan.h.
77
78#ifdef VK_USE_PLATFORM_ANDROID_KHR
79#include <android/native_window.h>
80#endif
81
82#ifdef VK_USE_PLATFORM_MIR_KHR
83#include <mir_toolkit/client_types.h>
84#endif
85
86#ifdef VK_USE_PLATFORM_WAYLAND_KHR
87#include <wayland-client.h>
88#endif
89
90#ifdef VK_USE_PLATFORM_WIN32_KHR
91#include <windows.h>
92#endif
93
94#ifdef VK_USE_PLATFORM_XLIB_KHR
95#include <X11/Xlib.h>
96#endif
97
98#ifdef VK_USE_PLATFORM_XCB_KHR
99#include <xcb/xcb.h>
100#endif
101
102#endif // __VK_PLATFORM_H__
103