mirror of
https://github.com/glfw/glfw.git
synced 2024-11-23 18:45:10 +00:00
d7e30b1c74
This removes all dependencies from the GLFW test programs on the Vulkan SDK. It also removes support for linking the GLFW shared library (dynamic library, DLL) against the Vulkan loader static library.
93 lines
3.2 KiB
C
93 lines
3.2 KiB
C
/* */
|
|
/* 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
|