parent
							
								
									34d20b0f03
								
							
						
					
					
						commit
						30f5f97370
					
				
				 3 changed files with 7505 additions and 4883 deletions
			
			
		@ -1,120 +1,92 @@ | 
				
			||||
//
 | 
				
			||||
// File: vk_platform.h
 | 
				
			||||
//
 | 
				
			||||
/*
 | 
				
			||||
** Copyright (c) 2014-2015 The Khronos Group Inc. | 
				
			||||
** | 
				
			||||
** Licensed under the Apache License, Version 2.0 (the "License"); | 
				
			||||
** you may not use this file except in compliance with the License. | 
				
			||||
** You may obtain a copy of the License at | 
				
			||||
** | 
				
			||||
**     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||
** | 
				
			||||
** Unless required by applicable law or agreed to in writing, software | 
				
			||||
** distributed under the License is distributed on an "AS IS" BASIS, | 
				
			||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
				
			||||
** See the License for the specific language governing permissions and | 
				
			||||
** limitations under the License. | 
				
			||||
*/ | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#ifndef VK_PLATFORM_H_ | 
				
			||||
#define VK_PLATFORM_H_ | 
				
			||||
 | 
				
			||||
#ifdef __cplusplus | 
				
			||||
extern "C" | 
				
			||||
{ | 
				
			||||
#endif // __cplusplus
 | 
				
			||||
 | 
				
			||||
/*
 | 
				
			||||
*************************************************************************************************** | 
				
			||||
*   Platform-specific directives and type declarations | 
				
			||||
*************************************************************************************************** | 
				
			||||
*/ | 
				
			||||
 | 
				
			||||
/* Platform-specific calling convention macros.
 | 
				
			||||
 * | 
				
			||||
 * Platforms should define these so that Vulkan clients call Vulkan commands | 
				
			||||
 * with the same calling conventions that the Vulkan implementation expects. | 
				
			||||
 * | 
				
			||||
 * VKAPI_ATTR - Placed before the return type in function declarations. | 
				
			||||
 *              Useful for C++11 and GCC/Clang-style function attribute syntax. | 
				
			||||
 * VKAPI_CALL - Placed after the return type in function declarations. | 
				
			||||
 *              Useful for MSVC-style calling convention syntax. | 
				
			||||
 * VKAPI_PTR  - Placed between the '(' and '*' in function pointer types. | 
				
			||||
 * | 
				
			||||
 * Function declaration:  VKAPI_ATTR void VKAPI_CALL vkCommand(void); | 
				
			||||
 * Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void); | 
				
			||||
 */ | 
				
			||||
#if defined(_WIN32) | 
				
			||||
    // On Windows, Vulkan commands use the stdcall convention
 | 
				
			||||
    #define VKAPI_ATTR | 
				
			||||
    #define VKAPI_CALL __stdcall | 
				
			||||
    #define VKAPI_PTR  VKAPI_CALL | 
				
			||||
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7 | 
				
			||||
    #error "Vulkan isn't supported for the 'armeabi' NDK ABI" | 
				
			||||
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE) | 
				
			||||
    // On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
 | 
				
			||||
    // calling convention, i.e. float parameters are passed in registers. This
 | 
				
			||||
    // is true even if the rest of the application passes floats on the stack,
 | 
				
			||||
    // as it does by default when compiling for the armeabi-v7a NDK ABI.
 | 
				
			||||
    #define VKAPI_ATTR __attribute__((pcs("aapcs-vfp"))) | 
				
			||||
    #define VKAPI_CALL | 
				
			||||
    #define VKAPI_PTR  VKAPI_ATTR | 
				
			||||
#else | 
				
			||||
    // On other platforms, use the default calling convention
 | 
				
			||||
    #define VKAPI_ATTR | 
				
			||||
    #define VKAPI_CALL | 
				
			||||
    #define VKAPI_PTR | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
#include <stddef.h> | 
				
			||||
 | 
				
			||||
#if !defined(VK_NO_STDINT_H) | 
				
			||||
    #if defined(_MSC_VER) && (_MSC_VER < 1600) | 
				
			||||
        typedef signed   __int8  int8_t; | 
				
			||||
        typedef unsigned __int8  uint8_t; | 
				
			||||
        typedef signed   __int16 int16_t; | 
				
			||||
        typedef unsigned __int16 uint16_t; | 
				
			||||
        typedef signed   __int32 int32_t; | 
				
			||||
        typedef unsigned __int32 uint32_t; | 
				
			||||
        typedef signed   __int64 int64_t; | 
				
			||||
        typedef unsigned __int64 uint64_t; | 
				
			||||
    #else | 
				
			||||
        #include <stdint.h> | 
				
			||||
    #endif | 
				
			||||
#endif // !defined(VK_NO_STDINT_H)
 | 
				
			||||
 | 
				
			||||
#ifdef __cplusplus | 
				
			||||
} // extern "C"
 | 
				
			||||
#endif // __cplusplus
 | 
				
			||||
 | 
				
			||||
// Platform-specific headers required by platform window system extensions.
 | 
				
			||||
// These are enabled prior to #including "vulkan.h". The same enable then
 | 
				
			||||
// controls inclusion of the extension interfaces in vulkan.h.
 | 
				
			||||
 | 
				
			||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR | 
				
			||||
#include <android/native_window.h> | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
#ifdef VK_USE_PLATFORM_MIR_KHR | 
				
			||||
