bindings-GLFW 3.3.0.0 → 3.3.1.0
raw patch · 69 files changed
+9198/−8810 lines, 69 files
Files
- README.md +2/−2
- Test.hs +1/−1
- bindings-GLFW.cabal +1/−1
- glfw/deps/glad/gl.h +1/−1
- glfw/deps/glad/khrplatform.h +282/−282
- glfw/deps/glad/vk_platform.h +92/−92
- glfw/deps/glad/vulkan.h +3480/−3480
- glfw/deps/glad_gl.c +1/−1
- glfw/deps/glad_vulkan.c +593/−593
- glfw/deps/mingw/_mingw_dxhelper.h +117/−117
- glfw/deps/mingw/dinput.h +2467/−2467
- glfw/deps/mingw/xinput.h +239/−239
- glfw/include/GLFW/glfw3.h +397/−161
- glfw/include/GLFW/glfw3native.h +525/−525
- glfw/src/cocoa_init.m +6/−5
- glfw/src/cocoa_joystick.h +1/−1
- glfw/src/cocoa_joystick.m +3/−1
- glfw/src/cocoa_monitor.m +106/−65
- glfw/src/cocoa_platform.h +5/−3
- glfw/src/cocoa_time.c +2/−0
- glfw/src/cocoa_window.m +43/−29
- glfw/src/context.c +2/−0
- glfw/src/egl_context.c +17/−14
- glfw/src/egl_context.h +8/−8
- glfw/src/glx_context.c +2/−2
- glfw/src/glx_context.h +3/−3
- glfw/src/init.c +2/−0
- glfw/src/input.c +2/−0
- glfw/src/internal.h +3/−3
- glfw/src/linux_joystick.c +26/−27
- glfw/src/linux_joystick.h +62/−62
- glfw/src/mappings.h +0/−2
- glfw/src/monitor.c +6/−0
- glfw/src/nsgl_context.h +3/−5
- glfw/src/nsgl_context.m +32/−76
- glfw/src/null_init.c +2/−0
- glfw/src/null_joystick.c +2/−0
- glfw/src/null_joystick.h +2/−2
- glfw/src/null_monitor.c +2/−0
- glfw/src/null_platform.h +7/−7
- glfw/src/null_window.c +2/−0
- glfw/src/osmesa_context.c +2/−0
- glfw/src/osmesa_context.h +94/−94
- glfw/src/posix_thread.c +2/−0
- glfw/src/posix_thread.h +51/−51
- glfw/src/posix_time.c +2/−0
- glfw/src/posix_time.h +44/−44
- glfw/src/vulkan.c +2/−0
- glfw/src/wgl_context.c +12/−13
- glfw/src/wgl_context.h +7/−2
- glfw/src/win32_init.c +4/−2
- glfw/src/win32_joystick.c +2/−0
- glfw/src/win32_joystick.h +1/−1
- glfw/src/win32_monitor.c +11/−8
- glfw/src/win32_platform.h +1/−1
- glfw/src/win32_thread.c +2/−0
- glfw/src/win32_time.c +2/−0
- glfw/src/win32_window.c +40/−34
- glfw/src/window.c +2/−0
- glfw/src/wl_init.c +19/−15
- glfw/src/wl_monitor.c +3/−1
- glfw/src/wl_platform.h +4/−3
- glfw/src/wl_window.c +4/−2
- glfw/src/x11_init.c +46/−40
- glfw/src/x11_monitor.c +44/−52
- glfw/src/x11_platform.h +12/−8
- glfw/src/x11_window.c +206/−134
- glfw/src/xkb_unicode.c +2/−0
- glfw/src/xkb_unicode.h +28/−28
README.md view
@@ -9,7 +9,7 @@ library for creating windows with OpenGL contexts and managing input and events. -The binding is to [GLFW 3.2.1 released 2016-08-18][3]. +The binding is to [GLFW 3.3.0 released 2019-04-15][3]. *These bindings are a lot lower level than intended for normal use.* For higher-level GLFW bindings, see [GLFW-b][4]. @@ -24,5 +24,5 @@ [1]: http://www.haskell.org/ [2]: http://www.glfw.org/ -[3]: http://www.glfw.org/Version-3.2.1-released.html +[3]: http://www.glfw.org/Version-3.3-released.html [4]: https://github.com/bsl/GLFW-b
Test.hs view
@@ -61,7 +61,7 @@ versionMajor, versionMinor, versionRevision :: Int versionMajor = 3 versionMinor = 3 -versionRevision = 0 +versionRevision = 1 giveItTime :: IO () giveItTime = threadDelay 500000
bindings-GLFW.cabal view
@@ -1,5 +1,5 @@ name: bindings-GLFW -version: 3.3.0.0 +version: 3.3.1.0 category: Graphics author: Brian Lewis <brian@lorf.org>
glfw/deps/glad/gl.h view
@@ -1458,7 +1458,7 @@ #define GL_ZOOM_Y 0x0D17 -#include "glad/khrplatform.h" +#include <glad/khrplatform.h> typedef unsigned int GLenum; typedef unsigned char GLboolean; typedef unsigned int GLbitfield;
glfw/deps/glad/khrplatform.h view
@@ -1,282 +1,282 @@-#ifndef __khrplatform_h_ -#define __khrplatform_h_ - -/* -** Copyright (c) 2008-2018 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -/* Khronos platform-specific types and definitions. - * - * The master copy of khrplatform.h is maintained in the Khronos EGL - * Registry repository at https://github.com/KhronosGroup/EGL-Registry - * The last semantic modification to khrplatform.h was at commit ID: - * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 - * - * Adopters may modify this file to suit their platform. Adopters are - * encouraged to submit platform specific modifications to the Khronos - * group so that they can be included in future versions of this file. - * Please submit changes by filing pull requests or issues on - * the EGL Registry repository linked above. - * - * - * See the Implementer's Guidelines for information about where this file - * should be located on your system and for more details of its use: - * http://www.khronos.org/registry/implementers_guide.pdf - * - * This file should be included as - * #include <KHR/khrplatform.h> - * by Khronos client API header files that use its types and defines. - * - * The types in khrplatform.h should only be used to define API-specific types. - * - * Types defined in khrplatform.h: - * khronos_int8_t signed 8 bit - * khronos_uint8_t unsigned 8 bit - * khronos_int16_t signed 16 bit - * khronos_uint16_t unsigned 16 bit - * khronos_int32_t signed 32 bit - * khronos_uint32_t unsigned 32 bit - * khronos_int64_t signed 64 bit - * khronos_uint64_t unsigned 64 bit - * khronos_intptr_t signed same number of bits as a pointer - * khronos_uintptr_t unsigned same number of bits as a pointer - * khronos_ssize_t signed size - * khronos_usize_t unsigned size - * khronos_float_t signed 32 bit floating point - * khronos_time_ns_t unsigned 64 bit time in nanoseconds - * khronos_utime_nanoseconds_t unsigned time interval or absolute time in - * nanoseconds - * khronos_stime_nanoseconds_t signed time interval in nanoseconds - * khronos_boolean_enum_t enumerated boolean type. This should - * only be used as a base type when a client API's boolean type is - * an enum. Client APIs which use an integer or other type for - * booleans cannot use this as the base type for their boolean. - * - * Tokens defined in khrplatform.h: - * - * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. - * - * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. - * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. - * - * Calling convention macros defined in this file: - * KHRONOS_APICALL - * KHRONOS_APIENTRY - * KHRONOS_APIATTRIBUTES - * - * These may be used in function prototypes as: - * - * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( - * int arg1, - * int arg2) KHRONOS_APIATTRIBUTES; - */ - -/*------------------------------------------------------------------------- - * Definition of KHRONOS_APICALL - *------------------------------------------------------------------------- - * This precedes the return type of the function in the function prototype. - */ -#if defined(_WIN32) && !defined(__SCITECH_SNAP__) -# define KHRONOS_APICALL __declspec(dllimport) -#elif defined (__SYMBIAN32__) -# define KHRONOS_APICALL IMPORT_C -#elif defined(__ANDROID__) -# define KHRONOS_APICALL __attribute__((visibility("default"))) -#else -# define KHRONOS_APICALL -#endif - -/*------------------------------------------------------------------------- - * Definition of KHRONOS_APIENTRY - *------------------------------------------------------------------------- - * This follows the return type of the function and precedes the function - * name in the function prototype. - */ -#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) - /* Win32 but not WinCE */ -# define KHRONOS_APIENTRY __stdcall -#else -# define KHRONOS_APIENTRY -#endif - -/*------------------------------------------------------------------------- - * Definition of KHRONOS_APIATTRIBUTES - *------------------------------------------------------------------------- - * This follows the closing parenthesis of the function prototype arguments. - */ -#if defined (__ARMCC_2__) -#define KHRONOS_APIATTRIBUTES __softfp -#else -#define KHRONOS_APIATTRIBUTES -#endif - -/*------------------------------------------------------------------------- - * basic type definitions - *-----------------------------------------------------------------------*/ -#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) - - -/* - * Using <stdint.h> - */ -#include <stdint.h> -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif defined(__VMS ) || defined(__sgi) - -/* - * Using <inttypes.h> - */ -#include <inttypes.h> -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) - -/* - * Win32 - */ -typedef __int32 khronos_int32_t; -typedef unsigned __int32 khronos_uint32_t; -typedef __int64 khronos_int64_t; -typedef unsigned __int64 khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif defined(__sun__) || defined(__digital__) - -/* - * Sun or Digital - */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; -#if defined(__arch64__) || defined(_LP64) -typedef long int khronos_int64_t; -typedef unsigned long int khronos_uint64_t; -#else -typedef long long int khronos_int64_t; -typedef unsigned long long int khronos_uint64_t; -#endif /* __arch64__ */ -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#elif 0 - -/* - * Hypothetical platform with no float or int64 support - */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; -#define KHRONOS_SUPPORT_INT64 0 -#define KHRONOS_SUPPORT_FLOAT 0 - -#else - -/* - * Generic fallback - */ -#include <stdint.h> -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 - -#endif - - -/* - * Types that are (so far) the same on all platforms - */ -typedef signed char khronos_int8_t; -typedef unsigned char khronos_uint8_t; -typedef signed short int khronos_int16_t; -typedef unsigned short int khronos_uint16_t; - -/* - * Types that differ between LLP64 and LP64 architectures - in LLP64, - * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears - * to be the only LLP64 architecture in current use. - */ -#ifdef _WIN64 -typedef signed long long int khronos_intptr_t; -typedef unsigned long long int khronos_uintptr_t; -typedef signed long long int khronos_ssize_t; -typedef unsigned long long int khronos_usize_t; -#else -typedef signed long int khronos_intptr_t; -typedef unsigned long int khronos_uintptr_t; -typedef signed long int khronos_ssize_t; -typedef unsigned long int khronos_usize_t; -#endif - -#if KHRONOS_SUPPORT_FLOAT -/* - * Float type - */ -typedef float khronos_float_t; -#endif - -#if KHRONOS_SUPPORT_INT64 -/* Time types - * - * These types can be used to represent a time interval in nanoseconds or - * an absolute Unadjusted System Time. Unadjusted System Time is the number - * of nanoseconds since some arbitrary system event (e.g. since the last - * time the system booted). The Unadjusted System Time is an unsigned - * 64 bit value that wraps back to 0 every 584 years. Time intervals - * may be either signed or unsigned. - */ -typedef khronos_uint64_t khronos_utime_nanoseconds_t; -typedef khronos_int64_t khronos_stime_nanoseconds_t; -#endif - -/* - * Dummy value used to pad enum types to 32 bits. - */ -#ifndef KHRONOS_MAX_ENUM -#define KHRONOS_MAX_ENUM 0x7FFFFFFF -#endif - -/* - * Enumerated boolean type - * - * Values other than zero should be considered to be true. Therefore - * comparisons should not be made against KHRONOS_TRUE. - */ -typedef enum { - KHRONOS_FALSE = 0, - KHRONOS_TRUE = 1, - KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM -} khronos_boolean_enum_t; - -#endif /* __khrplatform_h_ */ +#ifndef __khrplatform_h_+#define __khrplatform_h_++/*+** Copyright (c) 2008-2018 The Khronos Group Inc.+**+** Permission is hereby granted, free of charge, to any person obtaining a+** copy of this software and/or associated documentation files (the+** "Materials"), to deal in the Materials without restriction, including+** without limitation the rights to use, copy, modify, merge, publish,+** distribute, sublicense, and/or sell copies of the Materials, and to+** permit persons to whom the Materials are furnished to do so, subject to+** the following conditions:+**+** The above copyright notice and this permission notice shall be included+** in all copies or substantial portions of the Materials.+**+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.+*/++/* Khronos platform-specific types and definitions.+ *+ * The master copy of khrplatform.h is maintained in the Khronos EGL+ * Registry repository at https://github.com/KhronosGroup/EGL-Registry+ * The last semantic modification to khrplatform.h was at commit ID:+ * 67a3e0864c2d75ea5287b9f3d2eb74a745936692+ *+ * Adopters may modify this file to suit their platform. Adopters are+ * encouraged to submit platform specific modifications to the Khronos+ * group so that they can be included in future versions of this file.+ * Please submit changes by filing pull requests or issues on+ * the EGL Registry repository linked above.+ *+ *+ * See the Implementer's Guidelines for information about where this file+ * should be located on your system and for more details of its use:+ * http://www.khronos.org/registry/implementers_guide.pdf+ *+ * This file should be included as+ * #include <KHR/khrplatform.h>+ * by Khronos client API header files that use its types and defines.+ *+ * The types in khrplatform.h should only be used to define API-specific types.+ *+ * Types defined in khrplatform.h:+ * khronos_int8_t signed 8 bit+ * khronos_uint8_t unsigned 8 bit+ * khronos_int16_t signed 16 bit+ * khronos_uint16_t unsigned 16 bit+ * khronos_int32_t signed 32 bit+ * khronos_uint32_t unsigned 32 bit+ * khronos_int64_t signed 64 bit+ * khronos_uint64_t unsigned 64 bit+ * khronos_intptr_t signed same number of bits as a pointer+ * khronos_uintptr_t unsigned same number of bits as a pointer+ * khronos_ssize_t signed size+ * khronos_usize_t unsigned size+ * khronos_float_t signed 32 bit floating point+ * khronos_time_ns_t unsigned 64 bit time in nanoseconds+ * khronos_utime_nanoseconds_t unsigned time interval or absolute time in+ * nanoseconds+ * khronos_stime_nanoseconds_t signed time interval in nanoseconds+ * khronos_boolean_enum_t enumerated boolean type. This should+ * only be used as a base type when a client API's boolean type is+ * an enum. Client APIs which use an integer or other type for+ * booleans cannot use this as the base type for their boolean.+ *+ * Tokens defined in khrplatform.h:+ *+ * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.+ *+ * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.+ * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.+ *+ * Calling convention macros defined in this file:+ * KHRONOS_APICALL+ * KHRONOS_APIENTRY+ * KHRONOS_APIATTRIBUTES+ *+ * These may be used in function prototypes as:+ *+ * KHRONOS_APICALL void KHRONOS_APIENTRY funcname(+ * int arg1,+ * int arg2) KHRONOS_APIATTRIBUTES;+ */++/*-------------------------------------------------------------------------+ * Definition of KHRONOS_APICALL+ *-------------------------------------------------------------------------+ * This precedes the return type of the function in the function prototype.+ */+#if defined(_WIN32) && !defined(__SCITECH_SNAP__)+# define KHRONOS_APICALL __declspec(dllimport)+#elif defined (__SYMBIAN32__)+# define KHRONOS_APICALL IMPORT_C+#elif defined(__ANDROID__)+# define KHRONOS_APICALL __attribute__((visibility("default")))+#else+# define KHRONOS_APICALL+#endif++/*-------------------------------------------------------------------------+ * Definition of KHRONOS_APIENTRY+ *-------------------------------------------------------------------------+ * This follows the return type of the function and precedes the function+ * name in the function prototype.+ */+#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)+ /* Win32 but not WinCE */+# define KHRONOS_APIENTRY __stdcall+#else+# define KHRONOS_APIENTRY+#endif++/*-------------------------------------------------------------------------+ * Definition of KHRONOS_APIATTRIBUTES+ *-------------------------------------------------------------------------+ * This follows the closing parenthesis of the function prototype arguments.+ */+#if defined (__ARMCC_2__)+#define KHRONOS_APIATTRIBUTES __softfp+#else+#define KHRONOS_APIATTRIBUTES+#endif++/*-------------------------------------------------------------------------+ * basic type definitions+ *-----------------------------------------------------------------------*/+#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)+++/*+ * Using <stdint.h>+ */+#include <stdint.h>+typedef int32_t khronos_int32_t;+typedef uint32_t khronos_uint32_t;+typedef int64_t khronos_int64_t;+typedef uint64_t khronos_uint64_t;+#define KHRONOS_SUPPORT_INT64 1+#define KHRONOS_SUPPORT_FLOAT 1++#elif defined(__VMS ) || defined(__sgi)++/*+ * Using <inttypes.h>+ */+#include <inttypes.h>+typedef int32_t khronos_int32_t;+typedef uint32_t khronos_uint32_t;+typedef int64_t khronos_int64_t;+typedef uint64_t khronos_uint64_t;+#define KHRONOS_SUPPORT_INT64 1+#define KHRONOS_SUPPORT_FLOAT 1++#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)++/*+ * Win32+ */+typedef __int32 khronos_int32_t;+typedef unsigned __int32 khronos_uint32_t;+typedef __int64 khronos_int64_t;+typedef unsigned __int64 khronos_uint64_t;+#define KHRONOS_SUPPORT_INT64 1+#define KHRONOS_SUPPORT_FLOAT 1++#elif defined(__sun__) || defined(__digital__)++/*+ * Sun or Digital+ */+typedef int khronos_int32_t;+typedef unsigned int khronos_uint32_t;+#if defined(__arch64__) || defined(_LP64)+typedef long int khronos_int64_t;+typedef unsigned long int khronos_uint64_t;+#else+typedef long long int khronos_int64_t;+typedef unsigned long long int khronos_uint64_t;+#endif /* __arch64__ */+#define KHRONOS_SUPPORT_INT64 1+#define KHRONOS_SUPPORT_FLOAT 1++#elif 0++/*+ * Hypothetical platform with no float or int64 support+ */+typedef int khronos_int32_t;+typedef unsigned int khronos_uint32_t;+#define KHRONOS_SUPPORT_INT64 0+#define KHRONOS_SUPPORT_FLOAT 0++#else++/*+ * Generic fallback+ */+#include <stdint.h>+typedef int32_t khronos_int32_t;+typedef uint32_t khronos_uint32_t;+typedef int64_t khronos_int64_t;+typedef uint64_t khronos_uint64_t;+#define KHRONOS_SUPPORT_INT64 1+#define KHRONOS_SUPPORT_FLOAT 1++#endif+++/*+ * Types that are (so far) the same on all platforms+ */+typedef signed char khronos_int8_t;+typedef unsigned char khronos_uint8_t;+typedef signed short int khronos_int16_t;+typedef unsigned short int khronos_uint16_t;++/*+ * Types that differ between LLP64 and LP64 architectures - in LLP64,+ * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears+ * to be the only LLP64 architecture in current use.+ */+#ifdef _WIN64+typedef signed long long int khronos_intptr_t;+typedef unsigned long long int khronos_uintptr_t;+typedef signed long long int khronos_ssize_t;+typedef unsigned long long int khronos_usize_t;+#else+typedef signed long int khronos_intptr_t;+typedef unsigned long int khronos_uintptr_t;+typedef signed long int khronos_ssize_t;+typedef unsigned long int khronos_usize_t;+#endif++#if KHRONOS_SUPPORT_FLOAT+/*+ * Float type+ */+typedef float khronos_float_t;+#endif++#if KHRONOS_SUPPORT_INT64+/* Time types+ *+ * These types can be used to represent a time interval in nanoseconds or+ * an absolute Unadjusted System Time. Unadjusted System Time is the number+ * of nanoseconds since some arbitrary system event (e.g. since the last+ * time the system booted). The Unadjusted System Time is an unsigned+ * 64 bit value that wraps back to 0 every 584 years. Time intervals+ * may be either signed or unsigned.+ */+typedef khronos_uint64_t khronos_utime_nanoseconds_t;+typedef khronos_int64_t khronos_stime_nanoseconds_t;+#endif++/*+ * Dummy value used to pad enum types to 32 bits.+ */+#ifndef KHRONOS_MAX_ENUM+#define KHRONOS_MAX_ENUM 0x7FFFFFFF+#endif++/*+ * Enumerated boolean type+ *+ * Values other than zero should be considered to be true. Therefore+ * comparisons should not be made against KHRONOS_TRUE.+ */+typedef enum {+ KHRONOS_FALSE = 0,+ KHRONOS_TRUE = 1,+ KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM+} khronos_boolean_enum_t;++#endif /* __khrplatform_h_ */
glfw/deps/glad/vk_platform.h view
@@ -1,92 +1,92 @@-/* */ -/* 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: 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
glfw/deps/glad/vulkan.h view
@@ -1,3480 +1,3480 @@-/** - * Loader generated by glad 2.0.0-beta on Sun Apr 14 17:03:38 2019 - * - * Generator: C/C++ - * Specification: vk - * Extensions: 3 - * - * APIs: - * - vulkan=1.1 - * - * Options: - * - MX_GLOBAL = False - * - LOADER = False - * - ALIAS = False - * - HEADER_ONLY = False - * - DEBUG = False - * - MX = False - * - * Commandline: - * --api='vulkan=1.1' --extensions='VK_EXT_debug_report,VK_KHR_surface,VK_KHR_swapchain' c - * - * Online: - * http://glad.sh/#api=vulkan%3D1.1&extensions=VK_EXT_debug_report%2CVK_KHR_surface%2CVK_KHR_swapchain&generator=c&options= - * - */ - -#ifndef GLAD_VULKAN_H_ -#define GLAD_VULKAN_H_ - -#ifdef VULKAN_H_ - #error header already included (API: vulkan), remove previous include! -#endif -#define VULKAN_H_ 1 - -#ifdef VULKAN_CORE_H_ - #error header already included (API: vulkan), remove previous include! -#endif -#define VULKAN_CORE_H_ 1 - - -#define GLAD_VULKAN - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef GLAD_PLATFORM_H_ -#define GLAD_PLATFORM_H_ - -#ifndef GLAD_PLATFORM_WIN32 - #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) - #define GLAD_PLATFORM_WIN32 1 - #else - #define GLAD_PLATFORM_WIN32 0 - #endif -#endif - -#ifndef GLAD_PLATFORM_APPLE - #ifdef __APPLE__ - #define GLAD_PLATFORM_APPLE 1 - #else - #define GLAD_PLATFORM_APPLE 0 - #endif -#endif - -#ifndef GLAD_PLATFORM_EMSCRIPTEN - #ifdef __EMSCRIPTEN__ - #define GLAD_PLATFORM_EMSCRIPTEN 1 - #else - #define GLAD_PLATFORM_EMSCRIPTEN 0 - #endif -#endif - -#ifndef GLAD_PLATFORM_UWP - #if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) - #ifdef __has_include - #if __has_include(<winapifamily.h>) - #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 - #endif - #elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ - #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 - #endif - #endif - - #ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY - #include <winapifamily.h> - #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) - #define GLAD_PLATFORM_UWP 1 - #endif - #endif - - #ifndef GLAD_PLATFORM_UWP - #define GLAD_PLATFORM_UWP 0 - #endif -#endif - -#ifdef __GNUC__ - #define GLAD_GNUC_EXTENSION __extension__ -#else - #define GLAD_GNUC_EXTENSION -#endif - -#ifndef GLAD_API_CALL - #if defined(GLAD_API_CALL_EXPORT) - #if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) - #if defined(GLAD_API_CALL_EXPORT_BUILD) - #if defined(__GNUC__) - #define GLAD_API_CALL __attribute__ ((dllexport)) extern - #else - #define GLAD_API_CALL __declspec(dllexport) extern - #endif - #else - #if defined(__GNUC__) - #define GLAD_API_CALL __attribute__ ((dllimport)) extern - #else - #define GLAD_API_CALL __declspec(dllimport) extern - #endif - #endif - #elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) - #define GLAD_API_CALL __attribute__ ((visibility ("default"))) extern - #else - #define GLAD_API_CALL extern - #endif - #else - #define GLAD_API_CALL extern - #endif -#endif - -#ifdef APIENTRY - #define GLAD_API_PTR APIENTRY -#elif GLAD_PLATFORM_WIN32 - #define GLAD_API_PTR __stdcall -#else - #define GLAD_API_PTR -#endif - -#ifndef GLAPI -#define GLAPI GLAD_API_CALL -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY GLAD_API_PTR -#endif - - -#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor) -#define GLAD_VERSION_MAJOR(version) (version / 10000) -#define GLAD_VERSION_MINOR(version) (version % 10000) - -typedef void (*GLADapiproc)(void); - -typedef GLADapiproc (*GLADloadfunc)(const char *name); -typedef GLADapiproc (*GLADuserptrloadfunc)(const char *name, void *userptr); - -typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); -typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, ...); - -#endif /* GLAD_PLATFORM_H_ */ - -#define VK_ATTACHMENT_UNUSED (~0U) -#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" -#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9 -#define VK_FALSE 0 -#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" -#define VK_KHR_SURFACE_SPEC_VERSION 25 -#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" -#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70 -#define VK_LOD_CLAMP_NONE 1000.0f -#define VK_LUID_SIZE 8 -#define VK_MAX_DESCRIPTION_SIZE 256 -#define VK_MAX_DEVICE_GROUP_SIZE 32 -#define VK_MAX_EXTENSION_NAME_SIZE 256 -#define VK_MAX_MEMORY_HEAPS 16 -#define VK_MAX_MEMORY_TYPES 32 -#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256 -#define VK_QUEUE_FAMILY_EXTERNAL (~0U-1) -#define VK_QUEUE_FAMILY_IGNORED (~0U) -#define VK_REMAINING_ARRAY_LAYERS (~0U) -#define VK_REMAINING_MIP_LEVELS (~0U) -#define VK_SUBPASS_EXTERNAL (~0U) -#define VK_TRUE 1 -#define VK_UUID_SIZE 16 -#define VK_WHOLE_SIZE (~0ULL) - - -#include <glad/vk_platform.h> -#define VK_MAKE_VERSION(major, minor, patch) \ - (((major) << 22) | ((minor) << 12) | (patch)) -#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) -#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) -#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) -/* DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. */ -/*#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0 */ -/* Vulkan 1.0 version number */ -#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)/* Patch version should always be set to 0 */ -/* Vulkan 1.1 version number */ -#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)/* Patch version should always be set to 0 */ -/* Version of this file */ -#define VK_HEADER_VERSION 106 -#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; -#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE) -#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) - #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; -#else - #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; -#endif -#endif -#define VK_NULL_HANDLE 0 - - - - - - - - -VK_DEFINE_HANDLE(VkInstance) -VK_DEFINE_HANDLE(VkPhysicalDevice) -VK_DEFINE_HANDLE(VkDevice) -VK_DEFINE_HANDLE(VkQueue) -VK_DEFINE_HANDLE(VkCommandBuffer) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) -typedef enum VkAttachmentLoadOp { - VK_ATTACHMENT_LOAD_OP_LOAD = 0, - VK_ATTACHMENT_LOAD_OP_CLEAR = 1, - VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 -} VkAttachmentLoadOp; -typedef enum VkAttachmentStoreOp { - VK_ATTACHMENT_STORE_OP_STORE = 0, - VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 -} VkAttachmentStoreOp; -typedef enum VkBlendFactor { - VK_BLEND_FACTOR_ZERO = 0, - VK_BLEND_FACTOR_ONE = 1, - VK_BLEND_FACTOR_SRC_COLOR = 2, - VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3, - VK_BLEND_FACTOR_DST_COLOR = 4, - VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5, - VK_BLEND_FACTOR_SRC_ALPHA = 6, - VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7, - VK_BLEND_FACTOR_DST_ALPHA = 8, - VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9, - VK_BLEND_FACTOR_CONSTANT_COLOR = 10, - VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11, - VK_BLEND_FACTOR_CONSTANT_ALPHA = 12, - VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13, - VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14, - VK_BLEND_FACTOR_SRC1_COLOR = 15, - VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16, - VK_BLEND_FACTOR_SRC1_ALPHA = 17, - VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 -} VkBlendFactor; -typedef enum VkBlendOp { - VK_BLEND_OP_ADD = 0, - VK_BLEND_OP_SUBTRACT = 1, - VK_BLEND_OP_REVERSE_SUBTRACT = 2, - VK_BLEND_OP_MIN = 3, - VK_BLEND_OP_MAX = 4 -} VkBlendOp; -typedef enum VkBorderColor { - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0, - VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1, - VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2, - VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3, - VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4, - VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 -} VkBorderColor; - -typedef enum VkPipelineCacheHeaderVersion { - VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 -} VkPipelineCacheHeaderVersion; - -typedef enum VkDeviceQueueCreateFlagBits { - VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 -} VkDeviceQueueCreateFlagBits; -typedef enum VkBufferCreateFlagBits { - VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1, - VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2, - VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4, - VK_BUFFER_CREATE_PROTECTED_BIT = 8 -} VkBufferCreateFlagBits; -typedef enum VkBufferUsageFlagBits { - VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1, - VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2, - VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4, - VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8, - VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16, - VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32, - VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64, - VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128, - VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 -} VkBufferUsageFlagBits; -typedef enum VkColorComponentFlagBits { - VK_COLOR_COMPONENT_R_BIT = 1, - VK_COLOR_COMPONENT_G_BIT = 2, - VK_COLOR_COMPONENT_B_BIT = 4, - VK_COLOR_COMPONENT_A_BIT = 8 -} VkColorComponentFlagBits; -typedef enum VkComponentSwizzle { - VK_COMPONENT_SWIZZLE_IDENTITY = 0, - VK_COMPONENT_SWIZZLE_ZERO = 1, - VK_COMPONENT_SWIZZLE_ONE = 2, - VK_COMPONENT_SWIZZLE_R = 3, - VK_COMPONENT_SWIZZLE_G = 4, - VK_COMPONENT_SWIZZLE_B = 5, - VK_COMPONENT_SWIZZLE_A = 6 -} VkComponentSwizzle; -typedef enum VkCommandPoolCreateFlagBits { - VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1, - VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2, - VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 -} VkCommandPoolCreateFlagBits; -typedef enum VkCommandPoolResetFlagBits { - VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 -} VkCommandPoolResetFlagBits; -typedef enum VkCommandBufferResetFlagBits { - VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 -} VkCommandBufferResetFlagBits; -typedef enum VkCommandBufferLevel { - VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0, - VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 -} VkCommandBufferLevel; -typedef enum VkCommandBufferUsageFlagBits { - VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1, - VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2, - VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 -} VkCommandBufferUsageFlagBits; -typedef enum VkCompareOp { - VK_COMPARE_OP_NEVER = 0, - VK_COMPARE_OP_LESS = 1, - VK_COMPARE_OP_EQUAL = 2, - VK_COMPARE_OP_LESS_OR_EQUAL = 3, - VK_COMPARE_OP_GREATER = 4, - VK_COMPARE_OP_NOT_EQUAL = 5, - VK_COMPARE_OP_GREATER_OR_EQUAL = 6, - VK_COMPARE_OP_ALWAYS = 7 -} VkCompareOp; -typedef enum VkCullModeFlagBits { - VK_CULL_MODE_NONE = 0, - VK_CULL_MODE_FRONT_BIT = 1, - VK_CULL_MODE_BACK_BIT = 2, - VK_CULL_MODE_FRONT_AND_BACK = 0x00000003 -} VkCullModeFlagBits; -typedef enum VkDescriptorType { - VK_DESCRIPTOR_TYPE_SAMPLER = 0, - VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1, - VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2, - VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3, - VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4, - VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5, - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6, - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7, - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8, - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9, - VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 -} VkDescriptorType; -typedef enum VkDynamicState { - VK_DYNAMIC_STATE_VIEWPORT = 0, - VK_DYNAMIC_STATE_SCISSOR = 1, - VK_DYNAMIC_STATE_LINE_WIDTH = 2, - VK_DYNAMIC_STATE_DEPTH_BIAS = 3, - VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4, - VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5, - VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6, - VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7, - VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8, - VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1) -} VkDynamicState; -typedef enum VkFenceCreateFlagBits { - VK_FENCE_CREATE_SIGNALED_BIT = 1 -} VkFenceCreateFlagBits; -typedef enum VkPolygonMode { - VK_POLYGON_MODE_FILL = 0, - VK_POLYGON_MODE_LINE = 1, - VK_POLYGON_MODE_POINT = 2 -} VkPolygonMode; -typedef enum VkFormat { - VK_FORMAT_UNDEFINED = 0, - VK_FORMAT_R4G4_UNORM_PACK8 = 1, - VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2, - VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3, - VK_FORMAT_R5G6B5_UNORM_PACK16 = 4, - VK_FORMAT_B5G6R5_UNORM_PACK16 = 5, - VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6, - VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7, - VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8, - VK_FORMAT_R8_UNORM = 9, - VK_FORMAT_R8_SNORM = 10, - VK_FORMAT_R8_USCALED = 11, - VK_FORMAT_R8_SSCALED = 12, - VK_FORMAT_R8_UINT = 13, - VK_FORMAT_R8_SINT = 14, - VK_FORMAT_R8_SRGB = 15, - VK_FORMAT_R8G8_UNORM = 16, - VK_FORMAT_R8G8_SNORM = 17, - VK_FORMAT_R8G8_USCALED = 18, - VK_FORMAT_R8G8_SSCALED = 19, - VK_FORMAT_R8G8_UINT = 20, - VK_FORMAT_R8G8_SINT = 21, - VK_FORMAT_R8G8_SRGB = 22, - VK_FORMAT_R8G8B8_UNORM = 23, - VK_FORMAT_R8G8B8_SNORM = 24, - VK_FORMAT_R8G8B8_USCALED = 25, - VK_FORMAT_R8G8B8_SSCALED = 26, - VK_FORMAT_R8G8B8_UINT = 27, - VK_FORMAT_R8G8B8_SINT = 28, - VK_FORMAT_R8G8B8_SRGB = 29, - VK_FORMAT_B8G8R8_UNORM = 30, - VK_FORMAT_B8G8R8_SNORM = 31, - VK_FORMAT_B8G8R8_USCALED = 32, - VK_FORMAT_B8G8R8_SSCALED = 33, - VK_FORMAT_B8G8R8_UINT = 34, - VK_FORMAT_B8G8R8_SINT = 35, - VK_FORMAT_B8G8R8_SRGB = 36, - VK_FORMAT_R8G8B8A8_UNORM = 37, - VK_FORMAT_R8G8B8A8_SNORM = 38, - VK_FORMAT_R8G8B8A8_USCALED = 39, - VK_FORMAT_R8G8B8A8_SSCALED = 40, - VK_FORMAT_R8G8B8A8_UINT = 41, - VK_FORMAT_R8G8B8A8_SINT = 42, - VK_FORMAT_R8G8B8A8_SRGB = 43, - VK_FORMAT_B8G8R8A8_UNORM = 44, - VK_FORMAT_B8G8R8A8_SNORM = 45, - VK_FORMAT_B8G8R8A8_USCALED = 46, - VK_FORMAT_B8G8R8A8_SSCALED = 47, - VK_FORMAT_B8G8R8A8_UINT = 48, - VK_FORMAT_B8G8R8A8_SINT = 49, - VK_FORMAT_B8G8R8A8_SRGB = 50, - VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51, - VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52, - VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53, - VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54, - VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55, - VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56, - VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57, - VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58, - VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59, - VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60, - VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61, - VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62, - VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63, - VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64, - VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65, - VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66, - VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67, - VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68, - VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69, - VK_FORMAT_R16_UNORM = 70, - VK_FORMAT_R16_SNORM = 71, - VK_FORMAT_R16_USCALED = 72, - VK_FORMAT_R16_SSCALED = 73, - VK_FORMAT_R16_UINT = 74, - VK_FORMAT_R16_SINT = 75, - VK_FORMAT_R16_SFLOAT = 76, - VK_FORMAT_R16G16_UNORM = 77, - VK_FORMAT_R16G16_SNORM = 78, - VK_FORMAT_R16G16_USCALED = 79, - VK_FORMAT_R16G16_SSCALED = 80, - VK_FORMAT_R16G16_UINT = 81, - VK_FORMAT_R16G16_SINT = 82, - VK_FORMAT_R16G16_SFLOAT = 83, - VK_FORMAT_R16G16B16_UNORM = 84, - VK_FORMAT_R16G16B16_SNORM = 85, - VK_FORMAT_R16G16B16_USCALED = 86, - VK_FORMAT_R16G16B16_SSCALED = 87, - VK_FORMAT_R16G16B16_UINT = 88, - VK_FORMAT_R16G16B16_SINT = 89, - VK_FORMAT_R16G16B16_SFLOAT = 90, - VK_FORMAT_R16G16B16A16_UNORM = 91, - VK_FORMAT_R16G16B16A16_SNORM = 92, - VK_FORMAT_R16G16B16A16_USCALED = 93, - VK_FORMAT_R16G16B16A16_SSCALED = 94, - VK_FORMAT_R16G16B16A16_UINT = 95, - VK_FORMAT_R16G16B16A16_SINT = 96, - VK_FORMAT_R16G16B16A16_SFLOAT = 97, - VK_FORMAT_R32_UINT = 98, - VK_FORMAT_R32_SINT = 99, - VK_FORMAT_R32_SFLOAT = 100, - VK_FORMAT_R32G32_UINT = 101, - VK_FORMAT_R32G32_SINT = 102, - VK_FORMAT_R32G32_SFLOAT = 103, - VK_FORMAT_R32G32B32_UINT = 104, - VK_FORMAT_R32G32B32_SINT = 105, - VK_FORMAT_R32G32B32_SFLOAT = 106, - VK_FORMAT_R32G32B32A32_UINT = 107, - VK_FORMAT_R32G32B32A32_SINT = 108, - VK_FORMAT_R32G32B32A32_SFLOAT = 109, - VK_FORMAT_R64_UINT = 110, - VK_FORMAT_R64_SINT = 111, - VK_FORMAT_R64_SFLOAT = 112, - VK_FORMAT_R64G64_UINT = 113, - VK_FORMAT_R64G64_SINT = 114, - VK_FORMAT_R64G64_SFLOAT = 115, - VK_FORMAT_R64G64B64_UINT = 116, - VK_FORMAT_R64G64B64_SINT = 117, - VK_FORMAT_R64G64B64_SFLOAT = 118, - VK_FORMAT_R64G64B64A64_UINT = 119, - VK_FORMAT_R64G64B64A64_SINT = 120, - VK_FORMAT_R64G64B64A64_SFLOAT = 121, - VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122, - VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123, - VK_FORMAT_D16_UNORM = 124, - VK_FORMAT_X8_D24_UNORM_PACK32 = 125, - VK_FORMAT_D32_SFLOAT = 126, - VK_FORMAT_S8_UINT = 127, - VK_FORMAT_D16_UNORM_S8_UINT = 128, - VK_FORMAT_D24_UNORM_S8_UINT = 129, - VK_FORMAT_D32_SFLOAT_S8_UINT = 130, - VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131, - VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132, - VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133, - VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134, - VK_FORMAT_BC2_UNORM_BLOCK = 135, - VK_FORMAT_BC2_SRGB_BLOCK = 136, - VK_FORMAT_BC3_UNORM_BLOCK = 137, - VK_FORMAT_BC3_SRGB_BLOCK = 138, - VK_FORMAT_BC4_UNORM_BLOCK = 139, - VK_FORMAT_BC4_SNORM_BLOCK = 140, - VK_FORMAT_BC5_UNORM_BLOCK = 141, - VK_FORMAT_BC5_SNORM_BLOCK = 142, - VK_FORMAT_BC6H_UFLOAT_BLOCK = 143, - VK_FORMAT_BC6H_SFLOAT_BLOCK = 144, - VK_FORMAT_BC7_UNORM_BLOCK = 145, - VK_FORMAT_BC7_SRGB_BLOCK = 146, - VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147, - VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148, - VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149, - VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150, - VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151, - VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152, - VK_FORMAT_EAC_R11_UNORM_BLOCK = 153, - VK_FORMAT_EAC_R11_SNORM_BLOCK = 154, - VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155, - VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156, - VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157, - VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158, - VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159, - VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160, - VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161, - VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162, - VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163, - VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164, - VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165, - VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166, - VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167, - VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168, - VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169, - VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170, - VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171, - VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172, - VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173, - VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174, - VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175, - VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176, - VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177, - VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178, - VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179, - VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180, - VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181, - VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182, - VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183, - VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184, - VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000, - VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001, - VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002, - VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003, - VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004, - VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005, - VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006, - VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007, - VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008, - VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009, - VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010, - VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016, - VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017, - VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018, - VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019, - VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020, - VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026, - VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027, - VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028, - VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029, - VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030, - VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031, - VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032, - VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 -} VkFormat; -typedef enum VkFormatFeatureFlagBits { - VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1, - VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2, - VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4, - VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8, - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16, - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32, - VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64, - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128, - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256, - VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512, - VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024, - VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096, - VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384, - VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768, - VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152, - VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304, - VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 -} VkFormatFeatureFlagBits; -typedef enum VkFrontFace { - VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, - VK_FRONT_FACE_CLOCKWISE = 1 -} VkFrontFace; -typedef enum VkImageAspectFlagBits { - VK_IMAGE_ASPECT_COLOR_BIT = 1, - VK_IMAGE_ASPECT_DEPTH_BIT = 2, - VK_IMAGE_ASPECT_STENCIL_BIT = 4, - VK_IMAGE_ASPECT_METADATA_BIT = 8, - VK_IMAGE_ASPECT_PLANE_0_BIT = 16, - VK_IMAGE_ASPECT_PLANE_1_BIT = 32, - VK_IMAGE_ASPECT_PLANE_2_BIT = 64 -} VkImageAspectFlagBits; -typedef enum VkImageCreateFlagBits { - VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1, - VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2, - VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4, - VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8, - VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16, - VK_IMAGE_CREATE_ALIAS_BIT = 1024, - VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64, - VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32, - VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128, - VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256, - VK_IMAGE_CREATE_PROTECTED_BIT = 2048, - VK_IMAGE_CREATE_DISJOINT_BIT = 512 -} VkImageCreateFlagBits; -typedef enum VkImageLayout { - VK_IMAGE_LAYOUT_UNDEFINED = 0, - VK_IMAGE_LAYOUT_GENERAL = 1, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7, - VK_IMAGE_LAYOUT_PREINITIALIZED = 8, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, - VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 -} VkImageLayout; -typedef enum VkImageTiling { - VK_IMAGE_TILING_OPTIMAL = 0, - VK_IMAGE_TILING_LINEAR = 1 -} VkImageTiling; -typedef enum VkImageType { - VK_IMAGE_TYPE_1D = 0, - VK_IMAGE_TYPE_2D = 1, - VK_IMAGE_TYPE_3D = 2 -} VkImageType; -typedef enum VkImageUsageFlagBits { - VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1, - VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2, - VK_IMAGE_USAGE_SAMPLED_BIT = 4, - VK_IMAGE_USAGE_STORAGE_BIT = 8, - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16, - VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32, - VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64, - VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 -} VkImageUsageFlagBits; - -typedef enum VkImageViewType { - VK_IMAGE_VIEW_TYPE_1D = 0, - VK_IMAGE_VIEW_TYPE_2D = 1, - VK_IMAGE_VIEW_TYPE_3D = 2, - VK_IMAGE_VIEW_TYPE_CUBE = 3, - VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, - VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, - VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 -} VkImageViewType; -typedef enum VkSharingMode { - VK_SHARING_MODE_EXCLUSIVE = 0, - VK_SHARING_MODE_CONCURRENT = 1 -} VkSharingMode; -typedef enum VkIndexType { - VK_INDEX_TYPE_UINT16 = 0, - VK_INDEX_TYPE_UINT32 = 1 -} VkIndexType; -typedef enum VkLogicOp { - VK_LOGIC_OP_CLEAR = 0, - VK_LOGIC_OP_AND = 1, - VK_LOGIC_OP_AND_REVERSE = 2, - VK_LOGIC_OP_COPY = 3, - VK_LOGIC_OP_AND_INVERTED = 4, - VK_LOGIC_OP_NO_OP = 5, - VK_LOGIC_OP_XOR = 6, - VK_LOGIC_OP_OR = 7, - VK_LOGIC_OP_NOR = 8, - VK_LOGIC_OP_EQUIVALENT = 9, - VK_LOGIC_OP_INVERT = 10, - VK_LOGIC_OP_OR_REVERSE = 11, - VK_LOGIC_OP_COPY_INVERTED = 12, - VK_LOGIC_OP_OR_INVERTED = 13, - VK_LOGIC_OP_NAND = 14, - VK_LOGIC_OP_SET = 15 -} VkLogicOp; -typedef enum VkMemoryHeapFlagBits { - VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1, - VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 -} VkMemoryHeapFlagBits; -typedef enum VkAccessFlagBits { - VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1, - VK_ACCESS_INDEX_READ_BIT = 2, - VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4, - VK_ACCESS_UNIFORM_READ_BIT = 8, - VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16, - VK_ACCESS_SHADER_READ_BIT = 32, - VK_ACCESS_SHADER_WRITE_BIT = 64, - VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128, - VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256, - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512, - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024, - VK_ACCESS_TRANSFER_READ_BIT = 2048, - VK_ACCESS_TRANSFER_WRITE_BIT = 4096, - VK_ACCESS_HOST_READ_BIT = 8192, - VK_ACCESS_HOST_WRITE_BIT = 16384, - VK_ACCESS_MEMORY_READ_BIT = 32768, - VK_ACCESS_MEMORY_WRITE_BIT = 65536 -} VkAccessFlagBits; -typedef enum VkMemoryPropertyFlagBits { - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1, - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2, - VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4, - VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8, - VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16, - VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 -} VkMemoryPropertyFlagBits; -typedef enum VkPhysicalDeviceType { - VK_PHYSICAL_DEVICE_TYPE_OTHER = 0, - VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1, - VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2, - VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3, - VK_PHYSICAL_DEVICE_TYPE_CPU = 4 -} VkPhysicalDeviceType; -typedef enum VkPipelineBindPoint { - VK_PIPELINE_BIND_POINT_GRAPHICS = 0, - VK_PIPELINE_BIND_POINT_COMPUTE = 1 -} VkPipelineBindPoint; -typedef enum VkPipelineCreateFlagBits { - VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1, - VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2, - VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4, - VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8, - VK_PIPELINE_CREATE_DISPATCH_BASE = 16 -} VkPipelineCreateFlagBits; -typedef enum VkPrimitiveTopology { - VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, - VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 -} VkPrimitiveTopology; -typedef enum VkQueryControlFlagBits { - VK_QUERY_CONTROL_PRECISE_BIT = 1 -} VkQueryControlFlagBits; -typedef enum VkQueryPipelineStatisticFlagBits { - VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1, - VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2, - VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4, - VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8, - VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16, - VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32, - VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64, - VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128, - VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256, - VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512, - VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 -} VkQueryPipelineStatisticFlagBits; -typedef enum VkQueryResultFlagBits { - VK_QUERY_RESULT_64_BIT = 1, - VK_QUERY_RESULT_WAIT_BIT = 2, - VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4, - VK_QUERY_RESULT_PARTIAL_BIT = 8 -} VkQueryResultFlagBits; -typedef enum VkQueryType { - VK_QUERY_TYPE_OCCLUSION = 0, - VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, - VK_QUERY_TYPE_TIMESTAMP = 2 -} VkQueryType; -typedef enum VkQueueFlagBits { - VK_QUEUE_GRAPHICS_BIT = 1, - VK_QUEUE_COMPUTE_BIT = 2, - VK_QUEUE_TRANSFER_BIT = 4, - VK_QUEUE_SPARSE_BINDING_BIT = 8, - VK_QUEUE_PROTECTED_BIT = 16 -} VkQueueFlagBits; -typedef enum VkSubpassContents { - VK_SUBPASS_CONTENTS_INLINE = 0, - VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 -} VkSubpassContents; -typedef enum VkResult { - VK_SUCCESS = 0, - VK_NOT_READY = 1, - VK_TIMEOUT = 2, - VK_EVENT_SET = 3, - VK_EVENT_RESET = 4, - VK_INCOMPLETE = 5, - VK_ERROR_OUT_OF_HOST_MEMORY = -1, - VK_ERROR_OUT_OF_DEVICE_MEMORY = -2, - VK_ERROR_INITIALIZATION_FAILED = -3, - VK_ERROR_DEVICE_LOST = -4, - VK_ERROR_MEMORY_MAP_FAILED = -5, - VK_ERROR_LAYER_NOT_PRESENT = -6, - VK_ERROR_EXTENSION_NOT_PRESENT = -7, - VK_ERROR_FEATURE_NOT_PRESENT = -8, - VK_ERROR_INCOMPATIBLE_DRIVER = -9, - VK_ERROR_TOO_MANY_OBJECTS = -10, - VK_ERROR_FORMAT_NOT_SUPPORTED = -11, - VK_ERROR_FRAGMENTED_POOL = -12, - VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000, - VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, - VK_ERROR_SURFACE_LOST_KHR = -1000000000, - VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, - VK_SUBOPTIMAL_KHR = 1000001003, - VK_ERROR_OUT_OF_DATE_KHR = -1000001004, - VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 -} VkResult; -typedef enum VkShaderStageFlagBits { - VK_SHADER_STAGE_VERTEX_BIT = 1, - VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2, - VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4, - VK_SHADER_STAGE_GEOMETRY_BIT = 8, - VK_SHADER_STAGE_FRAGMENT_BIT = 16, - VK_SHADER_STAGE_COMPUTE_BIT = 32, - VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F, - VK_SHADER_STAGE_ALL = 0x7FFFFFFF -} VkShaderStageFlagBits; -typedef enum VkSparseMemoryBindFlagBits { - VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 -} VkSparseMemoryBindFlagBits; -typedef enum VkStencilFaceFlagBits { - VK_STENCIL_FACE_FRONT_BIT = 1, - VK_STENCIL_FACE_BACK_BIT = 2, - VK_STENCIL_FRONT_AND_BACK = 0x00000003 -} VkStencilFaceFlagBits; -typedef enum VkStencilOp { - VK_STENCIL_OP_KEEP = 0, - VK_STENCIL_OP_ZERO = 1, - VK_STENCIL_OP_REPLACE = 2, - VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3, - VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4, - VK_STENCIL_OP_INVERT = 5, - VK_STENCIL_OP_INCREMENT_AND_WRAP = 6, - VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 -} VkStencilOp; -typedef enum VkStructureType { - VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, - VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2, - VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3, - VK_STRUCTURE_TYPE_SUBMIT_INFO = 4, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5, - VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6, - VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7, - VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8, - VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9, - VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10, - VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11, - VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12, - VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13, - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14, - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15, - VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16, - VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18, - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, - VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, - VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, - VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, - VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28, - VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29, - VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30, - VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35, - VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36, - VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, - VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42, - VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45, - VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46, - VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47, - VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003, - VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005, - VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001, - VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002, - VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001, - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000, - VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001, - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003, - VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, - VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001, - VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002, - VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005, - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000, - VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002, - VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000, - VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001, - VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000, - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000, - VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, - VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, - VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, - VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007, - VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009, - VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010, - VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012, - VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, - VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT -} VkStructureType; -typedef enum VkSystemAllocationScope { - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0, - VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1, - VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2, - VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3, - VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 -} VkSystemAllocationScope; -typedef enum VkInternalAllocationType { - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 -} VkInternalAllocationType; -typedef enum VkSamplerAddressMode { - VK_SAMPLER_ADDRESS_MODE_REPEAT = 0, - VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1, - VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2, - VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 -} VkSamplerAddressMode; -typedef enum VkFilter { - VK_FILTER_NEAREST = 0, - VK_FILTER_LINEAR = 1 -} VkFilter; -typedef enum VkSamplerMipmapMode { - VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, - VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 -} VkSamplerMipmapMode; -typedef enum VkVertexInputRate { - VK_VERTEX_INPUT_RATE_VERTEX = 0, - VK_VERTEX_INPUT_RATE_INSTANCE = 1 -} VkVertexInputRate; -typedef enum VkPipelineStageFlagBits { - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1, - VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2, - VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4, - VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8, - VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16, - VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32, - VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64, - VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128, - VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256, - VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512, - VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024, - VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048, - VK_PIPELINE_STAGE_TRANSFER_BIT = 4096, - VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192, - VK_PIPELINE_STAGE_HOST_BIT = 16384, - VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768, - VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 -} VkPipelineStageFlagBits; -typedef enum VkSparseImageFormatFlagBits { - VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1, - VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2, - VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 -} VkSparseImageFormatFlagBits; -typedef enum VkSampleCountFlagBits { - VK_SAMPLE_COUNT_1_BIT = 1, - VK_SAMPLE_COUNT_2_BIT = 2, - VK_SAMPLE_COUNT_4_BIT = 4, - VK_SAMPLE_COUNT_8_BIT = 8, - VK_SAMPLE_COUNT_16_BIT = 16, - VK_SAMPLE_COUNT_32_BIT = 32, - VK_SAMPLE_COUNT_64_BIT = 64 -} VkSampleCountFlagBits; -typedef enum VkAttachmentDescriptionFlagBits { - VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 -} VkAttachmentDescriptionFlagBits; -typedef enum VkDescriptorPoolCreateFlagBits { - VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 -} VkDescriptorPoolCreateFlagBits; -typedef enum VkDependencyFlagBits { - VK_DEPENDENCY_BY_REGION_BIT = 1, - VK_DEPENDENCY_DEVICE_GROUP_BIT = 4, - VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 -} VkDependencyFlagBits; -typedef enum VkObjectType { - VK_OBJECT_TYPE_UNKNOWN = 0, - VK_OBJECT_TYPE_INSTANCE = 1, - VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2, - VK_OBJECT_TYPE_DEVICE = 3, - VK_OBJECT_TYPE_QUEUE = 4, - VK_OBJECT_TYPE_SEMAPHORE = 5, - VK_OBJECT_TYPE_COMMAND_BUFFER = 6, - VK_OBJECT_TYPE_FENCE = 7, - VK_OBJECT_TYPE_DEVICE_MEMORY = 8, - VK_OBJECT_TYPE_BUFFER = 9, - VK_OBJECT_TYPE_IMAGE = 10, - VK_OBJECT_TYPE_EVENT = 11, - VK_OBJECT_TYPE_QUERY_POOL = 12, - VK_OBJECT_TYPE_BUFFER_VIEW = 13, - VK_OBJECT_TYPE_IMAGE_VIEW = 14, - VK_OBJECT_TYPE_SHADER_MODULE = 15, - VK_OBJECT_TYPE_PIPELINE_CACHE = 16, - VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17, - VK_OBJECT_TYPE_RENDER_PASS = 18, - VK_OBJECT_TYPE_PIPELINE = 19, - VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20, - VK_OBJECT_TYPE_SAMPLER = 21, - VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22, - VK_OBJECT_TYPE_DESCRIPTOR_SET = 23, - VK_OBJECT_TYPE_FRAMEBUFFER = 24, - VK_OBJECT_TYPE_COMMAND_POOL = 25, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, - VK_OBJECT_TYPE_SURFACE_KHR = 1000000000, - VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000, - VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 -} VkObjectType; -typedef enum VkDescriptorUpdateTemplateType { - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 -} VkDescriptorUpdateTemplateType; - -typedef enum VkPointClippingBehavior { - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0, - VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 -} VkPointClippingBehavior; -typedef enum VkColorSpaceKHR { - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, - VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR -} VkColorSpaceKHR; -typedef enum VkCompositeAlphaFlagBitsKHR { - VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1, - VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2, - VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4, - VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 -} VkCompositeAlphaFlagBitsKHR; -typedef enum VkPresentModeKHR { - VK_PRESENT_MODE_IMMEDIATE_KHR = 0, - VK_PRESENT_MODE_MAILBOX_KHR = 1, - VK_PRESENT_MODE_FIFO_KHR = 2, - VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 -} VkPresentModeKHR; -typedef enum VkSurfaceTransformFlagBitsKHR { - VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1, - VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2, - VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4, - VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128, - VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 -} VkSurfaceTransformFlagBitsKHR; -typedef enum VkDebugReportFlagBitsEXT { - VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1, - VK_DEBUG_REPORT_WARNING_BIT_EXT = 2, - VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4, - VK_DEBUG_REPORT_ERROR_BIT_EXT = 8, - VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 -} VkDebugReportFlagBitsEXT; -typedef enum VkDebugReportObjectTypeEXT { - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, - VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, - VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2, - VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3, - VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4, - VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5, - VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6, - VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7, - VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8, - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9, - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10, - VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11, - VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12, - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13, - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14, - VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17, - VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23, - VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24, - VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25, - VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26, - VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27, - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28, - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29, - VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30, - VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31, - VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32, - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33, - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 -} VkDebugReportObjectTypeEXT; -typedef enum VkExternalMemoryHandleTypeFlagBits { - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 -} VkExternalMemoryHandleTypeFlagBits; -typedef enum VkExternalMemoryFeatureFlagBits { - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1, - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2, - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 -} VkExternalMemoryFeatureFlagBits; -typedef enum VkExternalSemaphoreHandleTypeFlagBits { - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 -} VkExternalSemaphoreHandleTypeFlagBits; -typedef enum VkExternalSemaphoreFeatureFlagBits { - VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1, - VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 -} VkExternalSemaphoreFeatureFlagBits; -typedef enum VkSemaphoreImportFlagBits { - VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 -} VkSemaphoreImportFlagBits; -typedef enum VkExternalFenceHandleTypeFlagBits { - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4, - VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 -} VkExternalFenceHandleTypeFlagBits; -typedef enum VkExternalFenceFeatureFlagBits { - VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1, - VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 -} VkExternalFenceFeatureFlagBits; -typedef enum VkFenceImportFlagBits { - VK_FENCE_IMPORT_TEMPORARY_BIT = 1 -} VkFenceImportFlagBits; -typedef enum VkPeerMemoryFeatureFlagBits { - VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1, - VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2, - VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4, - VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 -} VkPeerMemoryFeatureFlagBits; -typedef enum VkMemoryAllocateFlagBits { - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 -} VkMemoryAllocateFlagBits; -typedef enum VkDeviceGroupPresentModeFlagBitsKHR { - VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1, - VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2, - VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4, - VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 -} VkDeviceGroupPresentModeFlagBitsKHR; -typedef enum VkSwapchainCreateFlagBitsKHR { - VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1, - VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 -} VkSwapchainCreateFlagBitsKHR; -typedef enum VkSubgroupFeatureFlagBits { - VK_SUBGROUP_FEATURE_BASIC_BIT = 1, - VK_SUBGROUP_FEATURE_VOTE_BIT = 2, - VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4, - VK_SUBGROUP_FEATURE_BALLOT_BIT = 8, - VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16, - VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32, - VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64, - VK_SUBGROUP_FEATURE_QUAD_BIT = 128 -} VkSubgroupFeatureFlagBits; -typedef enum VkTessellationDomainOrigin { - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0, - VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 -} VkTessellationDomainOrigin; -typedef enum VkSamplerYcbcrModelConversion { - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 -} VkSamplerYcbcrModelConversion; -typedef enum VkSamplerYcbcrRange { - VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0, - VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 -} VkSamplerYcbcrRange; -typedef enum VkChromaLocation { - VK_CHROMA_LOCATION_COSITED_EVEN = 0, - VK_CHROMA_LOCATION_MIDPOINT = 1 -} VkChromaLocation; -typedef enum VkVendorId { - VK_VENDOR_ID_VIV = 0x10001, - VK_VENDOR_ID_VSI = 0x10002, - VK_VENDOR_ID_KAZAN = 0x10003 -} VkVendorId; -typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)( - void* pUserData, - size_t size, - VkInternalAllocationType allocationType, - VkSystemAllocationScope allocationScope); -typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)( - void* pUserData, - size_t size, - VkInternalAllocationType allocationType, - VkSystemAllocationScope allocationScope); -typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)( - void* pUserData, - void* pOriginal, - size_t size, - size_t alignment, - VkSystemAllocationScope allocationScope); -typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)( - void* pUserData, - size_t size, - size_t alignment, - VkSystemAllocationScope allocationScope); -typedef void (VKAPI_PTR *PFN_vkFreeFunction)( - void* pUserData, - void* pMemory); -typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void); -typedef struct VkBaseOutStructure { - VkStructureType sType; - struct VkBaseOutStructure * pNext; -} VkBaseOutStructure; -typedef struct VkBaseInStructure { - VkStructureType sType; - const struct VkBaseInStructure * pNext; -} VkBaseInStructure; -typedef struct VkOffset2D { - int32_t x; - int32_t y; -} VkOffset2D; -typedef struct VkOffset3D { - int32_t x; - int32_t y; - int32_t z; -} VkOffset3D; -typedef struct VkExtent2D { - uint32_t width; - uint32_t height; -} VkExtent2D; -typedef struct VkExtent3D { - uint32_t width; - uint32_t height; - uint32_t depth; -} VkExtent3D; -typedef struct VkViewport { - float x; - float y; - float width; - float height; - float minDepth; - float maxDepth; -} VkViewport; -typedef struct VkRect2D { - VkOffset2D offset; - VkExtent2D extent; -} VkRect2D; -typedef struct VkClearRect { - VkRect2D rect; - uint32_t baseArrayLayer; - uint32_t layerCount; -} VkClearRect; -typedef struct VkComponentMapping { - VkComponentSwizzle r; - VkComponentSwizzle g; - VkComponentSwizzle b; - VkComponentSwizzle a; -} VkComponentMapping; -typedef struct VkExtensionProperties { - char extensionName [ VK_MAX_EXTENSION_NAME_SIZE ]; - uint32_t specVersion; -} VkExtensionProperties; -typedef struct VkLayerProperties { - char layerName [ VK_MAX_EXTENSION_NAME_SIZE ]; - uint32_t specVersion; - uint32_t implementationVersion; - char description [ VK_MAX_DESCRIPTION_SIZE ]; -} VkLayerProperties; -typedef struct VkApplicationInfo { - VkStructureType sType; - const void * pNext; - const char * pApplicationName; - uint32_t applicationVersion; - const char * pEngineName; - uint32_t engineVersion; - uint32_t apiVersion; -} VkApplicationInfo; -typedef struct VkAllocationCallbacks { - void * pUserData; - PFN_vkAllocationFunction pfnAllocation; - PFN_vkReallocationFunction pfnReallocation; - PFN_vkFreeFunction pfnFree; - PFN_vkInternalAllocationNotification pfnInternalAllocation; - PFN_vkInternalFreeNotification pfnInternalFree; -} VkAllocationCallbacks; -typedef struct VkDescriptorImageInfo { - VkSampler sampler; - VkImageView imageView; - VkImageLayout imageLayout; -} VkDescriptorImageInfo; -typedef struct VkCopyDescriptorSet { - VkStructureType sType; - const void * pNext; - VkDescriptorSet srcSet; - uint32_t srcBinding; - uint32_t srcArrayElement; - VkDescriptorSet dstSet; - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; -} VkCopyDescriptorSet; -typedef struct VkDescriptorPoolSize { - VkDescriptorType type; - uint32_t descriptorCount; -} VkDescriptorPoolSize; -typedef struct VkDescriptorSetAllocateInfo { - VkStructureType sType; - const void * pNext; - VkDescriptorPool descriptorPool; - uint32_t descriptorSetCount; - const VkDescriptorSetLayout * pSetLayouts; -} VkDescriptorSetAllocateInfo; -typedef struct VkSpecializationMapEntry { - uint32_t constantID; - uint32_t offset; - size_t size; -} VkSpecializationMapEntry; -typedef struct VkSpecializationInfo { - uint32_t mapEntryCount; - const VkSpecializationMapEntry * pMapEntries; - size_t dataSize; - const void * pData; -} VkSpecializationInfo; -typedef struct VkVertexInputBindingDescription { - uint32_t binding; - uint32_t stride; - VkVertexInputRate inputRate; -} VkVertexInputBindingDescription; -typedef struct VkVertexInputAttributeDescription { - uint32_t location; - uint32_t binding; - VkFormat format; - uint32_t offset; -} VkVertexInputAttributeDescription; -typedef struct VkStencilOpState { - VkStencilOp failOp; - VkStencilOp passOp; - VkStencilOp depthFailOp; - VkCompareOp compareOp; - uint32_t compareMask; - uint32_t writeMask; - uint32_t reference; -} VkStencilOpState; -typedef struct VkCommandBufferAllocateInfo { - VkStructureType sType; - const void * pNext; - VkCommandPool commandPool; - VkCommandBufferLevel level; - uint32_t commandBufferCount; -} VkCommandBufferAllocateInfo; -typedef union VkClearColorValue { - float float32 [4]; - int32_t int32 [4]; - uint32_t uint32 [4]; -} VkClearColorValue; -typedef struct VkClearDepthStencilValue { - float depth; - uint32_t stencil; -} VkClearDepthStencilValue; -typedef union VkClearValue { - VkClearColorValue color; - VkClearDepthStencilValue depthStencil; -} VkClearValue; -typedef struct VkAttachmentReference { - uint32_t attachment; - VkImageLayout layout; -} VkAttachmentReference; -typedef struct VkDrawIndirectCommand { - uint32_t vertexCount; - uint32_t instanceCount; - uint32_t firstVertex; - uint32_t firstInstance; -} VkDrawIndirectCommand; -typedef struct VkDrawIndexedIndirectCommand { - uint32_t indexCount; - uint32_t instanceCount; - uint32_t firstIndex; - int32_t vertexOffset; - uint32_t firstInstance; -} VkDrawIndexedIndirectCommand; -typedef struct VkDispatchIndirectCommand { - uint32_t x; - uint32_t y; - uint32_t z; -} VkDispatchIndirectCommand; -typedef struct VkSurfaceFormatKHR { - VkFormat format; - VkColorSpaceKHR colorSpace; -} VkSurfaceFormatKHR; -typedef struct VkPresentInfoKHR { - VkStructureType sType; - const void * pNext; - uint32_t waitSemaphoreCount; - const VkSemaphore * pWaitSemaphores; - uint32_t swapchainCount; - const VkSwapchainKHR * pSwapchains; - const uint32_t * pImageIndices; - VkResult * pResults; -} VkPresentInfoKHR; -typedef struct VkPhysicalDeviceExternalImageFormatInfo { - VkStructureType sType; - const void * pNext; - VkExternalMemoryHandleTypeFlagBits handleType; -} VkPhysicalDeviceExternalImageFormatInfo; -typedef struct VkPhysicalDeviceExternalSemaphoreInfo { - VkStructureType sType; - const void * pNext; - VkExternalSemaphoreHandleTypeFlagBits handleType; -} VkPhysicalDeviceExternalSemaphoreInfo; -typedef struct VkPhysicalDeviceExternalFenceInfo { - VkStructureType sType; - const void * pNext; - VkExternalFenceHandleTypeFlagBits handleType; -} VkPhysicalDeviceExternalFenceInfo; -typedef struct VkPhysicalDeviceMultiviewProperties { - VkStructureType sType; - void * pNext; - uint32_t maxMultiviewViewCount; - uint32_t maxMultiviewInstanceIndex; -} VkPhysicalDeviceMultiviewProperties; -typedef struct VkRenderPassMultiviewCreateInfo { - VkStructureType sType; - const void * pNext; - uint32_t subpassCount; - const uint32_t * pViewMasks; - uint32_t dependencyCount; - const int32_t * pViewOffsets; - uint32_t correlationMaskCount; - const uint32_t * pCorrelationMasks; -} VkRenderPassMultiviewCreateInfo; -typedef struct VkBindBufferMemoryDeviceGroupInfo { - VkStructureType sType; - const void * pNext; - uint32_t deviceIndexCount; - const uint32_t * pDeviceIndices; -} VkBindBufferMemoryDeviceGroupInfo; -typedef struct VkBindImageMemoryDeviceGroupInfo { - VkStructureType sType; - const void * pNext; - uint32_t deviceIndexCount; - const uint32_t * pDeviceIndices; - uint32_t splitInstanceBindRegionCount; - const VkRect2D * pSplitInstanceBindRegions; -} VkBindImageMemoryDeviceGroupInfo; -typedef struct VkDeviceGroupRenderPassBeginInfo { - VkStructureType sType; - const void * pNext; - uint32_t deviceMask; - uint32_t deviceRenderAreaCount; - const VkRect2D * pDeviceRenderAreas; -} VkDeviceGroupRenderPassBeginInfo; -typedef struct VkDeviceGroupCommandBufferBeginInfo { - VkStructureType sType; - const void * pNext; - uint32_t deviceMask; -} VkDeviceGroupCommandBufferBeginInfo; -typedef struct VkDeviceGroupSubmitInfo { - VkStructureType sType; - const void * pNext; - uint32_t waitSemaphoreCount; - const uint32_t * pWaitSemaphoreDeviceIndices; - uint32_t commandBufferCount; - const uint32_t * pCommandBufferDeviceMasks; - uint32_t signalSemaphoreCount; - const uint32_t * pSignalSemaphoreDeviceIndices; -} VkDeviceGroupSubmitInfo; -typedef struct VkDeviceGroupBindSparseInfo { - VkStructureType sType; - const void * pNext; - uint32_t resourceDeviceIndex; - uint32_t memoryDeviceIndex; -} VkDeviceGroupBindSparseInfo; -typedef struct VkImageSwapchainCreateInfoKHR { - VkStructureType sType; - const void * pNext; - VkSwapchainKHR swapchain; -} VkImageSwapchainCreateInfoKHR; -typedef struct VkBindImageMemorySwapchainInfoKHR { - VkStructureType sType; - const void * pNext; - VkSwapchainKHR swapchain; - uint32_t imageIndex; -} VkBindImageMemorySwapchainInfoKHR; -typedef struct VkAcquireNextImageInfoKHR { - VkStructureType sType; - const void * pNext; - VkSwapchainKHR swapchain; - uint64_t timeout; - VkSemaphore semaphore; - VkFence fence; - uint32_t deviceMask; -} VkAcquireNextImageInfoKHR; -typedef struct VkDeviceGroupPresentInfoKHR { - VkStructureType sType; - const void * pNext; - uint32_t swapchainCount; - const uint32_t * pDeviceMasks; - VkDeviceGroupPresentModeFlagBitsKHR mode; -} VkDeviceGroupPresentInfoKHR; -typedef struct VkDeviceGroupDeviceCreateInfo { - VkStructureType sType; - const void * pNext; - uint32_t physicalDeviceCount; - const VkPhysicalDevice * pPhysicalDevices; -} VkDeviceGroupDeviceCreateInfo; -typedef struct VkDescriptorUpdateTemplateEntry { - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; - VkDescriptorType descriptorType; - size_t offset; - size_t stride; -} VkDescriptorUpdateTemplateEntry; -typedef struct VkBufferMemoryRequirementsInfo2 { - VkStructureType sType; - const void * pNext; - VkBuffer buffer; -} VkBufferMemoryRequirementsInfo2; -typedef struct VkImageMemoryRequirementsInfo2 { - VkStructureType sType; - const void * pNext; - VkImage image; -} VkImageMemoryRequirementsInfo2; -typedef struct VkImageSparseMemoryRequirementsInfo2 { - VkStructureType sType; - const void * pNext; - VkImage image; -} VkImageSparseMemoryRequirementsInfo2; -typedef struct VkPhysicalDevicePointClippingProperties { - VkStructureType sType; - void * pNext; - VkPointClippingBehavior pointClippingBehavior; -} VkPhysicalDevicePointClippingProperties; -typedef struct VkMemoryDedicatedAllocateInfo { - VkStructureType sType; - const void * pNext; - VkImage image; - VkBuffer buffer; -} VkMemoryDedicatedAllocateInfo; -typedef struct VkPipelineTessellationDomainOriginStateCreateInfo { - VkStructureType sType; - const void * pNext; - VkTessellationDomainOrigin domainOrigin; -} VkPipelineTessellationDomainOriginStateCreateInfo; -typedef struct VkSamplerYcbcrConversionInfo { - VkStructureType sType; - const void * pNext; - VkSamplerYcbcrConversion conversion; -} VkSamplerYcbcrConversionInfo; -typedef struct VkBindImagePlaneMemoryInfo { - VkStructureType sType; - const void * pNext; - VkImageAspectFlagBits planeAspect; -} VkBindImagePlaneMemoryInfo; -typedef struct VkImagePlaneMemoryRequirementsInfo { - VkStructureType sType; - const void * pNext; - VkImageAspectFlagBits planeAspect; -} VkImagePlaneMemoryRequirementsInfo; -typedef struct VkSamplerYcbcrConversionImageFormatProperties { - VkStructureType sType; - void * pNext; - uint32_t combinedImageSamplerDescriptorCount; -} VkSamplerYcbcrConversionImageFormatProperties; -typedef uint32_t VkSampleMask; -typedef uint32_t VkBool32; -typedef uint32_t VkFlags; -typedef uint64_t VkDeviceSize; -typedef VkFlags VkFramebufferCreateFlags; -typedef VkFlags VkQueryPoolCreateFlags; -typedef VkFlags VkRenderPassCreateFlags; -typedef VkFlags VkSamplerCreateFlags; -typedef VkFlags VkPipelineLayoutCreateFlags; -typedef VkFlags VkPipelineCacheCreateFlags; -typedef VkFlags VkPipelineDepthStencilStateCreateFlags; -typedef VkFlags VkPipelineDynamicStateCreateFlags; -typedef VkFlags VkPipelineColorBlendStateCreateFlags; -typedef VkFlags VkPipelineMultisampleStateCreateFlags; -typedef VkFlags VkPipelineRasterizationStateCreateFlags; -typedef VkFlags VkPipelineViewportStateCreateFlags; -typedef VkFlags VkPipelineTessellationStateCreateFlags; -typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; -typedef VkFlags VkPipelineVertexInputStateCreateFlags; -typedef VkFlags VkPipelineShaderStageCreateFlags; -typedef VkFlags VkDescriptorSetLayoutCreateFlags; -typedef VkFlags VkBufferViewCreateFlags; -typedef VkFlags VkInstanceCreateFlags; -typedef VkFlags VkDeviceCreateFlags; -typedef VkFlags VkDeviceQueueCreateFlags; -typedef VkFlags VkQueueFlags; -typedef VkFlags VkMemoryPropertyFlags; -typedef VkFlags VkMemoryHeapFlags; -typedef VkFlags VkAccessFlags; -typedef VkFlags VkBufferUsageFlags; -typedef VkFlags VkBufferCreateFlags; -typedef VkFlags VkShaderStageFlags; -typedef VkFlags VkImageUsageFlags; -typedef VkFlags VkImageCreateFlags; -typedef VkFlags VkImageViewCreateFlags; -typedef VkFlags VkPipelineCreateFlags; -typedef VkFlags VkColorComponentFlags; -typedef VkFlags VkFenceCreateFlags; -typedef VkFlags VkSemaphoreCreateFlags; -typedef VkFlags VkFormatFeatureFlags; -typedef VkFlags VkQueryControlFlags; -typedef VkFlags VkQueryResultFlags; -typedef VkFlags VkShaderModuleCreateFlags; -typedef VkFlags VkEventCreateFlags; -typedef VkFlags VkCommandPoolCreateFlags; -typedef VkFlags VkCommandPoolResetFlags; -typedef VkFlags VkCommandBufferResetFlags; -typedef VkFlags VkCommandBufferUsageFlags; -typedef VkFlags VkQueryPipelineStatisticFlags; -typedef VkFlags VkMemoryMapFlags; -typedef VkFlags VkImageAspectFlags; -typedef VkFlags VkSparseMemoryBindFlags; -typedef VkFlags VkSparseImageFormatFlags; -typedef VkFlags VkSubpassDescriptionFlags; -typedef VkFlags VkPipelineStageFlags; -typedef VkFlags VkSampleCountFlags; -typedef VkFlags VkAttachmentDescriptionFlags; -typedef VkFlags VkStencilFaceFlags; -typedef VkFlags VkCullModeFlags; -typedef VkFlags VkDescriptorPoolCreateFlags; -typedef VkFlags VkDescriptorPoolResetFlags; -typedef VkFlags VkDependencyFlags; -typedef VkFlags VkSubgroupFeatureFlags; -typedef VkFlags VkDescriptorUpdateTemplateCreateFlags; -typedef VkFlags VkCompositeAlphaFlagsKHR; -typedef VkFlags VkSurfaceTransformFlagsKHR; -typedef VkFlags VkSwapchainCreateFlagsKHR; -typedef VkFlags VkPeerMemoryFeatureFlags; -typedef VkFlags VkMemoryAllocateFlags; -typedef VkFlags VkDeviceGroupPresentModeFlagsKHR; -typedef VkFlags VkDebugReportFlagsEXT; -typedef VkFlags VkCommandPoolTrimFlags; -typedef VkFlags VkExternalMemoryHandleTypeFlags; -typedef VkFlags VkExternalMemoryFeatureFlags; -typedef VkFlags VkExternalSemaphoreHandleTypeFlags; -typedef VkFlags VkExternalSemaphoreFeatureFlags; -typedef VkFlags VkSemaphoreImportFlags; -typedef VkFlags VkExternalFenceHandleTypeFlags; -typedef VkFlags VkExternalFenceFeatureFlags; -typedef VkFlags VkFenceImportFlags; -typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)( - VkDebugReportFlagsEXT flags, - VkDebugReportObjectTypeEXT objectType, - uint64_t object, - size_t location, - int32_t messageCode, - const char* pLayerPrefix, - const char* pMessage, - void* pUserData); -typedef struct VkDeviceQueueCreateInfo { - VkStructureType sType; - const void * pNext; - VkDeviceQueueCreateFlags flags; - uint32_t queueFamilyIndex; - uint32_t queueCount; - const float * pQueuePriorities; -} VkDeviceQueueCreateInfo; -typedef struct VkInstanceCreateInfo { - VkStructureType sType; - const void * pNext; - VkInstanceCreateFlags flags; - const VkApplicationInfo * pApplicationInfo; - uint32_t enabledLayerCount; - const char * const* ppEnabledLayerNames; - uint32_t enabledExtensionCount; - const char * const* ppEnabledExtensionNames; -} VkInstanceCreateInfo; -typedef struct VkQueueFamilyProperties { - VkQueueFlags queueFlags; - uint32_t queueCount; - uint32_t timestampValidBits; - VkExtent3D minImageTransferGranularity; -} VkQueueFamilyProperties; -typedef struct VkMemoryAllocateInfo { - VkStructureType sType; - const void * pNext; - VkDeviceSize allocationSize; - uint32_t memoryTypeIndex; -} VkMemoryAllocateInfo; -typedef struct VkMemoryRequirements { - VkDeviceSize size; - VkDeviceSize alignment; - uint32_t memoryTypeBits; -} VkMemoryRequirements; -typedef struct VkSparseImageFormatProperties { - VkImageAspectFlags aspectMask; - VkExtent3D imageGranularity; - VkSparseImageFormatFlags flags; -} VkSparseImageFormatProperties; -typedef struct VkSparseImageMemoryRequirements { - VkSparseImageFormatProperties formatProperties; - uint32_t imageMipTailFirstLod; - VkDeviceSize imageMipTailSize; - VkDeviceSize imageMipTailOffset; - VkDeviceSize imageMipTailStride; -} VkSparseImageMemoryRequirements; -typedef struct VkMemoryType { - VkMemoryPropertyFlags propertyFlags; - uint32_t heapIndex; -} VkMemoryType; -typedef struct VkMemoryHeap { - VkDeviceSize size; - VkMemoryHeapFlags flags; -} VkMemoryHeap; -typedef struct VkMappedMemoryRange { - VkStructureType sType; - const void * pNext; - VkDeviceMemory memory; - VkDeviceSize offset; - VkDeviceSize size; -} VkMappedMemoryRange; -typedef struct VkFormatProperties { - VkFormatFeatureFlags linearTilingFeatures; - VkFormatFeatureFlags optimalTilingFeatures; - VkFormatFeatureFlags bufferFeatures; -} VkFormatProperties; -typedef struct VkImageFormatProperties { - VkExtent3D maxExtent; - uint32_t maxMipLevels; - uint32_t maxArrayLayers; - VkSampleCountFlags sampleCounts; - VkDeviceSize maxResourceSize; -} VkImageFormatProperties; -typedef struct VkDescriptorBufferInfo { - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize range; -} VkDescriptorBufferInfo; -typedef struct VkWriteDescriptorSet { - VkStructureType sType; - const void * pNext; - VkDescriptorSet dstSet; - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; - VkDescriptorType descriptorType; - const VkDescriptorImageInfo * pImageInfo; - const VkDescriptorBufferInfo * pBufferInfo; - const VkBufferView * pTexelBufferView; -} VkWriteDescriptorSet; -typedef struct VkBufferCreateInfo { - VkStructureType sType; - const void * pNext; - VkBufferCreateFlags flags; - VkDeviceSize size; - VkBufferUsageFlags usage; - VkSharingMode sharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t * pQueueFamilyIndices; -} VkBufferCreateInfo; -typedef struct VkBufferViewCreateInfo { - VkStructureType sType; - const void * pNext; - VkBufferViewCreateFlags flags; - VkBuffer buffer; - VkFormat format; - VkDeviceSize offset; - VkDeviceSize range; -} VkBufferViewCreateInfo; -typedef struct VkImageSubresource { - VkImageAspectFlags aspectMask; - uint32_t mipLevel; - uint32_t arrayLayer; -} VkImageSubresource; -typedef struct VkImageSubresourceLayers { - VkImageAspectFlags aspectMask; - uint32_t mipLevel; - uint32_t baseArrayLayer; - uint32_t layerCount; -} VkImageSubresourceLayers; -typedef struct VkImageSubresourceRange { - VkImageAspectFlags aspectMask; - uint32_t baseMipLevel; - uint32_t levelCount; - uint32_t baseArrayLayer; - uint32_t layerCount; -} VkImageSubresourceRange; -typedef struct VkMemoryBarrier { - VkStructureType sType; - const void * pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; -} VkMemoryBarrier; -typedef struct VkBufferMemoryBarrier { - VkStructureType sType; - const void * pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize size; -} VkBufferMemoryBarrier; -typedef struct VkImageMemoryBarrier { - VkStructureType sType; - const void * pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkImageLayout oldLayout; - VkImageLayout newLayout; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkImage image; - VkImageSubresourceRange subresourceRange; -} VkImageMemoryBarrier; -typedef struct VkImageCreateInfo { - VkStructureType sType; - const void * pNext; - VkImageCreateFlags flags; - VkImageType imageType; - VkFormat format; - VkExtent3D extent; - uint32_t mipLevels; - uint32_t arrayLayers; - VkSampleCountFlagBits samples; - VkImageTiling tiling; - VkImageUsageFlags usage; - VkSharingMode sharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t * pQueueFamilyIndices; - VkImageLayout initialLayout; -} VkImageCreateInfo; -typedef struct VkSubresourceLayout { - VkDeviceSize offset; - VkDeviceSize size; - VkDeviceSize rowPitch; - VkDeviceSize arrayPitch; - VkDeviceSize depthPitch; -} VkSubresourceLayout; -typedef struct VkImageViewCreateInfo { - VkStructureType sType; - const void * pNext; - VkImageViewCreateFlags flags; - VkImage image; - VkImageViewType viewType; - VkFormat format; - VkComponentMapping components; - VkImageSubresourceRange subresourceRange; -} VkImageViewCreateInfo; -typedef struct VkBufferCopy { - VkDeviceSize srcOffset; - VkDeviceSize dstOffset; - VkDeviceSize size; -} VkBufferCopy; -typedef struct VkSparseMemoryBind { - VkDeviceSize resourceOffset; - VkDeviceSize size; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; - VkSparseMemoryBindFlags flags; -} VkSparseMemoryBind; -typedef struct VkSparseImageMemoryBind { - VkImageSubresource subresource; - VkOffset3D offset; - VkExtent3D extent; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; - VkSparseMemoryBindFlags flags; -} VkSparseImageMemoryBind; -typedef struct VkSparseBufferMemoryBindInfo { - VkBuffer buffer; - uint32_t bindCount; - const VkSparseMemoryBind * pBinds; -} VkSparseBufferMemoryBindInfo; -typedef struct VkSparseImageOpaqueMemoryBindInfo { - VkImage image; - uint32_t bindCount; - const VkSparseMemoryBind * pBinds; -} VkSparseImageOpaqueMemoryBindInfo; -typedef struct VkSparseImageMemoryBindInfo { - VkImage image; - uint32_t bindCount; - const VkSparseImageMemoryBind * pBinds; -} VkSparseImageMemoryBindInfo; -typedef struct VkBindSparseInfo { - VkStructureType sType; - const void * pNext; - uint32_t waitSemaphoreCount; - const VkSemaphore * pWaitSemaphores; - uint32_t bufferBindCount; - const VkSparseBufferMemoryBindInfo * pBufferBinds; - uint32_t imageOpaqueBindCount; - const VkSparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds; - uint32_t imageBindCount; - const VkSparseImageMemoryBindInfo * pImageBinds; - uint32_t signalSemaphoreCount; - const VkSemaphore * pSignalSemaphores; -} VkBindSparseInfo; -typedef struct VkImageCopy { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageCopy; -typedef struct VkImageBlit { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffsets [2]; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffsets [2]; -} VkImageBlit; -typedef struct VkBufferImageCopy { - VkDeviceSize bufferOffset; - uint32_t bufferRowLength; - uint32_t bufferImageHeight; - VkImageSubresourceLayers imageSubresource; - VkOffset3D imageOffset; - VkExtent3D imageExtent; -} VkBufferImageCopy; -typedef struct VkImageResolve { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageResolve; -typedef struct VkShaderModuleCreateInfo { - VkStructureType sType; - const void * pNext; - VkShaderModuleCreateFlags flags; - size_t codeSize; - const uint32_t * pCode; -} VkShaderModuleCreateInfo; -typedef struct VkDescriptorSetLayoutBinding { - uint32_t binding; - VkDescriptorType descriptorType; - uint32_t descriptorCount; - VkShaderStageFlags stageFlags; - const VkSampler * pImmutableSamplers; -} VkDescriptorSetLayoutBinding; -typedef struct VkDescriptorSetLayoutCreateInfo { - VkStructureType sType; - const void * pNext; - VkDescriptorSetLayoutCreateFlags flags; - uint32_t bindingCount; - const VkDescriptorSetLayoutBinding * pBindings; -} VkDescriptorSetLayoutCreateInfo; -typedef struct VkDescriptorPoolCreateInfo { - VkStructureType sType; - const void * pNext; - VkDescriptorPoolCreateFlags flags; - uint32_t maxSets; - uint32_t poolSizeCount; - const VkDescriptorPoolSize * pPoolSizes; -} VkDescriptorPoolCreateInfo; -typedef struct VkPipelineShaderStageCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineShaderStageCreateFlags flags; - VkShaderStageFlagBits stage; - VkShaderModule module; - const char * pName; - const VkSpecializationInfo * pSpecializationInfo; -} VkPipelineShaderStageCreateInfo; -typedef struct VkComputePipelineCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineCreateFlags flags; - VkPipelineShaderStageCreateInfo stage; - VkPipelineLayout layout; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; -} VkComputePipelineCreateInfo; -typedef struct VkPipelineVertexInputStateCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineVertexInputStateCreateFlags flags; - uint32_t vertexBindingDescriptionCount; - const VkVertexInputBindingDescription * pVertexBindingDescriptions; - uint32_t vertexAttributeDescriptionCount; - const VkVertexInputAttributeDescription * pVertexAttributeDescriptions; -} VkPipelineVertexInputStateCreateInfo; -typedef struct VkPipelineInputAssemblyStateCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineInputAssemblyStateCreateFlags flags; - VkPrimitiveTopology topology; - VkBool32 primitiveRestartEnable; -} VkPipelineInputAssemblyStateCreateInfo; -typedef struct VkPipelineTessellationStateCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineTessellationStateCreateFlags flags; - uint32_t patchControlPoints; -} VkPipelineTessellationStateCreateInfo; -typedef struct VkPipelineViewportStateCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineViewportStateCreateFlags flags; - uint32_t viewportCount; - const VkViewport * pViewports; - uint32_t scissorCount; - const VkRect2D * pScissors; -} VkPipelineViewportStateCreateInfo; -typedef struct VkPipelineRasterizationStateCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineRasterizationStateCreateFlags flags; - VkBool32 depthClampEnable; - VkBool32 rasterizerDiscardEnable; - VkPolygonMode polygonMode; - VkCullModeFlags cullMode; - VkFrontFace frontFace; - VkBool32 depthBiasEnable; - float depthBiasConstantFactor; - float depthBiasClamp; - float depthBiasSlopeFactor; - float lineWidth; -} VkPipelineRasterizationStateCreateInfo; -typedef struct VkPipelineMultisampleStateCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineMultisampleStateCreateFlags flags; - VkSampleCountFlagBits rasterizationSamples; - VkBool32 sampleShadingEnable; - float minSampleShading; - const VkSampleMask * pSampleMask; - VkBool32 alphaToCoverageEnable; - VkBool32 alphaToOneEnable; -} VkPipelineMultisampleStateCreateInfo; -typedef struct VkPipelineColorBlendAttachmentState { - VkBool32 blendEnable; - VkBlendFactor srcColorBlendFactor; - VkBlendFactor dstColorBlendFactor; - VkBlendOp colorBlendOp; - VkBlendFactor srcAlphaBlendFactor; - VkBlendFactor dstAlphaBlendFactor; - VkBlendOp alphaBlendOp; - VkColorComponentFlags colorWriteMask; -} VkPipelineColorBlendAttachmentState; -typedef struct VkPipelineColorBlendStateCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineColorBlendStateCreateFlags flags; - VkBool32 logicOpEnable; - VkLogicOp logicOp; - uint32_t attachmentCount; - const VkPipelineColorBlendAttachmentState * pAttachments; - float blendConstants [4]; -} VkPipelineColorBlendStateCreateInfo; -typedef struct VkPipelineDynamicStateCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineDynamicStateCreateFlags flags; - uint32_t dynamicStateCount; - const VkDynamicState * pDynamicStates; -} VkPipelineDynamicStateCreateInfo; -typedef struct VkPipelineDepthStencilStateCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineDepthStencilStateCreateFlags flags; - VkBool32 depthTestEnable; - VkBool32 depthWriteEnable; - VkCompareOp depthCompareOp; - VkBool32 depthBoundsTestEnable; - VkBool32 stencilTestEnable; - VkStencilOpState front; - VkStencilOpState back; - float minDepthBounds; - float maxDepthBounds; -} VkPipelineDepthStencilStateCreateInfo; -typedef struct VkGraphicsPipelineCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineCreateFlags flags; - uint32_t stageCount; - const VkPipelineShaderStageCreateInfo * pStages; - const VkPipelineVertexInputStateCreateInfo * pVertexInputState; - const VkPipelineInputAssemblyStateCreateInfo * pInputAssemblyState; - const VkPipelineTessellationStateCreateInfo * pTessellationState; - const VkPipelineViewportStateCreateInfo * pViewportState; - const VkPipelineRasterizationStateCreateInfo * pRasterizationState; - const VkPipelineMultisampleStateCreateInfo * pMultisampleState; - const VkPipelineDepthStencilStateCreateInfo * pDepthStencilState; - const VkPipelineColorBlendStateCreateInfo * pColorBlendState; - const VkPipelineDynamicStateCreateInfo * pDynamicState; - VkPipelineLayout layout; - VkRenderPass renderPass; - uint32_t subpass; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; -} VkGraphicsPipelineCreateInfo; -typedef struct VkPipelineCacheCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineCacheCreateFlags flags; - size_t initialDataSize; - const void * pInitialData; -} VkPipelineCacheCreateInfo; -typedef struct VkPushConstantRange { - VkShaderStageFlags stageFlags; - uint32_t offset; - uint32_t size; -} VkPushConstantRange; -typedef struct VkPipelineLayoutCreateInfo { - VkStructureType sType; - const void * pNext; - VkPipelineLayoutCreateFlags flags; - uint32_t setLayoutCount; - const VkDescriptorSetLayout * pSetLayouts; - uint32_t pushConstantRangeCount; - const VkPushConstantRange * pPushConstantRanges; -} VkPipelineLayoutCreateInfo; -typedef struct VkSamplerCreateInfo { - VkStructureType sType; - const void * pNext; - VkSamplerCreateFlags flags; - VkFilter magFilter; - VkFilter minFilter; - VkSamplerMipmapMode mipmapMode; - VkSamplerAddressMode addressModeU; - VkSamplerAddressMode addressModeV; - VkSamplerAddressMode addressModeW; - float mipLodBias; - VkBool32 anisotropyEnable; - float maxAnisotropy; - VkBool32 compareEnable; - VkCompareOp compareOp; - float minLod; - float maxLod; - VkBorderColor borderColor; - VkBool32 unnormalizedCoordinates; -} VkSamplerCreateInfo; -typedef struct VkCommandPoolCreateInfo { - VkStructureType sType; - const void * pNext; - VkCommandPoolCreateFlags flags; - uint32_t queueFamilyIndex; -} VkCommandPoolCreateInfo; -typedef struct VkCommandBufferInheritanceInfo { - VkStructureType sType; - const void * pNext; - VkRenderPass renderPass; - uint32_t subpass; - VkFramebuffer framebuffer; - VkBool32 occlusionQueryEnable; - VkQueryControlFlags queryFlags; - VkQueryPipelineStatisticFlags pipelineStatistics; -} VkCommandBufferInheritanceInfo; -typedef struct VkCommandBufferBeginInfo { - VkStructureType sType; - const void * pNext; - VkCommandBufferUsageFlags flags; - const VkCommandBufferInheritanceInfo * pInheritanceInfo; -} VkCommandBufferBeginInfo; -typedef struct VkRenderPassBeginInfo { - VkStructureType sType; - const void * pNext; - VkRenderPass renderPass; - VkFramebuffer framebuffer; - VkRect2D renderArea; - uint32_t clearValueCount; - const VkClearValue * pClearValues; -} VkRenderPassBeginInfo; -typedef struct VkClearAttachment { - VkImageAspectFlags aspectMask; - uint32_t colorAttachment; - VkClearValue clearValue; -} VkClearAttachment; -typedef struct VkAttachmentDescription { - VkAttachmentDescriptionFlags flags; - VkFormat format; - VkSampleCountFlagBits samples; - VkAttachmentLoadOp loadOp; - VkAttachmentStoreOp storeOp; - VkAttachmentLoadOp stencilLoadOp; - VkAttachmentStoreOp stencilStoreOp; - VkImageLayout initialLayout; - VkImageLayout finalLayout; -} VkAttachmentDescription; -typedef struct VkSubpassDescription { - VkSubpassDescriptionFlags flags; - VkPipelineBindPoint pipelineBindPoint; - uint32_t inputAttachmentCount; - const VkAttachmentReference * pInputAttachments; - uint32_t colorAttachmentCount; - const VkAttachmentReference * pColorAttachments; - const VkAttachmentReference * pResolveAttachments; - const VkAttachmentReference * pDepthStencilAttachment; - uint32_t preserveAttachmentCount; - const uint32_t * pPreserveAttachments; -} VkSubpassDescription; -typedef struct VkSubpassDependency { - uint32_t srcSubpass; - uint32_t dstSubpass; - VkPipelineStageFlags srcStageMask; - VkPipelineStageFlags dstStageMask; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkDependencyFlags dependencyFlags; -} VkSubpassDependency; -typedef struct VkRenderPassCreateInfo { - VkStructureType sType; - const void * pNext; - VkRenderPassCreateFlags flags; - uint32_t attachmentCount; - const VkAttachmentDescription * pAttachments; - uint32_t subpassCount; - const VkSubpassDescription * pSubpasses; - uint32_t dependencyCount; - const VkSubpassDependency * pDependencies; -} VkRenderPassCreateInfo; -typedef struct VkEventCreateInfo { - VkStructureType sType; - const void * pNext; - VkEventCreateFlags flags; -} VkEventCreateInfo; -typedef struct VkFenceCreateInfo { - VkStructureType sType; - const void * pNext; - VkFenceCreateFlags flags; -} VkFenceCreateInfo; -typedef struct VkPhysicalDeviceFeatures { - VkBool32 robustBufferAccess; - VkBool32 fullDrawIndexUint32; - VkBool32 imageCubeArray; - VkBool32 independentBlend; - VkBool32 geometryShader; - VkBool32 tessellationShader; - VkBool32 sampleRateShading; - VkBool32 dualSrcBlend; - VkBool32 logicOp; - VkBool32 multiDrawIndirect; - VkBool32 drawIndirectFirstInstance; - VkBool32 depthClamp; - VkBool32 depthBiasClamp; - VkBool32 fillModeNonSolid; - VkBool32 depthBounds; - VkBool32 wideLines; - VkBool32 largePoints; - VkBool32 alphaToOne; - VkBool32 multiViewport; - VkBool32 samplerAnisotropy; - VkBool32 textureCompressionETC2; - VkBool32 textureCompressionASTC_LDR; - VkBool32 textureCompressionBC; - VkBool32 occlusionQueryPrecise; - VkBool32 pipelineStatisticsQuery; - VkBool32 vertexPipelineStoresAndAtomics; - VkBool32 fragmentStoresAndAtomics; - VkBool32 shaderTessellationAndGeometryPointSize; - VkBool32 shaderImageGatherExtended; - VkBool32 shaderStorageImageExtendedFormats; - VkBool32 shaderStorageImageMultisample; - VkBool32 shaderStorageImageReadWithoutFormat; - VkBool32 shaderStorageImageWriteWithoutFormat; - VkBool32 shaderUniformBufferArrayDynamicIndexing; - VkBool32 shaderSampledImageArrayDynamicIndexing; - VkBool32 shaderStorageBufferArrayDynamicIndexing; - VkBool32 shaderStorageImageArrayDynamicIndexing; - VkBool32 shaderClipDistance; - VkBool32 shaderCullDistance; - VkBool32 shaderFloat64; - VkBool32 shaderInt64; - VkBool32 shaderInt16; - VkBool32 shaderResourceResidency; - VkBool32 shaderResourceMinLod; - VkBool32 sparseBinding; - VkBool32 sparseResidencyBuffer; - VkBool32 sparseResidencyImage2D; - VkBool32 sparseResidencyImage3D; - VkBool32 sparseResidency2Samples; - VkBool32 sparseResidency4Samples; - VkBool32 sparseResidency8Samples; - VkBool32 sparseResidency16Samples; - VkBool32 sparseResidencyAliased; - VkBool32 variableMultisampleRate; - VkBool32 inheritedQueries; -} VkPhysicalDeviceFeatures; -typedef struct VkPhysicalDeviceSparseProperties { - VkBool32 residencyStandard2DBlockShape; - VkBool32 residencyStandard2DMultisampleBlockShape; - VkBool32 residencyStandard3DBlockShape; - VkBool32 residencyAlignedMipSize; - VkBool32 residencyNonResidentStrict; -} VkPhysicalDeviceSparseProperties; -typedef struct VkPhysicalDeviceLimits { - uint32_t maxImageDimension1D; - uint32_t maxImageDimension2D; - uint32_t maxImageDimension3D; - uint32_t maxImageDimensionCube; - uint32_t maxImageArrayLayers; - uint32_t maxTexelBufferElements; - uint32_t maxUniformBufferRange; - uint32_t maxStorageBufferRange; - uint32_t maxPushConstantsSize; - uint32_t maxMemoryAllocationCount; - uint32_t maxSamplerAllocationCount; - VkDeviceSize bufferImageGranularity; - VkDeviceSize sparseAddressSpaceSize; - uint32_t maxBoundDescriptorSets; - uint32_t maxPerStageDescriptorSamplers; - uint32_t maxPerStageDescriptorUniformBuffers; - uint32_t maxPerStageDescriptorStorageBuffers; - uint32_t maxPerStageDescriptorSampledImages; - uint32_t maxPerStageDescriptorStorageImages; - uint32_t maxPerStageDescriptorInputAttachments; - uint32_t maxPerStageResources; - uint32_t maxDescriptorSetSamplers; - uint32_t maxDescriptorSetUniformBuffers; - uint32_t maxDescriptorSetUniformBuffersDynamic; - uint32_t maxDescriptorSetStorageBuffers; - uint32_t maxDescriptorSetStorageBuffersDynamic; - uint32_t maxDescriptorSetSampledImages; - uint32_t maxDescriptorSetStorageImages; - uint32_t maxDescriptorSetInputAttachments; - uint32_t maxVertexInputAttributes; - uint32_t maxVertexInputBindings; - uint32_t maxVertexInputAttributeOffset; - uint32_t maxVertexInputBindingStride; - uint32_t maxVertexOutputComponents; - uint32_t maxTessellationGenerationLevel; - uint32_t maxTessellationPatchSize; - uint32_t maxTessellationControlPerVertexInputComponents; - uint32_t maxTessellationControlPerVertexOutputComponents; - uint32_t maxTessellationControlPerPatchOutputComponents; - uint32_t maxTessellationControlTotalOutputComponents; - uint32_t maxTessellationEvaluationInputComponents; - uint32_t maxTessellationEvaluationOutputComponents; - uint32_t maxGeometryShaderInvocations; - uint32_t maxGeometryInputComponents; - uint32_t maxGeometryOutputComponents; - uint32_t maxGeometryOutputVertices; - uint32_t maxGeometryTotalOutputComponents; - uint32_t maxFragmentInputComponents; - uint32_t maxFragmentOutputAttachments; - uint32_t maxFragmentDualSrcAttachments; - uint32_t maxFragmentCombinedOutputResources; - uint32_t maxComputeSharedMemorySize; - uint32_t maxComputeWorkGroupCount [3]; - uint32_t maxComputeWorkGroupInvocations; - uint32_t maxComputeWorkGroupSize [3]; - uint32_t subPixelPrecisionBits; - uint32_t subTexelPrecisionBits; - uint32_t mipmapPrecisionBits; - uint32_t maxDrawIndexedIndexValue; - uint32_t maxDrawIndirectCount; - float maxSamplerLodBias; - float maxSamplerAnisotropy; - uint32_t maxViewports; - uint32_t maxViewportDimensions [2]; - float viewportBoundsRange [2]; - uint32_t viewportSubPixelBits; - size_t minMemoryMapAlignment; - VkDeviceSize minTexelBufferOffsetAlignment; - VkDeviceSize minUniformBufferOffsetAlignment; - VkDeviceSize minStorageBufferOffsetAlignment; - int32_t minTexelOffset; - uint32_t maxTexelOffset; - int32_t minTexelGatherOffset; - uint32_t maxTexelGatherOffset; - float minInterpolationOffset; - float maxInterpolationOffset; - uint32_t subPixelInterpolationOffsetBits; - uint32_t maxFramebufferWidth; - uint32_t maxFramebufferHeight; - uint32_t maxFramebufferLayers; - VkSampleCountFlags framebufferColorSampleCounts; - VkSampleCountFlags framebufferDepthSampleCounts; - VkSampleCountFlags framebufferStencilSampleCounts; - VkSampleCountFlags framebufferNoAttachmentsSampleCounts; - uint32_t maxColorAttachments; - VkSampleCountFlags sampledImageColorSampleCounts; - VkSampleCountFlags sampledImageIntegerSampleCounts; - VkSampleCountFlags sampledImageDepthSampleCounts; - VkSampleCountFlags sampledImageStencilSampleCounts; - VkSampleCountFlags storageImageSampleCounts; - uint32_t maxSampleMaskWords; - VkBool32 timestampComputeAndGraphics; - float timestampPeriod; - uint32_t maxClipDistances; - uint32_t maxCullDistances; - uint32_t maxCombinedClipAndCullDistances; - uint32_t discreteQueuePriorities; - float pointSizeRange [2]; - float lineWidthRange [2]; - float pointSizeGranularity; - float lineWidthGranularity; - VkBool32 strictLines; - VkBool32 standardSampleLocations; - VkDeviceSize optimalBufferCopyOffsetAlignment; - VkDeviceSize optimalBufferCopyRowPitchAlignment; - VkDeviceSize nonCoherentAtomSize; -} VkPhysicalDeviceLimits; -typedef struct VkSemaphoreCreateInfo { - VkStructureType sType; - const void * pNext; - VkSemaphoreCreateFlags flags; -} VkSemaphoreCreateInfo; -typedef struct VkQueryPoolCreateInfo { - VkStructureType sType; - const void * pNext; - VkQueryPoolCreateFlags flags; - VkQueryType queryType; - uint32_t queryCount; - VkQueryPipelineStatisticFlags pipelineStatistics; -} VkQueryPoolCreateInfo; -typedef struct VkFramebufferCreateInfo { - VkStructureType sType; - const void * pNext; - VkFramebufferCreateFlags flags; - VkRenderPass renderPass; - uint32_t attachmentCount; - const VkImageView * pAttachments; - uint32_t width; - uint32_t height; - uint32_t layers; -} VkFramebufferCreateInfo; -typedef struct VkSubmitInfo { - VkStructureType sType; - const void * pNext; - uint32_t waitSemaphoreCount; - const VkSemaphore * pWaitSemaphores; - const VkPipelineStageFlags * pWaitDstStageMask; - uint32_t commandBufferCount; - const VkCommandBuffer * pCommandBuffers; - uint32_t signalSemaphoreCount; - const VkSemaphore * pSignalSemaphores; -} VkSubmitInfo; -typedef struct VkSurfaceCapabilitiesKHR { - uint32_t minImageCount; - uint32_t maxImageCount; - VkExtent2D currentExtent; - VkExtent2D minImageExtent; - VkExtent2D maxImageExtent; - uint32_t maxImageArrayLayers; - VkSurfaceTransformFlagsKHR supportedTransforms; - VkSurfaceTransformFlagBitsKHR currentTransform; - VkCompositeAlphaFlagsKHR supportedCompositeAlpha; - VkImageUsageFlags supportedUsageFlags; -} VkSurfaceCapabilitiesKHR; -typedef struct VkSwapchainCreateInfoKHR { - VkStructureType sType; - const void * pNext; - VkSwapchainCreateFlagsKHR flags; - VkSurfaceKHR surface; - uint32_t minImageCount; - VkFormat imageFormat; - VkColorSpaceKHR imageColorSpace; - VkExtent2D imageExtent; - uint32_t imageArrayLayers; - VkImageUsageFlags imageUsage; - VkSharingMode imageSharingMode; - uint32_t queueFamilyIndexCount; - const uint32_t * pQueueFamilyIndices; - VkSurfaceTransformFlagBitsKHR preTransform; - VkCompositeAlphaFlagBitsKHR compositeAlpha; - VkPresentModeKHR presentMode; - VkBool32 clipped; - VkSwapchainKHR oldSwapchain; -} VkSwapchainCreateInfoKHR; -typedef struct VkDebugReportCallbackCreateInfoEXT { - VkStructureType sType; - const void * pNext; - VkDebugReportFlagsEXT flags; - PFN_vkDebugReportCallbackEXT pfnCallback; - void * pUserData; -} VkDebugReportCallbackCreateInfoEXT; -typedef struct VkPhysicalDeviceFeatures2 { - VkStructureType sType; - void * pNext; - VkPhysicalDeviceFeatures features; -} VkPhysicalDeviceFeatures2; -typedef struct VkFormatProperties2 { - VkStructureType sType; - void * pNext; - VkFormatProperties formatProperties; -} VkFormatProperties2; -typedef struct VkImageFormatProperties2 { - VkStructureType sType; - void * pNext; - VkImageFormatProperties imageFormatProperties; -} VkImageFormatProperties2; -typedef struct VkPhysicalDeviceImageFormatInfo2 { - VkStructureType sType; - const void * pNext; - VkFormat format; - VkImageType type; - VkImageTiling tiling; - VkImageUsageFlags usage; - VkImageCreateFlags flags; -} VkPhysicalDeviceImageFormatInfo2; -typedef struct VkQueueFamilyProperties2 { - VkStructureType sType; - void * pNext; - VkQueueFamilyProperties queueFamilyProperties; -} VkQueueFamilyProperties2; -typedef struct VkSparseImageFormatProperties2 { - VkStructureType sType; - void * pNext; - VkSparseImageFormatProperties properties; -} VkSparseImageFormatProperties2; -typedef struct VkPhysicalDeviceSparseImageFormatInfo2 { - VkStructureType sType; - const void * pNext; - VkFormat format; - VkImageType type; - VkSampleCountFlagBits samples; - VkImageUsageFlags usage; - VkImageTiling tiling; -} VkPhysicalDeviceSparseImageFormatInfo2; -typedef struct VkPhysicalDeviceVariablePointersFeatures { - VkStructureType sType; - void * pNext; - VkBool32 variablePointersStorageBuffer; - VkBool32 variablePointers; -} VkPhysicalDeviceVariablePointersFeatures; -typedef struct VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointerFeatures; -typedef struct VkExternalMemoryProperties { - VkExternalMemoryFeatureFlags externalMemoryFeatures; - VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes; - VkExternalMemoryHandleTypeFlags compatibleHandleTypes; -} VkExternalMemoryProperties; -typedef struct VkExternalImageFormatProperties { - VkStructureType sType; - void * pNext; - VkExternalMemoryProperties externalMemoryProperties; -} VkExternalImageFormatProperties; -typedef struct VkPhysicalDeviceExternalBufferInfo { - VkStructureType sType; - const void * pNext; - VkBufferCreateFlags flags; - VkBufferUsageFlags usage; - VkExternalMemoryHandleTypeFlagBits handleType; -} VkPhysicalDeviceExternalBufferInfo; -typedef struct VkExternalBufferProperties { - VkStructureType sType; - void * pNext; - VkExternalMemoryProperties externalMemoryProperties; -} VkExternalBufferProperties; -typedef struct VkPhysicalDeviceIDProperties { - VkStructureType sType; - void * pNext; - uint8_t deviceUUID [ VK_UUID_SIZE ]; - uint8_t driverUUID [ VK_UUID_SIZE ]; - uint8_t deviceLUID [ VK_LUID_SIZE ]; - uint32_t deviceNodeMask; - VkBool32 deviceLUIDValid; -} VkPhysicalDeviceIDProperties; -typedef struct VkExternalMemoryImageCreateInfo { - VkStructureType sType; - const void * pNext; - VkExternalMemoryHandleTypeFlags handleTypes; -} VkExternalMemoryImageCreateInfo; -typedef struct VkExternalMemoryBufferCreateInfo { - VkStructureType sType; - const void * pNext; - VkExternalMemoryHandleTypeFlags handleTypes; -} VkExternalMemoryBufferCreateInfo; -typedef struct VkExportMemoryAllocateInfo { - VkStructureType sType; - const void * pNext; - VkExternalMemoryHandleTypeFlags handleTypes; -} VkExportMemoryAllocateInfo; -typedef struct VkExternalSemaphoreProperties { - VkStructureType sType; - void * pNext; - VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes; - VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes; - VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures; -} VkExternalSemaphoreProperties; -typedef struct VkExportSemaphoreCreateInfo { - VkStructureType sType; - const void * pNext; - VkExternalSemaphoreHandleTypeFlags handleTypes; -} VkExportSemaphoreCreateInfo; -typedef struct VkExternalFenceProperties { - VkStructureType sType; - void * pNext; - VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes; - VkExternalFenceHandleTypeFlags compatibleHandleTypes; - VkExternalFenceFeatureFlags externalFenceFeatures; -} VkExternalFenceProperties; -typedef struct VkExportFenceCreateInfo { - VkStructureType sType; - const void * pNext; - VkExternalFenceHandleTypeFlags handleTypes; -} VkExportFenceCreateInfo; -typedef struct VkPhysicalDeviceMultiviewFeatures { - VkStructureType sType; - void * pNext; - VkBool32 multiview; - VkBool32 multiviewGeometryShader; - VkBool32 multiviewTessellationShader; -} VkPhysicalDeviceMultiviewFeatures; -typedef struct VkPhysicalDeviceGroupProperties { - VkStructureType sType; - void * pNext; - uint32_t physicalDeviceCount; - VkPhysicalDevice physicalDevices [ VK_MAX_DEVICE_GROUP_SIZE ]; - VkBool32 subsetAllocation; -} VkPhysicalDeviceGroupProperties; -typedef struct VkMemoryAllocateFlagsInfo { - VkStructureType sType; - const void * pNext; - VkMemoryAllocateFlags flags; - uint32_t deviceMask; -} VkMemoryAllocateFlagsInfo; -typedef struct VkBindBufferMemoryInfo { - VkStructureType sType; - const void * pNext; - VkBuffer buffer; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; -} VkBindBufferMemoryInfo; -typedef struct VkBindImageMemoryInfo { - VkStructureType sType; - const void * pNext; - VkImage image; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; -} VkBindImageMemoryInfo; -typedef struct VkDeviceGroupPresentCapabilitiesKHR { - VkStructureType sType; - const void * pNext; - uint32_t presentMask [ VK_MAX_DEVICE_GROUP_SIZE ]; - VkDeviceGroupPresentModeFlagsKHR modes; -} VkDeviceGroupPresentCapabilitiesKHR; -typedef struct VkDeviceGroupSwapchainCreateInfoKHR { - VkStructureType sType; - const void * pNext; - VkDeviceGroupPresentModeFlagsKHR modes; -} VkDeviceGroupSwapchainCreateInfoKHR; -typedef struct VkDescriptorUpdateTemplateCreateInfo { - VkStructureType sType; - const void * pNext; - VkDescriptorUpdateTemplateCreateFlags flags; - uint32_t descriptorUpdateEntryCount; - const VkDescriptorUpdateTemplateEntry * pDescriptorUpdateEntries; - VkDescriptorUpdateTemplateType templateType; - VkDescriptorSetLayout descriptorSetLayout; - VkPipelineBindPoint pipelineBindPoint; - VkPipelineLayout pipelineLayout; - uint32_t set; -} VkDescriptorUpdateTemplateCreateInfo; -typedef struct VkInputAttachmentAspectReference { - uint32_t subpass; - uint32_t inputAttachmentIndex; - VkImageAspectFlags aspectMask; -} VkInputAttachmentAspectReference; -typedef struct VkRenderPassInputAttachmentAspectCreateInfo { - VkStructureType sType; - const void * pNext; - uint32_t aspectReferenceCount; - const VkInputAttachmentAspectReference * pAspectReferences; -} VkRenderPassInputAttachmentAspectCreateInfo; -typedef struct VkPhysicalDevice16BitStorageFeatures { - VkStructureType sType; - void * pNext; - VkBool32 storageBuffer16BitAccess; - VkBool32 uniformAndStorageBuffer16BitAccess; - VkBool32 storagePushConstant16; - VkBool32 storageInputOutput16; -} VkPhysicalDevice16BitStorageFeatures; -typedef struct VkPhysicalDeviceSubgroupProperties { - VkStructureType sType; - void * pNext; - uint32_t subgroupSize; - VkShaderStageFlags supportedStages; - VkSubgroupFeatureFlags supportedOperations; - VkBool32 quadOperationsInAllStages; -} VkPhysicalDeviceSubgroupProperties; -typedef struct VkMemoryRequirements2 { - VkStructureType sType; - void * pNext; - VkMemoryRequirements memoryRequirements; -} VkMemoryRequirements2; -typedef struct VkMemoryRequirements2KHR VkMemoryRequirements2KHR; -typedef struct VkSparseImageMemoryRequirements2 { - VkStructureType sType; - void * pNext; - VkSparseImageMemoryRequirements memoryRequirements; -} VkSparseImageMemoryRequirements2; -typedef struct VkMemoryDedicatedRequirements { - VkStructureType sType; - void * pNext; - VkBool32 prefersDedicatedAllocation; - VkBool32 requiresDedicatedAllocation; -} VkMemoryDedicatedRequirements; -typedef struct VkImageViewUsageCreateInfo { - VkStructureType sType; - const void * pNext; - VkImageUsageFlags usage; -} VkImageViewUsageCreateInfo; -typedef struct VkSamplerYcbcrConversionCreateInfo { - VkStructureType sType; - const void * pNext; - VkFormat format; - VkSamplerYcbcrModelConversion ycbcrModel; - VkSamplerYcbcrRange ycbcrRange; - VkComponentMapping components; - VkChromaLocation xChromaOffset; - VkChromaLocation yChromaOffset; - VkFilter chromaFilter; - VkBool32 forceExplicitReconstruction; -} VkSamplerYcbcrConversionCreateInfo; -typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures { - VkStructureType sType; - void * pNext; - VkBool32 samplerYcbcrConversion; -} VkPhysicalDeviceSamplerYcbcrConversionFeatures; -typedef struct VkProtectedSubmitInfo { - VkStructureType sType; - const void * pNext; - VkBool32 protectedSubmit; -} VkProtectedSubmitInfo; -typedef struct VkPhysicalDeviceProtectedMemoryFeatures { - VkStructureType sType; - void * pNext; - VkBool32 protectedMemory; -} VkPhysicalDeviceProtectedMemoryFeatures; -typedef struct VkPhysicalDeviceProtectedMemoryProperties { - VkStructureType sType; - void * pNext; - VkBool32 protectedNoFault; -} VkPhysicalDeviceProtectedMemoryProperties; -typedef struct VkDeviceQueueInfo2 { - VkStructureType sType; - const void * pNext; - VkDeviceQueueCreateFlags flags; - uint32_t queueFamilyIndex; - uint32_t queueIndex; -} VkDeviceQueueInfo2; -typedef struct VkPhysicalDeviceMaintenance3Properties { - VkStructureType sType; - void * pNext; - uint32_t maxPerSetDescriptors; - VkDeviceSize maxMemoryAllocationSize; -} VkPhysicalDeviceMaintenance3Properties; -typedef struct VkDescriptorSetLayoutSupport { - VkStructureType sType; - void * pNext; - VkBool32 supported; -} VkDescriptorSetLayoutSupport; -typedef struct VkPhysicalDeviceShaderDrawParametersFeatures { - VkStructureType sType; - void * pNext; - VkBool32 shaderDrawParameters; -} VkPhysicalDeviceShaderDrawParametersFeatures; -typedef struct VkPhysicalDeviceShaderDrawParameterFeatures VkPhysicalDeviceShaderDrawParameterFeatures; -typedef struct VkPhysicalDeviceProperties { - uint32_t apiVersion; - uint32_t driverVersion; - uint32_t vendorID; - uint32_t deviceID; - VkPhysicalDeviceType deviceType; - char deviceName [ VK_MAX_PHYSICAL_DEVICE_NAME_SIZE ]; - uint8_t pipelineCacheUUID [ VK_UUID_SIZE ]; - VkPhysicalDeviceLimits limits; - VkPhysicalDeviceSparseProperties sparseProperties; -} VkPhysicalDeviceProperties; -typedef struct VkDeviceCreateInfo { - VkStructureType sType; - const void * pNext; - VkDeviceCreateFlags flags; - uint32_t queueCreateInfoCount; - const VkDeviceQueueCreateInfo * pQueueCreateInfos; - uint32_t enabledLayerCount; - const char * const* ppEnabledLayerNames; - uint32_t enabledExtensionCount; - const char * const* ppEnabledExtensionNames; - const VkPhysicalDeviceFeatures * pEnabledFeatures; -} VkDeviceCreateInfo; -typedef struct VkPhysicalDeviceMemoryProperties { - uint32_t memoryTypeCount; - VkMemoryType memoryTypes [ VK_MAX_MEMORY_TYPES ]; - uint32_t memoryHeapCount; - VkMemoryHeap memoryHeaps [ VK_MAX_MEMORY_HEAPS ]; -} VkPhysicalDeviceMemoryProperties; -typedef struct VkPhysicalDeviceProperties2 { - VkStructureType sType; - void * pNext; - VkPhysicalDeviceProperties properties; -} VkPhysicalDeviceProperties2; -typedef struct VkPhysicalDeviceMemoryProperties2 { - VkStructureType sType; - void * pNext; - VkPhysicalDeviceMemoryProperties memoryProperties; -} VkPhysicalDeviceMemoryProperties2; - - -#define VK_VERSION_1_0 1 -GLAD_API_CALL int GLAD_VK_VERSION_1_0; -#define VK_VERSION_1_1 1 -GLAD_API_CALL int GLAD_VK_VERSION_1_1; -#define VK_EXT_debug_report 1 -GLAD_API_CALL int GLAD_VK_EXT_debug_report; -#define VK_KHR_surface 1 -GLAD_API_CALL int GLAD_VK_KHR_surface; -#define VK_KHR_swapchain 1 -GLAD_API_CALL int GLAD_VK_KHR_swapchain; - - -typedef VkResult (GLAD_API_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR * pAcquireInfo, uint32_t * pImageIndex); -typedef VkResult (GLAD_API_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t * pImageIndex); -typedef VkResult (GLAD_API_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo * pAllocateInfo, VkCommandBuffer * pCommandBuffers); -typedef VkResult (GLAD_API_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo * pAllocateInfo, VkDescriptorSet * pDescriptorSets); -typedef VkResult (GLAD_API_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo * pAllocateInfo, const VkAllocationCallbacks * pAllocator, VkDeviceMemory * pMemory); -typedef VkResult (GLAD_API_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo * pBeginInfo); -typedef VkResult (GLAD_API_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset); -typedef VkResult (GLAD_API_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo * pBindInfos); -typedef VkResult (GLAD_API_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset); -typedef VkResult (GLAD_API_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo * pBindInfos); -typedef void (GLAD_API_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags); -typedef void (GLAD_API_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo * pRenderPassBegin, VkSubpassContents contents); -typedef void (GLAD_API_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet * pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t * pDynamicOffsets); -typedef void (GLAD_API_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); -typedef void (GLAD_API_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); -typedef void (GLAD_API_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer * pBuffers, const VkDeviceSize * pOffsets); -typedef void (GLAD_API_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit * pRegions, VkFilter filter); -typedef void (GLAD_API_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment * pAttachments, uint32_t rectCount, const VkClearRect * pRects); -typedef void (GLAD_API_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue * pColor, uint32_t rangeCount, const VkImageSubresourceRange * pRanges); -typedef void (GLAD_API_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue * pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange * pRanges); -typedef void (GLAD_API_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy * pRegions); -typedef void (GLAD_API_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy * pRegions); -typedef void (GLAD_API_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy * pRegions); -typedef void (GLAD_API_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy * pRegions); -typedef void (GLAD_API_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); -typedef void (GLAD_API_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); -typedef void (GLAD_API_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); -typedef void (GLAD_API_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset); -typedef void (GLAD_API_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); -typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance); -typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); -typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); -typedef void (GLAD_API_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query); -typedef void (GLAD_API_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer); -typedef void (GLAD_API_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer * pCommandBuffers); -typedef void (GLAD_API_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data); -typedef void (GLAD_API_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents); -typedef void (GLAD_API_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier * pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier * pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier * pImageMemoryBarriers); -typedef void (GLAD_API_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void * pValues); -typedef void (GLAD_API_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); -typedef void (GLAD_API_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); -typedef void (GLAD_API_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve * pRegions); -typedef void (GLAD_API_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants [4]); -typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor); -typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds); -typedef void (GLAD_API_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask); -typedef void (GLAD_API_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); -typedef void (GLAD_API_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth); -typedef void (GLAD_API_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D * pScissors); -typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask); -typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference); -typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask); -typedef void (GLAD_API_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport * pViewports); -typedef void (GLAD_API_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void * pData); -typedef void (GLAD_API_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent * pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier * pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier * pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier * pImageMemoryBarriers); -typedef void (GLAD_API_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkBuffer * pBuffer); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkBufferView * pView); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkCommandPool * pCommandPool); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo * pCreateInfos, const VkAllocationCallbacks * pAllocator, VkPipeline * pPipelines); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDebugReportCallbackEXT * pCallback); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorPool * pDescriptorPool); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorSetLayout * pSetLayout); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDevice * pDevice); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkEvent * pEvent); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkFence * pFence); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkFramebuffer * pFramebuffer); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo * pCreateInfos, const VkAllocationCallbacks * pAllocator, VkPipeline * pPipelines); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkImage * pImage); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkImageView * pView); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkInstance * pInstance); -typedef VkResult (GLAD_API_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkPipelineCache * pPipelineCache); -typedef VkResult (GLAD_API_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkPipelineLayout * pPipelineLayout); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkQueryPool * pQueryPool); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkRenderPass * pRenderPass); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSampler * pSampler); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSamplerYcbcrConversion * pYcbcrConversion); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSemaphore * pSemaphore); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkShaderModule * pShaderModule); -typedef VkResult (GLAD_API_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSwapchainKHR * pSwapchain); -typedef void (GLAD_API_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char * pLayerPrefix, const char * pMessage); -typedef void (GLAD_API_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks * pAllocator); -typedef VkResult (GLAD_API_PTR *PFN_vkDeviceWaitIdle)(VkDevice device); -typedef VkResult (GLAD_API_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer); -typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char * pLayerName, uint32_t * pPropertyCount, VkExtensionProperties * pProperties); -typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t * pPropertyCount, VkLayerProperties * pProperties); -typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char * pLayerName, uint32_t * pPropertyCount, VkExtensionProperties * pProperties); -typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t * pPropertyCount, VkLayerProperties * pProperties); -typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t * pApiVersion); -typedef VkResult (GLAD_API_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t * pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties); -typedef VkResult (GLAD_API_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t * pPhysicalDeviceCount, VkPhysicalDevice * pPhysicalDevices); -typedef VkResult (GLAD_API_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange * pMemoryRanges); -typedef void (GLAD_API_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer * pCommandBuffers); -typedef VkResult (GLAD_API_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet * pDescriptorSets); -typedef void (GLAD_API_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks * pAllocator); -typedef void (GLAD_API_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements * pMemoryRequirements); -typedef void (GLAD_API_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2 * pInfo, VkMemoryRequirements2 * pMemoryRequirements); -typedef void (GLAD_API_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo * pCreateInfo, VkDescriptorSetLayoutSupport * pSupport); -typedef void (GLAD_API_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags * pPeerMemoryFeatures); -typedef VkResult (GLAD_API_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities); -typedef VkResult (GLAD_API_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR * pModes); -typedef void (GLAD_API_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize * pCommittedMemoryInBytes); -typedef PFN_vkVoidFunction (GLAD_API_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char * pName); -typedef void (GLAD_API_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue * pQueue); -typedef void (GLAD_API_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2 * pQueueInfo, VkQueue * pQueue); -typedef VkResult (GLAD_API_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event); -typedef VkResult (GLAD_API_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence); -typedef void (GLAD_API_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements * pMemoryRequirements); -typedef void (GLAD_API_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2 * pInfo, VkMemoryRequirements2 * pMemoryRequirements); -typedef void (GLAD_API_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t * pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements * pSparseMemoryRequirements); -typedef void (GLAD_API_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2 * pInfo, uint32_t * pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements); -typedef void (GLAD_API_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource * pSubresource, VkSubresourceLayout * pLayout); -typedef PFN_vkVoidFunction (GLAD_API_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char * pName); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo, VkExternalBufferProperties * pExternalBufferProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo, VkExternalFenceProperties * pExternalFenceProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo, VkExternalSemaphoreProperties * pExternalSemaphoreProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures * pFeatures); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2 * pFeatures); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties * pFormatProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2 * pFormatProperties); -typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties * pImageFormatProperties); -typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo, VkImageFormatProperties2 * pImageFormatProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties * pMemoryProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2 * pMemoryProperties); -typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t * pRectCount, VkRect2D * pRects); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties * pProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 * pProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t * pQueueFamilyPropertyCount, VkQueueFamilyProperties * pQueueFamilyProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t * pQueueFamilyPropertyCount, VkQueueFamilyProperties2 * pQueueFamilyProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t * pPropertyCount, VkSparseImageFormatProperties * pProperties); -typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo, uint32_t * pPropertyCount, VkSparseImageFormatProperties2 * pProperties); -typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR * pSurfaceCapabilities); -typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t * pSurfaceFormatCount, VkSurfaceFormatKHR * pSurfaceFormats); -typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t * pPresentModeCount, VkPresentModeKHR * pPresentModes); -typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32 * pSupported); -typedef VkResult (GLAD_API_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t * pDataSize, void * pData); -typedef VkResult (GLAD_API_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void * pData, VkDeviceSize stride, VkQueryResultFlags flags); -typedef void (GLAD_API_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D * pGranularity); -typedef VkResult (GLAD_API_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t * pSwapchainImageCount, VkImage * pSwapchainImages); -typedef VkResult (GLAD_API_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange * pMemoryRanges); -typedef VkResult (GLAD_API_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void ** ppData); -typedef VkResult (GLAD_API_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache * pSrcCaches); -typedef VkResult (GLAD_API_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo * pBindInfo, VkFence fence); -typedef VkResult (GLAD_API_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR * pPresentInfo); -typedef VkResult (GLAD_API_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo * pSubmits, VkFence fence); -typedef VkResult (GLAD_API_PTR *PFN_vkQueueWaitIdle)(VkQueue queue); -typedef VkResult (GLAD_API_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags); -typedef VkResult (GLAD_API_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags); -typedef VkResult (GLAD_API_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags); -typedef VkResult (GLAD_API_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event); -typedef VkResult (GLAD_API_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence * pFences); -typedef VkResult (GLAD_API_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event); -typedef void (GLAD_API_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); -typedef void (GLAD_API_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory); -typedef void (GLAD_API_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void * pData); -typedef void (GLAD_API_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet * pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet * pDescriptorCopies); -typedef VkResult (GLAD_API_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence * pFences, VkBool32 waitAll, uint64_t timeout); - -GLAD_API_CALL PFN_vkAcquireNextImage2KHR glad_vkAcquireNextImage2KHR; -#define vkAcquireNextImage2KHR glad_vkAcquireNextImage2KHR -GLAD_API_CALL PFN_vkAcquireNextImageKHR glad_vkAcquireNextImageKHR; -#define vkAcquireNextImageKHR glad_vkAcquireNextImageKHR -GLAD_API_CALL PFN_vkAllocateCommandBuffers glad_vkAllocateCommandBuffers; -#define vkAllocateCommandBuffers glad_vkAllocateCommandBuffers -GLAD_API_CALL PFN_vkAllocateDescriptorSets glad_vkAllocateDescriptorSets; -#define vkAllocateDescriptorSets glad_vkAllocateDescriptorSets -GLAD_API_CALL PFN_vkAllocateMemory glad_vkAllocateMemory; -#define vkAllocateMemory glad_vkAllocateMemory -GLAD_API_CALL PFN_vkBeginCommandBuffer glad_vkBeginCommandBuffer; -#define vkBeginCommandBuffer glad_vkBeginCommandBuffer -GLAD_API_CALL PFN_vkBindBufferMemory glad_vkBindBufferMemory; -#define vkBindBufferMemory glad_vkBindBufferMemory -GLAD_API_CALL PFN_vkBindBufferMemory2 glad_vkBindBufferMemory2; -#define vkBindBufferMemory2 glad_vkBindBufferMemory2 -GLAD_API_CALL PFN_vkBindImageMemory glad_vkBindImageMemory; -#define vkBindImageMemory glad_vkBindImageMemory -GLAD_API_CALL PFN_vkBindImageMemory2 glad_vkBindImageMemory2; -#define vkBindImageMemory2 glad_vkBindImageMemory2 -GLAD_API_CALL PFN_vkCmdBeginQuery glad_vkCmdBeginQuery; -#define vkCmdBeginQuery glad_vkCmdBeginQuery -GLAD_API_CALL PFN_vkCmdBeginRenderPass glad_vkCmdBeginRenderPass; -#define vkCmdBeginRenderPass glad_vkCmdBeginRenderPass -GLAD_API_CALL PFN_vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets; -#define vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets -GLAD_API_CALL PFN_vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer; -#define vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer -GLAD_API_CALL PFN_vkCmdBindPipeline glad_vkCmdBindPipeline; -#define vkCmdBindPipeline glad_vkCmdBindPipeline -GLAD_API_CALL PFN_vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers; -#define vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers -GLAD_API_CALL PFN_vkCmdBlitImage glad_vkCmdBlitImage; -#define vkCmdBlitImage glad_vkCmdBlitImage -GLAD_API_CALL PFN_vkCmdClearAttachments glad_vkCmdClearAttachments; -#define vkCmdClearAttachments glad_vkCmdClearAttachments -GLAD_API_CALL PFN_vkCmdClearColorImage glad_vkCmdClearColorImage; -#define vkCmdClearColorImage glad_vkCmdClearColorImage -GLAD_API_CALL PFN_vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage; -#define vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage -GLAD_API_CALL PFN_vkCmdCopyBuffer glad_vkCmdCopyBuffer; -#define vkCmdCopyBuffer glad_vkCmdCopyBuffer -GLAD_API_CALL PFN_vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage; -#define vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage -GLAD_API_CALL PFN_vkCmdCopyImage glad_vkCmdCopyImage; -#define vkCmdCopyImage glad_vkCmdCopyImage -GLAD_API_CALL PFN_vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer; -#define vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer -GLAD_API_CALL PFN_vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults; -#define vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults -GLAD_API_CALL PFN_vkCmdDispatch glad_vkCmdDispatch; -#define vkCmdDispatch glad_vkCmdDispatch -GLAD_API_CALL PFN_vkCmdDispatchBase glad_vkCmdDispatchBase; -#define vkCmdDispatchBase glad_vkCmdDispatchBase -GLAD_API_CALL PFN_vkCmdDispatchIndirect glad_vkCmdDispatchIndirect; -#define vkCmdDispatchIndirect glad_vkCmdDispatchIndirect -GLAD_API_CALL PFN_vkCmdDraw glad_vkCmdDraw; -#define vkCmdDraw glad_vkCmdDraw -GLAD_API_CALL PFN_vkCmdDrawIndexed glad_vkCmdDrawIndexed; -#define vkCmdDrawIndexed glad_vkCmdDrawIndexed -GLAD_API_CALL PFN_vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect; -#define vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect -GLAD_API_CALL PFN_vkCmdDrawIndirect glad_vkCmdDrawIndirect; -#define vkCmdDrawIndirect glad_vkCmdDrawIndirect -GLAD_API_CALL PFN_vkCmdEndQuery glad_vkCmdEndQuery; -#define vkCmdEndQuery glad_vkCmdEndQuery -GLAD_API_CALL PFN_vkCmdEndRenderPass glad_vkCmdEndRenderPass; -#define vkCmdEndRenderPass glad_vkCmdEndRenderPass -GLAD_API_CALL PFN_vkCmdExecuteCommands glad_vkCmdExecuteCommands; -#define vkCmdExecuteCommands glad_vkCmdExecuteCommands -GLAD_API_CALL PFN_vkCmdFillBuffer glad_vkCmdFillBuffer; -#define vkCmdFillBuffer glad_vkCmdFillBuffer -GLAD_API_CALL PFN_vkCmdNextSubpass glad_vkCmdNextSubpass; -#define vkCmdNextSubpass glad_vkCmdNextSubpass -GLAD_API_CALL PFN_vkCmdPipelineBarrier glad_vkCmdPipelineBarrier; -#define vkCmdPipelineBarrier glad_vkCmdPipelineBarrier -GLAD_API_CALL PFN_vkCmdPushConstants glad_vkCmdPushConstants; -#define vkCmdPushConstants glad_vkCmdPushConstants -GLAD_API_CALL PFN_vkCmdResetEvent glad_vkCmdResetEvent; -#define vkCmdResetEvent glad_vkCmdResetEvent -GLAD_API_CALL PFN_vkCmdResetQueryPool glad_vkCmdResetQueryPool; -#define vkCmdResetQueryPool glad_vkCmdResetQueryPool -GLAD_API_CALL PFN_vkCmdResolveImage glad_vkCmdResolveImage; -#define vkCmdResolveImage glad_vkCmdResolveImage -GLAD_API_CALL PFN_vkCmdSetBlendConstants glad_vkCmdSetBlendConstants; -#define vkCmdSetBlendConstants glad_vkCmdSetBlendConstants -GLAD_API_CALL PFN_vkCmdSetDepthBias glad_vkCmdSetDepthBias; -#define vkCmdSetDepthBias glad_vkCmdSetDepthBias -GLAD_API_CALL PFN_vkCmdSetDepthBounds glad_vkCmdSetDepthBounds; -#define vkCmdSetDepthBounds glad_vkCmdSetDepthBounds -GLAD_API_CALL PFN_vkCmdSetDeviceMask glad_vkCmdSetDeviceMask; -#define vkCmdSetDeviceMask glad_vkCmdSetDeviceMask -GLAD_API_CALL PFN_vkCmdSetEvent glad_vkCmdSetEvent; -#define vkCmdSetEvent glad_vkCmdSetEvent -GLAD_API_CALL PFN_vkCmdSetLineWidth glad_vkCmdSetLineWidth; -#define vkCmdSetLineWidth glad_vkCmdSetLineWidth -GLAD_API_CALL PFN_vkCmdSetScissor glad_vkCmdSetScissor; -#define vkCmdSetScissor glad_vkCmdSetScissor -GLAD_API_CALL PFN_vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask; -#define vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask -GLAD_API_CALL PFN_vkCmdSetStencilReference glad_vkCmdSetStencilReference; -#define vkCmdSetStencilReference glad_vkCmdSetStencilReference -GLAD_API_CALL PFN_vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask; -#define vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask -GLAD_API_CALL PFN_vkCmdSetViewport glad_vkCmdSetViewport; -#define vkCmdSetViewport glad_vkCmdSetViewport -GLAD_API_CALL PFN_vkCmdUpdateBuffer glad_vkCmdUpdateBuffer; -#define vkCmdUpdateBuffer glad_vkCmdUpdateBuffer -GLAD_API_CALL PFN_vkCmdWaitEvents glad_vkCmdWaitEvents; -#define vkCmdWaitEvents glad_vkCmdWaitEvents -GLAD_API_CALL PFN_vkCmdWriteTimestamp glad_vkCmdWriteTimestamp; -#define vkCmdWriteTimestamp glad_vkCmdWriteTimestamp -GLAD_API_CALL PFN_vkCreateBuffer glad_vkCreateBuffer; -#define vkCreateBuffer glad_vkCreateBuffer -GLAD_API_CALL PFN_vkCreateBufferView glad_vkCreateBufferView; -#define vkCreateBufferView glad_vkCreateBufferView -GLAD_API_CALL PFN_vkCreateCommandPool glad_vkCreateCommandPool; -#define vkCreateCommandPool glad_vkCreateCommandPool -GLAD_API_CALL PFN_vkCreateComputePipelines glad_vkCreateComputePipelines; -#define vkCreateComputePipelines glad_vkCreateComputePipelines -GLAD_API_CALL PFN_vkCreateDebugReportCallbackEXT glad_vkCreateDebugReportCallbackEXT; -#define vkCreateDebugReportCallbackEXT glad_vkCreateDebugReportCallbackEXT -GLAD_API_CALL PFN_vkCreateDescriptorPool glad_vkCreateDescriptorPool; -#define vkCreateDescriptorPool glad_vkCreateDescriptorPool -GLAD_API_CALL PFN_vkCreateDescriptorSetLayout glad_vkCreateDescriptorSetLayout; -#define vkCreateDescriptorSetLayout glad_vkCreateDescriptorSetLayout -GLAD_API_CALL PFN_vkCreateDescriptorUpdateTemplate glad_vkCreateDescriptorUpdateTemplate; -#define vkCreateDescriptorUpdateTemplate glad_vkCreateDescriptorUpdateTemplate -GLAD_API_CALL PFN_vkCreateDevice glad_vkCreateDevice; -#define vkCreateDevice glad_vkCreateDevice -GLAD_API_CALL PFN_vkCreateEvent glad_vkCreateEvent; -#define vkCreateEvent glad_vkCreateEvent -GLAD_API_CALL PFN_vkCreateFence glad_vkCreateFence; -#define vkCreateFence glad_vkCreateFence -GLAD_API_CALL PFN_vkCreateFramebuffer glad_vkCreateFramebuffer; -#define vkCreateFramebuffer glad_vkCreateFramebuffer -GLAD_API_CALL PFN_vkCreateGraphicsPipelines glad_vkCreateGraphicsPipelines; -#define vkCreateGraphicsPipelines glad_vkCreateGraphicsPipelines -GLAD_API_CALL PFN_vkCreateImage glad_vkCreateImage; -#define vkCreateImage glad_vkCreateImage -GLAD_API_CALL PFN_vkCreateImageView glad_vkCreateImageView; -#define vkCreateImageView glad_vkCreateImageView -GLAD_API_CALL PFN_vkCreateInstance glad_vkCreateInstance; -#define vkCreateInstance glad_vkCreateInstance -GLAD_API_CALL PFN_vkCreatePipelineCache glad_vkCreatePipelineCache; -#define vkCreatePipelineCache glad_vkCreatePipelineCache -GLAD_API_CALL PFN_vkCreatePipelineLayout glad_vkCreatePipelineLayout; -#define vkCreatePipelineLayout glad_vkCreatePipelineLayout -GLAD_API_CALL PFN_vkCreateQueryPool glad_vkCreateQueryPool; -#define vkCreateQueryPool glad_vkCreateQueryPool -GLAD_API_CALL PFN_vkCreateRenderPass glad_vkCreateRenderPass; -#define vkCreateRenderPass glad_vkCreateRenderPass -GLAD_API_CALL PFN_vkCreateSampler glad_vkCreateSampler; -#define vkCreateSampler glad_vkCreateSampler -GLAD_API_CALL PFN_vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion; -#define vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion -GLAD_API_CALL PFN_vkCreateSemaphore glad_vkCreateSemaphore; -#define vkCreateSemaphore glad_vkCreateSemaphore -GLAD_API_CALL PFN_vkCreateShaderModule glad_vkCreateShaderModule; -#define vkCreateShaderModule glad_vkCreateShaderModule -GLAD_API_CALL PFN_vkCreateSwapchainKHR glad_vkCreateSwapchainKHR; -#define vkCreateSwapchainKHR glad_vkCreateSwapchainKHR -GLAD_API_CALL PFN_vkDebugReportMessageEXT glad_vkDebugReportMessageEXT; -#define vkDebugReportMessageEXT glad_vkDebugReportMessageEXT -GLAD_API_CALL PFN_vkDestroyBuffer glad_vkDestroyBuffer; -#define vkDestroyBuffer glad_vkDestroyBuffer -GLAD_API_CALL PFN_vkDestroyBufferView glad_vkDestroyBufferView; -#define vkDestroyBufferView glad_vkDestroyBufferView -GLAD_API_CALL PFN_vkDestroyCommandPool glad_vkDestroyCommandPool; -#define vkDestroyCommandPool glad_vkDestroyCommandPool -GLAD_API_CALL PFN_vkDestroyDebugReportCallbackEXT glad_vkDestroyDebugReportCallbackEXT; -#define vkDestroyDebugReportCallbackEXT glad_vkDestroyDebugReportCallbackEXT -GLAD_API_CALL PFN_vkDestroyDescriptorPool glad_vkDestroyDescriptorPool; -#define vkDestroyDescriptorPool glad_vkDestroyDescriptorPool -GLAD_API_CALL PFN_vkDestroyDescriptorSetLayout glad_vkDestroyDescriptorSetLayout; -#define vkDestroyDescriptorSetLayout glad_vkDestroyDescriptorSetLayout -GLAD_API_CALL PFN_vkDestroyDescriptorUpdateTemplate glad_vkDestroyDescriptorUpdateTemplate; -#define vkDestroyDescriptorUpdateTemplate glad_vkDestroyDescriptorUpdateTemplate -GLAD_API_CALL PFN_vkDestroyDevice glad_vkDestroyDevice; -#define vkDestroyDevice glad_vkDestroyDevice -GLAD_API_CALL PFN_vkDestroyEvent glad_vkDestroyEvent; -#define vkDestroyEvent glad_vkDestroyEvent -GLAD_API_CALL PFN_vkDestroyFence glad_vkDestroyFence; -#define vkDestroyFence glad_vkDestroyFence -GLAD_API_CALL PFN_vkDestroyFramebuffer glad_vkDestroyFramebuffer; -#define vkDestroyFramebuffer glad_vkDestroyFramebuffer -GLAD_API_CALL PFN_vkDestroyImage glad_vkDestroyImage; -#define vkDestroyImage glad_vkDestroyImage -GLAD_API_CALL PFN_vkDestroyImageView glad_vkDestroyImageView; -#define vkDestroyImageView glad_vkDestroyImageView -GLAD_API_CALL PFN_vkDestroyInstance glad_vkDestroyInstance; -#define vkDestroyInstance glad_vkDestroyInstance -GLAD_API_CALL PFN_vkDestroyPipeline glad_vkDestroyPipeline; -#define vkDestroyPipeline glad_vkDestroyPipeline -GLAD_API_CALL PFN_vkDestroyPipelineCache glad_vkDestroyPipelineCache; -#define vkDestroyPipelineCache glad_vkDestroyPipelineCache -GLAD_API_CALL PFN_vkDestroyPipelineLayout glad_vkDestroyPipelineLayout; -#define vkDestroyPipelineLayout glad_vkDestroyPipelineLayout -GLAD_API_CALL PFN_vkDestroyQueryPool glad_vkDestroyQueryPool; -#define vkDestroyQueryPool glad_vkDestroyQueryPool -GLAD_API_CALL PFN_vkDestroyRenderPass glad_vkDestroyRenderPass; -#define vkDestroyRenderPass glad_vkDestroyRenderPass -GLAD_API_CALL PFN_vkDestroySampler glad_vkDestroySampler; -#define vkDestroySampler glad_vkDestroySampler -GLAD_API_CALL PFN_vkDestroySamplerYcbcrConversion glad_vkDestroySamplerYcbcrConversion; -#define vkDestroySamplerYcbcrConversion glad_vkDestroySamplerYcbcrConversion -GLAD_API_CALL PFN_vkDestroySemaphore glad_vkDestroySemaphore; -#define vkDestroySemaphore glad_vkDestroySemaphore -GLAD_API_CALL PFN_vkDestroyShaderModule glad_vkDestroyShaderModule; -#define vkDestroyShaderModule glad_vkDestroyShaderModule -GLAD_API_CALL PFN_vkDestroySurfaceKHR glad_vkDestroySurfaceKHR; -#define vkDestroySurfaceKHR glad_vkDestroySurfaceKHR -GLAD_API_CALL PFN_vkDestroySwapchainKHR glad_vkDestroySwapchainKHR; -#define vkDestroySwapchainKHR glad_vkDestroySwapchainKHR -GLAD_API_CALL PFN_vkDeviceWaitIdle glad_vkDeviceWaitIdle; -#define vkDeviceWaitIdle glad_vkDeviceWaitIdle -GLAD_API_CALL PFN_vkEndCommandBuffer glad_vkEndCommandBuffer; -#define vkEndCommandBuffer glad_vkEndCommandBuffer -GLAD_API_CALL PFN_vkEnumerateDeviceExtensionProperties glad_vkEnumerateDeviceExtensionProperties; -#define vkEnumerateDeviceExtensionProperties glad_vkEnumerateDeviceExtensionProperties -GLAD_API_CALL PFN_vkEnumerateDeviceLayerProperties glad_vkEnumerateDeviceLayerProperties; -#define vkEnumerateDeviceLayerProperties glad_vkEnumerateDeviceLayerProperties -GLAD_API_CALL PFN_vkEnumerateInstanceExtensionProperties glad_vkEnumerateInstanceExtensionProperties; -#define vkEnumerateInstanceExtensionProperties glad_vkEnumerateInstanceExtensionProperties -GLAD_API_CALL PFN_vkEnumerateInstanceLayerProperties glad_vkEnumerateInstanceLayerProperties; -#define vkEnumerateInstanceLayerProperties glad_vkEnumerateInstanceLayerProperties -GLAD_API_CALL PFN_vkEnumerateInstanceVersion glad_vkEnumerateInstanceVersion; -#define vkEnumerateInstanceVersion glad_vkEnumerateInstanceVersion -GLAD_API_CALL PFN_vkEnumeratePhysicalDeviceGroups glad_vkEnumeratePhysicalDeviceGroups; -#define vkEnumeratePhysicalDeviceGroups glad_vkEnumeratePhysicalDeviceGroups -GLAD_API_CALL PFN_vkEnumeratePhysicalDevices glad_vkEnumeratePhysicalDevices; -#define vkEnumeratePhysicalDevices glad_vkEnumeratePhysicalDevices -GLAD_API_CALL PFN_vkFlushMappedMemoryRanges glad_vkFlushMappedMemoryRanges; -#define vkFlushMappedMemoryRanges glad_vkFlushMappedMemoryRanges -GLAD_API_CALL PFN_vkFreeCommandBuffers glad_vkFreeCommandBuffers; -#define vkFreeCommandBuffers glad_vkFreeCommandBuffers -GLAD_API_CALL PFN_vkFreeDescriptorSets glad_vkFreeDescriptorSets; -#define vkFreeDescriptorSets glad_vkFreeDescriptorSets -GLAD_API_CALL PFN_vkFreeMemory glad_vkFreeMemory; -#define vkFreeMemory glad_vkFreeMemory -GLAD_API_CALL PFN_vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements; -#define vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements -GLAD_API_CALL PFN_vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2; -#define vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2 -GLAD_API_CALL PFN_vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport; -#define vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport -GLAD_API_CALL PFN_vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures; -#define vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures -GLAD_API_CALL PFN_vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR; -#define vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR -GLAD_API_CALL PFN_vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR; -#define vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR -GLAD_API_CALL PFN_vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment; -#define vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment -GLAD_API_CALL PFN_vkGetDeviceProcAddr glad_vkGetDeviceProcAddr; -#define vkGetDeviceProcAddr glad_vkGetDeviceProcAddr -GLAD_API_CALL PFN_vkGetDeviceQueue glad_vkGetDeviceQueue; -#define vkGetDeviceQueue glad_vkGetDeviceQueue -GLAD_API_CALL PFN_vkGetDeviceQueue2 glad_vkGetDeviceQueue2; -#define vkGetDeviceQueue2 glad_vkGetDeviceQueue2 -GLAD_API_CALL PFN_vkGetEventStatus glad_vkGetEventStatus; -#define vkGetEventStatus glad_vkGetEventStatus -GLAD_API_CALL PFN_vkGetFenceStatus glad_vkGetFenceStatus; -#define vkGetFenceStatus glad_vkGetFenceStatus -GLAD_API_CALL PFN_vkGetImageMemoryRequirements glad_vkGetImageMemoryRequirements; -#define vkGetImageMemoryRequirements glad_vkGetImageMemoryRequirements -GLAD_API_CALL PFN_vkGetImageMemoryRequirements2 glad_vkGetImageMemoryRequirements2; -#define vkGetImageMemoryRequirements2 glad_vkGetImageMemoryRequirements2 -GLAD_API_CALL PFN_vkGetImageSparseMemoryRequirements glad_vkGetImageSparseMemoryRequirements; -#define vkGetImageSparseMemoryRequirements glad_vkGetImageSparseMemoryRequirements -GLAD_API_CALL PFN_vkGetImageSparseMemoryRequirements2 glad_vkGetImageSparseMemoryRequirements2; -#define vkGetImageSparseMemoryRequirements2 glad_vkGetImageSparseMemoryRequirements2 -GLAD_API_CALL PFN_vkGetImageSubresourceLayout glad_vkGetImageSubresourceLayout; -#define vkGetImageSubresourceLayout glad_vkGetImageSubresourceLayout -GLAD_API_CALL PFN_vkGetInstanceProcAddr glad_vkGetInstanceProcAddr; -#define vkGetInstanceProcAddr glad_vkGetInstanceProcAddr -GLAD_API_CALL PFN_vkGetPhysicalDeviceExternalBufferProperties glad_vkGetPhysicalDeviceExternalBufferProperties; -#define vkGetPhysicalDeviceExternalBufferProperties glad_vkGetPhysicalDeviceExternalBufferProperties -GLAD_API_CALL PFN_vkGetPhysicalDeviceExternalFenceProperties glad_vkGetPhysicalDeviceExternalFenceProperties; -#define vkGetPhysicalDeviceExternalFenceProperties glad_vkGetPhysicalDeviceExternalFenceProperties -GLAD_API_CALL PFN_vkGetPhysicalDeviceExternalSemaphoreProperties glad_vkGetPhysicalDeviceExternalSemaphoreProperties; -#define vkGetPhysicalDeviceExternalSemaphoreProperties glad_vkGetPhysicalDeviceExternalSemaphoreProperties -GLAD_API_CALL PFN_vkGetPhysicalDeviceFeatures glad_vkGetPhysicalDeviceFeatures; -#define vkGetPhysicalDeviceFeatures glad_vkGetPhysicalDeviceFeatures -GLAD_API_CALL PFN_vkGetPhysicalDeviceFeatures2 glad_vkGetPhysicalDeviceFeatures2; -#define vkGetPhysicalDeviceFeatures2 glad_vkGetPhysicalDeviceFeatures2 -GLAD_API_CALL PFN_vkGetPhysicalDeviceFormatProperties glad_vkGetPhysicalDeviceFormatProperties; -#define vkGetPhysicalDeviceFormatProperties glad_vkGetPhysicalDeviceFormatProperties -GLAD_API_CALL PFN_vkGetPhysicalDeviceFormatProperties2 glad_vkGetPhysicalDeviceFormatProperties2; -#define vkGetPhysicalDeviceFormatProperties2 glad_vkGetPhysicalDeviceFormatProperties2 -GLAD_API_CALL PFN_vkGetPhysicalDeviceImageFormatProperties glad_vkGetPhysicalDeviceImageFormatProperties; -#define vkGetPhysicalDeviceImageFormatProperties glad_vkGetPhysicalDeviceImageFormatProperties -GLAD_API_CALL PFN_vkGetPhysicalDeviceImageFormatProperties2 glad_vkGetPhysicalDeviceImageFormatProperties2; -#define vkGetPhysicalDeviceImageFormatProperties2 glad_vkGetPhysicalDeviceImageFormatProperties2 -GLAD_API_CALL PFN_vkGetPhysicalDeviceMemoryProperties glad_vkGetPhysicalDeviceMemoryProperties; -#define vkGetPhysicalDeviceMemoryProperties glad_vkGetPhysicalDeviceMemoryProperties -GLAD_API_CALL PFN_vkGetPhysicalDeviceMemoryProperties2 glad_vkGetPhysicalDeviceMemoryProperties2; -#define vkGetPhysicalDeviceMemoryProperties2 glad_vkGetPhysicalDeviceMemoryProperties2 -GLAD_API_CALL PFN_vkGetPhysicalDevicePresentRectanglesKHR glad_vkGetPhysicalDevicePresentRectanglesKHR; -#define vkGetPhysicalDevicePresentRectanglesKHR glad_vkGetPhysicalDevicePresentRectanglesKHR -GLAD_API_CALL PFN_vkGetPhysicalDeviceProperties glad_vkGetPhysicalDeviceProperties; -#define vkGetPhysicalDeviceProperties glad_vkGetPhysicalDeviceProperties -GLAD_API_CALL PFN_vkGetPhysicalDeviceProperties2 glad_vkGetPhysicalDeviceProperties2; -#define vkGetPhysicalDeviceProperties2 glad_vkGetPhysicalDeviceProperties2 -GLAD_API_CALL PFN_vkGetPhysicalDeviceQueueFamilyProperties glad_vkGetPhysicalDeviceQueueFamilyProperties; -#define vkGetPhysicalDeviceQueueFamilyProperties glad_vkGetPhysicalDeviceQueueFamilyProperties -GLAD_API_CALL PFN_vkGetPhysicalDeviceQueueFamilyProperties2 glad_vkGetPhysicalDeviceQueueFamilyProperties2; -#define vkGetPhysicalDeviceQueueFamilyProperties2 glad_vkGetPhysicalDeviceQueueFamilyProperties2 -GLAD_API_CALL PFN_vkGetPhysicalDeviceSparseImageFormatProperties glad_vkGetPhysicalDeviceSparseImageFormatProperties; -#define vkGetPhysicalDeviceSparseImageFormatProperties glad_vkGetPhysicalDeviceSparseImageFormatProperties -GLAD_API_CALL PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 glad_vkGetPhysicalDeviceSparseImageFormatProperties2; -#define vkGetPhysicalDeviceSparseImageFormatProperties2 glad_vkGetPhysicalDeviceSparseImageFormatProperties2 -GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR; -#define vkGetPhysicalDeviceSurfaceCapabilitiesKHR glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR -GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR; -#define vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR -GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR; -#define vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR -GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR; -#define vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR -GLAD_API_CALL PFN_vkGetPipelineCacheData glad_vkGetPipelineCacheData; -#define vkGetPipelineCacheData glad_vkGetPipelineCacheData -GLAD_API_CALL PFN_vkGetQueryPoolResults glad_vkGetQueryPoolResults; -#define vkGetQueryPoolResults glad_vkGetQueryPoolResults -GLAD_API_CALL PFN_vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity; -#define vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity -GLAD_API_CALL PFN_vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR; -#define vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR -GLAD_API_CALL PFN_vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges; -#define vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges -GLAD_API_CALL PFN_vkMapMemory glad_vkMapMemory; -#define vkMapMemory glad_vkMapMemory -GLAD_API_CALL PFN_vkMergePipelineCaches glad_vkMergePipelineCaches; -#define vkMergePipelineCaches glad_vkMergePipelineCaches -GLAD_API_CALL PFN_vkQueueBindSparse glad_vkQueueBindSparse; -#define vkQueueBindSparse glad_vkQueueBindSparse -GLAD_API_CALL PFN_vkQueuePresentKHR glad_vkQueuePresentKHR; -#define vkQueuePresentKHR glad_vkQueuePresentKHR -GLAD_API_CALL PFN_vkQueueSubmit glad_vkQueueSubmit; -#define vkQueueSubmit glad_vkQueueSubmit -GLAD_API_CALL PFN_vkQueueWaitIdle glad_vkQueueWaitIdle; -#define vkQueueWaitIdle glad_vkQueueWaitIdle -GLAD_API_CALL PFN_vkResetCommandBuffer glad_vkResetCommandBuffer; -#define vkResetCommandBuffer glad_vkResetCommandBuffer -GLAD_API_CALL PFN_vkResetCommandPool glad_vkResetCommandPool; -#define vkResetCommandPool glad_vkResetCommandPool -GLAD_API_CALL PFN_vkResetDescriptorPool glad_vkResetDescriptorPool; -#define vkResetDescriptorPool glad_vkResetDescriptorPool -GLAD_API_CALL PFN_vkResetEvent glad_vkResetEvent; -#define vkResetEvent glad_vkResetEvent -GLAD_API_CALL PFN_vkResetFences glad_vkResetFences; -#define vkResetFences glad_vkResetFences -GLAD_API_CALL PFN_vkSetEvent glad_vkSetEvent; -#define vkSetEvent glad_vkSetEvent -GLAD_API_CALL PFN_vkTrimCommandPool glad_vkTrimCommandPool; -#define vkTrimCommandPool glad_vkTrimCommandPool -GLAD_API_CALL PFN_vkUnmapMemory glad_vkUnmapMemory; -#define vkUnmapMemory glad_vkUnmapMemory -GLAD_API_CALL PFN_vkUpdateDescriptorSetWithTemplate glad_vkUpdateDescriptorSetWithTemplate; -#define vkUpdateDescriptorSetWithTemplate glad_vkUpdateDescriptorSetWithTemplate -GLAD_API_CALL PFN_vkUpdateDescriptorSets glad_vkUpdateDescriptorSets; -#define vkUpdateDescriptorSets glad_vkUpdateDescriptorSets -GLAD_API_CALL PFN_vkWaitForFences glad_vkWaitForFences; -#define vkWaitForFences glad_vkWaitForFences - - -GLAD_API_CALL int gladLoadVulkanUserPtr( VkPhysicalDevice physical_device, GLADuserptrloadfunc load, void *userptr); -GLAD_API_CALL int gladLoadVulkan( VkPhysicalDevice physical_device, GLADloadfunc load); - - - - - - -#ifdef __cplusplus -} -#endif -#endif +/**+ * Loader generated by glad 2.0.0-beta on Sun Apr 14 17:03:38 2019+ *+ * Generator: C/C+++ * Specification: vk+ * Extensions: 3+ *+ * APIs:+ * - vulkan=1.1+ *+ * Options:+ * - MX_GLOBAL = False+ * - LOADER = False+ * - ALIAS = False+ * - HEADER_ONLY = False+ * - DEBUG = False+ * - MX = False+ *+ * Commandline:+ * --api='vulkan=1.1' --extensions='VK_EXT_debug_report,VK_KHR_surface,VK_KHR_swapchain' c+ *+ * Online:+ * http://glad.sh/#api=vulkan%3D1.1&extensions=VK_EXT_debug_report%2CVK_KHR_surface%2CVK_KHR_swapchain&generator=c&options=+ *+ */++#ifndef GLAD_VULKAN_H_+#define GLAD_VULKAN_H_++#ifdef VULKAN_H_+ #error header already included (API: vulkan), remove previous include!+#endif+#define VULKAN_H_ 1++#ifdef VULKAN_CORE_H_+ #error header already included (API: vulkan), remove previous include!+#endif+#define VULKAN_CORE_H_ 1+++#define GLAD_VULKAN++#ifdef __cplusplus+extern "C" {+#endif++#ifndef GLAD_PLATFORM_H_+#define GLAD_PLATFORM_H_++#ifndef GLAD_PLATFORM_WIN32+ #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)+ #define GLAD_PLATFORM_WIN32 1+ #else+ #define GLAD_PLATFORM_WIN32 0+ #endif+#endif++#ifndef GLAD_PLATFORM_APPLE+ #ifdef __APPLE__+ #define GLAD_PLATFORM_APPLE 1+ #else+ #define GLAD_PLATFORM_APPLE 0+ #endif+#endif++#ifndef GLAD_PLATFORM_EMSCRIPTEN+ #ifdef __EMSCRIPTEN__+ #define GLAD_PLATFORM_EMSCRIPTEN 1+ #else+ #define GLAD_PLATFORM_EMSCRIPTEN 0+ #endif+#endif++#ifndef GLAD_PLATFORM_UWP+ #if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY)+ #ifdef __has_include+ #if __has_include(<winapifamily.h>)+ #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1+ #endif+ #elif _MSC_VER >= 1700 && !_USING_V110_SDK71_+ #define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1+ #endif+ #endif++ #ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY+ #include <winapifamily.h>+ #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)+ #define GLAD_PLATFORM_UWP 1+ #endif+ #endif++ #ifndef GLAD_PLATFORM_UWP+ #define GLAD_PLATFORM_UWP 0+ #endif+#endif++#ifdef __GNUC__+ #define GLAD_GNUC_EXTENSION __extension__+#else+ #define GLAD_GNUC_EXTENSION+#endif++#ifndef GLAD_API_CALL+ #if defined(GLAD_API_CALL_EXPORT)+ #if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__)+ #if defined(GLAD_API_CALL_EXPORT_BUILD)+ #if defined(__GNUC__)+ #define GLAD_API_CALL __attribute__ ((dllexport)) extern+ #else+ #define GLAD_API_CALL __declspec(dllexport) extern+ #endif+ #else+ #if defined(__GNUC__)+ #define GLAD_API_CALL __attribute__ ((dllimport)) extern+ #else+ #define GLAD_API_CALL __declspec(dllimport) extern+ #endif+ #endif+ #elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD)+ #define GLAD_API_CALL __attribute__ ((visibility ("default"))) extern+ #else+ #define GLAD_API_CALL extern+ #endif+ #else+ #define GLAD_API_CALL extern+ #endif+#endif++#ifdef APIENTRY+ #define GLAD_API_PTR APIENTRY+#elif GLAD_PLATFORM_WIN32+ #define GLAD_API_PTR __stdcall+#else+ #define GLAD_API_PTR+#endif++#ifndef GLAPI+#define GLAPI GLAD_API_CALL+#endif++#ifndef GLAPIENTRY+#define GLAPIENTRY GLAD_API_PTR+#endif+++#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor)+#define GLAD_VERSION_MAJOR(version) (version / 10000)+#define GLAD_VERSION_MINOR(version) (version % 10000)++typedef void (*GLADapiproc)(void);++typedef GLADapiproc (*GLADloadfunc)(const char *name);+typedef GLADapiproc (*GLADuserptrloadfunc)(const char *name, void *userptr);++typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...);+typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, ...);++#endif /* GLAD_PLATFORM_H_ */++#define VK_ATTACHMENT_UNUSED (~0U)+#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"+#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9+#define VK_FALSE 0+#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface"+#define VK_KHR_SURFACE_SPEC_VERSION 25+#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain"+#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70+#define VK_LOD_CLAMP_NONE 1000.0f+#define VK_LUID_SIZE 8+#define VK_MAX_DESCRIPTION_SIZE 256+#define VK_MAX_DEVICE_GROUP_SIZE 32+#define VK_MAX_EXTENSION_NAME_SIZE 256+#define VK_MAX_MEMORY_HEAPS 16+#define VK_MAX_MEMORY_TYPES 32+#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256+#define VK_QUEUE_FAMILY_EXTERNAL (~0U-1)+#define VK_QUEUE_FAMILY_IGNORED (~0U)+#define VK_REMAINING_ARRAY_LAYERS (~0U)+#define VK_REMAINING_MIP_LEVELS (~0U)+#define VK_SUBPASS_EXTERNAL (~0U)+#define VK_TRUE 1+#define VK_UUID_SIZE 16+#define VK_WHOLE_SIZE (~0ULL)+++#include <glad/vk_platform.h>+#define VK_MAKE_VERSION(major, minor, patch) \+ (((major) << 22) | ((minor) << 12) | (patch))+#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)+#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)+#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)+/* DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. */+/*#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0 */+/* Vulkan 1.0 version number */+#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)/* Patch version should always be set to 0 */+/* Vulkan 1.1 version number */+#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)/* Patch version should always be set to 0 */+/* Version of this file */+#define VK_HEADER_VERSION 106+#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;+#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)+#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)+ #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;+#else+ #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;+#endif+#endif+#define VK_NULL_HANDLE 0+++++++++VK_DEFINE_HANDLE(VkInstance)+VK_DEFINE_HANDLE(VkPhysicalDevice)+VK_DEFINE_HANDLE(VkDevice)+VK_DEFINE_HANDLE(VkQueue)+VK_DEFINE_HANDLE(VkCommandBuffer)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)+typedef enum VkAttachmentLoadOp {+ VK_ATTACHMENT_LOAD_OP_LOAD = 0,+ VK_ATTACHMENT_LOAD_OP_CLEAR = 1,+ VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2+} VkAttachmentLoadOp;+typedef enum VkAttachmentStoreOp {+ VK_ATTACHMENT_STORE_OP_STORE = 0,+ VK_ATTACHMENT_STORE_OP_DONT_CARE = 1+} VkAttachmentStoreOp;+typedef enum VkBlendFactor {+ VK_BLEND_FACTOR_ZERO = 0,+ VK_BLEND_FACTOR_ONE = 1,+ VK_BLEND_FACTOR_SRC_COLOR = 2,+ VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,+ VK_BLEND_FACTOR_DST_COLOR = 4,+ VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,+ VK_BLEND_FACTOR_SRC_ALPHA = 6,+ VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,+ VK_BLEND_FACTOR_DST_ALPHA = 8,+ VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,+ VK_BLEND_FACTOR_CONSTANT_COLOR = 10,+ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,+ VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,+ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,+ VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,+ VK_BLEND_FACTOR_SRC1_COLOR = 15,+ VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,+ VK_BLEND_FACTOR_SRC1_ALPHA = 17,+ VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18+} VkBlendFactor;+typedef enum VkBlendOp {+ VK_BLEND_OP_ADD = 0,+ VK_BLEND_OP_SUBTRACT = 1,+ VK_BLEND_OP_REVERSE_SUBTRACT = 2,+ VK_BLEND_OP_MIN = 3,+ VK_BLEND_OP_MAX = 4+} VkBlendOp;+typedef enum VkBorderColor {+ VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,+ VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,+ VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,+ VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,+ VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,+ VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5+} VkBorderColor;++typedef enum VkPipelineCacheHeaderVersion {+ VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1+} VkPipelineCacheHeaderVersion;++typedef enum VkDeviceQueueCreateFlagBits {+ VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1+} VkDeviceQueueCreateFlagBits;+typedef enum VkBufferCreateFlagBits {+ VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1,+ VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2,+ VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4,+ VK_BUFFER_CREATE_PROTECTED_BIT = 8+} VkBufferCreateFlagBits;+typedef enum VkBufferUsageFlagBits {+ VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1,+ VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2,+ VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4,+ VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8,+ VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16,+ VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32,+ VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64,+ VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128,+ VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256+} VkBufferUsageFlagBits;+typedef enum VkColorComponentFlagBits {+ VK_COLOR_COMPONENT_R_BIT = 1,+ VK_COLOR_COMPONENT_G_BIT = 2,+ VK_COLOR_COMPONENT_B_BIT = 4,+ VK_COLOR_COMPONENT_A_BIT = 8+} VkColorComponentFlagBits;+typedef enum VkComponentSwizzle {+ VK_COMPONENT_SWIZZLE_IDENTITY = 0,+ VK_COMPONENT_SWIZZLE_ZERO = 1,+ VK_COMPONENT_SWIZZLE_ONE = 2,+ VK_COMPONENT_SWIZZLE_R = 3,+ VK_COMPONENT_SWIZZLE_G = 4,+ VK_COMPONENT_SWIZZLE_B = 5,+ VK_COMPONENT_SWIZZLE_A = 6+} VkComponentSwizzle;+typedef enum VkCommandPoolCreateFlagBits {+ VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1,+ VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2,+ VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4+} VkCommandPoolCreateFlagBits;+typedef enum VkCommandPoolResetFlagBits {+ VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1+} VkCommandPoolResetFlagBits;+typedef enum VkCommandBufferResetFlagBits {+ VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1+} VkCommandBufferResetFlagBits;+typedef enum VkCommandBufferLevel {+ VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,+ VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1+} VkCommandBufferLevel;+typedef enum VkCommandBufferUsageFlagBits {+ VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1,+ VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2,+ VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4+} VkCommandBufferUsageFlagBits;+typedef enum VkCompareOp {+ VK_COMPARE_OP_NEVER = 0,+ VK_COMPARE_OP_LESS = 1,+ VK_COMPARE_OP_EQUAL = 2,+ VK_COMPARE_OP_LESS_OR_EQUAL = 3,+ VK_COMPARE_OP_GREATER = 4,+ VK_COMPARE_OP_NOT_EQUAL = 5,+ VK_COMPARE_OP_GREATER_OR_EQUAL = 6,+ VK_COMPARE_OP_ALWAYS = 7+} VkCompareOp;+typedef enum VkCullModeFlagBits {+ VK_CULL_MODE_NONE = 0,+ VK_CULL_MODE_FRONT_BIT = 1,+ VK_CULL_MODE_BACK_BIT = 2,+ VK_CULL_MODE_FRONT_AND_BACK = 0x00000003+} VkCullModeFlagBits;+typedef enum VkDescriptorType {+ VK_DESCRIPTOR_TYPE_SAMPLER = 0,+ VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,+ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,+ VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,+ VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,+ VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,+ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,+ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,+ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,+ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,+ VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10+} VkDescriptorType;+typedef enum VkDynamicState {+ VK_DYNAMIC_STATE_VIEWPORT = 0,+ VK_DYNAMIC_STATE_SCISSOR = 1,+ VK_DYNAMIC_STATE_LINE_WIDTH = 2,+ VK_DYNAMIC_STATE_DEPTH_BIAS = 3,+ VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,+ VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,+ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,+ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,+ VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,+ VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1)+} VkDynamicState;+typedef enum VkFenceCreateFlagBits {+ VK_FENCE_CREATE_SIGNALED_BIT = 1+} VkFenceCreateFlagBits;+typedef enum VkPolygonMode {+ VK_POLYGON_MODE_FILL = 0,+ VK_POLYGON_MODE_LINE = 1,+ VK_POLYGON_MODE_POINT = 2+} VkPolygonMode;+typedef enum VkFormat {+ VK_FORMAT_UNDEFINED = 0,+ VK_FORMAT_R4G4_UNORM_PACK8 = 1,+ VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,+ VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,+ VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,+ VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,+ VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,+ VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,+ VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,+ VK_FORMAT_R8_UNORM = 9,+ VK_FORMAT_R8_SNORM = 10,+ VK_FORMAT_R8_USCALED = 11,+ VK_FORMAT_R8_SSCALED = 12,+ VK_FORMAT_R8_UINT = 13,+ VK_FORMAT_R8_SINT = 14,+ VK_FORMAT_R8_SRGB = 15,+ VK_FORMAT_R8G8_UNORM = 16,+ VK_FORMAT_R8G8_SNORM = 17,+ VK_FORMAT_R8G8_USCALED = 18,+ VK_FORMAT_R8G8_SSCALED = 19,+ VK_FORMAT_R8G8_UINT = 20,+ VK_FORMAT_R8G8_SINT = 21,+ VK_FORMAT_R8G8_SRGB = 22,+ VK_FORMAT_R8G8B8_UNORM = 23,+ VK_FORMAT_R8G8B8_SNORM = 24,+ VK_FORMAT_R8G8B8_USCALED = 25,+ VK_FORMAT_R8G8B8_SSCALED = 26,+ VK_FORMAT_R8G8B8_UINT = 27,+ VK_FORMAT_R8G8B8_SINT = 28,+ VK_FORMAT_R8G8B8_SRGB = 29,+ VK_FORMAT_B8G8R8_UNORM = 30,+ VK_FORMAT_B8G8R8_SNORM = 31,+ VK_FORMAT_B8G8R8_USCALED = 32,+ VK_FORMAT_B8G8R8_SSCALED = 33,+ VK_FORMAT_B8G8R8_UINT = 34,+ VK_FORMAT_B8G8R8_SINT = 35,+ VK_FORMAT_B8G8R8_SRGB = 36,+ VK_FORMAT_R8G8B8A8_UNORM = 37,+ VK_FORMAT_R8G8B8A8_SNORM = 38,+ VK_FORMAT_R8G8B8A8_USCALED = 39,+ VK_FORMAT_R8G8B8A8_SSCALED = 40,+ VK_FORMAT_R8G8B8A8_UINT = 41,+ VK_FORMAT_R8G8B8A8_SINT = 42,+ VK_FORMAT_R8G8B8A8_SRGB = 43,+ VK_FORMAT_B8G8R8A8_UNORM = 44,+ VK_FORMAT_B8G8R8A8_SNORM = 45,+ VK_FORMAT_B8G8R8A8_USCALED = 46,+ VK_FORMAT_B8G8R8A8_SSCALED = 47,+ VK_FORMAT_B8G8R8A8_UINT = 48,+ VK_FORMAT_B8G8R8A8_SINT = 49,+ VK_FORMAT_B8G8R8A8_SRGB = 50,+ VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,+ VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,+ VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,+ VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,+ VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,+ VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,+ VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,+ VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,+ VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,+ VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,+ VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,+ VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,+ VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,+ VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,+ VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,+ VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,+ VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,+ VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,+ VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,+ VK_FORMAT_R16_UNORM = 70,+ VK_FORMAT_R16_SNORM = 71,+ VK_FORMAT_R16_USCALED = 72,+ VK_FORMAT_R16_SSCALED = 73,+ VK_FORMAT_R16_UINT = 74,+ VK_FORMAT_R16_SINT = 75,+ VK_FORMAT_R16_SFLOAT = 76,+ VK_FORMAT_R16G16_UNORM = 77,+ VK_FORMAT_R16G16_SNORM = 78,+ VK_FORMAT_R16G16_USCALED = 79,+ VK_FORMAT_R16G16_SSCALED = 80,+ VK_FORMAT_R16G16_UINT = 81,+ VK_FORMAT_R16G16_SINT = 82,+ VK_FORMAT_R16G16_SFLOAT = 83,+ VK_FORMAT_R16G16B16_UNORM = 84,+ VK_FORMAT_R16G16B16_SNORM = 85,+ VK_FORMAT_R16G16B16_USCALED = 86,+ VK_FORMAT_R16G16B16_SSCALED = 87,+ VK_FORMAT_R16G16B16_UINT = 88,+ VK_FORMAT_R16G16B16_SINT = 89,+ VK_FORMAT_R16G16B16_SFLOAT = 90,+ VK_FORMAT_R16G16B16A16_UNORM = 91,+ VK_FORMAT_R16G16B16A16_SNORM = 92,+ VK_FORMAT_R16G16B16A16_USCALED = 93,+ VK_FORMAT_R16G16B16A16_SSCALED = 94,+ VK_FORMAT_R16G16B16A16_UINT = 95,+ VK_FORMAT_R16G16B16A16_SINT = 96,+ VK_FORMAT_R16G16B16A16_SFLOAT = 97,+ VK_FORMAT_R32_UINT = 98,+ VK_FORMAT_R32_SINT = 99,+ VK_FORMAT_R32_SFLOAT = 100,+ VK_FORMAT_R32G32_UINT = 101,+ VK_FORMAT_R32G32_SINT = 102,+ VK_FORMAT_R32G32_SFLOAT = 103,+ VK_FORMAT_R32G32B32_UINT = 104,+ VK_FORMAT_R32G32B32_SINT = 105,+ VK_FORMAT_R32G32B32_SFLOAT = 106,+ VK_FORMAT_R32G32B32A32_UINT = 107,+ VK_FORMAT_R32G32B32A32_SINT = 108,+ VK_FORMAT_R32G32B32A32_SFLOAT = 109,+ VK_FORMAT_R64_UINT = 110,+ VK_FORMAT_R64_SINT = 111,+ VK_FORMAT_R64_SFLOAT = 112,+ VK_FORMAT_R64G64_UINT = 113,+ VK_FORMAT_R64G64_SINT = 114,+ VK_FORMAT_R64G64_SFLOAT = 115,+ VK_FORMAT_R64G64B64_UINT = 116,+ VK_FORMAT_R64G64B64_SINT = 117,+ VK_FORMAT_R64G64B64_SFLOAT = 118,+ VK_FORMAT_R64G64B64A64_UINT = 119,+ VK_FORMAT_R64G64B64A64_SINT = 120,+ VK_FORMAT_R64G64B64A64_SFLOAT = 121,+ VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,+ VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,+ VK_FORMAT_D16_UNORM = 124,+ VK_FORMAT_X8_D24_UNORM_PACK32 = 125,+ VK_FORMAT_D32_SFLOAT = 126,+ VK_FORMAT_S8_UINT = 127,+ VK_FORMAT_D16_UNORM_S8_UINT = 128,+ VK_FORMAT_D24_UNORM_S8_UINT = 129,+ VK_FORMAT_D32_SFLOAT_S8_UINT = 130,+ VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,+ VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,+ VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,+ VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,+ VK_FORMAT_BC2_UNORM_BLOCK = 135,+ VK_FORMAT_BC2_SRGB_BLOCK = 136,+ VK_FORMAT_BC3_UNORM_BLOCK = 137,+ VK_FORMAT_BC3_SRGB_BLOCK = 138,+ VK_FORMAT_BC4_UNORM_BLOCK = 139,+ VK_FORMAT_BC4_SNORM_BLOCK = 140,+ VK_FORMAT_BC5_UNORM_BLOCK = 141,+ VK_FORMAT_BC5_SNORM_BLOCK = 142,+ VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,+ VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,+ VK_FORMAT_BC7_UNORM_BLOCK = 145,+ VK_FORMAT_BC7_SRGB_BLOCK = 146,+ VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,+ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,+ VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,+ VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,+ VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,+ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,+ VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,+ VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,+ VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,+ VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,+ VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,+ VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,+ VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,+ VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,+ VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,+ VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,+ VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,+ VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,+ VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,+ VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,+ VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,+ VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,+ VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,+ VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,+ VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,+ VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,+ VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,+ VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,+ VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,+ VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,+ VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,+ VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,+ VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,+ VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,+ VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,+ VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,+ VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,+ VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,+ VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,+ VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,+ VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,+ VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,+ VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,+ VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,+ VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,+ VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,+ VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,+ VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,+ VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,+ VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,+ VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,+ VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,+ VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,+ VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,+ VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,+ VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,+ VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,+ VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,+ VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,+ VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,+ VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,+ VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,+ VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,+ VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,+ VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,+ VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,+ VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,+ VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,+ VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,+ VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,+ VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,+ VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033+} VkFormat;+typedef enum VkFormatFeatureFlagBits {+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1,+ VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2,+ VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4,+ VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8,+ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16,+ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32,+ VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64,+ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128,+ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256,+ VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512,+ VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024,+ VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048,+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096,+ VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384,+ VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768,+ VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072,+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144,+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288,+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576,+ VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152,+ VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304,+ VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608+} VkFormatFeatureFlagBits;+typedef enum VkFrontFace {+ VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,+ VK_FRONT_FACE_CLOCKWISE = 1+} VkFrontFace;+typedef enum VkImageAspectFlagBits {+ VK_IMAGE_ASPECT_COLOR_BIT = 1,+ VK_IMAGE_ASPECT_DEPTH_BIT = 2,+ VK_IMAGE_ASPECT_STENCIL_BIT = 4,+ VK_IMAGE_ASPECT_METADATA_BIT = 8,+ VK_IMAGE_ASPECT_PLANE_0_BIT = 16,+ VK_IMAGE_ASPECT_PLANE_1_BIT = 32,+ VK_IMAGE_ASPECT_PLANE_2_BIT = 64+} VkImageAspectFlagBits;+typedef enum VkImageCreateFlagBits {+ VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1,+ VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2,+ VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4,+ VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8,+ VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16,+ VK_IMAGE_CREATE_ALIAS_BIT = 1024,+ VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64,+ VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32,+ VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128,+ VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256,+ VK_IMAGE_CREATE_PROTECTED_BIT = 2048,+ VK_IMAGE_CREATE_DISJOINT_BIT = 512+} VkImageCreateFlagBits;+typedef enum VkImageLayout {+ VK_IMAGE_LAYOUT_UNDEFINED = 0,+ VK_IMAGE_LAYOUT_GENERAL = 1,+ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,+ VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,+ VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,+ VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,+ VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,+ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,+ VK_IMAGE_LAYOUT_PREINITIALIZED = 8,+ VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,+ VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,+ VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002+} VkImageLayout;+typedef enum VkImageTiling {+ VK_IMAGE_TILING_OPTIMAL = 0,+ VK_IMAGE_TILING_LINEAR = 1+} VkImageTiling;+typedef enum VkImageType {+ VK_IMAGE_TYPE_1D = 0,+ VK_IMAGE_TYPE_2D = 1,+ VK_IMAGE_TYPE_3D = 2+} VkImageType;+typedef enum VkImageUsageFlagBits {+ VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1,+ VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2,+ VK_IMAGE_USAGE_SAMPLED_BIT = 4,+ VK_IMAGE_USAGE_STORAGE_BIT = 8,+ VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16,+ VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32,+ VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64,+ VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128+} VkImageUsageFlagBits;++typedef enum VkImageViewType {+ VK_IMAGE_VIEW_TYPE_1D = 0,+ VK_IMAGE_VIEW_TYPE_2D = 1,+ VK_IMAGE_VIEW_TYPE_3D = 2,+ VK_IMAGE_VIEW_TYPE_CUBE = 3,+ VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,+ VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,+ VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6+} VkImageViewType;+typedef enum VkSharingMode {+ VK_SHARING_MODE_EXCLUSIVE = 0,+ VK_SHARING_MODE_CONCURRENT = 1+} VkSharingMode;+typedef enum VkIndexType {+ VK_INDEX_TYPE_UINT16 = 0,+ VK_INDEX_TYPE_UINT32 = 1+} VkIndexType;+typedef enum VkLogicOp {+ VK_LOGIC_OP_CLEAR = 0,+ VK_LOGIC_OP_AND = 1,+ VK_LOGIC_OP_AND_REVERSE = 2,+ VK_LOGIC_OP_COPY = 3,+ VK_LOGIC_OP_AND_INVERTED = 4,+ VK_LOGIC_OP_NO_OP = 5,+ VK_LOGIC_OP_XOR = 6,+ VK_LOGIC_OP_OR = 7,+ VK_LOGIC_OP_NOR = 8,+ VK_LOGIC_OP_EQUIVALENT = 9,+ VK_LOGIC_OP_INVERT = 10,+ VK_LOGIC_OP_OR_REVERSE = 11,+ VK_LOGIC_OP_COPY_INVERTED = 12,+ VK_LOGIC_OP_OR_INVERTED = 13,+ VK_LOGIC_OP_NAND = 14,+ VK_LOGIC_OP_SET = 15+} VkLogicOp;+typedef enum VkMemoryHeapFlagBits {+ VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1,+ VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2+} VkMemoryHeapFlagBits;+typedef enum VkAccessFlagBits {+ VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1,+ VK_ACCESS_INDEX_READ_BIT = 2,+ VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4,+ VK_ACCESS_UNIFORM_READ_BIT = 8,+ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16,+ VK_ACCESS_SHADER_READ_BIT = 32,+ VK_ACCESS_SHADER_WRITE_BIT = 64,+ VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128,+ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256,+ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512,+ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024,+ VK_ACCESS_TRANSFER_READ_BIT = 2048,+ VK_ACCESS_TRANSFER_WRITE_BIT = 4096,+ VK_ACCESS_HOST_READ_BIT = 8192,+ VK_ACCESS_HOST_WRITE_BIT = 16384,+ VK_ACCESS_MEMORY_READ_BIT = 32768,+ VK_ACCESS_MEMORY_WRITE_BIT = 65536+} VkAccessFlagBits;+typedef enum VkMemoryPropertyFlagBits {+ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1,+ VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2,+ VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4,+ VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8,+ VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16,+ VK_MEMORY_PROPERTY_PROTECTED_BIT = 32+} VkMemoryPropertyFlagBits;+typedef enum VkPhysicalDeviceType {+ VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,+ VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,+ VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,+ VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,+ VK_PHYSICAL_DEVICE_TYPE_CPU = 4+} VkPhysicalDeviceType;+typedef enum VkPipelineBindPoint {+ VK_PIPELINE_BIND_POINT_GRAPHICS = 0,+ VK_PIPELINE_BIND_POINT_COMPUTE = 1+} VkPipelineBindPoint;+typedef enum VkPipelineCreateFlagBits {+ VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1,+ VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2,+ VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4,+ VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8,+ VK_PIPELINE_CREATE_DISPATCH_BASE = 16+} VkPipelineCreateFlagBits;+typedef enum VkPrimitiveTopology {+ VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,+ VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,+ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,+ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,+ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,+ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,+ VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,+ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,+ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,+ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,+ VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10+} VkPrimitiveTopology;+typedef enum VkQueryControlFlagBits {+ VK_QUERY_CONTROL_PRECISE_BIT = 1+} VkQueryControlFlagBits;+typedef enum VkQueryPipelineStatisticFlagBits {+ VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1,+ VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2,+ VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4,+ VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8,+ VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16,+ VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32,+ VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64,+ VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128,+ VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256,+ VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512,+ VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024+} VkQueryPipelineStatisticFlagBits;+typedef enum VkQueryResultFlagBits {+ VK_QUERY_RESULT_64_BIT = 1,+ VK_QUERY_RESULT_WAIT_BIT = 2,+ VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4,+ VK_QUERY_RESULT_PARTIAL_BIT = 8+} VkQueryResultFlagBits;+typedef enum VkQueryType {+ VK_QUERY_TYPE_OCCLUSION = 0,+ VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,+ VK_QUERY_TYPE_TIMESTAMP = 2+} VkQueryType;+typedef enum VkQueueFlagBits {+ VK_QUEUE_GRAPHICS_BIT = 1,+ VK_QUEUE_COMPUTE_BIT = 2,+ VK_QUEUE_TRANSFER_BIT = 4,+ VK_QUEUE_SPARSE_BINDING_BIT = 8,+ VK_QUEUE_PROTECTED_BIT = 16+} VkQueueFlagBits;+typedef enum VkSubpassContents {+ VK_SUBPASS_CONTENTS_INLINE = 0,+ VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1+} VkSubpassContents;+typedef enum VkResult {+ VK_SUCCESS = 0,+ VK_NOT_READY = 1,+ VK_TIMEOUT = 2,+ VK_EVENT_SET = 3,+ VK_EVENT_RESET = 4,+ VK_INCOMPLETE = 5,+ VK_ERROR_OUT_OF_HOST_MEMORY = -1,+ VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,+ VK_ERROR_INITIALIZATION_FAILED = -3,+ VK_ERROR_DEVICE_LOST = -4,+ VK_ERROR_MEMORY_MAP_FAILED = -5,+ VK_ERROR_LAYER_NOT_PRESENT = -6,+ VK_ERROR_EXTENSION_NOT_PRESENT = -7,+ VK_ERROR_FEATURE_NOT_PRESENT = -8,+ VK_ERROR_INCOMPATIBLE_DRIVER = -9,+ VK_ERROR_TOO_MANY_OBJECTS = -10,+ VK_ERROR_FORMAT_NOT_SUPPORTED = -11,+ VK_ERROR_FRAGMENTED_POOL = -12,+ VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,+ VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,+ VK_ERROR_SURFACE_LOST_KHR = -1000000000,+ VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,+ VK_SUBOPTIMAL_KHR = 1000001003,+ VK_ERROR_OUT_OF_DATE_KHR = -1000001004,+ VK_ERROR_VALIDATION_FAILED_EXT = -1000011001+} VkResult;+typedef enum VkShaderStageFlagBits {+ VK_SHADER_STAGE_VERTEX_BIT = 1,+ VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2,+ VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4,+ VK_SHADER_STAGE_GEOMETRY_BIT = 8,+ VK_SHADER_STAGE_FRAGMENT_BIT = 16,+ VK_SHADER_STAGE_COMPUTE_BIT = 32,+ VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,+ VK_SHADER_STAGE_ALL = 0x7FFFFFFF+} VkShaderStageFlagBits;+typedef enum VkSparseMemoryBindFlagBits {+ VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1+} VkSparseMemoryBindFlagBits;+typedef enum VkStencilFaceFlagBits {+ VK_STENCIL_FACE_FRONT_BIT = 1,+ VK_STENCIL_FACE_BACK_BIT = 2,+ VK_STENCIL_FRONT_AND_BACK = 0x00000003+} VkStencilFaceFlagBits;+typedef enum VkStencilOp {+ VK_STENCIL_OP_KEEP = 0,+ VK_STENCIL_OP_ZERO = 1,+ VK_STENCIL_OP_REPLACE = 2,+ VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,+ VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,+ VK_STENCIL_OP_INVERT = 5,+ VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,+ VK_STENCIL_OP_DECREMENT_AND_WRAP = 7+} VkStencilOp;+typedef enum VkStructureType {+ VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,+ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,+ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,+ VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,+ VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,+ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,+ VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,+ VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,+ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,+ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,+ VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,+ VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,+ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,+ VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,+ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,+ VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,+ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,+ VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,+ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,+ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,+ VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,+ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,+ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,+ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,+ VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,+ VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,+ VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,+ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,+ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,+ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,+ VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,+ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,+ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,+ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,+ VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,+ VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,+ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,+ VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,+ VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,+ VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,+ VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,+ VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,+ VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,+ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,+ VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,+ VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,+ VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,+ VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,+ VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,+ VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,+ VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,+ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,+ VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,+ VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,+ VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,+ VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,+ VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,+ VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,+ VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,+ VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,+ VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,+ VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,+ VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,+ VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,+ VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,+ VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,+ VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,+ VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,+ VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,+ VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,+ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,+ VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,+ VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,+ VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,+ VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,+ VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,+ VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,+ VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,+ VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,+ VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,+ VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,+ VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,+ VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,+ VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,+ VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,+ VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,+ VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,+ VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,+ VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,+ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,+ VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,+ VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,+ VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,+ VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,+ VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,+ VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,+ VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,+ VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,+ VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,+ VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT+} VkStructureType;+typedef enum VkSystemAllocationScope {+ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,+ VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,+ VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,+ VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,+ VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4+} VkSystemAllocationScope;+typedef enum VkInternalAllocationType {+ VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0+} VkInternalAllocationType;+typedef enum VkSamplerAddressMode {+ VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,+ VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,+ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,+ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3+} VkSamplerAddressMode;+typedef enum VkFilter {+ VK_FILTER_NEAREST = 0,+ VK_FILTER_LINEAR = 1+} VkFilter;+typedef enum VkSamplerMipmapMode {+ VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,+ VK_SAMPLER_MIPMAP_MODE_LINEAR = 1+} VkSamplerMipmapMode;+typedef enum VkVertexInputRate {+ VK_VERTEX_INPUT_RATE_VERTEX = 0,+ VK_VERTEX_INPUT_RATE_INSTANCE = 1+} VkVertexInputRate;+typedef enum VkPipelineStageFlagBits {+ VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1,+ VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2,+ VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4,+ VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8,+ VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16,+ VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32,+ VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64,+ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128,+ VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256,+ VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512,+ VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024,+ VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048,+ VK_PIPELINE_STAGE_TRANSFER_BIT = 4096,+ VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192,+ VK_PIPELINE_STAGE_HOST_BIT = 16384,+ VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768,+ VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536+} VkPipelineStageFlagBits;+typedef enum VkSparseImageFormatFlagBits {+ VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1,+ VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2,+ VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4+} VkSparseImageFormatFlagBits;+typedef enum VkSampleCountFlagBits {+ VK_SAMPLE_COUNT_1_BIT = 1,+ VK_SAMPLE_COUNT_2_BIT = 2,+ VK_SAMPLE_COUNT_4_BIT = 4,+ VK_SAMPLE_COUNT_8_BIT = 8,+ VK_SAMPLE_COUNT_16_BIT = 16,+ VK_SAMPLE_COUNT_32_BIT = 32,+ VK_SAMPLE_COUNT_64_BIT = 64+} VkSampleCountFlagBits;+typedef enum VkAttachmentDescriptionFlagBits {+ VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1+} VkAttachmentDescriptionFlagBits;+typedef enum VkDescriptorPoolCreateFlagBits {+ VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1+} VkDescriptorPoolCreateFlagBits;+typedef enum VkDependencyFlagBits {+ VK_DEPENDENCY_BY_REGION_BIT = 1,+ VK_DEPENDENCY_DEVICE_GROUP_BIT = 4,+ VK_DEPENDENCY_VIEW_LOCAL_BIT = 2+} VkDependencyFlagBits;+typedef enum VkObjectType {+ VK_OBJECT_TYPE_UNKNOWN = 0,+ VK_OBJECT_TYPE_INSTANCE = 1,+ VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,+ VK_OBJECT_TYPE_DEVICE = 3,+ VK_OBJECT_TYPE_QUEUE = 4,+ VK_OBJECT_TYPE_SEMAPHORE = 5,+ VK_OBJECT_TYPE_COMMAND_BUFFER = 6,+ VK_OBJECT_TYPE_FENCE = 7,+ VK_OBJECT_TYPE_DEVICE_MEMORY = 8,+ VK_OBJECT_TYPE_BUFFER = 9,+ VK_OBJECT_TYPE_IMAGE = 10,+ VK_OBJECT_TYPE_EVENT = 11,+ VK_OBJECT_TYPE_QUERY_POOL = 12,+ VK_OBJECT_TYPE_BUFFER_VIEW = 13,+ VK_OBJECT_TYPE_IMAGE_VIEW = 14,+ VK_OBJECT_TYPE_SHADER_MODULE = 15,+ VK_OBJECT_TYPE_PIPELINE_CACHE = 16,+ VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,+ VK_OBJECT_TYPE_RENDER_PASS = 18,+ VK_OBJECT_TYPE_PIPELINE = 19,+ VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,+ VK_OBJECT_TYPE_SAMPLER = 21,+ VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,+ VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,+ VK_OBJECT_TYPE_FRAMEBUFFER = 24,+ VK_OBJECT_TYPE_COMMAND_POOL = 25,+ VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,+ VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,+ VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,+ VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,+ VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000+} VkObjectType;+typedef enum VkDescriptorUpdateTemplateType {+ VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0+} VkDescriptorUpdateTemplateType;++typedef enum VkPointClippingBehavior {+ VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,+ VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1+} VkPointClippingBehavior;+typedef enum VkColorSpaceKHR {+ VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,+ VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR+} VkColorSpaceKHR;+typedef enum VkCompositeAlphaFlagBitsKHR {+ VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1,+ VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2,+ VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4,+ VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8+} VkCompositeAlphaFlagBitsKHR;+typedef enum VkPresentModeKHR {+ VK_PRESENT_MODE_IMMEDIATE_KHR = 0,+ VK_PRESENT_MODE_MAILBOX_KHR = 1,+ VK_PRESENT_MODE_FIFO_KHR = 2,+ VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3+} VkPresentModeKHR;+typedef enum VkSurfaceTransformFlagBitsKHR {+ VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1,+ VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2,+ VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4,+ VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8,+ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16,+ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32,+ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64,+ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128,+ VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256+} VkSurfaceTransformFlagBitsKHR;+typedef enum VkDebugReportFlagBitsEXT {+ VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1,+ VK_DEBUG_REPORT_WARNING_BIT_EXT = 2,+ VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4,+ VK_DEBUG_REPORT_ERROR_BIT_EXT = 8,+ VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16+} VkDebugReportFlagBitsEXT;+typedef enum VkDebugReportObjectTypeEXT {+ VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,+ VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,+ VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,+ VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,+ VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,+ VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,+ VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,+ VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,+ VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,+ VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,+ VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,+ VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,+ VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,+ VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,+ VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,+ VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,+ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,+ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,+ VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,+ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,+ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,+ VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,+ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,+ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,+ VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,+ VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,+ VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,+ VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,+ VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,+ VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,+ VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,+ VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,+ VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,+ VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,+ VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,+ VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,+ VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000,+ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000+} VkDebugReportObjectTypeEXT;+typedef enum VkExternalMemoryHandleTypeFlagBits {+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1,+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2,+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4,+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8,+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16,+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32,+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64+} VkExternalMemoryHandleTypeFlagBits;+typedef enum VkExternalMemoryFeatureFlagBits {+ VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1,+ VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2,+ VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4+} VkExternalMemoryFeatureFlagBits;+typedef enum VkExternalSemaphoreHandleTypeFlagBits {+ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1,+ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2,+ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4,+ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8,+ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16+} VkExternalSemaphoreHandleTypeFlagBits;+typedef enum VkExternalSemaphoreFeatureFlagBits {+ VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1,+ VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2+} VkExternalSemaphoreFeatureFlagBits;+typedef enum VkSemaphoreImportFlagBits {+ VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1+} VkSemaphoreImportFlagBits;+typedef enum VkExternalFenceHandleTypeFlagBits {+ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1,+ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2,+ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4,+ VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8+} VkExternalFenceHandleTypeFlagBits;+typedef enum VkExternalFenceFeatureFlagBits {+ VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1,+ VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2+} VkExternalFenceFeatureFlagBits;+typedef enum VkFenceImportFlagBits {+ VK_FENCE_IMPORT_TEMPORARY_BIT = 1+} VkFenceImportFlagBits;+typedef enum VkPeerMemoryFeatureFlagBits {+ VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1,+ VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2,+ VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4,+ VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8+} VkPeerMemoryFeatureFlagBits;+typedef enum VkMemoryAllocateFlagBits {+ VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1+} VkMemoryAllocateFlagBits;+typedef enum VkDeviceGroupPresentModeFlagBitsKHR {+ VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1,+ VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2,+ VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4,+ VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8+} VkDeviceGroupPresentModeFlagBitsKHR;+typedef enum VkSwapchainCreateFlagBitsKHR {+ VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1,+ VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2+} VkSwapchainCreateFlagBitsKHR;+typedef enum VkSubgroupFeatureFlagBits {+ VK_SUBGROUP_FEATURE_BASIC_BIT = 1,+ VK_SUBGROUP_FEATURE_VOTE_BIT = 2,+ VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4,+ VK_SUBGROUP_FEATURE_BALLOT_BIT = 8,+ VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16,+ VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32,+ VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64,+ VK_SUBGROUP_FEATURE_QUAD_BIT = 128+} VkSubgroupFeatureFlagBits;+typedef enum VkTessellationDomainOrigin {+ VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,+ VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1+} VkTessellationDomainOrigin;+typedef enum VkSamplerYcbcrModelConversion {+ VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,+ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,+ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,+ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,+ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4+} VkSamplerYcbcrModelConversion;+typedef enum VkSamplerYcbcrRange {+ VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,+ VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1+} VkSamplerYcbcrRange;+typedef enum VkChromaLocation {+ VK_CHROMA_LOCATION_COSITED_EVEN = 0,+ VK_CHROMA_LOCATION_MIDPOINT = 1+} VkChromaLocation;+typedef enum VkVendorId {+ VK_VENDOR_ID_VIV = 0x10001,+ VK_VENDOR_ID_VSI = 0x10002,+ VK_VENDOR_ID_KAZAN = 0x10003+} VkVendorId;+typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(+ void* pUserData,+ size_t size,+ VkInternalAllocationType allocationType,+ VkSystemAllocationScope allocationScope);+typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(+ void* pUserData,+ size_t size,+ VkInternalAllocationType allocationType,+ VkSystemAllocationScope allocationScope);+typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(+ void* pUserData,+ void* pOriginal,+ size_t size,+ size_t alignment,+ VkSystemAllocationScope allocationScope);+typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(+ void* pUserData,+ size_t size,+ size_t alignment,+ VkSystemAllocationScope allocationScope);+typedef void (VKAPI_PTR *PFN_vkFreeFunction)(+ void* pUserData,+ void* pMemory);+typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);+typedef struct VkBaseOutStructure {+ VkStructureType sType;+ struct VkBaseOutStructure * pNext;+} VkBaseOutStructure;+typedef struct VkBaseInStructure {+ VkStructureType sType;+ const struct VkBaseInStructure * pNext;+} VkBaseInStructure;+typedef struct VkOffset2D {+ int32_t x;+ int32_t y;+} VkOffset2D;+typedef struct VkOffset3D {+ int32_t x;+ int32_t y;+ int32_t z;+} VkOffset3D;+typedef struct VkExtent2D {+ uint32_t width;+ uint32_t height;+} VkExtent2D;+typedef struct VkExtent3D {+ uint32_t width;+ uint32_t height;+ uint32_t depth;+} VkExtent3D;+typedef struct VkViewport {+ float x;+ float y;+ float width;+ float height;+ float minDepth;+ float maxDepth;+} VkViewport;+typedef struct VkRect2D {+ VkOffset2D offset;+ VkExtent2D extent;+} VkRect2D;+typedef struct VkClearRect {+ VkRect2D rect;+ uint32_t baseArrayLayer;+ uint32_t layerCount;+} VkClearRect;+typedef struct VkComponentMapping {+ VkComponentSwizzle r;+ VkComponentSwizzle g;+ VkComponentSwizzle b;+ VkComponentSwizzle a;+} VkComponentMapping;+typedef struct VkExtensionProperties {+ char extensionName [ VK_MAX_EXTENSION_NAME_SIZE ];+ uint32_t specVersion;+} VkExtensionProperties;+typedef struct VkLayerProperties {+ char layerName [ VK_MAX_EXTENSION_NAME_SIZE ];+ uint32_t specVersion;+ uint32_t implementationVersion;+ char description [ VK_MAX_DESCRIPTION_SIZE ];+} VkLayerProperties;+typedef struct VkApplicationInfo {+ VkStructureType sType;+ const void * pNext;+ const char * pApplicationName;+ uint32_t applicationVersion;+ const char * pEngineName;+ uint32_t engineVersion;+ uint32_t apiVersion;+} VkApplicationInfo;+typedef struct VkAllocationCallbacks {+ void * pUserData;+ PFN_vkAllocationFunction pfnAllocation;+ PFN_vkReallocationFunction pfnReallocation;+ PFN_vkFreeFunction pfnFree;+ PFN_vkInternalAllocationNotification pfnInternalAllocation;+ PFN_vkInternalFreeNotification pfnInternalFree;+} VkAllocationCallbacks;+typedef struct VkDescriptorImageInfo {+ VkSampler sampler;+ VkImageView imageView;+ VkImageLayout imageLayout;+} VkDescriptorImageInfo;+typedef struct VkCopyDescriptorSet {+ VkStructureType sType;+ const void * pNext;+ VkDescriptorSet srcSet;+ uint32_t srcBinding;+ uint32_t srcArrayElement;+ VkDescriptorSet dstSet;+ uint32_t dstBinding;+ uint32_t dstArrayElement;+ uint32_t descriptorCount;+} VkCopyDescriptorSet;+typedef struct VkDescriptorPoolSize {+ VkDescriptorType type;+ uint32_t descriptorCount;+} VkDescriptorPoolSize;+typedef struct VkDescriptorSetAllocateInfo {+ VkStructureType sType;+ const void * pNext;+ VkDescriptorPool descriptorPool;+ uint32_t descriptorSetCount;+ const VkDescriptorSetLayout * pSetLayouts;+} VkDescriptorSetAllocateInfo;+typedef struct VkSpecializationMapEntry {+ uint32_t constantID;+ uint32_t offset;+ size_t size;+} VkSpecializationMapEntry;+typedef struct VkSpecializationInfo {+ uint32_t mapEntryCount;+ const VkSpecializationMapEntry * pMapEntries;+ size_t dataSize;+ const void * pData;+} VkSpecializationInfo;+typedef struct VkVertexInputBindingDescription {+ uint32_t binding;+ uint32_t stride;+ VkVertexInputRate inputRate;+} VkVertexInputBindingDescription;+typedef struct VkVertexInputAttributeDescription {+ uint32_t location;+ uint32_t binding;+ VkFormat format;+ uint32_t offset;+} VkVertexInputAttributeDescription;+typedef struct VkStencilOpState {+ VkStencilOp failOp;+ VkStencilOp passOp;+ VkStencilOp depthFailOp;+ VkCompareOp compareOp;+ uint32_t compareMask;+ uint32_t writeMask;+ uint32_t reference;+} VkStencilOpState;+typedef struct VkCommandBufferAllocateInfo {+ VkStructureType sType;+ const void * pNext;+ VkCommandPool commandPool;+ VkCommandBufferLevel level;+ uint32_t commandBufferCount;+} VkCommandBufferAllocateInfo;+typedef union VkClearColorValue {+ float float32 [4];+ int32_t int32 [4];+ uint32_t uint32 [4];+} VkClearColorValue;+typedef struct VkClearDepthStencilValue {+ float depth;+ uint32_t stencil;+} VkClearDepthStencilValue;+typedef union VkClearValue {+ VkClearColorValue color;+ VkClearDepthStencilValue depthStencil;+} VkClearValue;+typedef struct VkAttachmentReference {+ uint32_t attachment;+ VkImageLayout layout;+} VkAttachmentReference;+typedef struct VkDrawIndirectCommand {+ uint32_t vertexCount;+ uint32_t instanceCount;+ uint32_t firstVertex;+ uint32_t firstInstance;+} VkDrawIndirectCommand;+typedef struct VkDrawIndexedIndirectCommand {+ uint32_t indexCount;+ uint32_t instanceCount;+ uint32_t firstIndex;+ int32_t vertexOffset;+ uint32_t firstInstance;+} VkDrawIndexedIndirectCommand;+typedef struct VkDispatchIndirectCommand {+ uint32_t x;+ uint32_t y;+ uint32_t z;+} VkDispatchIndirectCommand;+typedef struct VkSurfaceFormatKHR {+ VkFormat format;+ VkColorSpaceKHR colorSpace;+} VkSurfaceFormatKHR;+typedef struct VkPresentInfoKHR {+ VkStructureType sType;+ const void * pNext;+ uint32_t waitSemaphoreCount;+ const VkSemaphore * pWaitSemaphores;+ uint32_t swapchainCount;+ const VkSwapchainKHR * pSwapchains;+ const uint32_t * pImageIndices;+ VkResult * pResults;+} VkPresentInfoKHR;+typedef struct VkPhysicalDeviceExternalImageFormatInfo {+ VkStructureType sType;+ const void * pNext;+ VkExternalMemoryHandleTypeFlagBits handleType;+} VkPhysicalDeviceExternalImageFormatInfo;+typedef struct VkPhysicalDeviceExternalSemaphoreInfo {+ VkStructureType sType;+ const void * pNext;+ VkExternalSemaphoreHandleTypeFlagBits handleType;+} VkPhysicalDeviceExternalSemaphoreInfo;+typedef struct VkPhysicalDeviceExternalFenceInfo {+ VkStructureType sType;+ const void * pNext;+ VkExternalFenceHandleTypeFlagBits handleType;+} VkPhysicalDeviceExternalFenceInfo;+typedef struct VkPhysicalDeviceMultiviewProperties {+ VkStructureType sType;+ void * pNext;+ uint32_t maxMultiviewViewCount;+ uint32_t maxMultiviewInstanceIndex;+} VkPhysicalDeviceMultiviewProperties;+typedef struct VkRenderPassMultiviewCreateInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t subpassCount;+ const uint32_t * pViewMasks;+ uint32_t dependencyCount;+ const int32_t * pViewOffsets;+ uint32_t correlationMaskCount;+ const uint32_t * pCorrelationMasks;+} VkRenderPassMultiviewCreateInfo;+typedef struct VkBindBufferMemoryDeviceGroupInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t deviceIndexCount;+ const uint32_t * pDeviceIndices;+} VkBindBufferMemoryDeviceGroupInfo;+typedef struct VkBindImageMemoryDeviceGroupInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t deviceIndexCount;+ const uint32_t * pDeviceIndices;+ uint32_t splitInstanceBindRegionCount;+ const VkRect2D * pSplitInstanceBindRegions;+} VkBindImageMemoryDeviceGroupInfo;+typedef struct VkDeviceGroupRenderPassBeginInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t deviceMask;+ uint32_t deviceRenderAreaCount;+ const VkRect2D * pDeviceRenderAreas;+} VkDeviceGroupRenderPassBeginInfo;+typedef struct VkDeviceGroupCommandBufferBeginInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t deviceMask;+} VkDeviceGroupCommandBufferBeginInfo;+typedef struct VkDeviceGroupSubmitInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t waitSemaphoreCount;+ const uint32_t * pWaitSemaphoreDeviceIndices;+ uint32_t commandBufferCount;+ const uint32_t * pCommandBufferDeviceMasks;+ uint32_t signalSemaphoreCount;+ const uint32_t * pSignalSemaphoreDeviceIndices;+} VkDeviceGroupSubmitInfo;+typedef struct VkDeviceGroupBindSparseInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t resourceDeviceIndex;+ uint32_t memoryDeviceIndex;+} VkDeviceGroupBindSparseInfo;+typedef struct VkImageSwapchainCreateInfoKHR {+ VkStructureType sType;+ const void * pNext;+ VkSwapchainKHR swapchain;+} VkImageSwapchainCreateInfoKHR;+typedef struct VkBindImageMemorySwapchainInfoKHR {+ VkStructureType sType;+ const void * pNext;+ VkSwapchainKHR swapchain;+ uint32_t imageIndex;+} VkBindImageMemorySwapchainInfoKHR;+typedef struct VkAcquireNextImageInfoKHR {+ VkStructureType sType;+ const void * pNext;+ VkSwapchainKHR swapchain;+ uint64_t timeout;+ VkSemaphore semaphore;+ VkFence fence;+ uint32_t deviceMask;+} VkAcquireNextImageInfoKHR;+typedef struct VkDeviceGroupPresentInfoKHR {+ VkStructureType sType;+ const void * pNext;+ uint32_t swapchainCount;+ const uint32_t * pDeviceMasks;+ VkDeviceGroupPresentModeFlagBitsKHR mode;+} VkDeviceGroupPresentInfoKHR;+typedef struct VkDeviceGroupDeviceCreateInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t physicalDeviceCount;+ const VkPhysicalDevice * pPhysicalDevices;+} VkDeviceGroupDeviceCreateInfo;+typedef struct VkDescriptorUpdateTemplateEntry {+ uint32_t dstBinding;+ uint32_t dstArrayElement;+ uint32_t descriptorCount;+ VkDescriptorType descriptorType;+ size_t offset;+ size_t stride;+} VkDescriptorUpdateTemplateEntry;+typedef struct VkBufferMemoryRequirementsInfo2 {+ VkStructureType sType;+ const void * pNext;+ VkBuffer buffer;+} VkBufferMemoryRequirementsInfo2;+typedef struct VkImageMemoryRequirementsInfo2 {+ VkStructureType sType;+ const void * pNext;+ VkImage image;+} VkImageMemoryRequirementsInfo2;+typedef struct VkImageSparseMemoryRequirementsInfo2 {+ VkStructureType sType;+ const void * pNext;+ VkImage image;+} VkImageSparseMemoryRequirementsInfo2;+typedef struct VkPhysicalDevicePointClippingProperties {+ VkStructureType sType;+ void * pNext;+ VkPointClippingBehavior pointClippingBehavior;+} VkPhysicalDevicePointClippingProperties;+typedef struct VkMemoryDedicatedAllocateInfo {+ VkStructureType sType;+ const void * pNext;+ VkImage image;+ VkBuffer buffer;+} VkMemoryDedicatedAllocateInfo;+typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkTessellationDomainOrigin domainOrigin;+} VkPipelineTessellationDomainOriginStateCreateInfo;+typedef struct VkSamplerYcbcrConversionInfo {+ VkStructureType sType;+ const void * pNext;+ VkSamplerYcbcrConversion conversion;+} VkSamplerYcbcrConversionInfo;+typedef struct VkBindImagePlaneMemoryInfo {+ VkStructureType sType;+ const void * pNext;+ VkImageAspectFlagBits planeAspect;+} VkBindImagePlaneMemoryInfo;+typedef struct VkImagePlaneMemoryRequirementsInfo {+ VkStructureType sType;+ const void * pNext;+ VkImageAspectFlagBits planeAspect;+} VkImagePlaneMemoryRequirementsInfo;+typedef struct VkSamplerYcbcrConversionImageFormatProperties {+ VkStructureType sType;+ void * pNext;+ uint32_t combinedImageSamplerDescriptorCount;+} VkSamplerYcbcrConversionImageFormatProperties;+typedef uint32_t VkSampleMask;+typedef uint32_t VkBool32;+typedef uint32_t VkFlags;+typedef uint64_t VkDeviceSize;+typedef VkFlags VkFramebufferCreateFlags;+typedef VkFlags VkQueryPoolCreateFlags;+typedef VkFlags VkRenderPassCreateFlags;+typedef VkFlags VkSamplerCreateFlags;+typedef VkFlags VkPipelineLayoutCreateFlags;+typedef VkFlags VkPipelineCacheCreateFlags;+typedef VkFlags VkPipelineDepthStencilStateCreateFlags;+typedef VkFlags VkPipelineDynamicStateCreateFlags;+typedef VkFlags VkPipelineColorBlendStateCreateFlags;+typedef VkFlags VkPipelineMultisampleStateCreateFlags;+typedef VkFlags VkPipelineRasterizationStateCreateFlags;+typedef VkFlags VkPipelineViewportStateCreateFlags;+typedef VkFlags VkPipelineTessellationStateCreateFlags;+typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;+typedef VkFlags VkPipelineVertexInputStateCreateFlags;+typedef VkFlags VkPipelineShaderStageCreateFlags;+typedef VkFlags VkDescriptorSetLayoutCreateFlags;+typedef VkFlags VkBufferViewCreateFlags;+typedef VkFlags VkInstanceCreateFlags;+typedef VkFlags VkDeviceCreateFlags;+typedef VkFlags VkDeviceQueueCreateFlags;+typedef VkFlags VkQueueFlags;+typedef VkFlags VkMemoryPropertyFlags;+typedef VkFlags VkMemoryHeapFlags;+typedef VkFlags VkAccessFlags;+typedef VkFlags VkBufferUsageFlags;+typedef VkFlags VkBufferCreateFlags;+typedef VkFlags VkShaderStageFlags;+typedef VkFlags VkImageUsageFlags;+typedef VkFlags VkImageCreateFlags;+typedef VkFlags VkImageViewCreateFlags;+typedef VkFlags VkPipelineCreateFlags;+typedef VkFlags VkColorComponentFlags;+typedef VkFlags VkFenceCreateFlags;+typedef VkFlags VkSemaphoreCreateFlags;+typedef VkFlags VkFormatFeatureFlags;+typedef VkFlags VkQueryControlFlags;+typedef VkFlags VkQueryResultFlags;+typedef VkFlags VkShaderModuleCreateFlags;+typedef VkFlags VkEventCreateFlags;+typedef VkFlags VkCommandPoolCreateFlags;+typedef VkFlags VkCommandPoolResetFlags;+typedef VkFlags VkCommandBufferResetFlags;+typedef VkFlags VkCommandBufferUsageFlags;+typedef VkFlags VkQueryPipelineStatisticFlags;+typedef VkFlags VkMemoryMapFlags;+typedef VkFlags VkImageAspectFlags;+typedef VkFlags VkSparseMemoryBindFlags;+typedef VkFlags VkSparseImageFormatFlags;+typedef VkFlags VkSubpassDescriptionFlags;+typedef VkFlags VkPipelineStageFlags;+typedef VkFlags VkSampleCountFlags;+typedef VkFlags VkAttachmentDescriptionFlags;+typedef VkFlags VkStencilFaceFlags;+typedef VkFlags VkCullModeFlags;+typedef VkFlags VkDescriptorPoolCreateFlags;+typedef VkFlags VkDescriptorPoolResetFlags;+typedef VkFlags VkDependencyFlags;+typedef VkFlags VkSubgroupFeatureFlags;+typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;+typedef VkFlags VkCompositeAlphaFlagsKHR;+typedef VkFlags VkSurfaceTransformFlagsKHR;+typedef VkFlags VkSwapchainCreateFlagsKHR;+typedef VkFlags VkPeerMemoryFeatureFlags;+typedef VkFlags VkMemoryAllocateFlags;+typedef VkFlags VkDeviceGroupPresentModeFlagsKHR;+typedef VkFlags VkDebugReportFlagsEXT;+typedef VkFlags VkCommandPoolTrimFlags;+typedef VkFlags VkExternalMemoryHandleTypeFlags;+typedef VkFlags VkExternalMemoryFeatureFlags;+typedef VkFlags VkExternalSemaphoreHandleTypeFlags;+typedef VkFlags VkExternalSemaphoreFeatureFlags;+typedef VkFlags VkSemaphoreImportFlags;+typedef VkFlags VkExternalFenceHandleTypeFlags;+typedef VkFlags VkExternalFenceFeatureFlags;+typedef VkFlags VkFenceImportFlags;+typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(+ VkDebugReportFlagsEXT flags,+ VkDebugReportObjectTypeEXT objectType,+ uint64_t object,+ size_t location,+ int32_t messageCode,+ const char* pLayerPrefix,+ const char* pMessage,+ void* pUserData);+typedef struct VkDeviceQueueCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkDeviceQueueCreateFlags flags;+ uint32_t queueFamilyIndex;+ uint32_t queueCount;+ const float * pQueuePriorities;+} VkDeviceQueueCreateInfo;+typedef struct VkInstanceCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkInstanceCreateFlags flags;+ const VkApplicationInfo * pApplicationInfo;+ uint32_t enabledLayerCount;+ const char * const* ppEnabledLayerNames;+ uint32_t enabledExtensionCount;+ const char * const* ppEnabledExtensionNames;+} VkInstanceCreateInfo;+typedef struct VkQueueFamilyProperties {+ VkQueueFlags queueFlags;+ uint32_t queueCount;+ uint32_t timestampValidBits;+ VkExtent3D minImageTransferGranularity;+} VkQueueFamilyProperties;+typedef struct VkMemoryAllocateInfo {+ VkStructureType sType;+ const void * pNext;+ VkDeviceSize allocationSize;+ uint32_t memoryTypeIndex;+} VkMemoryAllocateInfo;+typedef struct VkMemoryRequirements {+ VkDeviceSize size;+ VkDeviceSize alignment;+ uint32_t memoryTypeBits;+} VkMemoryRequirements;+typedef struct VkSparseImageFormatProperties {+ VkImageAspectFlags aspectMask;+ VkExtent3D imageGranularity;+ VkSparseImageFormatFlags flags;+} VkSparseImageFormatProperties;+typedef struct VkSparseImageMemoryRequirements {+ VkSparseImageFormatProperties formatProperties;+ uint32_t imageMipTailFirstLod;+ VkDeviceSize imageMipTailSize;+ VkDeviceSize imageMipTailOffset;+ VkDeviceSize imageMipTailStride;+} VkSparseImageMemoryRequirements;+typedef struct VkMemoryType {+ VkMemoryPropertyFlags propertyFlags;+ uint32_t heapIndex;+} VkMemoryType;+typedef struct VkMemoryHeap {+ VkDeviceSize size;+ VkMemoryHeapFlags flags;+} VkMemoryHeap;+typedef struct VkMappedMemoryRange {+ VkStructureType sType;+ const void * pNext;+ VkDeviceMemory memory;+ VkDeviceSize offset;+ VkDeviceSize size;+} VkMappedMemoryRange;+typedef struct VkFormatProperties {+ VkFormatFeatureFlags linearTilingFeatures;+ VkFormatFeatureFlags optimalTilingFeatures;+ VkFormatFeatureFlags bufferFeatures;+} VkFormatProperties;+typedef struct VkImageFormatProperties {+ VkExtent3D maxExtent;+ uint32_t maxMipLevels;+ uint32_t maxArrayLayers;+ VkSampleCountFlags sampleCounts;+ VkDeviceSize maxResourceSize;+} VkImageFormatProperties;+typedef struct VkDescriptorBufferInfo {+ VkBuffer buffer;+ VkDeviceSize offset;+ VkDeviceSize range;+} VkDescriptorBufferInfo;+typedef struct VkWriteDescriptorSet {+ VkStructureType sType;+ const void * pNext;+ VkDescriptorSet dstSet;+ uint32_t dstBinding;+ uint32_t dstArrayElement;+ uint32_t descriptorCount;+ VkDescriptorType descriptorType;+ const VkDescriptorImageInfo * pImageInfo;+ const VkDescriptorBufferInfo * pBufferInfo;+ const VkBufferView * pTexelBufferView;+} VkWriteDescriptorSet;+typedef struct VkBufferCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkBufferCreateFlags flags;+ VkDeviceSize size;+ VkBufferUsageFlags usage;+ VkSharingMode sharingMode;+ uint32_t queueFamilyIndexCount;+ const uint32_t * pQueueFamilyIndices;+} VkBufferCreateInfo;+typedef struct VkBufferViewCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkBufferViewCreateFlags flags;+ VkBuffer buffer;+ VkFormat format;+ VkDeviceSize offset;+ VkDeviceSize range;+} VkBufferViewCreateInfo;+typedef struct VkImageSubresource {+ VkImageAspectFlags aspectMask;+ uint32_t mipLevel;+ uint32_t arrayLayer;+} VkImageSubresource;+typedef struct VkImageSubresourceLayers {+ VkImageAspectFlags aspectMask;+ uint32_t mipLevel;+ uint32_t baseArrayLayer;+ uint32_t layerCount;+} VkImageSubresourceLayers;+typedef struct VkImageSubresourceRange {+ VkImageAspectFlags aspectMask;+ uint32_t baseMipLevel;+ uint32_t levelCount;+ uint32_t baseArrayLayer;+ uint32_t layerCount;+} VkImageSubresourceRange;+typedef struct VkMemoryBarrier {+ VkStructureType sType;+ const void * pNext;+ VkAccessFlags srcAccessMask;+ VkAccessFlags dstAccessMask;+} VkMemoryBarrier;+typedef struct VkBufferMemoryBarrier {+ VkStructureType sType;+ const void * pNext;+ VkAccessFlags srcAccessMask;+ VkAccessFlags dstAccessMask;+ uint32_t srcQueueFamilyIndex;+ uint32_t dstQueueFamilyIndex;+ VkBuffer buffer;+ VkDeviceSize offset;+ VkDeviceSize size;+} VkBufferMemoryBarrier;+typedef struct VkImageMemoryBarrier {+ VkStructureType sType;+ const void * pNext;+ VkAccessFlags srcAccessMask;+ VkAccessFlags dstAccessMask;+ VkImageLayout oldLayout;+ VkImageLayout newLayout;+ uint32_t srcQueueFamilyIndex;+ uint32_t dstQueueFamilyIndex;+ VkImage image;+ VkImageSubresourceRange subresourceRange;+} VkImageMemoryBarrier;+typedef struct VkImageCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkImageCreateFlags flags;+ VkImageType imageType;+ VkFormat format;+ VkExtent3D extent;+ uint32_t mipLevels;+ uint32_t arrayLayers;+ VkSampleCountFlagBits samples;+ VkImageTiling tiling;+ VkImageUsageFlags usage;+ VkSharingMode sharingMode;+ uint32_t queueFamilyIndexCount;+ const uint32_t * pQueueFamilyIndices;+ VkImageLayout initialLayout;+} VkImageCreateInfo;+typedef struct VkSubresourceLayout {+ VkDeviceSize offset;+ VkDeviceSize size;+ VkDeviceSize rowPitch;+ VkDeviceSize arrayPitch;+ VkDeviceSize depthPitch;+} VkSubresourceLayout;+typedef struct VkImageViewCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkImageViewCreateFlags flags;+ VkImage image;+ VkImageViewType viewType;+ VkFormat format;+ VkComponentMapping components;+ VkImageSubresourceRange subresourceRange;+} VkImageViewCreateInfo;+typedef struct VkBufferCopy {+ VkDeviceSize srcOffset;+ VkDeviceSize dstOffset;+ VkDeviceSize size;+} VkBufferCopy;+typedef struct VkSparseMemoryBind {+ VkDeviceSize resourceOffset;+ VkDeviceSize size;+ VkDeviceMemory memory;+ VkDeviceSize memoryOffset;+ VkSparseMemoryBindFlags flags;+} VkSparseMemoryBind;+typedef struct VkSparseImageMemoryBind {+ VkImageSubresource subresource;+ VkOffset3D offset;+ VkExtent3D extent;+ VkDeviceMemory memory;+ VkDeviceSize memoryOffset;+ VkSparseMemoryBindFlags flags;+} VkSparseImageMemoryBind;+typedef struct VkSparseBufferMemoryBindInfo {+ VkBuffer buffer;+ uint32_t bindCount;+ const VkSparseMemoryBind * pBinds;+} VkSparseBufferMemoryBindInfo;+typedef struct VkSparseImageOpaqueMemoryBindInfo {+ VkImage image;+ uint32_t bindCount;+ const VkSparseMemoryBind * pBinds;+} VkSparseImageOpaqueMemoryBindInfo;+typedef struct VkSparseImageMemoryBindInfo {+ VkImage image;+ uint32_t bindCount;+ const VkSparseImageMemoryBind * pBinds;+} VkSparseImageMemoryBindInfo;+typedef struct VkBindSparseInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t waitSemaphoreCount;+ const VkSemaphore * pWaitSemaphores;+ uint32_t bufferBindCount;+ const VkSparseBufferMemoryBindInfo * pBufferBinds;+ uint32_t imageOpaqueBindCount;+ const VkSparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds;+ uint32_t imageBindCount;+ const VkSparseImageMemoryBindInfo * pImageBinds;+ uint32_t signalSemaphoreCount;+ const VkSemaphore * pSignalSemaphores;+} VkBindSparseInfo;+typedef struct VkImageCopy {+ VkImageSubresourceLayers srcSubresource;+ VkOffset3D srcOffset;+ VkImageSubresourceLayers dstSubresource;+ VkOffset3D dstOffset;+ VkExtent3D extent;+} VkImageCopy;+typedef struct VkImageBlit {+ VkImageSubresourceLayers srcSubresource;+ VkOffset3D srcOffsets [2];+ VkImageSubresourceLayers dstSubresource;+ VkOffset3D dstOffsets [2];+} VkImageBlit;+typedef struct VkBufferImageCopy {+ VkDeviceSize bufferOffset;+ uint32_t bufferRowLength;+ uint32_t bufferImageHeight;+ VkImageSubresourceLayers imageSubresource;+ VkOffset3D imageOffset;+ VkExtent3D imageExtent;+} VkBufferImageCopy;+typedef struct VkImageResolve {+ VkImageSubresourceLayers srcSubresource;+ VkOffset3D srcOffset;+ VkImageSubresourceLayers dstSubresource;+ VkOffset3D dstOffset;+ VkExtent3D extent;+} VkImageResolve;+typedef struct VkShaderModuleCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkShaderModuleCreateFlags flags;+ size_t codeSize;+ const uint32_t * pCode;+} VkShaderModuleCreateInfo;+typedef struct VkDescriptorSetLayoutBinding {+ uint32_t binding;+ VkDescriptorType descriptorType;+ uint32_t descriptorCount;+ VkShaderStageFlags stageFlags;+ const VkSampler * pImmutableSamplers;+} VkDescriptorSetLayoutBinding;+typedef struct VkDescriptorSetLayoutCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkDescriptorSetLayoutCreateFlags flags;+ uint32_t bindingCount;+ const VkDescriptorSetLayoutBinding * pBindings;+} VkDescriptorSetLayoutCreateInfo;+typedef struct VkDescriptorPoolCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkDescriptorPoolCreateFlags flags;+ uint32_t maxSets;+ uint32_t poolSizeCount;+ const VkDescriptorPoolSize * pPoolSizes;+} VkDescriptorPoolCreateInfo;+typedef struct VkPipelineShaderStageCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineShaderStageCreateFlags flags;+ VkShaderStageFlagBits stage;+ VkShaderModule module;+ const char * pName;+ const VkSpecializationInfo * pSpecializationInfo;+} VkPipelineShaderStageCreateInfo;+typedef struct VkComputePipelineCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineCreateFlags flags;+ VkPipelineShaderStageCreateInfo stage;+ VkPipelineLayout layout;+ VkPipeline basePipelineHandle;+ int32_t basePipelineIndex;+} VkComputePipelineCreateInfo;+typedef struct VkPipelineVertexInputStateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineVertexInputStateCreateFlags flags;+ uint32_t vertexBindingDescriptionCount;+ const VkVertexInputBindingDescription * pVertexBindingDescriptions;+ uint32_t vertexAttributeDescriptionCount;+ const VkVertexInputAttributeDescription * pVertexAttributeDescriptions;+} VkPipelineVertexInputStateCreateInfo;+typedef struct VkPipelineInputAssemblyStateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineInputAssemblyStateCreateFlags flags;+ VkPrimitiveTopology topology;+ VkBool32 primitiveRestartEnable;+} VkPipelineInputAssemblyStateCreateInfo;+typedef struct VkPipelineTessellationStateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineTessellationStateCreateFlags flags;+ uint32_t patchControlPoints;+} VkPipelineTessellationStateCreateInfo;+typedef struct VkPipelineViewportStateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineViewportStateCreateFlags flags;+ uint32_t viewportCount;+ const VkViewport * pViewports;+ uint32_t scissorCount;+ const VkRect2D * pScissors;+} VkPipelineViewportStateCreateInfo;+typedef struct VkPipelineRasterizationStateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineRasterizationStateCreateFlags flags;+ VkBool32 depthClampEnable;+ VkBool32 rasterizerDiscardEnable;+ VkPolygonMode polygonMode;+ VkCullModeFlags cullMode;+ VkFrontFace frontFace;+ VkBool32 depthBiasEnable;+ float depthBiasConstantFactor;+ float depthBiasClamp;+ float depthBiasSlopeFactor;+ float lineWidth;+} VkPipelineRasterizationStateCreateInfo;+typedef struct VkPipelineMultisampleStateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineMultisampleStateCreateFlags flags;+ VkSampleCountFlagBits rasterizationSamples;+ VkBool32 sampleShadingEnable;+ float minSampleShading;+ const VkSampleMask * pSampleMask;+ VkBool32 alphaToCoverageEnable;+ VkBool32 alphaToOneEnable;+} VkPipelineMultisampleStateCreateInfo;+typedef struct VkPipelineColorBlendAttachmentState {+ VkBool32 blendEnable;+ VkBlendFactor srcColorBlendFactor;+ VkBlendFactor dstColorBlendFactor;+ VkBlendOp colorBlendOp;+ VkBlendFactor srcAlphaBlendFactor;+ VkBlendFactor dstAlphaBlendFactor;+ VkBlendOp alphaBlendOp;+ VkColorComponentFlags colorWriteMask;+} VkPipelineColorBlendAttachmentState;+typedef struct VkPipelineColorBlendStateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineColorBlendStateCreateFlags flags;+ VkBool32 logicOpEnable;+ VkLogicOp logicOp;+ uint32_t attachmentCount;+ const VkPipelineColorBlendAttachmentState * pAttachments;+ float blendConstants [4];+} VkPipelineColorBlendStateCreateInfo;+typedef struct VkPipelineDynamicStateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineDynamicStateCreateFlags flags;+ uint32_t dynamicStateCount;+ const VkDynamicState * pDynamicStates;+} VkPipelineDynamicStateCreateInfo;+typedef struct VkPipelineDepthStencilStateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineDepthStencilStateCreateFlags flags;+ VkBool32 depthTestEnable;+ VkBool32 depthWriteEnable;+ VkCompareOp depthCompareOp;+ VkBool32 depthBoundsTestEnable;+ VkBool32 stencilTestEnable;+ VkStencilOpState front;+ VkStencilOpState back;+ float minDepthBounds;+ float maxDepthBounds;+} VkPipelineDepthStencilStateCreateInfo;+typedef struct VkGraphicsPipelineCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineCreateFlags flags;+ uint32_t stageCount;+ const VkPipelineShaderStageCreateInfo * pStages;+ const VkPipelineVertexInputStateCreateInfo * pVertexInputState;+ const VkPipelineInputAssemblyStateCreateInfo * pInputAssemblyState;+ const VkPipelineTessellationStateCreateInfo * pTessellationState;+ const VkPipelineViewportStateCreateInfo * pViewportState;+ const VkPipelineRasterizationStateCreateInfo * pRasterizationState;+ const VkPipelineMultisampleStateCreateInfo * pMultisampleState;+ const VkPipelineDepthStencilStateCreateInfo * pDepthStencilState;+ const VkPipelineColorBlendStateCreateInfo * pColorBlendState;+ const VkPipelineDynamicStateCreateInfo * pDynamicState;+ VkPipelineLayout layout;+ VkRenderPass renderPass;+ uint32_t subpass;+ VkPipeline basePipelineHandle;+ int32_t basePipelineIndex;+} VkGraphicsPipelineCreateInfo;+typedef struct VkPipelineCacheCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineCacheCreateFlags flags;+ size_t initialDataSize;+ const void * pInitialData;+} VkPipelineCacheCreateInfo;+typedef struct VkPushConstantRange {+ VkShaderStageFlags stageFlags;+ uint32_t offset;+ uint32_t size;+} VkPushConstantRange;+typedef struct VkPipelineLayoutCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkPipelineLayoutCreateFlags flags;+ uint32_t setLayoutCount;+ const VkDescriptorSetLayout * pSetLayouts;+ uint32_t pushConstantRangeCount;+ const VkPushConstantRange * pPushConstantRanges;+} VkPipelineLayoutCreateInfo;+typedef struct VkSamplerCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkSamplerCreateFlags flags;+ VkFilter magFilter;+ VkFilter minFilter;+ VkSamplerMipmapMode mipmapMode;+ VkSamplerAddressMode addressModeU;+ VkSamplerAddressMode addressModeV;+ VkSamplerAddressMode addressModeW;+ float mipLodBias;+ VkBool32 anisotropyEnable;+ float maxAnisotropy;+ VkBool32 compareEnable;+ VkCompareOp compareOp;+ float minLod;+ float maxLod;+ VkBorderColor borderColor;+ VkBool32 unnormalizedCoordinates;+} VkSamplerCreateInfo;+typedef struct VkCommandPoolCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkCommandPoolCreateFlags flags;+ uint32_t queueFamilyIndex;+} VkCommandPoolCreateInfo;+typedef struct VkCommandBufferInheritanceInfo {+ VkStructureType sType;+ const void * pNext;+ VkRenderPass renderPass;+ uint32_t subpass;+ VkFramebuffer framebuffer;+ VkBool32 occlusionQueryEnable;+ VkQueryControlFlags queryFlags;+ VkQueryPipelineStatisticFlags pipelineStatistics;+} VkCommandBufferInheritanceInfo;+typedef struct VkCommandBufferBeginInfo {+ VkStructureType sType;+ const void * pNext;+ VkCommandBufferUsageFlags flags;+ const VkCommandBufferInheritanceInfo * pInheritanceInfo;+} VkCommandBufferBeginInfo;+typedef struct VkRenderPassBeginInfo {+ VkStructureType sType;+ const void * pNext;+ VkRenderPass renderPass;+ VkFramebuffer framebuffer;+ VkRect2D renderArea;+ uint32_t clearValueCount;+ const VkClearValue * pClearValues;+} VkRenderPassBeginInfo;+typedef struct VkClearAttachment {+ VkImageAspectFlags aspectMask;+ uint32_t colorAttachment;+ VkClearValue clearValue;+} VkClearAttachment;+typedef struct VkAttachmentDescription {+ VkAttachmentDescriptionFlags flags;+ VkFormat format;+ VkSampleCountFlagBits samples;+ VkAttachmentLoadOp loadOp;+ VkAttachmentStoreOp storeOp;+ VkAttachmentLoadOp stencilLoadOp;+ VkAttachmentStoreOp stencilStoreOp;+ VkImageLayout initialLayout;+ VkImageLayout finalLayout;+} VkAttachmentDescription;+typedef struct VkSubpassDescription {+ VkSubpassDescriptionFlags flags;+ VkPipelineBindPoint pipelineBindPoint;+ uint32_t inputAttachmentCount;+ const VkAttachmentReference * pInputAttachments;+ uint32_t colorAttachmentCount;+ const VkAttachmentReference * pColorAttachments;+ const VkAttachmentReference * pResolveAttachments;+ const VkAttachmentReference * pDepthStencilAttachment;+ uint32_t preserveAttachmentCount;+ const uint32_t * pPreserveAttachments;+} VkSubpassDescription;+typedef struct VkSubpassDependency {+ uint32_t srcSubpass;+ uint32_t dstSubpass;+ VkPipelineStageFlags srcStageMask;+ VkPipelineStageFlags dstStageMask;+ VkAccessFlags srcAccessMask;+ VkAccessFlags dstAccessMask;+ VkDependencyFlags dependencyFlags;+} VkSubpassDependency;+typedef struct VkRenderPassCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkRenderPassCreateFlags flags;+ uint32_t attachmentCount;+ const VkAttachmentDescription * pAttachments;+ uint32_t subpassCount;+ const VkSubpassDescription * pSubpasses;+ uint32_t dependencyCount;+ const VkSubpassDependency * pDependencies;+} VkRenderPassCreateInfo;+typedef struct VkEventCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkEventCreateFlags flags;+} VkEventCreateInfo;+typedef struct VkFenceCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkFenceCreateFlags flags;+} VkFenceCreateInfo;+typedef struct VkPhysicalDeviceFeatures {+ VkBool32 robustBufferAccess;+ VkBool32 fullDrawIndexUint32;+ VkBool32 imageCubeArray;+ VkBool32 independentBlend;+ VkBool32 geometryShader;+ VkBool32 tessellationShader;+ VkBool32 sampleRateShading;+ VkBool32 dualSrcBlend;+ VkBool32 logicOp;+ VkBool32 multiDrawIndirect;+ VkBool32 drawIndirectFirstInstance;+ VkBool32 depthClamp;+ VkBool32 depthBiasClamp;+ VkBool32 fillModeNonSolid;+ VkBool32 depthBounds;+ VkBool32 wideLines;+ VkBool32 largePoints;+ VkBool32 alphaToOne;+ VkBool32 multiViewport;+ VkBool32 samplerAnisotropy;+ VkBool32 textureCompressionETC2;+ VkBool32 textureCompressionASTC_LDR;+ VkBool32 textureCompressionBC;+ VkBool32 occlusionQueryPrecise;+ VkBool32 pipelineStatisticsQuery;+ VkBool32 vertexPipelineStoresAndAtomics;+ VkBool32 fragmentStoresAndAtomics;+ VkBool32 shaderTessellationAndGeometryPointSize;+ VkBool32 shaderImageGatherExtended;+ VkBool32 shaderStorageImageExtendedFormats;+ VkBool32 shaderStorageImageMultisample;+ VkBool32 shaderStorageImageReadWithoutFormat;+ VkBool32 shaderStorageImageWriteWithoutFormat;+ VkBool32 shaderUniformBufferArrayDynamicIndexing;+ VkBool32 shaderSampledImageArrayDynamicIndexing;+ VkBool32 shaderStorageBufferArrayDynamicIndexing;+ VkBool32 shaderStorageImageArrayDynamicIndexing;+ VkBool32 shaderClipDistance;+ VkBool32 shaderCullDistance;+ VkBool32 shaderFloat64;+ VkBool32 shaderInt64;+ VkBool32 shaderInt16;+ VkBool32 shaderResourceResidency;+ VkBool32 shaderResourceMinLod;+ VkBool32 sparseBinding;+ VkBool32 sparseResidencyBuffer;+ VkBool32 sparseResidencyImage2D;+ VkBool32 sparseResidencyImage3D;+ VkBool32 sparseResidency2Samples;+ VkBool32 sparseResidency4Samples;+ VkBool32 sparseResidency8Samples;+ VkBool32 sparseResidency16Samples;+ VkBool32 sparseResidencyAliased;+ VkBool32 variableMultisampleRate;+ VkBool32 inheritedQueries;+} VkPhysicalDeviceFeatures;+typedef struct VkPhysicalDeviceSparseProperties {+ VkBool32 residencyStandard2DBlockShape;+ VkBool32 residencyStandard2DMultisampleBlockShape;+ VkBool32 residencyStandard3DBlockShape;+ VkBool32 residencyAlignedMipSize;+ VkBool32 residencyNonResidentStrict;+} VkPhysicalDeviceSparseProperties;+typedef struct VkPhysicalDeviceLimits {+ uint32_t maxImageDimension1D;+ uint32_t maxImageDimension2D;+ uint32_t maxImageDimension3D;+ uint32_t maxImageDimensionCube;+ uint32_t maxImageArrayLayers;+ uint32_t maxTexelBufferElements;+ uint32_t maxUniformBufferRange;+ uint32_t maxStorageBufferRange;+ uint32_t maxPushConstantsSize;+ uint32_t maxMemoryAllocationCount;+ uint32_t maxSamplerAllocationCount;+ VkDeviceSize bufferImageGranularity;+ VkDeviceSize sparseAddressSpaceSize;+ uint32_t maxBoundDescriptorSets;+ uint32_t maxPerStageDescriptorSamplers;+ uint32_t maxPerStageDescriptorUniformBuffers;+ uint32_t maxPerStageDescriptorStorageBuffers;+ uint32_t maxPerStageDescriptorSampledImages;+ uint32_t maxPerStageDescriptorStorageImages;+ uint32_t maxPerStageDescriptorInputAttachments;+ uint32_t maxPerStageResources;+ uint32_t maxDescriptorSetSamplers;+ uint32_t maxDescriptorSetUniformBuffers;+ uint32_t maxDescriptorSetUniformBuffersDynamic;+ uint32_t maxDescriptorSetStorageBuffers;+ uint32_t maxDescriptorSetStorageBuffersDynamic;+ uint32_t maxDescriptorSetSampledImages;+ uint32_t maxDescriptorSetStorageImages;+ uint32_t maxDescriptorSetInputAttachments;+ uint32_t maxVertexInputAttributes;+ uint32_t maxVertexInputBindings;+ uint32_t maxVertexInputAttributeOffset;+ uint32_t maxVertexInputBindingStride;+ uint32_t maxVertexOutputComponents;+ uint32_t maxTessellationGenerationLevel;+ uint32_t maxTessellationPatchSize;+ uint32_t maxTessellationControlPerVertexInputComponents;+ uint32_t maxTessellationControlPerVertexOutputComponents;+ uint32_t maxTessellationControlPerPatchOutputComponents;+ uint32_t maxTessellationControlTotalOutputComponents;+ uint32_t maxTessellationEvaluationInputComponents;+ uint32_t maxTessellationEvaluationOutputComponents;+ uint32_t maxGeometryShaderInvocations;+ uint32_t maxGeometryInputComponents;+ uint32_t maxGeometryOutputComponents;+ uint32_t maxGeometryOutputVertices;+ uint32_t maxGeometryTotalOutputComponents;+ uint32_t maxFragmentInputComponents;+ uint32_t maxFragmentOutputAttachments;+ uint32_t maxFragmentDualSrcAttachments;+ uint32_t maxFragmentCombinedOutputResources;+ uint32_t maxComputeSharedMemorySize;+ uint32_t maxComputeWorkGroupCount [3];+ uint32_t maxComputeWorkGroupInvocations;+ uint32_t maxComputeWorkGroupSize [3];+ uint32_t subPixelPrecisionBits;+ uint32_t subTexelPrecisionBits;+ uint32_t mipmapPrecisionBits;+ uint32_t maxDrawIndexedIndexValue;+ uint32_t maxDrawIndirectCount;+ float maxSamplerLodBias;+ float maxSamplerAnisotropy;+ uint32_t maxViewports;+ uint32_t maxViewportDimensions [2];+ float viewportBoundsRange [2];+ uint32_t viewportSubPixelBits;+ size_t minMemoryMapAlignment;+ VkDeviceSize minTexelBufferOffsetAlignment;+ VkDeviceSize minUniformBufferOffsetAlignment;+ VkDeviceSize minStorageBufferOffsetAlignment;+ int32_t minTexelOffset;+ uint32_t maxTexelOffset;+ int32_t minTexelGatherOffset;+ uint32_t maxTexelGatherOffset;+ float minInterpolationOffset;+ float maxInterpolationOffset;+ uint32_t subPixelInterpolationOffsetBits;+ uint32_t maxFramebufferWidth;+ uint32_t maxFramebufferHeight;+ uint32_t maxFramebufferLayers;+ VkSampleCountFlags framebufferColorSampleCounts;+ VkSampleCountFlags framebufferDepthSampleCounts;+ VkSampleCountFlags framebufferStencilSampleCounts;+ VkSampleCountFlags framebufferNoAttachmentsSampleCounts;+ uint32_t maxColorAttachments;+ VkSampleCountFlags sampledImageColorSampleCounts;+ VkSampleCountFlags sampledImageIntegerSampleCounts;+ VkSampleCountFlags sampledImageDepthSampleCounts;+ VkSampleCountFlags sampledImageStencilSampleCounts;+ VkSampleCountFlags storageImageSampleCounts;+ uint32_t maxSampleMaskWords;+ VkBool32 timestampComputeAndGraphics;+ float timestampPeriod;+ uint32_t maxClipDistances;+ uint32_t maxCullDistances;+ uint32_t maxCombinedClipAndCullDistances;+ uint32_t discreteQueuePriorities;+ float pointSizeRange [2];+ float lineWidthRange [2];+ float pointSizeGranularity;+ float lineWidthGranularity;+ VkBool32 strictLines;+ VkBool32 standardSampleLocations;+ VkDeviceSize optimalBufferCopyOffsetAlignment;+ VkDeviceSize optimalBufferCopyRowPitchAlignment;+ VkDeviceSize nonCoherentAtomSize;+} VkPhysicalDeviceLimits;+typedef struct VkSemaphoreCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkSemaphoreCreateFlags flags;+} VkSemaphoreCreateInfo;+typedef struct VkQueryPoolCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkQueryPoolCreateFlags flags;+ VkQueryType queryType;+ uint32_t queryCount;+ VkQueryPipelineStatisticFlags pipelineStatistics;+} VkQueryPoolCreateInfo;+typedef struct VkFramebufferCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkFramebufferCreateFlags flags;+ VkRenderPass renderPass;+ uint32_t attachmentCount;+ const VkImageView * pAttachments;+ uint32_t width;+ uint32_t height;+ uint32_t layers;+} VkFramebufferCreateInfo;+typedef struct VkSubmitInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t waitSemaphoreCount;+ const VkSemaphore * pWaitSemaphores;+ const VkPipelineStageFlags * pWaitDstStageMask;+ uint32_t commandBufferCount;+ const VkCommandBuffer * pCommandBuffers;+ uint32_t signalSemaphoreCount;+ const VkSemaphore * pSignalSemaphores;+} VkSubmitInfo;+typedef struct VkSurfaceCapabilitiesKHR {+ uint32_t minImageCount;+ uint32_t maxImageCount;+ VkExtent2D currentExtent;+ VkExtent2D minImageExtent;+ VkExtent2D maxImageExtent;+ uint32_t maxImageArrayLayers;+ VkSurfaceTransformFlagsKHR supportedTransforms;+ VkSurfaceTransformFlagBitsKHR currentTransform;+ VkCompositeAlphaFlagsKHR supportedCompositeAlpha;+ VkImageUsageFlags supportedUsageFlags;+} VkSurfaceCapabilitiesKHR;+typedef struct VkSwapchainCreateInfoKHR {+ VkStructureType sType;+ const void * pNext;+ VkSwapchainCreateFlagsKHR flags;+ VkSurfaceKHR surface;+ uint32_t minImageCount;+ VkFormat imageFormat;+ VkColorSpaceKHR imageColorSpace;+ VkExtent2D imageExtent;+ uint32_t imageArrayLayers;+ VkImageUsageFlags imageUsage;+ VkSharingMode imageSharingMode;+ uint32_t queueFamilyIndexCount;+ const uint32_t * pQueueFamilyIndices;+ VkSurfaceTransformFlagBitsKHR preTransform;+ VkCompositeAlphaFlagBitsKHR compositeAlpha;+ VkPresentModeKHR presentMode;+ VkBool32 clipped;+ VkSwapchainKHR oldSwapchain;+} VkSwapchainCreateInfoKHR;+typedef struct VkDebugReportCallbackCreateInfoEXT {+ VkStructureType sType;+ const void * pNext;+ VkDebugReportFlagsEXT flags;+ PFN_vkDebugReportCallbackEXT pfnCallback;+ void * pUserData;+} VkDebugReportCallbackCreateInfoEXT;+typedef struct VkPhysicalDeviceFeatures2 {+ VkStructureType sType;+ void * pNext;+ VkPhysicalDeviceFeatures features;+} VkPhysicalDeviceFeatures2;+typedef struct VkFormatProperties2 {+ VkStructureType sType;+ void * pNext;+ VkFormatProperties formatProperties;+} VkFormatProperties2;+typedef struct VkImageFormatProperties2 {+ VkStructureType sType;+ void * pNext;+ VkImageFormatProperties imageFormatProperties;+} VkImageFormatProperties2;+typedef struct VkPhysicalDeviceImageFormatInfo2 {+ VkStructureType sType;+ const void * pNext;+ VkFormat format;+ VkImageType type;+ VkImageTiling tiling;+ VkImageUsageFlags usage;+ VkImageCreateFlags flags;+} VkPhysicalDeviceImageFormatInfo2;+typedef struct VkQueueFamilyProperties2 {+ VkStructureType sType;+ void * pNext;+ VkQueueFamilyProperties queueFamilyProperties;+} VkQueueFamilyProperties2;+typedef struct VkSparseImageFormatProperties2 {+ VkStructureType sType;+ void * pNext;+ VkSparseImageFormatProperties properties;+} VkSparseImageFormatProperties2;+typedef struct VkPhysicalDeviceSparseImageFormatInfo2 {+ VkStructureType sType;+ const void * pNext;+ VkFormat format;+ VkImageType type;+ VkSampleCountFlagBits samples;+ VkImageUsageFlags usage;+ VkImageTiling tiling;+} VkPhysicalDeviceSparseImageFormatInfo2;+typedef struct VkPhysicalDeviceVariablePointersFeatures {+ VkStructureType sType;+ void * pNext;+ VkBool32 variablePointersStorageBuffer;+ VkBool32 variablePointers;+} VkPhysicalDeviceVariablePointersFeatures;+typedef struct VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointerFeatures;+typedef struct VkExternalMemoryProperties {+ VkExternalMemoryFeatureFlags externalMemoryFeatures;+ VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes;+ VkExternalMemoryHandleTypeFlags compatibleHandleTypes;+} VkExternalMemoryProperties;+typedef struct VkExternalImageFormatProperties {+ VkStructureType sType;+ void * pNext;+ VkExternalMemoryProperties externalMemoryProperties;+} VkExternalImageFormatProperties;+typedef struct VkPhysicalDeviceExternalBufferInfo {+ VkStructureType sType;+ const void * pNext;+ VkBufferCreateFlags flags;+ VkBufferUsageFlags usage;+ VkExternalMemoryHandleTypeFlagBits handleType;+} VkPhysicalDeviceExternalBufferInfo;+typedef struct VkExternalBufferProperties {+ VkStructureType sType;+ void * pNext;+ VkExternalMemoryProperties externalMemoryProperties;+} VkExternalBufferProperties;+typedef struct VkPhysicalDeviceIDProperties {+ VkStructureType sType;+ void * pNext;+ uint8_t deviceUUID [ VK_UUID_SIZE ];+ uint8_t driverUUID [ VK_UUID_SIZE ];+ uint8_t deviceLUID [ VK_LUID_SIZE ];+ uint32_t deviceNodeMask;+ VkBool32 deviceLUIDValid;+} VkPhysicalDeviceIDProperties;+typedef struct VkExternalMemoryImageCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkExternalMemoryHandleTypeFlags handleTypes;+} VkExternalMemoryImageCreateInfo;+typedef struct VkExternalMemoryBufferCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkExternalMemoryHandleTypeFlags handleTypes;+} VkExternalMemoryBufferCreateInfo;+typedef struct VkExportMemoryAllocateInfo {+ VkStructureType sType;+ const void * pNext;+ VkExternalMemoryHandleTypeFlags handleTypes;+} VkExportMemoryAllocateInfo;+typedef struct VkExternalSemaphoreProperties {+ VkStructureType sType;+ void * pNext;+ VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes;+ VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes;+ VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures;+} VkExternalSemaphoreProperties;+typedef struct VkExportSemaphoreCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkExternalSemaphoreHandleTypeFlags handleTypes;+} VkExportSemaphoreCreateInfo;+typedef struct VkExternalFenceProperties {+ VkStructureType sType;+ void * pNext;+ VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes;+ VkExternalFenceHandleTypeFlags compatibleHandleTypes;+ VkExternalFenceFeatureFlags externalFenceFeatures;+} VkExternalFenceProperties;+typedef struct VkExportFenceCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkExternalFenceHandleTypeFlags handleTypes;+} VkExportFenceCreateInfo;+typedef struct VkPhysicalDeviceMultiviewFeatures {+ VkStructureType sType;+ void * pNext;+ VkBool32 multiview;+ VkBool32 multiviewGeometryShader;+ VkBool32 multiviewTessellationShader;+} VkPhysicalDeviceMultiviewFeatures;+typedef struct VkPhysicalDeviceGroupProperties {+ VkStructureType sType;+ void * pNext;+ uint32_t physicalDeviceCount;+ VkPhysicalDevice physicalDevices [ VK_MAX_DEVICE_GROUP_SIZE ];+ VkBool32 subsetAllocation;+} VkPhysicalDeviceGroupProperties;+typedef struct VkMemoryAllocateFlagsInfo {+ VkStructureType sType;+ const void * pNext;+ VkMemoryAllocateFlags flags;+ uint32_t deviceMask;+} VkMemoryAllocateFlagsInfo;+typedef struct VkBindBufferMemoryInfo {+ VkStructureType sType;+ const void * pNext;+ VkBuffer buffer;+ VkDeviceMemory memory;+ VkDeviceSize memoryOffset;+} VkBindBufferMemoryInfo;+typedef struct VkBindImageMemoryInfo {+ VkStructureType sType;+ const void * pNext;+ VkImage image;+ VkDeviceMemory memory;+ VkDeviceSize memoryOffset;+} VkBindImageMemoryInfo;+typedef struct VkDeviceGroupPresentCapabilitiesKHR {+ VkStructureType sType;+ const void * pNext;+ uint32_t presentMask [ VK_MAX_DEVICE_GROUP_SIZE ];+ VkDeviceGroupPresentModeFlagsKHR modes;+} VkDeviceGroupPresentCapabilitiesKHR;+typedef struct VkDeviceGroupSwapchainCreateInfoKHR {+ VkStructureType sType;+ const void * pNext;+ VkDeviceGroupPresentModeFlagsKHR modes;+} VkDeviceGroupSwapchainCreateInfoKHR;+typedef struct VkDescriptorUpdateTemplateCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkDescriptorUpdateTemplateCreateFlags flags;+ uint32_t descriptorUpdateEntryCount;+ const VkDescriptorUpdateTemplateEntry * pDescriptorUpdateEntries;+ VkDescriptorUpdateTemplateType templateType;+ VkDescriptorSetLayout descriptorSetLayout;+ VkPipelineBindPoint pipelineBindPoint;+ VkPipelineLayout pipelineLayout;+ uint32_t set;+} VkDescriptorUpdateTemplateCreateInfo;+typedef struct VkInputAttachmentAspectReference {+ uint32_t subpass;+ uint32_t inputAttachmentIndex;+ VkImageAspectFlags aspectMask;+} VkInputAttachmentAspectReference;+typedef struct VkRenderPassInputAttachmentAspectCreateInfo {+ VkStructureType sType;+ const void * pNext;+ uint32_t aspectReferenceCount;+ const VkInputAttachmentAspectReference * pAspectReferences;+} VkRenderPassInputAttachmentAspectCreateInfo;+typedef struct VkPhysicalDevice16BitStorageFeatures {+ VkStructureType sType;+ void * pNext;+ VkBool32 storageBuffer16BitAccess;+ VkBool32 uniformAndStorageBuffer16BitAccess;+ VkBool32 storagePushConstant16;+ VkBool32 storageInputOutput16;+} VkPhysicalDevice16BitStorageFeatures;+typedef struct VkPhysicalDeviceSubgroupProperties {+ VkStructureType sType;+ void * pNext;+ uint32_t subgroupSize;+ VkShaderStageFlags supportedStages;+ VkSubgroupFeatureFlags supportedOperations;+ VkBool32 quadOperationsInAllStages;+} VkPhysicalDeviceSubgroupProperties;+typedef struct VkMemoryRequirements2 {+ VkStructureType sType;+ void * pNext;+ VkMemoryRequirements memoryRequirements;+} VkMemoryRequirements2;+typedef struct VkMemoryRequirements2KHR VkMemoryRequirements2KHR;+typedef struct VkSparseImageMemoryRequirements2 {+ VkStructureType sType;+ void * pNext;+ VkSparseImageMemoryRequirements memoryRequirements;+} VkSparseImageMemoryRequirements2;+typedef struct VkMemoryDedicatedRequirements {+ VkStructureType sType;+ void * pNext;+ VkBool32 prefersDedicatedAllocation;+ VkBool32 requiresDedicatedAllocation;+} VkMemoryDedicatedRequirements;+typedef struct VkImageViewUsageCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkImageUsageFlags usage;+} VkImageViewUsageCreateInfo;+typedef struct VkSamplerYcbcrConversionCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkFormat format;+ VkSamplerYcbcrModelConversion ycbcrModel;+ VkSamplerYcbcrRange ycbcrRange;+ VkComponentMapping components;+ VkChromaLocation xChromaOffset;+ VkChromaLocation yChromaOffset;+ VkFilter chromaFilter;+ VkBool32 forceExplicitReconstruction;+} VkSamplerYcbcrConversionCreateInfo;+typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {+ VkStructureType sType;+ void * pNext;+ VkBool32 samplerYcbcrConversion;+} VkPhysicalDeviceSamplerYcbcrConversionFeatures;+typedef struct VkProtectedSubmitInfo {+ VkStructureType sType;+ const void * pNext;+ VkBool32 protectedSubmit;+} VkProtectedSubmitInfo;+typedef struct VkPhysicalDeviceProtectedMemoryFeatures {+ VkStructureType sType;+ void * pNext;+ VkBool32 protectedMemory;+} VkPhysicalDeviceProtectedMemoryFeatures;+typedef struct VkPhysicalDeviceProtectedMemoryProperties {+ VkStructureType sType;+ void * pNext;+ VkBool32 protectedNoFault;+} VkPhysicalDeviceProtectedMemoryProperties;+typedef struct VkDeviceQueueInfo2 {+ VkStructureType sType;+ const void * pNext;+ VkDeviceQueueCreateFlags flags;+ uint32_t queueFamilyIndex;+ uint32_t queueIndex;+} VkDeviceQueueInfo2;+typedef struct VkPhysicalDeviceMaintenance3Properties {+ VkStructureType sType;+ void * pNext;+ uint32_t maxPerSetDescriptors;+ VkDeviceSize maxMemoryAllocationSize;+} VkPhysicalDeviceMaintenance3Properties;+typedef struct VkDescriptorSetLayoutSupport {+ VkStructureType sType;+ void * pNext;+ VkBool32 supported;+} VkDescriptorSetLayoutSupport;+typedef struct VkPhysicalDeviceShaderDrawParametersFeatures {+ VkStructureType sType;+ void * pNext;+ VkBool32 shaderDrawParameters;+} VkPhysicalDeviceShaderDrawParametersFeatures;+typedef struct VkPhysicalDeviceShaderDrawParameterFeatures VkPhysicalDeviceShaderDrawParameterFeatures;+typedef struct VkPhysicalDeviceProperties {+ uint32_t apiVersion;+ uint32_t driverVersion;+ uint32_t vendorID;+ uint32_t deviceID;+ VkPhysicalDeviceType deviceType;+ char deviceName [ VK_MAX_PHYSICAL_DEVICE_NAME_SIZE ];+ uint8_t pipelineCacheUUID [ VK_UUID_SIZE ];+ VkPhysicalDeviceLimits limits;+ VkPhysicalDeviceSparseProperties sparseProperties;+} VkPhysicalDeviceProperties;+typedef struct VkDeviceCreateInfo {+ VkStructureType sType;+ const void * pNext;+ VkDeviceCreateFlags flags;+ uint32_t queueCreateInfoCount;+ const VkDeviceQueueCreateInfo * pQueueCreateInfos;+ uint32_t enabledLayerCount;+ const char * const* ppEnabledLayerNames;+ uint32_t enabledExtensionCount;+ const char * const* ppEnabledExtensionNames;+ const VkPhysicalDeviceFeatures * pEnabledFeatures;+} VkDeviceCreateInfo;+typedef struct VkPhysicalDeviceMemoryProperties {+ uint32_t memoryTypeCount;+ VkMemoryType memoryTypes [ VK_MAX_MEMORY_TYPES ];+ uint32_t memoryHeapCount;+ VkMemoryHeap memoryHeaps [ VK_MAX_MEMORY_HEAPS ];+} VkPhysicalDeviceMemoryProperties;+typedef struct VkPhysicalDeviceProperties2 {+ VkStructureType sType;+ void * pNext;+ VkPhysicalDeviceProperties properties;+} VkPhysicalDeviceProperties2;+typedef struct VkPhysicalDeviceMemoryProperties2 {+ VkStructureType sType;+ void * pNext;+ VkPhysicalDeviceMemoryProperties memoryProperties;+} VkPhysicalDeviceMemoryProperties2;+++#define VK_VERSION_1_0 1+GLAD_API_CALL int GLAD_VK_VERSION_1_0;+#define VK_VERSION_1_1 1+GLAD_API_CALL int GLAD_VK_VERSION_1_1;+#define VK_EXT_debug_report 1+GLAD_API_CALL int GLAD_VK_EXT_debug_report;+#define VK_KHR_surface 1+GLAD_API_CALL int GLAD_VK_KHR_surface;+#define VK_KHR_swapchain 1+GLAD_API_CALL int GLAD_VK_KHR_swapchain;+++typedef VkResult (GLAD_API_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR * pAcquireInfo, uint32_t * pImageIndex);+typedef VkResult (GLAD_API_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t * pImageIndex);+typedef VkResult (GLAD_API_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo * pAllocateInfo, VkCommandBuffer * pCommandBuffers);+typedef VkResult (GLAD_API_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo * pAllocateInfo, VkDescriptorSet * pDescriptorSets);+typedef VkResult (GLAD_API_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo * pAllocateInfo, const VkAllocationCallbacks * pAllocator, VkDeviceMemory * pMemory);+typedef VkResult (GLAD_API_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo * pBeginInfo);+typedef VkResult (GLAD_API_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);+typedef VkResult (GLAD_API_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo * pBindInfos);+typedef VkResult (GLAD_API_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);+typedef VkResult (GLAD_API_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo * pBindInfos);+typedef void (GLAD_API_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);+typedef void (GLAD_API_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo * pRenderPassBegin, VkSubpassContents contents);+typedef void (GLAD_API_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet * pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t * pDynamicOffsets);+typedef void (GLAD_API_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);+typedef void (GLAD_API_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);+typedef void (GLAD_API_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer * pBuffers, const VkDeviceSize * pOffsets);+typedef void (GLAD_API_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit * pRegions, VkFilter filter);+typedef void (GLAD_API_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment * pAttachments, uint32_t rectCount, const VkClearRect * pRects);+typedef void (GLAD_API_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue * pColor, uint32_t rangeCount, const VkImageSubresourceRange * pRanges);+typedef void (GLAD_API_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue * pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange * pRanges);+typedef void (GLAD_API_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy * pRegions);+typedef void (GLAD_API_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy * pRegions);+typedef void (GLAD_API_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy * pRegions);+typedef void (GLAD_API_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy * pRegions);+typedef void (GLAD_API_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);+typedef void (GLAD_API_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);+typedef void (GLAD_API_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);+typedef void (GLAD_API_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);+typedef void (GLAD_API_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);+typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);+typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);+typedef void (GLAD_API_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);+typedef void (GLAD_API_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);+typedef void (GLAD_API_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);+typedef void (GLAD_API_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer * pCommandBuffers);+typedef void (GLAD_API_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);+typedef void (GLAD_API_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);+typedef void (GLAD_API_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier * pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier * pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier * pImageMemoryBarriers);+typedef void (GLAD_API_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void * pValues);+typedef void (GLAD_API_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);+typedef void (GLAD_API_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);+typedef void (GLAD_API_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve * pRegions);+typedef void (GLAD_API_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants [4]);+typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);+typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);+typedef void (GLAD_API_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask);+typedef void (GLAD_API_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);+typedef void (GLAD_API_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);+typedef void (GLAD_API_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D * pScissors);+typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);+typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);+typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);+typedef void (GLAD_API_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport * pViewports);+typedef void (GLAD_API_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void * pData);+typedef void (GLAD_API_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent * pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier * pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier * pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier * pImageMemoryBarriers);+typedef void (GLAD_API_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkBuffer * pBuffer);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkBufferView * pView);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkCommandPool * pCommandPool);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo * pCreateInfos, const VkAllocationCallbacks * pAllocator, VkPipeline * pPipelines);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDebugReportCallbackEXT * pCallback);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorPool * pDescriptorPool);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorSetLayout * pSetLayout);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDevice * pDevice);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkEvent * pEvent);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkFence * pFence);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkFramebuffer * pFramebuffer);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo * pCreateInfos, const VkAllocationCallbacks * pAllocator, VkPipeline * pPipelines);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkImage * pImage);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkImageView * pView);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkInstance * pInstance);+typedef VkResult (GLAD_API_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkPipelineCache * pPipelineCache);+typedef VkResult (GLAD_API_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkPipelineLayout * pPipelineLayout);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkQueryPool * pQueryPool);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkRenderPass * pRenderPass);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSampler * pSampler);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSamplerYcbcrConversion * pYcbcrConversion);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSemaphore * pSemaphore);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkShaderModule * pShaderModule);+typedef VkResult (GLAD_API_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkSwapchainKHR * pSwapchain);+typedef void (GLAD_API_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char * pLayerPrefix, const char * pMessage);+typedef void (GLAD_API_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks * pAllocator);+typedef VkResult (GLAD_API_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);+typedef VkResult (GLAD_API_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);+typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char * pLayerName, uint32_t * pPropertyCount, VkExtensionProperties * pProperties);+typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t * pPropertyCount, VkLayerProperties * pProperties);+typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char * pLayerName, uint32_t * pPropertyCount, VkExtensionProperties * pProperties);+typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t * pPropertyCount, VkLayerProperties * pProperties);+typedef VkResult (GLAD_API_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t * pApiVersion);+typedef VkResult (GLAD_API_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t * pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties);+typedef VkResult (GLAD_API_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t * pPhysicalDeviceCount, VkPhysicalDevice * pPhysicalDevices);+typedef VkResult (GLAD_API_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange * pMemoryRanges);+typedef void (GLAD_API_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer * pCommandBuffers);+typedef VkResult (GLAD_API_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet * pDescriptorSets);+typedef void (GLAD_API_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks * pAllocator);+typedef void (GLAD_API_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements * pMemoryRequirements);+typedef void (GLAD_API_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2 * pInfo, VkMemoryRequirements2 * pMemoryRequirements);+typedef void (GLAD_API_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo * pCreateInfo, VkDescriptorSetLayoutSupport * pSupport);+typedef void (GLAD_API_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags * pPeerMemoryFeatures);+typedef VkResult (GLAD_API_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities);+typedef VkResult (GLAD_API_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR * pModes);+typedef void (GLAD_API_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize * pCommittedMemoryInBytes);+typedef PFN_vkVoidFunction (GLAD_API_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char * pName);+typedef void (GLAD_API_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue * pQueue);+typedef void (GLAD_API_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2 * pQueueInfo, VkQueue * pQueue);+typedef VkResult (GLAD_API_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);+typedef VkResult (GLAD_API_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);+typedef void (GLAD_API_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements * pMemoryRequirements);+typedef void (GLAD_API_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2 * pInfo, VkMemoryRequirements2 * pMemoryRequirements);+typedef void (GLAD_API_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t * pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements * pSparseMemoryRequirements);+typedef void (GLAD_API_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2 * pInfo, uint32_t * pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements);+typedef void (GLAD_API_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource * pSubresource, VkSubresourceLayout * pLayout);+typedef PFN_vkVoidFunction (GLAD_API_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char * pName);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo, VkExternalBufferProperties * pExternalBufferProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo, VkExternalFenceProperties * pExternalFenceProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo, VkExternalSemaphoreProperties * pExternalSemaphoreProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures * pFeatures);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2 * pFeatures);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties * pFormatProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2 * pFormatProperties);+typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties * pImageFormatProperties);+typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo, VkImageFormatProperties2 * pImageFormatProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties * pMemoryProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2 * pMemoryProperties);+typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t * pRectCount, VkRect2D * pRects);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties * pProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 * pProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t * pQueueFamilyPropertyCount, VkQueueFamilyProperties * pQueueFamilyProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t * pQueueFamilyPropertyCount, VkQueueFamilyProperties2 * pQueueFamilyProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t * pPropertyCount, VkSparseImageFormatProperties * pProperties);+typedef void (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo, uint32_t * pPropertyCount, VkSparseImageFormatProperties2 * pProperties);+typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR * pSurfaceCapabilities);+typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t * pSurfaceFormatCount, VkSurfaceFormatKHR * pSurfaceFormats);+typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t * pPresentModeCount, VkPresentModeKHR * pPresentModes);+typedef VkResult (GLAD_API_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32 * pSupported);+typedef VkResult (GLAD_API_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t * pDataSize, void * pData);+typedef VkResult (GLAD_API_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void * pData, VkDeviceSize stride, VkQueryResultFlags flags);+typedef void (GLAD_API_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D * pGranularity);+typedef VkResult (GLAD_API_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t * pSwapchainImageCount, VkImage * pSwapchainImages);+typedef VkResult (GLAD_API_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange * pMemoryRanges);+typedef VkResult (GLAD_API_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void ** ppData);+typedef VkResult (GLAD_API_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache * pSrcCaches);+typedef VkResult (GLAD_API_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo * pBindInfo, VkFence fence);+typedef VkResult (GLAD_API_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR * pPresentInfo);+typedef VkResult (GLAD_API_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo * pSubmits, VkFence fence);+typedef VkResult (GLAD_API_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);+typedef VkResult (GLAD_API_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);+typedef VkResult (GLAD_API_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);+typedef VkResult (GLAD_API_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);+typedef VkResult (GLAD_API_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);+typedef VkResult (GLAD_API_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence * pFences);+typedef VkResult (GLAD_API_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);+typedef void (GLAD_API_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);+typedef void (GLAD_API_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);+typedef void (GLAD_API_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void * pData);+typedef void (GLAD_API_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet * pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet * pDescriptorCopies);+typedef VkResult (GLAD_API_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence * pFences, VkBool32 waitAll, uint64_t timeout);++GLAD_API_CALL PFN_vkAcquireNextImage2KHR glad_vkAcquireNextImage2KHR;+#define vkAcquireNextImage2KHR glad_vkAcquireNextImage2KHR+GLAD_API_CALL PFN_vkAcquireNextImageKHR glad_vkAcquireNextImageKHR;+#define vkAcquireNextImageKHR glad_vkAcquireNextImageKHR+GLAD_API_CALL PFN_vkAllocateCommandBuffers glad_vkAllocateCommandBuffers;+#define vkAllocateCommandBuffers glad_vkAllocateCommandBuffers+GLAD_API_CALL PFN_vkAllocateDescriptorSets glad_vkAllocateDescriptorSets;+#define vkAllocateDescriptorSets glad_vkAllocateDescriptorSets+GLAD_API_CALL PFN_vkAllocateMemory glad_vkAllocateMemory;+#define vkAllocateMemory glad_vkAllocateMemory+GLAD_API_CALL PFN_vkBeginCommandBuffer glad_vkBeginCommandBuffer;+#define vkBeginCommandBuffer glad_vkBeginCommandBuffer+GLAD_API_CALL PFN_vkBindBufferMemory glad_vkBindBufferMemory;+#define vkBindBufferMemory glad_vkBindBufferMemory+GLAD_API_CALL PFN_vkBindBufferMemory2 glad_vkBindBufferMemory2;+#define vkBindBufferMemory2 glad_vkBindBufferMemory2+GLAD_API_CALL PFN_vkBindImageMemory glad_vkBindImageMemory;+#define vkBindImageMemory glad_vkBindImageMemory+GLAD_API_CALL PFN_vkBindImageMemory2 glad_vkBindImageMemory2;+#define vkBindImageMemory2 glad_vkBindImageMemory2+GLAD_API_CALL PFN_vkCmdBeginQuery glad_vkCmdBeginQuery;+#define vkCmdBeginQuery glad_vkCmdBeginQuery+GLAD_API_CALL PFN_vkCmdBeginRenderPass glad_vkCmdBeginRenderPass;+#define vkCmdBeginRenderPass glad_vkCmdBeginRenderPass+GLAD_API_CALL PFN_vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets;+#define vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets+GLAD_API_CALL PFN_vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer;+#define vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer+GLAD_API_CALL PFN_vkCmdBindPipeline glad_vkCmdBindPipeline;+#define vkCmdBindPipeline glad_vkCmdBindPipeline+GLAD_API_CALL PFN_vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers;+#define vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers+GLAD_API_CALL PFN_vkCmdBlitImage glad_vkCmdBlitImage;+#define vkCmdBlitImage glad_vkCmdBlitImage+GLAD_API_CALL PFN_vkCmdClearAttachments glad_vkCmdClearAttachments;+#define vkCmdClearAttachments glad_vkCmdClearAttachments+GLAD_API_CALL PFN_vkCmdClearColorImage glad_vkCmdClearColorImage;+#define vkCmdClearColorImage glad_vkCmdClearColorImage+GLAD_API_CALL PFN_vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage;+#define vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage+GLAD_API_CALL PFN_vkCmdCopyBuffer glad_vkCmdCopyBuffer;+#define vkCmdCopyBuffer glad_vkCmdCopyBuffer+GLAD_API_CALL PFN_vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage;+#define vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage+GLAD_API_CALL PFN_vkCmdCopyImage glad_vkCmdCopyImage;+#define vkCmdCopyImage glad_vkCmdCopyImage+GLAD_API_CALL PFN_vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer;+#define vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer+GLAD_API_CALL PFN_vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults;+#define vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults+GLAD_API_CALL PFN_vkCmdDispatch glad_vkCmdDispatch;+#define vkCmdDispatch glad_vkCmdDispatch+GLAD_API_CALL PFN_vkCmdDispatchBase glad_vkCmdDispatchBase;+#define vkCmdDispatchBase glad_vkCmdDispatchBase+GLAD_API_CALL PFN_vkCmdDispatchIndirect glad_vkCmdDispatchIndirect;+#define vkCmdDispatchIndirect glad_vkCmdDispatchIndirect+GLAD_API_CALL PFN_vkCmdDraw glad_vkCmdDraw;+#define vkCmdDraw glad_vkCmdDraw+GLAD_API_CALL PFN_vkCmdDrawIndexed glad_vkCmdDrawIndexed;+#define vkCmdDrawIndexed glad_vkCmdDrawIndexed+GLAD_API_CALL PFN_vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect;+#define vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect+GLAD_API_CALL PFN_vkCmdDrawIndirect glad_vkCmdDrawIndirect;+#define vkCmdDrawIndirect glad_vkCmdDrawIndirect+GLAD_API_CALL PFN_vkCmdEndQuery glad_vkCmdEndQuery;+#define vkCmdEndQuery glad_vkCmdEndQuery+GLAD_API_CALL PFN_vkCmdEndRenderPass glad_vkCmdEndRenderPass;+#define vkCmdEndRenderPass glad_vkCmdEndRenderPass+GLAD_API_CALL PFN_vkCmdExecuteCommands glad_vkCmdExecuteCommands;+#define vkCmdExecuteCommands glad_vkCmdExecuteCommands+GLAD_API_CALL PFN_vkCmdFillBuffer glad_vkCmdFillBuffer;+#define vkCmdFillBuffer glad_vkCmdFillBuffer+GLAD_API_CALL PFN_vkCmdNextSubpass glad_vkCmdNextSubpass;+#define vkCmdNextSubpass glad_vkCmdNextSubpass+GLAD_API_CALL PFN_vkCmdPipelineBarrier glad_vkCmdPipelineBarrier;+#define vkCmdPipelineBarrier glad_vkCmdPipelineBarrier+GLAD_API_CALL PFN_vkCmdPushConstants glad_vkCmdPushConstants;+#define vkCmdPushConstants glad_vkCmdPushConstants+GLAD_API_CALL PFN_vkCmdResetEvent glad_vkCmdResetEvent;+#define vkCmdResetEvent glad_vkCmdResetEvent+GLAD_API_CALL PFN_vkCmdResetQueryPool glad_vkCmdResetQueryPool;+#define vkCmdResetQueryPool glad_vkCmdResetQueryPool+GLAD_API_CALL PFN_vkCmdResolveImage glad_vkCmdResolveImage;+#define vkCmdResolveImage glad_vkCmdResolveImage+GLAD_API_CALL PFN_vkCmdSetBlendConstants glad_vkCmdSetBlendConstants;+#define vkCmdSetBlendConstants glad_vkCmdSetBlendConstants+GLAD_API_CALL PFN_vkCmdSetDepthBias glad_vkCmdSetDepthBias;+#define vkCmdSetDepthBias glad_vkCmdSetDepthBias+GLAD_API_CALL PFN_vkCmdSetDepthBounds glad_vkCmdSetDepthBounds;+#define vkCmdSetDepthBounds glad_vkCmdSetDepthBounds+GLAD_API_CALL PFN_vkCmdSetDeviceMask glad_vkCmdSetDeviceMask;+#define vkCmdSetDeviceMask glad_vkCmdSetDeviceMask+GLAD_API_CALL PFN_vkCmdSetEvent glad_vkCmdSetEvent;+#define vkCmdSetEvent glad_vkCmdSetEvent+GLAD_API_CALL PFN_vkCmdSetLineWidth glad_vkCmdSetLineWidth;+#define vkCmdSetLineWidth glad_vkCmdSetLineWidth+GLAD_API_CALL PFN_vkCmdSetScissor glad_vkCmdSetScissor;+#define vkCmdSetScissor glad_vkCmdSetScissor+GLAD_API_CALL PFN_vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask;+#define vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask+GLAD_API_CALL PFN_vkCmdSetStencilReference glad_vkCmdSetStencilReference;+#define vkCmdSetStencilReference glad_vkCmdSetStencilReference+GLAD_API_CALL PFN_vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask;+#define vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask+GLAD_API_CALL PFN_vkCmdSetViewport glad_vkCmdSetViewport;+#define vkCmdSetViewport glad_vkCmdSetViewport+GLAD_API_CALL PFN_vkCmdUpdateBuffer glad_vkCmdUpdateBuffer;+#define vkCmdUpdateBuffer glad_vkCmdUpdateBuffer+GLAD_API_CALL PFN_vkCmdWaitEvents glad_vkCmdWaitEvents;+#define vkCmdWaitEvents glad_vkCmdWaitEvents+GLAD_API_CALL PFN_vkCmdWriteTimestamp glad_vkCmdWriteTimestamp;+#define vkCmdWriteTimestamp glad_vkCmdWriteTimestamp+GLAD_API_CALL PFN_vkCreateBuffer glad_vkCreateBuffer;+#define vkCreateBuffer glad_vkCreateBuffer+GLAD_API_CALL PFN_vkCreateBufferView glad_vkCreateBufferView;+#define vkCreateBufferView glad_vkCreateBufferView+GLAD_API_CALL PFN_vkCreateCommandPool glad_vkCreateCommandPool;+#define vkCreateCommandPool glad_vkCreateCommandPool+GLAD_API_CALL PFN_vkCreateComputePipelines glad_vkCreateComputePipelines;+#define vkCreateComputePipelines glad_vkCreateComputePipelines+GLAD_API_CALL PFN_vkCreateDebugReportCallbackEXT glad_vkCreateDebugReportCallbackEXT;+#define vkCreateDebugReportCallbackEXT glad_vkCreateDebugReportCallbackEXT+GLAD_API_CALL PFN_vkCreateDescriptorPool glad_vkCreateDescriptorPool;+#define vkCreateDescriptorPool glad_vkCreateDescriptorPool+GLAD_API_CALL PFN_vkCreateDescriptorSetLayout glad_vkCreateDescriptorSetLayout;+#define vkCreateDescriptorSetLayout glad_vkCreateDescriptorSetLayout+GLAD_API_CALL PFN_vkCreateDescriptorUpdateTemplate glad_vkCreateDescriptorUpdateTemplate;+#define vkCreateDescriptorUpdateTemplate glad_vkCreateDescriptorUpdateTemplate+GLAD_API_CALL PFN_vkCreateDevice glad_vkCreateDevice;+#define vkCreateDevice glad_vkCreateDevice+GLAD_API_CALL PFN_vkCreateEvent glad_vkCreateEvent;+#define vkCreateEvent glad_vkCreateEvent+GLAD_API_CALL PFN_vkCreateFence glad_vkCreateFence;+#define vkCreateFence glad_vkCreateFence+GLAD_API_CALL PFN_vkCreateFramebuffer glad_vkCreateFramebuffer;+#define vkCreateFramebuffer glad_vkCreateFramebuffer+GLAD_API_CALL PFN_vkCreateGraphicsPipelines glad_vkCreateGraphicsPipelines;+#define vkCreateGraphicsPipelines glad_vkCreateGraphicsPipelines+GLAD_API_CALL PFN_vkCreateImage glad_vkCreateImage;+#define vkCreateImage glad_vkCreateImage+GLAD_API_CALL PFN_vkCreateImageView glad_vkCreateImageView;+#define vkCreateImageView glad_vkCreateImageView+GLAD_API_CALL PFN_vkCreateInstance glad_vkCreateInstance;+#define vkCreateInstance glad_vkCreateInstance+GLAD_API_CALL PFN_vkCreatePipelineCache glad_vkCreatePipelineCache;+#define vkCreatePipelineCache glad_vkCreatePipelineCache+GLAD_API_CALL PFN_vkCreatePipelineLayout glad_vkCreatePipelineLayout;+#define vkCreatePipelineLayout glad_vkCreatePipelineLayout+GLAD_API_CALL PFN_vkCreateQueryPool glad_vkCreateQueryPool;+#define vkCreateQueryPool glad_vkCreateQueryPool+GLAD_API_CALL PFN_vkCreateRenderPass glad_vkCreateRenderPass;+#define vkCreateRenderPass glad_vkCreateRenderPass+GLAD_API_CALL PFN_vkCreateSampler glad_vkCreateSampler;+#define vkCreateSampler glad_vkCreateSampler+GLAD_API_CALL PFN_vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion;+#define vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion+GLAD_API_CALL PFN_vkCreateSemaphore glad_vkCreateSemaphore;+#define vkCreateSemaphore glad_vkCreateSemaphore+GLAD_API_CALL PFN_vkCreateShaderModule glad_vkCreateShaderModule;+#define vkCreateShaderModule glad_vkCreateShaderModule+GLAD_API_CALL PFN_vkCreateSwapchainKHR glad_vkCreateSwapchainKHR;+#define vkCreateSwapchainKHR glad_vkCreateSwapchainKHR+GLAD_API_CALL PFN_vkDebugReportMessageEXT glad_vkDebugReportMessageEXT;+#define vkDebugReportMessageEXT glad_vkDebugReportMessageEXT+GLAD_API_CALL PFN_vkDestroyBuffer glad_vkDestroyBuffer;+#define vkDestroyBuffer glad_vkDestroyBuffer+GLAD_API_CALL PFN_vkDestroyBufferView glad_vkDestroyBufferView;+#define vkDestroyBufferView glad_vkDestroyBufferView+GLAD_API_CALL PFN_vkDestroyCommandPool glad_vkDestroyCommandPool;+#define vkDestroyCommandPool glad_vkDestroyCommandPool+GLAD_API_CALL PFN_vkDestroyDebugReportCallbackEXT glad_vkDestroyDebugReportCallbackEXT;+#define vkDestroyDebugReportCallbackEXT glad_vkDestroyDebugReportCallbackEXT+GLAD_API_CALL PFN_vkDestroyDescriptorPool glad_vkDestroyDescriptorPool;+#define vkDestroyDescriptorPool glad_vkDestroyDescriptorPool+GLAD_API_CALL PFN_vkDestroyDescriptorSetLayout glad_vkDestroyDescriptorSetLayout;+#define vkDestroyDescriptorSetLayout glad_vkDestroyDescriptorSetLayout+GLAD_API_CALL PFN_vkDestroyDescriptorUpdateTemplate glad_vkDestroyDescriptorUpdateTemplate;+#define vkDestroyDescriptorUpdateTemplate glad_vkDestroyDescriptorUpdateTemplate+GLAD_API_CALL PFN_vkDestroyDevice glad_vkDestroyDevice;+#define vkDestroyDevice glad_vkDestroyDevice+GLAD_API_CALL PFN_vkDestroyEvent glad_vkDestroyEvent;+#define vkDestroyEvent glad_vkDestroyEvent+GLAD_API_CALL PFN_vkDestroyFence glad_vkDestroyFence;+#define vkDestroyFence glad_vkDestroyFence+GLAD_API_CALL PFN_vkDestroyFramebuffer glad_vkDestroyFramebuffer;+#define vkDestroyFramebuffer glad_vkDestroyFramebuffer+GLAD_API_CALL PFN_vkDestroyImage glad_vkDestroyImage;+#define vkDestroyImage glad_vkDestroyImage+GLAD_API_CALL PFN_vkDestroyImageView glad_vkDestroyImageView;+#define vkDestroyImageView glad_vkDestroyImageView+GLAD_API_CALL PFN_vkDestroyInstance glad_vkDestroyInstance;+#define vkDestroyInstance glad_vkDestroyInstance+GLAD_API_CALL PFN_vkDestroyPipeline glad_vkDestroyPipeline;+#define vkDestroyPipeline glad_vkDestroyPipeline+GLAD_API_CALL PFN_vkDestroyPipelineCache glad_vkDestroyPipelineCache;+#define vkDestroyPipelineCache glad_vkDestroyPipelineCache+GLAD_API_CALL PFN_vkDestroyPipelineLayout glad_vkDestroyPipelineLayout;+#define vkDestroyPipelineLayout glad_vkDestroyPipelineLayout+GLAD_API_CALL PFN_vkDestroyQueryPool glad_vkDestroyQueryPool;+#define vkDestroyQueryPool glad_vkDestroyQueryPool+GLAD_API_CALL PFN_vkDestroyRenderPass glad_vkDestroyRenderPass;+#define vkDestroyRenderPass glad_vkDestroyRenderPass+GLAD_API_CALL PFN_vkDestroySampler glad_vkDestroySampler;+#define vkDestroySampler glad_vkDestroySampler+GLAD_API_CALL PFN_vkDestroySamplerYcbcrConversion glad_vkDestroySamplerYcbcrConversion;+#define vkDestroySamplerYcbcrConversion glad_vkDestroySamplerYcbcrConversion+GLAD_API_CALL PFN_vkDestroySemaphore glad_vkDestroySemaphore;+#define vkDestroySemaphore glad_vkDestroySemaphore+GLAD_API_CALL PFN_vkDestroyShaderModule glad_vkDestroyShaderModule;+#define vkDestroyShaderModule glad_vkDestroyShaderModule+GLAD_API_CALL PFN_vkDestroySurfaceKHR glad_vkDestroySurfaceKHR;+#define vkDestroySurfaceKHR glad_vkDestroySurfaceKHR+GLAD_API_CALL PFN_vkDestroySwapchainKHR glad_vkDestroySwapchainKHR;+#define vkDestroySwapchainKHR glad_vkDestroySwapchainKHR+GLAD_API_CALL PFN_vkDeviceWaitIdle glad_vkDeviceWaitIdle;+#define vkDeviceWaitIdle glad_vkDeviceWaitIdle+GLAD_API_CALL PFN_vkEndCommandBuffer glad_vkEndCommandBuffer;+#define vkEndCommandBuffer glad_vkEndCommandBuffer+GLAD_API_CALL PFN_vkEnumerateDeviceExtensionProperties glad_vkEnumerateDeviceExtensionProperties;+#define vkEnumerateDeviceExtensionProperties glad_vkEnumerateDeviceExtensionProperties+GLAD_API_CALL PFN_vkEnumerateDeviceLayerProperties glad_vkEnumerateDeviceLayerProperties;+#define vkEnumerateDeviceLayerProperties glad_vkEnumerateDeviceLayerProperties+GLAD_API_CALL PFN_vkEnumerateInstanceExtensionProperties glad_vkEnumerateInstanceExtensionProperties;+#define vkEnumerateInstanceExtensionProperties glad_vkEnumerateInstanceExtensionProperties+GLAD_API_CALL PFN_vkEnumerateInstanceLayerProperties glad_vkEnumerateInstanceLayerProperties;+#define vkEnumerateInstanceLayerProperties glad_vkEnumerateInstanceLayerProperties+GLAD_API_CALL PFN_vkEnumerateInstanceVersion glad_vkEnumerateInstanceVersion;+#define vkEnumerateInstanceVersion glad_vkEnumerateInstanceVersion+GLAD_API_CALL PFN_vkEnumeratePhysicalDeviceGroups glad_vkEnumeratePhysicalDeviceGroups;+#define vkEnumeratePhysicalDeviceGroups glad_vkEnumeratePhysicalDeviceGroups+GLAD_API_CALL PFN_vkEnumeratePhysicalDevices glad_vkEnumeratePhysicalDevices;+#define vkEnumeratePhysicalDevices glad_vkEnumeratePhysicalDevices+GLAD_API_CALL PFN_vkFlushMappedMemoryRanges glad_vkFlushMappedMemoryRanges;+#define vkFlushMappedMemoryRanges glad_vkFlushMappedMemoryRanges+GLAD_API_CALL PFN_vkFreeCommandBuffers glad_vkFreeCommandBuffers;+#define vkFreeCommandBuffers glad_vkFreeCommandBuffers+GLAD_API_CALL PFN_vkFreeDescriptorSets glad_vkFreeDescriptorSets;+#define vkFreeDescriptorSets glad_vkFreeDescriptorSets+GLAD_API_CALL PFN_vkFreeMemory glad_vkFreeMemory;+#define vkFreeMemory glad_vkFreeMemory+GLAD_API_CALL PFN_vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements;+#define vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements+GLAD_API_CALL PFN_vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2;+#define vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2+GLAD_API_CALL PFN_vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport;+#define vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport+GLAD_API_CALL PFN_vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures;+#define vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures+GLAD_API_CALL PFN_vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR;+#define vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR+GLAD_API_CALL PFN_vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR;+#define vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR+GLAD_API_CALL PFN_vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment;+#define vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment+GLAD_API_CALL PFN_vkGetDeviceProcAddr glad_vkGetDeviceProcAddr;+#define vkGetDeviceProcAddr glad_vkGetDeviceProcAddr+GLAD_API_CALL PFN_vkGetDeviceQueue glad_vkGetDeviceQueue;+#define vkGetDeviceQueue glad_vkGetDeviceQueue+GLAD_API_CALL PFN_vkGetDeviceQueue2 glad_vkGetDeviceQueue2;+#define vkGetDeviceQueue2 glad_vkGetDeviceQueue2+GLAD_API_CALL PFN_vkGetEventStatus glad_vkGetEventStatus;+#define vkGetEventStatus glad_vkGetEventStatus+GLAD_API_CALL PFN_vkGetFenceStatus glad_vkGetFenceStatus;+#define vkGetFenceStatus glad_vkGetFenceStatus+GLAD_API_CALL PFN_vkGetImageMemoryRequirements glad_vkGetImageMemoryRequirements;+#define vkGetImageMemoryRequirements glad_vkGetImageMemoryRequirements+GLAD_API_CALL PFN_vkGetImageMemoryRequirements2 glad_vkGetImageMemoryRequirements2;+#define vkGetImageMemoryRequirements2 glad_vkGetImageMemoryRequirements2+GLAD_API_CALL PFN_vkGetImageSparseMemoryRequirements glad_vkGetImageSparseMemoryRequirements;+#define vkGetImageSparseMemoryRequirements glad_vkGetImageSparseMemoryRequirements+GLAD_API_CALL PFN_vkGetImageSparseMemoryRequirements2 glad_vkGetImageSparseMemoryRequirements2;+#define vkGetImageSparseMemoryRequirements2 glad_vkGetImageSparseMemoryRequirements2+GLAD_API_CALL PFN_vkGetImageSubresourceLayout glad_vkGetImageSubresourceLayout;+#define vkGetImageSubresourceLayout glad_vkGetImageSubresourceLayout+GLAD_API_CALL PFN_vkGetInstanceProcAddr glad_vkGetInstanceProcAddr;+#define vkGetInstanceProcAddr glad_vkGetInstanceProcAddr+GLAD_API_CALL PFN_vkGetPhysicalDeviceExternalBufferProperties glad_vkGetPhysicalDeviceExternalBufferProperties;+#define vkGetPhysicalDeviceExternalBufferProperties glad_vkGetPhysicalDeviceExternalBufferProperties+GLAD_API_CALL PFN_vkGetPhysicalDeviceExternalFenceProperties glad_vkGetPhysicalDeviceExternalFenceProperties;+#define vkGetPhysicalDeviceExternalFenceProperties glad_vkGetPhysicalDeviceExternalFenceProperties+GLAD_API_CALL PFN_vkGetPhysicalDeviceExternalSemaphoreProperties glad_vkGetPhysicalDeviceExternalSemaphoreProperties;+#define vkGetPhysicalDeviceExternalSemaphoreProperties glad_vkGetPhysicalDeviceExternalSemaphoreProperties+GLAD_API_CALL PFN_vkGetPhysicalDeviceFeatures glad_vkGetPhysicalDeviceFeatures;+#define vkGetPhysicalDeviceFeatures glad_vkGetPhysicalDeviceFeatures+GLAD_API_CALL PFN_vkGetPhysicalDeviceFeatures2 glad_vkGetPhysicalDeviceFeatures2;+#define vkGetPhysicalDeviceFeatures2 glad_vkGetPhysicalDeviceFeatures2+GLAD_API_CALL PFN_vkGetPhysicalDeviceFormatProperties glad_vkGetPhysicalDeviceFormatProperties;+#define vkGetPhysicalDeviceFormatProperties glad_vkGetPhysicalDeviceFormatProperties+GLAD_API_CALL PFN_vkGetPhysicalDeviceFormatProperties2 glad_vkGetPhysicalDeviceFormatProperties2;+#define vkGetPhysicalDeviceFormatProperties2 glad_vkGetPhysicalDeviceFormatProperties2+GLAD_API_CALL PFN_vkGetPhysicalDeviceImageFormatProperties glad_vkGetPhysicalDeviceImageFormatProperties;+#define vkGetPhysicalDeviceImageFormatProperties glad_vkGetPhysicalDeviceImageFormatProperties+GLAD_API_CALL PFN_vkGetPhysicalDeviceImageFormatProperties2 glad_vkGetPhysicalDeviceImageFormatProperties2;+#define vkGetPhysicalDeviceImageFormatProperties2 glad_vkGetPhysicalDeviceImageFormatProperties2+GLAD_API_CALL PFN_vkGetPhysicalDeviceMemoryProperties glad_vkGetPhysicalDeviceMemoryProperties;+#define vkGetPhysicalDeviceMemoryProperties glad_vkGetPhysicalDeviceMemoryProperties+GLAD_API_CALL PFN_vkGetPhysicalDeviceMemoryProperties2 glad_vkGetPhysicalDeviceMemoryProperties2;+#define vkGetPhysicalDeviceMemoryProperties2 glad_vkGetPhysicalDeviceMemoryProperties2+GLAD_API_CALL PFN_vkGetPhysicalDevicePresentRectanglesKHR glad_vkGetPhysicalDevicePresentRectanglesKHR;+#define vkGetPhysicalDevicePresentRectanglesKHR glad_vkGetPhysicalDevicePresentRectanglesKHR+GLAD_API_CALL PFN_vkGetPhysicalDeviceProperties glad_vkGetPhysicalDeviceProperties;+#define vkGetPhysicalDeviceProperties glad_vkGetPhysicalDeviceProperties+GLAD_API_CALL PFN_vkGetPhysicalDeviceProperties2 glad_vkGetPhysicalDeviceProperties2;+#define vkGetPhysicalDeviceProperties2 glad_vkGetPhysicalDeviceProperties2+GLAD_API_CALL PFN_vkGetPhysicalDeviceQueueFamilyProperties glad_vkGetPhysicalDeviceQueueFamilyProperties;+#define vkGetPhysicalDeviceQueueFamilyProperties glad_vkGetPhysicalDeviceQueueFamilyProperties+GLAD_API_CALL PFN_vkGetPhysicalDeviceQueueFamilyProperties2 glad_vkGetPhysicalDeviceQueueFamilyProperties2;+#define vkGetPhysicalDeviceQueueFamilyProperties2 glad_vkGetPhysicalDeviceQueueFamilyProperties2+GLAD_API_CALL PFN_vkGetPhysicalDeviceSparseImageFormatProperties glad_vkGetPhysicalDeviceSparseImageFormatProperties;+#define vkGetPhysicalDeviceSparseImageFormatProperties glad_vkGetPhysicalDeviceSparseImageFormatProperties+GLAD_API_CALL PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 glad_vkGetPhysicalDeviceSparseImageFormatProperties2;+#define vkGetPhysicalDeviceSparseImageFormatProperties2 glad_vkGetPhysicalDeviceSparseImageFormatProperties2+GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;+#define vkGetPhysicalDeviceSurfaceCapabilitiesKHR glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR+GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR;+#define vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR+GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR;+#define vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR+GLAD_API_CALL PFN_vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR;+#define vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR+GLAD_API_CALL PFN_vkGetPipelineCacheData glad_vkGetPipelineCacheData;+#define vkGetPipelineCacheData glad_vkGetPipelineCacheData+GLAD_API_CALL PFN_vkGetQueryPoolResults glad_vkGetQueryPoolResults;+#define vkGetQueryPoolResults glad_vkGetQueryPoolResults+GLAD_API_CALL PFN_vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity;+#define vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity+GLAD_API_CALL PFN_vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR;+#define vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR+GLAD_API_CALL PFN_vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges;+#define vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges+GLAD_API_CALL PFN_vkMapMemory glad_vkMapMemory;+#define vkMapMemory glad_vkMapMemory+GLAD_API_CALL PFN_vkMergePipelineCaches glad_vkMergePipelineCaches;+#define vkMergePipelineCaches glad_vkMergePipelineCaches+GLAD_API_CALL PFN_vkQueueBindSparse glad_vkQueueBindSparse;+#define vkQueueBindSparse glad_vkQueueBindSparse+GLAD_API_CALL PFN_vkQueuePresentKHR glad_vkQueuePresentKHR;+#define vkQueuePresentKHR glad_vkQueuePresentKHR+GLAD_API_CALL PFN_vkQueueSubmit glad_vkQueueSubmit;+#define vkQueueSubmit glad_vkQueueSubmit+GLAD_API_CALL PFN_vkQueueWaitIdle glad_vkQueueWaitIdle;+#define vkQueueWaitIdle glad_vkQueueWaitIdle+GLAD_API_CALL PFN_vkResetCommandBuffer glad_vkResetCommandBuffer;+#define vkResetCommandBuffer glad_vkResetCommandBuffer+GLAD_API_CALL PFN_vkResetCommandPool glad_vkResetCommandPool;+#define vkResetCommandPool glad_vkResetCommandPool+GLAD_API_CALL PFN_vkResetDescriptorPool glad_vkResetDescriptorPool;+#define vkResetDescriptorPool glad_vkResetDescriptorPool+GLAD_API_CALL PFN_vkResetEvent glad_vkResetEvent;+#define vkResetEvent glad_vkResetEvent+GLAD_API_CALL PFN_vkResetFences glad_vkResetFences;+#define vkResetFences glad_vkResetFences+GLAD_API_CALL PFN_vkSetEvent glad_vkSetEvent;+#define vkSetEvent glad_vkSetEvent+GLAD_API_CALL PFN_vkTrimCommandPool glad_vkTrimCommandPool;+#define vkTrimCommandPool glad_vkTrimCommandPool+GLAD_API_CALL PFN_vkUnmapMemory glad_vkUnmapMemory;+#define vkUnmapMemory glad_vkUnmapMemory+GLAD_API_CALL PFN_vkUpdateDescriptorSetWithTemplate glad_vkUpdateDescriptorSetWithTemplate;+#define vkUpdateDescriptorSetWithTemplate glad_vkUpdateDescriptorSetWithTemplate+GLAD_API_CALL PFN_vkUpdateDescriptorSets glad_vkUpdateDescriptorSets;+#define vkUpdateDescriptorSets glad_vkUpdateDescriptorSets+GLAD_API_CALL PFN_vkWaitForFences glad_vkWaitForFences;+#define vkWaitForFences glad_vkWaitForFences+++GLAD_API_CALL int gladLoadVulkanUserPtr( VkPhysicalDevice physical_device, GLADuserptrloadfunc load, void *userptr);+GLAD_API_CALL int gladLoadVulkan( VkPhysicalDevice physical_device, GLADloadfunc load);+++++++#ifdef __cplusplus+}+#endif+#endif
glfw/deps/glad_gl.c view
@@ -1,7 +1,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include "glad/gl.h" +#include <glad/gl.h> #ifndef GLAD_IMPL_UTIL_C_ #define GLAD_IMPL_UTIL_C_
glfw/deps/glad_vulkan.c view
@@ -1,593 +1,593 @@-#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <glad/vulkan.h> - -#ifndef GLAD_IMPL_UTIL_C_ -#define GLAD_IMPL_UTIL_C_ - -#ifdef _MSC_VER -#define GLAD_IMPL_UTIL_SSCANF sscanf_s -#else -#define GLAD_IMPL_UTIL_SSCANF sscanf -#endif - -#endif /* GLAD_IMPL_UTIL_C_ */ - - -int GLAD_VK_VERSION_1_0 = 0; -int GLAD_VK_VERSION_1_1 = 0; -int GLAD_VK_EXT_debug_report = 0; -int GLAD_VK_KHR_surface = 0; -int GLAD_VK_KHR_swapchain = 0; - - - -PFN_vkAcquireNextImage2KHR glad_vkAcquireNextImage2KHR = NULL; -PFN_vkAcquireNextImageKHR glad_vkAcquireNextImageKHR = NULL; -PFN_vkAllocateCommandBuffers glad_vkAllocateCommandBuffers = NULL; -PFN_vkAllocateDescriptorSets glad_vkAllocateDescriptorSets = NULL; -PFN_vkAllocateMemory glad_vkAllocateMemory = NULL; -PFN_vkBeginCommandBuffer glad_vkBeginCommandBuffer = NULL; -PFN_vkBindBufferMemory glad_vkBindBufferMemory = NULL; -PFN_vkBindBufferMemory2 glad_vkBindBufferMemory2 = NULL; -PFN_vkBindImageMemory glad_vkBindImageMemory = NULL; -PFN_vkBindImageMemory2 glad_vkBindImageMemory2 = NULL; -PFN_vkCmdBeginQuery glad_vkCmdBeginQuery = NULL; -PFN_vkCmdBeginRenderPass glad_vkCmdBeginRenderPass = NULL; -PFN_vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets = NULL; -PFN_vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer = NULL; -PFN_vkCmdBindPipeline glad_vkCmdBindPipeline = NULL; -PFN_vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers = NULL; -PFN_vkCmdBlitImage glad_vkCmdBlitImage = NULL; -PFN_vkCmdClearAttachments glad_vkCmdClearAttachments = NULL; -PFN_vkCmdClearColorImage glad_vkCmdClearColorImage = NULL; -PFN_vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage = NULL; -PFN_vkCmdCopyBuffer glad_vkCmdCopyBuffer = NULL; -PFN_vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage = NULL; -PFN_vkCmdCopyImage glad_vkCmdCopyImage = NULL; -PFN_vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer = NULL; -PFN_vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults = NULL; -PFN_vkCmdDispatch glad_vkCmdDispatch = NULL; -PFN_vkCmdDispatchBase glad_vkCmdDispatchBase = NULL; -PFN_vkCmdDispatchIndirect glad_vkCmdDispatchIndirect = NULL; -PFN_vkCmdDraw glad_vkCmdDraw = NULL; -PFN_vkCmdDrawIndexed glad_vkCmdDrawIndexed = NULL; -PFN_vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect = NULL; -PFN_vkCmdDrawIndirect glad_vkCmdDrawIndirect = NULL; -PFN_vkCmdEndQuery glad_vkCmdEndQuery = NULL; -PFN_vkCmdEndRenderPass glad_vkCmdEndRenderPass = NULL; -PFN_vkCmdExecuteCommands glad_vkCmdExecuteCommands = NULL; -PFN_vkCmdFillBuffer glad_vkCmdFillBuffer = NULL; -PFN_vkCmdNextSubpass glad_vkCmdNextSubpass = NULL; -PFN_vkCmdPipelineBarrier glad_vkCmdPipelineBarrier = NULL; -PFN_vkCmdPushConstants glad_vkCmdPushConstants = NULL; -PFN_vkCmdResetEvent glad_vkCmdResetEvent = NULL; -PFN_vkCmdResetQueryPool glad_vkCmdResetQueryPool = NULL; -PFN_vkCmdResolveImage glad_vkCmdResolveImage = NULL; -PFN_vkCmdSetBlendConstants glad_vkCmdSetBlendConstants = NULL; -PFN_vkCmdSetDepthBias glad_vkCmdSetDepthBias = NULL; -PFN_vkCmdSetDepthBounds glad_vkCmdSetDepthBounds = NULL; -PFN_vkCmdSetDeviceMask glad_vkCmdSetDeviceMask = NULL; -PFN_vkCmdSetEvent glad_vkCmdSetEvent = NULL; -PFN_vkCmdSetLineWidth glad_vkCmdSetLineWidth = NULL; -PFN_vkCmdSetScissor glad_vkCmdSetScissor = NULL; -PFN_vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask = NULL; -PFN_vkCmdSetStencilReference glad_vkCmdSetStencilReference = NULL; -PFN_vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask = NULL; -PFN_vkCmdSetViewport glad_vkCmdSetViewport = NULL; -PFN_vkCmdUpdateBuffer glad_vkCmdUpdateBuffer = NULL; -PFN_vkCmdWaitEvents glad_vkCmdWaitEvents = NULL; -PFN_vkCmdWriteTimestamp glad_vkCmdWriteTimestamp = NULL; -PFN_vkCreateBuffer glad_vkCreateBuffer = NULL; -PFN_vkCreateBufferView glad_vkCreateBufferView = NULL; -PFN_vkCreateCommandPool glad_vkCreateCommandPool = NULL; -PFN_vkCreateComputePipelines glad_vkCreateComputePipelines = NULL; -PFN_vkCreateDebugReportCallbackEXT glad_vkCreateDebugReportCallbackEXT = NULL; -PFN_vkCreateDescriptorPool glad_vkCreateDescriptorPool = NULL; -PFN_vkCreateDescriptorSetLayout glad_vkCreateDescriptorSetLayout = NULL; -PFN_vkCreateDescriptorUpdateTemplate glad_vkCreateDescriptorUpdateTemplate = NULL; -PFN_vkCreateDevice glad_vkCreateDevice = NULL; -PFN_vkCreateEvent glad_vkCreateEvent = NULL; -PFN_vkCreateFence glad_vkCreateFence = NULL; -PFN_vkCreateFramebuffer glad_vkCreateFramebuffer = NULL; -PFN_vkCreateGraphicsPipelines glad_vkCreateGraphicsPipelines = NULL; -PFN_vkCreateImage glad_vkCreateImage = NULL; -PFN_vkCreateImageView glad_vkCreateImageView = NULL; -PFN_vkCreateInstance glad_vkCreateInstance = NULL; -PFN_vkCreatePipelineCache glad_vkCreatePipelineCache = NULL; -PFN_vkCreatePipelineLayout glad_vkCreatePipelineLayout = NULL; -PFN_vkCreateQueryPool glad_vkCreateQueryPool = NULL; -PFN_vkCreateRenderPass glad_vkCreateRenderPass = NULL; -PFN_vkCreateSampler glad_vkCreateSampler = NULL; -PFN_vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion = NULL; -PFN_vkCreateSemaphore glad_vkCreateSemaphore = NULL; -PFN_vkCreateShaderModule glad_vkCreateShaderModule = NULL; -PFN_vkCreateSwapchainKHR glad_vkCreateSwapchainKHR = NULL; -PFN_vkDebugReportMessageEXT glad_vkDebugReportMessageEXT = NULL; -PFN_vkDestroyBuffer glad_vkDestroyBuffer = NULL; -PFN_vkDestroyBufferView glad_vkDestroyBufferView = NULL; -PFN_vkDestroyCommandPool glad_vkDestroyCommandPool = NULL; -PFN_vkDestroyDebugReportCallbackEXT glad_vkDestroyDebugReportCallbackEXT = NULL; -PFN_vkDestroyDescriptorPool glad_vkDestroyDescriptorPool = NULL; -PFN_vkDestroyDescriptorSetLayout glad_vkDestroyDescriptorSetLayout = NULL; -PFN_vkDestroyDescriptorUpdateTemplate glad_vkDestroyDescriptorUpdateTemplate = NULL; -PFN_vkDestroyDevice glad_vkDestroyDevice = NULL; -PFN_vkDestroyEvent glad_vkDestroyEvent = NULL; -PFN_vkDestroyFence glad_vkDestroyFence = NULL; -PFN_vkDestroyFramebuffer glad_vkDestroyFramebuffer = NULL; -PFN_vkDestroyImage glad_vkDestroyImage = NULL; -PFN_vkDestroyImageView glad_vkDestroyImageView = NULL; -PFN_vkDestroyInstance glad_vkDestroyInstance = NULL; -PFN_vkDestroyPipeline glad_vkDestroyPipeline = NULL; -PFN_vkDestroyPipelineCache glad_vkDestroyPipelineCache = NULL; -PFN_vkDestroyPipelineLayout glad_vkDestroyPipelineLayout = NULL; -PFN_vkDestroyQueryPool glad_vkDestroyQueryPool = NULL; -PFN_vkDestroyRenderPass glad_vkDestroyRenderPass = NULL; -PFN_vkDestroySampler glad_vkDestroySampler = NULL; -PFN_vkDestroySamplerYcbcrConversion glad_vkDestroySamplerYcbcrConversion = NULL; -PFN_vkDestroySemaphore glad_vkDestroySemaphore = NULL; -PFN_vkDestroyShaderModule glad_vkDestroyShaderModule = NULL; -PFN_vkDestroySurfaceKHR glad_vkDestroySurfaceKHR = NULL; -PFN_vkDestroySwapchainKHR glad_vkDestroySwapchainKHR = NULL; -PFN_vkDeviceWaitIdle glad_vkDeviceWaitIdle = NULL; -PFN_vkEndCommandBuffer glad_vkEndCommandBuffer = NULL; -PFN_vkEnumerateDeviceExtensionProperties glad_vkEnumerateDeviceExtensionProperties = NULL; -PFN_vkEnumerateDeviceLayerProperties glad_vkEnumerateDeviceLayerProperties = NULL; -PFN_vkEnumerateInstanceExtensionProperties glad_vkEnumerateInstanceExtensionProperties = NULL; -PFN_vkEnumerateInstanceLayerProperties glad_vkEnumerateInstanceLayerProperties = NULL; -PFN_vkEnumerateInstanceVersion glad_vkEnumerateInstanceVersion = NULL; -PFN_vkEnumeratePhysicalDeviceGroups glad_vkEnumeratePhysicalDeviceGroups = NULL; -PFN_vkEnumeratePhysicalDevices glad_vkEnumeratePhysicalDevices = NULL; -PFN_vkFlushMappedMemoryRanges glad_vkFlushMappedMemoryRanges = NULL; -PFN_vkFreeCommandBuffers glad_vkFreeCommandBuffers = NULL; -PFN_vkFreeDescriptorSets glad_vkFreeDescriptorSets = NULL; -PFN_vkFreeMemory glad_vkFreeMemory = NULL; -PFN_vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements = NULL; -PFN_vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2 = NULL; -PFN_vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport = NULL; -PFN_vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures = NULL; -PFN_vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR = NULL; -PFN_vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR = NULL; -PFN_vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment = NULL; -PFN_vkGetDeviceProcAddr glad_vkGetDeviceProcAddr = NULL; -PFN_vkGetDeviceQueue glad_vkGetDeviceQueue = NULL; -PFN_vkGetDeviceQueue2 glad_vkGetDeviceQueue2 = NULL; -PFN_vkGetEventStatus glad_vkGetEventStatus = NULL; -PFN_vkGetFenceStatus glad_vkGetFenceStatus = NULL; -PFN_vkGetImageMemoryRequirements glad_vkGetImageMemoryRequirements = NULL; -PFN_vkGetImageMemoryRequirements2 glad_vkGetImageMemoryRequirements2 = NULL; -PFN_vkGetImageSparseMemoryRequirements glad_vkGetImageSparseMemoryRequirements = NULL; -PFN_vkGetImageSparseMemoryRequirements2 glad_vkGetImageSparseMemoryRequirements2 = NULL; -PFN_vkGetImageSubresourceLayout glad_vkGetImageSubresourceLayout = NULL; -PFN_vkGetInstanceProcAddr glad_vkGetInstanceProcAddr = NULL; -PFN_vkGetPhysicalDeviceExternalBufferProperties glad_vkGetPhysicalDeviceExternalBufferProperties = NULL; -PFN_vkGetPhysicalDeviceExternalFenceProperties glad_vkGetPhysicalDeviceExternalFenceProperties = NULL; -PFN_vkGetPhysicalDeviceExternalSemaphoreProperties glad_vkGetPhysicalDeviceExternalSemaphoreProperties = NULL; -PFN_vkGetPhysicalDeviceFeatures glad_vkGetPhysicalDeviceFeatures = NULL; -PFN_vkGetPhysicalDeviceFeatures2 glad_vkGetPhysicalDeviceFeatures2 = NULL; -PFN_vkGetPhysicalDeviceFormatProperties glad_vkGetPhysicalDeviceFormatProperties = NULL; -PFN_vkGetPhysicalDeviceFormatProperties2 glad_vkGetPhysicalDeviceFormatProperties2 = NULL; -PFN_vkGetPhysicalDeviceImageFormatProperties glad_vkGetPhysicalDeviceImageFormatProperties = NULL; -PFN_vkGetPhysicalDeviceImageFormatProperties2 glad_vkGetPhysicalDeviceImageFormatProperties2 = NULL; -PFN_vkGetPhysicalDeviceMemoryProperties glad_vkGetPhysicalDeviceMemoryProperties = NULL; -PFN_vkGetPhysicalDeviceMemoryProperties2 glad_vkGetPhysicalDeviceMemoryProperties2 = NULL; -PFN_vkGetPhysicalDevicePresentRectanglesKHR glad_vkGetPhysicalDevicePresentRectanglesKHR = NULL; -PFN_vkGetPhysicalDeviceProperties glad_vkGetPhysicalDeviceProperties = NULL; -PFN_vkGetPhysicalDeviceProperties2 glad_vkGetPhysicalDeviceProperties2 = NULL; -PFN_vkGetPhysicalDeviceQueueFamilyProperties glad_vkGetPhysicalDeviceQueueFamilyProperties = NULL; -PFN_vkGetPhysicalDeviceQueueFamilyProperties2 glad_vkGetPhysicalDeviceQueueFamilyProperties2 = NULL; -PFN_vkGetPhysicalDeviceSparseImageFormatProperties glad_vkGetPhysicalDeviceSparseImageFormatProperties = NULL; -PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 glad_vkGetPhysicalDeviceSparseImageFormatProperties2 = NULL; -PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = NULL; -PFN_vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR = NULL; -PFN_vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR = NULL; -PFN_vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR = NULL; -PFN_vkGetPipelineCacheData glad_vkGetPipelineCacheData = NULL; -PFN_vkGetQueryPoolResults glad_vkGetQueryPoolResults = NULL; -PFN_vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity = NULL; -PFN_vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR = NULL; -PFN_vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges = NULL; -PFN_vkMapMemory glad_vkMapMemory = NULL; -PFN_vkMergePipelineCaches glad_vkMergePipelineCaches = NULL; -PFN_vkQueueBindSparse glad_vkQueueBindSparse = NULL; -PFN_vkQueuePresentKHR glad_vkQueuePresentKHR = NULL; -PFN_vkQueueSubmit glad_vkQueueSubmit = NULL; -PFN_vkQueueWaitIdle glad_vkQueueWaitIdle = NULL; -PFN_vkResetCommandBuffer glad_vkResetCommandBuffer = NULL; -PFN_vkResetCommandPool glad_vkResetCommandPool = NULL; -PFN_vkResetDescriptorPool glad_vkResetDescriptorPool = NULL; -PFN_vkResetEvent glad_vkResetEvent = NULL; -PFN_vkResetFences glad_vkResetFences = NULL; -PFN_vkSetEvent glad_vkSetEvent = NULL; -PFN_vkTrimCommandPool glad_vkTrimCommandPool = NULL; -PFN_vkUnmapMemory glad_vkUnmapMemory = NULL; -PFN_vkUpdateDescriptorSetWithTemplate glad_vkUpdateDescriptorSetWithTemplate = NULL; -PFN_vkUpdateDescriptorSets glad_vkUpdateDescriptorSets = NULL; -PFN_vkWaitForFences glad_vkWaitForFences = NULL; - - -static void glad_vk_load_VK_VERSION_1_0( GLADuserptrloadfunc load, void* userptr) { - if(!GLAD_VK_VERSION_1_0) return; - vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers) load("vkAllocateCommandBuffers", userptr); - vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets) load("vkAllocateDescriptorSets", userptr); - vkAllocateMemory = (PFN_vkAllocateMemory) load("vkAllocateMemory", userptr); - vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer) load("vkBeginCommandBuffer", userptr); - vkBindBufferMemory = (PFN_vkBindBufferMemory) load("vkBindBufferMemory", userptr); - vkBindImageMemory = (PFN_vkBindImageMemory) load("vkBindImageMemory", userptr); - vkCmdBeginQuery = (PFN_vkCmdBeginQuery) load("vkCmdBeginQuery", userptr); - vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass) load("vkCmdBeginRenderPass", userptr); - vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets) load("vkCmdBindDescriptorSets", userptr); - vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer) load("vkCmdBindIndexBuffer", userptr); - vkCmdBindPipeline = (PFN_vkCmdBindPipeline) load("vkCmdBindPipeline", userptr); - vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers) load("vkCmdBindVertexBuffers", userptr); - vkCmdBlitImage = (PFN_vkCmdBlitImage) load("vkCmdBlitImage", userptr); - vkCmdClearAttachments = (PFN_vkCmdClearAttachments) load("vkCmdClearAttachments", userptr); - vkCmdClearColorImage = (PFN_vkCmdClearColorImage) load("vkCmdClearColorImage", userptr); - vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage) load("vkCmdClearDepthStencilImage", userptr); - vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer) load("vkCmdCopyBuffer", userptr); - vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage) load("vkCmdCopyBufferToImage", userptr); - vkCmdCopyImage = (PFN_vkCmdCopyImage) load("vkCmdCopyImage", userptr); - vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer) load("vkCmdCopyImageToBuffer", userptr); - vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults) load("vkCmdCopyQueryPoolResults", userptr); - vkCmdDispatch = (PFN_vkCmdDispatch) load("vkCmdDispatch", userptr); - vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect) load("vkCmdDispatchIndirect", userptr); - vkCmdDraw = (PFN_vkCmdDraw) load("vkCmdDraw", userptr); - vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed) load("vkCmdDrawIndexed", userptr); - vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect) load("vkCmdDrawIndexedIndirect", userptr); - vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect) load("vkCmdDrawIndirect", userptr); - vkCmdEndQuery = (PFN_vkCmdEndQuery) load("vkCmdEndQuery", userptr); - vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass) load("vkCmdEndRenderPass", userptr); - vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands) load("vkCmdExecuteCommands", userptr); - vkCmdFillBuffer = (PFN_vkCmdFillBuffer) load("vkCmdFillBuffer", userptr); - vkCmdNextSubpass = (PFN_vkCmdNextSubpass) load("vkCmdNextSubpass", userptr); - vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier) load("vkCmdPipelineBarrier", userptr); - vkCmdPushConstants = (PFN_vkCmdPushConstants) load("vkCmdPushConstants", userptr); - vkCmdResetEvent = (PFN_vkCmdResetEvent) load("vkCmdResetEvent", userptr); - vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool) load("vkCmdResetQueryPool", userptr); - vkCmdResolveImage = (PFN_vkCmdResolveImage) load("vkCmdResolveImage", userptr); - vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants) load("vkCmdSetBlendConstants", userptr); - vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias) load("vkCmdSetDepthBias", userptr); - vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds) load("vkCmdSetDepthBounds", userptr); - vkCmdSetEvent = (PFN_vkCmdSetEvent) load("vkCmdSetEvent", userptr); - vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth) load("vkCmdSetLineWidth", userptr); - vkCmdSetScissor = (PFN_vkCmdSetScissor) load("vkCmdSetScissor", userptr); - vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask) load("vkCmdSetStencilCompareMask", userptr); - vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference) load("vkCmdSetStencilReference", userptr); - vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask) load("vkCmdSetStencilWriteMask", userptr); - vkCmdSetViewport = (PFN_vkCmdSetViewport) load("vkCmdSetViewport", userptr); - vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer) load("vkCmdUpdateBuffer", userptr); - vkCmdWaitEvents = (PFN_vkCmdWaitEvents) load("vkCmdWaitEvents", userptr); - vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp) load("vkCmdWriteTimestamp", userptr); - vkCreateBuffer = (PFN_vkCreateBuffer) load("vkCreateBuffer", userptr); - vkCreateBufferView = (PFN_vkCreateBufferView) load("vkCreateBufferView", userptr); - vkCreateCommandPool = (PFN_vkCreateCommandPool) load("vkCreateCommandPool", userptr); - vkCreateComputePipelines = (PFN_vkCreateComputePipelines) load("vkCreateComputePipelines", userptr); - vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool) load("vkCreateDescriptorPool", userptr); - vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout) load("vkCreateDescriptorSetLayout", userptr); - vkCreateDevice = (PFN_vkCreateDevice) load("vkCreateDevice", userptr); - vkCreateEvent = (PFN_vkCreateEvent) load("vkCreateEvent", userptr); - vkCreateFence = (PFN_vkCreateFence) load("vkCreateFence", userptr); - vkCreateFramebuffer = (PFN_vkCreateFramebuffer) load("vkCreateFramebuffer", userptr); - vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines) load("vkCreateGraphicsPipelines", userptr); - vkCreateImage = (PFN_vkCreateImage) load("vkCreateImage", userptr); - vkCreateImageView = (PFN_vkCreateImageView) load("vkCreateImageView", userptr); - vkCreateInstance = (PFN_vkCreateInstance) load("vkCreateInstance", userptr); - vkCreatePipelineCache = (PFN_vkCreatePipelineCache) load("vkCreatePipelineCache", userptr); - vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout) load("vkCreatePipelineLayout", userptr); - vkCreateQueryPool = (PFN_vkCreateQueryPool) load("vkCreateQueryPool", userptr); - vkCreateRenderPass = (PFN_vkCreateRenderPass) load("vkCreateRenderPass", userptr); - vkCreateSampler = (PFN_vkCreateSampler) load("vkCreateSampler", userptr); - vkCreateSemaphore = (PFN_vkCreateSemaphore) load("vkCreateSemaphore", userptr); - vkCreateShaderModule = (PFN_vkCreateShaderModule) load("vkCreateShaderModule", userptr); - vkDestroyBuffer = (PFN_vkDestroyBuffer) load("vkDestroyBuffer", userptr); - vkDestroyBufferView = (PFN_vkDestroyBufferView) load("vkDestroyBufferView", userptr); - vkDestroyCommandPool = (PFN_vkDestroyCommandPool) load("vkDestroyCommandPool", userptr); - vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool) load("vkDestroyDescriptorPool", userptr); - vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout) load("vkDestroyDescriptorSetLayout", userptr); - vkDestroyDevice = (PFN_vkDestroyDevice) load("vkDestroyDevice", userptr); - vkDestroyEvent = (PFN_vkDestroyEvent) load("vkDestroyEvent", userptr); - vkDestroyFence = (PFN_vkDestroyFence) load("vkDestroyFence", userptr); - vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer) load("vkDestroyFramebuffer", userptr); - vkDestroyImage = (PFN_vkDestroyImage) load("vkDestroyImage", userptr); - vkDestroyImageView = (PFN_vkDestroyImageView) load("vkDestroyImageView", userptr); - vkDestroyInstance = (PFN_vkDestroyInstance) load("vkDestroyInstance", userptr); - vkDestroyPipeline = (PFN_vkDestroyPipeline) load("vkDestroyPipeline", userptr); - vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache) load("vkDestroyPipelineCache", userptr); - vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout) load("vkDestroyPipelineLayout", userptr); - vkDestroyQueryPool = (PFN_vkDestroyQueryPool) load("vkDestroyQueryPool", userptr); - vkDestroyRenderPass = (PFN_vkDestroyRenderPass) load("vkDestroyRenderPass", userptr); - vkDestroySampler = (PFN_vkDestroySampler) load("vkDestroySampler", userptr); - vkDestroySemaphore = (PFN_vkDestroySemaphore) load("vkDestroySemaphore", userptr); - vkDestroyShaderModule = (PFN_vkDestroyShaderModule) load("vkDestroyShaderModule", userptr); - vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle) load("vkDeviceWaitIdle", userptr); - vkEndCommandBuffer = (PFN_vkEndCommandBuffer) load("vkEndCommandBuffer", userptr); - vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties) load("vkEnumerateDeviceExtensionProperties", userptr); - vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties) load("vkEnumerateDeviceLayerProperties", userptr); - vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties) load("vkEnumerateInstanceExtensionProperties", userptr); - vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties) load("vkEnumerateInstanceLayerProperties", userptr); - vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices) load("vkEnumeratePhysicalDevices", userptr); - vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges) load("vkFlushMappedMemoryRanges", userptr); - vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers) load("vkFreeCommandBuffers", userptr); - vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets) load("vkFreeDescriptorSets", userptr); - vkFreeMemory = (PFN_vkFreeMemory) load("vkFreeMemory", userptr); - vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements) load("vkGetBufferMemoryRequirements", userptr); - vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment) load("vkGetDeviceMemoryCommitment", userptr); - vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr) load("vkGetDeviceProcAddr", userptr); - vkGetDeviceQueue = (PFN_vkGetDeviceQueue) load("vkGetDeviceQueue", userptr); - vkGetEventStatus = (PFN_vkGetEventStatus) load("vkGetEventStatus", userptr); - vkGetFenceStatus = (PFN_vkGetFenceStatus) load("vkGetFenceStatus", userptr); - vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements) load("vkGetImageMemoryRequirements", userptr); - vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements) load("vkGetImageSparseMemoryRequirements", userptr); - vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout) load("vkGetImageSubresourceLayout", userptr); - vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr) load("vkGetInstanceProcAddr", userptr); - vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures) load("vkGetPhysicalDeviceFeatures", userptr); - vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties) load("vkGetPhysicalDeviceFormatProperties", userptr); - vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties) load("vkGetPhysicalDeviceImageFormatProperties", userptr); - vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties) load("vkGetPhysicalDeviceMemoryProperties", userptr); - vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties) load("vkGetPhysicalDeviceProperties", userptr); - vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties) load("vkGetPhysicalDeviceQueueFamilyProperties", userptr); - vkGetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties) load("vkGetPhysicalDeviceSparseImageFormatProperties", userptr); - vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData) load("vkGetPipelineCacheData", userptr); - vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults) load("vkGetQueryPoolResults", userptr); - vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity) load("vkGetRenderAreaGranularity", userptr); - vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges) load("vkInvalidateMappedMemoryRanges", userptr); - vkMapMemory = (PFN_vkMapMemory) load("vkMapMemory", userptr); - vkMergePipelineCaches = (PFN_vkMergePipelineCaches) load("vkMergePipelineCaches", userptr); - vkQueueBindSparse = (PFN_vkQueueBindSparse) load("vkQueueBindSparse", userptr); - vkQueueSubmit = (PFN_vkQueueSubmit) load("vkQueueSubmit", userptr); - vkQueueWaitIdle = (PFN_vkQueueWaitIdle) load("vkQueueWaitIdle", userptr); - vkResetCommandBuffer = (PFN_vkResetCommandBuffer) load("vkResetCommandBuffer", userptr); - vkResetCommandPool = (PFN_vkResetCommandPool) load("vkResetCommandPool", userptr); - vkResetDescriptorPool = (PFN_vkResetDescriptorPool) load("vkResetDescriptorPool", userptr); - vkResetEvent = (PFN_vkResetEvent) load("vkResetEvent", userptr); - vkResetFences = (PFN_vkResetFences) load("vkResetFences", userptr); - vkSetEvent = (PFN_vkSetEvent) load("vkSetEvent", userptr); - vkUnmapMemory = (PFN_vkUnmapMemory) load("vkUnmapMemory", userptr); - vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets) load("vkUpdateDescriptorSets", userptr); - vkWaitForFences = (PFN_vkWaitForFences) load("vkWaitForFences", userptr); -} -static void glad_vk_load_VK_VERSION_1_1( GLADuserptrloadfunc load, void* userptr) { - if(!GLAD_VK_VERSION_1_1) return; - vkBindBufferMemory2 = (PFN_vkBindBufferMemory2) load("vkBindBufferMemory2", userptr); - vkBindImageMemory2 = (PFN_vkBindImageMemory2) load("vkBindImageMemory2", userptr); - vkCmdDispatchBase = (PFN_vkCmdDispatchBase) load("vkCmdDispatchBase", userptr); - vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask) load("vkCmdSetDeviceMask", userptr); - vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate) load("vkCreateDescriptorUpdateTemplate", userptr); - vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion) load("vkCreateSamplerYcbcrConversion", userptr); - vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate) load("vkDestroyDescriptorUpdateTemplate", userptr); - vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion) load("vkDestroySamplerYcbcrConversion", userptr); - vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion) load("vkEnumerateInstanceVersion", userptr); - vkEnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups) load("vkEnumeratePhysicalDeviceGroups", userptr); - vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2) load("vkGetBufferMemoryRequirements2", userptr); - vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport) load("vkGetDescriptorSetLayoutSupport", userptr); - vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures) load("vkGetDeviceGroupPeerMemoryFeatures", userptr); - vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2) load("vkGetDeviceQueue2", userptr); - vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2) load("vkGetImageMemoryRequirements2", userptr); - vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2) load("vkGetImageSparseMemoryRequirements2", userptr); - vkGetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties) load("vkGetPhysicalDeviceExternalBufferProperties", userptr); - vkGetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties) load("vkGetPhysicalDeviceExternalFenceProperties", userptr); - vkGetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties) load("vkGetPhysicalDeviceExternalSemaphoreProperties", userptr); - vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2) load("vkGetPhysicalDeviceFeatures2", userptr); - vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2) load("vkGetPhysicalDeviceFormatProperties2", userptr); - vkGetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2) load("vkGetPhysicalDeviceImageFormatProperties2", userptr); - vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2) load("vkGetPhysicalDeviceMemoryProperties2", userptr); - vkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2) load("vkGetPhysicalDeviceProperties2", userptr); - vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2) load("vkGetPhysicalDeviceQueueFamilyProperties2", userptr); - vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2) load("vkGetPhysicalDeviceSparseImageFormatProperties2", userptr); - vkTrimCommandPool = (PFN_vkTrimCommandPool) load("vkTrimCommandPool", userptr); - vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate) load("vkUpdateDescriptorSetWithTemplate", userptr); -} -static void glad_vk_load_VK_EXT_debug_report( GLADuserptrloadfunc load, void* userptr) { - if(!GLAD_VK_EXT_debug_report) return; - vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT) load("vkCreateDebugReportCallbackEXT", userptr); - vkDebugReportMessageEXT = (PFN_vkDebugReportMessageEXT) load("vkDebugReportMessageEXT", userptr); - vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT) load("vkDestroyDebugReportCallbackEXT", userptr); -} -static void glad_vk_load_VK_KHR_surface( GLADuserptrloadfunc load, void* userptr) { - if(!GLAD_VK_KHR_surface) return; - vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR) load("vkDestroySurfaceKHR", userptr); - vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) load("vkGetPhysicalDeviceSurfaceCapabilitiesKHR", userptr); - vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) load("vkGetPhysicalDeviceSurfaceFormatsKHR", userptr); - vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) load("vkGetPhysicalDeviceSurfacePresentModesKHR", userptr); - vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR) load("vkGetPhysicalDeviceSurfaceSupportKHR", userptr); -} -static void glad_vk_load_VK_KHR_swapchain( GLADuserptrloadfunc load, void* userptr) { - if(!GLAD_VK_KHR_swapchain) return; - vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR) load("vkAcquireNextImage2KHR", userptr); - vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) load("vkAcquireNextImageKHR", userptr); - vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) load("vkCreateSwapchainKHR", userptr); - vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) load("vkDestroySwapchainKHR", userptr); - vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR) load("vkGetDeviceGroupPresentCapabilitiesKHR", userptr); - vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR) load("vkGetDeviceGroupSurfacePresentModesKHR", userptr); - vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR) load("vkGetPhysicalDevicePresentRectanglesKHR", userptr); - vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) load("vkGetSwapchainImagesKHR", userptr); - vkQueuePresentKHR = (PFN_vkQueuePresentKHR) load("vkQueuePresentKHR", userptr); -} - - - -static int glad_vk_get_extensions( VkPhysicalDevice physical_device, uint32_t *out_extension_count, char ***out_extensions) { - uint32_t i; - uint32_t instance_extension_count = 0; - uint32_t device_extension_count = 0; - uint32_t max_extension_count; - uint32_t total_extension_count; - char **extensions; - VkExtensionProperties *ext_properties; - VkResult result; - - if (vkEnumerateInstanceExtensionProperties == NULL || (physical_device != NULL && vkEnumerateDeviceExtensionProperties == NULL)) { - return 0; - } - - result = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, NULL); - if (result != VK_SUCCESS) { - return 0; - } - - if (physical_device != NULL) { - result = vkEnumerateDeviceExtensionProperties(physical_device, NULL, &device_extension_count, NULL); - if (result != VK_SUCCESS) { - return 0; - } - } - - total_extension_count = instance_extension_count + device_extension_count; - max_extension_count = instance_extension_count > device_extension_count - ? instance_extension_count : device_extension_count; - - ext_properties = (VkExtensionProperties*) malloc(max_extension_count * sizeof(VkExtensionProperties)); - if (ext_properties == NULL) { - return 0; - } - - result = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, ext_properties); - if (result != VK_SUCCESS) { - free((void*) ext_properties); - return 0; - } - - extensions = (char**) calloc(total_extension_count, sizeof(char*)); - if (extensions == NULL) { - free((void*) ext_properties); - return 0; - } - - for (i = 0; i < instance_extension_count; ++i) { - VkExtensionProperties ext = ext_properties[i]; - - size_t extension_name_length = strlen(ext.extensionName) + 1; - extensions[i] = (char*) malloc(extension_name_length * sizeof(char)); - memcpy(extensions[i], ext.extensionName, extension_name_length * sizeof(char)); - } - - if (physical_device != NULL) { - result = vkEnumerateDeviceExtensionProperties(physical_device, NULL, &device_extension_count, ext_properties); - if (result != VK_SUCCESS) { - for (i = 0; i < instance_extension_count; ++i) { - free((void*) extensions[i]); - } - free(extensions); - return 0; - } - - for (i = 0; i < device_extension_count; ++i) { - VkExtensionProperties ext = ext_properties[i]; - - size_t extension_name_length = strlen(ext.extensionName) + 1; - extensions[instance_extension_count + i] = (char*) malloc(extension_name_length * sizeof(char)); - memcpy(extensions[instance_extension_count + i], ext.extensionName, extension_name_length * sizeof(char)); - } - } - - free((void*) ext_properties); - - *out_extension_count = total_extension_count; - *out_extensions = extensions; - - return 1; -} - -static void glad_vk_free_extensions(uint32_t extension_count, char **extensions) { - uint32_t i; - - for(i = 0; i < extension_count ; ++i) { - free((void*) (extensions[i])); - } - - free((void*) extensions); -} - -static int glad_vk_has_extension(const char *name, uint32_t extension_count, char **extensions) { - uint32_t i; - - for (i = 0; i < extension_count; ++i) { - if(strcmp(name, extensions[i]) == 0) { - return 1; - } - } - - return 0; -} - -static GLADapiproc glad_vk_get_proc_from_userptr(const char* name, void *userptr) { - return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name); -} - -static int glad_vk_find_extensions_vulkan( VkPhysicalDevice physical_device) { - uint32_t extension_count = 0; - char **extensions = NULL; - if (!glad_vk_get_extensions(physical_device, &extension_count, &extensions)) return 0; - - GLAD_VK_EXT_debug_report = glad_vk_has_extension("VK_EXT_debug_report", extension_count, extensions); - GLAD_VK_KHR_surface = glad_vk_has_extension("VK_KHR_surface", extension_count, extensions); - GLAD_VK_KHR_swapchain = glad_vk_has_extension("VK_KHR_swapchain", extension_count, extensions); - - glad_vk_free_extensions(extension_count, extensions); - - return 1; -} - -static int glad_vk_find_core_vulkan( VkPhysicalDevice physical_device) { - int major = 1; - int minor = 0; - -#ifdef VK_VERSION_1_1 - if (vkEnumerateInstanceVersion != NULL) { - uint32_t version; - VkResult result; - - result = vkEnumerateInstanceVersion(&version); - if (result == VK_SUCCESS) { - major = (int) VK_VERSION_MAJOR(version); - minor = (int) VK_VERSION_MINOR(version); - } - } -#endif - - if (physical_device != NULL && vkGetPhysicalDeviceProperties != NULL) { - VkPhysicalDeviceProperties properties; - vkGetPhysicalDeviceProperties(physical_device, &properties); - - major = (int) VK_VERSION_MAJOR(properties.apiVersion); - minor = (int) VK_VERSION_MINOR(properties.apiVersion); - } - - GLAD_VK_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; - GLAD_VK_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; - - return GLAD_MAKE_VERSION(major, minor); -} - -int gladLoadVulkanUserPtr( VkPhysicalDevice physical_device, GLADuserptrloadfunc load, void *userptr) { - int version; - -#ifdef VK_VERSION_1_1 - vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion) load("vkEnumerateInstanceVersion", userptr); -#endif - version = glad_vk_find_core_vulkan( physical_device); - if (!version) { - return 0; - } - - glad_vk_load_VK_VERSION_1_0(load, userptr); - glad_vk_load_VK_VERSION_1_1(load, userptr); - - if (!glad_vk_find_extensions_vulkan( physical_device)) return 0; - glad_vk_load_VK_EXT_debug_report(load, userptr); - glad_vk_load_VK_KHR_surface(load, userptr); - glad_vk_load_VK_KHR_swapchain(load, userptr); - - - return version; -} - - -int gladLoadVulkan( VkPhysicalDevice physical_device, GLADloadfunc load) { - return gladLoadVulkanUserPtr( physical_device, glad_vk_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load); -} - - - - +#include <stdio.h>+#include <stdlib.h>+#include <string.h>+#include <glad/vulkan.h>++#ifndef GLAD_IMPL_UTIL_C_+#define GLAD_IMPL_UTIL_C_++#ifdef _MSC_VER+#define GLAD_IMPL_UTIL_SSCANF sscanf_s+#else+#define GLAD_IMPL_UTIL_SSCANF sscanf+#endif++#endif /* GLAD_IMPL_UTIL_C_ */+++int GLAD_VK_VERSION_1_0 = 0;+int GLAD_VK_VERSION_1_1 = 0;+int GLAD_VK_EXT_debug_report = 0;+int GLAD_VK_KHR_surface = 0;+int GLAD_VK_KHR_swapchain = 0;++++PFN_vkAcquireNextImage2KHR glad_vkAcquireNextImage2KHR = NULL;+PFN_vkAcquireNextImageKHR glad_vkAcquireNextImageKHR = NULL;+PFN_vkAllocateCommandBuffers glad_vkAllocateCommandBuffers = NULL;+PFN_vkAllocateDescriptorSets glad_vkAllocateDescriptorSets = NULL;+PFN_vkAllocateMemory glad_vkAllocateMemory = NULL;+PFN_vkBeginCommandBuffer glad_vkBeginCommandBuffer = NULL;+PFN_vkBindBufferMemory glad_vkBindBufferMemory = NULL;+PFN_vkBindBufferMemory2 glad_vkBindBufferMemory2 = NULL;+PFN_vkBindImageMemory glad_vkBindImageMemory = NULL;+PFN_vkBindImageMemory2 glad_vkBindImageMemory2 = NULL;+PFN_vkCmdBeginQuery glad_vkCmdBeginQuery = NULL;+PFN_vkCmdBeginRenderPass glad_vkCmdBeginRenderPass = NULL;+PFN_vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets = NULL;+PFN_vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer = NULL;+PFN_vkCmdBindPipeline glad_vkCmdBindPipeline = NULL;+PFN_vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers = NULL;+PFN_vkCmdBlitImage glad_vkCmdBlitImage = NULL;+PFN_vkCmdClearAttachments glad_vkCmdClearAttachments = NULL;+PFN_vkCmdClearColorImage glad_vkCmdClearColorImage = NULL;+PFN_vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage = NULL;+PFN_vkCmdCopyBuffer glad_vkCmdCopyBuffer = NULL;+PFN_vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage = NULL;+PFN_vkCmdCopyImage glad_vkCmdCopyImage = NULL;+PFN_vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer = NULL;+PFN_vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults = NULL;+PFN_vkCmdDispatch glad_vkCmdDispatch = NULL;+PFN_vkCmdDispatchBase glad_vkCmdDispatchBase = NULL;+PFN_vkCmdDispatchIndirect glad_vkCmdDispatchIndirect = NULL;+PFN_vkCmdDraw glad_vkCmdDraw = NULL;+PFN_vkCmdDrawIndexed glad_vkCmdDrawIndexed = NULL;+PFN_vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect = NULL;+PFN_vkCmdDrawIndirect glad_vkCmdDrawIndirect = NULL;+PFN_vkCmdEndQuery glad_vkCmdEndQuery = NULL;+PFN_vkCmdEndRenderPass glad_vkCmdEndRenderPass = NULL;+PFN_vkCmdExecuteCommands glad_vkCmdExecuteCommands = NULL;+PFN_vkCmdFillBuffer glad_vkCmdFillBuffer = NULL;+PFN_vkCmdNextSubpass glad_vkCmdNextSubpass = NULL;+PFN_vkCmdPipelineBarrier glad_vkCmdPipelineBarrier = NULL;+PFN_vkCmdPushConstants glad_vkCmdPushConstants = NULL;+PFN_vkCmdResetEvent glad_vkCmdResetEvent = NULL;+PFN_vkCmdResetQueryPool glad_vkCmdResetQueryPool = NULL;+PFN_vkCmdResolveImage glad_vkCmdResolveImage = NULL;+PFN_vkCmdSetBlendConstants glad_vkCmdSetBlendConstants = NULL;+PFN_vkCmdSetDepthBias glad_vkCmdSetDepthBias = NULL;+PFN_vkCmdSetDepthBounds glad_vkCmdSetDepthBounds = NULL;+PFN_vkCmdSetDeviceMask glad_vkCmdSetDeviceMask = NULL;+PFN_vkCmdSetEvent glad_vkCmdSetEvent = NULL;+PFN_vkCmdSetLineWidth glad_vkCmdSetLineWidth = NULL;+PFN_vkCmdSetScissor glad_vkCmdSetScissor = NULL;+PFN_vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask = NULL;+PFN_vkCmdSetStencilReference glad_vkCmdSetStencilReference = NULL;+PFN_vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask = NULL;+PFN_vkCmdSetViewport glad_vkCmdSetViewport = NULL;+PFN_vkCmdUpdateBuffer glad_vkCmdUpdateBuffer = NULL;+PFN_vkCmdWaitEvents glad_vkCmdWaitEvents = NULL;+PFN_vkCmdWriteTimestamp glad_vkCmdWriteTimestamp = NULL;+PFN_vkCreateBuffer glad_vkCreateBuffer = NULL;+PFN_vkCreateBufferView glad_vkCreateBufferView = NULL;+PFN_vkCreateCommandPool glad_vkCreateCommandPool = NULL;+PFN_vkCreateComputePipelines glad_vkCreateComputePipelines = NULL;+PFN_vkCreateDebugReportCallbackEXT glad_vkCreateDebugReportCallbackEXT = NULL;+PFN_vkCreateDescriptorPool glad_vkCreateDescriptorPool = NULL;+PFN_vkCreateDescriptorSetLayout glad_vkCreateDescriptorSetLayout = NULL;+PFN_vkCreateDescriptorUpdateTemplate glad_vkCreateDescriptorUpdateTemplate = NULL;+PFN_vkCreateDevice glad_vkCreateDevice = NULL;+PFN_vkCreateEvent glad_vkCreateEvent = NULL;+PFN_vkCreateFence glad_vkCreateFence = NULL;+PFN_vkCreateFramebuffer glad_vkCreateFramebuffer = NULL;+PFN_vkCreateGraphicsPipelines glad_vkCreateGraphicsPipelines = NULL;+PFN_vkCreateImage glad_vkCreateImage = NULL;+PFN_vkCreateImageView glad_vkCreateImageView = NULL;+PFN_vkCreateInstance glad_vkCreateInstance = NULL;+PFN_vkCreatePipelineCache glad_vkCreatePipelineCache = NULL;+PFN_vkCreatePipelineLayout glad_vkCreatePipelineLayout = NULL;+PFN_vkCreateQueryPool glad_vkCreateQueryPool = NULL;+PFN_vkCreateRenderPass glad_vkCreateRenderPass = NULL;+PFN_vkCreateSampler glad_vkCreateSampler = NULL;+PFN_vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion = NULL;+PFN_vkCreateSemaphore glad_vkCreateSemaphore = NULL;+PFN_vkCreateShaderModule glad_vkCreateShaderModule = NULL;+PFN_vkCreateSwapchainKHR glad_vkCreateSwapchainKHR = NULL;+PFN_vkDebugReportMessageEXT glad_vkDebugReportMessageEXT = NULL;+PFN_vkDestroyBuffer glad_vkDestroyBuffer = NULL;+PFN_vkDestroyBufferView glad_vkDestroyBufferView = NULL;+PFN_vkDestroyCommandPool glad_vkDestroyCommandPool = NULL;+PFN_vkDestroyDebugReportCallbackEXT glad_vkDestroyDebugReportCallbackEXT = NULL;+PFN_vkDestroyDescriptorPool glad_vkDestroyDescriptorPool = NULL;+PFN_vkDestroyDescriptorSetLayout glad_vkDestroyDescriptorSetLayout = NULL;+PFN_vkDestroyDescriptorUpdateTemplate glad_vkDestroyDescriptorUpdateTemplate = NULL;+PFN_vkDestroyDevice glad_vkDestroyDevice = NULL;+PFN_vkDestroyEvent glad_vkDestroyEvent = NULL;+PFN_vkDestroyFence glad_vkDestroyFence = NULL;+PFN_vkDestroyFramebuffer glad_vkDestroyFramebuffer = NULL;+PFN_vkDestroyImage glad_vkDestroyImage = NULL;+PFN_vkDestroyImageView glad_vkDestroyImageView = NULL;+PFN_vkDestroyInstance glad_vkDestroyInstance = NULL;+PFN_vkDestroyPipeline glad_vkDestroyPipeline = NULL;+PFN_vkDestroyPipelineCache glad_vkDestroyPipelineCache = NULL;+PFN_vkDestroyPipelineLayout glad_vkDestroyPipelineLayout = NULL;+PFN_vkDestroyQueryPool glad_vkDestroyQueryPool = NULL;+PFN_vkDestroyRenderPass glad_vkDestroyRenderPass = NULL;+PFN_vkDestroySampler glad_vkDestroySampler = NULL;+PFN_vkDestroySamplerYcbcrConversion glad_vkDestroySamplerYcbcrConversion = NULL;+PFN_vkDestroySemaphore glad_vkDestroySemaphore = NULL;+PFN_vkDestroyShaderModule glad_vkDestroyShaderModule = NULL;+PFN_vkDestroySurfaceKHR glad_vkDestroySurfaceKHR = NULL;+PFN_vkDestroySwapchainKHR glad_vkDestroySwapchainKHR = NULL;+PFN_vkDeviceWaitIdle glad_vkDeviceWaitIdle = NULL;+PFN_vkEndCommandBuffer glad_vkEndCommandBuffer = NULL;+PFN_vkEnumerateDeviceExtensionProperties glad_vkEnumerateDeviceExtensionProperties = NULL;+PFN_vkEnumerateDeviceLayerProperties glad_vkEnumerateDeviceLayerProperties = NULL;+PFN_vkEnumerateInstanceExtensionProperties glad_vkEnumerateInstanceExtensionProperties = NULL;+PFN_vkEnumerateInstanceLayerProperties glad_vkEnumerateInstanceLayerProperties = NULL;+PFN_vkEnumerateInstanceVersion glad_vkEnumerateInstanceVersion = NULL;+PFN_vkEnumeratePhysicalDeviceGroups glad_vkEnumeratePhysicalDeviceGroups = NULL;+PFN_vkEnumeratePhysicalDevices glad_vkEnumeratePhysicalDevices = NULL;+PFN_vkFlushMappedMemoryRanges glad_vkFlushMappedMemoryRanges = NULL;+PFN_vkFreeCommandBuffers glad_vkFreeCommandBuffers = NULL;+PFN_vkFreeDescriptorSets glad_vkFreeDescriptorSets = NULL;+PFN_vkFreeMemory glad_vkFreeMemory = NULL;+PFN_vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements = NULL;+PFN_vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2 = NULL;+PFN_vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport = NULL;+PFN_vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures = NULL;+PFN_vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR = NULL;+PFN_vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR = NULL;+PFN_vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment = NULL;+PFN_vkGetDeviceProcAddr glad_vkGetDeviceProcAddr = NULL;+PFN_vkGetDeviceQueue glad_vkGetDeviceQueue = NULL;+PFN_vkGetDeviceQueue2 glad_vkGetDeviceQueue2 = NULL;+PFN_vkGetEventStatus glad_vkGetEventStatus = NULL;+PFN_vkGetFenceStatus glad_vkGetFenceStatus = NULL;+PFN_vkGetImageMemoryRequirements glad_vkGetImageMemoryRequirements = NULL;+PFN_vkGetImageMemoryRequirements2 glad_vkGetImageMemoryRequirements2 = NULL;+PFN_vkGetImageSparseMemoryRequirements glad_vkGetImageSparseMemoryRequirements = NULL;+PFN_vkGetImageSparseMemoryRequirements2 glad_vkGetImageSparseMemoryRequirements2 = NULL;+PFN_vkGetImageSubresourceLayout glad_vkGetImageSubresourceLayout = NULL;+PFN_vkGetInstanceProcAddr glad_vkGetInstanceProcAddr = NULL;+PFN_vkGetPhysicalDeviceExternalBufferProperties glad_vkGetPhysicalDeviceExternalBufferProperties = NULL;+PFN_vkGetPhysicalDeviceExternalFenceProperties glad_vkGetPhysicalDeviceExternalFenceProperties = NULL;+PFN_vkGetPhysicalDeviceExternalSemaphoreProperties glad_vkGetPhysicalDeviceExternalSemaphoreProperties = NULL;+PFN_vkGetPhysicalDeviceFeatures glad_vkGetPhysicalDeviceFeatures = NULL;+PFN_vkGetPhysicalDeviceFeatures2 glad_vkGetPhysicalDeviceFeatures2 = NULL;+PFN_vkGetPhysicalDeviceFormatProperties glad_vkGetPhysicalDeviceFormatProperties = NULL;+PFN_vkGetPhysicalDeviceFormatProperties2 glad_vkGetPhysicalDeviceFormatProperties2 = NULL;+PFN_vkGetPhysicalDeviceImageFormatProperties glad_vkGetPhysicalDeviceImageFormatProperties = NULL;+PFN_vkGetPhysicalDeviceImageFormatProperties2 glad_vkGetPhysicalDeviceImageFormatProperties2 = NULL;+PFN_vkGetPhysicalDeviceMemoryProperties glad_vkGetPhysicalDeviceMemoryProperties = NULL;+PFN_vkGetPhysicalDeviceMemoryProperties2 glad_vkGetPhysicalDeviceMemoryProperties2 = NULL;+PFN_vkGetPhysicalDevicePresentRectanglesKHR glad_vkGetPhysicalDevicePresentRectanglesKHR = NULL;+PFN_vkGetPhysicalDeviceProperties glad_vkGetPhysicalDeviceProperties = NULL;+PFN_vkGetPhysicalDeviceProperties2 glad_vkGetPhysicalDeviceProperties2 = NULL;+PFN_vkGetPhysicalDeviceQueueFamilyProperties glad_vkGetPhysicalDeviceQueueFamilyProperties = NULL;+PFN_vkGetPhysicalDeviceQueueFamilyProperties2 glad_vkGetPhysicalDeviceQueueFamilyProperties2 = NULL;+PFN_vkGetPhysicalDeviceSparseImageFormatProperties glad_vkGetPhysicalDeviceSparseImageFormatProperties = NULL;+PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 glad_vkGetPhysicalDeviceSparseImageFormatProperties2 = NULL;+PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = NULL;+PFN_vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR = NULL;+PFN_vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR = NULL;+PFN_vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR = NULL;+PFN_vkGetPipelineCacheData glad_vkGetPipelineCacheData = NULL;+PFN_vkGetQueryPoolResults glad_vkGetQueryPoolResults = NULL;+PFN_vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity = NULL;+PFN_vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR = NULL;+PFN_vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges = NULL;+PFN_vkMapMemory glad_vkMapMemory = NULL;+PFN_vkMergePipelineCaches glad_vkMergePipelineCaches = NULL;+PFN_vkQueueBindSparse glad_vkQueueBindSparse = NULL;+PFN_vkQueuePresentKHR glad_vkQueuePresentKHR = NULL;+PFN_vkQueueSubmit glad_vkQueueSubmit = NULL;+PFN_vkQueueWaitIdle glad_vkQueueWaitIdle = NULL;+PFN_vkResetCommandBuffer glad_vkResetCommandBuffer = NULL;+PFN_vkResetCommandPool glad_vkResetCommandPool = NULL;+PFN_vkResetDescriptorPool glad_vkResetDescriptorPool = NULL;+PFN_vkResetEvent glad_vkResetEvent = NULL;+PFN_vkResetFences glad_vkResetFences = NULL;+PFN_vkSetEvent glad_vkSetEvent = NULL;+PFN_vkTrimCommandPool glad_vkTrimCommandPool = NULL;+PFN_vkUnmapMemory glad_vkUnmapMemory = NULL;+PFN_vkUpdateDescriptorSetWithTemplate glad_vkUpdateDescriptorSetWithTemplate = NULL;+PFN_vkUpdateDescriptorSets glad_vkUpdateDescriptorSets = NULL;+PFN_vkWaitForFences glad_vkWaitForFences = NULL;+++static void glad_vk_load_VK_VERSION_1_0( GLADuserptrloadfunc load, void* userptr) {+ if(!GLAD_VK_VERSION_1_0) return;+ vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers) load("vkAllocateCommandBuffers", userptr);+ vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets) load("vkAllocateDescriptorSets", userptr);+ vkAllocateMemory = (PFN_vkAllocateMemory) load("vkAllocateMemory", userptr);+ vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer) load("vkBeginCommandBuffer", userptr);+ vkBindBufferMemory = (PFN_vkBindBufferMemory) load("vkBindBufferMemory", userptr);+ vkBindImageMemory = (PFN_vkBindImageMemory) load("vkBindImageMemory", userptr);+ vkCmdBeginQuery = (PFN_vkCmdBeginQuery) load("vkCmdBeginQuery", userptr);+ vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass) load("vkCmdBeginRenderPass", userptr);+ vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets) load("vkCmdBindDescriptorSets", userptr);+ vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer) load("vkCmdBindIndexBuffer", userptr);+ vkCmdBindPipeline = (PFN_vkCmdBindPipeline) load("vkCmdBindPipeline", userptr);+ vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers) load("vkCmdBindVertexBuffers", userptr);+ vkCmdBlitImage = (PFN_vkCmdBlitImage) load("vkCmdBlitImage", userptr);+ vkCmdClearAttachments = (PFN_vkCmdClearAttachments) load("vkCmdClearAttachments", userptr);+ vkCmdClearColorImage = (PFN_vkCmdClearColorImage) load("vkCmdClearColorImage", userptr);+ vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage) load("vkCmdClearDepthStencilImage", userptr);+ vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer) load("vkCmdCopyBuffer", userptr);+ vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage) load("vkCmdCopyBufferToImage", userptr);+ vkCmdCopyImage = (PFN_vkCmdCopyImage) load("vkCmdCopyImage", userptr);+ vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer) load("vkCmdCopyImageToBuffer", userptr);+ vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults) load("vkCmdCopyQueryPoolResults", userptr);+ vkCmdDispatch = (PFN_vkCmdDispatch) load("vkCmdDispatch", userptr);+ vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect) load("vkCmdDispatchIndirect", userptr);+ vkCmdDraw = (PFN_vkCmdDraw) load("vkCmdDraw", userptr);+ vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed) load("vkCmdDrawIndexed", userptr);+ vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect) load("vkCmdDrawIndexedIndirect", userptr);+ vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect) load("vkCmdDrawIndirect", userptr);+ vkCmdEndQuery = (PFN_vkCmdEndQuery) load("vkCmdEndQuery", userptr);+ vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass) load("vkCmdEndRenderPass", userptr);+ vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands) load("vkCmdExecuteCommands", userptr);+ vkCmdFillBuffer = (PFN_vkCmdFillBuffer) load("vkCmdFillBuffer", userptr);+ vkCmdNextSubpass = (PFN_vkCmdNextSubpass) load("vkCmdNextSubpass", userptr);+ vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier) load("vkCmdPipelineBarrier", userptr);+ vkCmdPushConstants = (PFN_vkCmdPushConstants) load("vkCmdPushConstants", userptr);+ vkCmdResetEvent = (PFN_vkCmdResetEvent) load("vkCmdResetEvent", userptr);+ vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool) load("vkCmdResetQueryPool", userptr);+ vkCmdResolveImage = (PFN_vkCmdResolveImage) load("vkCmdResolveImage", userptr);+ vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants) load("vkCmdSetBlendConstants", userptr);+ vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias) load("vkCmdSetDepthBias", userptr);+ vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds) load("vkCmdSetDepthBounds", userptr);+ vkCmdSetEvent = (PFN_vkCmdSetEvent) load("vkCmdSetEvent", userptr);+ vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth) load("vkCmdSetLineWidth", userptr);+ vkCmdSetScissor = (PFN_vkCmdSetScissor) load("vkCmdSetScissor", userptr);+ vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask) load("vkCmdSetStencilCompareMask", userptr);+ vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference) load("vkCmdSetStencilReference", userptr);+ vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask) load("vkCmdSetStencilWriteMask", userptr);+ vkCmdSetViewport = (PFN_vkCmdSetViewport) load("vkCmdSetViewport", userptr);+ vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer) load("vkCmdUpdateBuffer", userptr);+ vkCmdWaitEvents = (PFN_vkCmdWaitEvents) load("vkCmdWaitEvents", userptr);+ vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp) load("vkCmdWriteTimestamp", userptr);+ vkCreateBuffer = (PFN_vkCreateBuffer) load("vkCreateBuffer", userptr);+ vkCreateBufferView = (PFN_vkCreateBufferView) load("vkCreateBufferView", userptr);+ vkCreateCommandPool = (PFN_vkCreateCommandPool) load("vkCreateCommandPool", userptr);+ vkCreateComputePipelines = (PFN_vkCreateComputePipelines) load("vkCreateComputePipelines", userptr);+ vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool) load("vkCreateDescriptorPool", userptr);+ vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout) load("vkCreateDescriptorSetLayout", userptr);+ vkCreateDevice = (PFN_vkCreateDevice) load("vkCreateDevice", userptr);+ vkCreateEvent = (PFN_vkCreateEvent) load("vkCreateEvent", userptr);+ vkCreateFence = (PFN_vkCreateFence) load("vkCreateFence", userptr);+ vkCreateFramebuffer = (PFN_vkCreateFramebuffer) load("vkCreateFramebuffer", userptr);+ vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines) load("vkCreateGraphicsPipelines", userptr);+ vkCreateImage = (PFN_vkCreateImage) load("vkCreateImage", userptr);+ vkCreateImageView = (PFN_vkCreateImageView) load("vkCreateImageView", userptr);+ vkCreateInstance = (PFN_vkCreateInstance) load("vkCreateInstance", userptr);+ vkCreatePipelineCache = (PFN_vkCreatePipelineCache) load("vkCreatePipelineCache", userptr);+ vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout) load("vkCreatePipelineLayout", userptr);+ vkCreateQueryPool = (PFN_vkCreateQueryPool) load("vkCreateQueryPool", userptr);+ vkCreateRenderPass = (PFN_vkCreateRenderPass) load("vkCreateRenderPass", userptr);+ vkCreateSampler = (PFN_vkCreateSampler) load("vkCreateSampler", userptr);+ vkCreateSemaphore = (PFN_vkCreateSemaphore) load("vkCreateSemaphore", userptr);+ vkCreateShaderModule = (PFN_vkCreateShaderModule) load("vkCreateShaderModule", userptr);+ vkDestroyBuffer = (PFN_vkDestroyBuffer) load("vkDestroyBuffer", userptr);+ vkDestroyBufferView = (PFN_vkDestroyBufferView) load("vkDestroyBufferView", userptr);+ vkDestroyCommandPool = (PFN_vkDestroyCommandPool) load("vkDestroyCommandPool", userptr);+ vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool) load("vkDestroyDescriptorPool", userptr);+ vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout) load("vkDestroyDescriptorSetLayout", userptr);+ vkDestroyDevice = (PFN_vkDestroyDevice) load("vkDestroyDevice", userptr);+ vkDestroyEvent = (PFN_vkDestroyEvent) load("vkDestroyEvent", userptr);+ vkDestroyFence = (PFN_vkDestroyFence) load("vkDestroyFence", userptr);+ vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer) load("vkDestroyFramebuffer", userptr);+ vkDestroyImage = (PFN_vkDestroyImage) load("vkDestroyImage", userptr);+ vkDestroyImageView = (PFN_vkDestroyImageView) load("vkDestroyImageView", userptr);+ vkDestroyInstance = (PFN_vkDestroyInstance) load("vkDestroyInstance", userptr);+ vkDestroyPipeline = (PFN_vkDestroyPipeline) load("vkDestroyPipeline", userptr);+ vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache) load("vkDestroyPipelineCache", userptr);+ vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout) load("vkDestroyPipelineLayout", userptr);+ vkDestroyQueryPool = (PFN_vkDestroyQueryPool) load("vkDestroyQueryPool", userptr);+ vkDestroyRenderPass = (PFN_vkDestroyRenderPass) load("vkDestroyRenderPass", userptr);+ vkDestroySampler = (PFN_vkDestroySampler) load("vkDestroySampler", userptr);+ vkDestroySemaphore = (PFN_vkDestroySemaphore) load("vkDestroySemaphore", userptr);+ vkDestroyShaderModule = (PFN_vkDestroyShaderModule) load("vkDestroyShaderModule", userptr);+ vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle) load("vkDeviceWaitIdle", userptr);+ vkEndCommandBuffer = (PFN_vkEndCommandBuffer) load("vkEndCommandBuffer", userptr);+ vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties) load("vkEnumerateDeviceExtensionProperties", userptr);+ vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties) load("vkEnumerateDeviceLayerProperties", userptr);+ vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties) load("vkEnumerateInstanceExtensionProperties", userptr);+ vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties) load("vkEnumerateInstanceLayerProperties", userptr);+ vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices) load("vkEnumeratePhysicalDevices", userptr);+ vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges) load("vkFlushMappedMemoryRanges", userptr);+ vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers) load("vkFreeCommandBuffers", userptr);+ vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets) load("vkFreeDescriptorSets", userptr);+ vkFreeMemory = (PFN_vkFreeMemory) load("vkFreeMemory", userptr);+ vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements) load("vkGetBufferMemoryRequirements", userptr);+ vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment) load("vkGetDeviceMemoryCommitment", userptr);+ vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr) load("vkGetDeviceProcAddr", userptr);+ vkGetDeviceQueue = (PFN_vkGetDeviceQueue) load("vkGetDeviceQueue", userptr);+ vkGetEventStatus = (PFN_vkGetEventStatus) load("vkGetEventStatus", userptr);+ vkGetFenceStatus = (PFN_vkGetFenceStatus) load("vkGetFenceStatus", userptr);+ vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements) load("vkGetImageMemoryRequirements", userptr);+ vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements) load("vkGetImageSparseMemoryRequirements", userptr);+ vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout) load("vkGetImageSubresourceLayout", userptr);+ vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr) load("vkGetInstanceProcAddr", userptr);+ vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures) load("vkGetPhysicalDeviceFeatures", userptr);+ vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties) load("vkGetPhysicalDeviceFormatProperties", userptr);+ vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties) load("vkGetPhysicalDeviceImageFormatProperties", userptr);+ vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties) load("vkGetPhysicalDeviceMemoryProperties", userptr);+ vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties) load("vkGetPhysicalDeviceProperties", userptr);+ vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties) load("vkGetPhysicalDeviceQueueFamilyProperties", userptr);+ vkGetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties) load("vkGetPhysicalDeviceSparseImageFormatProperties", userptr);+ vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData) load("vkGetPipelineCacheData", userptr);+ vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults) load("vkGetQueryPoolResults", userptr);+ vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity) load("vkGetRenderAreaGranularity", userptr);+ vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges) load("vkInvalidateMappedMemoryRanges", userptr);+ vkMapMemory = (PFN_vkMapMemory) load("vkMapMemory", userptr);+ vkMergePipelineCaches = (PFN_vkMergePipelineCaches) load("vkMergePipelineCaches", userptr);+ vkQueueBindSparse = (PFN_vkQueueBindSparse) load("vkQueueBindSparse", userptr);+ vkQueueSubmit = (PFN_vkQueueSubmit) load("vkQueueSubmit", userptr);+ vkQueueWaitIdle = (PFN_vkQueueWaitIdle) load("vkQueueWaitIdle", userptr);+ vkResetCommandBuffer = (PFN_vkResetCommandBuffer) load("vkResetCommandBuffer", userptr);+ vkResetCommandPool = (PFN_vkResetCommandPool) load("vkResetCommandPool", userptr);+ vkResetDescriptorPool = (PFN_vkResetDescriptorPool) load("vkResetDescriptorPool", userptr);+ vkResetEvent = (PFN_vkResetEvent) load("vkResetEvent", userptr);+ vkResetFences = (PFN_vkResetFences) load("vkResetFences", userptr);+ vkSetEvent = (PFN_vkSetEvent) load("vkSetEvent", userptr);+ vkUnmapMemory = (PFN_vkUnmapMemory) load("vkUnmapMemory", userptr);+ vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets) load("vkUpdateDescriptorSets", userptr);+ vkWaitForFences = (PFN_vkWaitForFences) load("vkWaitForFences", userptr);+}+static void glad_vk_load_VK_VERSION_1_1( GLADuserptrloadfunc load, void* userptr) {+ if(!GLAD_VK_VERSION_1_1) return;+ vkBindBufferMemory2 = (PFN_vkBindBufferMemory2) load("vkBindBufferMemory2", userptr);+ vkBindImageMemory2 = (PFN_vkBindImageMemory2) load("vkBindImageMemory2", userptr);+ vkCmdDispatchBase = (PFN_vkCmdDispatchBase) load("vkCmdDispatchBase", userptr);+ vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask) load("vkCmdSetDeviceMask", userptr);+ vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate) load("vkCreateDescriptorUpdateTemplate", userptr);+ vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion) load("vkCreateSamplerYcbcrConversion", userptr);+ vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate) load("vkDestroyDescriptorUpdateTemplate", userptr);+ vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion) load("vkDestroySamplerYcbcrConversion", userptr);+ vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion) load("vkEnumerateInstanceVersion", userptr);+ vkEnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups) load("vkEnumeratePhysicalDeviceGroups", userptr);+ vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2) load("vkGetBufferMemoryRequirements2", userptr);+ vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport) load("vkGetDescriptorSetLayoutSupport", userptr);+ vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures) load("vkGetDeviceGroupPeerMemoryFeatures", userptr);+ vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2) load("vkGetDeviceQueue2", userptr);+ vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2) load("vkGetImageMemoryRequirements2", userptr);+ vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2) load("vkGetImageSparseMemoryRequirements2", userptr);+ vkGetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties) load("vkGetPhysicalDeviceExternalBufferProperties", userptr);+ vkGetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties) load("vkGetPhysicalDeviceExternalFenceProperties", userptr);+ vkGetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties) load("vkGetPhysicalDeviceExternalSemaphoreProperties", userptr);+ vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2) load("vkGetPhysicalDeviceFeatures2", userptr);+ vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2) load("vkGetPhysicalDeviceFormatProperties2", userptr);+ vkGetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2) load("vkGetPhysicalDeviceImageFormatProperties2", userptr);+ vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2) load("vkGetPhysicalDeviceMemoryProperties2", userptr);+ vkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2) load("vkGetPhysicalDeviceProperties2", userptr);+ vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2) load("vkGetPhysicalDeviceQueueFamilyProperties2", userptr);+ vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2) load("vkGetPhysicalDeviceSparseImageFormatProperties2", userptr);+ vkTrimCommandPool = (PFN_vkTrimCommandPool) load("vkTrimCommandPool", userptr);+ vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate) load("vkUpdateDescriptorSetWithTemplate", userptr);+}+static void glad_vk_load_VK_EXT_debug_report( GLADuserptrloadfunc load, void* userptr) {+ if(!GLAD_VK_EXT_debug_report) return;+ vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT) load("vkCreateDebugReportCallbackEXT", userptr);+ vkDebugReportMessageEXT = (PFN_vkDebugReportMessageEXT) load("vkDebugReportMessageEXT", userptr);+ vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT) load("vkDestroyDebugReportCallbackEXT", userptr);+}+static void glad_vk_load_VK_KHR_surface( GLADuserptrloadfunc load, void* userptr) {+ if(!GLAD_VK_KHR_surface) return;+ vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR) load("vkDestroySurfaceKHR", userptr);+ vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) load("vkGetPhysicalDeviceSurfaceCapabilitiesKHR", userptr);+ vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) load("vkGetPhysicalDeviceSurfaceFormatsKHR", userptr);+ vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) load("vkGetPhysicalDeviceSurfacePresentModesKHR", userptr);+ vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR) load("vkGetPhysicalDeviceSurfaceSupportKHR", userptr);+}+static void glad_vk_load_VK_KHR_swapchain( GLADuserptrloadfunc load, void* userptr) {+ if(!GLAD_VK_KHR_swapchain) return;+ vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR) load("vkAcquireNextImage2KHR", userptr);+ vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) load("vkAcquireNextImageKHR", userptr);+ vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) load("vkCreateSwapchainKHR", userptr);+ vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) load("vkDestroySwapchainKHR", userptr);+ vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR) load("vkGetDeviceGroupPresentCapabilitiesKHR", userptr);+ vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR) load("vkGetDeviceGroupSurfacePresentModesKHR", userptr);+ vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR) load("vkGetPhysicalDevicePresentRectanglesKHR", userptr);+ vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) load("vkGetSwapchainImagesKHR", userptr);+ vkQueuePresentKHR = (PFN_vkQueuePresentKHR) load("vkQueuePresentKHR", userptr);+}++++static int glad_vk_get_extensions( VkPhysicalDevice physical_device, uint32_t *out_extension_count, char ***out_extensions) {+ uint32_t i;+ uint32_t instance_extension_count = 0;+ uint32_t device_extension_count = 0;+ uint32_t max_extension_count;+ uint32_t total_extension_count;+ char **extensions;+ VkExtensionProperties *ext_properties;+ VkResult result;++ if (vkEnumerateInstanceExtensionProperties == NULL || (physical_device != NULL && vkEnumerateDeviceExtensionProperties == NULL)) {+ return 0;+ }++ result = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, NULL);+ if (result != VK_SUCCESS) {+ return 0;+ }++ if (physical_device != NULL) {+ result = vkEnumerateDeviceExtensionProperties(physical_device, NULL, &device_extension_count, NULL);+ if (result != VK_SUCCESS) {+ return 0;+ }+ }++ total_extension_count = instance_extension_count + device_extension_count;+ max_extension_count = instance_extension_count > device_extension_count+ ? instance_extension_count : device_extension_count;++ ext_properties = (VkExtensionProperties*) malloc(max_extension_count * sizeof(VkExtensionProperties));+ if (ext_properties == NULL) {+ return 0;+ }++ result = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, ext_properties);+ if (result != VK_SUCCESS) {+ free((void*) ext_properties);+ return 0;+ }++ extensions = (char**) calloc(total_extension_count, sizeof(char*));+ if (extensions == NULL) {+ free((void*) ext_properties);+ return 0;+ }++ for (i = 0; i < instance_extension_count; ++i) {+ VkExtensionProperties ext = ext_properties[i];++ size_t extension_name_length = strlen(ext.extensionName) + 1;+ extensions[i] = (char*) malloc(extension_name_length * sizeof(char));+ memcpy(extensions[i], ext.extensionName, extension_name_length * sizeof(char));+ }++ if (physical_device != NULL) {+ result = vkEnumerateDeviceExtensionProperties(physical_device, NULL, &device_extension_count, ext_properties);+ if (result != VK_SUCCESS) {+ for (i = 0; i < instance_extension_count; ++i) {+ free((void*) extensions[i]);+ }+ free(extensions);+ return 0;+ }++ for (i = 0; i < device_extension_count; ++i) {+ VkExtensionProperties ext = ext_properties[i];++ size_t extension_name_length = strlen(ext.extensionName) + 1;+ extensions[instance_extension_count + i] = (char*) malloc(extension_name_length * sizeof(char));+ memcpy(extensions[instance_extension_count + i], ext.extensionName, extension_name_length * sizeof(char));+ }+ }++ free((void*) ext_properties);++ *out_extension_count = total_extension_count;+ *out_extensions = extensions;++ return 1;+}++static void glad_vk_free_extensions(uint32_t extension_count, char **extensions) {+ uint32_t i;++ for(i = 0; i < extension_count ; ++i) {+ free((void*) (extensions[i]));+ }++ free((void*) extensions);+}++static int glad_vk_has_extension(const char *name, uint32_t extension_count, char **extensions) {+ uint32_t i;++ for (i = 0; i < extension_count; ++i) {+ if(strcmp(name, extensions[i]) == 0) {+ return 1;+ }+ }++ return 0;+}++static GLADapiproc glad_vk_get_proc_from_userptr(const char* name, void *userptr) {+ return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name);+}++static int glad_vk_find_extensions_vulkan( VkPhysicalDevice physical_device) {+ uint32_t extension_count = 0;+ char **extensions = NULL;+ if (!glad_vk_get_extensions(physical_device, &extension_count, &extensions)) return 0;++ GLAD_VK_EXT_debug_report = glad_vk_has_extension("VK_EXT_debug_report", extension_count, extensions);+ GLAD_VK_KHR_surface = glad_vk_has_extension("VK_KHR_surface", extension_count, extensions);+ GLAD_VK_KHR_swapchain = glad_vk_has_extension("VK_KHR_swapchain", extension_count, extensions);++ glad_vk_free_extensions(extension_count, extensions);++ return 1;+}++static int glad_vk_find_core_vulkan( VkPhysicalDevice physical_device) {+ int major = 1;+ int minor = 0;++#ifdef VK_VERSION_1_1+ if (vkEnumerateInstanceVersion != NULL) {+ uint32_t version;+ VkResult result;++ result = vkEnumerateInstanceVersion(&version);+ if (result == VK_SUCCESS) {+ major = (int) VK_VERSION_MAJOR(version);+ minor = (int) VK_VERSION_MINOR(version);+ }+ }+#endif++ if (physical_device != NULL && vkGetPhysicalDeviceProperties != NULL) {+ VkPhysicalDeviceProperties properties;+ vkGetPhysicalDeviceProperties(physical_device, &properties);++ major = (int) VK_VERSION_MAJOR(properties.apiVersion);+ minor = (int) VK_VERSION_MINOR(properties.apiVersion);+ }++ GLAD_VK_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1;+ GLAD_VK_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1;++ return GLAD_MAKE_VERSION(major, minor);+}++int gladLoadVulkanUserPtr( VkPhysicalDevice physical_device, GLADuserptrloadfunc load, void *userptr) {+ int version;++#ifdef VK_VERSION_1_1+ vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion) load("vkEnumerateInstanceVersion", userptr);+#endif+ version = glad_vk_find_core_vulkan( physical_device);+ if (!version) {+ return 0;+ }++ glad_vk_load_VK_VERSION_1_0(load, userptr);+ glad_vk_load_VK_VERSION_1_1(load, userptr);++ if (!glad_vk_find_extensions_vulkan( physical_device)) return 0;+ glad_vk_load_VK_EXT_debug_report(load, userptr);+ glad_vk_load_VK_KHR_surface(load, userptr);+ glad_vk_load_VK_KHR_swapchain(load, userptr);+++ return version;+}+++int gladLoadVulkan( VkPhysicalDevice physical_device, GLADloadfunc load) {+ return gladLoadVulkanUserPtr( physical_device, glad_vk_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load);+}++++
glfw/deps/mingw/_mingw_dxhelper.h view
@@ -1,117 +1,117 @@-/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the mingw-w64 runtime package. - * No warranty is given; refer to the file DISCLAIMER within this package. - */ - -#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS) -#define NONAMELESSUNION 1 -#endif -#if defined(NONAMELESSSTRUCT) && \ - !defined(NONAMELESSUNION) -#define NONAMELESSUNION 1 -#endif -#if defined(NONAMELESSUNION) && \ - !defined(NONAMELESSSTRUCT) -#define NONAMELESSSTRUCT 1 -#endif -#if !defined(__GNU_EXTENSION) -#if defined(__GNUC__) || defined(__GNUG__) -#define __GNU_EXTENSION __extension__ -#else -#define __GNU_EXTENSION -#endif -#endif /* __extension__ */ - -#ifndef __ANONYMOUS_DEFINED -#define __ANONYMOUS_DEFINED -#if defined(__GNUC__) || defined(__GNUG__) -#define _ANONYMOUS_UNION __extension__ -#define _ANONYMOUS_STRUCT __extension__ -#else -#define _ANONYMOUS_UNION -#define _ANONYMOUS_STRUCT -#endif -#ifndef NONAMELESSUNION -#define _UNION_NAME(x) -#define _STRUCT_NAME(x) -#else /* NONAMELESSUNION */ -#define _UNION_NAME(x) x -#define _STRUCT_NAME(x) x -#endif -#endif /* __ANONYMOUS_DEFINED */ - -#ifndef DUMMYUNIONNAME -# ifdef NONAMELESSUNION -# define DUMMYUNIONNAME u -# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */ -# define DUMMYUNIONNAME2 u2 -# define DUMMYUNIONNAME3 u3 -# define DUMMYUNIONNAME4 u4 -# define DUMMYUNIONNAME5 u5 -# define DUMMYUNIONNAME6 u6 -# define DUMMYUNIONNAME7 u7 -# define DUMMYUNIONNAME8 u8 -# define DUMMYUNIONNAME9 u9 -# else /* NONAMELESSUNION */ -# define DUMMYUNIONNAME -# define DUMMYUNIONNAME1 /* Wine uses this variant */ -# define DUMMYUNIONNAME2 -# define DUMMYUNIONNAME3 -# define DUMMYUNIONNAME4 -# define DUMMYUNIONNAME5 -# define DUMMYUNIONNAME6 -# define DUMMYUNIONNAME7 -# define DUMMYUNIONNAME8 -# define DUMMYUNIONNAME9 -# endif -#endif /* DUMMYUNIONNAME */ - -#if !defined(DUMMYUNIONNAME1) /* MinGW does not define this one */ -# ifdef NONAMELESSUNION -# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */ -# else -# define DUMMYUNIONNAME1 /* Wine uses this variant */ -# endif -#endif /* DUMMYUNIONNAME1 */ - -#ifndef DUMMYSTRUCTNAME -# ifdef NONAMELESSUNION -# define DUMMYSTRUCTNAME s -# define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */ -# define DUMMYSTRUCTNAME2 s2 -# define DUMMYSTRUCTNAME3 s3 -# define DUMMYSTRUCTNAME4 s4 -# define DUMMYSTRUCTNAME5 s5 -# else -# define DUMMYSTRUCTNAME -# define DUMMYSTRUCTNAME1 /* Wine uses this variant */ -# define DUMMYSTRUCTNAME2 -# define DUMMYSTRUCTNAME3 -# define DUMMYSTRUCTNAME4 -# define DUMMYSTRUCTNAME5 -# endif -#endif /* DUMMYSTRUCTNAME */ - -/* These are for compatibility with the Wine source tree */ - -#ifndef WINELIB_NAME_AW -# ifdef __MINGW_NAME_AW -# define WINELIB_NAME_AW __MINGW_NAME_AW -# else -# ifdef UNICODE -# define WINELIB_NAME_AW(func) func##W -# else -# define WINELIB_NAME_AW(func) func##A -# endif -# endif -#endif /* WINELIB_NAME_AW */ - -#ifndef DECL_WINELIB_TYPE_AW -# ifdef __MINGW_TYPEDEF_AW -# define DECL_WINELIB_TYPE_AW __MINGW_TYPEDEF_AW -# else -# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type; -# endif -#endif /* DECL_WINELIB_TYPE_AW */ - +/**+ * This file has no copyright assigned and is placed in the Public Domain.+ * This file is part of the mingw-w64 runtime package.+ * No warranty is given; refer to the file DISCLAIMER within this package.+ */++#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)+#define NONAMELESSUNION 1+#endif+#if defined(NONAMELESSSTRUCT) && \+ !defined(NONAMELESSUNION)+#define NONAMELESSUNION 1+#endif+#if defined(NONAMELESSUNION) && \+ !defined(NONAMELESSSTRUCT)+#define NONAMELESSSTRUCT 1+#endif+#if !defined(__GNU_EXTENSION)+#if defined(__GNUC__) || defined(__GNUG__)+#define __GNU_EXTENSION __extension__+#else+#define __GNU_EXTENSION+#endif+#endif /* __extension__ */++#ifndef __ANONYMOUS_DEFINED+#define __ANONYMOUS_DEFINED+#if defined(__GNUC__) || defined(__GNUG__)+#define _ANONYMOUS_UNION __extension__+#define _ANONYMOUS_STRUCT __extension__+#else+#define _ANONYMOUS_UNION+#define _ANONYMOUS_STRUCT+#endif+#ifndef NONAMELESSUNION+#define _UNION_NAME(x)+#define _STRUCT_NAME(x)+#else /* NONAMELESSUNION */+#define _UNION_NAME(x) x+#define _STRUCT_NAME(x) x+#endif+#endif /* __ANONYMOUS_DEFINED */++#ifndef DUMMYUNIONNAME+# ifdef NONAMELESSUNION+# define DUMMYUNIONNAME u+# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */+# define DUMMYUNIONNAME2 u2+# define DUMMYUNIONNAME3 u3+# define DUMMYUNIONNAME4 u4+# define DUMMYUNIONNAME5 u5+# define DUMMYUNIONNAME6 u6+# define DUMMYUNIONNAME7 u7+# define DUMMYUNIONNAME8 u8+# define DUMMYUNIONNAME9 u9+# else /* NONAMELESSUNION */+# define DUMMYUNIONNAME+# define DUMMYUNIONNAME1 /* Wine uses this variant */+# define DUMMYUNIONNAME2+# define DUMMYUNIONNAME3+# define DUMMYUNIONNAME4+# define DUMMYUNIONNAME5+# define DUMMYUNIONNAME6+# define DUMMYUNIONNAME7+# define DUMMYUNIONNAME8+# define DUMMYUNIONNAME9+# endif+#endif /* DUMMYUNIONNAME */++#if !defined(DUMMYUNIONNAME1) /* MinGW does not define this one */+# ifdef NONAMELESSUNION+# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */+# else+# define DUMMYUNIONNAME1 /* Wine uses this variant */+# endif+#endif /* DUMMYUNIONNAME1 */++#ifndef DUMMYSTRUCTNAME+# ifdef NONAMELESSUNION+# define DUMMYSTRUCTNAME s+# define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */+# define DUMMYSTRUCTNAME2 s2+# define DUMMYSTRUCTNAME3 s3+# define DUMMYSTRUCTNAME4 s4+# define DUMMYSTRUCTNAME5 s5+# else+# define DUMMYSTRUCTNAME+# define DUMMYSTRUCTNAME1 /* Wine uses this variant */+# define DUMMYSTRUCTNAME2+# define DUMMYSTRUCTNAME3+# define DUMMYSTRUCTNAME4+# define DUMMYSTRUCTNAME5+# endif+#endif /* DUMMYSTRUCTNAME */++/* These are for compatibility with the Wine source tree */++#ifndef WINELIB_NAME_AW+# ifdef __MINGW_NAME_AW+# define WINELIB_NAME_AW __MINGW_NAME_AW+# else+# ifdef UNICODE+# define WINELIB_NAME_AW(func) func##W+# else+# define WINELIB_NAME_AW(func) func##A+# endif+# endif+#endif /* WINELIB_NAME_AW */++#ifndef DECL_WINELIB_TYPE_AW+# ifdef __MINGW_TYPEDEF_AW+# define DECL_WINELIB_TYPE_AW __MINGW_TYPEDEF_AW+# else+# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type;+# endif+#endif /* DECL_WINELIB_TYPE_AW */+
glfw/deps/mingw/dinput.h view
@@ -1,2467 +1,2467 @@-/* - * Copyright (C) the Wine project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#ifndef __DINPUT_INCLUDED__ -#define __DINPUT_INCLUDED__ - -#define COM_NO_WINDOWS_H -#include <objbase.h> -#include <_mingw_dxhelper.h> - -#ifndef DIRECTINPUT_VERSION -#define DIRECTINPUT_VERSION 0x0800 -#endif - -/* Classes */ -DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(CLSID_DirectInputDevice8, 0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -/* Interfaces */ -DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); -DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); -DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDevice2A, 0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDevice2W, 0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(IID_IDirectInputDevice7A, 0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInputDevice7W, 0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); -DEFINE_GUID(IID_IDirectInputDevice8A, 0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); -DEFINE_GUID(IID_IDirectInputDevice8W, 0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); -DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); - -/* Predefined object types */ -DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_RxAxis,0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_RyAxis,0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_RzAxis,0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Slider,0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Button,0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Unknown,0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -/* Predefined product GUIDs */ -DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysKeyboard, 0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_Joystick, 0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysMouseEm2, 0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); -DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); - -/* predefined forcefeedback effects */ -DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); -DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); - -typedef struct IDirectInputA *LPDIRECTINPUTA; -typedef struct IDirectInputW *LPDIRECTINPUTW; -typedef struct IDirectInput2A *LPDIRECTINPUT2A; -typedef struct IDirectInput2W *LPDIRECTINPUT2W; -typedef struct IDirectInput7A *LPDIRECTINPUT7A; -typedef struct IDirectInput7W *LPDIRECTINPUT7W; -#if DIRECTINPUT_VERSION >= 0x0800 -typedef struct IDirectInput8A *LPDIRECTINPUT8A; -typedef struct IDirectInput8W *LPDIRECTINPUT8W; -#endif /* DI8 */ -typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA; -typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW; -#if DIRECTINPUT_VERSION >= 0x0500 -typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A; -typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W; -#endif /* DI5 */ -#if DIRECTINPUT_VERSION >= 0x0700 -typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A; -typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W; -#endif /* DI7 */ -#if DIRECTINPUT_VERSION >= 0x0800 -typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A; -typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W; -#endif /* DI8 */ -#if DIRECTINPUT_VERSION >= 0x0500 -typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT; -#endif /* DI5 */ -typedef struct SysKeyboardA *LPSYSKEYBOARDA; -typedef struct SysMouseA *LPSYSMOUSEA; - -#define IID_IDirectInput WINELIB_NAME_AW(IID_IDirectInput) -#define IDirectInput WINELIB_NAME_AW(IDirectInput) -DECL_WINELIB_TYPE_AW(LPDIRECTINPUT) -#define IID_IDirectInput2 WINELIB_NAME_AW(IID_IDirectInput2) -#define IDirectInput2 WINELIB_NAME_AW(IDirectInput2) -DECL_WINELIB_TYPE_AW(LPDIRECTINPUT2) -#define IID_IDirectInput7 WINELIB_NAME_AW(IID_IDirectInput7) -#define IDirectInput7 WINELIB_NAME_AW(IDirectInput7) -DECL_WINELIB_TYPE_AW(LPDIRECTINPUT7) -#if DIRECTINPUT_VERSION >= 0x0800 -#define IID_IDirectInput8 WINELIB_NAME_AW(IID_IDirectInput8) -#define IDirectInput8 WINELIB_NAME_AW(IDirectInput8) -DECL_WINELIB_TYPE_AW(LPDIRECTINPUT8) -#endif /* DI8 */ -#define IID_IDirectInputDevice WINELIB_NAME_AW(IID_IDirectInputDevice) -#define IDirectInputDevice WINELIB_NAME_AW(IDirectInputDevice) -DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE) -#if DIRECTINPUT_VERSION >= 0x0500 -#define IID_IDirectInputDevice2 WINELIB_NAME_AW(IID_IDirectInputDevice2) -#define IDirectInputDevice2 WINELIB_NAME_AW(IDirectInputDevice2) -DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE2) -#endif /* DI5 */ -#if DIRECTINPUT_VERSION >= 0x0700 -#define IID_IDirectInputDevice7 WINELIB_NAME_AW(IID_IDirectInputDevice7) -#define IDirectInputDevice7 WINELIB_NAME_AW(IDirectInputDevice7) -DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE7) -#endif /* DI7 */ -#if DIRECTINPUT_VERSION >= 0x0800 -#define IID_IDirectInputDevice8 WINELIB_NAME_AW(IID_IDirectInputDevice8) -#define IDirectInputDevice8 WINELIB_NAME_AW(IDirectInputDevice8) -DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE8) -#endif /* DI8 */ - -#define DI_OK S_OK -#define DI_NOTATTACHED S_FALSE -#define DI_BUFFEROVERFLOW S_FALSE -#define DI_PROPNOEFFECT S_FALSE -#define DI_NOEFFECT S_FALSE -#define DI_POLLEDDEVICE ((HRESULT)0x00000002L) -#define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003L) -#define DI_EFFECTRESTARTED ((HRESULT)0x00000004L) -#define DI_TRUNCATED ((HRESULT)0x00000008L) -#define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000BL) -#define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000CL) -#define DI_WRITEPROTECT ((HRESULT)0x00000013L) - -#define DIERR_OLDDIRECTINPUTVERSION \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION) -#define DIERR_BETADIRECTINPUTVERSION \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP) -#define DIERR_BADDRIVERVER \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL) -#define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG -#define DIERR_NOTFOUND \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) -#define DIERR_OBJECTNOTFOUND \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) -#define DIERR_INVALIDPARAM E_INVALIDARG -#define DIERR_NOINTERFACE E_NOINTERFACE -#define DIERR_GENERIC E_FAIL -#define DIERR_OUTOFMEMORY E_OUTOFMEMORY -#define DIERR_UNSUPPORTED E_NOTIMPL -#define DIERR_NOTINITIALIZED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY) -#define DIERR_ALREADYINITIALIZED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED) -#define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION -#define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED -#define DIERR_INPUTLOST \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT) -#define DIERR_ACQUIRED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY) -#define DIERR_NOTACQUIRED \ - MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS) -#define DIERR_READONLY E_ACCESSDENIED -#define DIERR_HANDLEEXISTS E_ACCESSDENIED -#ifndef E_PENDING -#define E_PENDING 0x8000000AL -#endif -#define DIERR_INSUFFICIENTPRIVS 0x80040200L -#define DIERR_DEVICEFULL 0x80040201L -#define DIERR_MOREDATA 0x80040202L -#define DIERR_NOTDOWNLOADED 0x80040203L -#define DIERR_HASEFFECTS 0x80040204L -#define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L -#define DIERR_INCOMPLETEEFFECT 0x80040206L -#define DIERR_NOTBUFFERED 0x80040207L -#define DIERR_EFFECTPLAYING 0x80040208L -#define DIERR_UNPLUGGED 0x80040209L -#define DIERR_REPORTFULL 0x8004020AL -#define DIERR_MAPFILEFAIL 0x8004020BL - -#define DIENUM_STOP 0 -#define DIENUM_CONTINUE 1 - -#define DIEDFL_ALLDEVICES 0x00000000 -#define DIEDFL_ATTACHEDONLY 0x00000001 -#define DIEDFL_FORCEFEEDBACK 0x00000100 -#define DIEDFL_INCLUDEALIASES 0x00010000 -#define DIEDFL_INCLUDEPHANTOMS 0x00020000 -#define DIEDFL_INCLUDEHIDDEN 0x00040000 - -#define DIDEVTYPE_DEVICE 1 -#define DIDEVTYPE_MOUSE 2 -#define DIDEVTYPE_KEYBOARD 3 -#define DIDEVTYPE_JOYSTICK 4 -#define DIDEVTYPE_HID 0x00010000 - -#define DI8DEVCLASS_ALL 0 -#define DI8DEVCLASS_DEVICE 1 -#define DI8DEVCLASS_POINTER 2 -#define DI8DEVCLASS_KEYBOARD 3 -#define DI8DEVCLASS_GAMECTRL 4 - -#define DI8DEVTYPE_DEVICE 0x11 -#define DI8DEVTYPE_MOUSE 0x12 -#define DI8DEVTYPE_KEYBOARD 0x13 -#define DI8DEVTYPE_JOYSTICK 0x14 -#define DI8DEVTYPE_GAMEPAD 0x15 -#define DI8DEVTYPE_DRIVING 0x16 -#define DI8DEVTYPE_FLIGHT 0x17 -#define DI8DEVTYPE_1STPERSON 0x18 -#define DI8DEVTYPE_DEVICECTRL 0x19 -#define DI8DEVTYPE_SCREENPOINTER 0x1A -#define DI8DEVTYPE_REMOTE 0x1B -#define DI8DEVTYPE_SUPPLEMENTAL 0x1C - -#define DIDEVTYPEMOUSE_UNKNOWN 1 -#define DIDEVTYPEMOUSE_TRADITIONAL 2 -#define DIDEVTYPEMOUSE_FINGERSTICK 3 -#define DIDEVTYPEMOUSE_TOUCHPAD 4 -#define DIDEVTYPEMOUSE_TRACKBALL 5 - -#define DIDEVTYPEKEYBOARD_UNKNOWN 0 -#define DIDEVTYPEKEYBOARD_PCXT 1 -#define DIDEVTYPEKEYBOARD_OLIVETTI 2 -#define DIDEVTYPEKEYBOARD_PCAT 3 -#define DIDEVTYPEKEYBOARD_PCENH 4 -#define DIDEVTYPEKEYBOARD_NOKIA1050 5 -#define DIDEVTYPEKEYBOARD_NOKIA9140 6 -#define DIDEVTYPEKEYBOARD_NEC98 7 -#define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8 -#define DIDEVTYPEKEYBOARD_NEC98106 9 -#define DIDEVTYPEKEYBOARD_JAPAN106 10 -#define DIDEVTYPEKEYBOARD_JAPANAX 11 -#define DIDEVTYPEKEYBOARD_J3100 12 - -#define DIDEVTYPEJOYSTICK_UNKNOWN 1 -#define DIDEVTYPEJOYSTICK_TRADITIONAL 2 -#define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3 -#define DIDEVTYPEJOYSTICK_GAMEPAD 4 -#define DIDEVTYPEJOYSTICK_RUDDER 5 -#define DIDEVTYPEJOYSTICK_WHEEL 6 -#define DIDEVTYPEJOYSTICK_HEADTRACKER 7 - -#define DI8DEVTYPEMOUSE_UNKNOWN 1 -#define DI8DEVTYPEMOUSE_TRADITIONAL 2 -#define DI8DEVTYPEMOUSE_FINGERSTICK 3 -#define DI8DEVTYPEMOUSE_TOUCHPAD 4 -#define DI8DEVTYPEMOUSE_TRACKBALL 5 -#define DI8DEVTYPEMOUSE_ABSOLUTE 6 - -#define DI8DEVTYPEKEYBOARD_UNKNOWN 0 -#define DI8DEVTYPEKEYBOARD_PCXT 1 -#define DI8DEVTYPEKEYBOARD_OLIVETTI 2 -#define DI8DEVTYPEKEYBOARD_PCAT 3 -#define DI8DEVTYPEKEYBOARD_PCENH 4 -#define DI8DEVTYPEKEYBOARD_NOKIA1050 5 -#define DI8DEVTYPEKEYBOARD_NOKIA9140 6 -#define DI8DEVTYPEKEYBOARD_NEC98 7 -#define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8 -#define DI8DEVTYPEKEYBOARD_NEC98106 9 -#define DI8DEVTYPEKEYBOARD_JAPAN106 10 -#define DI8DEVTYPEKEYBOARD_JAPANAX 11 -#define DI8DEVTYPEKEYBOARD_J3100 12 - -#define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1 - -#define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEJOYSTICK_STANDARD 2 - -#define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEGAMEPAD_STANDARD 2 -#define DI8DEVTYPEGAMEPAD_TILT 3 - -#define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2 -#define DI8DEVTYPEDRIVING_DUALPEDALS 3 -#define DI8DEVTYPEDRIVING_THREEPEDALS 4 -#define DI8DEVTYPEDRIVING_HANDHELD 5 - -#define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPEFLIGHT_STICK 2 -#define DI8DEVTYPEFLIGHT_YOKE 3 -#define DI8DEVTYPEFLIGHT_RC 4 - -#define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE -#define DI8DEVTYPE1STPERSON_UNKNOWN 2 -#define DI8DEVTYPE1STPERSON_SIXDOF 3 -#define DI8DEVTYPE1STPERSON_SHOOTER 4 - -#define DI8DEVTYPESCREENPTR_UNKNOWN 2 -#define DI8DEVTYPESCREENPTR_LIGHTGUN 3 -#define DI8DEVTYPESCREENPTR_LIGHTPEN 4 -#define DI8DEVTYPESCREENPTR_TOUCH 5 - -#define DI8DEVTYPEREMOTE_UNKNOWN 2 - -#define DI8DEVTYPEDEVICECTRL_UNKNOWN 2 -#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3 -#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4 - -#define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2 -#define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3 -#define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4 -#define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5 -#define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6 -#define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7 -#define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8 -#define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9 -#define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10 -#define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11 -#define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12 -#define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13 - -#define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType) -#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType) - -typedef struct DIDEVICEOBJECTINSTANCE_DX3A { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - CHAR tszName[MAX_PATH]; -} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A; -typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A; -typedef struct DIDEVICEOBJECTINSTANCE_DX3W { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - WCHAR tszName[MAX_PATH]; -} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W; -typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W; - -DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE_DX3) -DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE_DX3) -DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE_DX3) - -typedef struct DIDEVICEOBJECTINSTANCEA { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - CHAR tszName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - DWORD dwFFMaxForce; - DWORD dwFFForceResolution; - WORD wCollectionNumber; - WORD wDesignatorIndex; - WORD wUsagePage; - WORD wUsage; - DWORD dwDimension; - WORD wExponent; - WORD wReserved; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA; -typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA; - -typedef struct DIDEVICEOBJECTINSTANCEW { - DWORD dwSize; - GUID guidType; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; - WCHAR tszName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - DWORD dwFFMaxForce; - DWORD dwFFForceResolution; - WORD wCollectionNumber; - WORD wDesignatorIndex; - WORD wUsagePage; - WORD wUsage; - DWORD dwDimension; - WORD wExponent; - WORD wReserved; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW; -typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW; - -DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE) -DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE) -DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE) - -typedef struct DIDEVICEINSTANCE_DX3A { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - CHAR tszInstanceName[MAX_PATH]; - CHAR tszProductName[MAX_PATH]; -} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A; -typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A; -typedef struct DIDEVICEINSTANCE_DX3W { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - WCHAR tszInstanceName[MAX_PATH]; - WCHAR tszProductName[MAX_PATH]; -} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W; -typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W; - -DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE_DX3) -DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE_DX3) -DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE_DX3) - -typedef struct DIDEVICEINSTANCEA { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - CHAR tszInstanceName[MAX_PATH]; - CHAR tszProductName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - GUID guidFFDriver; - WORD wUsagePage; - WORD wUsage; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA; -typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA; - -typedef struct DIDEVICEINSTANCEW { - DWORD dwSize; - GUID guidInstance; - GUID guidProduct; - DWORD dwDevType; - WCHAR tszInstanceName[MAX_PATH]; - WCHAR tszProductName[MAX_PATH]; -#if(DIRECTINPUT_VERSION >= 0x0500) - GUID guidFFDriver; - WORD wUsagePage; - WORD wUsage; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW; -typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW; - -DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE) -DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE) -DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE) - -typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA,LPVOID); -typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW,LPVOID); -DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESCALLBACK) - -#define DIEDBS_MAPPEDPRI1 0x00000001 -#define DIEDBS_MAPPEDPRI2 0x00000002 -#define DIEDBS_RECENTDEVICE 0x00000010 -#define DIEDBS_NEWDEVICE 0x00000020 - -#define DIEDBSFL_ATTACHEDONLY 0x00000000 -#define DIEDBSFL_THISUSER 0x00000010 -#define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK -#define DIEDBSFL_AVAILABLEDEVICES 0x00001000 -#define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000 -#define DIEDBSFL_NONGAMINGDEVICES 0x00004000 -#define DIEDBSFL_VALID 0x00007110 - -#if DIRECTINPUT_VERSION >= 0x0800 -typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA,LPDIRECTINPUTDEVICE8A,DWORD,DWORD,LPVOID); -typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW,LPDIRECTINPUTDEVICE8W,DWORD,DWORD,LPVOID); -DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESBYSEMANTICSCB) -#endif - -typedef BOOL (CALLBACK *LPDICONFIGUREDEVICESCALLBACK)(LPUNKNOWN,LPVOID); - -typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA,LPVOID); -typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW,LPVOID); -DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK) - -#if DIRECTINPUT_VERSION >= 0x0500 -typedef BOOL (CALLBACK *LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID); -#endif - -#define DIK_ESCAPE 0x01 -#define DIK_1 0x02 -#define DIK_2 0x03 -#define DIK_3 0x04 -#define DIK_4 0x05 -#define DIK_5 0x06 -#define DIK_6 0x07 -#define DIK_7 0x08 -#define DIK_8 0x09 -#define DIK_9 0x0A -#define DIK_0 0x0B -#define DIK_MINUS 0x0C /* - on main keyboard */ -#define DIK_EQUALS 0x0D -#define DIK_BACK 0x0E /* backspace */ -#define DIK_TAB 0x0F -#define DIK_Q 0x10 -#define DIK_W 0x11 -#define DIK_E 0x12 -#define DIK_R 0x13 -#define DIK_T 0x14 -#define DIK_Y 0x15 -#define DIK_U 0x16 -#define DIK_I 0x17 -#define DIK_O 0x18 -#define DIK_P 0x19 -#define DIK_LBRACKET 0x1A -#define DIK_RBRACKET 0x1B -#define DIK_RETURN 0x1C /* Enter on main keyboard */ -#define DIK_LCONTROL 0x1D -#define DIK_A 0x1E -#define DIK_S 0x1F -#define DIK_D 0x20 -#define DIK_F 0x21 -#define DIK_G 0x22 -#define DIK_H 0x23 -#define DIK_J 0x24 -#define DIK_K 0x25 -#define DIK_L 0x26 -#define DIK_SEMICOLON 0x27 -#define DIK_APOSTROPHE 0x28 -#define DIK_GRAVE 0x29 /* accent grave */ -#define DIK_LSHIFT 0x2A -#define DIK_BACKSLASH 0x2B -#define DIK_Z 0x2C -#define DIK_X 0x2D -#define DIK_C 0x2E -#define DIK_V 0x2F -#define DIK_B 0x30 -#define DIK_N 0x31 -#define DIK_M 0x32 -#define DIK_COMMA 0x33 -#define DIK_PERIOD 0x34 /* . on main keyboard */ -#define DIK_SLASH 0x35 /* / on main keyboard */ -#define DIK_RSHIFT 0x36 -#define DIK_MULTIPLY 0x37 /* * on numeric keypad */ -#define DIK_LMENU 0x38 /* left Alt */ -#define DIK_SPACE 0x39 -#define DIK_CAPITAL 0x3A -#define DIK_F1 0x3B -#define DIK_F2 0x3C -#define DIK_F3 0x3D -#define DIK_F4 0x3E -#define DIK_F5 0x3F -#define DIK_F6 0x40 -#define DIK_F7 0x41 -#define DIK_F8 0x42 -#define DIK_F9 0x43 -#define DIK_F10 0x44 -#define DIK_NUMLOCK 0x45 -#define DIK_SCROLL 0x46 /* Scroll Lock */ -#define DIK_NUMPAD7 0x47 -#define DIK_NUMPAD8 0x48 -#define DIK_NUMPAD9 0x49 -#define DIK_SUBTRACT 0x4A /* - on numeric keypad */ -#define DIK_NUMPAD4 0x4B -#define DIK_NUMPAD5 0x4C -#define DIK_NUMPAD6 0x4D -#define DIK_ADD 0x4E /* + on numeric keypad */ -#define DIK_NUMPAD1 0x4F -#define DIK_NUMPAD2 0x50 -#define DIK_NUMPAD3 0x51 -#define DIK_NUMPAD0 0x52 -#define DIK_DECIMAL 0x53 /* . on numeric keypad */ -#define DIK_OEM_102 0x56 /* < > | on UK/Germany keyboards */ -#define DIK_F11 0x57 -#define DIK_F12 0x58 -#define DIK_F13 0x64 /* (NEC PC98) */ -#define DIK_F14 0x65 /* (NEC PC98) */ -#define DIK_F15 0x66 /* (NEC PC98) */ -#define DIK_KANA 0x70 /* (Japanese keyboard) */ -#define DIK_ABNT_C1 0x73 /* / ? on Portugese (Brazilian) keyboards */ -#define DIK_CONVERT 0x79 /* (Japanese keyboard) */ -#define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */ -#define DIK_YEN 0x7D /* (Japanese keyboard) */ -#define DIK_ABNT_C2 0x7E /* Numpad . on Portugese (Brazilian) keyboards */ -#define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */ -#define DIK_CIRCUMFLEX 0x90 /* (Japanese keyboard) */ -#define DIK_AT 0x91 /* (NEC PC98) */ -#define DIK_COLON 0x92 /* (NEC PC98) */ -#define DIK_UNDERLINE 0x93 /* (NEC PC98) */ -#define DIK_KANJI 0x94 /* (Japanese keyboard) */ -#define DIK_STOP 0x95 /* (NEC PC98) */ -#define DIK_AX 0x96 /* (Japan AX) */ -#define DIK_UNLABELED 0x97 /* (J3100) */ -#define DIK_NEXTTRACK 0x99 /* Next Track */ -#define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */ -#define DIK_RCONTROL 0x9D -#define DIK_MUTE 0xA0 /* Mute */ -#define DIK_CALCULATOR 0xA1 /* Calculator */ -#define DIK_PLAYPAUSE 0xA2 /* Play / Pause */ -#define DIK_MEDIASTOP 0xA4 /* Media Stop */ -#define DIK_VOLUMEDOWN 0xAE /* Volume - */ -#define DIK_VOLUMEUP 0xB0 /* Volume + */ -#define DIK_WEBHOME 0xB2 /* Web home */ -#define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */ -#define DIK_DIVIDE 0xB5 /* / on numeric keypad */ -#define DIK_SYSRQ 0xB7 -#define DIK_RMENU 0xB8 /* right Alt */ -#define DIK_PAUSE 0xC5 /* Pause */ -#define DIK_HOME 0xC7 /* Home on arrow keypad */ -#define DIK_UP 0xC8 /* UpArrow on arrow keypad */ -#define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */ -#define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */ -#define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */ -#define DIK_END 0xCF /* End on arrow keypad */ -#define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */ -#define DIK_NEXT 0xD1 /* PgDn on arrow keypad */ -#define DIK_INSERT 0xD2 /* Insert on arrow keypad */ -#define DIK_DELETE 0xD3 /* Delete on arrow keypad */ -#define DIK_LWIN 0xDB /* Left Windows key */ -#define DIK_RWIN 0xDC /* Right Windows key */ -#define DIK_APPS 0xDD /* AppMenu key */ -#define DIK_POWER 0xDE -#define DIK_SLEEP 0xDF -#define DIK_WAKE 0xE3 /* System Wake */ -#define DIK_WEBSEARCH 0xE5 /* Web Search */ -#define DIK_WEBFAVORITES 0xE6 /* Web Favorites */ -#define DIK_WEBREFRESH 0xE7 /* Web Refresh */ -#define DIK_WEBSTOP 0xE8 /* Web Stop */ -#define DIK_WEBFORWARD 0xE9 /* Web Forward */ -#define DIK_WEBBACK 0xEA /* Web Back */ -#define DIK_MYCOMPUTER 0xEB /* My Computer */ -#define DIK_MAIL 0xEC /* Mail */ -#define DIK_MEDIASELECT 0xED /* Media Select */ - -#define DIK_BACKSPACE DIK_BACK /* backspace */ -#define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */ -#define DIK_LALT DIK_LMENU /* left Alt */ -#define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */ -#define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */ -#define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */ -#define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */ -#define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */ -#define DIK_RALT DIK_RMENU /* right Alt */ -#define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */ -#define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */ -#define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */ -#define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */ -#define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */ -#define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */ - -#define DIDFT_ALL 0x00000000 -#define DIDFT_RELAXIS 0x00000001 -#define DIDFT_ABSAXIS 0x00000002 -#define DIDFT_AXIS 0x00000003 -#define DIDFT_PSHBUTTON 0x00000004 -#define DIDFT_TGLBUTTON 0x00000008 -#define DIDFT_BUTTON 0x0000000C -#define DIDFT_POV 0x00000010 -#define DIDFT_COLLECTION 0x00000040 -#define DIDFT_NODATA 0x00000080 -#define DIDFT_ANYINSTANCE 0x00FFFF00 -#define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE -#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8) -#define DIDFT_GETTYPE(n) LOBYTE(n) -#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8) -#define DIDFT_FFACTUATOR 0x01000000 -#define DIDFT_FFEFFECTTRIGGER 0x02000000 -#if DIRECTINPUT_VERSION >= 0x050a -#define DIDFT_OUTPUT 0x10000000 -#define DIDFT_VENDORDEFINED 0x04000000 -#define DIDFT_ALIAS 0x08000000 -#endif /* DI5a */ -#ifndef DIDFT_OPTIONAL -#define DIDFT_OPTIONAL 0x80000000 -#endif -#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8) -#define DIDFT_NOCOLLECTION 0x00FFFF00 - -#define DIDF_ABSAXIS 0x00000001 -#define DIDF_RELAXIS 0x00000002 - -#define DIGDD_PEEK 0x00000001 - -#define DISEQUENCE_COMPARE(dwSq1,cmp,dwSq2) ((int)((dwSq1) - (dwSq2)) cmp 0) - -typedef struct DIDEVICEOBJECTDATA_DX3 { - DWORD dwOfs; - DWORD dwData; - DWORD dwTimeStamp; - DWORD dwSequence; -} DIDEVICEOBJECTDATA_DX3,*LPDIDEVICEOBJECTDATA_DX3; -typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX3; - -typedef struct DIDEVICEOBJECTDATA { - DWORD dwOfs; - DWORD dwData; - DWORD dwTimeStamp; - DWORD dwSequence; -#if(DIRECTINPUT_VERSION >= 0x0800) - UINT_PTR uAppData; -#endif /* DIRECTINPUT_VERSION >= 0x0800 */ -} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; -typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA; - -typedef struct _DIOBJECTDATAFORMAT { - const GUID *pguid; - DWORD dwOfs; - DWORD dwType; - DWORD dwFlags; -} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT; -typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT; - -typedef struct _DIDATAFORMAT { - DWORD dwSize; - DWORD dwObjSize; - DWORD dwFlags; - DWORD dwDataSize; - DWORD dwNumObjs; - LPDIOBJECTDATAFORMAT rgodf; -} DIDATAFORMAT, *LPDIDATAFORMAT; -typedef const DIDATAFORMAT *LPCDIDATAFORMAT; - -#if DIRECTINPUT_VERSION >= 0x0500 -#define DIDOI_FFACTUATOR 0x00000001 -#define DIDOI_FFEFFECTTRIGGER 0x00000002 -#define DIDOI_POLLED 0x00008000 -#define DIDOI_ASPECTPOSITION 0x00000100 -#define DIDOI_ASPECTVELOCITY 0x00000200 -#define DIDOI_ASPECTACCEL 0x00000300 -#define DIDOI_ASPECTFORCE 0x00000400 -#define DIDOI_ASPECTMASK 0x00000F00 -#endif /* DI5 */ -#if DIRECTINPUT_VERSION >= 0x050a -#define DIDOI_GUIDISUSAGE 0x00010000 -#endif /* DI5a */ - -typedef struct DIPROPHEADER { - DWORD dwSize; - DWORD dwHeaderSize; - DWORD dwObj; - DWORD dwHow; -} DIPROPHEADER,*LPDIPROPHEADER; -typedef const DIPROPHEADER *LPCDIPROPHEADER; - -#define DIPH_DEVICE 0 -#define DIPH_BYOFFSET 1 -#define DIPH_BYID 2 -#if DIRECTINPUT_VERSION >= 0x050a -#define DIPH_BYUSAGE 3 - -#define DIMAKEUSAGEDWORD(UsagePage, Usage) (DWORD)MAKELONG(Usage, UsagePage) -#endif /* DI5a */ - -typedef struct DIPROPDWORD { - DIPROPHEADER diph; - DWORD dwData; -} DIPROPDWORD, *LPDIPROPDWORD; -typedef const DIPROPDWORD *LPCDIPROPDWORD; - -typedef struct DIPROPRANGE { - DIPROPHEADER diph; - LONG lMin; - LONG lMax; -} DIPROPRANGE, *LPDIPROPRANGE; -typedef const DIPROPRANGE *LPCDIPROPRANGE; - -#define DIPROPRANGE_NOMIN ((LONG)0x80000000) -#define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF) - -#if DIRECTINPUT_VERSION >= 0x050a -typedef struct DIPROPCAL { - DIPROPHEADER diph; - LONG lMin; - LONG lCenter; - LONG lMax; -} DIPROPCAL, *LPDIPROPCAL; -typedef const DIPROPCAL *LPCDIPROPCAL; - -typedef struct DIPROPCALPOV { - DIPROPHEADER diph; - LONG lMin[5]; - LONG lMax[5]; -} DIPROPCALPOV, *LPDIPROPCALPOV; -typedef const DIPROPCALPOV *LPCDIPROPCALPOV; - -typedef struct DIPROPGUIDANDPATH { - DIPROPHEADER diph; - GUID guidClass; - WCHAR wszPath[MAX_PATH]; -} DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH; -typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH; - -typedef struct DIPROPSTRING { - DIPROPHEADER diph; - WCHAR wsz[MAX_PATH]; -} DIPROPSTRING, *LPDIPROPSTRING; -typedef const DIPROPSTRING *LPCDIPROPSTRING; -#endif /* DI5a */ - -#if DIRECTINPUT_VERSION >= 0x0800 -typedef struct DIPROPPOINTER { - DIPROPHEADER diph; - UINT_PTR uData; -} DIPROPPOINTER, *LPDIPROPPOINTER; -typedef const DIPROPPOINTER *LPCDIPROPPOINTER; -#endif /* DI8 */ - -/* special property GUIDs */ -#ifdef __cplusplus -#define MAKEDIPROP(prop) (*(const GUID *)(prop)) -#else -#define MAKEDIPROP(prop) ((REFGUID)(prop)) -#endif -#define DIPROP_BUFFERSIZE MAKEDIPROP(1) -#define DIPROP_AXISMODE MAKEDIPROP(2) - -#define DIPROPAXISMODE_ABS 0 -#define DIPROPAXISMODE_REL 1 - -#define DIPROP_GRANULARITY MAKEDIPROP(3) -#define DIPROP_RANGE MAKEDIPROP(4) -#define DIPROP_DEADZONE MAKEDIPROP(5) -#define DIPROP_SATURATION MAKEDIPROP(6) -#define DIPROP_FFGAIN MAKEDIPROP(7) -#define DIPROP_FFLOAD MAKEDIPROP(8) -#define DIPROP_AUTOCENTER MAKEDIPROP(9) - -#define DIPROPAUTOCENTER_OFF 0 -#define DIPROPAUTOCENTER_ON 1 - -#define DIPROP_CALIBRATIONMODE MAKEDIPROP(10) - -#define DIPROPCALIBRATIONMODE_COOKED 0 -#define DIPROPCALIBRATIONMODE_RAW 1 - -#if DIRECTINPUT_VERSION >= 0x050a -#define DIPROP_CALIBRATION MAKEDIPROP(11) -#define DIPROP_GUIDANDPATH MAKEDIPROP(12) -#define DIPROP_INSTANCENAME MAKEDIPROP(13) -#define DIPROP_PRODUCTNAME MAKEDIPROP(14) -#endif - -#if DIRECTINPUT_VERSION >= 0x5B2 -#define DIPROP_JOYSTICKID MAKEDIPROP(15) -#define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP(16) -#endif - -#if DIRECTINPUT_VERSION >= 0x0700 -#define DIPROP_PHYSICALRANGE MAKEDIPROP(18) -#define DIPROP_LOGICALRANGE MAKEDIPROP(19) -#endif - -#if(DIRECTINPUT_VERSION >= 0x0800) -#define DIPROP_KEYNAME MAKEDIPROP(20) -#define DIPROP_CPOINTS MAKEDIPROP(21) -#define DIPROP_APPDATA MAKEDIPROP(22) -#define DIPROP_SCANCODE MAKEDIPROP(23) -#define DIPROP_VIDPID MAKEDIPROP(24) -#define DIPROP_USERNAME MAKEDIPROP(25) -#define DIPROP_TYPENAME MAKEDIPROP(26) - -#define MAXCPOINTSNUM 8 - -typedef struct _CPOINT { - LONG lP; - DWORD dwLog; -} CPOINT, *PCPOINT; - -typedef struct DIPROPCPOINTS { - DIPROPHEADER diph; - DWORD dwCPointsNum; - CPOINT cp[MAXCPOINTSNUM]; -} DIPROPCPOINTS, *LPDIPROPCPOINTS; -typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS; -#endif /* DI8 */ - - -typedef struct DIDEVCAPS_DX3 { - DWORD dwSize; - DWORD dwFlags; - DWORD dwDevType; - DWORD dwAxes; - DWORD dwButtons; - DWORD dwPOVs; -} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3; - -typedef struct DIDEVCAPS { - DWORD dwSize; - DWORD dwFlags; - DWORD dwDevType; - DWORD dwAxes; - DWORD dwButtons; - DWORD dwPOVs; -#if(DIRECTINPUT_VERSION >= 0x0500) - DWORD dwFFSamplePeriod; - DWORD dwFFMinTimeResolution; - DWORD dwFirmwareRevision; - DWORD dwHardwareRevision; - DWORD dwFFDriverVersion; -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ -} DIDEVCAPS,*LPDIDEVCAPS; - -#define DIDC_ATTACHED 0x00000001 -#define DIDC_POLLEDDEVICE 0x00000002 -#define DIDC_EMULATED 0x00000004 -#define DIDC_POLLEDDATAFORMAT 0x00000008 -#define DIDC_FORCEFEEDBACK 0x00000100 -#define DIDC_FFATTACK 0x00000200 -#define DIDC_FFFADE 0x00000400 -#define DIDC_SATURATION 0x00000800 -#define DIDC_POSNEGCOEFFICIENTS 0x00001000 -#define DIDC_POSNEGSATURATION 0x00002000 -#define DIDC_DEADBAND 0x00004000 -#define DIDC_STARTDELAY 0x00008000 -#define DIDC_ALIAS 0x00010000 -#define DIDC_PHANTOM 0x00020000 -#define DIDC_HIDDEN 0x00040000 - - -/* SetCooperativeLevel dwFlags */ -#define DISCL_EXCLUSIVE 0x00000001 -#define DISCL_NONEXCLUSIVE 0x00000002 -#define DISCL_FOREGROUND 0x00000004 -#define DISCL_BACKGROUND 0x00000008 -#define DISCL_NOWINKEY 0x00000010 - -#if (DIRECTINPUT_VERSION >= 0x0500) -/* Device FF flags */ -#define DISFFC_RESET 0x00000001 -#define DISFFC_STOPALL 0x00000002 -#define DISFFC_PAUSE 0x00000004 -#define DISFFC_CONTINUE 0x00000008 -#define DISFFC_SETACTUATORSON 0x00000010 -#define DISFFC_SETACTUATORSOFF 0x00000020 - -#define DIGFFS_EMPTY 0x00000001 -#define DIGFFS_STOPPED 0x00000002 -#define DIGFFS_PAUSED 0x00000004 -#define DIGFFS_ACTUATORSON 0x00000010 -#define DIGFFS_ACTUATORSOFF 0x00000020 -#define DIGFFS_POWERON 0x00000040 -#define DIGFFS_POWEROFF 0x00000080 -#define DIGFFS_SAFETYSWITCHON 0x00000100 -#define DIGFFS_SAFETYSWITCHOFF 0x00000200 -#define DIGFFS_USERFFSWITCHON 0x00000400 -#define DIGFFS_USERFFSWITCHOFF 0x00000800 -#define DIGFFS_DEVICELOST 0x80000000 - -/* Effect flags */ -#define DIEFT_ALL 0x00000000 - -#define DIEFT_CONSTANTFORCE 0x00000001 -#define DIEFT_RAMPFORCE 0x00000002 -#define DIEFT_PERIODIC 0x00000003 -#define DIEFT_CONDITION 0x00000004 -#define DIEFT_CUSTOMFORCE 0x00000005 -#define DIEFT_HARDWARE 0x000000FF -#define DIEFT_FFATTACK 0x00000200 -#define DIEFT_FFFADE 0x00000400 -#define DIEFT_SATURATION 0x00000800 -#define DIEFT_POSNEGCOEFFICIENTS 0x00001000 -#define DIEFT_POSNEGSATURATION 0x00002000 -#define DIEFT_DEADBAND 0x00004000 -#define DIEFT_STARTDELAY 0x00008000 -#define DIEFT_GETTYPE(n) LOBYTE(n) - -#define DIEFF_OBJECTIDS 0x00000001 -#define DIEFF_OBJECTOFFSETS 0x00000002 -#define DIEFF_CARTESIAN 0x00000010 -#define DIEFF_POLAR 0x00000020 -#define DIEFF_SPHERICAL 0x00000040 - -#define DIEP_DURATION 0x00000001 -#define DIEP_SAMPLEPERIOD 0x00000002 -#define DIEP_GAIN 0x00000004 -#define DIEP_TRIGGERBUTTON 0x00000008 -#define DIEP_TRIGGERREPEATINTERVAL 0x00000010 -#define DIEP_AXES 0x00000020 -#define DIEP_DIRECTION 0x00000040 -#define DIEP_ENVELOPE 0x00000080 -#define DIEP_TYPESPECIFICPARAMS 0x00000100 -#if(DIRECTINPUT_VERSION >= 0x0600) -#define DIEP_STARTDELAY 0x00000200 -#define DIEP_ALLPARAMS_DX5 0x000001FF -#define DIEP_ALLPARAMS 0x000003FF -#else -#define DIEP_ALLPARAMS 0x000001FF -#endif /* DIRECTINPUT_VERSION >= 0x0600 */ -#define DIEP_START 0x20000000 -#define DIEP_NORESTART 0x40000000 -#define DIEP_NODOWNLOAD 0x80000000 -#define DIEB_NOTRIGGER 0xFFFFFFFF - -#define DIES_SOLO 0x00000001 -#define DIES_NODOWNLOAD 0x80000000 - -#define DIEGES_PLAYING 0x00000001 -#define DIEGES_EMULATED 0x00000002 - -#define DI_DEGREES 100 -#define DI_FFNOMINALMAX 10000 -#define DI_SECONDS 1000000 - -typedef struct DICONSTANTFORCE { - LONG lMagnitude; -} DICONSTANTFORCE, *LPDICONSTANTFORCE; -typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE; - -typedef struct DIRAMPFORCE { - LONG lStart; - LONG lEnd; -} DIRAMPFORCE, *LPDIRAMPFORCE; -typedef const DIRAMPFORCE *LPCDIRAMPFORCE; - -typedef struct DIPERIODIC { - DWORD dwMagnitude; - LONG lOffset; - DWORD dwPhase; - DWORD dwPeriod; -} DIPERIODIC, *LPDIPERIODIC; -typedef const DIPERIODIC *LPCDIPERIODIC; - -typedef struct DICONDITION { - LONG lOffset; - LONG lPositiveCoefficient; - LONG lNegativeCoefficient; - DWORD dwPositiveSaturation; - DWORD dwNegativeSaturation; - LONG lDeadBand; -} DICONDITION, *LPDICONDITION; -typedef const DICONDITION *LPCDICONDITION; - -typedef struct DICUSTOMFORCE { - DWORD cChannels; - DWORD dwSamplePeriod; - DWORD cSamples; - LPLONG rglForceData; -} DICUSTOMFORCE, *LPDICUSTOMFORCE; -typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE; - -typedef struct DIENVELOPE { - DWORD dwSize; - DWORD dwAttackLevel; - DWORD dwAttackTime; - DWORD dwFadeLevel; - DWORD dwFadeTime; -} DIENVELOPE, *LPDIENVELOPE; -typedef const DIENVELOPE *LPCDIENVELOPE; - -typedef struct DIEFFECT_DX5 { - DWORD dwSize; - DWORD dwFlags; - DWORD dwDuration; - DWORD dwSamplePeriod; - DWORD dwGain; - DWORD dwTriggerButton; - DWORD dwTriggerRepeatInterval; - DWORD cAxes; - LPDWORD rgdwAxes; - LPLONG rglDirection; - LPDIENVELOPE lpEnvelope; - DWORD cbTypeSpecificParams; - LPVOID lpvTypeSpecificParams; -} DIEFFECT_DX5, *LPDIEFFECT_DX5; -typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5; - -typedef struct DIEFFECT { - DWORD dwSize; - DWORD dwFlags; - DWORD dwDuration; - DWORD dwSamplePeriod; - DWORD dwGain; - DWORD dwTriggerButton; - DWORD dwTriggerRepeatInterval; - DWORD cAxes; - LPDWORD rgdwAxes; - LPLONG rglDirection; - LPDIENVELOPE lpEnvelope; - DWORD cbTypeSpecificParams; - LPVOID lpvTypeSpecificParams; -#if(DIRECTINPUT_VERSION >= 0x0600) - DWORD dwStartDelay; -#endif /* DIRECTINPUT_VERSION >= 0x0600 */ -} DIEFFECT, *LPDIEFFECT; -typedef const DIEFFECT *LPCDIEFFECT; -typedef DIEFFECT DIEFFECT_DX6; -typedef LPDIEFFECT LPDIEFFECT_DX6; - -typedef struct DIEFFECTINFOA { - DWORD dwSize; - GUID guid; - DWORD dwEffType; - DWORD dwStaticParams; - DWORD dwDynamicParams; - CHAR tszName[MAX_PATH]; -} DIEFFECTINFOA, *LPDIEFFECTINFOA; -typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA; - -typedef struct DIEFFECTINFOW { - DWORD dwSize; - GUID guid; - DWORD dwEffType; - DWORD dwStaticParams; - DWORD dwDynamicParams; - WCHAR tszName[MAX_PATH]; -} DIEFFECTINFOW, *LPDIEFFECTINFOW; -typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW; - -DECL_WINELIB_TYPE_AW(DIEFFECTINFO) -DECL_WINELIB_TYPE_AW(LPDIEFFECTINFO) -DECL_WINELIB_TYPE_AW(LPCDIEFFECTINFO) - -typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID); -typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID); - -typedef struct DIEFFESCAPE { - DWORD dwSize; - DWORD dwCommand; - LPVOID lpvInBuffer; - DWORD cbInBuffer; - LPVOID lpvOutBuffer; - DWORD cbOutBuffer; -} DIEFFESCAPE, *LPDIEFFESCAPE; - -typedef struct DIJOYSTATE { - LONG lX; - LONG lY; - LONG lZ; - LONG lRx; - LONG lRy; - LONG lRz; - LONG rglSlider[2]; - DWORD rgdwPOV[4]; - BYTE rgbButtons[32]; -} DIJOYSTATE, *LPDIJOYSTATE; - -typedef struct DIJOYSTATE2 { - LONG lX; - LONG lY; - LONG lZ; - LONG lRx; - LONG lRy; - LONG lRz; - LONG rglSlider[2]; - DWORD rgdwPOV[4]; - BYTE rgbButtons[128]; - LONG lVX; /* 'v' as in velocity */ - LONG lVY; - LONG lVZ; - LONG lVRx; - LONG lVRy; - LONG lVRz; - LONG rglVSlider[2]; - LONG lAX; /* 'a' as in acceleration */ - LONG lAY; - LONG lAZ; - LONG lARx; - LONG lARy; - LONG lARz; - LONG rglASlider[2]; - LONG lFX; /* 'f' as in force */ - LONG lFY; - LONG lFZ; - LONG lFRx; /* 'fr' as in rotational force aka torque */ - LONG lFRy; - LONG lFRz; - LONG rglFSlider[2]; -} DIJOYSTATE2, *LPDIJOYSTATE2; - -#define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX) -#define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY) -#define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ) -#define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx) -#define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy) -#define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz) -#define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \ - (n) * sizeof(LONG)) -#define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \ - (n) * sizeof(DWORD)) -#define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n)) -#define DIJOFS_BUTTON0 DIJOFS_BUTTON(0) -#define DIJOFS_BUTTON1 DIJOFS_BUTTON(1) -#define DIJOFS_BUTTON2 DIJOFS_BUTTON(2) -#define DIJOFS_BUTTON3 DIJOFS_BUTTON(3) -#define DIJOFS_BUTTON4 DIJOFS_BUTTON(4) -#define DIJOFS_BUTTON5 DIJOFS_BUTTON(5) -#define DIJOFS_BUTTON6 DIJOFS_BUTTON(6) -#define DIJOFS_BUTTON7 DIJOFS_BUTTON(7) -#define DIJOFS_BUTTON8 DIJOFS_BUTTON(8) -#define DIJOFS_BUTTON9 DIJOFS_BUTTON(9) -#define DIJOFS_BUTTON10 DIJOFS_BUTTON(10) -#define DIJOFS_BUTTON11 DIJOFS_BUTTON(11) -#define DIJOFS_BUTTON12 DIJOFS_BUTTON(12) -#define DIJOFS_BUTTON13 DIJOFS_BUTTON(13) -#define DIJOFS_BUTTON14 DIJOFS_BUTTON(14) -#define DIJOFS_BUTTON15 DIJOFS_BUTTON(15) -#define DIJOFS_BUTTON16 DIJOFS_BUTTON(16) -#define DIJOFS_BUTTON17 DIJOFS_BUTTON(17) -#define DIJOFS_BUTTON18 DIJOFS_BUTTON(18) -#define DIJOFS_BUTTON19 DIJOFS_BUTTON(19) -#define DIJOFS_BUTTON20 DIJOFS_BUTTON(20) -#define DIJOFS_BUTTON21 DIJOFS_BUTTON(21) -#define DIJOFS_BUTTON22 DIJOFS_BUTTON(22) -#define DIJOFS_BUTTON23 DIJOFS_BUTTON(23) -#define DIJOFS_BUTTON24 DIJOFS_BUTTON(24) -#define DIJOFS_BUTTON25 DIJOFS_BUTTON(25) -#define DIJOFS_BUTTON26 DIJOFS_BUTTON(26) -#define DIJOFS_BUTTON27 DIJOFS_BUTTON(27) -#define DIJOFS_BUTTON28 DIJOFS_BUTTON(28) -#define DIJOFS_BUTTON29 DIJOFS_BUTTON(29) -#define DIJOFS_BUTTON30 DIJOFS_BUTTON(30) -#define DIJOFS_BUTTON31 DIJOFS_BUTTON(31) -#endif /* DIRECTINPUT_VERSION >= 0x0500 */ - -/* DInput 7 structures, types */ -#if(DIRECTINPUT_VERSION >= 0x0700) -typedef struct DIFILEEFFECT { - DWORD dwSize; - GUID GuidEffect; - LPCDIEFFECT lpDiEffect; - CHAR szFriendlyName[MAX_PATH]; -} DIFILEEFFECT, *LPDIFILEEFFECT; - -typedef const DIFILEEFFECT *LPCDIFILEEFFECT; -typedef BOOL (CALLBACK *LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID); -#endif /* DIRECTINPUT_VERSION >= 0x0700 */ - -/* DInput 8 structures and types */ -#if DIRECTINPUT_VERSION >= 0x0800 -typedef struct _DIACTIONA { - UINT_PTR uAppData; - DWORD dwSemantic; - DWORD dwFlags; - __GNU_EXTENSION union { - LPCSTR lptszActionName; - UINT uResIdString; - } DUMMYUNIONNAME; - GUID guidInstance; - DWORD dwObjID; - DWORD dwHow; -} DIACTIONA, *LPDIACTIONA; -typedef const DIACTIONA *LPCDIACTIONA; - -typedef struct _DIACTIONW { - UINT_PTR uAppData; - DWORD dwSemantic; - DWORD dwFlags; - __GNU_EXTENSION union { - LPCWSTR lptszActionName; - UINT uResIdString; - } DUMMYUNIONNAME; - GUID guidInstance; - DWORD dwObjID; - DWORD dwHow; -} DIACTIONW, *LPDIACTIONW; -typedef const DIACTIONW *LPCDIACTIONW; - -DECL_WINELIB_TYPE_AW(DIACTION) -DECL_WINELIB_TYPE_AW(LPDIACTION) -DECL_WINELIB_TYPE_AW(LPCDIACTION) - -#define DIA_FORCEFEEDBACK 0x00000001 -#define DIA_APPMAPPED 0x00000002 -#define DIA_APPNOMAP 0x00000004 -#define DIA_NORANGE 0x00000008 -#define DIA_APPFIXED 0x00000010 - -#define DIAH_UNMAPPED 0x00000000 -#define DIAH_USERCONFIG 0x00000001 -#define DIAH_APPREQUESTED 0x00000002 -#define DIAH_HWAPP 0x00000004 -#define DIAH_HWDEFAULT 0x00000008 -#define DIAH_DEFAULT 0x00000020 -#define DIAH_ERROR 0x80000000 - -typedef struct _DIACTIONFORMATA { - DWORD dwSize; - DWORD dwActionSize; - DWORD dwDataSize; - DWORD dwNumActions; - LPDIACTIONA rgoAction; - GUID guidActionMap; - DWORD dwGenre; - DWORD dwBufferSize; - LONG lAxisMin; - LONG lAxisMax; - HINSTANCE hInstString; - FILETIME ftTimeStamp; - DWORD dwCRC; - CHAR tszActionMap[MAX_PATH]; -} DIACTIONFORMATA, *LPDIACTIONFORMATA; -typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA; - -typedef struct _DIACTIONFORMATW { - DWORD dwSize; - DWORD dwActionSize; - DWORD dwDataSize; - DWORD dwNumActions; - LPDIACTIONW rgoAction; - GUID guidActionMap; - DWORD dwGenre; - DWORD dwBufferSize; - LONG lAxisMin; - LONG lAxisMax; - HINSTANCE hInstString; - FILETIME ftTimeStamp; - DWORD dwCRC; - WCHAR tszActionMap[MAX_PATH]; -} DIACTIONFORMATW, *LPDIACTIONFORMATW; -typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW; - -DECL_WINELIB_TYPE_AW(DIACTIONFORMAT) -DECL_WINELIB_TYPE_AW(LPDIACTIONFORMAT) -DECL_WINELIB_TYPE_AW(LPCDIACTIONFORMAT) - -#define DIAFTS_NEWDEVICELOW 0xFFFFFFFF -#define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF -#define DIAFTS_UNUSEDDEVICELOW 0x00000000 -#define DIAFTS_UNUSEDDEVICEHIGH 0x00000000 - -#define DIDBAM_DEFAULT 0x00000000 -#define DIDBAM_PRESERVE 0x00000001 -#define DIDBAM_INITIALIZE 0x00000002 -#define DIDBAM_HWDEFAULTS 0x00000004 - -#define DIDSAM_DEFAULT 0x00000000 -#define DIDSAM_NOUSER 0x00000001 -#define DIDSAM_FORCESAVE 0x00000002 - -#define DICD_DEFAULT 0x00000000 -#define DICD_EDIT 0x00000001 - -#ifndef D3DCOLOR_DEFINED -typedef DWORD D3DCOLOR; -#define D3DCOLOR_DEFINED -#endif - -typedef struct _DICOLORSET { - DWORD dwSize; - D3DCOLOR cTextFore; - D3DCOLOR cTextHighlight; - D3DCOLOR cCalloutLine; - D3DCOLOR cCalloutHighlight; - D3DCOLOR cBorder; - D3DCOLOR cControlFill; - D3DCOLOR cHighlightFill; - D3DCOLOR cAreaFill; -} DICOLORSET, *LPDICOLORSET; -typedef const DICOLORSET *LPCDICOLORSET; - -typedef struct _DICONFIGUREDEVICESPARAMSA { - DWORD dwSize; - DWORD dwcUsers; - LPSTR lptszUserNames; - DWORD dwcFormats; - LPDIACTIONFORMATA lprgFormats; - HWND hwnd; - DICOLORSET dics; - LPUNKNOWN lpUnkDDSTarget; -} DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA; -typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA; - -typedef struct _DICONFIGUREDEVICESPARAMSW { - DWORD dwSize; - DWORD dwcUsers; - LPWSTR lptszUserNames; - DWORD dwcFormats; - LPDIACTIONFORMATW lprgFormats; - HWND hwnd; - DICOLORSET dics; - LPUNKNOWN lpUnkDDSTarget; -} DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW; -typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW; - -DECL_WINELIB_TYPE_AW(DICONFIGUREDEVICESPARAMS) -DECL_WINELIB_TYPE_AW(LPDICONFIGUREDEVICESPARAMS) -DECL_WINELIB_TYPE_AW(LPCDICONFIGUREDEVICESPARAMS) - -#define DIDIFT_CONFIGURATION 0x00000001 -#define DIDIFT_OVERLAY 0x00000002 - -#define DIDAL_CENTERED 0x00000000 -#define DIDAL_LEFTALIGNED 0x00000001 -#define DIDAL_RIGHTALIGNED 0x00000002 -#define DIDAL_MIDDLE 0x00000000 -#define DIDAL_TOPALIGNED 0x00000004 -#define DIDAL_BOTTOMALIGNED 0x00000008 - -typedef struct _DIDEVICEIMAGEINFOA { - CHAR tszImagePath[MAX_PATH]; - DWORD dwFlags; - DWORD dwViewID; - RECT rcOverlay; - DWORD dwObjID; - DWORD dwcValidPts; - POINT rgptCalloutLine[5]; - RECT rcCalloutRect; - DWORD dwTextAlign; -} DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA; -typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA; - -typedef struct _DIDEVICEIMAGEINFOW { - WCHAR tszImagePath[MAX_PATH]; - DWORD dwFlags; - DWORD dwViewID; - RECT rcOverlay; - DWORD dwObjID; - DWORD dwcValidPts; - POINT rgptCalloutLine[5]; - RECT rcCalloutRect; - DWORD dwTextAlign; -} DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW; -typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW; - -DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFO) -DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFO) -DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFO) - -typedef struct _DIDEVICEIMAGEINFOHEADERA { - DWORD dwSize; - DWORD dwSizeImageInfo; - DWORD dwcViews; - DWORD dwcButtons; - DWORD dwcAxes; - DWORD dwcPOVs; - DWORD dwBufferSize; - DWORD dwBufferUsed; - LPDIDEVICEIMAGEINFOA lprgImageInfoArray; -} DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA; -typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA; - -typedef struct _DIDEVICEIMAGEINFOHEADERW { - DWORD dwSize; - DWORD dwSizeImageInfo; - DWORD dwcViews; - DWORD dwcButtons; - DWORD dwcAxes; - DWORD dwcPOVs; - DWORD dwBufferSize; - DWORD dwBufferUsed; - LPDIDEVICEIMAGEINFOW lprgImageInfoArray; -} DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW; -typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW; - -DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFOHEADER) -DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFOHEADER) -DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFOHEADER) - -#endif /* DI8 */ - - -/***************************************************************************** - * IDirectInputEffect interface - */ -#if (DIRECTINPUT_VERSION >= 0x0500) -#undef INTERFACE -#define INTERFACE IDirectInputEffect -DECLARE_INTERFACE_(IDirectInputEffect,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputEffect methods ***/ - STDMETHOD(Initialize)(THIS_ HINSTANCE, DWORD, REFGUID) PURE; - STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE; - STDMETHOD(GetParameters)(THIS_ LPDIEFFECT, DWORD) PURE; - STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT, DWORD) PURE; - STDMETHOD(Start)(THIS_ DWORD, DWORD) PURE; - STDMETHOD(Stop)(THIS) PURE; - STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE; - STDMETHOD(Download)(THIS) PURE; - STDMETHOD(Unload)(THIS) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -/*** IUnknown methods ***/ -#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p) -/*** IDirectInputEffect methods ***/ -#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a) -#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b) -#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b) -#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b) -#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p) -#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a) -#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p) -#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p) -#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#else -/*** IUnknown methods ***/ -#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputEffect_AddRef(p) (p)->AddRef() -#define IDirectInputEffect_Release(p) (p)->Release() -/*** IDirectInputEffect methods ***/ -#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a) -#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b) -#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b) -#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b) -#define IDirectInputEffect_Stop(p) (p)->Stop() -#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a) -#define IDirectInputEffect_Download(p) (p)->Download() -#define IDirectInputEffect_Unload(p) (p)->Unload() -#define IDirectInputEffect_Escape(p,a) (p)->Escape(a) -#endif - -#endif /* DI5 */ - - -/***************************************************************************** - * IDirectInputDeviceA interface - */ -#undef INTERFACE -#define INTERFACE IDirectInputDeviceA -DECLARE_INTERFACE_(IDirectInputDeviceA,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputDeviceA methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; -}; - -/***************************************************************************** - * IDirectInputDeviceW interface - */ -#undef INTERFACE -#define INTERFACE IDirectInputDeviceW -DECLARE_INTERFACE_(IDirectInputDeviceW,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputDeviceW methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -/*** IUnknown methods ***/ -#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p) -/*** IDirectInputDevice methods ***/ -#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -#else -/*** IUnknown methods ***/ -#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice_AddRef(p) (p)->AddRef() -#define IDirectInputDevice_Release(p) (p)->Release() -/*** IDirectInputDevice methods ***/ -#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice_Acquire(p) (p)->Acquire() -#define IDirectInputDevice_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -#endif - - -#if (DIRECTINPUT_VERSION >= 0x0500) -/***************************************************************************** - * IDirectInputDevice2A interface - */ -#undef INTERFACE -#define INTERFACE IDirectInputDevice2A -DECLARE_INTERFACE_(IDirectInputDevice2A,IDirectInputDeviceA) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputDeviceA methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; - /*** IDirectInputDevice2A methods ***/ - STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; -}; - -/***************************************************************************** - * IDirectInputDevice2W interface - */ -#undef INTERFACE -#define INTERFACE IDirectInputDevice2W -DECLARE_INTERFACE_(IDirectInputDevice2W,IDirectInputDeviceW) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputDeviceW methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; - /*** IDirectInputDevice2W methods ***/ - STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -/*** IUnknown methods ***/ -#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p) -/*** IDirectInputDevice methods ***/ -#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -/*** IDirectInputDevice2 methods ***/ -#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) -#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) -#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) -#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) -#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) -#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) -#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p) -#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) -#else -/*** IUnknown methods ***/ -#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice2_AddRef(p) (p)->AddRef() -#define IDirectInputDevice2_Release(p) (p)->Release() -/*** IDirectInputDevice methods ***/ -#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice2_Acquire(p) (p)->Acquire() -#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -/*** IDirectInputDevice2 methods ***/ -#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) -#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) -#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) -#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) -#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) -#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) -#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a) -#define IDirectInputDevice2_Poll(p) (p)->Poll() -#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) -#endif -#endif /* DI5 */ - -#if DIRECTINPUT_VERSION >= 0x0700 -/***************************************************************************** - * IDirectInputDevice7A interface - */ -#undef INTERFACE -#define INTERFACE IDirectInputDevice7A -DECLARE_INTERFACE_(IDirectInputDevice7A,IDirectInputDevice2A) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputDeviceA methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; - /*** IDirectInputDevice2A methods ***/ - STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; - /*** IDirectInputDevice7A methods ***/ - STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; -}; - -/***************************************************************************** - * IDirectInputDevice7W interface - */ -#undef INTERFACE -#define INTERFACE IDirectInputDevice7W -DECLARE_INTERFACE_(IDirectInputDevice7W,IDirectInputDevice2W) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputDeviceW methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; - /*** IDirectInputDevice2W methods ***/ - STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; - /*** IDirectInputDevice7W methods ***/ - STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -/*** IUnknown methods ***/ -#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p) -/*** IDirectInputDevice methods ***/ -#define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -/*** IDirectInputDevice2 methods ***/ -#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) -#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) -#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) -#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) -#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) -#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) -#define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p) -#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) -/*** IDirectInputDevice7 methods ***/ -#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) -#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) -#else -/*** IUnknown methods ***/ -#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice7_AddRef(p) (p)->AddRef() -#define IDirectInputDevice7_Release(p) (p)->Release() -/*** IDirectInputDevice methods ***/ -#define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice7_Acquire(p) (p)->Acquire() -#define IDirectInputDevice7_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -/*** IDirectInputDevice2 methods ***/ -#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) -#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) -#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) -#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) -#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) -#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) -#define IDirectInputDevice7_Escape(p,a) (p)->Escape(a) -#define IDirectInputDevice7_Poll(p) (p)->Poll() -#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) -/*** IDirectInputDevice7 methods ***/ -#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) -#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) -#endif - -#endif /* DI7 */ - -#if DIRECTINPUT_VERSION >= 0x0800 -/***************************************************************************** - * IDirectInputDevice8A interface - */ -#undef INTERFACE -#define INTERFACE IDirectInputDevice8A -DECLARE_INTERFACE_(IDirectInputDevice8A,IDirectInputDevice7A) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputDeviceA methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; - /*** IDirectInputDevice2A methods ***/ - STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; - /*** IDirectInputDevice7A methods ***/ - STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; - /*** IDirectInputDevice8A methods ***/ - STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE; - STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE; - STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA lpdiDevImageInfoHeader) PURE; -}; - -/***************************************************************************** - * IDirectInputDevice8W interface - */ -#undef INTERFACE -#define INTERFACE IDirectInputDevice8W -DECLARE_INTERFACE_(IDirectInputDevice8W,IDirectInputDevice7W) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputDeviceW methods ***/ - STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; - STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; - STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; - STDMETHOD(Acquire)(THIS) PURE; - STDMETHOD(Unacquire)(THIS) PURE; - STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; - STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; - STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; - STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; - STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; - STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; - STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; - /*** IDirectInputDevice2W methods ***/ - STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; - STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; - STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; - STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; - STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; - STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; - STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; - STDMETHOD(Poll)(THIS) PURE; - STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; - /*** IDirectInputDevice7W methods ***/ - STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; - STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; - /*** IDirectInputDevice8W methods ***/ - STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE; - STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE; - STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW lpdiDevImageInfoHeader) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -/*** IUnknown methods ***/ -#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p) -/*** IDirectInputDevice methods ***/ -#define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) -#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) -#define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) -#define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) -#define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p) -#define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p) -#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) -#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) -#define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) -#define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) -#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) -#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) -#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) -#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) -/*** IDirectInputDevice2 methods ***/ -#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) -#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) -#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) -#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) -#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) -#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) -#define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a) -#define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p) -#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) -/*** IDirectInputDevice7 methods ***/ -#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) -#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) -/*** IDirectInputDevice8 methods ***/ -#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c) -#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c) -#define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a) -#else -/*** IUnknown methods ***/ -#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInputDevice8_AddRef(p) (p)->AddRef() -#define IDirectInputDevice8_Release(p) (p)->Release() -/*** IDirectInputDevice methods ***/ -#define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a) -#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) -#define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b) -#define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b) -#define IDirectInputDevice8_Acquire(p) (p)->Acquire() -#define IDirectInputDevice8_Unacquire(p) (p)->Unacquire() -#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) -#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) -#define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a) -#define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a) -#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) -#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) -#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) -#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c) -/*** IDirectInputDevice2 methods ***/ -#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) -#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) -#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) -#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) -#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) -#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) -#define IDirectInputDevice8_Escape(p,a) (p)->Escape(a) -#define IDirectInputDevice8_Poll(p) (p)->Poll() -#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) -/*** IDirectInputDevice7 methods ***/ -#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) -#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) -/*** IDirectInputDevice8 methods ***/ -#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c) -#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c) -#define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a) -#endif - -#endif /* DI8 */ - -/* "Standard" Mouse report... */ -typedef struct DIMOUSESTATE { - LONG lX; - LONG lY; - LONG lZ; - BYTE rgbButtons[4]; -} DIMOUSESTATE; - -#if DIRECTINPUT_VERSION >= 0x0700 -/* "Standard" Mouse report for DInput 7... */ -typedef struct DIMOUSESTATE2 { - LONG lX; - LONG lY; - LONG lZ; - BYTE rgbButtons[8]; -} DIMOUSESTATE2; -#endif /* DI7 */ - -#define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX) -#define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY) -#define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ) -#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0) -#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1) -#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2) -#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3) -#if DIRECTINPUT_VERSION >= 0x0700 -#define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4) -#define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5) -#define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6) -#define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7) -#endif /* DI7 */ - -#ifdef __cplusplus -extern "C" { -#endif -extern const DIDATAFORMAT c_dfDIMouse; -#if DIRECTINPUT_VERSION >= 0x0700 -extern const DIDATAFORMAT c_dfDIMouse2; /* DX 7 */ -#endif /* DI7 */ -extern const DIDATAFORMAT c_dfDIKeyboard; -#if DIRECTINPUT_VERSION >= 0x0500 -extern const DIDATAFORMAT c_dfDIJoystick; -extern const DIDATAFORMAT c_dfDIJoystick2; -#endif /* DI5 */ -#ifdef __cplusplus -}; -#endif - -/***************************************************************************** - * IDirectInputA interface - */ -#undef INTERFACE -#define INTERFACE IDirectInputA -DECLARE_INTERFACE_(IDirectInputA,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputA methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; -}; - -/***************************************************************************** - * IDirectInputW interface - */ -#undef INTERFACE -#define INTERFACE IDirectInputW -DECLARE_INTERFACE_(IDirectInputW,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputW methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -/*** IUnknown methods ***/ -#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput_Release(p) (p)->lpVtbl->Release(p) -/*** IDirectInput methods ***/ -#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#else -/*** IUnknown methods ***/ -#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput_AddRef(p) (p)->AddRef() -#define IDirectInput_Release(p) (p)->Release() -/*** IDirectInput methods ***/ -#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b) -#endif - -/***************************************************************************** - * IDirectInput2A interface - */ -#undef INTERFACE -#define INTERFACE IDirectInput2A -DECLARE_INTERFACE_(IDirectInput2A,IDirectInputA) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputA methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; - /*** IDirectInput2A methods ***/ - STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; -}; - -/***************************************************************************** - * IDirectInput2W interface - */ -#undef INTERFACE -#define INTERFACE IDirectInput2W -DECLARE_INTERFACE_(IDirectInput2W,IDirectInputW) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputW methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; - /*** IDirectInput2W methods ***/ - STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -/*** IUnknown methods ***/ -#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p) -/*** IDirectInput methods ***/ -#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -/*** IDirectInput2 methods ***/ -#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) -#else -/*** IUnknown methods ***/ -#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput2_AddRef(p) (p)->AddRef() -#define IDirectInput2_Release(p) (p)->Release() -/*** IDirectInput methods ***/ -#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b) -/*** IDirectInput2 methods ***/ -#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) -#endif - -/***************************************************************************** - * IDirectInput7A interface - */ -#undef INTERFACE -#define INTERFACE IDirectInput7A -DECLARE_INTERFACE_(IDirectInput7A,IDirectInput2A) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputA methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; - /*** IDirectInput2A methods ***/ - STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; - /*** IDirectInput7A methods ***/ - STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE; -}; - -/***************************************************************************** - * IDirectInput7W interface - */ -#undef INTERFACE -#define INTERFACE IDirectInput7W -DECLARE_INTERFACE_(IDirectInput7W,IDirectInput2W) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInputW methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; - /*** IDirectInput2W methods ***/ - STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; - /*** IDirectInput7W methods ***/ - STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE; -}; - -#if !defined(__cplusplus) || defined(CINTERFACE) -/*** IUnknown methods ***/ -#define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput7_Release(p) (p)->lpVtbl->Release(p) -/*** IDirectInput methods ***/ -#define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -/*** IDirectInput2 methods ***/ -#define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) -/*** IDirectInput7 methods ***/ -#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d) -#else -/*** IUnknown methods ***/ -#define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput7_AddRef(p) (p)->AddRef() -#define IDirectInput7_Release(p) (p)->Release() -/*** IDirectInput methods ***/ -#define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b) -/*** IDirectInput2 methods ***/ -#define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) -/*** IDirectInput7 methods ***/ -#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d) -#endif - - -#if DIRECTINPUT_VERSION >= 0x0800 -/***************************************************************************** - * IDirectInput8A interface - */ -#undef INTERFACE -#define INTERFACE IDirectInput8A -DECLARE_INTERFACE_(IDirectInput8A,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInput8A methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8A *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; - STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; - STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR ptszUserName, LPDIACTIONFORMATA lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSA lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE; -}; - -/***************************************************************************** - * IDirectInput8W interface - */ -#undef INTERFACE -#define INTERFACE IDirectInput8W -DECLARE_INTERFACE_(IDirectInput8W,IUnknown) -{ - /*** IUnknown methods ***/ - STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - /*** IDirectInput8W methods ***/ - STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8W *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; - STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; - STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; - STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; - STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; - STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR ptszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; - STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE; -}; -#undef INTERFACE - -#if !defined(__cplusplus) || defined(CINTERFACE) -/*** IUnknown methods ***/ -#define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) -#define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p) -#define IDirectInput8_Release(p) (p)->lpVtbl->Release(p) -/*** IDirectInput8 methods ***/ -#define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) -#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) -#define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) -#define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) -#define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) -#define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) -#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e) -#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d) -#else -/*** IUnknown methods ***/ -#define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) -#define IDirectInput8_AddRef(p) (p)->AddRef() -#define IDirectInput8_Release(p) (p)->Release() -/*** IDirectInput8 methods ***/ -#define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) -#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) -#define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) -#define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) -#define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b) -#define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) -#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e) -#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d) -#endif - -#endif /* DI8 */ - -/* Export functions */ - -#ifdef __cplusplus -extern "C" { -#endif - -#if DIRECTINPUT_VERSION >= 0x0800 -HRESULT WINAPI DirectInput8Create(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); -#else /* DI < 8 */ -HRESULT WINAPI DirectInputCreateA(HINSTANCE,DWORD,LPDIRECTINPUTA *,LPUNKNOWN); -HRESULT WINAPI DirectInputCreateW(HINSTANCE,DWORD,LPDIRECTINPUTW *,LPUNKNOWN); -#define DirectInputCreate WINELIB_NAME_AW(DirectInputCreate) - -HRESULT WINAPI DirectInputCreateEx(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); -#endif /* DI8 */ - -#ifdef __cplusplus -}; -#endif - -#endif /* __DINPUT_INCLUDED__ */ +/*+ * Copyright (C) the Wine project+ *+ * This library is free software; you can redistribute it and/or+ * modify it under the terms of the GNU Lesser General Public+ * License as published by the Free Software Foundation; either+ * version 2.1 of the License, or (at your option) any later version.+ *+ * This library is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ * Lesser General Public License for more details.+ *+ * You should have received a copy of the GNU Lesser General Public+ * License along with this library; if not, write to the Free Software+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA+ */++#ifndef __DINPUT_INCLUDED__+#define __DINPUT_INCLUDED__++#define COM_NO_WINDOWS_H+#include <objbase.h>+#include <_mingw_dxhelper.h>++#ifndef DIRECTINPUT_VERSION+#define DIRECTINPUT_VERSION 0x0800+#endif++/* Classes */+DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);++DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(CLSID_DirectInputDevice8, 0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);++/* Interfaces */+DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);+DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);+DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00);+DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00);+DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(IID_IDirectInputDevice2A, 0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(IID_IDirectInputDevice2W, 0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(IID_IDirectInputDevice7A, 0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);+DEFINE_GUID(IID_IDirectInputDevice7W, 0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);+DEFINE_GUID(IID_IDirectInputDevice8A, 0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);+DEFINE_GUID(IID_IDirectInputDevice8W, 0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);+DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);++/* Predefined object types */+DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_RxAxis,0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_RyAxis,0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_RzAxis,0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_Slider,0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_Button,0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_Unknown,0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);++/* Predefined product GUIDs */+DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_SysKeyboard, 0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_Joystick, 0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_SysMouseEm2, 0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);+DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);++/* predefined forcefeedback effects */+DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);+DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);++typedef struct IDirectInputA *LPDIRECTINPUTA;+typedef struct IDirectInputW *LPDIRECTINPUTW;+typedef struct IDirectInput2A *LPDIRECTINPUT2A;+typedef struct IDirectInput2W *LPDIRECTINPUT2W;+typedef struct IDirectInput7A *LPDIRECTINPUT7A;+typedef struct IDirectInput7W *LPDIRECTINPUT7W;+#if DIRECTINPUT_VERSION >= 0x0800+typedef struct IDirectInput8A *LPDIRECTINPUT8A;+typedef struct IDirectInput8W *LPDIRECTINPUT8W;+#endif /* DI8 */+typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA;+typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW;+#if DIRECTINPUT_VERSION >= 0x0500+typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A;+typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W;+#endif /* DI5 */+#if DIRECTINPUT_VERSION >= 0x0700+typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A;+typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W;+#endif /* DI7 */+#if DIRECTINPUT_VERSION >= 0x0800+typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A;+typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W;+#endif /* DI8 */+#if DIRECTINPUT_VERSION >= 0x0500+typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT;+#endif /* DI5 */+typedef struct SysKeyboardA *LPSYSKEYBOARDA;+typedef struct SysMouseA *LPSYSMOUSEA;++#define IID_IDirectInput WINELIB_NAME_AW(IID_IDirectInput)+#define IDirectInput WINELIB_NAME_AW(IDirectInput)+DECL_WINELIB_TYPE_AW(LPDIRECTINPUT)+#define IID_IDirectInput2 WINELIB_NAME_AW(IID_IDirectInput2)+#define IDirectInput2 WINELIB_NAME_AW(IDirectInput2)+DECL_WINELIB_TYPE_AW(LPDIRECTINPUT2)+#define IID_IDirectInput7 WINELIB_NAME_AW(IID_IDirectInput7)+#define IDirectInput7 WINELIB_NAME_AW(IDirectInput7)+DECL_WINELIB_TYPE_AW(LPDIRECTINPUT7)+#if DIRECTINPUT_VERSION >= 0x0800+#define IID_IDirectInput8 WINELIB_NAME_AW(IID_IDirectInput8)+#define IDirectInput8 WINELIB_NAME_AW(IDirectInput8)+DECL_WINELIB_TYPE_AW(LPDIRECTINPUT8)+#endif /* DI8 */+#define IID_IDirectInputDevice WINELIB_NAME_AW(IID_IDirectInputDevice)+#define IDirectInputDevice WINELIB_NAME_AW(IDirectInputDevice)+DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE)+#if DIRECTINPUT_VERSION >= 0x0500+#define IID_IDirectInputDevice2 WINELIB_NAME_AW(IID_IDirectInputDevice2)+#define IDirectInputDevice2 WINELIB_NAME_AW(IDirectInputDevice2)+DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE2)+#endif /* DI5 */+#if DIRECTINPUT_VERSION >= 0x0700+#define IID_IDirectInputDevice7 WINELIB_NAME_AW(IID_IDirectInputDevice7)+#define IDirectInputDevice7 WINELIB_NAME_AW(IDirectInputDevice7)+DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE7)+#endif /* DI7 */+#if DIRECTINPUT_VERSION >= 0x0800+#define IID_IDirectInputDevice8 WINELIB_NAME_AW(IID_IDirectInputDevice8)+#define IDirectInputDevice8 WINELIB_NAME_AW(IDirectInputDevice8)+DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE8)+#endif /* DI8 */++#define DI_OK S_OK+#define DI_NOTATTACHED S_FALSE+#define DI_BUFFEROVERFLOW S_FALSE+#define DI_PROPNOEFFECT S_FALSE+#define DI_NOEFFECT S_FALSE+#define DI_POLLEDDEVICE ((HRESULT)0x00000002L)+#define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003L)+#define DI_EFFECTRESTARTED ((HRESULT)0x00000004L)+#define DI_TRUNCATED ((HRESULT)0x00000008L)+#define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000BL)+#define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000CL)+#define DI_WRITEPROTECT ((HRESULT)0x00000013L)++#define DIERR_OLDDIRECTINPUTVERSION \+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION)+#define DIERR_BETADIRECTINPUTVERSION \+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP)+#define DIERR_BADDRIVERVER \+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL)+#define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG+#define DIERR_NOTFOUND \+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)+#define DIERR_OBJECTNOTFOUND \+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)+#define DIERR_INVALIDPARAM E_INVALIDARG+#define DIERR_NOINTERFACE E_NOINTERFACE+#define DIERR_GENERIC E_FAIL+#define DIERR_OUTOFMEMORY E_OUTOFMEMORY+#define DIERR_UNSUPPORTED E_NOTIMPL+#define DIERR_NOTINITIALIZED \+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY)+#define DIERR_ALREADYINITIALIZED \+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED)+#define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION+#define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED+#define DIERR_INPUTLOST \+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT)+#define DIERR_ACQUIRED \+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY)+#define DIERR_NOTACQUIRED \+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS)+#define DIERR_READONLY E_ACCESSDENIED+#define DIERR_HANDLEEXISTS E_ACCESSDENIED+#ifndef E_PENDING+#define E_PENDING 0x8000000AL+#endif+#define DIERR_INSUFFICIENTPRIVS 0x80040200L+#define DIERR_DEVICEFULL 0x80040201L+#define DIERR_MOREDATA 0x80040202L+#define DIERR_NOTDOWNLOADED 0x80040203L+#define DIERR_HASEFFECTS 0x80040204L+#define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L+#define DIERR_INCOMPLETEEFFECT 0x80040206L+#define DIERR_NOTBUFFERED 0x80040207L+#define DIERR_EFFECTPLAYING 0x80040208L+#define DIERR_UNPLUGGED 0x80040209L+#define DIERR_REPORTFULL 0x8004020AL+#define DIERR_MAPFILEFAIL 0x8004020BL++#define DIENUM_STOP 0+#define DIENUM_CONTINUE 1++#define DIEDFL_ALLDEVICES 0x00000000+#define DIEDFL_ATTACHEDONLY 0x00000001+#define DIEDFL_FORCEFEEDBACK 0x00000100+#define DIEDFL_INCLUDEALIASES 0x00010000+#define DIEDFL_INCLUDEPHANTOMS 0x00020000+#define DIEDFL_INCLUDEHIDDEN 0x00040000++#define DIDEVTYPE_DEVICE 1+#define DIDEVTYPE_MOUSE 2+#define DIDEVTYPE_KEYBOARD 3+#define DIDEVTYPE_JOYSTICK 4+#define DIDEVTYPE_HID 0x00010000++#define DI8DEVCLASS_ALL 0+#define DI8DEVCLASS_DEVICE 1+#define DI8DEVCLASS_POINTER 2+#define DI8DEVCLASS_KEYBOARD 3+#define DI8DEVCLASS_GAMECTRL 4++#define DI8DEVTYPE_DEVICE 0x11+#define DI8DEVTYPE_MOUSE 0x12+#define DI8DEVTYPE_KEYBOARD 0x13+#define DI8DEVTYPE_JOYSTICK 0x14+#define DI8DEVTYPE_GAMEPAD 0x15+#define DI8DEVTYPE_DRIVING 0x16+#define DI8DEVTYPE_FLIGHT 0x17+#define DI8DEVTYPE_1STPERSON 0x18+#define DI8DEVTYPE_DEVICECTRL 0x19+#define DI8DEVTYPE_SCREENPOINTER 0x1A+#define DI8DEVTYPE_REMOTE 0x1B+#define DI8DEVTYPE_SUPPLEMENTAL 0x1C+ +#define DIDEVTYPEMOUSE_UNKNOWN 1+#define DIDEVTYPEMOUSE_TRADITIONAL 2+#define DIDEVTYPEMOUSE_FINGERSTICK 3+#define DIDEVTYPEMOUSE_TOUCHPAD 4+#define DIDEVTYPEMOUSE_TRACKBALL 5++#define DIDEVTYPEKEYBOARD_UNKNOWN 0+#define DIDEVTYPEKEYBOARD_PCXT 1+#define DIDEVTYPEKEYBOARD_OLIVETTI 2+#define DIDEVTYPEKEYBOARD_PCAT 3+#define DIDEVTYPEKEYBOARD_PCENH 4+#define DIDEVTYPEKEYBOARD_NOKIA1050 5+#define DIDEVTYPEKEYBOARD_NOKIA9140 6+#define DIDEVTYPEKEYBOARD_NEC98 7+#define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8+#define DIDEVTYPEKEYBOARD_NEC98106 9+#define DIDEVTYPEKEYBOARD_JAPAN106 10+#define DIDEVTYPEKEYBOARD_JAPANAX 11+#define DIDEVTYPEKEYBOARD_J3100 12++#define DIDEVTYPEJOYSTICK_UNKNOWN 1+#define DIDEVTYPEJOYSTICK_TRADITIONAL 2+#define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3+#define DIDEVTYPEJOYSTICK_GAMEPAD 4+#define DIDEVTYPEJOYSTICK_RUDDER 5+#define DIDEVTYPEJOYSTICK_WHEEL 6+#define DIDEVTYPEJOYSTICK_HEADTRACKER 7++#define DI8DEVTYPEMOUSE_UNKNOWN 1+#define DI8DEVTYPEMOUSE_TRADITIONAL 2+#define DI8DEVTYPEMOUSE_FINGERSTICK 3+#define DI8DEVTYPEMOUSE_TOUCHPAD 4+#define DI8DEVTYPEMOUSE_TRACKBALL 5+#define DI8DEVTYPEMOUSE_ABSOLUTE 6++#define DI8DEVTYPEKEYBOARD_UNKNOWN 0+#define DI8DEVTYPEKEYBOARD_PCXT 1+#define DI8DEVTYPEKEYBOARD_OLIVETTI 2+#define DI8DEVTYPEKEYBOARD_PCAT 3+#define DI8DEVTYPEKEYBOARD_PCENH 4+#define DI8DEVTYPEKEYBOARD_NOKIA1050 5+#define DI8DEVTYPEKEYBOARD_NOKIA9140 6+#define DI8DEVTYPEKEYBOARD_NEC98 7+#define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8+#define DI8DEVTYPEKEYBOARD_NEC98106 9+#define DI8DEVTYPEKEYBOARD_JAPAN106 10+#define DI8DEVTYPEKEYBOARD_JAPANAX 11+#define DI8DEVTYPEKEYBOARD_J3100 12++#define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1++#define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE+#define DI8DEVTYPEJOYSTICK_STANDARD 2++#define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE+#define DI8DEVTYPEGAMEPAD_STANDARD 2+#define DI8DEVTYPEGAMEPAD_TILT 3++#define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE+#define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2+#define DI8DEVTYPEDRIVING_DUALPEDALS 3+#define DI8DEVTYPEDRIVING_THREEPEDALS 4+#define DI8DEVTYPEDRIVING_HANDHELD 5++#define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE+#define DI8DEVTYPEFLIGHT_STICK 2+#define DI8DEVTYPEFLIGHT_YOKE 3+#define DI8DEVTYPEFLIGHT_RC 4++#define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE+#define DI8DEVTYPE1STPERSON_UNKNOWN 2+#define DI8DEVTYPE1STPERSON_SIXDOF 3+#define DI8DEVTYPE1STPERSON_SHOOTER 4++#define DI8DEVTYPESCREENPTR_UNKNOWN 2+#define DI8DEVTYPESCREENPTR_LIGHTGUN 3+#define DI8DEVTYPESCREENPTR_LIGHTPEN 4+#define DI8DEVTYPESCREENPTR_TOUCH 5++#define DI8DEVTYPEREMOTE_UNKNOWN 2++#define DI8DEVTYPEDEVICECTRL_UNKNOWN 2+#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3+#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4++#define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2+#define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3+#define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4+#define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5+#define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6+#define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7+#define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8+#define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9+#define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10+#define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11+#define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12+#define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13+ +#define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType)+#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType)++typedef struct DIDEVICEOBJECTINSTANCE_DX3A {+ DWORD dwSize;+ GUID guidType;+ DWORD dwOfs;+ DWORD dwType;+ DWORD dwFlags;+ CHAR tszName[MAX_PATH];+} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A;+typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A;+typedef struct DIDEVICEOBJECTINSTANCE_DX3W {+ DWORD dwSize;+ GUID guidType;+ DWORD dwOfs;+ DWORD dwType;+ DWORD dwFlags;+ WCHAR tszName[MAX_PATH];+} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W;+typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W;++DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE_DX3)+DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE_DX3)+DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE_DX3)++typedef struct DIDEVICEOBJECTINSTANCEA {+ DWORD dwSize;+ GUID guidType;+ DWORD dwOfs;+ DWORD dwType;+ DWORD dwFlags;+ CHAR tszName[MAX_PATH];+#if(DIRECTINPUT_VERSION >= 0x0500)+ DWORD dwFFMaxForce;+ DWORD dwFFForceResolution;+ WORD wCollectionNumber;+ WORD wDesignatorIndex;+ WORD wUsagePage;+ WORD wUsage;+ DWORD dwDimension;+ WORD wExponent;+ WORD wReserved;+#endif /* DIRECTINPUT_VERSION >= 0x0500 */+} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA;+typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;++typedef struct DIDEVICEOBJECTINSTANCEW {+ DWORD dwSize;+ GUID guidType;+ DWORD dwOfs;+ DWORD dwType;+ DWORD dwFlags;+ WCHAR tszName[MAX_PATH];+#if(DIRECTINPUT_VERSION >= 0x0500)+ DWORD dwFFMaxForce;+ DWORD dwFFForceResolution;+ WORD wCollectionNumber;+ WORD wDesignatorIndex;+ WORD wUsagePage;+ WORD wUsage;+ DWORD dwDimension;+ WORD wExponent;+ WORD wReserved;+#endif /* DIRECTINPUT_VERSION >= 0x0500 */+} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW;+typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;++DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE)+DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE)+DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE)++typedef struct DIDEVICEINSTANCE_DX3A {+ DWORD dwSize;+ GUID guidInstance;+ GUID guidProduct;+ DWORD dwDevType;+ CHAR tszInstanceName[MAX_PATH];+ CHAR tszProductName[MAX_PATH];+} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A;+typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A;+typedef struct DIDEVICEINSTANCE_DX3W {+ DWORD dwSize;+ GUID guidInstance;+ GUID guidProduct;+ DWORD dwDevType;+ WCHAR tszInstanceName[MAX_PATH];+ WCHAR tszProductName[MAX_PATH];+} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W;+typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W;++DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE_DX3)+DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE_DX3)+DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE_DX3)++typedef struct DIDEVICEINSTANCEA {+ DWORD dwSize;+ GUID guidInstance;+ GUID guidProduct;+ DWORD dwDevType;+ CHAR tszInstanceName[MAX_PATH];+ CHAR tszProductName[MAX_PATH];+#if(DIRECTINPUT_VERSION >= 0x0500)+ GUID guidFFDriver;+ WORD wUsagePage;+ WORD wUsage;+#endif /* DIRECTINPUT_VERSION >= 0x0500 */+} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA;+typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;++typedef struct DIDEVICEINSTANCEW {+ DWORD dwSize;+ GUID guidInstance;+ GUID guidProduct;+ DWORD dwDevType;+ WCHAR tszInstanceName[MAX_PATH];+ WCHAR tszProductName[MAX_PATH];+#if(DIRECTINPUT_VERSION >= 0x0500)+ GUID guidFFDriver;+ WORD wUsagePage;+ WORD wUsage;+#endif /* DIRECTINPUT_VERSION >= 0x0500 */+} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW;+typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;++DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE)+DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE)+DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE)++typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA,LPVOID);+typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW,LPVOID);+DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESCALLBACK)++#define DIEDBS_MAPPEDPRI1 0x00000001+#define DIEDBS_MAPPEDPRI2 0x00000002+#define DIEDBS_RECENTDEVICE 0x00000010+#define DIEDBS_NEWDEVICE 0x00000020++#define DIEDBSFL_ATTACHEDONLY 0x00000000+#define DIEDBSFL_THISUSER 0x00000010+#define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK+#define DIEDBSFL_AVAILABLEDEVICES 0x00001000+#define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000+#define DIEDBSFL_NONGAMINGDEVICES 0x00004000+#define DIEDBSFL_VALID 0x00007110++#if DIRECTINPUT_VERSION >= 0x0800+typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA,LPDIRECTINPUTDEVICE8A,DWORD,DWORD,LPVOID);+typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW,LPDIRECTINPUTDEVICE8W,DWORD,DWORD,LPVOID);+DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESBYSEMANTICSCB)+#endif++typedef BOOL (CALLBACK *LPDICONFIGUREDEVICESCALLBACK)(LPUNKNOWN,LPVOID);++typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA,LPVOID);+typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW,LPVOID);+DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK)++#if DIRECTINPUT_VERSION >= 0x0500+typedef BOOL (CALLBACK *LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID);+#endif++#define DIK_ESCAPE 0x01+#define DIK_1 0x02+#define DIK_2 0x03+#define DIK_3 0x04+#define DIK_4 0x05+#define DIK_5 0x06+#define DIK_6 0x07+#define DIK_7 0x08+#define DIK_8 0x09+#define DIK_9 0x0A+#define DIK_0 0x0B+#define DIK_MINUS 0x0C /* - on main keyboard */+#define DIK_EQUALS 0x0D+#define DIK_BACK 0x0E /* backspace */+#define DIK_TAB 0x0F+#define DIK_Q 0x10+#define DIK_W 0x11+#define DIK_E 0x12+#define DIK_R 0x13+#define DIK_T 0x14+#define DIK_Y 0x15+#define DIK_U 0x16+#define DIK_I 0x17+#define DIK_O 0x18+#define DIK_P 0x19+#define DIK_LBRACKET 0x1A+#define DIK_RBRACKET 0x1B+#define DIK_RETURN 0x1C /* Enter on main keyboard */+#define DIK_LCONTROL 0x1D+#define DIK_A 0x1E+#define DIK_S 0x1F+#define DIK_D 0x20+#define DIK_F 0x21+#define DIK_G 0x22+#define DIK_H 0x23+#define DIK_J 0x24+#define DIK_K 0x25+#define DIK_L 0x26+#define DIK_SEMICOLON 0x27+#define DIK_APOSTROPHE 0x28+#define DIK_GRAVE 0x29 /* accent grave */+#define DIK_LSHIFT 0x2A+#define DIK_BACKSLASH 0x2B+#define DIK_Z 0x2C+#define DIK_X 0x2D+#define DIK_C 0x2E+#define DIK_V 0x2F+#define DIK_B 0x30+#define DIK_N 0x31+#define DIK_M 0x32+#define DIK_COMMA 0x33+#define DIK_PERIOD 0x34 /* . on main keyboard */+#define DIK_SLASH 0x35 /* / on main keyboard */+#define DIK_RSHIFT 0x36+#define DIK_MULTIPLY 0x37 /* * on numeric keypad */+#define DIK_LMENU 0x38 /* left Alt */+#define DIK_SPACE 0x39+#define DIK_CAPITAL 0x3A+#define DIK_F1 0x3B+#define DIK_F2 0x3C+#define DIK_F3 0x3D+#define DIK_F4 0x3E+#define DIK_F5 0x3F+#define DIK_F6 0x40+#define DIK_F7 0x41+#define DIK_F8 0x42+#define DIK_F9 0x43+#define DIK_F10 0x44+#define DIK_NUMLOCK 0x45+#define DIK_SCROLL 0x46 /* Scroll Lock */+#define DIK_NUMPAD7 0x47+#define DIK_NUMPAD8 0x48+#define DIK_NUMPAD9 0x49+#define DIK_SUBTRACT 0x4A /* - on numeric keypad */+#define DIK_NUMPAD4 0x4B+#define DIK_NUMPAD5 0x4C+#define DIK_NUMPAD6 0x4D+#define DIK_ADD 0x4E /* + on numeric keypad */+#define DIK_NUMPAD1 0x4F+#define DIK_NUMPAD2 0x50+#define DIK_NUMPAD3 0x51+#define DIK_NUMPAD0 0x52+#define DIK_DECIMAL 0x53 /* . on numeric keypad */+#define DIK_OEM_102 0x56 /* < > | on UK/Germany keyboards */+#define DIK_F11 0x57+#define DIK_F12 0x58+#define DIK_F13 0x64 /* (NEC PC98) */+#define DIK_F14 0x65 /* (NEC PC98) */+#define DIK_F15 0x66 /* (NEC PC98) */+#define DIK_KANA 0x70 /* (Japanese keyboard) */+#define DIK_ABNT_C1 0x73 /* / ? on Portugese (Brazilian) keyboards */+#define DIK_CONVERT 0x79 /* (Japanese keyboard) */+#define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */+#define DIK_YEN 0x7D /* (Japanese keyboard) */+#define DIK_ABNT_C2 0x7E /* Numpad . on Portugese (Brazilian) keyboards */+#define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */+#define DIK_CIRCUMFLEX 0x90 /* (Japanese keyboard) */+#define DIK_AT 0x91 /* (NEC PC98) */+#define DIK_COLON 0x92 /* (NEC PC98) */+#define DIK_UNDERLINE 0x93 /* (NEC PC98) */+#define DIK_KANJI 0x94 /* (Japanese keyboard) */+#define DIK_STOP 0x95 /* (NEC PC98) */+#define DIK_AX 0x96 /* (Japan AX) */+#define DIK_UNLABELED 0x97 /* (J3100) */+#define DIK_NEXTTRACK 0x99 /* Next Track */+#define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */+#define DIK_RCONTROL 0x9D+#define DIK_MUTE 0xA0 /* Mute */+#define DIK_CALCULATOR 0xA1 /* Calculator */+#define DIK_PLAYPAUSE 0xA2 /* Play / Pause */+#define DIK_MEDIASTOP 0xA4 /* Media Stop */+#define DIK_VOLUMEDOWN 0xAE /* Volume - */+#define DIK_VOLUMEUP 0xB0 /* Volume + */+#define DIK_WEBHOME 0xB2 /* Web home */+#define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */+#define DIK_DIVIDE 0xB5 /* / on numeric keypad */+#define DIK_SYSRQ 0xB7+#define DIK_RMENU 0xB8 /* right Alt */+#define DIK_PAUSE 0xC5 /* Pause */+#define DIK_HOME 0xC7 /* Home on arrow keypad */+#define DIK_UP 0xC8 /* UpArrow on arrow keypad */+#define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */+#define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */+#define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */+#define DIK_END 0xCF /* End on arrow keypad */+#define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */+#define DIK_NEXT 0xD1 /* PgDn on arrow keypad */+#define DIK_INSERT 0xD2 /* Insert on arrow keypad */+#define DIK_DELETE 0xD3 /* Delete on arrow keypad */+#define DIK_LWIN 0xDB /* Left Windows key */+#define DIK_RWIN 0xDC /* Right Windows key */+#define DIK_APPS 0xDD /* AppMenu key */+#define DIK_POWER 0xDE+#define DIK_SLEEP 0xDF+#define DIK_WAKE 0xE3 /* System Wake */+#define DIK_WEBSEARCH 0xE5 /* Web Search */+#define DIK_WEBFAVORITES 0xE6 /* Web Favorites */+#define DIK_WEBREFRESH 0xE7 /* Web Refresh */+#define DIK_WEBSTOP 0xE8 /* Web Stop */+#define DIK_WEBFORWARD 0xE9 /* Web Forward */+#define DIK_WEBBACK 0xEA /* Web Back */+#define DIK_MYCOMPUTER 0xEB /* My Computer */+#define DIK_MAIL 0xEC /* Mail */+#define DIK_MEDIASELECT 0xED /* Media Select */++#define DIK_BACKSPACE DIK_BACK /* backspace */+#define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */+#define DIK_LALT DIK_LMENU /* left Alt */+#define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */+#define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */+#define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */+#define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */+#define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */+#define DIK_RALT DIK_RMENU /* right Alt */+#define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */+#define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */+#define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */+#define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */+#define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */+#define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */++#define DIDFT_ALL 0x00000000+#define DIDFT_RELAXIS 0x00000001+#define DIDFT_ABSAXIS 0x00000002+#define DIDFT_AXIS 0x00000003+#define DIDFT_PSHBUTTON 0x00000004+#define DIDFT_TGLBUTTON 0x00000008+#define DIDFT_BUTTON 0x0000000C+#define DIDFT_POV 0x00000010+#define DIDFT_COLLECTION 0x00000040+#define DIDFT_NODATA 0x00000080+#define DIDFT_ANYINSTANCE 0x00FFFF00+#define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE+#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8)+#define DIDFT_GETTYPE(n) LOBYTE(n)+#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8)+#define DIDFT_FFACTUATOR 0x01000000+#define DIDFT_FFEFFECTTRIGGER 0x02000000+#if DIRECTINPUT_VERSION >= 0x050a+#define DIDFT_OUTPUT 0x10000000+#define DIDFT_VENDORDEFINED 0x04000000+#define DIDFT_ALIAS 0x08000000+#endif /* DI5a */+#ifndef DIDFT_OPTIONAL+#define DIDFT_OPTIONAL 0x80000000+#endif+#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8)+#define DIDFT_NOCOLLECTION 0x00FFFF00++#define DIDF_ABSAXIS 0x00000001+#define DIDF_RELAXIS 0x00000002++#define DIGDD_PEEK 0x00000001++#define DISEQUENCE_COMPARE(dwSq1,cmp,dwSq2) ((int)((dwSq1) - (dwSq2)) cmp 0)++typedef struct DIDEVICEOBJECTDATA_DX3 {+ DWORD dwOfs;+ DWORD dwData;+ DWORD dwTimeStamp;+ DWORD dwSequence;+} DIDEVICEOBJECTDATA_DX3,*LPDIDEVICEOBJECTDATA_DX3;+typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX3;++typedef struct DIDEVICEOBJECTDATA {+ DWORD dwOfs;+ DWORD dwData;+ DWORD dwTimeStamp;+ DWORD dwSequence;+#if(DIRECTINPUT_VERSION >= 0x0800)+ UINT_PTR uAppData;+#endif /* DIRECTINPUT_VERSION >= 0x0800 */+} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA;+typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;++typedef struct _DIOBJECTDATAFORMAT {+ const GUID *pguid;+ DWORD dwOfs;+ DWORD dwType;+ DWORD dwFlags;+} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT;+typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;++typedef struct _DIDATAFORMAT {+ DWORD dwSize;+ DWORD dwObjSize;+ DWORD dwFlags;+ DWORD dwDataSize;+ DWORD dwNumObjs;+ LPDIOBJECTDATAFORMAT rgodf;+} DIDATAFORMAT, *LPDIDATAFORMAT;+typedef const DIDATAFORMAT *LPCDIDATAFORMAT;++#if DIRECTINPUT_VERSION >= 0x0500+#define DIDOI_FFACTUATOR 0x00000001+#define DIDOI_FFEFFECTTRIGGER 0x00000002+#define DIDOI_POLLED 0x00008000+#define DIDOI_ASPECTPOSITION 0x00000100+#define DIDOI_ASPECTVELOCITY 0x00000200+#define DIDOI_ASPECTACCEL 0x00000300+#define DIDOI_ASPECTFORCE 0x00000400+#define DIDOI_ASPECTMASK 0x00000F00+#endif /* DI5 */+#if DIRECTINPUT_VERSION >= 0x050a+#define DIDOI_GUIDISUSAGE 0x00010000+#endif /* DI5a */++typedef struct DIPROPHEADER {+ DWORD dwSize;+ DWORD dwHeaderSize;+ DWORD dwObj;+ DWORD dwHow;+} DIPROPHEADER,*LPDIPROPHEADER;+typedef const DIPROPHEADER *LPCDIPROPHEADER;++#define DIPH_DEVICE 0+#define DIPH_BYOFFSET 1+#define DIPH_BYID 2+#if DIRECTINPUT_VERSION >= 0x050a+#define DIPH_BYUSAGE 3++#define DIMAKEUSAGEDWORD(UsagePage, Usage) (DWORD)MAKELONG(Usage, UsagePage)+#endif /* DI5a */++typedef struct DIPROPDWORD {+ DIPROPHEADER diph;+ DWORD dwData;+} DIPROPDWORD, *LPDIPROPDWORD;+typedef const DIPROPDWORD *LPCDIPROPDWORD;++typedef struct DIPROPRANGE {+ DIPROPHEADER diph;+ LONG lMin;+ LONG lMax;+} DIPROPRANGE, *LPDIPROPRANGE;+typedef const DIPROPRANGE *LPCDIPROPRANGE;++#define DIPROPRANGE_NOMIN ((LONG)0x80000000)+#define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF)++#if DIRECTINPUT_VERSION >= 0x050a+typedef struct DIPROPCAL {+ DIPROPHEADER diph;+ LONG lMin;+ LONG lCenter;+ LONG lMax;+} DIPROPCAL, *LPDIPROPCAL;+typedef const DIPROPCAL *LPCDIPROPCAL;++typedef struct DIPROPCALPOV {+ DIPROPHEADER diph;+ LONG lMin[5];+ LONG lMax[5];+} DIPROPCALPOV, *LPDIPROPCALPOV;+typedef const DIPROPCALPOV *LPCDIPROPCALPOV;++typedef struct DIPROPGUIDANDPATH {+ DIPROPHEADER diph;+ GUID guidClass;+ WCHAR wszPath[MAX_PATH];+} DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH;+typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH;++typedef struct DIPROPSTRING {+ DIPROPHEADER diph;+ WCHAR wsz[MAX_PATH];+} DIPROPSTRING, *LPDIPROPSTRING;+typedef const DIPROPSTRING *LPCDIPROPSTRING;+#endif /* DI5a */++#if DIRECTINPUT_VERSION >= 0x0800+typedef struct DIPROPPOINTER {+ DIPROPHEADER diph;+ UINT_PTR uData;+} DIPROPPOINTER, *LPDIPROPPOINTER;+typedef const DIPROPPOINTER *LPCDIPROPPOINTER;+#endif /* DI8 */++/* special property GUIDs */+#ifdef __cplusplus+#define MAKEDIPROP(prop) (*(const GUID *)(prop))+#else+#define MAKEDIPROP(prop) ((REFGUID)(prop))+#endif+#define DIPROP_BUFFERSIZE MAKEDIPROP(1)+#define DIPROP_AXISMODE MAKEDIPROP(2)++#define DIPROPAXISMODE_ABS 0+#define DIPROPAXISMODE_REL 1++#define DIPROP_GRANULARITY MAKEDIPROP(3)+#define DIPROP_RANGE MAKEDIPROP(4)+#define DIPROP_DEADZONE MAKEDIPROP(5)+#define DIPROP_SATURATION MAKEDIPROP(6)+#define DIPROP_FFGAIN MAKEDIPROP(7)+#define DIPROP_FFLOAD MAKEDIPROP(8)+#define DIPROP_AUTOCENTER MAKEDIPROP(9)++#define DIPROPAUTOCENTER_OFF 0+#define DIPROPAUTOCENTER_ON 1++#define DIPROP_CALIBRATIONMODE MAKEDIPROP(10)++#define DIPROPCALIBRATIONMODE_COOKED 0+#define DIPROPCALIBRATIONMODE_RAW 1++#if DIRECTINPUT_VERSION >= 0x050a+#define DIPROP_CALIBRATION MAKEDIPROP(11)+#define DIPROP_GUIDANDPATH MAKEDIPROP(12)+#define DIPROP_INSTANCENAME MAKEDIPROP(13)+#define DIPROP_PRODUCTNAME MAKEDIPROP(14)+#endif++#if DIRECTINPUT_VERSION >= 0x5B2+#define DIPROP_JOYSTICKID MAKEDIPROP(15)+#define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP(16)+#endif++#if DIRECTINPUT_VERSION >= 0x0700+#define DIPROP_PHYSICALRANGE MAKEDIPROP(18)+#define DIPROP_LOGICALRANGE MAKEDIPROP(19)+#endif++#if(DIRECTINPUT_VERSION >= 0x0800)+#define DIPROP_KEYNAME MAKEDIPROP(20)+#define DIPROP_CPOINTS MAKEDIPROP(21)+#define DIPROP_APPDATA MAKEDIPROP(22)+#define DIPROP_SCANCODE MAKEDIPROP(23)+#define DIPROP_VIDPID MAKEDIPROP(24)+#define DIPROP_USERNAME MAKEDIPROP(25)+#define DIPROP_TYPENAME MAKEDIPROP(26)++#define MAXCPOINTSNUM 8++typedef struct _CPOINT {+ LONG lP;+ DWORD dwLog;+} CPOINT, *PCPOINT;++typedef struct DIPROPCPOINTS {+ DIPROPHEADER diph;+ DWORD dwCPointsNum;+ CPOINT cp[MAXCPOINTSNUM];+} DIPROPCPOINTS, *LPDIPROPCPOINTS;+typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS;+#endif /* DI8 */+++typedef struct DIDEVCAPS_DX3 {+ DWORD dwSize;+ DWORD dwFlags;+ DWORD dwDevType;+ DWORD dwAxes;+ DWORD dwButtons;+ DWORD dwPOVs;+} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3;++typedef struct DIDEVCAPS {+ DWORD dwSize;+ DWORD dwFlags;+ DWORD dwDevType;+ DWORD dwAxes;+ DWORD dwButtons;+ DWORD dwPOVs;+#if(DIRECTINPUT_VERSION >= 0x0500)+ DWORD dwFFSamplePeriod;+ DWORD dwFFMinTimeResolution;+ DWORD dwFirmwareRevision;+ DWORD dwHardwareRevision;+ DWORD dwFFDriverVersion;+#endif /* DIRECTINPUT_VERSION >= 0x0500 */+} DIDEVCAPS,*LPDIDEVCAPS;++#define DIDC_ATTACHED 0x00000001+#define DIDC_POLLEDDEVICE 0x00000002+#define DIDC_EMULATED 0x00000004+#define DIDC_POLLEDDATAFORMAT 0x00000008+#define DIDC_FORCEFEEDBACK 0x00000100+#define DIDC_FFATTACK 0x00000200+#define DIDC_FFFADE 0x00000400+#define DIDC_SATURATION 0x00000800+#define DIDC_POSNEGCOEFFICIENTS 0x00001000+#define DIDC_POSNEGSATURATION 0x00002000+#define DIDC_DEADBAND 0x00004000+#define DIDC_STARTDELAY 0x00008000+#define DIDC_ALIAS 0x00010000+#define DIDC_PHANTOM 0x00020000+#define DIDC_HIDDEN 0x00040000+++/* SetCooperativeLevel dwFlags */+#define DISCL_EXCLUSIVE 0x00000001+#define DISCL_NONEXCLUSIVE 0x00000002+#define DISCL_FOREGROUND 0x00000004+#define DISCL_BACKGROUND 0x00000008+#define DISCL_NOWINKEY 0x00000010++#if (DIRECTINPUT_VERSION >= 0x0500)+/* Device FF flags */+#define DISFFC_RESET 0x00000001+#define DISFFC_STOPALL 0x00000002+#define DISFFC_PAUSE 0x00000004+#define DISFFC_CONTINUE 0x00000008+#define DISFFC_SETACTUATORSON 0x00000010+#define DISFFC_SETACTUATORSOFF 0x00000020++#define DIGFFS_EMPTY 0x00000001+#define DIGFFS_STOPPED 0x00000002+#define DIGFFS_PAUSED 0x00000004+#define DIGFFS_ACTUATORSON 0x00000010+#define DIGFFS_ACTUATORSOFF 0x00000020+#define DIGFFS_POWERON 0x00000040+#define DIGFFS_POWEROFF 0x00000080+#define DIGFFS_SAFETYSWITCHON 0x00000100+#define DIGFFS_SAFETYSWITCHOFF 0x00000200+#define DIGFFS_USERFFSWITCHON 0x00000400+#define DIGFFS_USERFFSWITCHOFF 0x00000800+#define DIGFFS_DEVICELOST 0x80000000++/* Effect flags */+#define DIEFT_ALL 0x00000000++#define DIEFT_CONSTANTFORCE 0x00000001+#define DIEFT_RAMPFORCE 0x00000002+#define DIEFT_PERIODIC 0x00000003+#define DIEFT_CONDITION 0x00000004+#define DIEFT_CUSTOMFORCE 0x00000005+#define DIEFT_HARDWARE 0x000000FF+#define DIEFT_FFATTACK 0x00000200+#define DIEFT_FFFADE 0x00000400+#define DIEFT_SATURATION 0x00000800+#define DIEFT_POSNEGCOEFFICIENTS 0x00001000+#define DIEFT_POSNEGSATURATION 0x00002000+#define DIEFT_DEADBAND 0x00004000+#define DIEFT_STARTDELAY 0x00008000+#define DIEFT_GETTYPE(n) LOBYTE(n)++#define DIEFF_OBJECTIDS 0x00000001+#define DIEFF_OBJECTOFFSETS 0x00000002+#define DIEFF_CARTESIAN 0x00000010+#define DIEFF_POLAR 0x00000020+#define DIEFF_SPHERICAL 0x00000040++#define DIEP_DURATION 0x00000001+#define DIEP_SAMPLEPERIOD 0x00000002+#define DIEP_GAIN 0x00000004+#define DIEP_TRIGGERBUTTON 0x00000008+#define DIEP_TRIGGERREPEATINTERVAL 0x00000010+#define DIEP_AXES 0x00000020+#define DIEP_DIRECTION 0x00000040+#define DIEP_ENVELOPE 0x00000080+#define DIEP_TYPESPECIFICPARAMS 0x00000100+#if(DIRECTINPUT_VERSION >= 0x0600)+#define DIEP_STARTDELAY 0x00000200+#define DIEP_ALLPARAMS_DX5 0x000001FF+#define DIEP_ALLPARAMS 0x000003FF+#else+#define DIEP_ALLPARAMS 0x000001FF+#endif /* DIRECTINPUT_VERSION >= 0x0600 */+#define DIEP_START 0x20000000+#define DIEP_NORESTART 0x40000000+#define DIEP_NODOWNLOAD 0x80000000+#define DIEB_NOTRIGGER 0xFFFFFFFF++#define DIES_SOLO 0x00000001+#define DIES_NODOWNLOAD 0x80000000++#define DIEGES_PLAYING 0x00000001+#define DIEGES_EMULATED 0x00000002++#define DI_DEGREES 100+#define DI_FFNOMINALMAX 10000+#define DI_SECONDS 1000000++typedef struct DICONSTANTFORCE {+ LONG lMagnitude;+} DICONSTANTFORCE, *LPDICONSTANTFORCE;+typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE;++typedef struct DIRAMPFORCE {+ LONG lStart;+ LONG lEnd;+} DIRAMPFORCE, *LPDIRAMPFORCE;+typedef const DIRAMPFORCE *LPCDIRAMPFORCE;++typedef struct DIPERIODIC {+ DWORD dwMagnitude;+ LONG lOffset;+ DWORD dwPhase;+ DWORD dwPeriod;+} DIPERIODIC, *LPDIPERIODIC;+typedef const DIPERIODIC *LPCDIPERIODIC;++typedef struct DICONDITION {+ LONG lOffset;+ LONG lPositiveCoefficient;+ LONG lNegativeCoefficient;+ DWORD dwPositiveSaturation;+ DWORD dwNegativeSaturation;+ LONG lDeadBand;+} DICONDITION, *LPDICONDITION;+typedef const DICONDITION *LPCDICONDITION;++typedef struct DICUSTOMFORCE {+ DWORD cChannels;+ DWORD dwSamplePeriod;+ DWORD cSamples;+ LPLONG rglForceData;+} DICUSTOMFORCE, *LPDICUSTOMFORCE;+typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE;++typedef struct DIENVELOPE {+ DWORD dwSize;+ DWORD dwAttackLevel;+ DWORD dwAttackTime;+ DWORD dwFadeLevel;+ DWORD dwFadeTime;+} DIENVELOPE, *LPDIENVELOPE;+typedef const DIENVELOPE *LPCDIENVELOPE;++typedef struct DIEFFECT_DX5 {+ DWORD dwSize;+ DWORD dwFlags;+ DWORD dwDuration;+ DWORD dwSamplePeriod;+ DWORD dwGain;+ DWORD dwTriggerButton;+ DWORD dwTriggerRepeatInterval;+ DWORD cAxes;+ LPDWORD rgdwAxes;+ LPLONG rglDirection;+ LPDIENVELOPE lpEnvelope;+ DWORD cbTypeSpecificParams;+ LPVOID lpvTypeSpecificParams;+} DIEFFECT_DX5, *LPDIEFFECT_DX5;+typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5;++typedef struct DIEFFECT {+ DWORD dwSize;+ DWORD dwFlags;+ DWORD dwDuration;+ DWORD dwSamplePeriod;+ DWORD dwGain;+ DWORD dwTriggerButton;+ DWORD dwTriggerRepeatInterval;+ DWORD cAxes;+ LPDWORD rgdwAxes;+ LPLONG rglDirection;+ LPDIENVELOPE lpEnvelope;+ DWORD cbTypeSpecificParams;+ LPVOID lpvTypeSpecificParams;+#if(DIRECTINPUT_VERSION >= 0x0600)+ DWORD dwStartDelay;+#endif /* DIRECTINPUT_VERSION >= 0x0600 */+} DIEFFECT, *LPDIEFFECT;+typedef const DIEFFECT *LPCDIEFFECT;+typedef DIEFFECT DIEFFECT_DX6;+typedef LPDIEFFECT LPDIEFFECT_DX6;++typedef struct DIEFFECTINFOA {+ DWORD dwSize;+ GUID guid;+ DWORD dwEffType;+ DWORD dwStaticParams;+ DWORD dwDynamicParams;+ CHAR tszName[MAX_PATH];+} DIEFFECTINFOA, *LPDIEFFECTINFOA;+typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA;++typedef struct DIEFFECTINFOW {+ DWORD dwSize;+ GUID guid;+ DWORD dwEffType;+ DWORD dwStaticParams;+ DWORD dwDynamicParams;+ WCHAR tszName[MAX_PATH];+} DIEFFECTINFOW, *LPDIEFFECTINFOW;+typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW;++DECL_WINELIB_TYPE_AW(DIEFFECTINFO)+DECL_WINELIB_TYPE_AW(LPDIEFFECTINFO)+DECL_WINELIB_TYPE_AW(LPCDIEFFECTINFO)++typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID);+typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID);++typedef struct DIEFFESCAPE {+ DWORD dwSize;+ DWORD dwCommand;+ LPVOID lpvInBuffer;+ DWORD cbInBuffer;+ LPVOID lpvOutBuffer;+ DWORD cbOutBuffer;+} DIEFFESCAPE, *LPDIEFFESCAPE;++typedef struct DIJOYSTATE {+ LONG lX;+ LONG lY;+ LONG lZ;+ LONG lRx;+ LONG lRy;+ LONG lRz;+ LONG rglSlider[2];+ DWORD rgdwPOV[4];+ BYTE rgbButtons[32];+} DIJOYSTATE, *LPDIJOYSTATE;++typedef struct DIJOYSTATE2 {+ LONG lX;+ LONG lY;+ LONG lZ;+ LONG lRx;+ LONG lRy;+ LONG lRz;+ LONG rglSlider[2];+ DWORD rgdwPOV[4];+ BYTE rgbButtons[128];+ LONG lVX; /* 'v' as in velocity */+ LONG lVY;+ LONG lVZ;+ LONG lVRx;+ LONG lVRy;+ LONG lVRz;+ LONG rglVSlider[2];+ LONG lAX; /* 'a' as in acceleration */+ LONG lAY;+ LONG lAZ;+ LONG lARx;+ LONG lARy;+ LONG lARz;+ LONG rglASlider[2];+ LONG lFX; /* 'f' as in force */+ LONG lFY;+ LONG lFZ;+ LONG lFRx; /* 'fr' as in rotational force aka torque */+ LONG lFRy;+ LONG lFRz;+ LONG rglFSlider[2];+} DIJOYSTATE2, *LPDIJOYSTATE2;++#define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX)+#define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY)+#define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ)+#define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx)+#define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy)+#define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz)+#define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \+ (n) * sizeof(LONG))+#define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \+ (n) * sizeof(DWORD))+#define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))+#define DIJOFS_BUTTON0 DIJOFS_BUTTON(0)+#define DIJOFS_BUTTON1 DIJOFS_BUTTON(1)+#define DIJOFS_BUTTON2 DIJOFS_BUTTON(2)+#define DIJOFS_BUTTON3 DIJOFS_BUTTON(3)+#define DIJOFS_BUTTON4 DIJOFS_BUTTON(4)+#define DIJOFS_BUTTON5 DIJOFS_BUTTON(5)+#define DIJOFS_BUTTON6 DIJOFS_BUTTON(6)+#define DIJOFS_BUTTON7 DIJOFS_BUTTON(7)+#define DIJOFS_BUTTON8 DIJOFS_BUTTON(8)+#define DIJOFS_BUTTON9 DIJOFS_BUTTON(9)+#define DIJOFS_BUTTON10 DIJOFS_BUTTON(10)+#define DIJOFS_BUTTON11 DIJOFS_BUTTON(11)+#define DIJOFS_BUTTON12 DIJOFS_BUTTON(12)+#define DIJOFS_BUTTON13 DIJOFS_BUTTON(13)+#define DIJOFS_BUTTON14 DIJOFS_BUTTON(14)+#define DIJOFS_BUTTON15 DIJOFS_BUTTON(15)+#define DIJOFS_BUTTON16 DIJOFS_BUTTON(16)+#define DIJOFS_BUTTON17 DIJOFS_BUTTON(17)+#define DIJOFS_BUTTON18 DIJOFS_BUTTON(18)+#define DIJOFS_BUTTON19 DIJOFS_BUTTON(19)+#define DIJOFS_BUTTON20 DIJOFS_BUTTON(20)+#define DIJOFS_BUTTON21 DIJOFS_BUTTON(21)+#define DIJOFS_BUTTON22 DIJOFS_BUTTON(22)+#define DIJOFS_BUTTON23 DIJOFS_BUTTON(23)+#define DIJOFS_BUTTON24 DIJOFS_BUTTON(24)+#define DIJOFS_BUTTON25 DIJOFS_BUTTON(25)+#define DIJOFS_BUTTON26 DIJOFS_BUTTON(26)+#define DIJOFS_BUTTON27 DIJOFS_BUTTON(27)+#define DIJOFS_BUTTON28 DIJOFS_BUTTON(28)+#define DIJOFS_BUTTON29 DIJOFS_BUTTON(29)+#define DIJOFS_BUTTON30 DIJOFS_BUTTON(30)+#define DIJOFS_BUTTON31 DIJOFS_BUTTON(31)+#endif /* DIRECTINPUT_VERSION >= 0x0500 */++/* DInput 7 structures, types */+#if(DIRECTINPUT_VERSION >= 0x0700)+typedef struct DIFILEEFFECT {+ DWORD dwSize;+ GUID GuidEffect;+ LPCDIEFFECT lpDiEffect;+ CHAR szFriendlyName[MAX_PATH];+} DIFILEEFFECT, *LPDIFILEEFFECT;++typedef const DIFILEEFFECT *LPCDIFILEEFFECT;+typedef BOOL (CALLBACK *LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID);+#endif /* DIRECTINPUT_VERSION >= 0x0700 */++/* DInput 8 structures and types */+#if DIRECTINPUT_VERSION >= 0x0800+typedef struct _DIACTIONA {+ UINT_PTR uAppData;+ DWORD dwSemantic;+ DWORD dwFlags;+ __GNU_EXTENSION union {+ LPCSTR lptszActionName;+ UINT uResIdString;+ } DUMMYUNIONNAME;+ GUID guidInstance;+ DWORD dwObjID;+ DWORD dwHow;+} DIACTIONA, *LPDIACTIONA;+typedef const DIACTIONA *LPCDIACTIONA;++typedef struct _DIACTIONW {+ UINT_PTR uAppData;+ DWORD dwSemantic;+ DWORD dwFlags;+ __GNU_EXTENSION union {+ LPCWSTR lptszActionName;+ UINT uResIdString;+ } DUMMYUNIONNAME;+ GUID guidInstance;+ DWORD dwObjID;+ DWORD dwHow;+} DIACTIONW, *LPDIACTIONW;+typedef const DIACTIONW *LPCDIACTIONW;++DECL_WINELIB_TYPE_AW(DIACTION)+DECL_WINELIB_TYPE_AW(LPDIACTION)+DECL_WINELIB_TYPE_AW(LPCDIACTION)++#define DIA_FORCEFEEDBACK 0x00000001+#define DIA_APPMAPPED 0x00000002+#define DIA_APPNOMAP 0x00000004+#define DIA_NORANGE 0x00000008+#define DIA_APPFIXED 0x00000010++#define DIAH_UNMAPPED 0x00000000+#define DIAH_USERCONFIG 0x00000001+#define DIAH_APPREQUESTED 0x00000002+#define DIAH_HWAPP 0x00000004+#define DIAH_HWDEFAULT 0x00000008+#define DIAH_DEFAULT 0x00000020+#define DIAH_ERROR 0x80000000++typedef struct _DIACTIONFORMATA {+ DWORD dwSize;+ DWORD dwActionSize;+ DWORD dwDataSize;+ DWORD dwNumActions;+ LPDIACTIONA rgoAction;+ GUID guidActionMap;+ DWORD dwGenre;+ DWORD dwBufferSize;+ LONG lAxisMin;+ LONG lAxisMax;+ HINSTANCE hInstString;+ FILETIME ftTimeStamp;+ DWORD dwCRC;+ CHAR tszActionMap[MAX_PATH];+} DIACTIONFORMATA, *LPDIACTIONFORMATA;+typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA;++typedef struct _DIACTIONFORMATW {+ DWORD dwSize;+ DWORD dwActionSize;+ DWORD dwDataSize;+ DWORD dwNumActions;+ LPDIACTIONW rgoAction;+ GUID guidActionMap;+ DWORD dwGenre;+ DWORD dwBufferSize;+ LONG lAxisMin;+ LONG lAxisMax;+ HINSTANCE hInstString;+ FILETIME ftTimeStamp;+ DWORD dwCRC;+ WCHAR tszActionMap[MAX_PATH];+} DIACTIONFORMATW, *LPDIACTIONFORMATW;+typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW;++DECL_WINELIB_TYPE_AW(DIACTIONFORMAT)+DECL_WINELIB_TYPE_AW(LPDIACTIONFORMAT)+DECL_WINELIB_TYPE_AW(LPCDIACTIONFORMAT)++#define DIAFTS_NEWDEVICELOW 0xFFFFFFFF+#define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF+#define DIAFTS_UNUSEDDEVICELOW 0x00000000+#define DIAFTS_UNUSEDDEVICEHIGH 0x00000000++#define DIDBAM_DEFAULT 0x00000000+#define DIDBAM_PRESERVE 0x00000001+#define DIDBAM_INITIALIZE 0x00000002+#define DIDBAM_HWDEFAULTS 0x00000004++#define DIDSAM_DEFAULT 0x00000000+#define DIDSAM_NOUSER 0x00000001+#define DIDSAM_FORCESAVE 0x00000002++#define DICD_DEFAULT 0x00000000+#define DICD_EDIT 0x00000001++#ifndef D3DCOLOR_DEFINED+typedef DWORD D3DCOLOR;+#define D3DCOLOR_DEFINED+#endif++typedef struct _DICOLORSET {+ DWORD dwSize;+ D3DCOLOR cTextFore;+ D3DCOLOR cTextHighlight;+ D3DCOLOR cCalloutLine;+ D3DCOLOR cCalloutHighlight;+ D3DCOLOR cBorder;+ D3DCOLOR cControlFill;+ D3DCOLOR cHighlightFill;+ D3DCOLOR cAreaFill;+} DICOLORSET, *LPDICOLORSET;+typedef const DICOLORSET *LPCDICOLORSET;++typedef struct _DICONFIGUREDEVICESPARAMSA {+ DWORD dwSize;+ DWORD dwcUsers;+ LPSTR lptszUserNames;+ DWORD dwcFormats;+ LPDIACTIONFORMATA lprgFormats;+ HWND hwnd;+ DICOLORSET dics;+ LPUNKNOWN lpUnkDDSTarget;+} DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA;+typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA;++typedef struct _DICONFIGUREDEVICESPARAMSW {+ DWORD dwSize;+ DWORD dwcUsers;+ LPWSTR lptszUserNames;+ DWORD dwcFormats;+ LPDIACTIONFORMATW lprgFormats;+ HWND hwnd;+ DICOLORSET dics;+ LPUNKNOWN lpUnkDDSTarget;+} DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW;+typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW;++DECL_WINELIB_TYPE_AW(DICONFIGUREDEVICESPARAMS)+DECL_WINELIB_TYPE_AW(LPDICONFIGUREDEVICESPARAMS)+DECL_WINELIB_TYPE_AW(LPCDICONFIGUREDEVICESPARAMS)++#define DIDIFT_CONFIGURATION 0x00000001+#define DIDIFT_OVERLAY 0x00000002++#define DIDAL_CENTERED 0x00000000+#define DIDAL_LEFTALIGNED 0x00000001+#define DIDAL_RIGHTALIGNED 0x00000002+#define DIDAL_MIDDLE 0x00000000+#define DIDAL_TOPALIGNED 0x00000004+#define DIDAL_BOTTOMALIGNED 0x00000008++typedef struct _DIDEVICEIMAGEINFOA {+ CHAR tszImagePath[MAX_PATH];+ DWORD dwFlags;+ DWORD dwViewID;+ RECT rcOverlay;+ DWORD dwObjID;+ DWORD dwcValidPts;+ POINT rgptCalloutLine[5];+ RECT rcCalloutRect;+ DWORD dwTextAlign;+} DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA;+typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA;++typedef struct _DIDEVICEIMAGEINFOW {+ WCHAR tszImagePath[MAX_PATH];+ DWORD dwFlags;+ DWORD dwViewID;+ RECT rcOverlay;+ DWORD dwObjID;+ DWORD dwcValidPts;+ POINT rgptCalloutLine[5];+ RECT rcCalloutRect;+ DWORD dwTextAlign;+} DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW;+typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW;++DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFO)+DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFO)+DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFO)++typedef struct _DIDEVICEIMAGEINFOHEADERA {+ DWORD dwSize;+ DWORD dwSizeImageInfo;+ DWORD dwcViews;+ DWORD dwcButtons;+ DWORD dwcAxes;+ DWORD dwcPOVs;+ DWORD dwBufferSize;+ DWORD dwBufferUsed;+ LPDIDEVICEIMAGEINFOA lprgImageInfoArray;+} DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA;+typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA;++typedef struct _DIDEVICEIMAGEINFOHEADERW {+ DWORD dwSize;+ DWORD dwSizeImageInfo;+ DWORD dwcViews;+ DWORD dwcButtons;+ DWORD dwcAxes;+ DWORD dwcPOVs;+ DWORD dwBufferSize;+ DWORD dwBufferUsed;+ LPDIDEVICEIMAGEINFOW lprgImageInfoArray;+} DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW;+typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW;++DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFOHEADER)+DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFOHEADER)+DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFOHEADER)++#endif /* DI8 */+++/*****************************************************************************+ * IDirectInputEffect interface+ */+#if (DIRECTINPUT_VERSION >= 0x0500)+#undef INTERFACE+#define INTERFACE IDirectInputEffect+DECLARE_INTERFACE_(IDirectInputEffect,IUnknown)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputEffect methods ***/+ STDMETHOD(Initialize)(THIS_ HINSTANCE, DWORD, REFGUID) PURE;+ STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE;+ STDMETHOD(GetParameters)(THIS_ LPDIEFFECT, DWORD) PURE;+ STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT, DWORD) PURE;+ STDMETHOD(Start)(THIS_ DWORD, DWORD) PURE;+ STDMETHOD(Stop)(THIS) PURE;+ STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE;+ STDMETHOD(Download)(THIS) PURE;+ STDMETHOD(Unload)(THIS) PURE;+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;+};++#if !defined(__cplusplus) || defined(CINTERFACE)+/*** IUnknown methods ***/+#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)+#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p)+#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p)+/*** IDirectInputEffect methods ***/+#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)+#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a)+#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b)+#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b)+#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b)+#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p)+#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a)+#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p)+#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p)+#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a)+#else+/*** IUnknown methods ***/+#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b)+#define IDirectInputEffect_AddRef(p) (p)->AddRef()+#define IDirectInputEffect_Release(p) (p)->Release()+/*** IDirectInputEffect methods ***/+#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c)+#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a)+#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b)+#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b)+#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b)+#define IDirectInputEffect_Stop(p) (p)->Stop()+#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a)+#define IDirectInputEffect_Download(p) (p)->Download()+#define IDirectInputEffect_Unload(p) (p)->Unload()+#define IDirectInputEffect_Escape(p,a) (p)->Escape(a)+#endif++#endif /* DI5 */+++/*****************************************************************************+ * IDirectInputDeviceA interface+ */+#undef INTERFACE+#define INTERFACE IDirectInputDeviceA+DECLARE_INTERFACE_(IDirectInputDeviceA,IUnknown)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputDeviceA methods ***/+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;+ STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;+ STDMETHOD(Acquire)(THIS) PURE;+ STDMETHOD(Unacquire)(THIS) PURE;+ STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;+ STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;+ STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;+};++/*****************************************************************************+ * IDirectInputDeviceW interface+ */+#undef INTERFACE+#define INTERFACE IDirectInputDeviceW+DECLARE_INTERFACE_(IDirectInputDeviceW,IUnknown)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputDeviceW methods ***/+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;+ STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;+ STDMETHOD(Acquire)(THIS) PURE;+ STDMETHOD(Unacquire)(THIS) PURE;+ STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;+ STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;+ STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;+};++#if !defined(__cplusplus) || defined(CINTERFACE)+/*** IUnknown methods ***/+#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)+#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p)+#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p)+/*** IDirectInputDevice methods ***/+#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)+#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)+#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)+#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)+#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p)+#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p)+#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)+#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)+#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)+#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)+#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)+#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)+#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)+#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)+#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)+#else+/*** IUnknown methods ***/+#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)+#define IDirectInputDevice_AddRef(p) (p)->AddRef()+#define IDirectInputDevice_Release(p) (p)->Release()+/*** IDirectInputDevice methods ***/+#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a)+#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)+#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b)+#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b)+#define IDirectInputDevice_Acquire(p) (p)->Acquire()+#define IDirectInputDevice_Unacquire(p) (p)->Unacquire()+#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)+#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)+#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a)+#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a)+#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)+#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)+#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)+#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)+#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c)+#endif+++#if (DIRECTINPUT_VERSION >= 0x0500)+/*****************************************************************************+ * IDirectInputDevice2A interface+ */+#undef INTERFACE+#define INTERFACE IDirectInputDevice2A+DECLARE_INTERFACE_(IDirectInputDevice2A,IDirectInputDeviceA)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputDeviceA methods ***/+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;+ STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;+ STDMETHOD(Acquire)(THIS) PURE;+ STDMETHOD(Unacquire)(THIS) PURE;+ STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;+ STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;+ STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;+ /*** IDirectInputDevice2A methods ***/+ STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE;+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;+ STDMETHOD(Poll)(THIS) PURE;+ STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;+};++/*****************************************************************************+ * IDirectInputDevice2W interface+ */+#undef INTERFACE+#define INTERFACE IDirectInputDevice2W+DECLARE_INTERFACE_(IDirectInputDevice2W,IDirectInputDeviceW)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputDeviceW methods ***/+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;+ STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;+ STDMETHOD(Acquire)(THIS) PURE;+ STDMETHOD(Unacquire)(THIS) PURE;+ STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;+ STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;+ STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;+ /*** IDirectInputDevice2W methods ***/+ STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE;+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;+ STDMETHOD(Poll)(THIS) PURE;+ STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;+};++#if !defined(__cplusplus) || defined(CINTERFACE)+/*** IUnknown methods ***/+#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)+#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p)+#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p)+/*** IDirectInputDevice methods ***/+#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)+#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)+#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)+#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)+#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p)+#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p)+#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)+#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)+#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)+#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)+#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)+#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)+#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)+#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)+#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)+/*** IDirectInputDevice2 methods ***/+#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)+#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)+#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)+#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)+#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)+#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)+#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a)+#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p)+#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)+#else+/*** IUnknown methods ***/+#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)+#define IDirectInputDevice2_AddRef(p) (p)->AddRef()+#define IDirectInputDevice2_Release(p) (p)->Release()+/*** IDirectInputDevice methods ***/+#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a)+#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)+#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b)+#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b)+#define IDirectInputDevice2_Acquire(p) (p)->Acquire()+#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire()+#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)+#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)+#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a)+#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a)+#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)+#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)+#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)+#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)+#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c)+/*** IDirectInputDevice2 methods ***/+#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)+#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)+#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)+#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)+#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)+#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)+#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a)+#define IDirectInputDevice2_Poll(p) (p)->Poll()+#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)+#endif+#endif /* DI5 */++#if DIRECTINPUT_VERSION >= 0x0700+/*****************************************************************************+ * IDirectInputDevice7A interface+ */+#undef INTERFACE+#define INTERFACE IDirectInputDevice7A+DECLARE_INTERFACE_(IDirectInputDevice7A,IDirectInputDevice2A)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputDeviceA methods ***/+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;+ STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;+ STDMETHOD(Acquire)(THIS) PURE;+ STDMETHOD(Unacquire)(THIS) PURE;+ STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;+ STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;+ STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;+ /*** IDirectInputDevice2A methods ***/+ STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE;+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;+ STDMETHOD(Poll)(THIS) PURE;+ STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;+ /*** IDirectInputDevice7A methods ***/+ STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;+ STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;+};++/*****************************************************************************+ * IDirectInputDevice7W interface+ */+#undef INTERFACE+#define INTERFACE IDirectInputDevice7W+DECLARE_INTERFACE_(IDirectInputDevice7W,IDirectInputDevice2W)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputDeviceW methods ***/+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;+ STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;+ STDMETHOD(Acquire)(THIS) PURE;+ STDMETHOD(Unacquire)(THIS) PURE;+ STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;+ STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;+ STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;+ /*** IDirectInputDevice2W methods ***/+ STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE;+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;+ STDMETHOD(Poll)(THIS) PURE;+ STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;+ /*** IDirectInputDevice7W methods ***/+ STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;+ STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;+};++#if !defined(__cplusplus) || defined(CINTERFACE)+/*** IUnknown methods ***/+#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)+#define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p)+#define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p)+/*** IDirectInputDevice methods ***/+#define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)+#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)+#define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)+#define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)+#define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p)+#define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p)+#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)+#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)+#define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)+#define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)+#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)+#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)+#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)+#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)+#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)+/*** IDirectInputDevice2 methods ***/+#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)+#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)+#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)+#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)+#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)+#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)+#define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a)+#define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p)+#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)+/*** IDirectInputDevice7 methods ***/+#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d)+#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d)+#else+/*** IUnknown methods ***/+#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)+#define IDirectInputDevice7_AddRef(p) (p)->AddRef()+#define IDirectInputDevice7_Release(p) (p)->Release()+/*** IDirectInputDevice methods ***/+#define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a)+#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)+#define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b)+#define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b)+#define IDirectInputDevice7_Acquire(p) (p)->Acquire()+#define IDirectInputDevice7_Unacquire(p) (p)->Unacquire()+#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)+#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)+#define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a)+#define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a)+#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)+#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)+#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)+#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)+#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c)+/*** IDirectInputDevice2 methods ***/+#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)+#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)+#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)+#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)+#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)+#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)+#define IDirectInputDevice7_Escape(p,a) (p)->Escape(a)+#define IDirectInputDevice7_Poll(p) (p)->Poll()+#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)+/*** IDirectInputDevice7 methods ***/+#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d)+#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d)+#endif++#endif /* DI7 */++#if DIRECTINPUT_VERSION >= 0x0800+/*****************************************************************************+ * IDirectInputDevice8A interface+ */+#undef INTERFACE+#define INTERFACE IDirectInputDevice8A+DECLARE_INTERFACE_(IDirectInputDevice8A,IDirectInputDevice7A)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputDeviceA methods ***/+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;+ STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;+ STDMETHOD(Acquire)(THIS) PURE;+ STDMETHOD(Unacquire)(THIS) PURE;+ STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;+ STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;+ STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE;+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;+ /*** IDirectInputDevice2A methods ***/+ STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE;+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;+ STDMETHOD(Poll)(THIS) PURE;+ STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;+ /*** IDirectInputDevice7A methods ***/+ STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;+ STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;+ /*** IDirectInputDevice8A methods ***/+ STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE;+ STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE;+ STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA lpdiDevImageInfoHeader) PURE;+};++/*****************************************************************************+ * IDirectInputDevice8W interface+ */+#undef INTERFACE+#define INTERFACE IDirectInputDevice8W+DECLARE_INTERFACE_(IDirectInputDevice8W,IDirectInputDevice7W)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputDeviceW methods ***/+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE;+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE;+ STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE;+ STDMETHOD(Acquire)(THIS) PURE;+ STDMETHOD(Unacquire)(THIS) PURE;+ STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE;+ STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE;+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE;+ STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE;+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE;+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE;+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE;+ /*** IDirectInputDevice2W methods ***/+ STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE;+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE;+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE;+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE;+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE;+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE;+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE;+ STDMETHOD(Poll)(THIS) PURE;+ STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE;+ /*** IDirectInputDevice7W methods ***/+ STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE;+ STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE;+ /*** IDirectInputDevice8W methods ***/+ STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE;+ STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE;+ STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW lpdiDevImageInfoHeader) PURE;+};++#if !defined(__cplusplus) || defined(CINTERFACE)+/*** IUnknown methods ***/+#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)+#define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p)+#define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p)+/*** IDirectInputDevice methods ***/+#define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)+#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)+#define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)+#define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)+#define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p)+#define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p)+#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)+#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)+#define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)+#define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)+#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)+#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)+#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)+#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)+#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)+/*** IDirectInputDevice2 methods ***/+#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)+#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)+#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)+#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)+#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)+#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)+#define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a)+#define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p)+#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)+/*** IDirectInputDevice7 methods ***/+#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d)+#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d)+/*** IDirectInputDevice8 methods ***/+#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c)+#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c)+#define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a)+#else+/*** IUnknown methods ***/+#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)+#define IDirectInputDevice8_AddRef(p) (p)->AddRef()+#define IDirectInputDevice8_Release(p) (p)->Release()+/*** IDirectInputDevice methods ***/+#define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a)+#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)+#define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b)+#define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b)+#define IDirectInputDevice8_Acquire(p) (p)->Acquire()+#define IDirectInputDevice8_Unacquire(p) (p)->Unacquire()+#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)+#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)+#define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a)+#define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a)+#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)+#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)+#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)+#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)+#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c)+/*** IDirectInputDevice2 methods ***/+#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)+#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)+#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)+#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)+#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)+#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)+#define IDirectInputDevice8_Escape(p,a) (p)->Escape(a)+#define IDirectInputDevice8_Poll(p) (p)->Poll()+#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)+/*** IDirectInputDevice7 methods ***/+#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d)+#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d)+/*** IDirectInputDevice8 methods ***/+#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c)+#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c)+#define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a)+#endif++#endif /* DI8 */++/* "Standard" Mouse report... */+typedef struct DIMOUSESTATE {+ LONG lX;+ LONG lY;+ LONG lZ;+ BYTE rgbButtons[4];+} DIMOUSESTATE;++#if DIRECTINPUT_VERSION >= 0x0700+/* "Standard" Mouse report for DInput 7... */+typedef struct DIMOUSESTATE2 {+ LONG lX;+ LONG lY;+ LONG lZ;+ BYTE rgbButtons[8];+} DIMOUSESTATE2;+#endif /* DI7 */++#define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX)+#define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY)+#define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ)+#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0)+#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1)+#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2)+#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3)+#if DIRECTINPUT_VERSION >= 0x0700+#define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4)+#define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5)+#define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6)+#define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7)+#endif /* DI7 */++#ifdef __cplusplus+extern "C" {+#endif+extern const DIDATAFORMAT c_dfDIMouse;+#if DIRECTINPUT_VERSION >= 0x0700+extern const DIDATAFORMAT c_dfDIMouse2; /* DX 7 */+#endif /* DI7 */+extern const DIDATAFORMAT c_dfDIKeyboard;+#if DIRECTINPUT_VERSION >= 0x0500+extern const DIDATAFORMAT c_dfDIJoystick;+extern const DIDATAFORMAT c_dfDIJoystick2;+#endif /* DI5 */+#ifdef __cplusplus+};+#endif++/*****************************************************************************+ * IDirectInputA interface+ */+#undef INTERFACE+#define INTERFACE IDirectInputA+DECLARE_INTERFACE_(IDirectInputA,IUnknown)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputA methods ***/+ STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;+ STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;+};++/*****************************************************************************+ * IDirectInputW interface+ */+#undef INTERFACE+#define INTERFACE IDirectInputW+DECLARE_INTERFACE_(IDirectInputW,IUnknown)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputW methods ***/+ STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;+ STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;+};++#if !defined(__cplusplus) || defined(CINTERFACE)+/*** IUnknown methods ***/+#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)+#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p)+#define IDirectInput_Release(p) (p)->lpVtbl->Release(p)+/*** IDirectInput methods ***/+#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)+#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)+#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)+#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)+#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)+#else+/*** IUnknown methods ***/+#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b)+#define IDirectInput_AddRef(p) (p)->AddRef()+#define IDirectInput_Release(p) (p)->Release()+/*** IDirectInput methods ***/+#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)+#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)+#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)+#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)+#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b)+#endif++/*****************************************************************************+ * IDirectInput2A interface+ */+#undef INTERFACE+#define INTERFACE IDirectInput2A+DECLARE_INTERFACE_(IDirectInput2A,IDirectInputA)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputA methods ***/+ STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;+ STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;+ /*** IDirectInput2A methods ***/+ STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE;+};++/*****************************************************************************+ * IDirectInput2W interface+ */+#undef INTERFACE+#define INTERFACE IDirectInput2W+DECLARE_INTERFACE_(IDirectInput2W,IDirectInputW)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputW methods ***/+ STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;+ STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;+ /*** IDirectInput2W methods ***/+ STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE;+};++#if !defined(__cplusplus) || defined(CINTERFACE)+/*** IUnknown methods ***/+#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)+#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p)+#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p)+/*** IDirectInput methods ***/+#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)+#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)+#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)+#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)+#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)+/*** IDirectInput2 methods ***/+#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)+#else+/*** IUnknown methods ***/+#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)+#define IDirectInput2_AddRef(p) (p)->AddRef()+#define IDirectInput2_Release(p) (p)->Release()+/*** IDirectInput methods ***/+#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)+#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)+#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)+#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)+#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b)+/*** IDirectInput2 methods ***/+#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)+#endif++/*****************************************************************************+ * IDirectInput7A interface+ */+#undef INTERFACE+#define INTERFACE IDirectInput7A+DECLARE_INTERFACE_(IDirectInput7A,IDirectInput2A)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputA methods ***/+ STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;+ STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;+ /*** IDirectInput2A methods ***/+ STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE;+ /*** IDirectInput7A methods ***/+ STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE;+};++/*****************************************************************************+ * IDirectInput7W interface+ */+#undef INTERFACE+#define INTERFACE IDirectInput7W+DECLARE_INTERFACE_(IDirectInput7W,IDirectInput2W)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInputW methods ***/+ STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;+ STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;+ /*** IDirectInput2W methods ***/+ STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE;+ /*** IDirectInput7W methods ***/+ STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE;+};++#if !defined(__cplusplus) || defined(CINTERFACE)+/*** IUnknown methods ***/+#define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)+#define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p)+#define IDirectInput7_Release(p) (p)->lpVtbl->Release(p)+/*** IDirectInput methods ***/+#define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)+#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)+#define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)+#define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)+#define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)+/*** IDirectInput2 methods ***/+#define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)+/*** IDirectInput7 methods ***/+#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d)+#else+/*** IUnknown methods ***/+#define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)+#define IDirectInput7_AddRef(p) (p)->AddRef()+#define IDirectInput7_Release(p) (p)->Release()+/*** IDirectInput methods ***/+#define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)+#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)+#define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)+#define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)+#define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b)+/*** IDirectInput2 methods ***/+#define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)+/*** IDirectInput7 methods ***/+#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d)+#endif+++#if DIRECTINPUT_VERSION >= 0x0800+/*****************************************************************************+ * IDirectInput8A interface+ */+#undef INTERFACE+#define INTERFACE IDirectInput8A+DECLARE_INTERFACE_(IDirectInput8A,IUnknown)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInput8A methods ***/+ STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8A *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;+ STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;+ STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE;+ STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR ptszUserName, LPDIACTIONFORMATA lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSA lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE;+};++/*****************************************************************************+ * IDirectInput8W interface+ */+#undef INTERFACE+#define INTERFACE IDirectInput8W+DECLARE_INTERFACE_(IDirectInput8W,IUnknown)+{+ /*** IUnknown methods ***/+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;+ STDMETHOD_(ULONG,Release)(THIS) PURE;+ /*** IDirectInput8W methods ***/+ STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8W *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE;+ STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE;+ STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE;+ STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE;+ STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE;+ STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR ptszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE;+ STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE;+};+#undef INTERFACE++#if !defined(__cplusplus) || defined(CINTERFACE)+/*** IUnknown methods ***/+#define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)+#define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p)+#define IDirectInput8_Release(p) (p)->lpVtbl->Release(p)+/*** IDirectInput8 methods ***/+#define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)+#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)+#define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)+#define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)+#define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)+#define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)+#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e)+#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d)+#else+/*** IUnknown methods ***/+#define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)+#define IDirectInput8_AddRef(p) (p)->AddRef()+#define IDirectInput8_Release(p) (p)->Release()+/*** IDirectInput8 methods ***/+#define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)+#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)+#define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)+#define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)+#define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b)+#define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)+#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e)+#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d)+#endif++#endif /* DI8 */++/* Export functions */++#ifdef __cplusplus+extern "C" {+#endif++#if DIRECTINPUT_VERSION >= 0x0800+HRESULT WINAPI DirectInput8Create(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN);+#else /* DI < 8 */+HRESULT WINAPI DirectInputCreateA(HINSTANCE,DWORD,LPDIRECTINPUTA *,LPUNKNOWN);+HRESULT WINAPI DirectInputCreateW(HINSTANCE,DWORD,LPDIRECTINPUTW *,LPUNKNOWN);+#define DirectInputCreate WINELIB_NAME_AW(DirectInputCreate)++HRESULT WINAPI DirectInputCreateEx(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN);+#endif /* DI8 */++#ifdef __cplusplus+};+#endif++#endif /* __DINPUT_INCLUDED__ */
glfw/deps/mingw/xinput.h view
@@ -1,239 +1,239 @@-/* - * The Wine project - Xinput Joystick Library - * Copyright 2008 Andrew Fenn - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#ifndef __WINE_XINPUT_H -#define __WINE_XINPUT_H - -#include <windef.h> - -/* - * Bitmasks for the joysticks buttons, determines what has - * been pressed on the joystick, these need to be mapped - * to whatever device you're using instead of an xbox 360 - * joystick - */ - -#define XINPUT_GAMEPAD_DPAD_UP 0x0001 -#define XINPUT_GAMEPAD_DPAD_DOWN 0x0002 -#define XINPUT_GAMEPAD_DPAD_LEFT 0x0004 -#define XINPUT_GAMEPAD_DPAD_RIGHT 0x0008 -#define XINPUT_GAMEPAD_START 0x0010 -#define XINPUT_GAMEPAD_BACK 0x0020 -#define XINPUT_GAMEPAD_LEFT_THUMB 0x0040 -#define XINPUT_GAMEPAD_RIGHT_THUMB 0x0080 -#define XINPUT_GAMEPAD_LEFT_SHOULDER 0x0100 -#define XINPUT_GAMEPAD_RIGHT_SHOULDER 0x0200 -#define XINPUT_GAMEPAD_A 0x1000 -#define XINPUT_GAMEPAD_B 0x2000 -#define XINPUT_GAMEPAD_X 0x4000 -#define XINPUT_GAMEPAD_Y 0x8000 - -/* - * Defines the flags used to determine if the user is pushing - * down on a button, not holding a button, etc - */ - -#define XINPUT_KEYSTROKE_KEYDOWN 0x0001 -#define XINPUT_KEYSTROKE_KEYUP 0x0002 -#define XINPUT_KEYSTROKE_REPEAT 0x0004 - -/* - * Defines the codes which are returned by XInputGetKeystroke - */ - -#define VK_PAD_A 0x5800 -#define VK_PAD_B 0x5801 -#define VK_PAD_X 0x5802 -#define VK_PAD_Y 0x5803 -#define VK_PAD_RSHOULDER 0x5804 -#define VK_PAD_LSHOULDER 0x5805 -#define VK_PAD_LTRIGGER 0x5806 -#define VK_PAD_RTRIGGER 0x5807 -#define VK_PAD_DPAD_UP 0x5810 -#define VK_PAD_DPAD_DOWN 0x5811 -#define VK_PAD_DPAD_LEFT 0x5812 -#define VK_PAD_DPAD_RIGHT 0x5813 -#define VK_PAD_START 0x5814 -#define VK_PAD_BACK 0x5815 -#define VK_PAD_LTHUMB_PRESS 0x5816 -#define VK_PAD_RTHUMB_PRESS 0x5817 -#define VK_PAD_LTHUMB_UP 0x5820 -#define VK_PAD_LTHUMB_DOWN 0x5821 -#define VK_PAD_LTHUMB_RIGHT 0x5822 -#define VK_PAD_LTHUMB_LEFT 0x5823 -#define VK_PAD_LTHUMB_UPLEFT 0x5824 -#define VK_PAD_LTHUMB_UPRIGHT 0x5825 -#define VK_PAD_LTHUMB_DOWNRIGHT 0x5826 -#define VK_PAD_LTHUMB_DOWNLEFT 0x5827 -#define VK_PAD_RTHUMB_UP 0x5830 -#define VK_PAD_RTHUMB_DOWN 0x5831 -#define VK_PAD_RTHUMB_RIGHT 0x5832 -#define VK_PAD_RTHUMB_LEFT 0x5833 -#define VK_PAD_RTHUMB_UPLEFT 0x5834 -#define VK_PAD_RTHUMB_UPRIGHT 0x5835 -#define VK_PAD_RTHUMB_DOWNRIGHT 0x5836 -#define VK_PAD_RTHUMB_DOWNLEFT 0x5837 - -/* - * Deadzones are for analogue joystick controls on the joypad - * which determine when input should be assumed to be in the - * middle of the pad. This is a threshold to stop a joypad - * controlling the game when the player isn't touching the - * controls. - */ - -#define XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE 7849 -#define XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE 8689 -#define XINPUT_GAMEPAD_TRIGGER_THRESHOLD 30 - - -/* - * Defines what type of abilities the type of joystick has - * DEVTYPE_GAMEPAD is available for all joysticks, however - * there may be more specific identifiers for other joysticks - * which are being used. - */ - -#define XINPUT_DEVTYPE_GAMEPAD 0x01 -#define XINPUT_DEVSUBTYPE_GAMEPAD 0x01 -#define XINPUT_DEVSUBTYPE_WHEEL 0x02 -#define XINPUT_DEVSUBTYPE_ARCADE_STICK 0x03 -#define XINPUT_DEVSUBTYPE_FLIGHT_SICK 0x04 -#define XINPUT_DEVSUBTYPE_DANCE_PAD 0x05 -#define XINPUT_DEVSUBTYPE_GUITAR 0x06 -#define XINPUT_DEVSUBTYPE_DRUM_KIT 0x08 - -/* - * These are used with the XInputGetCapabilities function to - * determine the abilities to the joystick which has been - * plugged in. - */ - -#define XINPUT_CAPS_VOICE_SUPPORTED 0x0004 -#define XINPUT_FLAG_GAMEPAD 0x00000001 - -/* - * Defines the status of the battery if one is used in the - * attached joystick. The first two define if the joystick - * supports a battery. Disconnected means that the joystick - * isn't connected. Wired shows that the joystick is a wired - * joystick. - */ - -#define BATTERY_DEVTYPE_GAMEPAD 0x00 -#define BATTERY_DEVTYPE_HEADSET 0x01 -#define BATTERY_TYPE_DISCONNECTED 0x00 -#define BATTERY_TYPE_WIRED 0x01 -#define BATTERY_TYPE_ALKALINE 0x02 -#define BATTERY_TYPE_NIMH 0x03 -#define BATTERY_TYPE_UNKNOWN 0xFF -#define BATTERY_LEVEL_EMPTY 0x00 -#define BATTERY_LEVEL_LOW 0x01 -#define BATTERY_LEVEL_MEDIUM 0x02 -#define BATTERY_LEVEL_FULL 0x03 - -/* - * How many joysticks can be used with this library. Games that - * use the xinput library will not go over this number. - */ - -#define XUSER_MAX_COUNT 4 -#define XUSER_INDEX_ANY 0x000000FF - -/* - * Defines the structure of an xbox 360 joystick. - */ - -typedef struct _XINPUT_GAMEPAD { - WORD wButtons; - BYTE bLeftTrigger; - BYTE bRightTrigger; - SHORT sThumbLX; - SHORT sThumbLY; - SHORT sThumbRX; - SHORT sThumbRY; -} XINPUT_GAMEPAD, *PXINPUT_GAMEPAD; - -typedef struct _XINPUT_STATE { - DWORD dwPacketNumber; - XINPUT_GAMEPAD Gamepad; -} XINPUT_STATE, *PXINPUT_STATE; - -/* - * Defines the structure of how much vibration is set on both the - * right and left motors in a joystick. If you're not using a 360 - * joystick you will have to map these to your device. - */ - -typedef struct _XINPUT_VIBRATION { - WORD wLeftMotorSpeed; - WORD wRightMotorSpeed; -} XINPUT_VIBRATION, *PXINPUT_VIBRATION; - -/* - * Defines the structure for what kind of abilities the joystick has - * such abilities are things such as if the joystick has the ability - * to send and receive audio, if the joystick is in fact a driving - * wheel or perhaps if the joystick is some kind of dance pad or - * guitar. - */ - -typedef struct _XINPUT_CAPABILITIES { - BYTE Type; - BYTE SubType; - WORD Flags; - XINPUT_GAMEPAD Gamepad; - XINPUT_VIBRATION Vibration; -} XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES; - -/* - * Defines the structure for a joystick input event which is - * retrieved using the function XInputGetKeystroke - */ -typedef struct _XINPUT_KEYSTROKE { - WORD VirtualKey; - WCHAR Unicode; - WORD Flags; - BYTE UserIndex; - BYTE HidCode; -} XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE; - -typedef struct _XINPUT_BATTERY_INFORMATION -{ - BYTE BatteryType; - BYTE BatteryLevel; -} XINPUT_BATTERY_INFORMATION, *PXINPUT_BATTERY_INFORMATION; - -#ifdef __cplusplus -extern "C" { -#endif - -void WINAPI XInputEnable(WINBOOL); -DWORD WINAPI XInputSetState(DWORD, XINPUT_VIBRATION*); -DWORD WINAPI XInputGetState(DWORD, XINPUT_STATE*); -DWORD WINAPI XInputGetKeystroke(DWORD, DWORD, PXINPUT_KEYSTROKE); -DWORD WINAPI XInputGetCapabilities(DWORD, DWORD, XINPUT_CAPABILITIES*); -DWORD WINAPI XInputGetDSoundAudioDeviceGuids(DWORD, GUID*, GUID*); -DWORD WINAPI XInputGetBatteryInformation(DWORD, BYTE, XINPUT_BATTERY_INFORMATION*); - -#ifdef __cplusplus -} -#endif - -#endif /* __WINE_XINPUT_H */ +/*+ * The Wine project - Xinput Joystick Library+ * Copyright 2008 Andrew Fenn+ *+ * This library is free software; you can redistribute it and/or+ * modify it under the terms of the GNU Lesser General Public+ * License as published by the Free Software Foundation; either+ * version 2.1 of the License, or (at your option) any later version.+ *+ * This library is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU+ * Lesser General Public License for more details.+ *+ * You should have received a copy of the GNU Lesser General Public+ * License along with this library; if not, write to the Free Software+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA+ */++#ifndef __WINE_XINPUT_H+#define __WINE_XINPUT_H++#include <windef.h>++/*+ * Bitmasks for the joysticks buttons, determines what has+ * been pressed on the joystick, these need to be mapped+ * to whatever device you're using instead of an xbox 360+ * joystick+ */++#define XINPUT_GAMEPAD_DPAD_UP 0x0001+#define XINPUT_GAMEPAD_DPAD_DOWN 0x0002+#define XINPUT_GAMEPAD_DPAD_LEFT 0x0004+#define XINPUT_GAMEPAD_DPAD_RIGHT 0x0008+#define XINPUT_GAMEPAD_START 0x0010+#define XINPUT_GAMEPAD_BACK 0x0020+#define XINPUT_GAMEPAD_LEFT_THUMB 0x0040+#define XINPUT_GAMEPAD_RIGHT_THUMB 0x0080+#define XINPUT_GAMEPAD_LEFT_SHOULDER 0x0100+#define XINPUT_GAMEPAD_RIGHT_SHOULDER 0x0200+#define XINPUT_GAMEPAD_A 0x1000+#define XINPUT_GAMEPAD_B 0x2000+#define XINPUT_GAMEPAD_X 0x4000+#define XINPUT_GAMEPAD_Y 0x8000++/*+ * Defines the flags used to determine if the user is pushing+ * down on a button, not holding a button, etc+ */++#define XINPUT_KEYSTROKE_KEYDOWN 0x0001+#define XINPUT_KEYSTROKE_KEYUP 0x0002+#define XINPUT_KEYSTROKE_REPEAT 0x0004++/*+ * Defines the codes which are returned by XInputGetKeystroke+ */++#define VK_PAD_A 0x5800+#define VK_PAD_B 0x5801+#define VK_PAD_X 0x5802+#define VK_PAD_Y 0x5803+#define VK_PAD_RSHOULDER 0x5804+#define VK_PAD_LSHOULDER 0x5805+#define VK_PAD_LTRIGGER 0x5806+#define VK_PAD_RTRIGGER 0x5807+#define VK_PAD_DPAD_UP 0x5810+#define VK_PAD_DPAD_DOWN 0x5811+#define VK_PAD_DPAD_LEFT 0x5812+#define VK_PAD_DPAD_RIGHT 0x5813+#define VK_PAD_START 0x5814+#define VK_PAD_BACK 0x5815+#define VK_PAD_LTHUMB_PRESS 0x5816+#define VK_PAD_RTHUMB_PRESS 0x5817+#define VK_PAD_LTHUMB_UP 0x5820+#define VK_PAD_LTHUMB_DOWN 0x5821+#define VK_PAD_LTHUMB_RIGHT 0x5822+#define VK_PAD_LTHUMB_LEFT 0x5823+#define VK_PAD_LTHUMB_UPLEFT 0x5824+#define VK_PAD_LTHUMB_UPRIGHT 0x5825+#define VK_PAD_LTHUMB_DOWNRIGHT 0x5826+#define VK_PAD_LTHUMB_DOWNLEFT 0x5827+#define VK_PAD_RTHUMB_UP 0x5830+#define VK_PAD_RTHUMB_DOWN 0x5831+#define VK_PAD_RTHUMB_RIGHT 0x5832+#define VK_PAD_RTHUMB_LEFT 0x5833+#define VK_PAD_RTHUMB_UPLEFT 0x5834+#define VK_PAD_RTHUMB_UPRIGHT 0x5835+#define VK_PAD_RTHUMB_DOWNRIGHT 0x5836+#define VK_PAD_RTHUMB_DOWNLEFT 0x5837++/*+ * Deadzones are for analogue joystick controls on the joypad+ * which determine when input should be assumed to be in the+ * middle of the pad. This is a threshold to stop a joypad+ * controlling the game when the player isn't touching the+ * controls.+ */++#define XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE 7849+#define XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE 8689+#define XINPUT_GAMEPAD_TRIGGER_THRESHOLD 30+++/*+ * Defines what type of abilities the type of joystick has+ * DEVTYPE_GAMEPAD is available for all joysticks, however+ * there may be more specific identifiers for other joysticks+ * which are being used.+ */++#define XINPUT_DEVTYPE_GAMEPAD 0x01+#define XINPUT_DEVSUBTYPE_GAMEPAD 0x01+#define XINPUT_DEVSUBTYPE_WHEEL 0x02+#define XINPUT_DEVSUBTYPE_ARCADE_STICK 0x03+#define XINPUT_DEVSUBTYPE_FLIGHT_SICK 0x04+#define XINPUT_DEVSUBTYPE_DANCE_PAD 0x05+#define XINPUT_DEVSUBTYPE_GUITAR 0x06+#define XINPUT_DEVSUBTYPE_DRUM_KIT 0x08++/*+ * These are used with the XInputGetCapabilities function to+ * determine the abilities to the joystick which has been+ * plugged in.+ */++#define XINPUT_CAPS_VOICE_SUPPORTED 0x0004+#define XINPUT_FLAG_GAMEPAD 0x00000001++/*+ * Defines the status of the battery if one is used in the+ * attached joystick. The first two define if the joystick+ * supports a battery. Disconnected means that the joystick+ * isn't connected. Wired shows that the joystick is a wired+ * joystick.+ */++#define BATTERY_DEVTYPE_GAMEPAD 0x00+#define BATTERY_DEVTYPE_HEADSET 0x01+#define BATTERY_TYPE_DISCONNECTED 0x00+#define BATTERY_TYPE_WIRED 0x01+#define BATTERY_TYPE_ALKALINE 0x02+#define BATTERY_TYPE_NIMH 0x03+#define BATTERY_TYPE_UNKNOWN 0xFF+#define BATTERY_LEVEL_EMPTY 0x00+#define BATTERY_LEVEL_LOW 0x01+#define BATTERY_LEVEL_MEDIUM 0x02+#define BATTERY_LEVEL_FULL 0x03++/*+ * How many joysticks can be used with this library. Games that+ * use the xinput library will not go over this number.+ */++#define XUSER_MAX_COUNT 4+#define XUSER_INDEX_ANY 0x000000FF++/*+ * Defines the structure of an xbox 360 joystick.+ */++typedef struct _XINPUT_GAMEPAD {+ WORD wButtons;+ BYTE bLeftTrigger;+ BYTE bRightTrigger;+ SHORT sThumbLX;+ SHORT sThumbLY;+ SHORT sThumbRX;+ SHORT sThumbRY;+} XINPUT_GAMEPAD, *PXINPUT_GAMEPAD;++typedef struct _XINPUT_STATE {+ DWORD dwPacketNumber;+ XINPUT_GAMEPAD Gamepad;+} XINPUT_STATE, *PXINPUT_STATE;++/*+ * Defines the structure of how much vibration is set on both the+ * right and left motors in a joystick. If you're not using a 360+ * joystick you will have to map these to your device.+ */++typedef struct _XINPUT_VIBRATION {+ WORD wLeftMotorSpeed;+ WORD wRightMotorSpeed;+} XINPUT_VIBRATION, *PXINPUT_VIBRATION;++/*+ * Defines the structure for what kind of abilities the joystick has+ * such abilities are things such as if the joystick has the ability+ * to send and receive audio, if the joystick is in fact a driving+ * wheel or perhaps if the joystick is some kind of dance pad or+ * guitar.+ */++typedef struct _XINPUT_CAPABILITIES {+ BYTE Type;+ BYTE SubType;+ WORD Flags;+ XINPUT_GAMEPAD Gamepad;+ XINPUT_VIBRATION Vibration;+} XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES;++/*+ * Defines the structure for a joystick input event which is+ * retrieved using the function XInputGetKeystroke+ */+typedef struct _XINPUT_KEYSTROKE {+ WORD VirtualKey;+ WCHAR Unicode;+ WORD Flags;+ BYTE UserIndex;+ BYTE HidCode;+} XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE;++typedef struct _XINPUT_BATTERY_INFORMATION+{+ BYTE BatteryType;+ BYTE BatteryLevel;+} XINPUT_BATTERY_INFORMATION, *PXINPUT_BATTERY_INFORMATION;++#ifdef __cplusplus+extern "C" {+#endif++void WINAPI XInputEnable(WINBOOL);+DWORD WINAPI XInputSetState(DWORD, XINPUT_VIBRATION*);+DWORD WINAPI XInputGetState(DWORD, XINPUT_STATE*);+DWORD WINAPI XInputGetKeystroke(DWORD, DWORD, PXINPUT_KEYSTROKE);+DWORD WINAPI XInputGetCapabilities(DWORD, DWORD, XINPUT_CAPABILITIES*);+DWORD WINAPI XInputGetDSoundAudioDeviceGuids(DWORD, GUID*, GUID*);+DWORD WINAPI XInputGetBatteryInformation(DWORD, BYTE, XINPUT_BATTERY_INFORMATION*);++#ifdef __cplusplus+}+#endif++#endif /* __WINE_XINPUT_H */
glfw/include/GLFW/glfw3.h view
@@ -96,11 +96,30 @@ #define _WIN32 #endif /* _WIN32 */ +/* Include because most Windows GLU headers need wchar_t and + * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. + * Include it unconditionally to avoid surprising side-effects. + */ +#include <stddef.h> + +/* Include because it is needed by Vulkan and related functions. + * Include it unconditionally to avoid surprising side-effects. + */ +#include <stdint.h> + +#if defined(GLFW_INCLUDE_VULKAN) + #include <vulkan/vulkan.h> +#endif /* Vulkan header */ + +/* The Vulkan header may have indirectly included windows.h (because of + * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. + */ + /* It is customary to use APIENTRY for OpenGL function pointer declarations on * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. */ -#ifndef APIENTRY - #ifdef _WIN32 +#if !defined(APIENTRY) + #if defined(_WIN32) #define APIENTRY __stdcall #else #define APIENTRY @@ -122,17 +141,6 @@ #define GLFW_CALLBACK_DEFINED #endif /* CALLBACK */ -/* Include because most Windows GLU headers need wchar_t and - * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. - * Include it unconditionally to avoid surprising side-effects. - */ -#include <stddef.h> - -/* Include because it is needed by Vulkan and related functions. - * Include it unconditionally to avoid surprising side-effects. - */ -#include <stdint.h> - /* Include the chosen OpenGL or OpenGL ES headers. */ #if defined(GLFW_INCLUDE_ES1) @@ -211,10 +219,6 @@ #endif /* OpenGL and OpenGL ES headers */ -#if defined(GLFW_INCLUDE_VULKAN) - #include <vulkan/vulkan.h> -#endif /* Vulkan header */ - #if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) /* GLFW_DLL must be defined by applications that are linking against the DLL * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW @@ -266,7 +270,7 @@ * API changes. * @ingroup init */ -#define GLFW_VERSION_REVISION 0 +#define GLFW_VERSION_REVISION 1 /*! @} */ /*! @brief One. @@ -917,62 +921,62 @@ #define GLFW_CLIENT_API 0x00022001 /*! @brief Context client API major version hint and attribute. * - * Context client API major version [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). */ #define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 /*! @brief Context client API minor version hint and attribute. * - * Context client API minor version [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). */ #define GLFW_CONTEXT_VERSION_MINOR 0x00022003 /*! @brief Context client API revision number hint and attribute. * - * Context client API revision number [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context client API revision number + * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). */ #define GLFW_CONTEXT_REVISION 0x00022004 /*! @brief Context robustness hint and attribute. * - * Context client API revision number [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) + * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). */ #define GLFW_CONTEXT_ROBUSTNESS 0x00022005 /*! @brief OpenGL forward-compatibility hint and attribute. * - * OpenGL forward-compatibility [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) + * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). */ #define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 /*! @brief OpenGL debug context hint and attribute. * - * OpenGL debug context [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * OpenGL debug context [hint](@ref GLFW_OPENGL_DEBUG_CONTEXT_hint) and + * [attribute](@ref GLFW_OPENGL_DEBUG_CONTEXT_attrib). */ #define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007 /*! @brief OpenGL profile hint and attribute. * - * OpenGL profile [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and + * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). */ #define GLFW_OPENGL_PROFILE 0x00022008 /*! @brief Context flush-on-release hint and attribute. * - * Context flush-on-release [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and + * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). */ #define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 /*! @brief Context error suppression hint and attribute. * - * Context error suppression [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and + * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). */ #define GLFW_CONTEXT_NO_ERROR 0x0002200A /*! @brief Context creation API hint and attribute. * - * Context creation API [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and + * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). */ #define GLFW_CONTEXT_CREATION_API 0x0002200B /*! @brief Window content area scaling window @@ -1164,13 +1168,21 @@ */ typedef struct GLFWcursor GLFWcursor; -/*! @brief The function signature for error callbacks. +/*! @brief The function pointer type for error callbacks. * - * This is the function signature for error callback functions. + * This is the function pointer type for error callbacks. An error callback + * function has the following signature: + * @code + * void callback_name(int error_code, const char* description) + * @endcode * - * @param[in] error An [error code](@ref errors). + * @param[in] error_code An [error code](@ref errors). Future releases may add + * more error codes. * @param[in] description A UTF-8 encoded string describing the error. * + * @pointer_lifetime The error description string is valid until the callback + * function returns. + * * @sa @ref error_handling * @sa @ref glfwSetErrorCallback * @@ -1180,9 +1192,13 @@ */ typedef void (* GLFWerrorfun)(int,const char*); -/*! @brief The function signature for window position callbacks. +/*! @brief The function pointer type for window position callbacks. * - * This is the function signature for window position callback functions. + * This is the function pointer type for window position callbacks. A window + * position callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int xpos, int ypos) + * @endcode * * @param[in] window The window that was moved. * @param[in] xpos The new x-coordinate, in screen coordinates, of the @@ -1199,9 +1215,13 @@ */ typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); -/*! @brief The function signature for window resize callbacks. +/*! @brief The function pointer type for window size callbacks. * - * This is the function signature for window size callback functions. + * This is the function pointer type for window size callbacks. A window size + * callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int width, int height) + * @endcode * * @param[in] window The window that was resized. * @param[in] width The new width, in screen coordinates, of the window. @@ -1217,9 +1237,13 @@ */ typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int); -/*! @brief The function signature for window close callbacks. +/*! @brief The function pointer type for window close callbacks. * - * This is the function signature for window close callback functions. + * This is the function pointer type for window close callbacks. A window + * close callback function has the following signature: + * @code + * void function_name(GLFWwindow* window) + * @endcode * * @param[in] window The window that the user attempted to close. * @@ -1233,9 +1257,13 @@ */ typedef void (* GLFWwindowclosefun)(GLFWwindow*); -/*! @brief The function signature for window content refresh callbacks. +/*! @brief The function pointer type for window content refresh callbacks. * - * This is the function signature for window refresh callback functions. + * This is the function pointer type for window content refresh callbacks. + * A window content refresh callback function has the following signature: + * @code + * void function_name(GLFWwindow* window); + * @endcode * * @param[in] window The window whose content needs to be refreshed. * @@ -1249,9 +1277,13 @@ */ typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); -/*! @brief The function signature for window focus/defocus callbacks. +/*! @brief The function pointer type for window focus callbacks. * - * This is the function signature for window focus callback functions. + * This is the function pointer type for window focus callbacks. A window + * focus callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode * * @param[in] window The window that gained or lost input focus. * @param[in] focused `GLFW_TRUE` if the window was given input focus, or @@ -1266,10 +1298,13 @@ */ typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int); -/*! @brief The function signature for window iconify/restore callbacks. +/*! @brief The function pointer type for window iconify callbacks. * - * This is the function signature for window iconify/restore callback - * functions. + * This is the function pointer type for window iconify callbacks. A window + * iconify callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode * * @param[in] window The window that was iconified or restored. * @param[in] iconified `GLFW_TRUE` if the window was iconified, or @@ -1284,10 +1319,13 @@ */ typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int); -/*! @brief The function signature for window maximize/restore callbacks. +/*! @brief The function pointer type for window maximize callbacks. * - * This is the function signature for window maximize/restore callback - * functions. + * This is the function pointer type for window maximize callbacks. A window + * maximize callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode * * @param[in] window The window that was maximized or restored. * @param[in] iconified `GLFW_TRUE` if the window was maximized, or @@ -1302,10 +1340,13 @@ */ typedef void (* GLFWwindowmaximizefun)(GLFWwindow*,int); -/*! @brief The function signature for framebuffer resize callbacks. +/*! @brief The function pointer type for framebuffer size callbacks. * - * This is the function signature for framebuffer resize callback - * functions. + * This is the function pointer type for framebuffer size callbacks. + * A framebuffer size callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode * * @param[in] window The window whose framebuffer was resized. * @param[in] width The new width, in pixels, of the framebuffer. @@ -1320,10 +1361,13 @@ */ typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int); -/*! @brief The function signature for window content scale callbacks. +/*! @brief The function pointer type for window content scale callbacks. * - * This is the function signature for window content scale callback - * functions. + * This is the function pointer type for window content scale callbacks. + * A window content scale callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode * * @param[in] window The window whose content scale changed. * @param[in] xscale The new x-axis content scale of the window. @@ -1338,14 +1382,19 @@ */ typedef void (* GLFWwindowcontentscalefun)(GLFWwindow*,float,float); -/*! @brief The function signature for mouse button callbacks. +/*! @brief The function pointer type for mouse button callbacks. * - * This is the function signature for mouse button callback functions. + * This is the function pointer type for mouse button callback functions. + * A mouse button callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode * * @param[in] window The window that received the event. * @param[in] button The [mouse button](@ref buttons) that was pressed or * released. - * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. + * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases + * may add more actions. * @param[in] mods Bit field describing which [modifier keys](@ref mods) were * held down. * @@ -1359,9 +1408,13 @@ */ typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int); -/*! @brief The function signature for cursor position callbacks. +/*! @brief The function pointer type for cursor position callbacks. * - * This is the function signature for cursor position callback functions. + * This is the function pointer type for cursor position callbacks. A cursor + * position callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode * * @param[in] window The window that received the event. * @param[in] xpos The new cursor x-coordinate, relative to the left edge of @@ -1378,9 +1431,13 @@ */ typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double); -/*! @brief The function signature for cursor enter/leave callbacks. +/*! @brief The function pointer type for cursor enter/leave callbacks. * - * This is the function signature for cursor enter/leave callback functions. + * This is the function pointer type for cursor enter/leave callbacks. + * A cursor enter/leave callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode * * @param[in] window The window that received the event. * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content @@ -1395,9 +1452,13 @@ */ typedef void (* GLFWcursorenterfun)(GLFWwindow*,int); -/*! @brief The function signature for scroll callbacks. +/*! @brief The function pointer type for scroll callbacks. * - * This is the function signature for scroll callback functions. + * This is the function pointer type for scroll callbacks. A scroll callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode * * @param[in] window The window that received the event. * @param[in] xoffset The scroll offset along the x-axis. @@ -1412,14 +1473,19 @@ */ typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); -/*! @brief The function signature for keyboard key callbacks. +/*! @brief The function pointer type for keyboard key callbacks. * - * This is the function signature for keyboard key callback functions. + * This is the function pointer type for keyboard key callbacks. A keyboard + * key callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode * * @param[in] window The window that received the event. * @param[in] key The [keyboard key](@ref keys) that was pressed or released. * @param[in] scancode The system-specific scancode of the key. - * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. + * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future + * releases may add more actions. * @param[in] mods Bit field describing which [modifier keys](@ref mods) were * held down. * @@ -1433,9 +1499,13 @@ */ typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); -/*! @brief The function signature for Unicode character callbacks. +/*! @brief The function pointer type for Unicode character callbacks. * - * This is the function signature for Unicode character callback functions. + * This is the function pointer type for Unicode character callbacks. + * A Unicode character callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode * * @param[in] window The window that received the event. * @param[in] codepoint The Unicode code point of the character. @@ -1450,12 +1520,16 @@ */ typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); -/*! @brief The function signature for Unicode character with modifiers +/*! @brief The function pointer type for Unicode character with modifiers * callbacks. * - * This is the function signature for Unicode character with modifiers callback - * functions. It is called for each input character, regardless of what - * modifier keys are held down. + * This is the function pointer type for Unicode character with modifiers + * callbacks. It is called for each input character, regardless of what + * modifier keys are held down. A Unicode character with modifiers callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode * * @param[in] window The window that received the event. * @param[in] codepoint The Unicode code point of the character. @@ -1473,14 +1547,21 @@ */ typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int); -/*! @brief The function signature for file drop callbacks. +/*! @brief The function pointer type for path drop callbacks. * - * This is the function signature for file drop callbacks. + * This is the function pointer type for path drop callbacks. A path drop + * callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode * * @param[in] window The window that received the event. - * @param[in] count The number of dropped files. + * @param[in] path_count The number of dropped paths. * @param[in] paths The UTF-8 encoded file and/or directory path names. * + * @pointer_lifetime The path array and its strings are valid until the + * callback function returns. + * * @sa @ref path_drop * @sa @ref glfwSetDropCallback * @@ -1488,15 +1569,19 @@ * * @ingroup input */ -typedef void (* GLFWdropfun)(GLFWwindow*,int,const char**); +typedef void (* GLFWdropfun)(GLFWwindow*,int,const char*[]); -/*! @brief The function signature for monitor configuration callbacks. +/*! @brief The function pointer type for monitor configuration callbacks. * - * This is the function signature for monitor configuration callback functions. + * This is the function pointer type for monitor configuration callbacks. + * A monitor callback function has the following signature: + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode * * @param[in] monitor The monitor that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Remaining - * values reserved for future use. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. * * @sa @ref monitor_event * @sa @ref glfwSetMonitorCallback @@ -1507,14 +1592,17 @@ */ typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); -/*! @brief The function signature for joystick configuration callbacks. +/*! @brief The function pointer type for joystick configuration callbacks. * - * This is the function signature for joystick configuration callback - * functions. + * This is the function pointer type for joystick configuration callbacks. + * A joystick configuration callback function has the following signature: + * @code + * void function_name(int jid, int event) + * @endcode * * @param[in] jid The joystick that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Remaining - * values reserved for future use. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. * * @sa @ref joystick_event * @sa @ref glfwSetJoystickCallback @@ -1849,10 +1937,17 @@ * Once set, the error callback remains set even after the library has been * terminated. * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set. * + * @callback_signature + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * For more information about the callback parameters, see the + * [callback pointer type](@ref GLFWerrorfun). + * * @errors None. * * @remark This function may be called before @ref glfwInit. @@ -1866,7 +1961,7 @@ * * @ingroup init */ -GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun); +GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); /*! @brief Returns the currently connected monitors. * @@ -1946,7 +2041,7 @@ */ GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); -/*! @brief Retrives the work area of the monitor. +/*! @brief Retrieves the work area of the monitor. * * This function returns the position, in screen coordinates, of the upper-left * corner of the work area of the specified monitor along with the work area @@ -2125,11 +2220,18 @@ * currently set callback. This is called when a monitor is connected to or * disconnected from the system. * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmonitorfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -2140,7 +2242,7 @@ * * @ingroup monitor */ -GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun); +GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); /*! @brief Returns the available video modes for the specified monitor. * @@ -2223,7 +2325,7 @@ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. * - * @remark @wayland Gamma handling is a priviledged protocol, this function + * @remark @wayland Gamma handling is a privileged protocol, this function * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. * * @thread_safety This function must only be called from the main thread. @@ -2247,7 +2349,7 @@ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. * - * @remark @wayland Gamma handling is a priviledged protocol, this function + * @remark @wayland Gamma handling is a privileged protocol, this function * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while * returning `NULL`. * @@ -2291,7 +2393,7 @@ * * @remark @win32 The gamma ramp size must be 256. * - * @remark @wayland Gamma handling is a priviledged protocol, this function + * @remark @wayland Gamma handling is a privileged protocol, this function * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. * * @pointer_lifetime The specified gamma ramp is copied before this function @@ -2510,7 +2612,7 @@ * * @remark @macos When activating frame autosaving with * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified - * window size and position may be overriden by previously saved values. + * window size and position may be overridden by previously saved values. * * @remark @x11 Some window managers will not respect the placement of * initially hidden windows. @@ -3477,11 +3579,18 @@ * area of the window. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowposfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @remark @wayland This callback will never be called, as there is no way for @@ -3495,7 +3604,7 @@ * * @ingroup window */ -GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun cbfun); +GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); /*! @brief Sets the size callback for the specified window. * @@ -3504,11 +3613,18 @@ * in screen coordinates, of the content area of the window. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowsizefun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3520,7 +3636,7 @@ * * @ingroup window */ -GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun cbfun); +GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); /*! @brief Sets the close callback for the specified window. * @@ -3534,11 +3650,18 @@ * The close callback is not triggered by @ref glfwDestroyWindow. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowclosefun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @remark @macos Selecting Quit from the application menu will trigger the @@ -3553,7 +3676,7 @@ * * @ingroup window */ -GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun cbfun); +GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); /*! @brief Sets the refresh callback for the specified window. * @@ -3566,11 +3689,18 @@ * very infrequently or never at all. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowrefreshfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3582,7 +3712,7 @@ * * @ingroup window */ -GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun cbfun); +GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); /*! @brief Sets the focus callback for the specified window. * @@ -3595,11 +3725,18 @@ * and @ref glfwSetMouseButtonCallback. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowfocusfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3610,7 +3747,7 @@ * * @ingroup window */ -GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun cbfun); +GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); /*! @brief Sets the iconify callback for the specified window. * @@ -3618,11 +3755,18 @@ * is called when the window is iconified or restored. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowiconifyfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @remark @wayland The wl_shell protocol has no concept of iconification, @@ -3636,7 +3780,7 @@ * * @ingroup window */ -GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun cbfun); +GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); /*! @brief Sets the maximize callback for the specified window. * @@ -3644,11 +3788,18 @@ * is called when the window is maximized or restored. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowmaximizefun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3659,7 +3810,7 @@ * * @ingroup window */ -GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun cbfun); +GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); /*! @brief Sets the framebuffer resize callback for the specified window. * @@ -3667,11 +3818,18 @@ * which is called when the framebuffer of the specified window is resized. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWframebuffersizefun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3682,7 +3840,7 @@ * * @ingroup window */ -GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun cbfun); +GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); /*! @brief Sets the window content scale callback for the specified window. * @@ -3690,11 +3848,18 @@ * which is called when the content scale of the specified window changes. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowcontentscalefun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3706,7 +3871,7 @@ * * @ingroup window */ -GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun cbfun); +GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); /*! @brief Processes all pending events. * @@ -4028,9 +4193,11 @@ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. * + * @remark The contents of the returned string may change when a keyboard + * layout change event is received. + * * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the next call to @ref - * glfwGetKeyName, or until the library is terminated. + * should not free it yourself. It is valid until the library is terminated. * * @thread_safety This function must only be called from the main thread. * @@ -4353,11 +4520,18 @@ * scancode may be zero. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new key callback, or `NULL` to remove the currently + * @param[in] callback The new key callback, or `NULL` to remove the currently * set callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWkeyfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4369,7 +4543,7 @@ * * @ingroup input */ -GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun); +GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); /*! @brief Sets the Unicode character callback. * @@ -4389,11 +4563,18 @@ * on Windows. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4405,7 +4586,7 @@ * * @ingroup input */ -GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun); +GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); /*! @brief Sets the Unicode character with modifiers callback. * @@ -4423,11 +4604,18 @@ * [key callback](@ref glfwSetKeyCallback) instead. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or an * [error](@ref error_handling) occurred. * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharmodsfun). + * * @deprecated Scheduled for removal in version 4.0. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. @@ -4440,7 +4628,7 @@ * * @ingroup input */ -GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun cbfun); +GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); /*! @brief Sets the mouse button callback. * @@ -4454,11 +4642,18 @@ * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmousebuttonfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4470,7 +4665,7 @@ * * @ingroup input */ -GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun cbfun); +GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); /*! @brief Sets the cursor position callback. * @@ -4480,11 +4675,18 @@ * content area of the window. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorposfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4495,20 +4697,27 @@ * * @ingroup input */ -GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun cbfun); +GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); -/*! @brief Sets the cursor enter/exit callback. +/*! @brief Sets the cursor enter/leave callback. * * This function sets the cursor boundary crossing callback of the specified * window, which is called when the cursor enters or leaves the content area of * the window. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorenterfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4519,7 +4728,7 @@ * * @ingroup input */ -GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun cbfun); +GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); /*! @brief Sets the scroll callback. * @@ -4531,11 +4740,18 @@ * wheel or a touchpad scrolling area. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new scroll callback, or `NULL` to remove the currently - * set callback. + * @param[in] callback The new scroll callback, or `NULL` to remove the + * currently set callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWscrollfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4546,12 +4762,12 @@ * * @ingroup input */ -GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cbfun); +GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); -/*! @brief Sets the file drop callback. +/*! @brief Sets the path drop callback. * - * This function sets the file drop callback of the specified window, which is - * called when one or more dragged files are dropped on the window. + * This function sets the path drop callback of the specified window, which is + * called when one or more dragged paths are dropped on the window. * * Because the path array and its strings may have been generated specifically * for that event, they are not guaranteed to be valid after the callback has @@ -4559,11 +4775,18 @@ * make a deep copy. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new file drop callback, or `NULL` to remove the + * @param[in] callback The new file drop callback, or `NULL` to remove the * currently set callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWdropfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @remark @wayland File drop is currently unimplemented. @@ -4576,7 +4799,7 @@ * * @ingroup input */ -GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun); +GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); /*! @brief Returns whether the specified joystick is present. * @@ -4764,7 +4987,7 @@ */ GLFWAPI const char* glfwGetJoystickName(int jid); -/*! @brief Returns the SDL comaptible GUID of the specified joystick. +/*! @brief Returns the SDL compatible GUID of the specified joystick. * * This function returns the SDL compatible GUID, as a UTF-8 encoded * hexadecimal string, of the specified joystick. The returned string is @@ -4895,11 +5118,18 @@ * called by joystick functions. The function will then return whatever it * returns if the joystick is not present. * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(int jid, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWjoystickfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4910,7 +5140,7 @@ * * @ingroup input */ -GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun); +GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); /*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. * @@ -4978,7 +5208,7 @@ /*! @brief Retrieves the state of the specified joystick remapped as a gamepad. * - * This function retrives the state of the specified joystick remapped to + * This function retrieves the state of the specified joystick remapped to * an Xbox-like gamepad. * * If the specified joystick is not present or does not have a gamepad mapping @@ -5069,23 +5299,26 @@ */ GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); -/*! @brief Returns the value of the GLFW timer. +/*! @brief Returns the GLFW time. * - * This function returns the value of the GLFW timer. Unless the timer has - * been set using @ref glfwSetTime, the timer measures time elapsed since GLFW - * was initialized. + * This function returns the current GLFW time, in seconds. Unless the time + * has been set using @ref glfwSetTime it measures time elapsed since GLFW was + * initialized. * + * This function and @ref glfwSetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * * The resolution of the timer is system dependent, but is usually on the order * of a few micro- or nanoseconds. It uses the highest-resolution monotonic * time source on each supported platform. * - * @return The current value, in seconds, or zero if an + * @return The current time, in seconds, or zero if an * [error](@ref error_handling) occurred. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function may be called from any thread. Reading and - * writing of the internal timer offset is not atomic, so it needs to be + * writing of the internal base time is not atomic, so it needs to be * externally synchronized with calls to @ref glfwSetTime. * * @sa @ref time @@ -5096,23 +5329,26 @@ */ GLFWAPI double glfwGetTime(void); -/*! @brief Sets the GLFW timer. +/*! @brief Sets the GLFW time. * - * This function sets the value of the GLFW timer. It then continues to count - * up from that value. The value must be a positive finite number less than - * or equal to 18446744073.0, which is approximately 584.5 years. + * This function sets the current GLFW time, in seconds. The value must be + * a positive finite number less than or equal to 18446744073.0, which is + * approximately 584.5 years. * + * This function and @ref glfwGetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * * @param[in] time The new value, in seconds. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_INVALID_VALUE. * - * @remark The upper limit of the timer is calculated as + * @remark The upper limit of GLFW time is calculated as * floor((2<sup>64</sup> - 1) / 10<sup>9</sup>) and is due to implementations * storing nanoseconds in 64 bits. The limit may be increased in the future. * * @thread_safety This function may be called from any thread. Reading and - * writing of the internal timer offset is not atomic, so it needs to be + * writing of the internal base time is not atomic, so it needs to be * externally synchronized with calls to @ref glfwGetTime. * * @sa @ref time @@ -5416,7 +5652,7 @@ * * This function returns an array of names of Vulkan instance extensions required * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the - * list will always contains `VK_KHR_surface`, so if you don't require any + * list will always contain `VK_KHR_surface`, so if you don't require any * additional extensions you can pass this list directly to the * `VkInstanceCreateInfo` struct. *
glfw/include/GLFW/glfw3native.h view
@@ -1,525 +1,525 @@-/************************************************************************* - * GLFW 3.3 - www.glfw.org - * A library for OpenGL, window and input - *------------------------------------------------------------------------ - * Copyright (c) 2002-2006 Marcus Geelnard - * Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org> - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would - * be appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not - * be misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - *************************************************************************/ - -#ifndef _glfw3_native_h_ -#define _glfw3_native_h_ - -#ifdef __cplusplus -extern "C" { -#endif - - -/************************************************************************* - * Doxygen documentation - *************************************************************************/ - -/*! @file glfw3native.h - * @brief The header of the native access functions. - * - * This is the header file of the native access functions. See @ref native for - * more information. - */ -/*! @defgroup native Native access - * @brief Functions related to accessing native handles. - * - * **By using the native access functions you assert that you know what you're - * doing and how to fix problems caused by using them. If you don't, you - * shouldn't be using them.** - * - * Before the inclusion of @ref glfw3native.h, you may define zero or more - * window system API macro and zero or more context creation API macros. - * - * The chosen backends must match those the library was compiled for. Failure - * to do this will cause a link-time error. - * - * The available window API macros are: - * * `GLFW_EXPOSE_NATIVE_WIN32` - * * `GLFW_EXPOSE_NATIVE_COCOA` - * * `GLFW_EXPOSE_NATIVE_X11` - * * `GLFW_EXPOSE_NATIVE_WAYLAND` - * - * The available context API macros are: - * * `GLFW_EXPOSE_NATIVE_WGL` - * * `GLFW_EXPOSE_NATIVE_NSGL` - * * `GLFW_EXPOSE_NATIVE_GLX` - * * `GLFW_EXPOSE_NATIVE_EGL` - * * `GLFW_EXPOSE_NATIVE_OSMESA` - * - * These macros select which of the native access functions that are declared - * and which platform-specific headers to include. It is then up your (by - * definition platform-specific) code to handle which of these should be - * defined. - */ - - -/************************************************************************* - * System headers and types - *************************************************************************/ - -#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) - // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for - // example to allow applications to correctly declare a GL_ARB_debug_output - // callback) but windows.h assumes no one will define APIENTRY before it does - #if defined(GLFW_APIENTRY_DEFINED) - #undef APIENTRY - #undef GLFW_APIENTRY_DEFINED - #endif - #include <windows.h> -#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) - #if defined(__OBJC__) - #import <Cocoa/Cocoa.h> - #else - #include <ApplicationServices/ApplicationServices.h> - typedef void* id; - #endif -#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) - #include <X11/Xlib.h> - #include <X11/extensions/Xrandr.h> -#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND) - #include <wayland-client.h> -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WGL) - /* WGL is declared by windows.h */ -#endif -#if defined(GLFW_EXPOSE_NATIVE_NSGL) - /* NSGL is declared by Cocoa.h */ -#endif -#if defined(GLFW_EXPOSE_NATIVE_GLX) - #include <GL/glx.h> -#endif -#if defined(GLFW_EXPOSE_NATIVE_EGL) - #include <EGL/egl.h> -#endif -#if defined(GLFW_EXPOSE_NATIVE_OSMESA) - #include <GL/osmesa.h> -#endif - - -/************************************************************************* - * Functions - *************************************************************************/ - -#if defined(GLFW_EXPOSE_NATIVE_WIN32) -/*! @brief Returns the adapter device name of the specified monitor. - * - * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) - * of the specified monitor, or `NULL` if an [error](@ref error_handling) - * occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); - -/*! @brief Returns the display device name of the specified monitor. - * - * @return The UTF-8 encoded display device name (for example - * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); - -/*! @brief Returns the `HWND` of the specified window. - * - * @return The `HWND` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WGL) -/*! @brief Returns the `HGLRC` of the specified window. - * - * @return The `HGLRC` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_COCOA) -/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. - * - * @return The `CGDirectDisplayID` of the specified monitor, or - * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); - -/*! @brief Returns the `NSWindow` of the specified window. - * - * @return The `NSWindow` of the specified window, or `nil` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_NSGL) -/*! @brief Returns the `NSOpenGLContext` of the specified window. - * - * @return The `NSOpenGLContext` of the specified window, or `nil` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_X11) -/*! @brief Returns the `Display` used by GLFW. - * - * @return The `Display` used by GLFW, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI Display* glfwGetX11Display(void); - -/*! @brief Returns the `RRCrtc` of the specified monitor. - * - * @return The `RRCrtc` of the specified monitor, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); - -/*! @brief Returns the `RROutput` of the specified monitor. - * - * @return The `RROutput` of the specified monitor, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.1. - * - * @ingroup native - */ -GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); - -/*! @brief Returns the `Window` of the specified window. - * - * @return The `Window` of the specified window, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI Window glfwGetX11Window(GLFWwindow* window); - -/*! @brief Sets the current primary selection to the specified string. - * - * @param[in] string A UTF-8 encoded string. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The specified string is copied before this function - * returns. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa glfwGetX11SelectionString - * @sa glfwSetClipboardString - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI void glfwSetX11SelectionString(const char* string); - -/*! @brief Returns the contents of the current primary selection as a string. - * - * If the selection is empty or if its contents cannot be converted, `NULL` - * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. - * - * @return The contents of the selection as a UTF-8 encoded string, or `NULL` - * if an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the next call to @ref - * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the - * library is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref clipboard - * @sa glfwSetX11SelectionString - * @sa glfwGetClipboardString - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI const char* glfwGetX11SelectionString(void); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_GLX) -/*! @brief Returns the `GLXContext` of the specified window. - * - * @return The `GLXContext` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); - -/*! @brief Returns the `GLXWindow` of the specified window. - * - * @return The `GLXWindow` of the specified window, or `None` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) -/*! @brief Returns the `struct wl_display*` used by GLFW. - * - * @return The `struct wl_display*` used by GLFW, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_display* glfwGetWaylandDisplay(void); - -/*! @brief Returns the `struct wl_output*` of the specified monitor. - * - * @return The `struct wl_output*` of the specified monitor, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); - -/*! @brief Returns the main `struct wl_surface*` of the specified window. - * - * @return The main `struct wl_surface*` of the specified window, or `NULL` if - * an [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_EGL) -/*! @brief Returns the `EGLDisplay` used by GLFW. - * - * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLDisplay glfwGetEGLDisplay(void); - -/*! @brief Returns the `EGLContext` of the specified window. - * - * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); - -/*! @brief Returns the `EGLSurface` of the specified window. - * - * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.0. - * - * @ingroup native - */ -GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_OSMESA) -/*! @brief Retrieves the color buffer associated with the specified window. - * - * @param[in] window The window whose color buffer to retrieve. - * @param[out] width Where to store the width of the color buffer, or `NULL`. - * @param[out] height Where to store the height of the color buffer, or `NULL`. - * @param[out] format Where to store the OSMesa pixel format of the color - * buffer, or `NULL`. - * @param[out] buffer Where to store the address of the color buffer, or - * `NULL`. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer); - -/*! @brief Retrieves the depth buffer associated with the specified window. - * - * @param[in] window The window whose depth buffer to retrieve. - * @param[out] width Where to store the width of the depth buffer, or `NULL`. - * @param[out] height Where to store the height of the depth buffer, or `NULL`. - * @param[out] bytesPerValue Where to store the number of bytes per depth - * buffer element, or `NULL`. - * @param[out] buffer Where to store the address of the depth buffer, or - * `NULL`. - * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer); - -/*! @brief Returns the `OSMesaContext` of the specified window. - * - * @return The `OSMesaContext` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.3. - * - * @ingroup native - */ -GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _glfw3_native_h_ */ - +/*************************************************************************+ * GLFW 3.3 - www.glfw.org+ * A library for OpenGL, window and input+ *------------------------------------------------------------------------+ * Copyright (c) 2002-2006 Marcus Geelnard+ * Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org>+ *+ * This software is provided 'as-is', without any express or implied+ * warranty. In no event will the authors be held liable for any damages+ * arising from the use of this software.+ *+ * Permission is granted to anyone to use this software for any purpose,+ * including commercial applications, and to alter it and redistribute it+ * freely, subject to the following restrictions:+ *+ * 1. The origin of this software must not be misrepresented; you must not+ * claim that you wrote the original software. If you use this software+ * in a product, an acknowledgment in the product documentation would+ * be appreciated but is not required.+ *+ * 2. Altered source versions must be plainly marked as such, and must not+ * be misrepresented as being the original software.+ *+ * 3. This notice may not be removed or altered from any source+ * distribution.+ *+ *************************************************************************/++#ifndef _glfw3_native_h_+#define _glfw3_native_h_++#ifdef __cplusplus+extern "C" {+#endif+++/*************************************************************************+ * Doxygen documentation+ *************************************************************************/++/*! @file glfw3native.h+ * @brief The header of the native access functions.+ *+ * This is the header file of the native access functions. See @ref native for+ * more information.+ */+/*! @defgroup native Native access+ * @brief Functions related to accessing native handles.+ *+ * **By using the native access functions you assert that you know what you're+ * doing and how to fix problems caused by using them. If you don't, you+ * shouldn't be using them.**+ *+ * Before the inclusion of @ref glfw3native.h, you may define zero or more+ * window system API macro and zero or more context creation API macros.+ *+ * The chosen backends must match those the library was compiled for. Failure+ * to do this will cause a link-time error.+ *+ * The available window API macros are:+ * * `GLFW_EXPOSE_NATIVE_WIN32`+ * * `GLFW_EXPOSE_NATIVE_COCOA`+ * * `GLFW_EXPOSE_NATIVE_X11`+ * * `GLFW_EXPOSE_NATIVE_WAYLAND`+ *+ * The available context API macros are:+ * * `GLFW_EXPOSE_NATIVE_WGL`+ * * `GLFW_EXPOSE_NATIVE_NSGL`+ * * `GLFW_EXPOSE_NATIVE_GLX`+ * * `GLFW_EXPOSE_NATIVE_EGL`+ * * `GLFW_EXPOSE_NATIVE_OSMESA`+ *+ * These macros select which of the native access functions that are declared+ * and which platform-specific headers to include. It is then up your (by+ * definition platform-specific) code to handle which of these should be+ * defined.+ */+++/*************************************************************************+ * System headers and types+ *************************************************************************/++#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL)+ // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for+ // example to allow applications to correctly declare a GL_ARB_debug_output+ // callback) but windows.h assumes no one will define APIENTRY before it does+ #if defined(GLFW_APIENTRY_DEFINED)+ #undef APIENTRY+ #undef GLFW_APIENTRY_DEFINED+ #endif+ #include <windows.h>+#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL)+ #if defined(__OBJC__)+ #import <Cocoa/Cocoa.h>+ #else+ #include <ApplicationServices/ApplicationServices.h>+ typedef void* id;+ #endif+#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX)+ #include <X11/Xlib.h>+ #include <X11/extensions/Xrandr.h>+#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND)+ #include <wayland-client.h>+#endif++#if defined(GLFW_EXPOSE_NATIVE_WGL)+ /* WGL is declared by windows.h */+#endif+#if defined(GLFW_EXPOSE_NATIVE_NSGL)+ /* NSGL is declared by Cocoa.h */+#endif+#if defined(GLFW_EXPOSE_NATIVE_GLX)+ #include <GL/glx.h>+#endif+#if defined(GLFW_EXPOSE_NATIVE_EGL)+ #include <EGL/egl.h>+#endif+#if defined(GLFW_EXPOSE_NATIVE_OSMESA)+ #include <GL/osmesa.h>+#endif+++/*************************************************************************+ * Functions+ *************************************************************************/++#if defined(GLFW_EXPOSE_NATIVE_WIN32)+/*! @brief Returns the adapter device name of the specified monitor.+ *+ * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`)+ * of the specified monitor, or `NULL` if an [error](@ref error_handling)+ * occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.1.+ *+ * @ingroup native+ */+GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);++/*! @brief Returns the display device name of the specified monitor.+ *+ * @return The UTF-8 encoded display device name (for example+ * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.1.+ *+ * @ingroup native+ */+GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);++/*! @brief Returns the `HWND` of the specified window.+ *+ * @return The `HWND` of the specified window, or `NULL` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.0.+ *+ * @ingroup native+ */+GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);+#endif++#if defined(GLFW_EXPOSE_NATIVE_WGL)+/*! @brief Returns the `HGLRC` of the specified window.+ *+ * @return The `HGLRC` of the specified window, or `NULL` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.0.+ *+ * @ingroup native+ */+GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);+#endif++#if defined(GLFW_EXPOSE_NATIVE_COCOA)+/*! @brief Returns the `CGDirectDisplayID` of the specified monitor.+ *+ * @return The `CGDirectDisplayID` of the specified monitor, or+ * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.1.+ *+ * @ingroup native+ */+GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);++/*! @brief Returns the `NSWindow` of the specified window.+ *+ * @return The `NSWindow` of the specified window, or `nil` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.0.+ *+ * @ingroup native+ */+GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);+#endif++#if defined(GLFW_EXPOSE_NATIVE_NSGL)+/*! @brief Returns the `NSOpenGLContext` of the specified window.+ *+ * @return The `NSOpenGLContext` of the specified window, or `nil` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.0.+ *+ * @ingroup native+ */+GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);+#endif++#if defined(GLFW_EXPOSE_NATIVE_X11)+/*! @brief Returns the `Display` used by GLFW.+ *+ * @return The `Display` used by GLFW, or `NULL` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.0.+ *+ * @ingroup native+ */+GLFWAPI Display* glfwGetX11Display(void);++/*! @brief Returns the `RRCrtc` of the specified monitor.+ *+ * @return The `RRCrtc` of the specified monitor, or `None` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.1.+ *+ * @ingroup native+ */+GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);++/*! @brief Returns the `RROutput` of the specified monitor.+ *+ * @return The `RROutput` of the specified monitor, or `None` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.1.+ *+ * @ingroup native+ */+GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);++/*! @brief Returns the `Window` of the specified window.+ *+ * @return The `Window` of the specified window, or `None` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.0.+ *+ * @ingroup native+ */+GLFWAPI Window glfwGetX11Window(GLFWwindow* window);++/*! @brief Sets the current primary selection to the specified string.+ *+ * @param[in] string A UTF-8 encoded string.+ *+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref+ * GLFW_PLATFORM_ERROR.+ *+ * @pointer_lifetime The specified string is copied before this function+ * returns.+ *+ * @thread_safety This function must only be called from the main thread.+ *+ * @sa @ref clipboard+ * @sa glfwGetX11SelectionString+ * @sa glfwSetClipboardString+ *+ * @since Added in version 3.3.+ *+ * @ingroup native+ */+GLFWAPI void glfwSetX11SelectionString(const char* string);++/*! @brief Returns the contents of the current primary selection as a string.+ *+ * If the selection is empty or if its contents cannot be converted, `NULL`+ * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated.+ *+ * @return The contents of the selection as a UTF-8 encoded string, or `NULL`+ * if an [error](@ref error_handling) occurred.+ *+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref+ * GLFW_PLATFORM_ERROR.+ *+ * @pointer_lifetime The returned string is allocated and freed by GLFW. You+ * should not free it yourself. It is valid until the next call to @ref+ * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the+ * library is terminated.+ *+ * @thread_safety This function must only be called from the main thread.+ *+ * @sa @ref clipboard+ * @sa glfwSetX11SelectionString+ * @sa glfwGetClipboardString+ *+ * @since Added in version 3.3.+ *+ * @ingroup native+ */+GLFWAPI const char* glfwGetX11SelectionString(void);+#endif++#if defined(GLFW_EXPOSE_NATIVE_GLX)+/*! @brief Returns the `GLXContext` of the specified window.+ *+ * @return The `GLXContext` of the specified window, or `NULL` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.0.+ *+ * @ingroup native+ */+GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);++/*! @brief Returns the `GLXWindow` of the specified window.+ *+ * @return The `GLXWindow` of the specified window, or `None` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.2.+ *+ * @ingroup native+ */+GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);+#endif++#if defined(GLFW_EXPOSE_NATIVE_WAYLAND)+/*! @brief Returns the `struct wl_display*` used by GLFW.+ *+ * @return The `struct wl_display*` used by GLFW, or `NULL` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.2.+ *+ * @ingroup native+ */+GLFWAPI struct wl_display* glfwGetWaylandDisplay(void);++/*! @brief Returns the `struct wl_output*` of the specified monitor.+ *+ * @return The `struct wl_output*` of the specified monitor, or `NULL` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.2.+ *+ * @ingroup native+ */+GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);++/*! @brief Returns the main `struct wl_surface*` of the specified window.+ *+ * @return The main `struct wl_surface*` of the specified window, or `NULL` if+ * an [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.2.+ *+ * @ingroup native+ */+GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);+#endif++#if defined(GLFW_EXPOSE_NATIVE_EGL)+/*! @brief Returns the `EGLDisplay` used by GLFW.+ *+ * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.0.+ *+ * @ingroup native+ */+GLFWAPI EGLDisplay glfwGetEGLDisplay(void);++/*! @brief Returns the `EGLContext` of the specified window.+ *+ * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.0.+ *+ * @ingroup native+ */+GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);++/*! @brief Returns the `EGLSurface` of the specified window.+ *+ * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.0.+ *+ * @ingroup native+ */+GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);+#endif++#if defined(GLFW_EXPOSE_NATIVE_OSMESA)+/*! @brief Retrieves the color buffer associated with the specified window.+ *+ * @param[in] window The window whose color buffer to retrieve.+ * @param[out] width Where to store the width of the color buffer, or `NULL`.+ * @param[out] height Where to store the height of the color buffer, or `NULL`.+ * @param[out] format Where to store the OSMesa pixel format of the color+ * buffer, or `NULL`.+ * @param[out] buffer Where to store the address of the color buffer, or+ * `NULL`.+ * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.3.+ *+ * @ingroup native+ */+GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer);++/*! @brief Retrieves the depth buffer associated with the specified window.+ *+ * @param[in] window The window whose depth buffer to retrieve.+ * @param[out] width Where to store the width of the depth buffer, or `NULL`.+ * @param[out] height Where to store the height of the depth buffer, or `NULL`.+ * @param[out] bytesPerValue Where to store the number of bytes per depth+ * buffer element, or `NULL`.+ * @param[out] buffer Where to store the address of the depth buffer, or+ * `NULL`.+ * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.3.+ *+ * @ingroup native+ */+GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer);++/*! @brief Returns the `OSMesaContext` of the specified window.+ *+ * @return The `OSMesaContext` of the specified window, or `NULL` if an+ * [error](@ref error_handling) occurred.+ *+ * @thread_safety This function may be called from any thread. Access is not+ * synchronized.+ *+ * @since Added in version 3.3.+ *+ * @ingroup native+ */+GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window);+#endif++#ifdef __cplusplus+}+#endif++#endif /* _glfw3_native_h_ */+
glfw/src/cocoa_init.m view
@@ -23,6 +23,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" #include <sys/param.h> // For MAXPATHLEN @@ -429,9 +431,8 @@ // In case we are unbundled, make us a proper UI application [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; - // Menu bar setup must go between sharedApplication above and - // finishLaunching below, in order to properly emulate the behavior - // of NSApplicationMain + // Menu bar setup must go between sharedApplication and finishLaunching + // in order to properly emulate the behavior of NSApplicationMain if ([[NSBundle mainBundle] pathForResource:@"MainMenu" ofType:@"nib"]) { @@ -446,9 +447,9 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification { - [NSApp stop:nil]; - + _glfw.ns.finishedLaunching = GLFW_TRUE; _glfwPlatformPostEmptyEvent(); + [NSApp stop:nil]; } - (void)applicationDidHide:(NSNotification *)notification
glfw/src/cocoa_joystick.h view
@@ -30,7 +30,7 @@ #include <IOKit/hid/IOHIDKeys.h> #define _GLFW_PLATFORM_JOYSTICK_STATE _GLFWjoystickNS ns -#define _GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE +#define _GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE struct { int dummyJoystick; } #define _GLFW_PLATFORM_MAPPING_NAME "Mac OS X"
glfw/src/cocoa_joystick.m view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" @@ -329,7 +331,7 @@ return; } - for (int i = 0; i < sizeof(usages) / sizeof(long); i++) + for (size_t i = 0; i < sizeof(usages) / sizeof(long); i++) { const long page = kHIDPage_GenericDesktop;
glfw/src/cocoa_monitor.m view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" @@ -142,7 +144,7 @@ // Convert Core Graphics display mode to GLFW video mode // static GLFWvidmode vidmodeFromCGDisplayMode(CGDisplayModeRef mode, - CVDisplayLinkRef link) + double fallbackRefreshRate) { GLFWvidmode result; result.width = (int) CGDisplayModeGetWidth(mode); @@ -150,11 +152,7 @@ result.refreshRate = (int) round(CGDisplayModeGetRefreshRate(mode)); if (result.refreshRate == 0) - { - const CVTime time = CVDisplayLinkGetNominalOutputVideoRefreshPeriod(link); - if (!(time.flags & kCVTimeIsIndefinite)) - result.refreshRate = (int) (time.timeScale / (double) time.timeValue); - } + result.refreshRate = (int) round(fallbackRefreshRate); #if MAC_OS_X_VERSION_MAX_ALLOWED <= 101100 CFStringRef format = CGDisplayModeCopyPixelEncoding(mode); @@ -213,7 +211,7 @@ // Finds and caches the NSScreen corresponding to the specified monitor // -GLFWbool refreshMonitorScreen(_GLFWmonitor* monitor) +static GLFWbool refreshMonitorScreen(_GLFWmonitor* monitor) { if (monitor->ns.screen) return GLFW_TRUE; @@ -236,7 +234,69 @@ return GLFW_FALSE; } +// Returns the display refresh rate queried from the I/O registry +// +static double getFallbackRefreshRate(CGDirectDisplayID displayID) +{ + double refreshRate = 60.0; + io_iterator_t it; + io_service_t service; + + if (IOServiceGetMatchingServices(kIOMasterPortDefault, + IOServiceMatching("IOFramebuffer"), + &it) != 0) + { + return refreshRate; + } + + while ((service = IOIteratorNext(it)) != 0) + { + const CFNumberRef indexRef = + IORegistryEntryCreateCFProperty(service, + CFSTR("IOFramebufferOpenGLIndex"), + kCFAllocatorDefault, + kNilOptions); + if (!indexRef) + continue; + + uint32_t index = 0; + CFNumberGetValue(indexRef, kCFNumberIntType, &index); + CFRelease(indexRef); + + if (CGOpenGLDisplayMaskToDisplayID(1 << index) != displayID) + continue; + + const CFNumberRef clockRef = + IORegistryEntryCreateCFProperty(service, + CFSTR("IOFBCurrentPixelClock"), + kCFAllocatorDefault, + kNilOptions); + const CFNumberRef countRef = + IORegistryEntryCreateCFProperty(service, + CFSTR("IOFBCurrentPixelCount"), + kCFAllocatorDefault, + kNilOptions); + if (!clockRef || !countRef) + break; + + uint32_t clock = 0, count = 0; + CFNumberGetValue(clockRef, kCFNumberIntType, &clock); + CFNumberGetValue(countRef, kCFNumberIntType, &count); + CFRelease(clockRef); + CFRelease(countRef); + + if (clock > 0 && count > 0) + refreshRate = clock / (double) count; + + break; + } + + IOObjectRelease(it); + return refreshRate; +} + + ////////////////////////////////////////////////////////////////////////// ////// GLFW internal API ////// ////////////////////////////////////////////////////////////////////////// @@ -245,18 +305,16 @@ // void _glfwPollMonitorsNS(void) { - uint32_t i, j, displayCount, disconnectedCount; - CGDirectDisplayID* displays; - _GLFWmonitor** disconnected = NULL; - + uint32_t displayCount; CGGetOnlineDisplayList(0, NULL, &displayCount); - displays = calloc(displayCount, sizeof(CGDirectDisplayID)); + CGDirectDisplayID* displays = calloc(displayCount, sizeof(CGDirectDisplayID)); CGGetOnlineDisplayList(displayCount, displays, &displayCount); - for (i = 0; i < _glfw.monitorCount; i++) + for (int i = 0; i < _glfw.monitorCount; i++) _glfw.monitors[i]->ns.screen = nil; - disconnectedCount = _glfw.monitorCount; + _GLFWmonitor** disconnected = NULL; + uint32_t disconnectedCount = _glfw.monitorCount; if (disconnectedCount) { disconnected = calloc(_glfw.monitorCount, sizeof(_GLFWmonitor*)); @@ -265,19 +323,17 @@ _glfw.monitorCount * sizeof(_GLFWmonitor*)); } - for (i = 0; i < displayCount; i++) + for (uint32_t i = 0; i < displayCount; i++) { - _GLFWmonitor* monitor; - const uint32_t unitNumber = CGDisplayUnitNumber(displays[i]); - if (CGDisplayIsAsleep(displays[i])) continue; - for (j = 0; j < disconnectedCount; j++) + // HACK: Compare unit numbers instead of display IDs to work around + // display replacement on machines with automatic graphics + // switching + const uint32_t unitNumber = CGDisplayUnitNumber(displays[i]); + for (uint32_t j = 0; j < disconnectedCount; j++) { - // HACK: Compare unit numbers instead of display IDs to work around - // display replacement on machines with automatic graphics - // switching if (disconnected[j] && disconnected[j]->ns.unitNumber == unitNumber) { disconnected[j] = NULL; @@ -290,16 +346,21 @@ if (!name) name = _glfw_strdup("Unknown"); - monitor = _glfwAllocMonitor(name, size.width, size.height); + _GLFWmonitor* monitor = _glfwAllocMonitor(name, size.width, size.height); monitor->ns.displayID = displays[i]; monitor->ns.unitNumber = unitNumber; free(name); + CGDisplayModeRef mode = CGDisplayCopyDisplayMode(displays[i]); + if (CGDisplayModeGetRefreshRate(mode) == 0.0) + monitor->ns.fallbackRefreshRate = getFallbackRefreshRate(displays[i]); + CGDisplayModeRelease(mode); + _glfwInputMonitor(monitor, GLFW_CONNECTED, _GLFW_INSERT_LAST); } - for (i = 0; i < disconnectedCount; i++) + for (uint32_t i = 0; i < disconnectedCount; i++) { if (disconnected[i]) _glfwInputMonitor(disconnected[i], GLFW_DISCONNECTED, 0); @@ -313,30 +374,25 @@ // void _glfwSetVideoModeNS(_GLFWmonitor* monitor, const GLFWvidmode* desired) { - CFArrayRef modes; - CFIndex count, i; - CVDisplayLinkRef link; - CGDisplayModeRef native = NULL; GLFWvidmode current; - const GLFWvidmode* best; - - best = _glfwChooseVideoMode(monitor, desired); _glfwPlatformGetVideoMode(monitor, ¤t); + + const GLFWvidmode* best = _glfwChooseVideoMode(monitor, desired); if (_glfwCompareVideoModes(¤t, best) == 0) return; - CVDisplayLinkCreateWithCGDisplay(monitor->ns.displayID, &link); - - modes = CGDisplayCopyAllDisplayModes(monitor->ns.displayID, NULL); - count = CFArrayGetCount(modes); + CFArrayRef modes = CGDisplayCopyAllDisplayModes(monitor->ns.displayID, NULL); + const CFIndex count = CFArrayGetCount(modes); + CGDisplayModeRef native = NULL; - for (i = 0; i < count; i++) + for (CFIndex i = 0; i < count; i++) { CGDisplayModeRef dm = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i); if (!modeIsGood(dm)) continue; - const GLFWvidmode mode = vidmodeFromCGDisplayMode(dm, link); + const GLFWvidmode mode = + vidmodeFromCGDisplayMode(dm, monitor->ns.fallbackRefreshRate); if (_glfwCompareVideoModes(best, &mode) == 0) { native = dm; @@ -355,7 +411,6 @@ } CFRelease(modes); - CVDisplayLinkRelease(link); } // Restore the previously saved (original) video mode @@ -443,26 +498,21 @@ { @autoreleasepool { - CFArrayRef modes; - CFIndex found, i, j; - GLFWvidmode* result; - CVDisplayLinkRef link; - *count = 0; - CVDisplayLinkCreateWithCGDisplay(monitor->ns.displayID, &link); - - modes = CGDisplayCopyAllDisplayModes(monitor->ns.displayID, NULL); - found = CFArrayGetCount(modes); - result = calloc(found, sizeof(GLFWvidmode)); + CFArrayRef modes = CGDisplayCopyAllDisplayModes(monitor->ns.displayID, NULL); + const CFIndex found = CFArrayGetCount(modes); + GLFWvidmode* result = calloc(found, sizeof(GLFWvidmode)); - for (i = 0; i < found; i++) + for (CFIndex i = 0; i < found; i++) { CGDisplayModeRef dm = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i); if (!modeIsGood(dm)) continue; - const GLFWvidmode mode = vidmodeFromCGDisplayMode(dm, link); + const GLFWvidmode mode = + vidmodeFromCGDisplayMode(dm, monitor->ns.fallbackRefreshRate); + CFIndex j; for (j = 0; j < *count; j++) { @@ -479,7 +529,6 @@ } CFRelease(modes); - CVDisplayLinkRelease(link); return result; } // autoreleasepool @@ -489,16 +538,9 @@ { @autoreleasepool { - CGDisplayModeRef displayMode; - CVDisplayLinkRef link; - - CVDisplayLinkCreateWithCGDisplay(monitor->ns.displayID, &link); - - displayMode = CGDisplayCopyDisplayMode(monitor->ns.displayID); - *mode = vidmodeFromCGDisplayMode(displayMode, link); - CGDisplayModeRelease(displayMode); - - CVDisplayLinkRelease(link); + CGDisplayModeRef native = CGDisplayCopyDisplayMode(monitor->ns.displayID); + *mode = vidmodeFromCGDisplayMode(native, monitor->ns.fallbackRefreshRate); + CGDisplayModeRelease(native); } // autoreleasepool } @@ -507,7 +549,7 @@ { @autoreleasepool { - uint32_t i, size = CGDisplayGammaTableCapacity(monitor->ns.displayID); + uint32_t size = CGDisplayGammaTableCapacity(monitor->ns.displayID); CGGammaValue* values = calloc(size * 3, sizeof(CGGammaValue)); CGGetDisplayTransferByTable(monitor->ns.displayID, @@ -519,7 +561,7 @@ _glfwAllocGammaArrays(ramp, size); - for (i = 0; i < size; i++) + for (uint32_t i = 0; i < size; i++) { ramp->red[i] = (unsigned short) (values[i] * 65535); ramp->green[i] = (unsigned short) (values[i + size] * 65535); @@ -536,10 +578,9 @@ { @autoreleasepool { - int i; CGGammaValue* values = calloc(ramp->size * 3, sizeof(CGGammaValue)); - for (i = 0; i < ramp->size; i++) + for (unsigned int i = 0; i < ramp->size; i++) { values[i] = ramp->red[i] / 65535.f; values[i + ramp->size] = ramp->green[i] / 65535.f;
glfw/src/cocoa_platform.h view
@@ -28,8 +28,6 @@ #include <dlfcn.h> #include <Carbon/Carbon.h> -#include <CoreVideo/CVBase.h> -#include <CoreVideo/CVDisplayLink.h> // NOTE: All of NSGL was deprecated in the 10.14 SDK // This disables the pointless warnings for every symbol we use @@ -41,6 +39,9 @@ typedef void* id; #endif +// NOTE: Many Cocoa enum values have been renamed and we need to build across +// SDK versions where one is unavailable or the other deprecated +// We use the newer names in code and these macros to handle compatibility #if MAC_OS_X_VERSION_MAX_ALLOWED < 101200 #define NSBitmapFormatAlphaNonpremultiplied NSAlphaNonpremultipliedBitmapFormat #define NSEventMaskAny NSAnyEventMask @@ -139,7 +140,7 @@ id keyUpMonitor; id nibObjects; - char keyName[64]; + char keynames[GLFW_KEY_LAST + 1][17]; short int keycodes[256]; short int scancodes[GLFW_KEY_LAST + 1]; char* clipboardString; @@ -167,6 +168,7 @@ CGDisplayModeRef previousMode; uint32_t unitNumber; id screen; + double fallbackRefreshRate; } _GLFWmonitorNS;
glfw/src/cocoa_time.c view
@@ -23,6 +23,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h"
glfw/src/cocoa_window.m view
@@ -23,6 +23,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" @@ -33,15 +35,14 @@ // static NSUInteger getStyleMask(_GLFWwindow* window) { - NSUInteger styleMask = 0; + NSUInteger styleMask = NSWindowStyleMaskMiniaturizable; if (window->monitor || !window->decorated) styleMask |= NSWindowStyleMaskBorderless; else { styleMask |= NSWindowStyleMaskTitled | - NSWindowStyleMaskClosable | - NSWindowStyleMaskMiniaturizable; + NSWindowStyleMaskClosable; if (window->resizable) styleMask |= NSWindowStyleMaskResizable; @@ -321,12 +322,6 @@ _glfwInputWindowFocus(window, GLFW_FALSE); } -- (void)windowDidChangeScreen:(NSNotification *)notification -{ - if (window->context.source == GLFW_NATIVE_CONTEXT_API) - _glfwUpdateDisplayLinkDisplayNSGL(window); -} - @end @@ -610,10 +605,8 @@ - (void)scrollWheel:(NSEvent *)event { - double deltaX, deltaY; - - deltaX = [event scrollingDeltaX]; - deltaY = [event scrollingDeltaY]; + double deltaX = [event scrollingDeltaX]; + double deltaY = [event scrollingDeltaY]; if ([event hasPreciseScrollingDeltas]) { @@ -730,9 +723,8 @@ else characters = (NSString*) string; - NSUInteger i, length = [characters length]; - - for (i = 0; i < length; i++) + const NSUInteger length = [characters length]; + for (NSUInteger i = 0; i < length; i++) { const unichar codepoint = [characters characterAtIndex:i]; if ((codepoint & 0xff00) == 0xf700) @@ -817,7 +809,7 @@ [window->ns.object setLevel:NSMainMenuWindowLevel + 1]; else { - [window->ns.object center]; + [(NSWindow*) window->ns.object center]; _glfw.ns.cascadePoint = NSPointToCGPoint([window->ns.object cascadeTopLeftFromPoint: NSPointFromCGPoint(_glfw.ns.cascadePoint)]); @@ -893,10 +885,7 @@ @autoreleasepool { if (!_glfw.ns.finishedLaunching) - { [NSApp run]; - _glfw.ns.finishedLaunching = GLFW_TRUE; - } if (!createNativeWindow(window, wndconfig, fbconfig)) return GLFW_FALSE; @@ -963,16 +952,20 @@ [window->ns.object close]; window->ns.object = nil; + // HACK: Allow Cocoa to catch up before returning + _glfwPlatformPollEvents(); + } // autoreleasepool } -void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char *title) +void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title) { @autoreleasepool { - [window->ns.object setTitle:@(title)]; + NSString* string = @(title); + [window->ns.object setTitle:string]; // HACK: Set the miniwindow title explicitly as setTitle: doesn't update it // if the window lacks NSWindowStyleMaskTitled - [window->ns.object setMiniwindowTitle:@(title)]; + [window->ns.object setMiniwindowTitle:string]; } // autoreleasepool } @@ -1033,7 +1026,14 @@ acquireMonitor(window); } else - [window->ns.object setContentSize:NSMakeSize(width, height)]; + { + NSRect contentRect = + [window->ns.object contentRectForFrameRect:[window->ns.object frame]]; + contentRect.origin.y += contentRect.size.height - height; + contentRect.size = NSMakeSize(width, height); + [window->ns.object setFrame:[window->ns.object frameRectForContentRect:contentRect] + display:YES]; + } } // autoreleasepool } @@ -1222,7 +1222,7 @@ // HACK: Changing the style mask can cause the first responder to be cleared [window->ns.object makeFirstResponder:window->ns.view]; - if (monitor) + if (window->monitor) { [window->ns.object setLevel:NSMainMenuWindowLevel + 1]; [window->ns.object setHasShadow:NO]; @@ -1377,6 +1377,9 @@ { @autoreleasepool { + if (!_glfw.ns.finishedLaunching) + [NSApp run]; + for (;;) { NSEvent* event = [NSApp nextEventMatchingMask:NSEventMaskAny @@ -1396,6 +1399,9 @@ { @autoreleasepool { + if (!_glfw.ns.finishedLaunching) + [NSApp run]; + // I wanted to pass NO to dequeue:, and rely on PollEvents to // dequeue and send. For reasons not at all clear to me, passing // NO to dequeue: causes this method never to return. @@ -1414,6 +1420,9 @@ { @autoreleasepool { + if (!_glfw.ns.finishedLaunching) + [NSApp run]; + NSDate* date = [NSDate dateWithTimeIntervalSinceNow:timeout]; NSEvent* event = [NSApp nextEventMatchingMask:NSEventMaskAny untilDate:date @@ -1431,6 +1440,9 @@ { @autoreleasepool { + if (!_glfw.ns.finishedLaunching) + [NSApp run]; + NSEvent* event = [NSEvent otherEventWithType:NSEventTypeApplicationDefined location:NSMakePoint(0, 0) modifierFlags:0 @@ -1504,8 +1516,10 @@ { @autoreleasepool { + const int key = _glfw.ns.keycodes[scancode]; + UInt32 deadKeyState = 0; - UniChar characters[8]; + UniChar characters[4]; UniCharCount characterCount = 0; if (UCKeyTranslate([(NSData*) _glfw.ns.unicodeData bytes], @@ -1530,12 +1544,12 @@ characterCount, kCFAllocatorNull); CFStringGetCString(string, - _glfw.ns.keyName, - sizeof(_glfw.ns.keyName), + _glfw.ns.keynames[key], + sizeof(_glfw.ns.keynames[key]), kCFStringEncodingUTF8); CFRelease(string); - return _glfw.ns.keyName; + return _glfw.ns.keynames[key]; } // autoreleasepool }
glfw/src/context.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h"
glfw/src/egl_context.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h" @@ -121,23 +123,24 @@ continue; #if defined(_GLFW_X11) - XVisualInfo vi = {0}; + { + XVisualInfo vi = {0}; - // Only consider EGLConfigs with associated Visuals - vi.visualid = getEGLConfigAttrib(n, EGL_NATIVE_VISUAL_ID); - if (!vi.visualid) - continue; + // Only consider EGLConfigs with associated Visuals + vi.visualid = getEGLConfigAttrib(n, EGL_NATIVE_VISUAL_ID); + if (!vi.visualid) + continue; - if (desired->transparent) - { - int count; - XVisualInfo* vis = XGetVisualInfo(_glfw.x11.display, - VisualIDMask, &vi, - &count); - if (vis) + if (desired->transparent) { - u->transparent = _glfwIsVisualTransparentX11(vis[0].visual); - XFree(vis); + int count; + XVisualInfo* vis = + XGetVisualInfo(_glfw.x11.display, VisualIDMask, &vi, &count); + if (vis) + { + u->transparent = _glfwIsVisualTransparentX11(vis[0].visual); + XFree(vis); + } } } #endif // _GLFW_X11
glfw/src/egl_context.h view
@@ -47,26 +47,26 @@ #error "No supported EGL platform selected" #endif -#define EGL_SUCCESS 0x3000 -#define EGL_NOT_INITIALIZED 0x3001 +#define EGL_SUCCESS 0x3000 +#define EGL_NOT_INITIALIZED 0x3001 #define EGL_BAD_ACCESS 0x3002 #define EGL_BAD_ALLOC 0x3003 #define EGL_BAD_ATTRIBUTE 0x3004 #define EGL_BAD_CONFIG 0x3005 -#define EGL_BAD_CONTEXT 0x3006 -#define EGL_BAD_CURRENT_SURFACE 0x3007 -#define EGL_BAD_DISPLAY 0x3008 +#define EGL_BAD_CONTEXT 0x3006 +#define EGL_BAD_CURRENT_SURFACE 0x3007 +#define EGL_BAD_DISPLAY 0x3008 #define EGL_BAD_MATCH 0x3009 #define EGL_BAD_NATIVE_PIXMAP 0x300a #define EGL_BAD_NATIVE_WINDOW 0x300b #define EGL_BAD_PARAMETER 0x300c -#define EGL_BAD_SURFACE 0x300d +#define EGL_BAD_SURFACE 0x300d #define EGL_CONTEXT_LOST 0x300e #define EGL_COLOR_BUFFER_TYPE 0x303f #define EGL_RGB_BUFFER 0x308e #define EGL_SURFACE_TYPE 0x3033 #define EGL_WINDOW_BIT 0x0004 -#define EGL_RENDERABLE_TYPE 0x3040 +#define EGL_RENDERABLE_TYPE 0x3040 #define EGL_OPENGL_ES_BIT 0x0001 #define EGL_OPENGL_ES2_BIT 0x0004 #define EGL_OPENGL_BIT 0x0008 @@ -76,7 +76,7 @@ #define EGL_RED_SIZE 0x3024 #define EGL_DEPTH_SIZE 0x3025 #define EGL_STENCIL_SIZE 0x3026 -#define EGL_SAMPLES 0x3031 +#define EGL_SAMPLES 0x3031 #define EGL_OPENGL_ES_API 0x30a0 #define EGL_OPENGL_API 0x30a2 #define EGL_NONE 0x3038
glfw/src/glx_context.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" @@ -226,8 +228,6 @@ return _glfw_dlsym(_glfw.glx.handle, procname); } -// Destroy the OpenGL context -// static void destroyContextGLX(_GLFWwindow* window) { if (window->context.glx.window)
glfw/src/glx_context.h view
@@ -29,11 +29,11 @@ #define GLX_RGBA_BIT 0x00000001 #define GLX_WINDOW_BIT 0x00000001 #define GLX_DRAWABLE_TYPE 0x8010 -#define GLX_RENDER_TYPE 0x8011 +#define GLX_RENDER_TYPE 0x8011 #define GLX_RGBA_TYPE 0x8014 #define GLX_DOUBLEBUFFER 5 #define GLX_STEREO 6 -#define GLX_AUX_BUFFERS 7 +#define GLX_AUX_BUFFERS 7 #define GLX_RED_SIZE 8 #define GLX_GREEN_SIZE 9 #define GLX_BLUE_SIZE 10 @@ -42,7 +42,7 @@ #define GLX_STENCIL_SIZE 13 #define GLX_ACCUM_RED_SIZE 14 #define GLX_ACCUM_GREEN_SIZE 15 -#define GLX_ACCUM_BLUE_SIZE 16 +#define GLX_ACCUM_BLUE_SIZE 16 #define GLX_ACCUM_ALPHA_SIZE 17 #define GLX_SAMPLES 0x186a1 #define GLX_VISUAL_ID 0x800b
glfw/src/init.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h" #include "mappings.h"
glfw/src/input.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h"
glfw/src/internal.h view
@@ -84,8 +84,8 @@ typedef void (* _GLFWdestroycontextfun)(_GLFWwindow*); #define GL_VERSION 0x1f02 -#define GL_NONE 0 -#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_NONE 0 +#define GL_COLOR_BUFFER_BIT 0x00004000 #define GL_UNSIGNED_BYTE 0x1401 #define GL_EXTENSIONS 0x1f03 #define GL_NUM_EXTENSIONS 0x821d @@ -102,7 +102,7 @@ #define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82fc #define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 -typedef int GLint; +typedef int GLint; typedef unsigned int GLuint; typedef unsigned int GLenum; typedef unsigned int GLbitfield;
glfw/src/linux_joystick.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" @@ -104,9 +106,7 @@ // static void pollAbsState(_GLFWjoystick* js) { - int code; - - for (code = 0; code < ABS_CNT; code++) + for (int code = 0; code < ABS_CNT; code++) { if (js->linjs.absMap[code] < 0) continue; @@ -126,18 +126,7 @@ // static GLFWbool openJoystickDevice(const char* path) { - int jid, code; - char name[256] = ""; - char guid[33] = ""; - char evBits[(EV_CNT + 7) / 8] = {0}; - char keyBits[(KEY_CNT + 7) / 8] = {0}; - char absBits[(ABS_CNT + 7) / 8] = {0}; - int axisCount = 0, buttonCount = 0, hatCount = 0; - struct input_id id; - _GLFWjoystickLinux linjs = {0}; - _GLFWjoystick* js = NULL; - - for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + for (int jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) { if (!_glfw.joysticks[jid].present) continue; @@ -145,10 +134,16 @@ return GLFW_FALSE; } + _GLFWjoystickLinux linjs = {0}; linjs.fd = open(path, O_RDONLY | O_NONBLOCK); if (linjs.fd == -1) return GLFW_FALSE; + char evBits[(EV_CNT + 7) / 8] = {0}; + char keyBits[(KEY_CNT + 7) / 8] = {0}; + char absBits[(ABS_CNT + 7) / 8] = {0}; + struct input_id id; + if (ioctl(linjs.fd, EVIOCGBIT(0, sizeof(evBits)), evBits) < 0 || ioctl(linjs.fd, EVIOCGBIT(EV_KEY, sizeof(keyBits)), keyBits) < 0 || ioctl(linjs.fd, EVIOCGBIT(EV_ABS, sizeof(absBits)), absBits) < 0 || @@ -168,9 +163,13 @@ return GLFW_FALSE; } + char name[256] = ""; + if (ioctl(linjs.fd, EVIOCGNAME(sizeof(name)), name) < 0) strncpy(name, "Unknown", sizeof(name)); + char guid[33] = ""; + // Generate a joystick GUID that matches the SDL 2.0.5+ one if (id.vendor && id.product && id.version) { @@ -189,7 +188,9 @@ name[8], name[9], name[10]); } - for (code = BTN_MISC; code < KEY_CNT; code++) + int axisCount = 0, buttonCount = 0, hatCount = 0; + + for (int code = BTN_MISC; code < KEY_CNT; code++) { if (!isBitSet(code, keyBits)) continue; @@ -198,7 +199,7 @@ buttonCount++; } - for (code = 0; code < ABS_CNT; code++) + for (int code = 0; code < ABS_CNT; code++) { linjs.absMap[code] = -1; if (!isBitSet(code, absBits)) @@ -221,7 +222,8 @@ } } - js = _glfwAllocJoystick(name, guid, axisCount, buttonCount, hatCount); + _GLFWjoystick* js = + _glfwAllocJoystick(name, guid, axisCount, buttonCount, hatCount); if (!js) { close(linjs.fd); @@ -266,8 +268,6 @@ // GLFWbool _glfwInitJoysticksLinux(void) { - DIR* dir; - int count = 0; const char* dirname = "/dev/input"; _glfw.linjs.inotify = inotify_init1(IN_NONBLOCK | IN_CLOEXEC); @@ -289,7 +289,9 @@ return GLFW_FALSE; } - dir = opendir(dirname); + int count = 0; + + DIR* dir = opendir(dirname); if (dir) { struct dirent* entry; @@ -344,12 +346,11 @@ void _glfwDetectJoystickConnectionLinux(void) { - ssize_t offset = 0; - char buffer[16384]; - if (_glfw.linjs.inotify <= 0) return; + ssize_t offset = 0; + char buffer[16384]; const ssize_t size = read(_glfw.linjs.inotify, buffer, sizeof(buffer)); while (size > offset) @@ -369,9 +370,7 @@ openJoystickDevice(path); else if (e->mask & IN_DELETE) { - int jid; - - for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) + for (int jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) { if (strcmp(_glfw.joysticks[jid].linjs.path, path) == 0) {
glfw/src/linux_joystick.h view
@@ -1,62 +1,62 @@-//======================================================================== -// GLFW 3.3 Linux - www.glfw.org -//------------------------------------------------------------------------ -// Copyright (c) 2014 Jonas Ådahl <jadahl@gmail.com> -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would -// be appreciated but is not required. -// -// 2. Altered source versions must be plainly marked as such, and must not -// be misrepresented as being the original software. -// -// 3. This notice may not be removed or altered from any source -// distribution. -// -//======================================================================== - -#include <linux/input.h> -#include <linux/limits.h> -#include <regex.h> - -#define _GLFW_PLATFORM_JOYSTICK_STATE _GLFWjoystickLinux linjs -#define _GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE _GLFWlibraryLinux linjs - -#define _GLFW_PLATFORM_MAPPING_NAME "Linux" - -// Linux-specific joystick data -// -typedef struct _GLFWjoystickLinux -{ - int fd; - char path[PATH_MAX]; - int keyMap[KEY_CNT - BTN_MISC]; - int absMap[ABS_CNT]; - struct input_absinfo absInfo[ABS_CNT]; - int hats[4][2]; -} _GLFWjoystickLinux; - -// Linux-specific joystick API data -// -typedef struct _GLFWlibraryLinux -{ - int inotify; - int watch; - regex_t regex; - GLFWbool dropped; -} _GLFWlibraryLinux; - - -GLFWbool _glfwInitJoysticksLinux(void); -void _glfwTerminateJoysticksLinux(void); -void _glfwDetectJoystickConnectionLinux(void); - +//========================================================================+// GLFW 3.3 Linux - www.glfw.org+//------------------------------------------------------------------------+// Copyright (c) 2014 Jonas Ådahl <jadahl@gmail.com>+//+// This software is provided 'as-is', without any express or implied+// warranty. In no event will the authors be held liable for any damages+// arising from the use of this software.+//+// Permission is granted to anyone to use this software for any purpose,+// including commercial applications, and to alter it and redistribute it+// freely, subject to the following restrictions:+//+// 1. The origin of this software must not be misrepresented; you must not+// claim that you wrote the original software. If you use this software+// in a product, an acknowledgment in the product documentation would+// be appreciated but is not required.+//+// 2. Altered source versions must be plainly marked as such, and must not+// be misrepresented as being the original software.+//+// 3. This notice may not be removed or altered from any source+// distribution.+//+//========================================================================++#include <linux/input.h>+#include <linux/limits.h>+#include <regex.h>++#define _GLFW_PLATFORM_JOYSTICK_STATE _GLFWjoystickLinux linjs+#define _GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE _GLFWlibraryLinux linjs++#define _GLFW_PLATFORM_MAPPING_NAME "Linux"++// Linux-specific joystick data+//+typedef struct _GLFWjoystickLinux+{+ int fd;+ char path[PATH_MAX];+ int keyMap[KEY_CNT - BTN_MISC];+ int absMap[ABS_CNT];+ struct input_absinfo absInfo[ABS_CNT];+ int hats[4][2];+} _GLFWjoystickLinux;++// Linux-specific joystick API data+//+typedef struct _GLFWlibraryLinux+{+ int inotify;+ int watch;+ regex_t regex;+ GLFWbool dropped;+} _GLFWlibraryLinux;+++GLFWbool _glfwInitJoysticksLinux(void);+void _glfwTerminateJoysticksLinux(void);+void _glfwDetectJoystickConnectionLinux(void);+
glfw/src/mappings.h view
@@ -84,7 +84,6 @@ "030000000d0f00008700000000000000,Fighting Stick mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", "030000000d0f00002700000000000000,FIGHTING STICK V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", "78696e70757403000000000000000000,Fightstick TES,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Windows,", -"03000000790000000600000000000000,G-Shark GS-GP702,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,", "03000000260900002625000000000000,Gamecube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,lefttrigger:a4,leftx:a0,lefty:a1,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Windows,", "030000008f0e00000d31000000000000,GAMEPAD 3 TURBO,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,", "03000000280400000140000000000000,GamePad Pro USB,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,", @@ -207,7 +206,6 @@ "030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,", "03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Mac OS X,", "03000000a306000022f6000001030000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X,", -"03000000790000000600000000000000,G-Shark GP-702,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Mac OS X,", "03000000ad1b000001f9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,", "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,", "030000000d0f00005f00000000010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,",
glfw/src/monitor.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h" @@ -53,6 +55,10 @@ // Then sort on screen area if (farea != sarea) return farea - sarea; + + // Then sort on width + if (fm->width != sm->width) + return fm->width - sm->width; // Lastly sort on refresh rate return fm->refreshRate - sm->refreshRate;
glfw/src/nsgl_context.h view
@@ -24,6 +24,9 @@ // //======================================================================== +// NOTE: Many Cocoa enum values have been renamed and we need to build across +// SDK versions where one is unavailable or the other deprecated +// We use the newer names in code and these macros to handle compatibility #if MAC_OS_X_VERSION_MAX_ALLOWED < 101400 #define NSOpenGLContextParameterSwapInterval NSOpenGLCPSwapInterval #define NSOpenGLContextParameterSurfaceOpacity NSOpenGLCPSurfaceOpacity @@ -41,10 +44,6 @@ { id pixelFormat; id object; - CVDisplayLinkRef displayLink; - atomic_int swapInterval; - int swapIntervalsPassed; - id swapIntervalCond; } _GLFWcontextNSGL; @@ -64,5 +63,4 @@ const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig); void _glfwDestroyContextNSGL(_GLFWwindow* window); -void _glfwUpdateDisplayLinkDisplayNSGL(_GLFWwindow* window);
glfw/src/nsgl_context.m view
@@ -23,32 +23,13 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" -// Display link callback for manual swap interval implementation -// This is based on a similar workaround added to SDL2 -// -static CVReturn displayLinkCallback(CVDisplayLinkRef displayLink, - const CVTimeStamp* now, - const CVTimeStamp* outputTime, - CVOptionFlags flagsIn, - CVOptionFlags* flagsOut, - void* userInfo) -{ - _GLFWwindow* window = (_GLFWwindow *) userInfo; - - const int interval = atomic_load(&window->context.nsgl.swapInterval); - if (interval > 0) - { - [window->context.nsgl.swapIntervalCond lock]; - window->context.nsgl.swapIntervalsPassed++; - [window->context.nsgl.swapIntervalCond signal]; - [window->context.nsgl.swapIntervalCond unlock]; - } - - return kCVReturnSuccess; -} +#include <unistd.h> +#include <math.h> static void makeContextCurrentNSGL(_GLFWwindow* window) { @@ -68,19 +49,28 @@ { @autoreleasepool { - const int interval = atomic_load(&window->context.nsgl.swapInterval); - if (interval > 0) + // HACK: Simulate vsync with usleep as NSGL swap interval does not apply to + // windows with a non-visible occlusion state + if (!([window->ns.object occlusionState] & NSWindowOcclusionStateVisible)) { - [window->context.nsgl.swapIntervalCond lock]; - do + int interval = 0; + [window->context.nsgl.object getValues:&interval + forParameter:NSOpenGLContextParameterSwapInterval]; + + if (interval > 0) { - [window->context.nsgl.swapIntervalCond wait]; - } while (window->context.nsgl.swapIntervalsPassed % interval != 0); - window->context.nsgl.swapIntervalsPassed = 0; - [window->context.nsgl.swapIntervalCond unlock]; + const double framerate = 60.0; + const uint64_t frequency = _glfwPlatformGetTimerFrequency(); + const uint64_t value = _glfwPlatformGetTimerValue(); + + const double elapsed = value / (double) frequency; + const double period = 1.0 / framerate; + const double delay = period - fmod(elapsed, period); + + usleep(floorl(delay * 1e6)); + } } - // ARP appears to be unnecessary, but this is future-proof [window->context.nsgl.object flushBuffer]; } // autoreleasepool @@ -89,11 +79,14 @@ static void swapIntervalNSGL(int interval) { @autoreleasepool { + _GLFWwindow* window = _glfwPlatformGetTls(&_glfw.contextSlot); - atomic_store(&window->context.nsgl.swapInterval, interval); - [window->context.nsgl.swapIntervalCond lock]; - window->context.nsgl.swapIntervalsPassed = 0; - [window->context.nsgl.swapIntervalCond unlock]; + if (window) + { + [window->context.nsgl.object setValues:&interval + forParameter:NSOpenGLContextParameterSwapInterval]; + } + } // autoreleasepool } @@ -117,23 +110,10 @@ return symbol; } -// Destroy the OpenGL context -// static void destroyContextNSGL(_GLFWwindow* window) { @autoreleasepool { - if (window->context.nsgl.displayLink) - { - if (CVDisplayLinkIsRunning(window->context.nsgl.displayLink)) - CVDisplayLinkStop(window->context.nsgl.displayLink); - - CVDisplayLinkRelease(window->context.nsgl.displayLink); - } - - [window->context.nsgl.swapIntervalCond release]; - window->context.nsgl.swapIntervalCond = nil; - [window->context.nsgl.pixelFormat release]; window->context.nsgl.pixelFormat = nil; @@ -339,7 +319,7 @@ return GLFW_FALSE; } - NSOpenGLContext* share = NULL; + NSOpenGLContext* share = nil; if (ctxconfig->share) share = ctxconfig->share->context.nsgl.object; @@ -361,17 +341,10 @@ forParameter:NSOpenGLContextParameterSurfaceOpacity]; } - if (window->ns.retina) - [window->ns.view setWantsBestResolutionOpenGLSurface:YES]; - - GLint interval = 0; - [window->context.nsgl.object setValues:&interval - forParameter:NSOpenGLContextParameterSwapInterval]; + [window->ns.view setWantsBestResolutionOpenGLSurface:window->ns.retina]; [window->context.nsgl.object setView:window->ns.view]; - window->context.nsgl.swapIntervalCond = [NSCondition new]; - window->context.makeCurrent = makeContextCurrentNSGL; window->context.swapBuffers = swapBuffersNSGL; window->context.swapInterval = swapIntervalNSGL; @@ -379,27 +352,10 @@ window->context.getProcAddress = getProcAddressNSGL; window->context.destroy = destroyContextNSGL; - CVDisplayLinkCreateWithActiveCGDisplays(&window->context.nsgl.displayLink); - CVDisplayLinkSetOutputCallback(window->context.nsgl.displayLink, - &displayLinkCallback, - window); - CVDisplayLinkStart(window->context.nsgl.displayLink); - - _glfwUpdateDisplayLinkDisplayNSGL(window); return GLFW_TRUE; } -void _glfwUpdateDisplayLinkDisplayNSGL(_GLFWwindow* window) -{ - CGDirectDisplayID displayID = - [[[window->ns.object screen] deviceDescription][@"NSScreenNumber"] unsignedIntValue]; - if (!displayID) - return; - CVDisplayLinkSetCurrentCGDisplay(window->context.nsgl.displayLink, displayID); -} - - ////////////////////////////////////////////////////////////////////////// ////// GLFW native API ////// ////////////////////////////////////////////////////////////////////////// @@ -412,7 +368,7 @@ if (window->context.client == GLFW_NO_API) { _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); - return NULL; + return nil; } return window->context.nsgl.object;
glfw/src/null_init.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h"
glfw/src/null_joystick.c view
@@ -23,6 +23,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h"
glfw/src/null_joystick.h view
@@ -24,8 +24,8 @@ // //======================================================================== -#define _GLFW_PLATFORM_JOYSTICK_STATE int nulljs -#define _GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE int nulljs +#define _GLFW_PLATFORM_JOYSTICK_STATE struct { int dummyJoystick; } +#define _GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE struct { int dummyLibraryJoystick; } #define _GLFW_PLATFORM_MAPPING_NAME ""
glfw/src/null_monitor.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h"
glfw/src/null_platform.h view
@@ -29,13 +29,13 @@ #define _GLFW_PLATFORM_WINDOW_STATE _GLFWwindowNull null -#define _GLFW_PLATFORM_CONTEXT_STATE -#define _GLFW_PLATFORM_MONITOR_STATE -#define _GLFW_PLATFORM_CURSOR_STATE -#define _GLFW_PLATFORM_LIBRARY_WINDOW_STATE -#define _GLFW_PLATFORM_LIBRARY_CONTEXT_STATE -#define _GLFW_EGL_CONTEXT_STATE -#define _GLFW_EGL_LIBRARY_CONTEXT_STATE +#define _GLFW_PLATFORM_CONTEXT_STATE struct { int dummyContext; } +#define _GLFW_PLATFORM_MONITOR_STATE struct { int dummyMonitor; } +#define _GLFW_PLATFORM_CURSOR_STATE struct { int dummyCursor; } +#define _GLFW_PLATFORM_LIBRARY_WINDOW_STATE struct { int dummyLibraryWindow; } +#define _GLFW_PLATFORM_LIBRARY_CONTEXT_STATE struct { int dummyLibraryContext; } +#define _GLFW_EGL_CONTEXT_STATE struct { int dummyEGLContext; } +#define _GLFW_EGL_LIBRARY_CONTEXT_STATE struct { int dummyEGLLibraryContext; } #include "osmesa_context.h" #include "posix_time.h"
glfw/src/null_window.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h"
glfw/src/osmesa_context.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include <stdlib.h> #include <string.h>
glfw/src/osmesa_context.h view
@@ -1,94 +1,94 @@-//======================================================================== -// GLFW 3.3 OSMesa - www.glfw.org -//------------------------------------------------------------------------ -// Copyright (c) 2016 Google Inc. -// Copyright (c) 2016-2017 Camilla Löwy <elmindreda@glfw.org> -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would -// be appreciated but is not required. -// -// 2. Altered source versions must be plainly marked as such, and must not -// be misrepresented as being the original software. -// -// 3. This notice may not be removed or altered from any source -// distribution. -// -//======================================================================== - -#define OSMESA_RGBA 0x1908 -#define OSMESA_FORMAT 0x22 -#define OSMESA_DEPTH_BITS 0x30 -#define OSMESA_STENCIL_BITS 0x31 -#define OSMESA_ACCUM_BITS 0x32 -#define OSMESA_PROFILE 0x33 -#define OSMESA_CORE_PROFILE 0x34 -#define OSMESA_COMPAT_PROFILE 0x35 -#define OSMESA_CONTEXT_MAJOR_VERSION 0x36 -#define OSMESA_CONTEXT_MINOR_VERSION 0x37 - -typedef void* OSMesaContext; -typedef void (*OSMESAproc)(void); - -typedef OSMesaContext (GLAPIENTRY * PFN_OSMesaCreateContextExt)(GLenum,GLint,GLint,GLint,OSMesaContext); -typedef OSMesaContext (GLAPIENTRY * PFN_OSMesaCreateContextAttribs)(const int*,OSMesaContext); -typedef void (GLAPIENTRY * PFN_OSMesaDestroyContext)(OSMesaContext); -typedef int (GLAPIENTRY * PFN_OSMesaMakeCurrent)(OSMesaContext,void*,int,int,int); -typedef int (GLAPIENTRY * PFN_OSMesaGetColorBuffer)(OSMesaContext,int*,int*,int*,void**); -typedef int (GLAPIENTRY * PFN_OSMesaGetDepthBuffer)(OSMesaContext,int*,int*,int*,void**); -typedef GLFWglproc (GLAPIENTRY * PFN_OSMesaGetProcAddress)(const char*); -#define OSMesaCreateContextExt _glfw.osmesa.CreateContextExt -#define OSMesaCreateContextAttribs _glfw.osmesa.CreateContextAttribs -#define OSMesaDestroyContext _glfw.osmesa.DestroyContext -#define OSMesaMakeCurrent _glfw.osmesa.MakeCurrent -#define OSMesaGetColorBuffer _glfw.osmesa.GetColorBuffer -#define OSMesaGetDepthBuffer _glfw.osmesa.GetDepthBuffer -#define OSMesaGetProcAddress _glfw.osmesa.GetProcAddress - -#define _GLFW_OSMESA_CONTEXT_STATE _GLFWcontextOSMesa osmesa -#define _GLFW_OSMESA_LIBRARY_CONTEXT_STATE _GLFWlibraryOSMesa osmesa - - -// OSMesa-specific per-context data -// -typedef struct _GLFWcontextOSMesa -{ - OSMesaContext handle; - int width; - int height; - void* buffer; - -} _GLFWcontextOSMesa; - -// OSMesa-specific global data -// -typedef struct _GLFWlibraryOSMesa -{ - void* handle; - - PFN_OSMesaCreateContextExt CreateContextExt; - PFN_OSMesaCreateContextAttribs CreateContextAttribs; - PFN_OSMesaDestroyContext DestroyContext; - PFN_OSMesaMakeCurrent MakeCurrent; - PFN_OSMesaGetColorBuffer GetColorBuffer; - PFN_OSMesaGetDepthBuffer GetDepthBuffer; - PFN_OSMesaGetProcAddress GetProcAddress; - -} _GLFWlibraryOSMesa; - - -GLFWbool _glfwInitOSMesa(void); -void _glfwTerminateOSMesa(void); -GLFWbool _glfwCreateContextOSMesa(_GLFWwindow* window, - const _GLFWctxconfig* ctxconfig, - const _GLFWfbconfig* fbconfig); - +//========================================================================+// GLFW 3.3 OSMesa - www.glfw.org+//------------------------------------------------------------------------+// Copyright (c) 2016 Google Inc.+// Copyright (c) 2016-2017 Camilla Löwy <elmindreda@glfw.org>+//+// This software is provided 'as-is', without any express or implied+// warranty. In no event will the authors be held liable for any damages+// arising from the use of this software.+//+// Permission is granted to anyone to use this software for any purpose,+// including commercial applications, and to alter it and redistribute it+// freely, subject to the following restrictions:+//+// 1. The origin of this software must not be misrepresented; you must not+// claim that you wrote the original software. If you use this software+// in a product, an acknowledgment in the product documentation would+// be appreciated but is not required.+//+// 2. Altered source versions must be plainly marked as such, and must not+// be misrepresented as being the original software.+//+// 3. This notice may not be removed or altered from any source+// distribution.+//+//========================================================================++#define OSMESA_RGBA 0x1908+#define OSMESA_FORMAT 0x22+#define OSMESA_DEPTH_BITS 0x30+#define OSMESA_STENCIL_BITS 0x31+#define OSMESA_ACCUM_BITS 0x32+#define OSMESA_PROFILE 0x33+#define OSMESA_CORE_PROFILE 0x34+#define OSMESA_COMPAT_PROFILE 0x35+#define OSMESA_CONTEXT_MAJOR_VERSION 0x36+#define OSMESA_CONTEXT_MINOR_VERSION 0x37++typedef void* OSMesaContext;+typedef void (*OSMESAproc)(void);++typedef OSMesaContext (GLAPIENTRY * PFN_OSMesaCreateContextExt)(GLenum,GLint,GLint,GLint,OSMesaContext);+typedef OSMesaContext (GLAPIENTRY * PFN_OSMesaCreateContextAttribs)(const int*,OSMesaContext);+typedef void (GLAPIENTRY * PFN_OSMesaDestroyContext)(OSMesaContext);+typedef int (GLAPIENTRY * PFN_OSMesaMakeCurrent)(OSMesaContext,void*,int,int,int);+typedef int (GLAPIENTRY * PFN_OSMesaGetColorBuffer)(OSMesaContext,int*,int*,int*,void**);+typedef int (GLAPIENTRY * PFN_OSMesaGetDepthBuffer)(OSMesaContext,int*,int*,int*,void**);+typedef GLFWglproc (GLAPIENTRY * PFN_OSMesaGetProcAddress)(const char*);+#define OSMesaCreateContextExt _glfw.osmesa.CreateContextExt+#define OSMesaCreateContextAttribs _glfw.osmesa.CreateContextAttribs+#define OSMesaDestroyContext _glfw.osmesa.DestroyContext+#define OSMesaMakeCurrent _glfw.osmesa.MakeCurrent+#define OSMesaGetColorBuffer _glfw.osmesa.GetColorBuffer+#define OSMesaGetDepthBuffer _glfw.osmesa.GetDepthBuffer+#define OSMesaGetProcAddress _glfw.osmesa.GetProcAddress++#define _GLFW_OSMESA_CONTEXT_STATE _GLFWcontextOSMesa osmesa+#define _GLFW_OSMESA_LIBRARY_CONTEXT_STATE _GLFWlibraryOSMesa osmesa+++// OSMesa-specific per-context data+//+typedef struct _GLFWcontextOSMesa+{+ OSMesaContext handle;+ int width;+ int height;+ void* buffer;++} _GLFWcontextOSMesa;++// OSMesa-specific global data+//+typedef struct _GLFWlibraryOSMesa+{+ void* handle;++ PFN_OSMesaCreateContextExt CreateContextExt;+ PFN_OSMesaCreateContextAttribs CreateContextAttribs;+ PFN_OSMesaDestroyContext DestroyContext;+ PFN_OSMesaMakeCurrent MakeCurrent;+ PFN_OSMesaGetColorBuffer GetColorBuffer;+ PFN_OSMesaGetDepthBuffer GetDepthBuffer;+ PFN_OSMesaGetProcAddress GetProcAddress;++} _GLFWlibraryOSMesa;+++GLFWbool _glfwInitOSMesa(void);+void _glfwTerminateOSMesa(void);+GLFWbool _glfwCreateContextOSMesa(_GLFWwindow* window,+ const _GLFWctxconfig* ctxconfig,+ const _GLFWfbconfig* fbconfig);+
glfw/src/posix_thread.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h"
glfw/src/posix_thread.h view
@@ -1,51 +1,51 @@-//======================================================================== -// GLFW 3.3 POSIX - www.glfw.org -//------------------------------------------------------------------------ -// Copyright (c) 2002-2006 Marcus Geelnard -// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org> -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would -// be appreciated but is not required. -// -// 2. Altered source versions must be plainly marked as such, and must not -// be misrepresented as being the original software. -// -// 3. This notice may not be removed or altered from any source -// distribution. -// -//======================================================================== - -#include <pthread.h> - -#define _GLFW_PLATFORM_TLS_STATE _GLFWtlsPOSIX posix -#define _GLFW_PLATFORM_MUTEX_STATE _GLFWmutexPOSIX posix - - -// POSIX-specific thread local storage data -// -typedef struct _GLFWtlsPOSIX -{ - GLFWbool allocated; - pthread_key_t key; - -} _GLFWtlsPOSIX; - -// POSIX-specific mutex data -// -typedef struct _GLFWmutexPOSIX -{ - GLFWbool allocated; - pthread_mutex_t handle; - -} _GLFWmutexPOSIX; - +//========================================================================+// GLFW 3.3 POSIX - www.glfw.org+//------------------------------------------------------------------------+// Copyright (c) 2002-2006 Marcus Geelnard+// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org>+//+// This software is provided 'as-is', without any express or implied+// warranty. In no event will the authors be held liable for any damages+// arising from the use of this software.+//+// Permission is granted to anyone to use this software for any purpose,+// including commercial applications, and to alter it and redistribute it+// freely, subject to the following restrictions:+//+// 1. The origin of this software must not be misrepresented; you must not+// claim that you wrote the original software. If you use this software+// in a product, an acknowledgment in the product documentation would+// be appreciated but is not required.+//+// 2. Altered source versions must be plainly marked as such, and must not+// be misrepresented as being the original software.+//+// 3. This notice may not be removed or altered from any source+// distribution.+//+//========================================================================++#include <pthread.h>++#define _GLFW_PLATFORM_TLS_STATE _GLFWtlsPOSIX posix+#define _GLFW_PLATFORM_MUTEX_STATE _GLFWmutexPOSIX posix+++// POSIX-specific thread local storage data+//+typedef struct _GLFWtlsPOSIX+{+ GLFWbool allocated;+ pthread_key_t key;++} _GLFWtlsPOSIX;++// POSIX-specific mutex data+//+typedef struct _GLFWmutexPOSIX+{+ GLFWbool allocated;+ pthread_mutex_t handle;++} _GLFWmutexPOSIX;+
glfw/src/posix_time.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h"
glfw/src/posix_time.h view
@@ -1,44 +1,44 @@-//======================================================================== -// GLFW 3.3 POSIX - www.glfw.org -//------------------------------------------------------------------------ -// Copyright (c) 2002-2006 Marcus Geelnard -// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org> -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would -// be appreciated but is not required. -// -// 2. Altered source versions must be plainly marked as such, and must not -// be misrepresented as being the original software. -// -// 3. This notice may not be removed or altered from any source -// distribution. -// -//======================================================================== - -#define _GLFW_PLATFORM_LIBRARY_TIMER_STATE _GLFWtimerPOSIX posix - -#include <stdint.h> - - -// POSIX-specific global timer data -// -typedef struct _GLFWtimerPOSIX -{ - GLFWbool monotonic; - uint64_t frequency; - -} _GLFWtimerPOSIX; - - -void _glfwInitTimerPOSIX(void); - +//========================================================================+// GLFW 3.3 POSIX - www.glfw.org+//------------------------------------------------------------------------+// Copyright (c) 2002-2006 Marcus Geelnard+// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org>+//+// This software is provided 'as-is', without any express or implied+// warranty. In no event will the authors be held liable for any damages+// arising from the use of this software.+//+// Permission is granted to anyone to use this software for any purpose,+// including commercial applications, and to alter it and redistribute it+// freely, subject to the following restrictions:+//+// 1. The origin of this software must not be misrepresented; you must not+// claim that you wrote the original software. If you use this software+// in a product, an acknowledgment in the product documentation would+// be appreciated but is not required.+//+// 2. Altered source versions must be plainly marked as such, and must not+// be misrepresented as being the original software.+//+// 3. This notice may not be removed or altered from any source+// distribution.+//+//========================================================================++#define _GLFW_PLATFORM_LIBRARY_TIMER_STATE _GLFWtimerPOSIX posix++#include <stdint.h>+++// POSIX-specific global timer data+//+typedef struct _GLFWtimerPOSIX+{+ GLFWbool monotonic;+ uint64_t frequency;++} _GLFWtimerPOSIX;+++void _glfwInitTimerPOSIX(void);+
glfw/src/vulkan.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h"
glfw/src/wgl_context.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h" @@ -75,8 +77,8 @@ { const int attrib = WGL_NUMBER_PIXEL_FORMATS_ARB; - if (!_glfw.wgl.GetPixelFormatAttribivARB(window->context.wgl.dc, - 1, 0, 1, &attrib, &nativeCount)) + if (!wglGetPixelFormatAttribivARB(window->context.wgl.dc, + 1, 0, 1, &attrib, &nativeCount)) { _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, "WGL: Failed to retrieve pixel format attribute"); @@ -139,10 +141,10 @@ { // Get pixel format attributes through "modern" extension - if (!_glfw.wgl.GetPixelFormatAttribivARB(window->context.wgl.dc, - pixelFormat, 0, - attribCount, - attribs, values)) + if (!wglGetPixelFormatAttribivARB(window->context.wgl.dc, + pixelFormat, 0, + attribCount, + attribs, values)) { _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, "WGL: Failed to retrieve pixel format attributes"); @@ -360,7 +362,7 @@ } if (_glfw.wgl.EXT_swap_control) - _glfw.wgl.SwapIntervalEXT(interval); + wglSwapIntervalEXT(interval); } static int extensionSupportedWGL(const char* extension) @@ -368,9 +370,9 @@ const char* extensions = NULL; if (_glfw.wgl.GetExtensionsStringARB) - extensions = _glfw.wgl.GetExtensionsStringARB(wglGetCurrentDC()); + extensions = wglGetExtensionsStringARB(wglGetCurrentDC()); else if (_glfw.wgl.GetExtensionsStringEXT) - extensions = _glfw.wgl.GetExtensionsStringEXT(); + extensions = wglGetExtensionsStringEXT(); if (!extensions) return GLFW_FALSE; @@ -387,8 +389,6 @@ return (GLFWglproc) GetProcAddress(_glfw.wgl.instance, procname); } -// Destroy the OpenGL context -// static void destroyContextWGL(_GLFWwindow* window) { if (window->context.wgl.handle) @@ -693,8 +693,7 @@ setAttrib(0, 0); window->context.wgl.handle = - _glfw.wgl.CreateContextAttribsARB(window->context.wgl.dc, - share, attribs); + wglCreateContextAttribsARB(window->context.wgl.dc, share, attribs); if (!window->context.wgl.handle) { const DWORD error = GetLastError();
glfw/src/wgl_context.h view
@@ -76,12 +76,19 @@ #define ERROR_INVALID_PROFILE_ARB 0x2096 #define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 +// WGL extension pointer typedefs typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC)(int); typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC)(HDC,int,int,UINT,const int*,int*); typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC)(void); typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC); typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC,HGLRC,const int*); +#define wglSwapIntervalEXT _glfw.wgl.SwapIntervalEXT +#define wglGetPixelFormatAttribivARB _glfw.wgl.GetPixelFormatAttribivARB +#define wglGetExtensionsStringEXT _glfw.wgl.GetExtensionsStringEXT +#define wglGetExtensionsStringARB _glfw.wgl.GetExtensionsStringARB +#define wglCreateContextAttribsARB _glfw.wgl.CreateContextAttribsARB +// opengl32.dll function pointer typedefs typedef HGLRC (WINAPI * PFN_wglCreateContext)(HDC); typedef BOOL (WINAPI * PFN_wglDeleteContext)(HGLRC); typedef PROC (WINAPI * PFN_wglGetProcAddress)(LPCSTR); @@ -89,8 +96,6 @@ typedef HGLRC (WINAPI * PFN_wglGetCurrentContext)(void); typedef BOOL (WINAPI * PFN_wglMakeCurrent)(HDC,HGLRC); typedef BOOL (WINAPI * PFN_wglShareLists)(HGLRC,HGLRC); - -// opengl32.dll function pointer typedefs #define wglCreateContext _glfw.wgl.CreateContext #define wglDeleteContext _glfw.wgl.DeleteContext #define wglGetProcAddress _glfw.wgl.GetProcAddress
glfw/src/win32_init.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h" @@ -523,7 +525,7 @@ cond = VerSetConditionMask(cond, VER_MINORVERSION, VER_GREATER_EQUAL); cond = VerSetConditionMask(cond, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL); // HACK: Use RtlVerifyVersionInfo instead of VerifyVersionInfoW as the - // latter lies unless the user knew to embedd a non-default manifest + // latter lies unless the user knew to embed a non-default manifest // announcing support for Windows 10 via supportedOS GUID return RtlVerifyVersionInfo(&osvi, mask, cond) == 0; } @@ -538,7 +540,7 @@ cond = VerSetConditionMask(cond, VER_MINORVERSION, VER_GREATER_EQUAL); cond = VerSetConditionMask(cond, VER_BUILDNUMBER, VER_GREATER_EQUAL); // HACK: Use RtlVerifyVersionInfo instead of VerifyVersionInfoW as the - // latter lies unless the user knew to embedd a non-default manifest + // latter lies unless the user knew to embed a non-default manifest // announcing support for Windows 10 via supportedOS GUID return RtlVerifyVersionInfo(&osvi, mask, cond) == 0; }
glfw/src/win32_joystick.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h"
glfw/src/win32_joystick.h view
@@ -25,7 +25,7 @@ //======================================================================== #define _GLFW_PLATFORM_JOYSTICK_STATE _GLFWjoystickWin32 win32 -#define _GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE int dummy +#define _GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE struct { int dummyLibraryJoystick; } #define _GLFW_PLATFORM_MAPPING_NAME "Windows"
glfw/src/win32_monitor.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h" @@ -31,6 +33,7 @@ #include <string.h> #include <limits.h> #include <malloc.h> +#include <wchar.h> // Callback for EnumDisplayMonitors in createMonitor @@ -475,7 +478,7 @@ GLFWbool _glfwPlatformGetGammaRamp(_GLFWmonitor* monitor, GLFWgammaramp* ramp) { HDC dc; - WORD values[768]; + WORD values[3][256]; dc = CreateDCW(L"DISPLAY", monitor->win32.adapterName, NULL, NULL); GetDeviceGammaRamp(dc, values); @@ -483,9 +486,9 @@ _glfwAllocGammaArrays(ramp, 256); - memcpy(ramp->red, values + 0, 256 * sizeof(unsigned short)); - memcpy(ramp->green, values + 256, 256 * sizeof(unsigned short)); - memcpy(ramp->blue, values + 512, 256 * sizeof(unsigned short)); + memcpy(ramp->red, values[0], sizeof(values[0])); + memcpy(ramp->green, values[1], sizeof(values[1])); + memcpy(ramp->blue, values[2], sizeof(values[2])); return GLFW_TRUE; } @@ -493,7 +496,7 @@ void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp) { HDC dc; - WORD values[768]; + WORD values[3][256]; if (ramp->size != 256) { @@ -502,9 +505,9 @@ return; } - memcpy(values + 0, ramp->red, 256 * sizeof(unsigned short)); - memcpy(values + 256, ramp->green, 256 * sizeof(unsigned short)); - memcpy(values + 512, ramp->blue, 256 * sizeof(unsigned short)); + memcpy(values[0], ramp->red, sizeof(values[0])); + memcpy(values[1], ramp->green, sizeof(values[1])); + memcpy(values[2], ramp->blue, sizeof(values[2])); dc = CreateDCW(L"DISPLAY", monitor->win32.adapterName, NULL, NULL); SetDeviceGammaRamp(dc, values);
glfw/src/win32_platform.h view
@@ -212,7 +212,7 @@ // HACK: Define macros that some dinput.h variants don't #ifndef DIDFT_OPTIONAL - #define DIDFT_OPTIONAL 0x80000000 + #define DIDFT_OPTIONAL 0x80000000 #endif // winmm.dll function pointer typedefs
glfw/src/win32_thread.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h"
glfw/src/win32_time.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h"
glfw/src/win32_window.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h" @@ -409,7 +411,7 @@ // issue. When set to black, something is making the hit test // not resize with the window frame. SetLayeredWindowAttributes(window->win32.handle, - RGB(0, 193, 48), 255, LWA_COLORKEY); + RGB(255, 0, 255), 255, LWA_COLORKEY); } DeleteObject(region); @@ -479,7 +481,7 @@ DWORD time; // Right side keys have the extended key bit set - if (lParam & 0x01000000) + if (HIWORD(lParam) & KF_EXTENDED) return GLFW_KEY_RIGHT_CONTROL; // HACK: Alt Gr sends Left Ctrl and then Right Alt in close sequence @@ -495,7 +497,7 @@ next.message == WM_SYSKEYUP) { if (next.wParam == VK_MENU && - (next.lParam & 0x01000000) && + (HIWORD(next.lParam) & KF_EXTENDED) && next.time == time) { // Next message is Right Alt down so discard this @@ -629,12 +631,8 @@ // clicking a caption button if (HIWORD(lParam) == WM_LBUTTONDOWN) { - if (LOWORD(lParam) == HTCLOSE || - LOWORD(lParam) == HTMINBUTTON || - LOWORD(lParam) == HTMAXBUTTON) - { + if (LOWORD(lParam) != HTCLIENT) window->win32.frameAction = GLFW_TRUE; - } } break; @@ -742,8 +740,8 @@ case WM_SYSKEYUP: { const int key = translateKey(wParam, lParam); - const int scancode = (lParam >> 16) & 0x1ff; - const int action = ((lParam >> 31) & 1) ? GLFW_RELEASE : GLFW_PRESS; + const int scancode = (HIWORD(lParam) & 0x1ff); + const int action = (HIWORD(lParam) & KF_UP) ? GLFW_RELEASE : GLFW_PRESS; const int mods = getKeyMods(); if (key == _GLFW_KEY_INVALID) @@ -830,7 +828,19 @@ const int x = GET_X_LPARAM(lParam); const int y = GET_Y_LPARAM(lParam); - // Disabled cursor motion input is provided by WM_INPUT + if (!window->win32.cursorTracked) + { + TRACKMOUSEEVENT tme; + ZeroMemory(&tme, sizeof(tme)); + tme.cbSize = sizeof(tme); + tme.dwFlags = TME_LEAVE; + tme.hwndTrack = window->win32.handle; + TrackMouseEvent(&tme); + + window->win32.cursorTracked = GLFW_TRUE; + _glfwInputCursorEnter(window, GLFW_TRUE); + } + if (window->cursorMode == GLFW_CURSOR_DISABLED) { const int dx = x - window->win32.lastCursorPosX; @@ -851,19 +861,6 @@ window->win32.lastCursorPosX = x; window->win32.lastCursorPosY = y; - if (!window->win32.cursorTracked) - { - TRACKMOUSEEVENT tme; - ZeroMemory(&tme, sizeof(tme)); - tme.cbSize = sizeof(tme); - tme.dwFlags = TME_LEAVE; - tme.hwndTrack = window->win32.handle; - TrackMouseEvent(&tme); - - window->win32.cursorTracked = GLFW_TRUE; - _glfwInputCursorEnter(window, GLFW_TRUE); - } - return 0; } @@ -942,6 +939,9 @@ case WM_ENTERSIZEMOVE: case WM_ENTERMENULOOP: { + if (window->win32.frameAction) + break; + // HACK: Enable the cursor while the user is moving or // resizing the window or using the window menu if (window->cursorMode == GLFW_CURSOR_DISABLED) @@ -953,6 +953,9 @@ case WM_EXITSIZEMOVE: case WM_EXITMENULOOP: { + if (window->win32.frameAction) + break; + // HACK: Disable the cursor once the user is done moving or // resizing the window or using the menu if (window->cursorMode == GLFW_CURSOR_DISABLED) @@ -1225,6 +1228,7 @@ xpos = CW_USEDEFAULT; ypos = CW_USEDEFAULT; + window->win32.maximized = wndconfig->maximized; if (wndconfig->maximized) style |= WS_MAXIMIZE; @@ -1272,12 +1276,13 @@ window->win32.scaleToMonitor = wndconfig->scaleToMonitor; - // Adjust window size to account for DPI scaling of the window frame and - // optionally DPI scaling of the content area - // This cannot be done until we know what monitor it was placed on + // Adjust window rect to account for DPI scaling of the window frame and + // (if enabled) DPI scaling of the content area + // This cannot be done until we know what monitor the window was placed on if (!window->monitor) { RECT rect = { 0, 0, wndconfig->width, wndconfig->height }; + WINDOWPLACEMENT wp = { sizeof(wp) }; if (wndconfig->scaleToMonitor) { @@ -1298,10 +1303,11 @@ else AdjustWindowRectEx(&rect, style, FALSE, exStyle); - SetWindowPos(window->win32.handle, NULL, - rect.left, rect.top, - rect.right - rect.left, rect.bottom - rect.top, - SWP_NOACTIVATE | SWP_NOZORDER); + // Only update the restored window rect as the window may be maximized + GetWindowPlacement(window->win32.handle, &wp); + wp.rcNormalPosition = rect; + wp.showCmd = SW_HIDE; + SetWindowPlacement(window->win32.handle, &wp); } DragAcceptFiles(window->win32.handle, TRUE); @@ -1722,7 +1728,7 @@ _glfwInputWindowMonitor(window, monitor); - if (monitor) + if (window->monitor) { MONITORINFO mi = { sizeof(mi) }; UINT flags = SWP_SHOWWINDOW | SWP_NOACTIVATE | SWP_NOCOPYBITS; @@ -1928,8 +1934,8 @@ window = GetPropW(handle, L"GLFW"); if (window) { - const GLFWbool lshift = (GetAsyncKeyState(VK_LSHIFT) >> 15) & 1; - const GLFWbool rshift = (GetAsyncKeyState(VK_RSHIFT) >> 15) & 1; + const GLFWbool lshift = (GetAsyncKeyState(VK_LSHIFT) & 0x8000) != 0; + const GLFWbool rshift = (GetAsyncKeyState(VK_RSHIFT) & 0x8000) != 0; if (!lshift && window->keys[GLFW_KEY_LEFT_SHIFT] == GLFW_PRESS) {
glfw/src/window.c view
@@ -25,6 +25,8 @@ // distribution. // //======================================================================== +// Please use C89 style variable declarations in this file because VS 2010 +//======================================================================== #include "internal.h"
glfw/src/wl_init.c view
@@ -23,6 +23,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" @@ -123,6 +125,7 @@ _glfw.wl.serial = serial; _glfw.wl.pointerFocus = NULL; _glfwInputCursorEnter(window, GLFW_FALSE); + _glfw.wl.cursorPreviousName = NULL; } static void setCursor(_GLFWwindow* window, const char* name) @@ -167,6 +170,7 @@ wl_surface_damage(surface, 0, 0, image->width, image->height); wl_surface_commit(surface); + _glfw.wl.cursorPreviousName = name; } static void pointerHandleMotion(void* data, @@ -176,48 +180,47 @@ wl_fixed_t sy) { _GLFWwindow* window = _glfw.wl.pointerFocus; - const char* cursorName; + const char* cursorName = NULL; + double x, y; if (!window) return; if (window->cursorMode == GLFW_CURSOR_DISABLED) return; - else - { - window->wl.cursorPosX = wl_fixed_to_double(sx); - window->wl.cursorPosY = wl_fixed_to_double(sy); - } + x = wl_fixed_to_double(sx); + y = wl_fixed_to_double(sy); switch (window->wl.decorations.focus) { case mainWindow: - _glfwInputCursorPos(window, - wl_fixed_to_double(sx), - wl_fixed_to_double(sy)); + window->wl.cursorPosX = x; + window->wl.cursorPosY = y; + _glfwInputCursorPos(window, x, y); + _glfw.wl.cursorPreviousName = NULL; return; case topDecoration: - if (window->wl.cursorPosY < _GLFW_DECORATION_WIDTH) + if (y < _GLFW_DECORATION_WIDTH) cursorName = "n-resize"; else cursorName = "left_ptr"; break; case leftDecoration: - if (window->wl.cursorPosY < _GLFW_DECORATION_WIDTH) + if (y < _GLFW_DECORATION_WIDTH) cursorName = "nw-resize"; else cursorName = "w-resize"; break; case rightDecoration: - if (window->wl.cursorPosY < _GLFW_DECORATION_WIDTH) + if (y < _GLFW_DECORATION_WIDTH) cursorName = "ne-resize"; else cursorName = "e-resize"; break; case bottomDecoration: - if (window->wl.cursorPosX < _GLFW_DECORATION_WIDTH) + if (x < _GLFW_DECORATION_WIDTH) cursorName = "sw-resize"; - else if (window->wl.cursorPosX > window->wl.width + _GLFW_DECORATION_WIDTH) + else if (x > window->wl.width + _GLFW_DECORATION_WIDTH) cursorName = "se-resize"; else cursorName = "s-resize"; @@ -225,7 +228,8 @@ default: assert(0); } - setCursor(window, cursorName); + if (_glfw.wl.cursorPreviousName != cursorName) + setCursor(window, cursorName); } static void pointerHandleButton(void* data,
glfw/src/wl_monitor.c view
@@ -23,6 +23,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" @@ -198,7 +200,7 @@ GLFWbool _glfwPlatformGetGammaRamp(_GLFWmonitor* monitor, GLFWgammaramp* ramp) { _glfwInputError(GLFW_PLATFORM_ERROR, - "Wayland: Gamma ramp access it not available"); + "Wayland: Gamma ramp access is not available"); return GLFW_FALSE; }
glfw/src/wl_platform.h view
@@ -75,8 +75,8 @@ #define _GLFW_PLATFORM_MONITOR_STATE _GLFWmonitorWayland wl #define _GLFW_PLATFORM_CURSOR_STATE _GLFWcursorWayland wl -#define _GLFW_PLATFORM_CONTEXT_STATE -#define _GLFW_PLATFORM_LIBRARY_CONTEXT_STATE +#define _GLFW_PLATFORM_CONTEXT_STATE struct { int dummyContext; } +#define _GLFW_PLATFORM_LIBRARY_CONTEXT_STATE struct { int dummyLibraryContext; } struct wl_cursor_image { uint32_t width; @@ -249,6 +249,7 @@ struct wl_cursor_theme* cursorTheme; struct wl_cursor_theme* cursorThemeHiDPI; struct wl_surface* cursorSurface; + const char* cursorPreviousName; int cursorTimerfd; uint32_t serial; @@ -332,7 +333,7 @@ typedef struct _GLFWmonitorWayland { struct wl_output* output; - int name; + uint32_t name; int currentMode; int x;
glfw/src/wl_window.c view
@@ -23,6 +23,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #define _GNU_SOURCE @@ -132,7 +134,7 @@ * SCM_RIGHTS methods. * * posix_fallocate() is used to guarantee that disk space is available - * for the file at the given size. If disk space is insufficent, errno + * for the file at the given size. If disk space is insufficient, errno * is set to ENOSPC. If posix_fallocate() is not supported, program may * receive SIGBUS on accessing mmap()'ed file contents instead. */ @@ -902,7 +904,7 @@ case GLFW_CROSSHAIR_CURSOR: return "crosshair"; case GLFW_HAND_CURSOR: - return "grabbing"; + return "hand2"; case GLFW_HRESIZE_CURSOR: return "sb_h_double_arrow"; case GLFW_VRESIZE_CURSOR:
glfw/src/x11_init.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" @@ -52,7 +54,7 @@ // Note: This way we always force "NumLock = ON", which is intentional // since the returned key code should correspond to a physical // location. - keySym = XkbKeycodeToKeysym(_glfw.x11.display, scancode, 0, 1); + keySym = XkbKeycodeToKeysym(_glfw.x11.display, scancode, _glfw.x11.xkb.group, 1); switch (keySym) { case XK_KP_0: return GLFW_KEY_KP_0; @@ -74,7 +76,7 @@ // Now try primary keysym for function keys (non-printable keys) // These should not depend on the current keyboard layout - keySym = XkbKeycodeToKeysym(_glfw.x11.display, scancode, 0, 0); + keySym = XkbKeycodeToKeysym(_glfw.x11.display, scancode, _glfw.x11.xkb.group, 0); } else { @@ -329,14 +331,13 @@ // static GLFWbool hasUsableInputMethodStyle(void) { - unsigned int i; GLFWbool found = GLFW_FALSE; XIMStyles* styles = NULL; if (XGetIMValues(_glfw.x11.im, XNQueryInputStyle, &styles, NULL) != NULL) return GLFW_FALSE; - for (i = 0; i < styles->count_styles; i++) + for (unsigned int i = 0; i < styles->count_styles; i++) { if (styles->supported_styles[i] == (XIMPreeditNothing | XIMStatusNothing)) { @@ -355,10 +356,9 @@ unsigned long atomCount, const char* atomName) { - unsigned long i; const Atom atom = XInternAtom(_glfw.x11.display, atomName, False); - for (i = 0; i < atomCount; i++) + for (unsigned int i = 0; i < atomCount; i++) { if (supportedAtoms[i] == atom) return atom; @@ -371,18 +371,11 @@ // static void detectEWMH(void) { - Window* windowFromRoot = NULL; - Window* windowFromChild = NULL; - - // First we need a couple of atoms - const Atom supportingWmCheck = - XInternAtom(_glfw.x11.display, "_NET_SUPPORTING_WM_CHECK", False); - const Atom wmSupported = - XInternAtom(_glfw.x11.display, "_NET_SUPPORTED", False); + // First we read the _NET_SUPPORTING_WM_CHECK property on the root window - // Then we look for the _NET_SUPPORTING_WM_CHECK property of the root window + Window* windowFromRoot = NULL; if (!_glfwGetWindowPropertyX11(_glfw.x11.root, - supportingWmCheck, + _glfw.x11.NET_SUPPORTING_WM_CHECK, XA_WINDOW, (unsigned char**) &windowFromRoot)) { @@ -391,10 +384,12 @@ _glfwGrabErrorHandlerX11(); - // It should be the ID of a child window (of the root) - // Then we look for the same property on the child window + // If it exists, it should be the XID of a top-level window + // Then we look for the same property on that window + + Window* windowFromChild = NULL; if (!_glfwGetWindowPropertyX11(*windowFromRoot, - supportingWmCheck, + _glfw.x11.NET_SUPPORTING_WM_CHECK, XA_WINDOW, (unsigned char**) &windowFromChild)) { @@ -404,7 +399,8 @@ _glfwReleaseErrorHandlerX11(); - // It should be the ID of that same child window + // If the property exists, it should contain the XID of the window + if (*windowFromRoot != *windowFromChild) { XFree(windowFromRoot); @@ -415,19 +411,20 @@ XFree(windowFromRoot); XFree(windowFromChild); - // We are now fairly sure that an EWMH-compliant window manager is running - - Atom* supportedAtoms; - unsigned long atomCount; + // We are now fairly sure that an EWMH-compliant WM is currently running + // We can now start querying the WM about what features it supports by + // looking in the _NET_SUPPORTED property on the root window + // It should contain a list of supported EWMH protocol and state atoms - // Now we need to check the _NET_SUPPORTED property of the root window - // It should be a list of supported WM protocol and state atoms - atomCount = _glfwGetWindowPropertyX11(_glfw.x11.root, - wmSupported, - XA_ATOM, - (unsigned char**) &supportedAtoms); + Atom* supportedAtoms = NULL; + const unsigned long atomCount = + _glfwGetWindowPropertyX11(_glfw.x11.root, + _glfw.x11.NET_SUPPORTED, + XA_ATOM, + (unsigned char**) &supportedAtoms); // See which of the atoms we support that are supported by the WM + _glfw.x11.NET_WM_STATE = getSupportedAtom(supportedAtoms, atomCount, "_NET_WM_STATE"); _glfw.x11.NET_WM_STATE_ABOVE = @@ -662,6 +659,14 @@ if (supported) _glfw.x11.xkb.detectable = GLFW_TRUE; } + + _glfw.x11.xkb.group = 0; + XkbStateRec state; + if (XkbGetState(_glfw.x11.display, XkbUseCoreKbd, &state) == Success) + { + XkbSelectEventDetails(_glfw.x11.display, XkbUseCoreKbd, XkbStateNotify, XkbAllStateComponentsMask, XkbGroupStateMask); + _glfw.x11.xkb.group = (unsigned int)state.group; + } } #if defined(__CYGWIN__) @@ -707,9 +712,6 @@ // the keyboard mapping. createKeyTables(); - // Detect whether an EWMH-conformant window manager is running - detectEWMH(); - // String format atoms _glfw.x11.NULL_ = XInternAtom(_glfw.x11.display, "NULL", False); _glfw.x11.UTF8_STRING = XInternAtom(_glfw.x11.display, "UTF8_STRING", False); @@ -753,6 +755,10 @@ XInternAtom(_glfw.x11.display, "WM_STATE", False); _glfw.x11.WM_DELETE_WINDOW = XInternAtom(_glfw.x11.display, "WM_DELETE_WINDOW", False); + _glfw.x11.NET_SUPPORTED = + XInternAtom(_glfw.x11.display, "_NET_SUPPORTED", False); + _glfw.x11.NET_SUPPORTING_WM_CHECK = + XInternAtom(_glfw.x11.display, "_NET_SUPPORTING_WM_CHECK", False); _glfw.x11.NET_WM_ICON = XInternAtom(_glfw.x11.display, "_NET_WM_ICON", False); _glfw.x11.NET_WM_PING = @@ -777,6 +783,9 @@ _glfw.x11.NET_WM_CM_Sx = XInternAtom(_glfw.x11.display, name, False); } + // Detect whether an EWMH-conformant window manager is running + detectEWMH(); + return GLFW_TRUE; } @@ -784,13 +793,10 @@ // static void getSystemContentScale(float* xscale, float* yscale) { - // NOTE: Fall back to the display-wide DPI instead of RandR monitor DPI if - // Xft.dpi retrieval below fails as we don't currently have an exact - // policy for which monitor a window is considered to "be on" - float xdpi = DisplayWidth(_glfw.x11.display, _glfw.x11.screen) * - 25.4f / DisplayWidthMM(_glfw.x11.display, _glfw.x11.screen); - float ydpi = DisplayHeight(_glfw.x11.display, _glfw.x11.screen) * - 25.4f / DisplayHeightMM(_glfw.x11.display, _glfw.x11.screen); + // Start by assuming the default X11 DPI + // NOTE: Some desktop environments (KDE) may remove the Xft.dpi field when it + // would be set to 96, so assume that is the case if we cannot find it + float xdpi = 96.f, ydpi = 96.f; // NOTE: Basing the scale on Xft.dpi where available should provide the most // consistent user experience (matches Qt, Gtk, etc), although not
glfw/src/x11_monitor.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" @@ -54,9 +56,7 @@ // static const XRRModeInfo* getModeInfo(const XRRScreenResources* sr, RRMode id) { - int i; - - for (i = 0; i < sr->nmode; i++) + for (int i = 0; i < sr->nmode; i++) { if (sr->modes[i].id == id) return sr->modes + i; @@ -102,7 +102,7 @@ { if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) { - int i, j, disconnectedCount, screenCount = 0; + int disconnectedCount, screenCount = 0; _GLFWmonitor** disconnected = NULL; XineramaScreenInfo* screens = NULL; XRRScreenResources* sr = XRRGetScreenResourcesCurrent(_glfw.x11.display, @@ -122,14 +122,11 @@ _glfw.monitorCount * sizeof(_GLFWmonitor*)); } - for (i = 0; i < sr->noutput; i++) + for (int i = 0; i < sr->noutput; i++) { - int type, widthMM, heightMM; - XRROutputInfo* oi; - XRRCrtcInfo* ci; - _GLFWmonitor* monitor; + int j, type, widthMM, heightMM; - oi = XRRGetOutputInfo(_glfw.x11.display, sr, sr->outputs[i]); + XRROutputInfo* oi = XRRGetOutputInfo(_glfw.x11.display, sr, sr->outputs[i]); if (oi->connection != RR_Connected || oi->crtc == None) { XRRFreeOutputInfo(oi); @@ -152,7 +149,7 @@ continue; } - ci = XRRGetCrtcInfo(_glfw.x11.display, sr, oi->crtc); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, oi->crtc); if (ci->rotation == RR_Rotate_90 || ci->rotation == RR_Rotate_270) { widthMM = oi->mm_height; @@ -164,7 +161,17 @@ heightMM = oi->mm_height; } - monitor = _glfwAllocMonitor(oi->name, widthMM, heightMM); + if (widthMM <= 0 || heightMM <= 0) + { + // HACK: If RandR does not provide a physical size, assume the + // X11 default 96 DPI and calcuate from the CRTC viewport + // NOTE: These members are affected by rotation, unlike the mode + // info and output info members + widthMM = (int) (ci->width * 25.4f / 96.f); + heightMM = (int) (ci->height * 25.4f / 96.f); + } + + _GLFWmonitor* monitor = _glfwAllocMonitor(oi->name, widthMM, heightMM); monitor->x11.output = sr->outputs[i]; monitor->x11.crtc = oi->crtc; @@ -196,7 +203,7 @@ if (screens) XFree(screens); - for (i = 0; i < disconnectedCount; i++) + for (int i = 0; i < disconnectedCount; i++) { if (disconnected[i]) _glfwInputMonitor(disconnected[i], GLFW_DISCONNECTED, 0); @@ -221,24 +228,20 @@ { if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) { - XRRScreenResources* sr; - XRRCrtcInfo* ci; - XRROutputInfo* oi; GLFWvidmode current; - const GLFWvidmode* best; RRMode native = None; - int i; - best = _glfwChooseVideoMode(monitor, desired); + const GLFWvidmode* best = _glfwChooseVideoMode(monitor, desired); _glfwPlatformGetVideoMode(monitor, ¤t); if (_glfwCompareVideoModes(¤t, best) == 0) return; - sr = XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); - ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); - oi = XRRGetOutputInfo(_glfw.x11.display, sr, monitor->x11.output); + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + XRROutputInfo* oi = XRRGetOutputInfo(_glfw.x11.display, sr, monitor->x11.output); - for (i = 0; i < oi->nmode; i++) + for (int i = 0; i < oi->nmode; i++) { const XRRModeInfo* mi = getModeInfo(sr, oi->modes[i]); if (!modeIsGood(mi)) @@ -279,14 +282,12 @@ { if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) { - XRRScreenResources* sr; - XRRCrtcInfo* ci; - if (monitor->x11.oldMode == None) return; - sr = XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); - ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); XRRSetCrtcConfig(_glfw.x11.display, sr, monitor->x11.crtc, @@ -317,11 +318,9 @@ { if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) { - XRRScreenResources* sr; - XRRCrtcInfo* ci; - - sr = XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); - ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); if (xpos) *xpos = ci->x; @@ -348,11 +347,9 @@ if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) { - XRRScreenResources* sr; - XRRCrtcInfo* ci; - - sr = XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); - ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); areaX = ci->x; areaY = ci->y; @@ -444,24 +441,21 @@ if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) { - int i, j; - XRRScreenResources* sr; - XRRCrtcInfo* ci; - XRROutputInfo* oi; - - sr = XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); - ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); - oi = XRRGetOutputInfo(_glfw.x11.display, sr, monitor->x11.output); + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + XRROutputInfo* oi = XRRGetOutputInfo(_glfw.x11.display, sr, monitor->x11.output); result = calloc(oi->nmode, sizeof(GLFWvidmode)); - for (i = 0; i < oi->nmode; i++) + for (int i = 0; i < oi->nmode; i++) { const XRRModeInfo* mi = getModeInfo(sr, oi->modes[i]); if (!modeIsGood(mi)) continue; const GLFWvidmode mode = vidmodeFromModeInfo(mi, ci); + int j; for (j = 0; j < *count; j++) { @@ -495,11 +489,9 @@ { if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken) { - XRRScreenResources* sr; - XRRCrtcInfo* ci; - - sr = XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); - ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); + XRRScreenResources* sr = + XRRGetScreenResourcesCurrent(_glfw.x11.display, _glfw.x11.root); + XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc); *mode = vidmodeFromModeInfo(getModeInfo(sr, ci->mode), ci);
glfw/src/x11_platform.h view
@@ -180,6 +180,7 @@ { Colormap colormap; Window handle; + Window parent; XIC ic; GLFWbool overrideRedirect; @@ -228,7 +229,7 @@ // Clipboard string (while the selection is owned) char* clipboardString; // Key name string - char keyName[5]; + char keynames[GLFW_KEY_LAST + 1][5]; // X11 keycode to GLFW key LUT short int keycodes[256]; // GLFW key to X11 keycode LUT @@ -239,6 +240,8 @@ _GLFWwindow* disabledCursorWindow; // Window manager atoms + Atom NET_SUPPORTED; + Atom NET_SUPPORTING_WM_CHECK; Atom WM_PROTOCOLS; Atom WM_STATE; Atom WM_DELETE_WINDOW; @@ -321,13 +324,14 @@ } randr; struct { - GLFWbool available; - GLFWbool detectable; - int majorOpcode; - int eventBase; - int errorBase; - int major; - int minor; + GLFWbool available; + GLFWbool detectable; + int majorOpcode; + int eventBase; + int errorBase; + int major; + int minor; + unsigned int group; } xkb; struct {
glfw/src/x11_window.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h" @@ -48,6 +50,10 @@ #define Button6 6 #define Button7 7 +// Motif WM hints flags +#define MWM_HINTS_DECORATIONS 2 +#define MWM_DECOR_ALL 1 + #define _GLFW_XDND_VERSION 5 @@ -213,10 +219,7 @@ static void sendEventToWM(_GLFWwindow* window, Atom type, long a, long b, long c, long d, long e) { - XEvent event; - memset(&event, 0, sizeof(event)); - - event.type = ClientMessage; + XEvent event = { ClientMessage }; event.xclient.window = window->x11.handle; event.xclient.format = 32; // Data is 32-bit longs event.xclient.message_type = type; @@ -610,46 +613,40 @@ window->x11.transparent = _glfwIsVisualTransparentX11(visual); - // Create the actual window - { - XSetWindowAttributes wa; - const unsigned long wamask = CWBorderPixel | CWColormap | CWEventMask; - - wa.colormap = window->x11.colormap; - wa.border_pixel = 0; - wa.event_mask = StructureNotifyMask | KeyPressMask | KeyReleaseMask | - PointerMotionMask | ButtonPressMask | ButtonReleaseMask | - ExposureMask | FocusChangeMask | VisibilityChangeMask | - EnterWindowMask | LeaveWindowMask | PropertyChangeMask; - - _glfwGrabErrorHandlerX11(); + XSetWindowAttributes wa = { 0 }; + wa.colormap = window->x11.colormap; + wa.event_mask = StructureNotifyMask | KeyPressMask | KeyReleaseMask | + PointerMotionMask | ButtonPressMask | ButtonReleaseMask | + ExposureMask | FocusChangeMask | VisibilityChangeMask | + EnterWindowMask | LeaveWindowMask | PropertyChangeMask; - window->x11.handle = XCreateWindow(_glfw.x11.display, - _glfw.x11.root, - 0, 0, - width, height, - 0, // Border width - depth, // Color depth - InputOutput, - visual, - wamask, - &wa); + _glfwGrabErrorHandlerX11(); - _glfwReleaseErrorHandlerX11(); + window->x11.handle = XCreateWindow(_glfw.x11.display, + _glfw.x11.root, + 0, 0, // Position + width, height, + 0, // Border width + depth, // Color depth + InputOutput, + visual, + CWBorderPixel | CWColormap | CWEventMask, + &wa); - if (!window->x11.handle) - { - _glfwInputErrorX11(GLFW_PLATFORM_ERROR, - "X11: Failed to create window"); - return GLFW_FALSE; - } + _glfwReleaseErrorHandlerX11(); - XSaveContext(_glfw.x11.display, - window->x11.handle, - _glfw.x11.context, - (XPointer) window); + if (!window->x11.handle) + { + _glfwInputErrorX11(GLFW_PLATFORM_ERROR, + "X11: Failed to create window"); + return GLFW_FALSE; } + XSaveContext(_glfw.x11.display, + window->x11.handle, + _glfw.x11.context, + (XPointer) window); + if (!wndconfig->decorated) _glfwPlatformSetWindowDecorated(window, GLFW_FALSE); @@ -679,7 +676,7 @@ { XChangeProperty(_glfw.x11.display, window->x11.handle, _glfw.x11.NET_WM_STATE, XA_ATOM, 32, - PropModeReplace, (unsigned char*) &states, count); + PropModeReplace, (unsigned char*) states, count); } } @@ -784,6 +781,13 @@ NULL); } + if (window->x11.ic) + { + unsigned long filter = 0; + if (XGetICValues(window->x11.ic, XNFilterEvents, &filter, NULL) == NULL) + XSelectInput(_glfw.x11.display, window->x11.handle, wa.event_mask | filter); + } + _glfwPlatformGetWindowPos(window, &window->x11.xpos, &window->x11.ypos); _glfwPlatformGetWindowSize(window, &window->x11.width, &window->x11.height); @@ -944,11 +948,8 @@ { const XSelectionRequestEvent* request = &event->xselectionrequest; - XEvent reply; - memset(&reply, 0, sizeof(reply)); - + XEvent reply = { SelectionNotify }; reply.xselection.property = writeTargetToProperty(request); - reply.xselection.type = SelectionNotify; reply.xselection.display = request->display; reply.xselection.requestor = request->requestor; reply.xselection.selection = request->selection; @@ -960,7 +961,6 @@ static const char* getSelectionString(Atom selection) { - size_t i; char** selectionString = NULL; const Atom targets[] = { _glfw.x11.UTF8_STRING, XA_STRING }; const size_t targetCount = sizeof(targets) / sizeof(targets[0]); @@ -981,7 +981,7 @@ free(*selectionString); *selectionString = NULL; - for (i = 0; i < targetCount; i++) + for (size_t i = 0; i < targetCount; i++) { char* data; Atom actualType; @@ -1165,7 +1165,6 @@ // static void processEvent(XEvent *event) { - _GLFWwindow* window = NULL; int keycode = 0; Bool filtered = False; @@ -1186,6 +1185,18 @@ } } + if (_glfw.x11.xkb.available) + { + if (event->type == _glfw.x11.xkb.eventBase + XkbEventCode) + { + if (((XkbEvent*) event)->any.xkb_type == XkbStateNotify && + (((XkbEvent*) event)->state.changed & XkbGroupStateMask)) + { + _glfw.x11.xkb.group = ((XkbEvent*) event)->state.group; + } + } + } + if (event->type == GenericEvent) { if (_glfw.x11.xi.available) @@ -1235,6 +1246,7 @@ return; } + _GLFWwindow* window = NULL; if (XFindContext(_glfw.x11.display, event->xany.window, _glfw.x11.context, @@ -1246,6 +1258,18 @@ switch (event->type) { + case CreateNotify: + { + window->x11.parent = event->xcreatewindow.parent; + return; + } + + case ReparentNotify: + { + window->x11.parent = event->xreparent.parent; + return; + } + case KeyPress: { const int key = translateKey(keycode); @@ -1530,18 +1554,28 @@ window->x11.height = event->xconfigure.height; } - if (event->xconfigure.x != window->x11.xpos || - event->xconfigure.y != window->x11.ypos) + int xpos = event->xconfigure.x; + int ypos = event->xconfigure.y; + + // NOTE: ConfigureNotify events from the server are in local + // coordinates, so if we are reparented we need to translate + // the position into root (screen) coordinates + if (!event->xany.send_event && window->x11.parent != _glfw.x11.root) { - if (window->x11.overrideRedirect || event->xany.send_event) - { - _glfwInputWindowPos(window, - event->xconfigure.x, - event->xconfigure.y); + Window dummy; + XTranslateCoordinates(_glfw.x11.display, + window->x11.parent, + _glfw.x11.root, + xpos, ypos, + &xpos, &ypos, + &dummy); + } - window->x11.xpos = event->xconfigure.x; - window->x11.ypos = event->xconfigure.y; - } + if (xpos != window->x11.xpos || ypos != window->x11.ypos) + { + _glfwInputWindowPos(window, xpos, ypos); + window->x11.xpos = xpos; + window->x11.ypos = ypos; } return; @@ -1646,10 +1680,7 @@ } else if (_glfw.x11.xdnd.version >= 2) { - XEvent reply; - memset(&reply, 0, sizeof(reply)); - - reply.type = ClientMessage; + XEvent reply = { ClientMessage }; reply.xclient.window = _glfw.x11.xdnd.source; reply.xclient.message_type = _glfw.x11.XdndFinished; reply.xclient.format = 32; @@ -1682,10 +1713,7 @@ _glfwInputCursorPos(window, xpos, ypos); - XEvent reply; - memset(&reply, 0, sizeof(reply)); - - reply.type = ClientMessage; + XEvent reply = { ClientMessage }; reply.xclient.window = _glfw.x11.xdnd.source; reply.xclient.message_type = _glfw.x11.XdndStatus; reply.xclient.format = 32; @@ -1738,10 +1766,7 @@ if (_glfw.x11.xdnd.version >= 2) { - XEvent reply; - memset(&reply, 0, sizeof(reply)); - - reply.type = ClientMessage; + XEvent reply = { ClientMessage }; reply.xclient.window = _glfw.x11.xdnd.source; reply.xclient.message_type = _glfw.x11.XdndFinished; reply.xclient.format = 32; @@ -1760,9 +1785,6 @@ case FocusIn: { - if (window->cursorMode == GLFW_CURSOR_DISABLED) - disableCursor(window); - if (event->xfocus.mode == NotifyGrab || event->xfocus.mode == NotifyUngrab) { @@ -1771,6 +1793,9 @@ return; } + if (window->cursorMode == GLFW_CURSOR_DISABLED) + disableCursor(window); + if (window->x11.ic) XSetICFocus(window->x11.ic); @@ -1780,9 +1805,6 @@ case FocusOut: { - if (window->cursorMode == GLFW_CURSOR_DISABLED) - enableCursor(window); - if (event->xfocus.mode == NotifyGrab || event->xfocus.mode == NotifyUngrab) { @@ -1791,6 +1813,9 @@ return; } + if (window->cursorMode == GLFW_CURSOR_DISABLED) + enableCursor(window); + if (window->x11.ic) XUnsetICFocus(window->x11.ic); @@ -2338,18 +2363,67 @@ void _glfwPlatformMaximizeWindow(_GLFWwindow* window) { - if (_glfw.x11.NET_WM_STATE && - _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT && - _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ) + if (!_glfw.x11.NET_WM_STATE || + !_glfw.x11.NET_WM_STATE_MAXIMIZED_VERT || + !_glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ) { + return; + } + + if (_glfwPlatformWindowVisible(window)) + { sendEventToWM(window, - _glfw.x11.NET_WM_STATE, - _NET_WM_STATE_ADD, - _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT, - _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ, - 1, 0); - XFlush(_glfw.x11.display); + _glfw.x11.NET_WM_STATE, + _NET_WM_STATE_ADD, + _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT, + _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ, + 1, 0); } + else + { + Atom* states = NULL; + unsigned long count = + _glfwGetWindowPropertyX11(window->x11.handle, + _glfw.x11.NET_WM_STATE, + XA_ATOM, + (unsigned char**) &states); + + // NOTE: We don't check for failure as this property may not exist yet + // and that's fine (and we'll create it implicitly with append) + + Atom missing[2] = + { + _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT, + _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ + }; + unsigned long missingCount = 2; + + for (unsigned long i = 0; i < count; i++) + { + for (unsigned long j = 0; j < missingCount; j++) + { + if (states[i] == missing[j]) + { + missing[j] = missing[missingCount - 1]; + missingCount--; + } + } + } + + if (states) + XFree(states); + + if (!missingCount) + return; + + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_STATE, XA_ATOM, 32, + PropModeAppend, + (unsigned char*) missing, + missingCount); + } + + XFlush(_glfw.x11.display); } void _glfwPlatformShowWindow(_GLFWwindow* window) @@ -2369,6 +2443,9 @@ void _glfwPlatformRequestWindowAttention(_GLFWwindow* window) { + if (!_glfw.x11.NET_WM_STATE || !_glfw.x11.NET_WM_STATE_DEMANDS_ATTENTION) + return; + sendEventToWM(window, _glfw.x11.NET_WM_STATE, _NET_WM_STATE_ADD, @@ -2538,33 +2615,24 @@ void _glfwPlatformSetWindowDecorated(_GLFWwindow* window, GLFWbool enabled) { - if (enabled) - { - XDeleteProperty(_glfw.x11.display, - window->x11.handle, - _glfw.x11.MOTIF_WM_HINTS); - } - else + struct { - struct - { - unsigned long flags; - unsigned long functions; - unsigned long decorations; - long input_mode; - unsigned long status; - } hints; + unsigned long flags; + unsigned long functions; + unsigned long decorations; + long input_mode; + unsigned long status; + } hints = {0}; - hints.flags = 2; // Set decorations - hints.decorations = 0; // No decorations + hints.flags = MWM_HINTS_DECORATIONS; + hints.decorations = enabled ? MWM_DECOR_ALL : 0; - XChangeProperty(_glfw.x11.display, window->x11.handle, - _glfw.x11.MOTIF_WM_HINTS, - _glfw.x11.MOTIF_WM_HINTS, 32, - PropModeReplace, - (unsigned char*) &hints, - sizeof(hints) / sizeof(long)); - } + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.MOTIF_WM_HINTS, + _glfw.x11.MOTIF_WM_HINTS, 32, + PropModeReplace, + (unsigned char*) &hints, + sizeof(hints) / sizeof(long)); } void _glfwPlatformSetWindowFloating(_GLFWwindow* window, GLFWbool enabled) @@ -2574,7 +2642,7 @@ if (_glfwPlatformWindowVisible(window)) { - const Atom action = enabled ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE; + const long action = enabled ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE; sendEventToWM(window, _glfw.x11.NET_WM_STATE, action, @@ -2583,16 +2651,17 @@ } else { - Atom* states; + Atom* states = NULL; unsigned long i, count; count = _glfwGetWindowPropertyX11(window->x11.handle, _glfw.x11.NET_WM_STATE, XA_ATOM, (unsigned char**) &states); - if (!states) - return; + // NOTE: We don't check for failure as this property may not exist yet + // and that's fine (and we'll create it implicitly with append) + if (enabled) { for (i = 0; i < count; i++) @@ -2601,32 +2670,36 @@ break; } - if (i == count) - { - XChangeProperty(_glfw.x11.display, window->x11.handle, - _glfw.x11.NET_WM_STATE, XA_ATOM, 32, - PropModeAppend, - (unsigned char*) &_glfw.x11.NET_WM_STATE_ABOVE, - 1); - } + if (i < count) + return; + + XChangeProperty(_glfw.x11.display, window->x11.handle, + _glfw.x11.NET_WM_STATE, XA_ATOM, 32, + PropModeAppend, + (unsigned char*) &_glfw.x11.NET_WM_STATE_ABOVE, + 1); } - else + else if (states) { for (i = 0; i < count; i++) { if (states[i] == _glfw.x11.NET_WM_STATE_ABOVE) - { - states[i] = states[count - 1]; - count--; - } + break; } + if (i == count) + return; + + states[i] = states[count - 1]; + count--; + XChangeProperty(_glfw.x11.display, window->x11.handle, _glfw.x11.NET_WM_STATE, XA_ATOM, 32, - PropModeReplace, (unsigned char*) &states, count); + PropModeReplace, (unsigned char*) states, count); } - XFree(states); + if (states) + XFree(states); } XFlush(_glfw.x11.display); @@ -2737,10 +2810,7 @@ void _glfwPlatformPostEmptyEvent(void) { - XEvent event; - - memset(&event, 0, sizeof(event)); - event.type = ClientMessage; + XEvent event = { ClientMessage }; event.xclient.window = _glfw.x11.helperWindowHandle; event.xclient.format = 32; // Data is 32-bit longs event.xclient.message_type = _glfw.x11.NULL_; @@ -2797,7 +2867,9 @@ if (!_glfw.x11.xkb.available) return NULL; - const KeySym keysym = XkbKeycodeToKeysym(_glfw.x11.display, scancode, 0, 0); + const int key = _glfw.x11.keycodes[scancode]; + const KeySym keysym = XkbKeycodeToKeysym(_glfw.x11.display, + scancode, _glfw.x11.xkb.group, 0); if (keysym == NoSymbol) return NULL; @@ -2805,12 +2877,12 @@ if (ch == -1) return NULL; - const size_t count = encodeUTF8(_glfw.x11.keyName, (unsigned int) ch); + const size_t count = encodeUTF8(_glfw.x11.keynames[key], (unsigned int) ch); if (count == 0) return NULL; - _glfw.x11.keyName[count] = '\0'; - return _glfw.x11.keyName; + _glfw.x11.keynames[key][count] = '\0'; + return _glfw.x11.keynames[key]; } int _glfwPlatformGetKeyScancode(int key)
glfw/src/xkb_unicode.c view
@@ -24,6 +24,8 @@ // distribution. // //======================================================================== +// It is fine to use C99 in this file because it will not be built with VS +//======================================================================== #include "internal.h"
glfw/src/xkb_unicode.h view
@@ -1,28 +1,28 @@-//======================================================================== -// GLFW 3.3 Linux - www.glfw.org -//------------------------------------------------------------------------ -// Copyright (c) 2014 Jonas Ådahl <jadahl@gmail.com> -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would -// be appreciated but is not required. -// -// 2. Altered source versions must be plainly marked as such, and must not -// be misrepresented as being the original software. -// -// 3. This notice may not be removed or altered from any source -// distribution. -// -//======================================================================== - -long _glfwKeySym2Unicode(unsigned int keysym); - +//========================================================================+// GLFW 3.3 Linux - www.glfw.org+//------------------------------------------------------------------------+// Copyright (c) 2014 Jonas Ådahl <jadahl@gmail.com>+//+// This software is provided 'as-is', without any express or implied+// warranty. In no event will the authors be held liable for any damages+// arising from the use of this software.+//+// Permission is granted to anyone to use this software for any purpose,+// including commercial applications, and to alter it and redistribute it+// freely, subject to the following restrictions:+//+// 1. The origin of this software must not be misrepresented; you must not+// claim that you wrote the original software. If you use this software+// in a product, an acknowledgment in the product documentation would+// be appreciated but is not required.+//+// 2. Altered source versions must be plainly marked as such, and must not+// be misrepresented as being the original software.+//+// 3. This notice may not be removed or altered from any source+// distribution.+//+//========================================================================++long _glfwKeySym2Unicode(unsigned int keysym);+