#include <mir_toolkit/client_types.h> | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR | 
				
			||||
#include <wayland-client.h> | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
#ifdef VK_USE_PLATFORM_WIN32_KHR | 
				
			||||
#include <windows.h> | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
#ifdef VK_USE_PLATFORM_XLIB_KHR | 
				
			||||
#include <X11/Xlib.h> | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
#ifdef VK_USE_PLATFORM_XCB_KHR | 
				
			||||
#include <xcb/xcb.h> | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
#endif | 
				
			||||
//
 | 
				
			||||
// File: vk_platform.h
 | 
				
			||||
//
 | 
				
			||||
/*
 | 
				
			||||
** Copyright (c) 2014-2017 The Khronos Group Inc. | 
				
			||||
** | 
				
			||||
** Licensed under the Apache License, Version 2.0 (the "License"); | 
				
			||||
** you may not use this file except in compliance with the License. | 
				
			||||
** You may obtain a copy of the License at | 
				
			||||
** | 
				
			||||
**     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||
** | 
				
			||||
** Unless required by applicable law or agreed to in writing, software | 
				
			||||
** distributed under the License is distributed on an "AS IS" BASIS, | 
				
			||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
				
			||||
** See the License for the specific language governing permissions and | 
				
			||||
** limitations under the License. | 
				
			||||
*/ | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#ifndef VK_PLATFORM_H_ | 
				
			||||
#define VK_PLATFORM_H_ | 
				
			||||
 | 
				
			||||
#ifdef __cplusplus | 
				
			||||
extern "C" | 
				
			||||
{ | 
				
			||||
#endif // __cplusplus
 | 
				
			||||
 | 
				
			||||
/*
 | 
				
			||||
*************************************************************************************************** | 
				
			||||
*   Platform-specific directives and type declarations | 
				
			||||
*************************************************************************************************** | 
				
			||||
*/ | 
				
			||||
 | 
				
			||||
/* Platform-specific calling convention macros.
 | 
				
			||||
 * | 
				
			||||
 * Platforms should define these so that Vulkan clients call Vulkan commands | 
				
			||||
 * with the same calling conventions that the Vulkan implementation expects. | 
				
			||||
 * | 
				
			||||
 * VKAPI_ATTR - Placed before the return type in function declarations. | 
				
			||||
 *              Useful for C++11 and GCC/Clang-style function attribute syntax. | 
				
			||||
 * VKAPI_CALL - Placed after the return type in function declarations. | 
				
			||||
 *              Useful for MSVC-style calling convention syntax. | 
				
			||||
 * VKAPI_PTR  - Placed between the '(' and '*' in function pointer types. | 
				
			||||
 * | 
				
			||||
 * Function declaration:  VKAPI_ATTR void VKAPI_CALL vkCommand(void); | 
				
			||||
 * Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void); | 
				
			||||
 */ | 
				
			||||
#if defined(_WIN32) | 
				
			||||
    // On Windows, Vulkan commands use the stdcall convention
 | 
				
			||||
    #define VKAPI_ATTR | 
				
			||||
    #define VKAPI_CALL __stdcall | 
				
			||||
    #define VKAPI_PTR  VKAPI_CALL | 
				
			||||
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7 | 
				
			||||
    #error "Vulkan isn't supported for the 'armeabi' NDK ABI" | 
				
			||||
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE) | 
				
			||||
    // On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
 | 
				
			||||
    // calling convention, i.e. float parameters are passed in registers. This
 | 
				
			||||
    // is true even if the rest of the application passes floats on the stack,
 | 
				
			||||
    // as it does by default when compiling for the armeabi-v7a NDK ABI.
 | 
				
			||||
    #define VKAPI_ATTR __attribute__((pcs("aapcs-vfp"))) | 
				
			||||
    #define VKAPI_CALL | 
				
			||||
    #define VKAPI_PTR  VKAPI_ATTR | 
				
			||||
#else | 
				
			||||
    // On other platforms, use the default calling convention
 | 
				
			||||
    #define VKAPI_ATTR | 
				
			||||
    #define VKAPI_CALL | 
				
			||||
    #define VKAPI_PTR | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
#include <stddef.h> | 
				
			||||
 | 
				
			||||
#if !defined(VK_NO_STDINT_H) | 
				
			||||
    #if defined(_MSC_VER) && (_MSC_VER < 1600) | 
				
			||||
        typedef signed   __int8  int8_t; | 
				
			||||
        typedef unsigned __int8  uint8_t; | 
				
			||||
        typedef signed   __int16 int16_t; | 
				
			||||
        typedef unsigned __int16 uint16_t; | 
				
			||||
        typedef signed   __int32 int32_t; | 
				
			||||
        typedef unsigned __int32 uint32_t; | 
				
			||||
        typedef signed   __int64 int64_t; | 
				
			||||
        typedef unsigned __int64 uint64_t; | 
				
			||||
    #else | 
				
			||||
        #include <stdint.h> | 
				
			||||
    #endif | 
				
			||||
#endif // !defined(VK_NO_STDINT_H)
 | 
				
			||||
 | 
				
			||||
#ifdef __cplusplus | 
				
			||||
} // extern "C"
 | 
				
			||||
#endif // __cplusplus
 | 
				
			||||
 | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
									
										
											File diff suppressed because it is too large
											Load Diff
										
									
								
							
						
									
										
											File diff suppressed because it is too large
											Load Diff
										
									
								
							
						
					Loading…
					
					
				
		Reference in New Issue