packages feed

bindings-GLFW 3.3.2.0 → 3.3.9.0

raw patch · 15 files changed

+7983/−5715 lines, 15 filessetup-changed

Files

Bindings/GLFW.hsc view
@@ -1,845 +1,845 @@-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE StandaloneDeriving #-}
-{-# LANGUAGE TemplateHaskell #-}
-
---------------------------------------------------------------------------------
-
-#include <bindings.dsl.h>
-#include <GLFW/glfw3.h>
-
-#ifdef ExposeNative
-  #warning "You are compiling glfw using the native access functions. BEWARE."
-
-  #if defined(_WIN32)
-
-    #define GLFW_EXPOSE_NATIVE_WIN32
-    #define GLFW_EXPOSE_NATIVE_WGL
-
-  #elif defined(__APPLE__)
-
-    #define GLFW_EXPOSE_NATIVE_COCOA
-    #define GLFW_EXPOSE_NATIVE_NSGL
-
-  #elif defined(__linux__)
-
-    #define GLFW_EXPOSE_NATIVE_EGL
-
-    #if defined(BINDINGS_GLFW_USE_X11)
-      #define GLFW_EXPOSE_NATIVE_X11
-      #define GLFW_EXPOSE_NATIVE_GLX
-    #elif defined(BINDINGS_GLFW_USE_WAYLAND)
-      #define GLFW_EXPOSE_NATIVE_WAYLAND
-    #elif defined(BINDINGS_GLFW_USE_OSMESA)
-      #define GLFW_EXPOSE_NATIVE_OSMESA
-    #endif
-
-  #endif
-
-  #include <GLFW/glfw3native.h>
-
-#endif
-
---------------------------------------------------------------------------------
-
-module Bindings.GLFW where
-
-import Prelude (Eq, IO, Num, Show)
-import Prelude (($), return, error, (++), undefined, div, take)
-
-import Data.Data             (Data)
-import Data.Int              (Int32)
-import Data.Word             (Word32, Word64)
-import Data.Typeable         (Typeable)
-import Foreign.C.Types       (CChar, CUChar, CUShort)
-import Foreign.C.Types       (CDouble(..), CFloat(..), CInt(..), CUInt(..))
-import Foreign.C.String      (CString)
-import Foreign.Marshal.Array (peekArray,pokeArray)
-import Foreign.Ptr           (FunPtr, nullFunPtr, Ptr, plusPtr)
-import Foreign.Storable      (Storable(..))
---------------------------------------------------------------------------------
-
-#num GLFW_VERSION_MAJOR
-#num GLFW_VERSION_MINOR
-#num GLFW_VERSION_REVISION
-
-#num GLFW_RELEASE
-#num GLFW_PRESS
-#num GLFW_REPEAT
-
-#num GLFW_KEY_UNKNOWN
-
-#num GLFW_KEY_SPACE
-#num GLFW_KEY_APOSTROPHE
-#num GLFW_KEY_COMMA
-#num GLFW_KEY_MINUS
-#num GLFW_KEY_PERIOD
-#num GLFW_KEY_SLASH
-#num GLFW_KEY_0
-#num GLFW_KEY_1
-#num GLFW_KEY_2
-#num GLFW_KEY_3
-#num GLFW_KEY_4
-#num GLFW_KEY_5
-#num GLFW_KEY_6
-#num GLFW_KEY_7
-#num GLFW_KEY_8
-#num GLFW_KEY_9
-#num GLFW_KEY_SEMICOLON
-#num GLFW_KEY_EQUAL
-#num GLFW_KEY_A
-#num GLFW_KEY_B
-#num GLFW_KEY_C
-#num GLFW_KEY_D
-#num GLFW_KEY_E
-#num GLFW_KEY_F
-#num GLFW_KEY_G
-#num GLFW_KEY_H
-#num GLFW_KEY_I
-#num GLFW_KEY_J
-#num GLFW_KEY_K
-#num GLFW_KEY_L
-#num GLFW_KEY_M
-#num GLFW_KEY_N
-#num GLFW_KEY_O
-#num GLFW_KEY_P
-#num GLFW_KEY_Q
-#num GLFW_KEY_R
-#num GLFW_KEY_S
-#num GLFW_KEY_T
-#num GLFW_KEY_U
-#num GLFW_KEY_V
-#num GLFW_KEY_W
-#num GLFW_KEY_X
-#num GLFW_KEY_Y
-#num GLFW_KEY_Z
-#num GLFW_KEY_LEFT_BRACKET
-#num GLFW_KEY_BACKSLASH
-#num GLFW_KEY_RIGHT_BRACKET
-#num GLFW_KEY_GRAVE_ACCENT
-#num GLFW_KEY_WORLD_1
-#num GLFW_KEY_WORLD_2
-
-#num GLFW_KEY_ESCAPE
-#num GLFW_KEY_ENTER
-#num GLFW_KEY_TAB
-#num GLFW_KEY_BACKSPACE
-#num GLFW_KEY_INSERT
-#num GLFW_KEY_DELETE
-#num GLFW_KEY_RIGHT
-#num GLFW_KEY_LEFT
-#num GLFW_KEY_DOWN
-#num GLFW_KEY_UP
-#num GLFW_KEY_PAGE_UP
-#num GLFW_KEY_PAGE_DOWN
-#num GLFW_KEY_HOME
-#num GLFW_KEY_END
-#num GLFW_KEY_CAPS_LOCK
-#num GLFW_KEY_SCROLL_LOCK
-#num GLFW_KEY_NUM_LOCK
-#num GLFW_KEY_PRINT_SCREEN
-#num GLFW_KEY_PAUSE
-#num GLFW_KEY_F1
-#num GLFW_KEY_F2
-#num GLFW_KEY_F3
-#num GLFW_KEY_F4
-#num GLFW_KEY_F5
-#num GLFW_KEY_F6
-#num GLFW_KEY_F7
-#num GLFW_KEY_F8
-#num GLFW_KEY_F9
-#num GLFW_KEY_F10
-#num GLFW_KEY_F11
-#num GLFW_KEY_F12
-#num GLFW_KEY_F13
-#num GLFW_KEY_F14
-#num GLFW_KEY_F15
-#num GLFW_KEY_F16
-#num GLFW_KEY_F17
-#num GLFW_KEY_F18
-#num GLFW_KEY_F19
-#num GLFW_KEY_F20
-#num GLFW_KEY_F21
-#num GLFW_KEY_F22
-#num GLFW_KEY_F23
-#num GLFW_KEY_F24
-#num GLFW_KEY_F25
-#num GLFW_KEY_KP_0
-#num GLFW_KEY_KP_1
-#num GLFW_KEY_KP_2
-#num GLFW_KEY_KP_3
-#num GLFW_KEY_KP_4
-#num GLFW_KEY_KP_5
-#num GLFW_KEY_KP_6
-#num GLFW_KEY_KP_7
-#num GLFW_KEY_KP_8
-#num GLFW_KEY_KP_9
-#num GLFW_KEY_KP_DECIMAL
-#num GLFW_KEY_KP_DIVIDE
-#num GLFW_KEY_KP_MULTIPLY
-#num GLFW_KEY_KP_SUBTRACT
-#num GLFW_KEY_KP_ADD
-#num GLFW_KEY_KP_ENTER
-#num GLFW_KEY_KP_EQUAL
-#num GLFW_KEY_LEFT_SHIFT
-#num GLFW_KEY_LEFT_CONTROL
-#num GLFW_KEY_LEFT_ALT
-#num GLFW_KEY_LEFT_SUPER
-#num GLFW_KEY_RIGHT_SHIFT
-#num GLFW_KEY_RIGHT_CONTROL
-#num GLFW_KEY_RIGHT_ALT
-#num GLFW_KEY_RIGHT_SUPER
-#num GLFW_KEY_MENU
-#num GLFW_KEY_LAST
-
-#num GLFW_MOD_SHIFT
-#num GLFW_MOD_CONTROL
-#num GLFW_MOD_ALT
-#num GLFW_MOD_SUPER
-
-#num GLFW_MOUSE_BUTTON_1
-#num GLFW_MOUSE_BUTTON_2
-#num GLFW_MOUSE_BUTTON_3
-#num GLFW_MOUSE_BUTTON_4
-#num GLFW_MOUSE_BUTTON_5
-#num GLFW_MOUSE_BUTTON_6
-#num GLFW_MOUSE_BUTTON_7
-#num GLFW_MOUSE_BUTTON_8
-#num GLFW_MOUSE_BUTTON_LAST
-#num GLFW_MOUSE_BUTTON_LEFT
-#num GLFW_MOUSE_BUTTON_RIGHT
-#num GLFW_MOUSE_BUTTON_MIDDLE
-
-#num GLFW_JOYSTICK_1
-#num GLFW_JOYSTICK_2
-#num GLFW_JOYSTICK_3
-#num GLFW_JOYSTICK_4
-#num GLFW_JOYSTICK_5
-#num GLFW_JOYSTICK_6
-#num GLFW_JOYSTICK_7
-#num GLFW_JOYSTICK_8
-#num GLFW_JOYSTICK_9
-#num GLFW_JOYSTICK_10
-#num GLFW_JOYSTICK_11
-#num GLFW_JOYSTICK_12
-#num GLFW_JOYSTICK_13
-#num GLFW_JOYSTICK_14
-#num GLFW_JOYSTICK_15
-#num GLFW_JOYSTICK_16
-#num GLFW_JOYSTICK_LAST
-
-#num GLFW_NOT_INITIALIZED
-#num GLFW_NO_CURRENT_CONTEXT
-#num GLFW_INVALID_ENUM
-#num GLFW_INVALID_VALUE
-#num GLFW_OUT_OF_MEMORY
-#num GLFW_API_UNAVAILABLE
-#num GLFW_VERSION_UNAVAILABLE
-#num GLFW_PLATFORM_ERROR
-#num GLFW_FORMAT_UNAVAILABLE
-
-#num GLFW_FOCUSED
-#num GLFW_ICONIFIED
-#num GLFW_RESIZABLE
-#num GLFW_VISIBLE
-#num GLFW_DECORATED
-
-#num GLFW_RED_BITS
-#num GLFW_GREEN_BITS
-#num GLFW_BLUE_BITS
-#num GLFW_ALPHA_BITS
-#num GLFW_DEPTH_BITS
-#num GLFW_STENCIL_BITS
-#num GLFW_ACCUM_RED_BITS
-#num GLFW_ACCUM_GREEN_BITS
-#num GLFW_ACCUM_BLUE_BITS
-#num GLFW_ACCUM_ALPHA_BITS
-#num GLFW_AUX_BUFFERS
-#num GLFW_STEREO
-#num GLFW_SAMPLES
-#num GLFW_SRGB_CAPABLE
-#num GLFW_REFRESH_RATE
-
-#num GLFW_CLIENT_API
-#num GLFW_CONTEXT_VERSION_MAJOR
-#num GLFW_CONTEXT_VERSION_MINOR
-#num GLFW_CONTEXT_REVISION
-#num GLFW_CONTEXT_ROBUSTNESS
-#num GLFW_OPENGL_FORWARD_COMPAT
-#num GLFW_OPENGL_DEBUG_CONTEXT
-#num GLFW_OPENGL_PROFILE
-
-#num GLFW_OPENGL_API
-#num GLFW_OPENGL_ES_API
-
-#num GLFW_NO_ROBUSTNESS
-#num GLFW_NO_RESET_NOTIFICATION
-#num GLFW_LOSE_CONTEXT_ON_RESET
-
-#num GLFW_OPENGL_ANY_PROFILE
-#num GLFW_OPENGL_CORE_PROFILE
-#num GLFW_OPENGL_COMPAT_PROFILE
-
-#num GLFW_CURSOR
-#num GLFW_STICKY_KEYS
-#num GLFW_STICKY_MOUSE_BUTTONS
-
-#num GLFW_CURSOR_NORMAL
-#num GLFW_CURSOR_HIDDEN
-#num GLFW_CURSOR_DISABLED
-
-#num GLFW_CONNECTED
-#num GLFW_DISCONNECTED
-
-#callback GLFWglproc , IO ()
-
-#opaque_t GLFWmonitor
-deriving instance Typeable C'GLFWmonitor
-deriving instance Data     C'GLFWmonitor
-
-#opaque_t GLFWwindow
-deriving instance Typeable C'GLFWwindow
-deriving instance Data     C'GLFWwindow
-
-#callback GLFWerrorfun              , CInt -> Ptr CChar ->                                IO ()
-#callback GLFWwindowposfun          , Ptr <GLFWwindow> -> CInt -> CInt ->                 IO ()
-#callback GLFWwindowsizefun         , Ptr <GLFWwindow> -> CInt -> CInt ->                 IO ()
-#callback GLFWwindowclosefun        , Ptr <GLFWwindow> ->                                 IO ()
-#callback GLFWwindowrefreshfun      , Ptr <GLFWwindow> ->                                 IO ()
-#callback GLFWwindowfocusfun        , Ptr <GLFWwindow> -> CInt ->                         IO ()
-#callback GLFWwindowiconifyfun      , Ptr <GLFWwindow> -> CInt ->                         IO ()
-#callback GLFWframebuffersizefun    , Ptr <GLFWwindow> -> CInt -> CInt ->                 IO ()
-#callback GLFWmousebuttonfun        , Ptr <GLFWwindow> -> CInt -> CInt -> CInt ->         IO ()
-#callback GLFWcursorposfun          , Ptr <GLFWwindow> -> CDouble -> CDouble ->           IO ()
-#callback GLFWcursorenterfun        , Ptr <GLFWwindow> -> CInt ->                         IO ()
-#callback GLFWscrollfun             , Ptr <GLFWwindow> -> CDouble -> CDouble ->           IO ()
-#callback GLFWkeyfun                , Ptr <GLFWwindow> -> CInt -> CInt -> CInt -> CInt -> IO ()
-#callback GLFWcharfun               , Ptr <GLFWwindow> -> CUInt ->                        IO ()
-#callback GLFWmonitorfun            , Ptr <GLFWmonitor> -> CInt ->                        IO ()
-#callback GLFWwindowcontentscalefun , Ptr <GLFWwindow> -> CFloat -> CFloat ->             IO ()
-#callback GLFWwindowmaximizefun     , Ptr <GLFWwindow> -> CInt ->                         IO ()
-
-#starttype GLFWvidmode
-#field width       , CInt
-#field height      , CInt
-#field redBits     , CInt
-#field greenBits   , CInt
-#field blueBits    , CInt
-#field refreshRate , CInt
-#stoptype
-
-#starttype GLFWgammaramp
-#field red   , Ptr CUShort
-#field green , Ptr CUShort
-#field blue  , Ptr CUShort
-#field size  , CUInt
-#stoptype
-
-#ccall glfwInit                       ,                                                                       IO CInt
-#ccall glfwTerminate                  ,                                                                       IO ()
-#ccall glfwGetVersion                 , Ptr CInt -> Ptr CInt -> Ptr CInt ->                                   IO ()
-#ccall glfwGetVersionString           ,                                                                       IO (Ptr CChar)
-#ccall glfwSetErrorCallback           , <GLFWerrorfun> ->                                                     IO <GLFWerrorfun>
-#ccall glfwGetMonitors                , Ptr CInt ->                                                           IO (Ptr (Ptr <GLFWmonitor>))
-#ccall glfwGetPrimaryMonitor          ,                                                                       IO (Ptr <GLFWmonitor>)
-#ccall glfwGetMonitorPos              , Ptr <GLFWmonitor> -> Ptr CInt -> Ptr CInt ->                          IO ()
-#ccall glfwGetMonitorPhysicalSize     , Ptr <GLFWmonitor> -> Ptr CInt -> Ptr CInt ->                          IO ()
-#ccall glfwGetMonitorName             , Ptr <GLFWmonitor> ->                                                  IO (Ptr CChar)
-#ccall glfwSetMonitorCallback         , <GLFWmonitorfun>  ->                                                  IO <GLFWmonitorfun>
-#ccall glfwGetVideoModes              , Ptr <GLFWmonitor> -> Ptr CInt ->                                      IO (Ptr <GLFWvidmode>)
-#ccall glfwGetVideoMode               , Ptr <GLFWmonitor> ->                                                  IO (Ptr <GLFWvidmode>)
-#ccall glfwSetGamma                   , Ptr <GLFWmonitor> -> CFloat ->                                        IO ()
-#ccall glfwGetGammaRamp               , Ptr <GLFWmonitor> ->                                                  IO (Ptr <GLFWgammaramp>)
-#ccall glfwSetGammaRamp               , Ptr <GLFWmonitor> -> Ptr <GLFWgammaramp> ->                           IO ()
-#ccall glfwDefaultWindowHints         ,                                                                       IO ()
-#ccall glfwWindowHint                 , CInt -> CInt ->                                                       IO ()
-#ccall glfwCreateWindow               , CInt -> CInt -> Ptr CChar -> Ptr <GLFWmonitor> -> Ptr <GLFWwindow> -> IO (Ptr <GLFWwindow>)
-#ccall glfwDestroyWindow              , Ptr <GLFWwindow> ->                                                   IO ()
-#ccall glfwWindowShouldClose          , Ptr <GLFWwindow> ->                                                   IO CInt
-#ccall glfwSetWindowShouldClose       , Ptr <GLFWwindow> -> CInt ->                                           IO ()
-#ccall glfwSetWindowTitle             , Ptr <GLFWwindow> -> Ptr CChar ->                                      IO ()
-#ccall glfwGetWindowPos               , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt ->                           IO ()
-#ccall glfwSetWindowPos               , Ptr <GLFWwindow> -> CInt -> CInt ->                                   IO ()
-#ccall glfwGetWindowSize              , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt ->                           IO ()
-#ccall glfwSetWindowSize              , Ptr <GLFWwindow> -> CInt -> CInt ->                                   IO ()
-#ccall glfwGetFramebufferSize         , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt ->                           IO ()
-#ccall glfwIconifyWindow              , Ptr <GLFWwindow> ->                                                   IO ()
-#ccall glfwRestoreWindow              , Ptr <GLFWwindow> ->                                                   IO ()
-#ccall glfwShowWindow                 , Ptr <GLFWwindow> ->                                                   IO ()
-#ccall glfwHideWindow                 , Ptr <GLFWwindow> ->                                                   IO ()
-#ccall glfwGetWindowMonitor           , Ptr <GLFWwindow> ->                                                   IO (Ptr <GLFWmonitor>)
-#ccall glfwGetWindowAttrib            , Ptr <GLFWwindow> -> CInt ->                                           IO CInt
-#ccall glfwSetWindowUserPointer       , Ptr <GLFWwindow> -> Ptr () ->                                         IO ()
-#ccall glfwGetWindowUserPointer       , Ptr <GLFWwindow> ->                                                   IO (Ptr ())
-#ccall glfwSetWindowPosCallback       , Ptr <GLFWwindow> -> <GLFWwindowposfun> ->                             IO <GLFWwindowposfun>
-#ccall glfwSetWindowSizeCallback      , Ptr <GLFWwindow> -> <GLFWwindowsizefun> ->                            IO <GLFWwindowsizefun>
-#ccall glfwSetWindowCloseCallback     , Ptr <GLFWwindow> -> <GLFWwindowclosefun> ->                           IO <GLFWwindowclosefun>
-#ccall glfwSetWindowRefreshCallback   , Ptr <GLFWwindow> -> <GLFWwindowrefreshfun> ->                         IO <GLFWwindowrefreshfun>
-#ccall glfwSetWindowFocusCallback     , Ptr <GLFWwindow> -> <GLFWwindowfocusfun> ->                           IO <GLFWwindowfocusfun>
-#ccall glfwSetWindowIconifyCallback   , Ptr <GLFWwindow> -> <GLFWwindowiconifyfun> ->                         IO <GLFWwindowiconifyfun>
-#ccall glfwSetFramebufferSizeCallback , Ptr <GLFWwindow> -> <GLFWframebuffersizefun> ->                       IO <GLFWframebuffersizefun>
-#ccall glfwPollEvents                 ,                                                                       IO ()
-#ccall glfwWaitEvents                 ,                                                                       IO ()
-#ccall glfwPostEmptyEvent             ,                                                                       IO ()
-#ccall glfwGetInputMode               , Ptr <GLFWwindow> -> CInt ->                                           IO CInt
-#ccall glfwSetInputMode               , Ptr <GLFWwindow> -> CInt -> CInt ->                                   IO ()
-#ccall glfwGetKey                     , Ptr <GLFWwindow> -> CInt ->                                           IO CInt
-#ccall glfwGetMouseButton             , Ptr <GLFWwindow> -> CInt ->                                           IO CInt
-#ccall glfwGetCursorPos               , Ptr <GLFWwindow> -> Ptr CDouble -> Ptr CDouble ->                     IO ()
-#ccall glfwSetCursorPos               , Ptr <GLFWwindow> -> CDouble -> CDouble ->                             IO ()
-#ccall glfwSetKeyCallback             , Ptr <GLFWwindow> -> <GLFWkeyfun> ->                                   IO <GLFWkeyfun>
-#ccall glfwSetCharCallback            , Ptr <GLFWwindow> -> <GLFWcharfun> ->                                  IO <GLFWcharfun>
-#ccall glfwSetMouseButtonCallback     , Ptr <GLFWwindow> -> <GLFWmousebuttonfun> ->                           IO <GLFWmousebuttonfun>
-#ccall glfwSetCursorPosCallback       , Ptr <GLFWwindow> -> <GLFWcursorposfun> ->                             IO <GLFWcursorposfun>
-#ccall glfwSetCursorEnterCallback     , Ptr <GLFWwindow> -> <GLFWcursorenterfun> ->                           IO <GLFWcursorenterfun>
-#ccall glfwSetScrollCallback          , Ptr <GLFWwindow> -> <GLFWscrollfun> ->                                IO <GLFWscrollfun>
-#ccall glfwJoystickPresent            , CInt ->                                                               IO CInt
-#ccall glfwGetJoystickAxes            , CInt -> Ptr CInt ->                                                   IO (Ptr CFloat)
-#ccall glfwGetJoystickButtons         , CInt -> Ptr CInt ->                                                   IO (Ptr CUChar)
-#ccall glfwGetJoystickName            , CInt ->                                                               IO (Ptr CChar)
-#ccall glfwSetClipboardString         , Ptr <GLFWwindow> -> Ptr CChar ->                                      IO ()
-#ccall glfwGetClipboardString         , Ptr <GLFWwindow> ->                                                   IO (Ptr CChar)
-#ccall glfwGetTime                    ,                                                                       IO CDouble
-#ccall glfwSetTime                    , CDouble ->                                                            IO ()
-#ccall glfwMakeContextCurrent         , Ptr <GLFWwindow> ->                                                   IO ()
-#ccall glfwGetCurrentContext          ,                                                                       IO (Ptr <GLFWwindow>)
-#ccall glfwSwapBuffers                , Ptr <GLFWwindow> ->                                                   IO ()
-#ccall glfwSwapInterval               , CInt ->                                                               IO ()
-#ccall glfwExtensionSupported         , Ptr CChar ->                                                          IO CInt
-#ccall glfwGetProcAddress             , Ptr CChar ->                                                          IO <GLFWglproc>
-
---------------------------------------------------------------------------------
--- GLFW 3.1 additions
---------------------------------------------------------------------------------
-
-#num GLFW_ARROW_CURSOR
-#num GLFW_IBEAM_CURSOR
-#num GLFW_CROSSHAIR_CURSOR
-#num GLFW_HAND_CURSOR
-#num GLFW_HRESIZE_CURSOR
-#num GLFW_VRESIZE_CURSOR
-#num GLFW_DONT_CARE
-#num GLFW_DOUBLEBUFFER
-#num GLFW_AUTO_ICONIFY
-#num GLFW_FLOATING
-#num GLFW_CONTEXT_RELEASE_BEHAVIOR
-#num GLFW_ANY_RELEASE_BEHAVIOR
-#num GLFW_RELEASE_BEHAVIOR_FLUSH
-#num GLFW_RELEASE_BEHAVIOR_NONE
-
-#starttype GLFWimage
-#field width  , CInt
-#field height , CInt
-#field pixels , Ptr CUChar
-#stoptype
-
-#opaque_t GLFWcursor
-deriving instance Typeable C'GLFWcursor
-deriving instance Data     C'GLFWcursor
-
-#callback GLFWdropfun , Ptr <GLFWwindow> -> CInt -> Ptr (Ptr CChar) -> IO ()
-#callback GLFWcharmodsfun , Ptr <GLFWwindow> -> CUInt -> CInt -> IO ()
-
-#ccall glfwCreateCursor , Ptr <GLFWimage> -> CInt -> CInt -> IO (Ptr <GLFWcursor>)
-#ccall glfwCreateStandardCursor , CInt -> IO (Ptr <GLFWcursor>)
-#ccall glfwSetCursor , Ptr <GLFWwindow> -> Ptr <GLFWcursor> -> IO ()
-#ccall glfwDestroyCursor , Ptr <GLFWcursor> -> IO ()
-#ccall glfwSetDropCallback , Ptr <GLFWwindow> -> <GLFWdropfun> -> IO <GLFWdropfun>
-#ccall glfwSetCharModsCallback , Ptr <GLFWwindow> -> <GLFWcharmodsfun> -> IO <GLFWcharmodsfun>
-#ccall glfwGetWindowFrameSize , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> IO ()
-
---------------------------------------------------------------------------------
--- GLFW 3.2 additions
---------------------------------------------------------------------------------
-
-#num GLFW_NO_API
-#num GLFW_CONTEXT_CREATION_API
-#num GLFW_NATIVE_CONTEXT_API
-#num GLFW_EGL_CONTEXT_API
-#num GLFW_CONTEXT_NO_ERROR
-#num GLFW_TRUE
-#num GLFW_FALSE
-#num GLFW_MAXIMIZED
-
-#ccall glfwFocusWindow , Ptr <GLFWwindow> -> IO ()
-#ccall glfwMaximizeWindow , Ptr <GLFWwindow> -> IO ()
-#ccall glfwSetWindowMonitor , Ptr <GLFWwindow> -> Ptr <GLFWmonitor> -> CInt -> CInt -> CInt -> CInt -> CInt -> IO ()
-#ccall glfwSetWindowIcon , Ptr <GLFWwindow> -> CInt -> Ptr <GLFWimage> -> IO ()
-#ccall glfwWaitEventsTimeout , CDouble -> IO ()
-#ccall glfwSetWindowSizeLimits , Ptr <GLFWwindow> -> CInt -> CInt -> CInt -> CInt -> IO ()
-#ccall glfwSetWindowAspectRatio , Ptr <GLFWwindow> -> CInt -> CInt -> IO ()
-#ccall glfwGetKeyName , CInt -> CInt -> IO CString
-#ccall glfwGetTimerValue , IO Word64
-#ccall glfwGetTimerFrequency , IO Word64
-
-#callback GLFWjoystickfun , CInt -> CInt -> IO ()
-#ccall glfwSetJoystickCallback , <GLFWjoystickfun> -> IO <GLFWjoystickfun>
-
-#ccall glfwVulkanSupported , IO CInt
-#ccall glfwGetRequiredInstanceExtensions , Ptr Word32 -> IO (Ptr CString)
-
--- GLFW prevents the declaration of some of the Vulkan functions in its header
--- glfw3.h if it cannot find the required Vulkan headers. As of now (4/2018),
--- these functions are still *defined* in vulkan.c, which is built regardless of
--- whether or not the Vulkan headers were found. Internally, the required types
--- are defined locally in order to make the build work, and h2c will still link
--- against them without a problem. Whether or not you have a valid Vulkan
--- implementation might not be clear though. Nothing is preventing the glfw3
--- authors from hiding the Vulkan functions without valid headers, which could
--- cause some pain in the future, so use the following functions with caution.
--- See commit @521d161af85047 for a way to deal with this more annoyingly.
-#ccall glfwGetInstanceProcAddress               , Ptr vkInstance -> CString -> IO (FunPtr vkProc)
-#ccall glfwGetPhysicalDevicePresentationSupport , Ptr vkInstance -> Ptr vkPhysicalDevice -> Word32 -> IO CInt
-#ccall glfwCreateWindowSurface                  , Ptr vkInstance -> Ptr <GLFWwindow> -> Ptr vkAllocationCallbacks -> Ptr vkSurfaceKHR -> IO Int32
-
---------------------------------------------------------------------------------
--- GLFW 3.3 additions
---------------------------------------------------------------------------------
-
-#num GLFW_OSMESA_CONTEXT_API
-
-#num GLFW_NO_ERROR
-#num GLFW_GAMEPAD_BUTTON_A
-#num GLFW_GAMEPAD_BUTTON_B
-#num GLFW_GAMEPAD_BUTTON_X
-#num GLFW_GAMEPAD_BUTTON_Y
-#num GLFW_GAMEPAD_BUTTON_LEFT_BUMPER
-#num GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER
-#num GLFW_GAMEPAD_BUTTON_BACK
-#num GLFW_GAMEPAD_BUTTON_START
-#num GLFW_GAMEPAD_BUTTON_GUIDE
-#num GLFW_GAMEPAD_BUTTON_LEFT_THUMB
-#num GLFW_GAMEPAD_BUTTON_RIGHT_THUMB
-#num GLFW_GAMEPAD_BUTTON_DPAD_UP
-#num GLFW_GAMEPAD_BUTTON_DPAD_RIGHT
-#num GLFW_GAMEPAD_BUTTON_DPAD_DOWN
-#num GLFW_GAMEPAD_BUTTON_DPAD_LEFT
-#num GLFW_GAMEPAD_BUTTON_LAST
-#num GLFW_GAMEPAD_BUTTON_CROSS
-#num GLFW_GAMEPAD_BUTTON_CIRCLE
-#num GLFW_GAMEPAD_BUTTON_SQUARE
-#num GLFW_GAMEPAD_BUTTON_TRIANGLE
-#num GLFW_GAMEPAD_AXIS_LEFT_X
-#num GLFW_GAMEPAD_AXIS_LEFT_Y
-#num GLFW_GAMEPAD_AXIS_RIGHT_X
-#num GLFW_GAMEPAD_AXIS_RIGHT_Y
-#num GLFW_GAMEPAD_AXIS_LEFT_TRIGGER
-#num GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
-#num GLFW_GAMEPAD_AXIS_LAST
-
-#num GLFW_HAT_CENTERED
-#num GLFW_HAT_UP
-#num GLFW_HAT_RIGHT
-#num GLFW_HAT_DOWN
-#num GLFW_HAT_LEFT
-#num GLFW_HAT_RIGHT_UP
-#num GLFW_HAT_RIGHT_DOWN
-#num GLFW_HAT_LEFT_UP
-#num GLFW_HAT_LEFT_DOWN
-
--- Misc
-#num GLFW_HOVERED
-#num GLFW_LOCK_KEY_MODS
-#num GLFW_MOD_CAPS_LOCK
-#num GLFW_MOD_NUM_LOCK
-#num GLFW_RAW_MOUSE_MOTION
-
--- Init hints
-#num GLFW_JOYSTICK_HAT_BUTTONS
-#num GLFW_COCOA_CHDIR_RESOURCES
-#num GLFW_COCOA_MENUBAR
-
--- Window hints
-#num GLFW_TRANSPARENT_FRAMEBUFFER
-#num GLFW_CENTER_CURSOR
-#num GLFW_FOCUS_ON_SHOW
-#num GLFW_SCALE_TO_MONITOR
-#num GLFW_COCOA_RETINA_FRAMEBUFFER
-#num GLFW_COCOA_FRAME_NAME
-#num GLFW_COCOA_GRAPHICS_SWITCHING
-#num GLFW_X11_CLASS_NAME
-#num GLFW_X11_INSTANCE_NAME
-
-#starttype GLFWgamepadstate
-#array_field buttons , CUChar
-#array_field axes    , CFloat
-#stoptype
-
-#ccall glfwGetError                      , Ptr CString -> IO CInt
-#ccall glfwUpdateGamepadMappings         , CString -> IO CInt
-#ccall glfwJoystickIsGamepad             , CInt -> IO CInt
-#ccall glfwGetJoystickGUID               , CInt -> IO CString
-#ccall glfwGetGamepadName                , CInt -> IO CString
-#ccall glfwGetGamepadState               , CInt -> Ptr <GLFWgamepadstate> -> IO CInt
-#ccall glfwGetWindowContentScale         , Ptr <GLFWwindow> -> Ptr CFloat -> Ptr CFloat -> IO ()
-#ccall glfwGetMonitorContentScale        , Ptr <GLFWmonitor> -> Ptr CFloat -> Ptr CFloat -> IO ()
-#ccall glfwSetWindowContentScaleCallback , Ptr <GLFWwindow> -> <GLFWwindowcontentscalefun> -> IO <GLFWwindowcontentscalefun>
-#ccall glfwRequestWindowAttention        , Ptr <GLFWwindow> -> IO ()
-#ccall glfwGetMonitorWorkarea            , Ptr <GLFWmonitor> -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> IO ()
-#ccall glfwGetKeyScancode                , CInt -> IO CInt
-#ccall glfwSetWindowMaximizeCallback     , Ptr <GLFWwindow> -> <GLFWwindowmaximizefun> -> IO <GLFWwindowmaximizefun>
-#ccall glfwSetWindowAttrib               , Ptr <GLFWwindow> -> CInt -> CInt -> IO ()
-#ccall glfwGetJoystickHats               , CInt -> Ptr CInt -> IO (Ptr CUChar)
-#ccall glfwInitHint                      , CInt -> CInt -> IO ()
-#ccall glfwWindowHintString              , CInt -> CString -> IO ()
-#ccall glfwGetWindowOpacity              , Ptr <GLFWwindow> -> IO CFloat
-#ccall glfwSetWindowOpacity              , Ptr <GLFWwindow> -> CFloat -> IO ()
-#ccall glfwSetMonitorUserPointer         , Ptr <GLFWmonitor> -> Ptr () -> IO ()
-#ccall glfwGetMonitorUserPointer         , Ptr <GLFWmonitor> -> IO (Ptr ())
-#ccall glfwSetJoystickUserPointer        , CInt -> Ptr () -> IO ()
-#ccall glfwGetJoystickUserPointer        , CInt -> IO (Ptr ())
-#ccall glfwRawMouseMotionSupported       , IO CInt
-
---------------------------------------------------------------------------------
--- Native APIs
---------------------------------------------------------------------------------
-
-#if defined(GLFW_EXPOSE_NATIVE_WIN32)
-#ccall glfwGetWin32Adapter , Ptr <GLFWwindow> -> IO CString
-#ccall glfwGetWin32Monitor , Ptr <GLFWwindow> -> IO CString
-#ccall glfwGetWin32Window  , Ptr <GLFWwindow> -> IO (Ptr ())
-#else
-
-p'glfwGetWin32Adapter :: FunPtr (Ptr C'GLFWwindow -> IO CString)
-p'glfwGetWin32Adapter = nullFunPtr
-
-c'glfwGetWin32Adapter :: Ptr C'GLFWwindow -> IO CString
-c'glfwGetWin32Adapter =
-  error $ "c'glfwGetWin32Adapter undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetWin32Monitor :: FunPtr (Ptr C'GLFWwindow -> IO CString)
-p'glfwGetWin32Monitor = nullFunPtr
-
-c'glfwGetWin32Monitor :: Ptr C'GLFWwindow -> IO CString
-c'glfwGetWin32Monitor =
-  error $ "c'glfwGetWin32Monitor undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetWin32Window :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))
-p'glfwGetWin32Window = nullFunPtr
-
-c'glfwGetWin32Window ::  Ptr C'GLFWwindow -> IO (Ptr ())
-c'glfwGetWin32Window =
-  error $ "c'glfwGetWin32Window undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-#endif
-
-#if defined(GLFW_EXPOSE_NATIVE_WGL)
-#ccall glfwGetWGLContext , Ptr <GLFWwindow> -> IO (Ptr ())
-#else
-p'glfwGetWGLContext :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))
-p'glfwGetWGLContext = nullFunPtr
-
-c'glfwGetWGLContext :: Ptr C'GLFWwindow -> IO (Ptr ())
-c'glfwGetWGLContext =
-  error $ "c'glfwGetWGLContext undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-#endif
-
-#if defined(GLFW_EXPOSE_NATIVE_COCOA)
-#ccall glfwGetCocoaMonitor , Ptr <GLFWwindow> -> IO (Ptr Word32)
-#ccall glfwGetCocoaWindow , Ptr <GLFWwindow> -> IO (Ptr ())
-#else
-p'glfwGetCocoaMonitor :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr Word32))
-p'glfwGetCocoaMonitor = nullFunPtr
-
-c'glfwGetCocoaMonitor :: Ptr C'GLFWwindow -> IO (Ptr Word32)
-c'glfwGetCocoaMonitor =
-  error $ "c'glfwGetCocoaMonitor undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetCocoaWindow :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))
-p'glfwGetCocoaWindow = nullFunPtr
-
-c'glfwGetCocoaWindow :: Ptr C'GLFWwindow -> IO (Ptr ())
-c'glfwGetCocoaWindow =
-  error $ "c'glfwGetCocoaWindow undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-#endif
-
-#if defined(GLFW_EXPOSE_NATIVE_NSGL)
-#ccall glfwGetNSGLContext , Ptr <GLFWwindow> -> IO (Ptr ())
-#else
-p'glfwGetNSGLContext :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))
-p'glfwGetNSGLContext = nullFunPtr
-
-c'glfwGetNSGLContext :: Ptr C'GLFWwindow -> IO (Ptr ())
-c'glfwGetNSGLContext =
-  error $ "c'glfwGetNSGLContext undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-#endif
-
-#if defined(GLFW_EXPOSE_NATIVE_X11)
-#ccall glfwGetX11Display , Ptr <GLFWwindow> -> IO (Ptr display)
-#ccall glfwGetX11Adapter , Ptr <GLFWwindow> -> IO Word64
-#ccall glfwGetX11Monitor , Ptr <GLFWwindow> -> IO Word64
-#ccall glfwGetX11Window  , Ptr <GLFWwindow> -> IO Word64
-
---------------------------------------------------------------------------------
--- 3.3 Additions
---------------------------------------------------------------------------------
-#ccall glfwSetX11SelectionString , CString -> IO ()
-#ccall glfwGetX11SelectionString , IO CString
-
-#else
-p'glfwGetX11Display :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr display))
-p'glfwGetX11Display = nullFunPtr
-
-c'glfwGetX11Display :: Ptr C'GLFWwindow -> IO (Ptr display)
-c'glfwGetX11Display =
-  error $ "c'glfwGetX11Display undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetX11Adapter :: FunPtr (Ptr C'GLFWwindow -> IO Word64)
-p'glfwGetX11Adapter = nullFunPtr
-
-c'glfwGetX11Adapter :: Ptr C'GLFWwindow -> IO Word64
-c'glfwGetX11Adapter =
-  error $ "c'glfwGetX11Adapter undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetX11Monitor :: FunPtr (Ptr C'GLFWwindow -> IO Word64)
-p'glfwGetX11Monitor = nullFunPtr
-
-c'glfwGetX11Monitor :: Ptr C'GLFWwindow -> IO Word64
-c'glfwGetX11Monitor =
-  error $ "c'glfwGetX11Monitor undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetX11Window :: FunPtr (Ptr C'GLFWwindow -> IO Word64)
-p'glfwGetX11Window = nullFunPtr
-
-c'glfwGetX11Window ::  Ptr C'GLFWwindow -> IO Word64
-c'glfwGetX11Window =
-  error $ "c'glfwGetX11Window undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetX11SelectionString :: FunPtr (IO CString)
-p'glfwGetX11SelectionString = nullFunPtr
-
-c'glfwGetX11SelectionString :: IO CString
-c'glfwGetX11SelectionString =
-  error $ "c'glfwGetX11SelectionString undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwSetX11SelectionString :: FunPtr (CString -> IO ())
-p'glfwSetX11SelectionString = nullFunPtr
-
-c'glfwSetX11SelectionString :: CString -> IO ()
-c'glfwSetX11SelectionString =
-  error $ "c'glfwSetX11SelectionString undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-#endif
-
-#if defined(GLFW_EXPOSE_NATIVE_GLX)
-#ccall glfwGetGLXContext , Ptr <GLFWwindow> -> IO (Ptr ())
-#ccall glfwGetGLXWindow  , Ptr <GLFWwindow> -> IO Word64
-#else
-p'glfwGetGLXContext :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))
-p'glfwGetGLXContext = nullFunPtr
-
-c'glfwGetGLXContext :: Ptr C'GLFWwindow -> IO (Ptr ())
-c'glfwGetGLXContext =
-  error $ "c'glfwGetGLXContext undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetGLXWindow :: FunPtr (Ptr C'GLFWwindow -> IO Word64)
-p'glfwGetGLXWindow = nullFunPtr
-
-c'glfwGetGLXWindow ::  Ptr C'GLFWwindow -> IO Word64
-c'glfwGetGLXWindow =
-  error $ "c'glfwGetGLXWindow undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-#endif
-
-#if defined(GLFW_EXPOSE_NATIVE_WAYLAND)
-#ccall glfwGetWaylandDisplay , IO (Ptr wl_display)
-#ccall glfwGetWaylandMonitor , Ptr <GLFWwindow> -> IO (Ptr wl_output)
-#ccall glfwGetWaylandWindow , Ptr <GLFWwindow> -> IO (Ptr wl_surface)
-#else
-p'glfwGetWaylandDisplay :: FunPtr (IO (Ptr wl_display))
-p'glfwGetWaylandDisplay = nullFunPtr
-
-c'glfwGetWaylandDisplay :: IO (Ptr wl_display)
-c'glfwGetWaylandDisplay =
-  error $ "c'glfwGetWaylandDisplay undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetWaylandMonitor :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr wl_output))
-p'glfwGetWaylandMonitor = nullFunPtr
-
-c'glfwGetWaylandMonitor :: Ptr C'GLFWwindow -> IO (Ptr wl_output)
-c'glfwGetWaylandMonitor =
-  error $ "c'glfwGetWaylandMonitor undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetWaylandWindow :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr wl_surface))
-p'glfwGetWaylandWindow = nullFunPtr
-
-c'glfwGetWaylandWindow :: Ptr C'GLFWwindow -> IO (Ptr wl_surface)
-c'glfwGetWaylandWindow =
-  error $ "c'glfwGetWaylandWindow undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-#endif
-
-#if defined(GLFW_EXPOSE_NATIVE_EGL)
-#ccall glfwGetEGLDisplay , IO (Ptr ())
-#ccall glfwGetEGLContext , Ptr <GLFWwindow> -> IO (Ptr ())
-#ccall glfwGetEGLSurface , Ptr <GLFWwindow> -> IO (Ptr ())
-#else
-p'glfwGetEGLDisplay :: FunPtr (IO (Ptr ()))
-p'glfwGetEGLDisplay = nullFunPtr
-
-c'glfwGetEGLDisplay :: IO (Ptr ())
-c'glfwGetEGLDisplay =
-  error $ "c'glfwGetEGLDisplay undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetEGLContext :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))
-p'glfwGetEGLContext = nullFunPtr
-
-c'glfwGetEGLContext :: Ptr C'GLFWwindow -> IO (Ptr ())
-c'glfwGetEGLContext =
-  error $ "c'glfwGetEGLContext undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetEGLSurface :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))
-p'glfwGetEGLSurface = nullFunPtr
-
-c'glfwGetEGLSurface :: Ptr C'GLFWwindow -> IO (Ptr ())
-c'glfwGetEGLSurface =
-  error $ "c'glfwGetEGLSurface undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-#endif
-
-#if defined(GLFW_EXPOSE_NATIVE_OSMESA)
-#ccall glfwGetOSMesaColorBuffer , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt
-#ccall glfwGetOSMesaDepthBuffer , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt
-#ccall glfwGetOSMesaContext , Ptr <GLFWwindow> -> IO (Ptr ())
-#else
-p'glfwGetOSMesaColorBuffer :: FunPtr (Ptr C'GLFWwindow -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt)
-p'glfwGetOSMesaColorBuffer = nullFunPtr
-
-c'glfwGetOSMesaColorBuffer :: Ptr C'GLFWwindow -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt
-c'glfwGetOSMesaColorBuffer =
-  error $ "c'glfwGetOSMesaColorBuffer undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetOSMesaDepthBuffer :: FunPtr (Ptr C'GLFWwindow -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt)
-p'glfwGetOSMesaDepthBuffer = nullFunPtr
-
-c'glfwGetOSMesaDepthBuffer :: Ptr C'GLFWwindow -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt
-c'glfwGetOSMesaDepthBuffer =
-  error $ "c'glfwGetOSMesaDepthBuffer undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-
-p'glfwGetOSMesaContext :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))
-p'glfwGetOSMesaContext = nullFunPtr
-
-c'glfwGetOSMesaContext :: Ptr C'GLFWwindow -> IO (Ptr ())
-c'glfwGetOSMesaContext =
-  error $ "c'glfwGetOSMesaContext undefined! -- "
-       ++ "Did you use the wrong glfw3native API?"
-#endif
+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TemplateHaskell #-}++--------------------------------------------------------------------------------++#include <bindings.dsl.h>+#include <GLFW/glfw3.h>++#ifdef ExposeNative+  #warning "You are compiling glfw using the native access functions. BEWARE."++  #if defined(_WIN32)++    #define GLFW_EXPOSE_NATIVE_WIN32+    #define GLFW_EXPOSE_NATIVE_WGL++  #elif defined(__APPLE__)++    #define GLFW_EXPOSE_NATIVE_COCOA+    #define GLFW_EXPOSE_NATIVE_NSGL++  #elif defined(__linux__)++    #define GLFW_EXPOSE_NATIVE_EGL++    #if defined(BINDINGS_GLFW_USE_X11)+      #define GLFW_EXPOSE_NATIVE_X11+      #define GLFW_EXPOSE_NATIVE_GLX+    #elif defined(BINDINGS_GLFW_USE_WAYLAND)+      #define GLFW_EXPOSE_NATIVE_WAYLAND+    #elif defined(BINDINGS_GLFW_USE_OSMESA)+      #define GLFW_EXPOSE_NATIVE_OSMESA+    #endif++  #endif++  #include <GLFW/glfw3native.h>++#endif++--------------------------------------------------------------------------------++module Bindings.GLFW where++import Prelude (Eq, IO, Num, Show)+import Prelude (($), return, error, (++), undefined, div, take)++import Data.Data             (Data)+import Data.Int              (Int32)+import Data.Word             (Word32, Word64)+import Data.Typeable         (Typeable)+import Foreign.C.Types       (CChar, CUChar, CUShort)+import Foreign.C.Types       (CDouble(..), CFloat(..), CInt(..), CUInt(..))+import Foreign.C.String      (CString)+import Foreign.Marshal.Array (peekArray,pokeArray)+import Foreign.Ptr           (FunPtr, nullFunPtr, Ptr, plusPtr)+import Foreign.Storable      (Storable(..))+--------------------------------------------------------------------------------++#num GLFW_VERSION_MAJOR+#num GLFW_VERSION_MINOR+#num GLFW_VERSION_REVISION++#num GLFW_RELEASE+#num GLFW_PRESS+#num GLFW_REPEAT++#num GLFW_KEY_UNKNOWN++#num GLFW_KEY_SPACE+#num GLFW_KEY_APOSTROPHE+#num GLFW_KEY_COMMA+#num GLFW_KEY_MINUS+#num GLFW_KEY_PERIOD+#num GLFW_KEY_SLASH+#num GLFW_KEY_0+#num GLFW_KEY_1+#num GLFW_KEY_2+#num GLFW_KEY_3+#num GLFW_KEY_4+#num GLFW_KEY_5+#num GLFW_KEY_6+#num GLFW_KEY_7+#num GLFW_KEY_8+#num GLFW_KEY_9+#num GLFW_KEY_SEMICOLON+#num GLFW_KEY_EQUAL+#num GLFW_KEY_A+#num GLFW_KEY_B+#num GLFW_KEY_C+#num GLFW_KEY_D+#num GLFW_KEY_E+#num GLFW_KEY_F+#num GLFW_KEY_G+#num GLFW_KEY_H+#num GLFW_KEY_I+#num GLFW_KEY_J+#num GLFW_KEY_K+#num GLFW_KEY_L+#num GLFW_KEY_M+#num GLFW_KEY_N+#num GLFW_KEY_O+#num GLFW_KEY_P+#num GLFW_KEY_Q+#num GLFW_KEY_R+#num GLFW_KEY_S+#num GLFW_KEY_T+#num GLFW_KEY_U+#num GLFW_KEY_V+#num GLFW_KEY_W+#num GLFW_KEY_X+#num GLFW_KEY_Y+#num GLFW_KEY_Z+#num GLFW_KEY_LEFT_BRACKET+#num GLFW_KEY_BACKSLASH+#num GLFW_KEY_RIGHT_BRACKET+#num GLFW_KEY_GRAVE_ACCENT+#num GLFW_KEY_WORLD_1+#num GLFW_KEY_WORLD_2++#num GLFW_KEY_ESCAPE+#num GLFW_KEY_ENTER+#num GLFW_KEY_TAB+#num GLFW_KEY_BACKSPACE+#num GLFW_KEY_INSERT+#num GLFW_KEY_DELETE+#num GLFW_KEY_RIGHT+#num GLFW_KEY_LEFT+#num GLFW_KEY_DOWN+#num GLFW_KEY_UP+#num GLFW_KEY_PAGE_UP+#num GLFW_KEY_PAGE_DOWN+#num GLFW_KEY_HOME+#num GLFW_KEY_END+#num GLFW_KEY_CAPS_LOCK+#num GLFW_KEY_SCROLL_LOCK+#num GLFW_KEY_NUM_LOCK+#num GLFW_KEY_PRINT_SCREEN+#num GLFW_KEY_PAUSE+#num GLFW_KEY_F1+#num GLFW_KEY_F2+#num GLFW_KEY_F3+#num GLFW_KEY_F4+#num GLFW_KEY_F5+#num GLFW_KEY_F6+#num GLFW_KEY_F7+#num GLFW_KEY_F8+#num GLFW_KEY_F9+#num GLFW_KEY_F10+#num GLFW_KEY_F11+#num GLFW_KEY_F12+#num GLFW_KEY_F13+#num GLFW_KEY_F14+#num GLFW_KEY_F15+#num GLFW_KEY_F16+#num GLFW_KEY_F17+#num GLFW_KEY_F18+#num GLFW_KEY_F19+#num GLFW_KEY_F20+#num GLFW_KEY_F21+#num GLFW_KEY_F22+#num GLFW_KEY_F23+#num GLFW_KEY_F24+#num GLFW_KEY_F25+#num GLFW_KEY_KP_0+#num GLFW_KEY_KP_1+#num GLFW_KEY_KP_2+#num GLFW_KEY_KP_3+#num GLFW_KEY_KP_4+#num GLFW_KEY_KP_5+#num GLFW_KEY_KP_6+#num GLFW_KEY_KP_7+#num GLFW_KEY_KP_8+#num GLFW_KEY_KP_9+#num GLFW_KEY_KP_DECIMAL+#num GLFW_KEY_KP_DIVIDE+#num GLFW_KEY_KP_MULTIPLY+#num GLFW_KEY_KP_SUBTRACT+#num GLFW_KEY_KP_ADD+#num GLFW_KEY_KP_ENTER+#num GLFW_KEY_KP_EQUAL+#num GLFW_KEY_LEFT_SHIFT+#num GLFW_KEY_LEFT_CONTROL+#num GLFW_KEY_LEFT_ALT+#num GLFW_KEY_LEFT_SUPER+#num GLFW_KEY_RIGHT_SHIFT+#num GLFW_KEY_RIGHT_CONTROL+#num GLFW_KEY_RIGHT_ALT+#num GLFW_KEY_RIGHT_SUPER+#num GLFW_KEY_MENU+#num GLFW_KEY_LAST++#num GLFW_MOD_SHIFT+#num GLFW_MOD_CONTROL+#num GLFW_MOD_ALT+#num GLFW_MOD_SUPER++#num GLFW_MOUSE_BUTTON_1+#num GLFW_MOUSE_BUTTON_2+#num GLFW_MOUSE_BUTTON_3+#num GLFW_MOUSE_BUTTON_4+#num GLFW_MOUSE_BUTTON_5+#num GLFW_MOUSE_BUTTON_6+#num GLFW_MOUSE_BUTTON_7+#num GLFW_MOUSE_BUTTON_8+#num GLFW_MOUSE_BUTTON_LAST+#num GLFW_MOUSE_BUTTON_LEFT+#num GLFW_MOUSE_BUTTON_RIGHT+#num GLFW_MOUSE_BUTTON_MIDDLE++#num GLFW_JOYSTICK_1+#num GLFW_JOYSTICK_2+#num GLFW_JOYSTICK_3+#num GLFW_JOYSTICK_4+#num GLFW_JOYSTICK_5+#num GLFW_JOYSTICK_6+#num GLFW_JOYSTICK_7+#num GLFW_JOYSTICK_8+#num GLFW_JOYSTICK_9+#num GLFW_JOYSTICK_10+#num GLFW_JOYSTICK_11+#num GLFW_JOYSTICK_12+#num GLFW_JOYSTICK_13+#num GLFW_JOYSTICK_14+#num GLFW_JOYSTICK_15+#num GLFW_JOYSTICK_16+#num GLFW_JOYSTICK_LAST++#num GLFW_NOT_INITIALIZED+#num GLFW_NO_CURRENT_CONTEXT+#num GLFW_INVALID_ENUM+#num GLFW_INVALID_VALUE+#num GLFW_OUT_OF_MEMORY+#num GLFW_API_UNAVAILABLE+#num GLFW_VERSION_UNAVAILABLE+#num GLFW_PLATFORM_ERROR+#num GLFW_FORMAT_UNAVAILABLE++#num GLFW_FOCUSED+#num GLFW_ICONIFIED+#num GLFW_RESIZABLE+#num GLFW_VISIBLE+#num GLFW_DECORATED++#num GLFW_RED_BITS+#num GLFW_GREEN_BITS+#num GLFW_BLUE_BITS+#num GLFW_ALPHA_BITS+#num GLFW_DEPTH_BITS+#num GLFW_STENCIL_BITS+#num GLFW_ACCUM_RED_BITS+#num GLFW_ACCUM_GREEN_BITS+#num GLFW_ACCUM_BLUE_BITS+#num GLFW_ACCUM_ALPHA_BITS+#num GLFW_AUX_BUFFERS+#num GLFW_STEREO+#num GLFW_SAMPLES+#num GLFW_SRGB_CAPABLE+#num GLFW_REFRESH_RATE++#num GLFW_CLIENT_API+#num GLFW_CONTEXT_VERSION_MAJOR+#num GLFW_CONTEXT_VERSION_MINOR+#num GLFW_CONTEXT_REVISION+#num GLFW_CONTEXT_ROBUSTNESS+#num GLFW_OPENGL_FORWARD_COMPAT+#num GLFW_OPENGL_DEBUG_CONTEXT+#num GLFW_OPENGL_PROFILE++#num GLFW_OPENGL_API+#num GLFW_OPENGL_ES_API++#num GLFW_NO_ROBUSTNESS+#num GLFW_NO_RESET_NOTIFICATION+#num GLFW_LOSE_CONTEXT_ON_RESET++#num GLFW_OPENGL_ANY_PROFILE+#num GLFW_OPENGL_CORE_PROFILE+#num GLFW_OPENGL_COMPAT_PROFILE++#num GLFW_CURSOR+#num GLFW_STICKY_KEYS+#num GLFW_STICKY_MOUSE_BUTTONS++#num GLFW_CURSOR_NORMAL+#num GLFW_CURSOR_HIDDEN+#num GLFW_CURSOR_DISABLED++#num GLFW_CONNECTED+#num GLFW_DISCONNECTED++#callback GLFWglproc , IO ()++#opaque_t GLFWmonitor+deriving instance Typeable C'GLFWmonitor+deriving instance Data     C'GLFWmonitor++#opaque_t GLFWwindow+deriving instance Typeable C'GLFWwindow+deriving instance Data     C'GLFWwindow++#callback GLFWerrorfun              , CInt -> Ptr CChar ->                                IO ()+#callback GLFWwindowposfun          , Ptr <GLFWwindow> -> CInt -> CInt ->                 IO ()+#callback GLFWwindowsizefun         , Ptr <GLFWwindow> -> CInt -> CInt ->                 IO ()+#callback GLFWwindowclosefun        , Ptr <GLFWwindow> ->                                 IO ()+#callback GLFWwindowrefreshfun      , Ptr <GLFWwindow> ->                                 IO ()+#callback GLFWwindowfocusfun        , Ptr <GLFWwindow> -> CInt ->                         IO ()+#callback GLFWwindowiconifyfun      , Ptr <GLFWwindow> -> CInt ->                         IO ()+#callback GLFWframebuffersizefun    , Ptr <GLFWwindow> -> CInt -> CInt ->                 IO ()+#callback GLFWmousebuttonfun        , Ptr <GLFWwindow> -> CInt -> CInt -> CInt ->         IO ()+#callback GLFWcursorposfun          , Ptr <GLFWwindow> -> CDouble -> CDouble ->           IO ()+#callback GLFWcursorenterfun        , Ptr <GLFWwindow> -> CInt ->                         IO ()+#callback GLFWscrollfun             , Ptr <GLFWwindow> -> CDouble -> CDouble ->           IO ()+#callback GLFWkeyfun                , Ptr <GLFWwindow> -> CInt -> CInt -> CInt -> CInt -> IO ()+#callback GLFWcharfun               , Ptr <GLFWwindow> -> CUInt ->                        IO ()+#callback GLFWmonitorfun            , Ptr <GLFWmonitor> -> CInt ->                        IO ()+#callback GLFWwindowcontentscalefun , Ptr <GLFWwindow> -> CFloat -> CFloat ->             IO ()+#callback GLFWwindowmaximizefun     , Ptr <GLFWwindow> -> CInt ->                         IO ()++#starttype GLFWvidmode+#field width       , CInt+#field height      , CInt+#field redBits     , CInt+#field greenBits   , CInt+#field blueBits    , CInt+#field refreshRate , CInt+#stoptype++#starttype GLFWgammaramp+#field red   , Ptr CUShort+#field green , Ptr CUShort+#field blue  , Ptr CUShort+#field size  , CUInt+#stoptype++#ccall glfwInit                       ,                                                                       IO CInt+#ccall glfwTerminate                  ,                                                                       IO ()+#ccall glfwGetVersion                 , Ptr CInt -> Ptr CInt -> Ptr CInt ->                                   IO ()+#ccall glfwGetVersionString           ,                                                                       IO (Ptr CChar)+#ccall glfwSetErrorCallback           , <GLFWerrorfun> ->                                                     IO <GLFWerrorfun>+#ccall glfwGetMonitors                , Ptr CInt ->                                                           IO (Ptr (Ptr <GLFWmonitor>))+#ccall glfwGetPrimaryMonitor          ,                                                                       IO (Ptr <GLFWmonitor>)+#ccall glfwGetMonitorPos              , Ptr <GLFWmonitor> -> Ptr CInt -> Ptr CInt ->                          IO ()+#ccall glfwGetMonitorPhysicalSize     , Ptr <GLFWmonitor> -> Ptr CInt -> Ptr CInt ->                          IO ()+#ccall glfwGetMonitorName             , Ptr <GLFWmonitor> ->                                                  IO (Ptr CChar)+#ccall glfwSetMonitorCallback         , <GLFWmonitorfun>  ->                                                  IO <GLFWmonitorfun>+#ccall glfwGetVideoModes              , Ptr <GLFWmonitor> -> Ptr CInt ->                                      IO (Ptr <GLFWvidmode>)+#ccall glfwGetVideoMode               , Ptr <GLFWmonitor> ->                                                  IO (Ptr <GLFWvidmode>)+#ccall glfwSetGamma                   , Ptr <GLFWmonitor> -> CFloat ->                                        IO ()+#ccall glfwGetGammaRamp               , Ptr <GLFWmonitor> ->                                                  IO (Ptr <GLFWgammaramp>)+#ccall glfwSetGammaRamp               , Ptr <GLFWmonitor> -> Ptr <GLFWgammaramp> ->                           IO ()+#ccall glfwDefaultWindowHints         ,                                                                       IO ()+#ccall glfwWindowHint                 , CInt -> CInt ->                                                       IO ()+#ccall glfwCreateWindow               , CInt -> CInt -> Ptr CChar -> Ptr <GLFWmonitor> -> Ptr <GLFWwindow> -> IO (Ptr <GLFWwindow>)+#ccall glfwDestroyWindow              , Ptr <GLFWwindow> ->                                                   IO ()+#ccall glfwWindowShouldClose          , Ptr <GLFWwindow> ->                                                   IO CInt+#ccall glfwSetWindowShouldClose       , Ptr <GLFWwindow> -> CInt ->                                           IO ()+#ccall glfwSetWindowTitle             , Ptr <GLFWwindow> -> Ptr CChar ->                                      IO ()+#ccall glfwGetWindowPos               , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt ->                           IO ()+#ccall glfwSetWindowPos               , Ptr <GLFWwindow> -> CInt -> CInt ->                                   IO ()+#ccall glfwGetWindowSize              , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt ->                           IO ()+#ccall glfwSetWindowSize              , Ptr <GLFWwindow> -> CInt -> CInt ->                                   IO ()+#ccall glfwGetFramebufferSize         , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt ->                           IO ()+#ccall glfwIconifyWindow              , Ptr <GLFWwindow> ->                                                   IO ()+#ccall glfwRestoreWindow              , Ptr <GLFWwindow> ->                                                   IO ()+#ccall glfwShowWindow                 , Ptr <GLFWwindow> ->                                                   IO ()+#ccall glfwHideWindow                 , Ptr <GLFWwindow> ->                                                   IO ()+#ccall glfwGetWindowMonitor           , Ptr <GLFWwindow> ->                                                   IO (Ptr <GLFWmonitor>)+#ccall glfwGetWindowAttrib            , Ptr <GLFWwindow> -> CInt ->                                           IO CInt+#ccall glfwSetWindowUserPointer       , Ptr <GLFWwindow> -> Ptr () ->                                         IO ()+#ccall glfwGetWindowUserPointer       , Ptr <GLFWwindow> ->                                                   IO (Ptr ())+#ccall glfwSetWindowPosCallback       , Ptr <GLFWwindow> -> <GLFWwindowposfun> ->                             IO <GLFWwindowposfun>+#ccall glfwSetWindowSizeCallback      , Ptr <GLFWwindow> -> <GLFWwindowsizefun> ->                            IO <GLFWwindowsizefun>+#ccall glfwSetWindowCloseCallback     , Ptr <GLFWwindow> -> <GLFWwindowclosefun> ->                           IO <GLFWwindowclosefun>+#ccall glfwSetWindowRefreshCallback   , Ptr <GLFWwindow> -> <GLFWwindowrefreshfun> ->                         IO <GLFWwindowrefreshfun>+#ccall glfwSetWindowFocusCallback     , Ptr <GLFWwindow> -> <GLFWwindowfocusfun> ->                           IO <GLFWwindowfocusfun>+#ccall glfwSetWindowIconifyCallback   , Ptr <GLFWwindow> -> <GLFWwindowiconifyfun> ->                         IO <GLFWwindowiconifyfun>+#ccall glfwSetFramebufferSizeCallback , Ptr <GLFWwindow> -> <GLFWframebuffersizefun> ->                       IO <GLFWframebuffersizefun>+#ccall glfwPollEvents                 ,                                                                       IO ()+#ccall glfwWaitEvents                 ,                                                                       IO ()+#ccall glfwPostEmptyEvent             ,                                                                       IO ()+#ccall glfwGetInputMode               , Ptr <GLFWwindow> -> CInt ->                                           IO CInt+#ccall glfwSetInputMode               , Ptr <GLFWwindow> -> CInt -> CInt ->                                   IO ()+#ccall glfwGetKey                     , Ptr <GLFWwindow> -> CInt ->                                           IO CInt+#ccall glfwGetMouseButton             , Ptr <GLFWwindow> -> CInt ->                                           IO CInt+#ccall glfwGetCursorPos               , Ptr <GLFWwindow> -> Ptr CDouble -> Ptr CDouble ->                     IO ()+#ccall glfwSetCursorPos               , Ptr <GLFWwindow> -> CDouble -> CDouble ->                             IO ()+#ccall glfwSetKeyCallback             , Ptr <GLFWwindow> -> <GLFWkeyfun> ->                                   IO <GLFWkeyfun>+#ccall glfwSetCharCallback            , Ptr <GLFWwindow> -> <GLFWcharfun> ->                                  IO <GLFWcharfun>+#ccall glfwSetMouseButtonCallback     , Ptr <GLFWwindow> -> <GLFWmousebuttonfun> ->                           IO <GLFWmousebuttonfun>+#ccall glfwSetCursorPosCallback       , Ptr <GLFWwindow> -> <GLFWcursorposfun> ->                             IO <GLFWcursorposfun>+#ccall glfwSetCursorEnterCallback     , Ptr <GLFWwindow> -> <GLFWcursorenterfun> ->                           IO <GLFWcursorenterfun>+#ccall glfwSetScrollCallback          , Ptr <GLFWwindow> -> <GLFWscrollfun> ->                                IO <GLFWscrollfun>+#ccall glfwJoystickPresent            , CInt ->                                                               IO CInt+#ccall glfwGetJoystickAxes            , CInt -> Ptr CInt ->                                                   IO (Ptr CFloat)+#ccall glfwGetJoystickButtons         , CInt -> Ptr CInt ->                                                   IO (Ptr CUChar)+#ccall glfwGetJoystickName            , CInt ->                                                               IO (Ptr CChar)+#ccall glfwSetClipboardString         , Ptr <GLFWwindow> -> Ptr CChar ->                                      IO ()+#ccall glfwGetClipboardString         , Ptr <GLFWwindow> ->                                                   IO (Ptr CChar)+#ccall glfwGetTime                    ,                                                                       IO CDouble+#ccall glfwSetTime                    , CDouble ->                                                            IO ()+#ccall glfwMakeContextCurrent         , Ptr <GLFWwindow> ->                                                   IO ()+#ccall glfwGetCurrentContext          ,                                                                       IO (Ptr <GLFWwindow>)+#ccall glfwSwapBuffers                , Ptr <GLFWwindow> ->                                                   IO ()+#ccall glfwSwapInterval               , CInt ->                                                               IO ()+#ccall glfwExtensionSupported         , Ptr CChar ->                                                          IO CInt+#ccall glfwGetProcAddress             , Ptr CChar ->                                                          IO <GLFWglproc>++--------------------------------------------------------------------------------+-- GLFW 3.1 additions+--------------------------------------------------------------------------------++#num GLFW_ARROW_CURSOR+#num GLFW_IBEAM_CURSOR+#num GLFW_CROSSHAIR_CURSOR+#num GLFW_HAND_CURSOR+#num GLFW_HRESIZE_CURSOR+#num GLFW_VRESIZE_CURSOR+#num GLFW_DONT_CARE+#num GLFW_DOUBLEBUFFER+#num GLFW_AUTO_ICONIFY+#num GLFW_FLOATING+#num GLFW_CONTEXT_RELEASE_BEHAVIOR+#num GLFW_ANY_RELEASE_BEHAVIOR+#num GLFW_RELEASE_BEHAVIOR_FLUSH+#num GLFW_RELEASE_BEHAVIOR_NONE++#starttype GLFWimage+#field width  , CInt+#field height , CInt+#field pixels , Ptr CUChar+#stoptype++#opaque_t GLFWcursor+deriving instance Typeable C'GLFWcursor+deriving instance Data     C'GLFWcursor++#callback GLFWdropfun , Ptr <GLFWwindow> -> CInt -> Ptr (Ptr CChar) -> IO ()+#callback GLFWcharmodsfun , Ptr <GLFWwindow> -> CUInt -> CInt -> IO ()++#ccall glfwCreateCursor , Ptr <GLFWimage> -> CInt -> CInt -> IO (Ptr <GLFWcursor>)+#ccall glfwCreateStandardCursor , CInt -> IO (Ptr <GLFWcursor>)+#ccall glfwSetCursor , Ptr <GLFWwindow> -> Ptr <GLFWcursor> -> IO ()+#ccall glfwDestroyCursor , Ptr <GLFWcursor> -> IO ()+#ccall glfwSetDropCallback , Ptr <GLFWwindow> -> <GLFWdropfun> -> IO <GLFWdropfun>+#ccall glfwSetCharModsCallback , Ptr <GLFWwindow> -> <GLFWcharmodsfun> -> IO <GLFWcharmodsfun>+#ccall glfwGetWindowFrameSize , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> IO ()++--------------------------------------------------------------------------------+-- GLFW 3.2 additions+--------------------------------------------------------------------------------++#num GLFW_NO_API+#num GLFW_CONTEXT_CREATION_API+#num GLFW_NATIVE_CONTEXT_API+#num GLFW_EGL_CONTEXT_API+#num GLFW_CONTEXT_NO_ERROR+#num GLFW_TRUE+#num GLFW_FALSE+#num GLFW_MAXIMIZED++#ccall glfwFocusWindow , Ptr <GLFWwindow> -> IO ()+#ccall glfwMaximizeWindow , Ptr <GLFWwindow> -> IO ()+#ccall glfwSetWindowMonitor , Ptr <GLFWwindow> -> Ptr <GLFWmonitor> -> CInt -> CInt -> CInt -> CInt -> CInt -> IO ()+#ccall glfwSetWindowIcon , Ptr <GLFWwindow> -> CInt -> Ptr <GLFWimage> -> IO ()+#ccall glfwWaitEventsTimeout , CDouble -> IO ()+#ccall glfwSetWindowSizeLimits , Ptr <GLFWwindow> -> CInt -> CInt -> CInt -> CInt -> IO ()+#ccall glfwSetWindowAspectRatio , Ptr <GLFWwindow> -> CInt -> CInt -> IO ()+#ccall glfwGetKeyName , CInt -> CInt -> IO CString+#ccall glfwGetTimerValue , IO Word64+#ccall glfwGetTimerFrequency , IO Word64++#callback GLFWjoystickfun , CInt -> CInt -> IO ()+#ccall glfwSetJoystickCallback , <GLFWjoystickfun> -> IO <GLFWjoystickfun>++#ccall glfwVulkanSupported , IO CInt+#ccall glfwGetRequiredInstanceExtensions , Ptr Word32 -> IO (Ptr CString)++-- GLFW prevents the declaration of some of the Vulkan functions in its header+-- glfw3.h if it cannot find the required Vulkan headers. As of now (4/2018),+-- these functions are still *defined* in vulkan.c, which is built regardless of+-- whether or not the Vulkan headers were found. Internally, the required types+-- are defined locally in order to make the build work, and h2c will still link+-- against them without a problem. Whether or not you have a valid Vulkan+-- implementation might not be clear though. Nothing is preventing the glfw3+-- authors from hiding the Vulkan functions without valid headers, which could+-- cause some pain in the future, so use the following functions with caution.+-- See commit @521d161af85047 for a way to deal with this more annoyingly.+#ccall glfwGetInstanceProcAddress               , Ptr vkInstance -> CString -> IO (FunPtr vkProc)+#ccall glfwGetPhysicalDevicePresentationSupport , Ptr vkInstance -> Ptr vkPhysicalDevice -> Word32 -> IO CInt+#ccall glfwCreateWindowSurface                  , Ptr vkInstance -> Ptr <GLFWwindow> -> Ptr vkAllocationCallbacks -> Ptr vkSurfaceKHR -> IO Int32++--------------------------------------------------------------------------------+-- GLFW 3.3 additions+--------------------------------------------------------------------------------++#num GLFW_OSMESA_CONTEXT_API++#num GLFW_NO_ERROR+#num GLFW_GAMEPAD_BUTTON_A+#num GLFW_GAMEPAD_BUTTON_B+#num GLFW_GAMEPAD_BUTTON_X+#num GLFW_GAMEPAD_BUTTON_Y+#num GLFW_GAMEPAD_BUTTON_LEFT_BUMPER+#num GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER+#num GLFW_GAMEPAD_BUTTON_BACK+#num GLFW_GAMEPAD_BUTTON_START+#num GLFW_GAMEPAD_BUTTON_GUIDE+#num GLFW_GAMEPAD_BUTTON_LEFT_THUMB+#num GLFW_GAMEPAD_BUTTON_RIGHT_THUMB+#num GLFW_GAMEPAD_BUTTON_DPAD_UP+#num GLFW_GAMEPAD_BUTTON_DPAD_RIGHT+#num GLFW_GAMEPAD_BUTTON_DPAD_DOWN+#num GLFW_GAMEPAD_BUTTON_DPAD_LEFT+#num GLFW_GAMEPAD_BUTTON_LAST+#num GLFW_GAMEPAD_BUTTON_CROSS+#num GLFW_GAMEPAD_BUTTON_CIRCLE+#num GLFW_GAMEPAD_BUTTON_SQUARE+#num GLFW_GAMEPAD_BUTTON_TRIANGLE+#num GLFW_GAMEPAD_AXIS_LEFT_X+#num GLFW_GAMEPAD_AXIS_LEFT_Y+#num GLFW_GAMEPAD_AXIS_RIGHT_X+#num GLFW_GAMEPAD_AXIS_RIGHT_Y+#num GLFW_GAMEPAD_AXIS_LEFT_TRIGGER+#num GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER+#num GLFW_GAMEPAD_AXIS_LAST++#num GLFW_HAT_CENTERED+#num GLFW_HAT_UP+#num GLFW_HAT_RIGHT+#num GLFW_HAT_DOWN+#num GLFW_HAT_LEFT+#num GLFW_HAT_RIGHT_UP+#num GLFW_HAT_RIGHT_DOWN+#num GLFW_HAT_LEFT_UP+#num GLFW_HAT_LEFT_DOWN++-- Misc+#num GLFW_HOVERED+#num GLFW_LOCK_KEY_MODS+#num GLFW_MOD_CAPS_LOCK+#num GLFW_MOD_NUM_LOCK+#num GLFW_RAW_MOUSE_MOTION++-- Init hints+#num GLFW_JOYSTICK_HAT_BUTTONS+#num GLFW_COCOA_CHDIR_RESOURCES+#num GLFW_COCOA_MENUBAR++-- Window hints+#num GLFW_TRANSPARENT_FRAMEBUFFER+#num GLFW_CENTER_CURSOR+#num GLFW_FOCUS_ON_SHOW+#num GLFW_SCALE_TO_MONITOR+#num GLFW_COCOA_RETINA_FRAMEBUFFER+#num GLFW_COCOA_FRAME_NAME+#num GLFW_COCOA_GRAPHICS_SWITCHING+#num GLFW_X11_CLASS_NAME+#num GLFW_X11_INSTANCE_NAME++#starttype GLFWgamepadstate+#array_field buttons , CUChar+#array_field axes    , CFloat+#stoptype++#ccall glfwGetError                      , Ptr CString -> IO CInt+#ccall glfwUpdateGamepadMappings         , CString -> IO CInt+#ccall glfwJoystickIsGamepad             , CInt -> IO CInt+#ccall glfwGetJoystickGUID               , CInt -> IO CString+#ccall glfwGetGamepadName                , CInt -> IO CString+#ccall glfwGetGamepadState               , CInt -> Ptr <GLFWgamepadstate> -> IO CInt+#ccall glfwGetWindowContentScale         , Ptr <GLFWwindow> -> Ptr CFloat -> Ptr CFloat -> IO ()+#ccall glfwGetMonitorContentScale        , Ptr <GLFWmonitor> -> Ptr CFloat -> Ptr CFloat -> IO ()+#ccall glfwSetWindowContentScaleCallback , Ptr <GLFWwindow> -> <GLFWwindowcontentscalefun> -> IO <GLFWwindowcontentscalefun>+#ccall glfwRequestWindowAttention        , Ptr <GLFWwindow> -> IO ()+#ccall glfwGetMonitorWorkarea            , Ptr <GLFWmonitor> -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr CInt -> IO ()+#ccall glfwGetKeyScancode                , CInt -> IO CInt+#ccall glfwSetWindowMaximizeCallback     , Ptr <GLFWwindow> -> <GLFWwindowmaximizefun> -> IO <GLFWwindowmaximizefun>+#ccall glfwSetWindowAttrib               , Ptr <GLFWwindow> -> CInt -> CInt -> IO ()+#ccall glfwGetJoystickHats               , CInt -> Ptr CInt -> IO (Ptr CUChar)+#ccall glfwInitHint                      , CInt -> CInt -> IO ()+#ccall glfwWindowHintString              , CInt -> CString -> IO ()+#ccall glfwGetWindowOpacity              , Ptr <GLFWwindow> -> IO CFloat+#ccall glfwSetWindowOpacity              , Ptr <GLFWwindow> -> CFloat -> IO ()+#ccall glfwSetMonitorUserPointer         , Ptr <GLFWmonitor> -> Ptr () -> IO ()+#ccall glfwGetMonitorUserPointer         , Ptr <GLFWmonitor> -> IO (Ptr ())+#ccall glfwSetJoystickUserPointer        , CInt -> Ptr () -> IO ()+#ccall glfwGetJoystickUserPointer        , CInt -> IO (Ptr ())+#ccall glfwRawMouseMotionSupported       , IO CInt++--------------------------------------------------------------------------------+-- Native APIs+--------------------------------------------------------------------------------++#if defined(GLFW_EXPOSE_NATIVE_WIN32)+#ccall glfwGetWin32Adapter , Ptr <GLFWwindow> -> IO CString+#ccall glfwGetWin32Monitor , Ptr <GLFWwindow> -> IO CString+#ccall glfwGetWin32Window  , Ptr <GLFWwindow> -> IO (Ptr ())+#else++p'glfwGetWin32Adapter :: FunPtr (Ptr C'GLFWwindow -> IO CString)+p'glfwGetWin32Adapter = nullFunPtr++c'glfwGetWin32Adapter :: Ptr C'GLFWwindow -> IO CString+c'glfwGetWin32Adapter =+  error $ "c'glfwGetWin32Adapter undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetWin32Monitor :: FunPtr (Ptr C'GLFWwindow -> IO CString)+p'glfwGetWin32Monitor = nullFunPtr++c'glfwGetWin32Monitor :: Ptr C'GLFWwindow -> IO CString+c'glfwGetWin32Monitor =+  error $ "c'glfwGetWin32Monitor undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetWin32Window :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))+p'glfwGetWin32Window = nullFunPtr++c'glfwGetWin32Window ::  Ptr C'GLFWwindow -> IO (Ptr ())+c'glfwGetWin32Window =+  error $ "c'glfwGetWin32Window undefined! -- "+       ++ "Did you use the wrong glfw3native API?"+#endif++#if defined(GLFW_EXPOSE_NATIVE_WGL)+#ccall glfwGetWGLContext , Ptr <GLFWwindow> -> IO (Ptr ())+#else+p'glfwGetWGLContext :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))+p'glfwGetWGLContext = nullFunPtr++c'glfwGetWGLContext :: Ptr C'GLFWwindow -> IO (Ptr ())+c'glfwGetWGLContext =+  error $ "c'glfwGetWGLContext undefined! -- "+       ++ "Did you use the wrong glfw3native API?"+#endif++#if defined(GLFW_EXPOSE_NATIVE_COCOA)+#ccall glfwGetCocoaMonitor , Ptr <GLFWwindow> -> IO (Ptr Word32)+#ccall glfwGetCocoaWindow , Ptr <GLFWwindow> -> IO (Ptr ())+#else+p'glfwGetCocoaMonitor :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr Word32))+p'glfwGetCocoaMonitor = nullFunPtr++c'glfwGetCocoaMonitor :: Ptr C'GLFWwindow -> IO (Ptr Word32)+c'glfwGetCocoaMonitor =+  error $ "c'glfwGetCocoaMonitor undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetCocoaWindow :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))+p'glfwGetCocoaWindow = nullFunPtr++c'glfwGetCocoaWindow :: Ptr C'GLFWwindow -> IO (Ptr ())+c'glfwGetCocoaWindow =+  error $ "c'glfwGetCocoaWindow undefined! -- "+       ++ "Did you use the wrong glfw3native API?"+#endif++#if defined(GLFW_EXPOSE_NATIVE_NSGL)+#ccall glfwGetNSGLContext , Ptr <GLFWwindow> -> IO (Ptr ())+#else+p'glfwGetNSGLContext :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))+p'glfwGetNSGLContext = nullFunPtr++c'glfwGetNSGLContext :: Ptr C'GLFWwindow -> IO (Ptr ())+c'glfwGetNSGLContext =+  error $ "c'glfwGetNSGLContext undefined! -- "+       ++ "Did you use the wrong glfw3native API?"+#endif++#if defined(GLFW_EXPOSE_NATIVE_X11)+#ccall glfwGetX11Display , Ptr <GLFWwindow> -> IO (Ptr display)+#ccall glfwGetX11Adapter , Ptr <GLFWwindow> -> IO Word64+#ccall glfwGetX11Monitor , Ptr <GLFWwindow> -> IO Word64+#ccall glfwGetX11Window  , Ptr <GLFWwindow> -> IO Word64++--------------------------------------------------------------------------------+-- 3.3 Additions+--------------------------------------------------------------------------------+#ccall glfwSetX11SelectionString , CString -> IO ()+#ccall glfwGetX11SelectionString , IO CString++#else+p'glfwGetX11Display :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr display))+p'glfwGetX11Display = nullFunPtr++c'glfwGetX11Display :: Ptr C'GLFWwindow -> IO (Ptr display)+c'glfwGetX11Display =+  error $ "c'glfwGetX11Display undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetX11Adapter :: FunPtr (Ptr C'GLFWwindow -> IO Word64)+p'glfwGetX11Adapter = nullFunPtr++c'glfwGetX11Adapter :: Ptr C'GLFWwindow -> IO Word64+c'glfwGetX11Adapter =+  error $ "c'glfwGetX11Adapter undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetX11Monitor :: FunPtr (Ptr C'GLFWwindow -> IO Word64)+p'glfwGetX11Monitor = nullFunPtr++c'glfwGetX11Monitor :: Ptr C'GLFWwindow -> IO Word64+c'glfwGetX11Monitor =+  error $ "c'glfwGetX11Monitor undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetX11Window :: FunPtr (Ptr C'GLFWwindow -> IO Word64)+p'glfwGetX11Window = nullFunPtr++c'glfwGetX11Window ::  Ptr C'GLFWwindow -> IO Word64+c'glfwGetX11Window =+  error $ "c'glfwGetX11Window undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetX11SelectionString :: FunPtr (IO CString)+p'glfwGetX11SelectionString = nullFunPtr++c'glfwGetX11SelectionString :: IO CString+c'glfwGetX11SelectionString =+  error $ "c'glfwGetX11SelectionString undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwSetX11SelectionString :: FunPtr (CString -> IO ())+p'glfwSetX11SelectionString = nullFunPtr++c'glfwSetX11SelectionString :: CString -> IO ()+c'glfwSetX11SelectionString =+  error $ "c'glfwSetX11SelectionString undefined! -- "+       ++ "Did you use the wrong glfw3native API?"+#endif++#if defined(GLFW_EXPOSE_NATIVE_GLX)+#ccall glfwGetGLXContext , Ptr <GLFWwindow> -> IO (Ptr ())+#ccall glfwGetGLXWindow  , Ptr <GLFWwindow> -> IO Word64+#else+p'glfwGetGLXContext :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))+p'glfwGetGLXContext = nullFunPtr++c'glfwGetGLXContext :: Ptr C'GLFWwindow -> IO (Ptr ())+c'glfwGetGLXContext =+  error $ "c'glfwGetGLXContext undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetGLXWindow :: FunPtr (Ptr C'GLFWwindow -> IO Word64)+p'glfwGetGLXWindow = nullFunPtr++c'glfwGetGLXWindow ::  Ptr C'GLFWwindow -> IO Word64+c'glfwGetGLXWindow =+  error $ "c'glfwGetGLXWindow undefined! -- "+       ++ "Did you use the wrong glfw3native API?"+#endif++#if defined(GLFW_EXPOSE_NATIVE_WAYLAND)+#ccall glfwGetWaylandDisplay , IO (Ptr wl_display)+#ccall glfwGetWaylandMonitor , Ptr <GLFWwindow> -> IO (Ptr wl_output)+#ccall glfwGetWaylandWindow , Ptr <GLFWwindow> -> IO (Ptr wl_surface)+#else+p'glfwGetWaylandDisplay :: FunPtr (IO (Ptr wl_display))+p'glfwGetWaylandDisplay = nullFunPtr++c'glfwGetWaylandDisplay :: IO (Ptr wl_display)+c'glfwGetWaylandDisplay =+  error $ "c'glfwGetWaylandDisplay undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetWaylandMonitor :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr wl_output))+p'glfwGetWaylandMonitor = nullFunPtr++c'glfwGetWaylandMonitor :: Ptr C'GLFWwindow -> IO (Ptr wl_output)+c'glfwGetWaylandMonitor =+  error $ "c'glfwGetWaylandMonitor undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetWaylandWindow :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr wl_surface))+p'glfwGetWaylandWindow = nullFunPtr++c'glfwGetWaylandWindow :: Ptr C'GLFWwindow -> IO (Ptr wl_surface)+c'glfwGetWaylandWindow =+  error $ "c'glfwGetWaylandWindow undefined! -- "+       ++ "Did you use the wrong glfw3native API?"+#endif++#if defined(GLFW_EXPOSE_NATIVE_EGL)+#ccall glfwGetEGLDisplay , IO (Ptr ())+#ccall glfwGetEGLContext , Ptr <GLFWwindow> -> IO (Ptr ())+#ccall glfwGetEGLSurface , Ptr <GLFWwindow> -> IO (Ptr ())+#else+p'glfwGetEGLDisplay :: FunPtr (IO (Ptr ()))+p'glfwGetEGLDisplay = nullFunPtr++c'glfwGetEGLDisplay :: IO (Ptr ())+c'glfwGetEGLDisplay =+  error $ "c'glfwGetEGLDisplay undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetEGLContext :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))+p'glfwGetEGLContext = nullFunPtr++c'glfwGetEGLContext :: Ptr C'GLFWwindow -> IO (Ptr ())+c'glfwGetEGLContext =+  error $ "c'glfwGetEGLContext undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetEGLSurface :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))+p'glfwGetEGLSurface = nullFunPtr++c'glfwGetEGLSurface :: Ptr C'GLFWwindow -> IO (Ptr ())+c'glfwGetEGLSurface =+  error $ "c'glfwGetEGLSurface undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++#endif++#if defined(GLFW_EXPOSE_NATIVE_OSMESA)+#ccall glfwGetOSMesaColorBuffer , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt+#ccall glfwGetOSMesaDepthBuffer , Ptr <GLFWwindow> -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt+#ccall glfwGetOSMesaContext , Ptr <GLFWwindow> -> IO (Ptr ())+#else+p'glfwGetOSMesaColorBuffer :: FunPtr (Ptr C'GLFWwindow -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt)+p'glfwGetOSMesaColorBuffer = nullFunPtr++c'glfwGetOSMesaColorBuffer :: Ptr C'GLFWwindow -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt+c'glfwGetOSMesaColorBuffer =+  error $ "c'glfwGetOSMesaColorBuffer undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetOSMesaDepthBuffer :: FunPtr (Ptr C'GLFWwindow -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt)+p'glfwGetOSMesaDepthBuffer = nullFunPtr++c'glfwGetOSMesaDepthBuffer :: Ptr C'GLFWwindow -> Ptr CInt -> Ptr CInt -> Ptr CInt -> Ptr (Ptr ()) -> IO CInt+c'glfwGetOSMesaDepthBuffer =+  error $ "c'glfwGetOSMesaDepthBuffer undefined! -- "+       ++ "Did you use the wrong glfw3native API?"++p'glfwGetOSMesaContext :: FunPtr (Ptr C'GLFWwindow -> IO (Ptr ()))+p'glfwGetOSMesaContext = nullFunPtr++c'glfwGetOSMesaContext :: Ptr C'GLFWwindow -> IO (Ptr ())+c'glfwGetOSMesaContext =+  error $ "c'glfwGetOSMesaContext undefined! -- "+       ++ "Did you use the wrong glfw3native API?"+#endif
LICENSE view
@@ -1,26 +1,26 @@-Copyright Brian Lewis <brian@lorf.org> 2013
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above
-      copyright notice, this list of conditions and the following
-      disclaimer in the documentation and/or other materials provided
-      with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+Copyright Brian Lewis <brian@lorf.org> 2013++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
README.md view
@@ -1,28 +1,28 @@-bindings-GLFW
-=============
-
-## Description
-
-[![Hackage](https://img.shields.io/hackage/v/bindings-GLFW.svg)](http://hackage.haskell.org/package/bindings-GLFW)
-
-Low-level [Haskell][1] bindings to [GLFW][2], an open source, multi-platform
-library for creating windows with OpenGL contexts and managing input and
-events.
-
-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].
-
-## Contributing
-
-1. To add a new feature or fix a bug, please start a new branch with a
-   meaningful name (not "feature").
-2. "master" branch is reserved as the current up-to-date working tree.
-
-Thank you, and happy coding.
-
-[1]: http://www.haskell.org/
-[2]: http://www.glfw.org/
-[3]: http://www.glfw.org/Version-3.3-released.html
-[4]: https://github.com/bsl/GLFW-b
+bindings-GLFW+=============++## Description++[![Hackage](https://img.shields.io/hackage/v/bindings-GLFW.svg)](http://hackage.haskell.org/package/bindings-GLFW)++Low-level [Haskell][1] bindings to [GLFW][2], an open source, multi-platform+library for creating windows with OpenGL contexts and managing input and+events.++The binding is to [GLFW 3.3.9 released 2023-12-13][3].++*These bindings are a lot lower level than intended for normal use.*+For higher-level GLFW bindings, see [GLFW-b][4].++## Contributing++1. To add a new feature or fix a bug, please start a new branch with a+   meaningful name (not "feature").+2. "master" branch is reserved as the current up-to-date working tree.++Thank you, and happy coding.++[1]: http://www.haskell.org/+[2]: http://www.glfw.org/+[3]: http://www.glfw.org/Version-3.3-released.html+[4]: https://github.com/bsl/GLFW-b
Setup.hs view
@@ -1,2 +1,2 @@-import Distribution.Simple
-main = defaultMain
+import Distribution.Simple+main = defaultMain
Test.hs view
@@ -1,846 +1,846 @@--- base
-import Control.Concurrent    (threadDelay)
-import Control.Monad         (forM, forM_, when)
-import Data.Char             (isAscii)
-import Data.List             (intercalate, isPrefixOf)
-import Foreign.C.String      (peekCString, withCString)
-import Foreign.C.Types       (CDouble(..))
-import Foreign.Marshal.Alloc (alloca)
-import Foreign.Marshal.Array (peekArray)
-import Foreign.Ptr           (Ptr, nullPtr, nullFunPtr)
-import Foreign.Storable      (Storable(..))
-
--- HUnit
-import Test.HUnit ((@?=), (@?), assertBool, assertFailure, assertEqual)
-
--- test-framework
-import Test.Framework (Test, defaultMain, testGroup)
-
--- test-framework-hunit
-import Test.Framework.Providers.HUnit (testCase)
-
--- bindings-GLFW
-import Bindings.GLFW
-
---------------------------------------------------------------------------------
-
-main :: IO ()
-main = do
-    c'glfwInitHint c'GLFW_COCOA_CHDIR_RESOURCES c'GLFW_FALSE
-    _ <- c'glfwInit
-
-    p'mon <- c'glfwGetPrimaryMonitor
-
-    c'glfwWindowHint c'GLFW_VISIBLE c'GLFW_FALSE
-    p'win <- withCString "bindings-GLFW test" $ \p'title ->
-      c'glfwCreateWindow 100 100 p'title nullPtr nullPtr
-    c'glfwMakeContextCurrent p'win
-
-    -- Mostly check for compiling
-    cmcb <- mk'GLFWcharmodsfun $ \win x y ->
-        putStrLn $ "Got char mods callback! " ++ show (win, x, y)
-    _ <- c'glfwSetCharModsCallback p'win cmcb
-    jcb <- mk'GLFWjoystickfun $ \x y ->
-        putStrLn $ "Got joystick callback! " ++ show (x, y)
-    _ <- c'glfwSetJoystickCallback jcb
-    wcscb <- mk'GLFWwindowcontentscalefun $ \win x y ->
-        putStrLn $ "Got window content scale callback! " ++ show (win, x, y)
-    _ <- c'glfwSetWindowContentScaleCallback p'win wcscb
-
-    c'glfwGetError nullPtr
-      >>= assertEqual "Got inititialization error!" c'GLFW_NO_ERROR
-
-    defaultMain $ tests p'mon p'win
-
-    -- TODO because of how defaultMain works, this code is not reached
-    c'glfwDestroyWindow p'win
-    c'glfwTerminate
-
---------------------------------------------------------------------------------
-
-versionMajor, versionMinor, versionRevision :: Int
-versionMajor    = 3
-versionMinor    = 3
-versionRevision = 2
-
-giveItTime :: IO ()
-giveItTime = threadDelay 500000
-
-joysticks :: Num a => [a]
-joysticks =
-    [ c'GLFW_JOYSTICK_1
-    , c'GLFW_JOYSTICK_2
-    , c'GLFW_JOYSTICK_3
-    , c'GLFW_JOYSTICK_4
-    , c'GLFW_JOYSTICK_5
-    , c'GLFW_JOYSTICK_6
-    , c'GLFW_JOYSTICK_7
-    , c'GLFW_JOYSTICK_8
-    , c'GLFW_JOYSTICK_9
-    , c'GLFW_JOYSTICK_10
-    , c'GLFW_JOYSTICK_11
-    , c'GLFW_JOYSTICK_12
-    , c'GLFW_JOYSTICK_13
-    , c'GLFW_JOYSTICK_14
-    , c'GLFW_JOYSTICK_15
-    , c'GLFW_JOYSTICK_16
-    ]
-
-between :: Ord a => a -> (a,a) -> Bool
-between n (l,h) = n >= l && n <= h
-
-videoModeLooksValid :: C'GLFWvidmode -> Bool
-videoModeLooksValid vm = and
-    [ c'GLFWvidmode'width       vm `between` (0,8192)
-    , c'GLFWvidmode'height      vm `between` (0,8192)
-    , c'GLFWvidmode'redBits     vm `between` (0,32)
-    , c'GLFWvidmode'greenBits   vm `between` (0,32)
-    , c'GLFWvidmode'blueBits    vm `between` (0,32)
-    , c'GLFWvidmode'refreshRate vm `between` (0,240)
-    ]
-
---------------------------------------------------------------------------------
-
-glfwTest :: String -> IO () -> Test
-glfwTest name test = testCase name $ do
-  _ <- c'glfwGetError nullPtr  -- clear last error
-  test
-  alloca $ \p'errMsg -> do
-    errResult <- c'glfwGetError p'errMsg
-    errMsg <- if errResult == c'GLFW_NO_ERROR then return "" else do
-      msg <- peek p'errMsg >>= peekCString
-      return $ concat ["Test '", name, "' generated error: ", msg]
-    assertEqual errMsg errResult c'GLFW_NO_ERROR
-
-tests :: Ptr C'GLFWmonitor -> Ptr C'GLFWwindow -> [Test]
-tests p'mon p'win =
-    [ testGroup "Initialization and version information"
-      [ testCase "glfwGetVersion"       test_glfwGetVersion
-      , testCase "glfwGetVersionString" test_glfwGetVersionString
-      , testCase "glfwGetError"         test_glfwGetError
-      , testCase "glfwRawMouseMotionSupported" test_glfwRawMouseMotionSupported
-      ]
-    , testGroup "Monitor handling"
-      [ glfwTest "glfwGetMonitors"              test_glfwGetMonitors
-      , glfwTest "glfwGetPrimaryMonitor"        test_glfwGetPrimaryMonitor
-      , glfwTest "glfwGetMonitorContentScale" $ test_glfwGetMonitorContentScale p'mon
-      , glfwTest "glfwGetMonitorPos"          $ test_glfwGetMonitorPos p'mon
-      , glfwTest "glfwGetMonitorPhysicalSize" $ test_glfwGetMonitorPhysicalSize p'mon
-      , glfwTest "glfwGetMonitorName"         $ test_glfwGetMonitorName p'mon
-      , glfwTest "glfwGetMonitorWorkarea"     $ test_glfwGetMonitorWorkarea p'mon
-      , glfwTest "glfwGetVideoModes"          $ test_glfwGetVideoModes p'mon
-      , glfwTest "glfwGetVideoMode"           $ test_glfwGetVideoMode p'mon
-      , glfwTest "glfwGetGammaRamp"           $ test_glfwGetGammaRamp p'mon
-      ]
-    , testGroup "Window handling"
-      [ glfwTest "glfwDefaultWindowHints"       test_glfwDefaultWindowHints
-      , glfwTest "glfwGetWindowAttrib"        $ test_glfwGetWindowAttrib p'win
-      , glfwTest "glfwSetWindowAttrib"        $ test_glfwSetWindowAttrib p'win
-      , glfwTest "window close flag"          $ test_window_close_flag p'win
-      , glfwTest "glfwSetWindowTitle"         $ test_glfwSetWindowTitle p'win
-      , glfwTest "window pos"                 $ test_window_pos p'win
-      , glfwTest "window size"                $ test_window_size p'win
-      , glfwTest "glfwGetWindowContentSize"   $ test_glfwGetWindowContentScale p'win
-      , glfwTest "glfwGetWindowFrameSize"     $ test_glfwGetWindowFrameSize p'win
-      , glfwTest "glfwGetFramebufferSize"     $ test_glfwGetFramebufferSize p'win
-      , glfwTest "iconification"              $ test_iconification p'win
-      -- , glfwTest "show/hide"                  $ test_show_hide p'win
-      , glfwTest "glfwGetWindowMonitor"       $ test_glfwGetWindowMonitor p'win p'mon
-      , glfwTest "glfwSetWindowMonitor"       $ test_glfwSetWindowMonitor p'win p'mon
-      , glfwTest "glfwSetWindowIcon"          $ test_glfwSetWindowIcon p'win
-      , glfwTest "glfwSetWindowOpacity"       $ test_glfwSetWindowOpacity p'win
-      , glfwTest "glfwMaximizeWindow"         $ test_glfwMaximizeWindow p'win
-      , glfwTest "glfwSetWindowSizeLimits"    $ test_glfwSetWindowSizeLimits p'win
-      , glfwTest "glfwSetWindowAspectRatio"   $ test_glfwSetWindowAspectRatio p'win
-      , glfwTest "glfwFocusWindow"            $ test_glfwFocusWindow p'win
-      , glfwTest "glfwRequestWindowAttention" $ test_glfwRequestWindowAttention p'win
-      , glfwTest "cursor pos"                 $ test_cursor_pos p'win
-      , glfwTest "glfwPollEvents"               test_glfwPollEvents
-      , glfwTest "glfwWaitEvents"               test_glfwWaitEvents
-      , glfwTest "glfwWaitEventsTimeout"        test_glfwWaitEventsTimeout
-      ]
-    , testGroup "Input handling"
-      [ glfwTest "glfwJoystickPresent"    test_glfwJoystickPresent
-      , glfwTest "glfwGetJoystickAxes"    test_glfwGetJoystickAxes
-      , glfwTest "glfwGetJoystickButtons" test_glfwGetJoystickButtons
-      , glfwTest "glfwGetJoystickHats"    test_glfwGetJoystickHats
-      , glfwTest "glfwGetJoystickName"    test_glfwGetJoystickName
-      , glfwTest "glfwGetJoystickGUID"    test_glfwGetJoystickGUID
-      , glfwTest "glfwGetGamepadState"    test_glfwGetGamepadState
-      , glfwTest "glfwGetKeyName"         test_glfwGetKeyName
-      , glfwTest "glfwGetKeyScancode"     test_glfwGetKeyScancode
-      ]
-    , testGroup "Time"
-      [ glfwTest "glfwGetTime"               test_glfwGetTime
-      , glfwTest "glfwSetTime"               test_glfwSetTime
-      , glfwTest "glfwGetTimerValue"         test_glfwGetTimerValue
-      , glfwTest "glfwSetTimerFrequency"     test_glfwGetTimerFrequency
-      ]
-    , testGroup "Context"
-      [ glfwTest "glfwGetCurrentContext"  $ test_glfwGetCurrentContext p'win
-      , glfwTest "glfwSwapBuffers"        $ test_glfwSwapBuffers p'win
-      , glfwTest "glfwSwapInterval"         test_glfwSwapInterval
-      , glfwTest "glfwExtensionSupported"   test_glfwExtensionSupported
-      ]
-    , testGroup "Clipboard"
-      [ glfwTest "clipboard" $ test_clipboard p'win
-      ]
-    , testGroup "Vulkan"
-      [ glfwTest "glfwVulkanSupported"                          test_glfwVulkanSupported
-      , glfwTest "glfwGetRequiredInstanceExtensions"            test_glfwGetRequiredInstanceExtensions
-      , glfwTest "glfwGetInstanceProcAddress"                   test_glfwGetInstanceProcAddress
-      , glfwTest "glfwGetPhysicalDevicePresentationSupport"     test_glfwGetPhysicalDevicePresentationSupport
-      , glfwTest "glfwCreateWindowSurface"                    $ test_glfwCreateWindowSurface p'win
-      ]
-    ]
-
---------------------------------------------------------------------------------
-
-test_glfwGetVersion :: IO ()
-test_glfwGetVersion =
-    alloca $ \p'v0 ->
-    alloca $ \p'v1 ->
-    alloca $ \p'v2 -> do
-        c'glfwGetVersion p'v0 p'v1 p'v2
-        v0 <- peek p'v0
-        v1 <- peek p'v1
-        v2 <- peek p'v2
-        v0 @?= fromIntegral versionMajor
-        v1 @?= fromIntegral versionMinor
-        v2 @?= fromIntegral versionRevision
-
-test_glfwGetVersionString :: IO ()
-test_glfwGetVersionString = do
-    p'vs <- c'glfwGetVersionString
-    if p'vs == nullPtr
-      then assertFailure ""
-      else do
-          vs <- peekCString p'vs
-          assertBool "" $ v `isPrefixOf` vs
-        where
-          v = intercalate "." $ map show [versionMajor, versionMinor, versionRevision]
-
-test_glfwGetError :: IO ()
-test_glfwGetError =
-  alloca $ \p'err ->
-  c'glfwGetError p'err >>= assertEqual "Discovered GLFW error!" c'GLFW_NO_ERROR
-
-test_glfwRawMouseMotionSupported :: IO ()
-test_glfwRawMouseMotionSupported = c'glfwRawMouseMotionSupported >> return ()
-
---------------------------------------------------------------------------------
-
-test_glfwGetMonitors :: IO ()
-test_glfwGetMonitors =
-    alloca $ \p'n -> do
-        p'mons <- c'glfwGetMonitors p'n
-        n <- peek p'n
-        if p'mons == nullPtr || n <= 0
-          then assertFailure ""
-          else do
-              mons <- peekArray (fromIntegral n) p'mons
-              assertBool "" $ not $ null mons
-
-test_glfwGetPrimaryMonitor :: IO ()
-test_glfwGetPrimaryMonitor = do
-    p'mon <- c'glfwGetPrimaryMonitor
-    assertBool "" $ p'mon /= nullPtr
-
-test_glfwGetMonitorContentScale :: Ptr C'GLFWmonitor -> IO ()
-test_glfwGetMonitorContentScale p'mon =
-    alloca $ \p'x ->
-    alloca $ \p'y -> do
-        c'glfwGetMonitorContentScale p'mon p'x p'y
-        x <- peek p'x
-        y <- peek p'y
-        assertBool "Monitor content scale x is defined" $ x > 0
-        assertBool "Monitor content scale y is defined" $ y > 0
-
-test_glfwGetMonitorPos :: Ptr C'GLFWmonitor -> IO ()
-test_glfwGetMonitorPos p'mon =
-    alloca $ \p'x ->
-    alloca $ \p'y -> do
-        c'glfwGetMonitorPos p'mon p'x p'y
-        x <- peek p'x
-        y <- peek p'y
-        assertBool "" $ x >= 0
-        assertBool "" $ y >= 0
-
-test_glfwGetMonitorPhysicalSize :: Ptr C'GLFWmonitor -> IO ()
-test_glfwGetMonitorPhysicalSize p'mon =
-    alloca $ \p'w ->
-    alloca $ \p'h -> do
-        c'glfwGetMonitorPhysicalSize p'mon p'w p'h
-        w <- peek p'w
-        h <- peek p'h
-        assertBool "" $ w `between` (0, 1000)
-        assertBool "" $ h `between` (0,  500)
-
-test_glfwGetMonitorName :: Ptr C'GLFWmonitor -> IO ()
-test_glfwGetMonitorName p'mon = do
-    p'name <- c'glfwGetMonitorName p'mon
-    if p'name == nullPtr
-      then assertFailure ""
-      else do
-          name <- peekCString p'name
-          assertBool "" $ length name `between` (0, 20)
-          assertBool "" $ all isAscii name
-
-test_glfwGetMonitorWorkarea :: Ptr C'GLFWmonitor -> IO ()
-test_glfwGetMonitorWorkarea p'mon =
-    alloca $ \p'xpos ->
-    alloca $ \p'ypos ->
-    alloca $ \p'w ->
-    alloca $ \p'h -> do
-        c'glfwGetMonitorWorkarea p'mon p'xpos p'ypos p'w p'h
-        xpos <- peek p'xpos
-        ypos <- peek p'ypos
-        w <- peek p'w
-        h <- peek p'h
-        assertBool "Workarea xpos not negative" $ xpos >= 0
-        assertBool "Workarea ypos not negative" $ ypos >= 0
-        assertBool "Workarea width is positive" $ w > 0
-        assertBool "Workarea height is positive" $ h > 0
-
-test_glfwGetVideoModes :: Ptr C'GLFWmonitor -> IO ()
-test_glfwGetVideoModes p'mon =
-    alloca $ \p'n -> do
-        p'vms <- c'glfwGetVideoModes p'mon p'n
-        n <- fromIntegral `fmap` peek p'n
-        if p'vms == nullPtr || n <= 0
-          then assertFailure ""
-          else do
-              vms <- peekArray n p'vms
-              assertBool "" $ all videoModeLooksValid vms
-
-test_glfwGetVideoMode :: Ptr C'GLFWmonitor -> IO ()
-test_glfwGetVideoMode p'mon = do
-    p'vm <- c'glfwGetVideoMode p'mon
-    if p'vm == nullPtr
-      then assertFailure ""
-      else do
-          vm <- peek p'vm
-          assertBool "" $ videoModeLooksValid vm
-
-test_glfwGetGammaRamp :: Ptr C'GLFWmonitor -> IO ()
-test_glfwGetGammaRamp p'mon = do
-    p'gr <- c'glfwGetGammaRamp p'mon
-    if p'gr == nullPtr
-      then assertFailure ""
-      else do
-          gr <- peek p'gr
-          let p'rs = c'GLFWgammaramp'red   gr
-              p'gs = c'GLFWgammaramp'green gr
-              p'bs = c'GLFWgammaramp'blue  gr
-              cn   = c'GLFWgammaramp'size  gr
-              n    = fromIntegral cn
-          if nullPtr `elem` [p'rs, p'gs, p'bs]
-            then assertFailure ""
-            else do
-                rs <- peekArray n p'rs
-                gs <- peekArray n p'gs
-                bs <- peekArray n p'bs
-                let rsl = length rs
-                    gsl = length gs
-                    bsl = length bs
-                assertBool "" $ rsl > 0 && rsl == gsl && gsl == bsl
-
---------------------------------------------------------------------------------
-
-test_glfwDefaultWindowHints :: IO ()
-test_glfwDefaultWindowHints =
-    c'glfwDefaultWindowHints
-
-test_window_close_flag :: Ptr C'GLFWwindow -> IO ()
-test_window_close_flag p'win = do
-    r0 <- c'glfwWindowShouldClose p'win
-    r0 @?= c'GLFW_FALSE
-
-    c'glfwSetWindowShouldClose p'win c'GLFW_TRUE
-    r1 <- c'glfwWindowShouldClose p'win
-    r1 @?= c'GLFW_TRUE
-
-    c'glfwSetWindowShouldClose p'win c'GLFW_FALSE
-    r2 <- c'glfwWindowShouldClose p'win
-    r2 @?= c'GLFW_FALSE
-
-test_glfwSetWindowTitle :: Ptr C'GLFWwindow -> IO ()
-test_glfwSetWindowTitle p'win =
-    withCString "some new title" $
-      c'glfwSetWindowTitle p'win
-
--- This is a little strange. Depending on your window manager, etc, after
--- setting the window position to (x,y), the actual new window position might
--- be (x+5,y+5) due to borders. So we just check for consistency.
-test_window_pos :: Ptr C'GLFWwindow -> IO ()
-test_window_pos p'win = do
-    let x = 17
-        y = 37
-        xoff = 53
-        yoff = 149
-    (x0, y0, dx0, dy0) <- setGet  x        y
-    (x1, y1, dx1, dy1) <- setGet (x+xoff) (y+yoff)
-    dx0 @?= dx1
-    dy0 @?= dy1
-    x1 - x0 @?= xoff
-    y1 - y0 @?= yoff
-  where
-    setGet :: Int -> Int -> IO (Int, Int, Int, Int)
-    setGet x0 y0 = do
-        c'glfwSetWindowPos p'win (fromIntegral x0) (fromIntegral y0)
-        c'glfwSwapBuffers p'win
-        giveItTime
-        alloca $ \p'x1 ->
-          alloca $ \p'y1 -> do
-              c'glfwGetWindowPos p'win p'x1 p'y1
-              x1 <- fromIntegral `fmap` peek p'x1
-              y1 <- fromIntegral `fmap` peek p'y1
-              let (dx, dy) = (x0-x1, y0-y1)
-              return (x1, y1, dx, dy)
-
-test_window_size :: Ptr C'GLFWwindow -> IO ()
-test_window_size p'win = do
-    let w = 177
-        h = 372
-    c'glfwSetWindowSize p'win w h
-    giveItTime
-    alloca $ \p'w' ->
-      alloca $ \p'h' -> do
-          c'glfwGetWindowSize p'win p'w' p'h'
-          w' <- fromIntegral `fmap` peek p'w'
-          h' <- fromIntegral `fmap` peek p'h'
-          w' @?= w
-          h' @?= h
-
--- Really all we can say here is that we likely have a title bar, so just check
--- that the 'frame' around the top edge is > 0.
-test_glfwGetWindowFrameSize :: Ptr C'GLFWwindow -> IO ()
-test_glfwGetWindowFrameSize p'win =
-    alloca $ \p'win_frame_top -> do
-        c'glfwGetWindowFrameSize p'win nullPtr p'win_frame_top nullPtr nullPtr
-        top <- peek p'win_frame_top
-        assertBool "Window has no frame width up top!" $ top > 0
-
-test_glfwGetFramebufferSize :: Ptr C'GLFWwindow -> IO ()
-test_glfwGetFramebufferSize p'win =
-    alloca $ \p'w  ->
-    alloca $ \p'h  ->
-    alloca $ \p'fw ->
-    alloca $ \p'fh -> do
-        c'glfwGetWindowSize      p'win p'w  p'h
-        c'glfwGetFramebufferSize p'win p'fw p'fh
-        w  <- peek p'w
-        h  <- peek p'h
-        fw <- peek p'fw
-        fh <- peek p'fh
-        ((fw `mod` w) == 0) @? "Framebuffer width multiple of window's"
-        ((fh `mod` h) == 0) @? "Framebuffer height multiple of window's"
-
-test_iconification :: Ptr C'GLFWwindow -> IO ()
-test_iconification p'win = do
-    c'glfwShowWindow p'win
-    r0 <- c'glfwGetWindowAttrib p'win c'GLFW_ICONIFIED
-    r0 @?= c'GLFW_FALSE
-
-    c'glfwIconifyWindow p'win
-    giveItTime
-
-    r1 <- c'glfwGetWindowAttrib p'win c'GLFW_ICONIFIED
-    r1 @?= c'GLFW_TRUE
-
-    c'glfwRestoreWindow p'win
-    c'glfwHideWindow p'win
-
--- test_show_hide :: Ptr C'GLFWwindow -> IO ()
--- test_show_hide p'win = do
---     v0 <- c'glfwGetWindowAttrib p'win c'GLFW_VISIBLE
---     v0 @?= c'GLFW_FALSE
-
---     c'glfwShowWindow p'win
---     giveItTime
---     v1 <- c'glfwGetWindowAttrib p'win c'GLFW_VISIBLE
---     v1 @?= c'GLFW_TRUE
-
---     c'glfwHideWindow p'win
---     giveItTime
---     v2 <- c'glfwGetWindowAttrib p'win c'GLFW_VISIBLE
---     v2 @?= c'GLFW_FALSE
-
-test_glfwGetWindowContentScale :: Ptr C'GLFWwindow -> IO ()
-test_glfwGetWindowContentScale p'win =
-    alloca $ \p'x ->
-    alloca $ \p'y -> do
-        c'glfwGetWindowContentScale p'win p'x p'y
-        x <- peek p'x
-        y <- peek p'y
-        assertBool "Window content scale x is defined" $ x > 0
-        assertBool "Window content scale y is defined" $ y > 0
-
-test_glfwGetWindowMonitor :: Ptr C'GLFWwindow -> Ptr C'GLFWmonitor -> IO ()
-test_glfwGetWindowMonitor p'win _ = do
-    p'mon <- c'glfwGetWindowMonitor p'win
-    p'mon @?= nullPtr
-
-test_glfwSetWindowMonitor :: Ptr C'GLFWwindow -> Ptr C'GLFWmonitor -> IO ()
-test_glfwSetWindowMonitor p'win _ = do
-    c'glfwSetWindowMonitor p'win nullPtr 0 0 100 100 60
-
-test_glfwSetWindowIcon :: Ptr C'GLFWwindow -> IO ()
-test_glfwSetWindowIcon p'win = do
-    c'glfwSetWindowIcon p'win 0 nullPtr
-
-test_glfwSetWindowOpacity :: Ptr C'GLFWwindow -> IO ()
-test_glfwSetWindowOpacity p'win = do
-    let desiredOpacity = 0.27
-    c'glfwSetWindowOpacity p'win desiredOpacity
-    newOpacity <- c'glfwGetWindowOpacity p'win
-    assertBool "Opacity is roughly the same." $
-        abs (desiredOpacity - newOpacity) < 0.01
-    c'glfwSetWindowOpacity p'win 1.0
-
-test_glfwSetWindowSizeLimits :: Ptr C'GLFWwindow -> IO ()
-test_glfwSetWindowSizeLimits p'win = do
-    c'glfwSetWindowSizeLimits p'win 640 480 1024 768
-
-test_glfwSetWindowAspectRatio :: Ptr C'GLFWwindow -> IO ()
-test_glfwSetWindowAspectRatio p'win = do
-    c'glfwSetWindowAspectRatio p'win c'GLFW_DONT_CARE c'GLFW_DONT_CARE
-
-test_glfwFocusWindow :: Ptr C'GLFWwindow -> IO ()
-test_glfwFocusWindow = c'glfwFocusWindow
-
-test_glfwRequestWindowAttention :: Ptr C'GLFWwindow -> IO ()
-test_glfwRequestWindowAttention = c'glfwRequestWindowAttention
-
--- NOTE: This test seems to fail in X11. This might be due to the asynchronous
--- nature of focus events in X. We may be able to fix it by waiting for the focus
--- event before setting the cursor position.
-test_cursor_pos :: Ptr C'GLFWwindow -> IO ()
-test_cursor_pos p'win =
-    alloca $ \p'w   ->
-    alloca $ \p'h   ->
-    alloca $ \p'cx' ->
-    alloca $ \p'cy' -> do
-        c'glfwShowWindow p'win
-        c'glfwGetWindowSize p'win p'w p'h
-        w <- peek p'w
-        h <- peek p'h
-
-        -- Make sure we use integral coordinates here so that we don't run into
-        -- platform-dependent differences.
-        let cx :: CDouble
-            cy :: CDouble
-            (cx, cy) = (fromIntegral $ w `div` 2, fromIntegral $ h `div` 2)
-
-        -- !HACK! Poll events seems to be necessary on OS X,
-        -- before /and/ after glfwSetCursorPos, otherwise, the
-        -- windowing system likely never receives the cursor update. This is
-        -- reflected in the C version of GLFW as well, we just call it here in
-        -- order to have a more robust test.
-
-        c'glfwPollEvents
-
-        c'glfwSetCursorPos p'win cx cy
-
-        c'glfwPollEvents -- !HACK! see comment above
-
-        c'glfwGetCursorPos p'win p'cx' p'cy'
-        cx' <- peek p'cx'
-        cy' <- peek p'cy'
-        cx' @?= cx
-        cy' @?= cy
-        c'glfwHideWindow p'win
-
-test_glfwGetWindowAttrib :: Ptr C'GLFWwindow -> IO ()
-test_glfwGetWindowAttrib p'win = do
-    let pairs =
-          [ ( c'GLFW_FOCUSED,    c'GLFW_FALSE        )
-          , ( c'GLFW_ICONIFIED,  c'GLFW_FALSE        )
-          , ( c'GLFW_RESIZABLE,  c'GLFW_TRUE         )
-          , ( c'GLFW_DECORATED,  c'GLFW_TRUE         )
-          , ( c'GLFW_CLIENT_API, c'GLFW_OPENGL_API )
-          ]
-    rs <- mapM (c'glfwGetWindowAttrib p'win . fst) pairs
-    rs @?= map snd pairs
-
-test_glfwSetWindowAttrib :: Ptr C'GLFWwindow -> IO ()
-test_glfwSetWindowAttrib p'win = do
-    c'glfwSetWindowAttrib p'win c'GLFW_RESIZABLE c'GLFW_FALSE
-    norsz <- c'glfwGetWindowAttrib p'win c'GLFW_RESIZABLE
-    norsz @?= c'GLFW_FALSE
-
-    c'glfwSetWindowAttrib p'win c'GLFW_RESIZABLE c'GLFW_TRUE
-    rsz <- c'glfwGetWindowAttrib p'win c'GLFW_RESIZABLE
-    rsz @?= c'GLFW_TRUE
-
-test_glfwMaximizeWindow :: Ptr C'GLFWwindow -> IO ()
-test_glfwMaximizeWindow p'win = do
-    c'glfwShowWindow p'win
-    startsMaximized <- c'glfwGetWindowAttrib p'win c'GLFW_MAXIMIZED
-    startsMaximized @?= c'GLFW_FALSE
-
-    c'glfwMaximizeWindow p'win
-    giveItTime
-
-    isMaximized <- c'glfwGetWindowAttrib p'win c'GLFW_MAXIMIZED
-    isMaximized @?= c'GLFW_TRUE
-    c'glfwHideWindow p'win
-
-test_glfwPollEvents :: IO ()
-test_glfwPollEvents = c'glfwPollEvents
-
-test_glfwWaitEvents :: IO ()
-test_glfwWaitEvents = c'glfwPostEmptyEvent >> c'glfwWaitEvents
-
-test_glfwWaitEventsTimeout :: IO ()
-test_glfwWaitEventsTimeout =
-    -- to not slow down the test too much we set the timeout to 0.001 second :
-    c'glfwWaitEventsTimeout 0.001
-
---------------------------------------------------------------------------------
-
-test_glfwJoystickPresent :: IO ()
-test_glfwJoystickPresent = do
-    _ <- c'glfwJoystickPresent c'GLFW_JOYSTICK_1
-    r <- c'glfwJoystickPresent c'GLFW_JOYSTICK_16
-    r @?= c'GLFW_FALSE
-
-test_glfwGetJoystickAxes :: IO ()
-test_glfwGetJoystickAxes =
-    forM_ joysticks $ \js ->
-      alloca $ \p'n -> do
-          p'axes <- c'glfwGetJoystickAxes js p'n
-          when (p'axes /= nullPtr) $ do
-              n <- fromIntegral `fmap` peek p'n
-              if n <= 0
-                then assertFailure ""
-                else do
-                    axes <- peekArray n p'axes
-                    length axes @?= n
-
-test_glfwGetJoystickButtons :: IO ()
-test_glfwGetJoystickButtons =
-    forM_ joysticks $ \js ->
-      alloca $ \p'n -> do
-          p'buttons <- c'glfwGetJoystickButtons js p'n
-          when (p'buttons /= nullPtr) $ do
-              n <- fromIntegral `fmap` peek p'n
-              if n <= 0
-                then assertFailure ""
-                else do
-                    buttons <- peekArray n p'buttons
-                    length buttons @?= n
-
-test_glfwGetJoystickHats :: IO ()
-test_glfwGetJoystickHats =
-    forM_ joysticks $ \js ->
-        alloca $ \p'n -> do
-            p'hats <- c'glfwGetJoystickHats js p'n
-            when (p'hats /= nullPtr) $ do
-                n <- fromIntegral `fmap` peek p'n
-                if n <= 0
-                  then assertFailure "No joystick hats??"
-                  else do
-                      hats <- peekArray n p'hats
-                      length hats @?= n
-                      forM_ hats $ assertEqual "Hat is centered" c'GLFW_HAT_CENTERED
-
-test_glfwGetJoystickName :: IO ()
-test_glfwGetJoystickName =
-    forM_ joysticks $ \js -> do
-        p'name <- c'glfwGetJoystickName js
-        when (p'name /= nullPtr) $ do
-            name <- peekCString p'name
-            assertBool "" $ not $ null name
-
-test_glfwGetJoystickGUID :: IO ()
-test_glfwGetJoystickGUID =
-    forM_ joysticks $ \js -> do
-        p'guid <- c'glfwGetJoystickGUID js
-        when (p'guid /= nullPtr) $ do
-            guid <- peekCString p'guid
-            assertBool "" $ not $ null guid
-
-test_glfwGetGamepadState :: IO ()
-test_glfwGetGamepadState =
-    forM_ joysticks $ \js ->
-        alloca $ \p'gp -> do
-            gotMapping <- c'glfwGetGamepadState js p'gp
-            when (gotMapping == c'GLFW_TRUE) $ do
-                assertBool "Gamepad state is valid" (p'gp /= nullPtr)
-
-                c'glfwJoystickIsGamepad js
-                  >>= assertEqual "Is gamepad" c'GLFW_TRUE
-
-                c'glfwGetGamepadName js
-                  >>= peekCString
-                  >>= assertBool "Gamepad has name" . not . null
-
-                gp <- peek p'gp
-                forM_ (c'GLFWgamepadstate'buttons gp) $
-                  assertEqual "Button not pressed" c'GLFW_RELEASE
-
-test_glfwGetKeyName :: IO ()
-test_glfwGetKeyName =
-    forM_ [c'GLFW_KEY_SLASH, c'GLFW_KEY_PERIOD] $ \k -> do
-        p'name <- c'glfwGetKeyName k 0
-        when (p'name /= nullPtr) $ do
-            name <- peekCString p'name
-            assertBool "" $ not $ null name
-
-test_glfwGetKeyScancode :: IO ()
-test_glfwGetKeyScancode = do
-    forM_ [c'GLFW_KEY_SLASH, c'GLFW_KEY_PERIOD] $ \k -> do
-        sc <- c'glfwGetKeyScancode k
-        assertBool (mconcat ["Key ", show k, " scancode not found."]) (sc > 0)
-
-    -- According to the docs this should work but it returns 0. This is a GLFW
-    -- bug (at least on OS X).
-    -- c'glfwGetKeyScancode c'GLFW_KEY_UNKNOWN >>= assertEqual "" (-1)
-
---------------------------------------------------------------------------------
-
-test_glfwGetTime :: IO ()
-test_glfwGetTime = do
-    t <- c'glfwGetTime
-    assertBool "" $ t > 0
-
-test_glfwSetTime :: IO ()
-test_glfwSetTime = do
-    let t = 37 :: Double
-    c'glfwSetTime (realToFrac t)
-    t' <- realToFrac `fmap` c'glfwGetTime
-    assertBool "" $ t' `between` (t, t+10)
-
-test_glfwGetTimerValue :: IO ()
-test_glfwGetTimerValue = do
-    val <- c'glfwGetTimerValue
-    assertBool "" $ val > 0
-
-test_glfwGetTimerFrequency :: IO ()
-test_glfwGetTimerFrequency = do
-    freq <- c'glfwGetTimerFrequency
-    assertBool "" $ freq > 0
-
---------------------------------------------------------------------------------
-
-test_glfwGetCurrentContext :: Ptr C'GLFWwindow -> IO ()
-test_glfwGetCurrentContext p'win = do
-    p'win' <- c'glfwGetCurrentContext
-    p'win' @?= p'win
-
-test_glfwSwapBuffers :: Ptr C'GLFWwindow -> IO ()
-test_glfwSwapBuffers =
-    c'glfwSwapBuffers
-
-test_glfwSwapInterval :: IO ()
-test_glfwSwapInterval =
-    c'glfwSwapInterval 1
-
-test_glfwExtensionSupported :: IO ()
-test_glfwExtensionSupported = do
-    let pairs =
-          [ ( "GL_ARB_multisample", c'GLFW_TRUE  )
-          , ( "bogus",              c'GLFW_FALSE )
-          ]
-    rs <- forM (map fst pairs) $ \ext ->
-      withCString ext c'glfwExtensionSupported
-    rs @?= map snd pairs
-
---------------------------------------------------------------------------------
-
-test_clipboard :: Ptr C'GLFWwindow -> IO ()
-test_clipboard p'win = do
-    rs <- mapM setGet ss
-    rs @?= ss
-  where
-    ss =
-      [ "abc 123 ???"
-      , "xyz 456 !!!"
-      ]
-    setGet s = do
-        withCString s $ c'glfwSetClipboardString p'win
-        threadDelay 100000  -- Give it a little time
-        p's' <- c'glfwGetClipboardString p'win
-
-        -- See if we generated a known error for the clipboard, which would
-        -- indicate that the format is not supported.
-        errResult <- c'glfwGetError nullPtr
-        if errResult == c'GLFW_FORMAT_UNAVAILABLE
-          then return s
-          else if errResult == c'GLFW_NO_ERROR then do
-            if p's' == nullPtr
-              then return ""
-              else peekCString p's'
-          else do
-            assertFailure "Unexpected error from clipboard"
-
---------------------------------------------------------------------------------
-
-test_glfwVulkanSupported :: IO ()
-test_glfwVulkanSupported =
-    -- Just test that it doesn't error. If it does, then we have a problem, but
-    -- some platforms (like OS X) don't actually support vulkan.
-    c'glfwVulkanSupported >> return ()
-
-test_glfwGetRequiredInstanceExtensions :: IO ()
-test_glfwGetRequiredInstanceExtensions = do
-    support <- c'glfwVulkanSupported
-    when (support == c'GLFW_TRUE) $
-        alloca $ \p'count -> do
-            p'exts <- c'glfwGetRequiredInstanceExtensions p'count
-            when (p'exts /= nullPtr) $ do
-                count <- peek p'count
-                assertBool "Got at least some extensions" $ count > 0
-
-test_glfwGetInstanceProcAddress :: IO ()
-test_glfwGetInstanceProcAddress = do
-    support <- c'glfwVulkanSupported
-    when (support == c'GLFW_TRUE) $ do
-        shouldBeNull <- withCString "notafunction" $
-                        \s -> c'glfwGetInstanceProcAddress nullPtr s
-        shouldBeNull @?= nullFunPtr
-        assertBool "Function pointer is defined!" $
-          p'glfwGetInstanceProcAddress /= nullFunPtr
-
-test_glfwGetPhysicalDevicePresentationSupport :: IO ()
-test_glfwGetPhysicalDevicePresentationSupport = do
-    -- We don't really have the proper types to test this function
-    support <- c'glfwVulkanSupported
-    when (support == c'GLFW_TRUE) $ do
-        shouldBeFalse <-
-            c'glfwGetPhysicalDevicePresentationSupport nullPtr nullPtr 0
-        shouldBeFalse @?= c'GLFW_FALSE
-
-        -- If we pass a nullptr for the instance here then we better get a
-        -- GLFW_API_UNAVAILABLE error since we didn't create the instance with
-        -- the proper extensions...
-        alloca $ \p'errMsg ->
-            c'glfwGetError p'errMsg >>=
-                assertEqual "Got proper vulkan error" c'GLFW_API_UNAVAILABLE
-
-        assertBool "Function pointer is defined!" $
-          p'glfwGetPhysicalDevicePresentationSupport /= nullFunPtr
-
-test_glfwCreateWindowSurface :: Ptr C'GLFWwindow -> IO ()
-test_glfwCreateWindowSurface p'win = do
-    -- We don't really have the proper types to test this function
-    support <- c'glfwVulkanSupported
-    when (support == c'GLFW_TRUE) $ do
-        alloca $ \p'surface -> do
-          let resPtr = p'surface :: Ptr ()
-          shouldNotBeSuccessful <-
-            c'glfwCreateWindowSurface nullPtr p'win nullPtr resPtr
-          assertBool "c'glfwCreateSurface was successful??" $
-            shouldNotBeSuccessful /= 0
-
-        -- The window that we pass here was not created with GLFW_NO_API, so
-        -- the proper error received here seems to be GLFW_INVALID_VALUE
-        alloca $ \p'errMsg ->
-            c'glfwGetError p'errMsg >>=
-                assertEqual "Got proper vulkan error" c'GLFW_INVALID_VALUE
-
-        assertBool "Function pointer is defined!" $
-          p'glfwCreateWindowSurface /= nullFunPtr
-
-{-# ANN module "HLint: ignore Use camelCase" #-}
+-- base+import Control.Concurrent    (threadDelay)+import Control.Monad         (forM, forM_, when)+import Data.Char             (isAscii)+import Data.List             (intercalate, isPrefixOf)+import Foreign.C.String      (peekCString, withCString)+import Foreign.C.Types       (CDouble(..))+import Foreign.Marshal.Alloc (alloca)+import Foreign.Marshal.Array (peekArray)+import Foreign.Ptr           (Ptr, nullPtr, nullFunPtr)+import Foreign.Storable      (Storable(..))++-- HUnit+import Test.HUnit ((@?=), (@?), assertBool, assertFailure, assertEqual)++-- test-framework+import Test.Framework (Test, defaultMain, testGroup)++-- test-framework-hunit+import Test.Framework.Providers.HUnit (testCase)++-- bindings-GLFW+import Bindings.GLFW++--------------------------------------------------------------------------------++main :: IO ()+main = do+    c'glfwInitHint c'GLFW_COCOA_CHDIR_RESOURCES c'GLFW_FALSE+    _ <- c'glfwInit++    p'mon <- c'glfwGetPrimaryMonitor++    c'glfwWindowHint c'GLFW_VISIBLE c'GLFW_FALSE+    p'win <- withCString "bindings-GLFW test" $ \p'title ->+      c'glfwCreateWindow 100 100 p'title nullPtr nullPtr+    c'glfwMakeContextCurrent p'win++    -- Mostly check for compiling+    cmcb <- mk'GLFWcharmodsfun $ \win x y ->+        putStrLn $ "Got char mods callback! " ++ show (win, x, y)+    _ <- c'glfwSetCharModsCallback p'win cmcb+    jcb <- mk'GLFWjoystickfun $ \x y ->+        putStrLn $ "Got joystick callback! " ++ show (x, y)+    _ <- c'glfwSetJoystickCallback jcb+    wcscb <- mk'GLFWwindowcontentscalefun $ \win x y ->+        putStrLn $ "Got window content scale callback! " ++ show (win, x, y)+    _ <- c'glfwSetWindowContentScaleCallback p'win wcscb++    c'glfwGetError nullPtr+      >>= assertEqual "Got inititialization error!" c'GLFW_NO_ERROR++    defaultMain $ tests p'mon p'win++    -- TODO because of how defaultMain works, this code is not reached+    c'glfwDestroyWindow p'win+    c'glfwTerminate++--------------------------------------------------------------------------------++versionMajor, versionMinor, versionRevision :: Int+versionMajor    = 3+versionMinor    = 3+versionRevision = 2++giveItTime :: IO ()+giveItTime = threadDelay 500000++joysticks :: Num a => [a]+joysticks =+    [ c'GLFW_JOYSTICK_1+    , c'GLFW_JOYSTICK_2+    , c'GLFW_JOYSTICK_3+    , c'GLFW_JOYSTICK_4+    , c'GLFW_JOYSTICK_5+    , c'GLFW_JOYSTICK_6+    , c'GLFW_JOYSTICK_7+    , c'GLFW_JOYSTICK_8+    , c'GLFW_JOYSTICK_9+    , c'GLFW_JOYSTICK_10+    , c'GLFW_JOYSTICK_11+    , c'GLFW_JOYSTICK_12+    , c'GLFW_JOYSTICK_13+    , c'GLFW_JOYSTICK_14+    , c'GLFW_JOYSTICK_15+    , c'GLFW_JOYSTICK_16+    ]++between :: Ord a => a -> (a,a) -> Bool+between n (l,h) = n >= l && n <= h++videoModeLooksValid :: C'GLFWvidmode -> Bool+videoModeLooksValid vm = and+    [ c'GLFWvidmode'width       vm `between` (0,8192)+    , c'GLFWvidmode'height      vm `between` (0,8192)+    , c'GLFWvidmode'redBits     vm `between` (0,32)+    , c'GLFWvidmode'greenBits   vm `between` (0,32)+    , c'GLFWvidmode'blueBits    vm `between` (0,32)+    , c'GLFWvidmode'refreshRate vm `between` (0,240)+    ]++--------------------------------------------------------------------------------++glfwTest :: String -> IO () -> Test+glfwTest name test = testCase name $ do+  _ <- c'glfwGetError nullPtr  -- clear last error+  test+  alloca $ \p'errMsg -> do+    errResult <- c'glfwGetError p'errMsg+    errMsg <- if errResult == c'GLFW_NO_ERROR then return "" else do+      msg <- peek p'errMsg >>= peekCString+      return $ concat ["Test '", name, "' generated error: ", msg]+    assertEqual errMsg errResult c'GLFW_NO_ERROR++tests :: Ptr C'GLFWmonitor -> Ptr C'GLFWwindow -> [Test]+tests p'mon p'win =+    [ testGroup "Initialization and version information"+      [ testCase "glfwGetVersion"       test_glfwGetVersion+      , testCase "glfwGetVersionString" test_glfwGetVersionString+      , testCase "glfwGetError"         test_glfwGetError+      , testCase "glfwRawMouseMotionSupported" test_glfwRawMouseMotionSupported+      ]+    , testGroup "Monitor handling"+      [ glfwTest "glfwGetMonitors"              test_glfwGetMonitors+      , glfwTest "glfwGetPrimaryMonitor"        test_glfwGetPrimaryMonitor+      , glfwTest "glfwGetMonitorContentScale" $ test_glfwGetMonitorContentScale p'mon+      , glfwTest "glfwGetMonitorPos"          $ test_glfwGetMonitorPos p'mon+      , glfwTest "glfwGetMonitorPhysicalSize" $ test_glfwGetMonitorPhysicalSize p'mon+      , glfwTest "glfwGetMonitorName"         $ test_glfwGetMonitorName p'mon+      , glfwTest "glfwGetMonitorWorkarea"     $ test_glfwGetMonitorWorkarea p'mon+      , glfwTest "glfwGetVideoModes"          $ test_glfwGetVideoModes p'mon+      , glfwTest "glfwGetVideoMode"           $ test_glfwGetVideoMode p'mon+      , glfwTest "glfwGetGammaRamp"           $ test_glfwGetGammaRamp p'mon+      ]+    , testGroup "Window handling"+      [ glfwTest "glfwDefaultWindowHints"       test_glfwDefaultWindowHints+      , glfwTest "glfwGetWindowAttrib"        $ test_glfwGetWindowAttrib p'win+      , glfwTest "glfwSetWindowAttrib"        $ test_glfwSetWindowAttrib p'win+      , glfwTest "window close flag"          $ test_window_close_flag p'win+      , glfwTest "glfwSetWindowTitle"         $ test_glfwSetWindowTitle p'win+      , glfwTest "window pos"                 $ test_window_pos p'win+      , glfwTest "window size"                $ test_window_size p'win+      , glfwTest "glfwGetWindowContentSize"   $ test_glfwGetWindowContentScale p'win+      , glfwTest "glfwGetWindowFrameSize"     $ test_glfwGetWindowFrameSize p'win+      , glfwTest "glfwGetFramebufferSize"     $ test_glfwGetFramebufferSize p'win+      , glfwTest "iconification"              $ test_iconification p'win+      -- , glfwTest "show/hide"                  $ test_show_hide p'win+      , glfwTest "glfwGetWindowMonitor"       $ test_glfwGetWindowMonitor p'win p'mon+      , glfwTest "glfwSetWindowMonitor"       $ test_glfwSetWindowMonitor p'win p'mon+      , glfwTest "glfwSetWindowIcon"          $ test_glfwSetWindowIcon p'win+      , glfwTest "glfwSetWindowOpacity"       $ test_glfwSetWindowOpacity p'win+      , glfwTest "glfwMaximizeWindow"         $ test_glfwMaximizeWindow p'win+      , glfwTest "glfwSetWindowSizeLimits"    $ test_glfwSetWindowSizeLimits p'win+      , glfwTest "glfwSetWindowAspectRatio"   $ test_glfwSetWindowAspectRatio p'win+      , glfwTest "glfwFocusWindow"            $ test_glfwFocusWindow p'win+      , glfwTest "glfwRequestWindowAttention" $ test_glfwRequestWindowAttention p'win+      , glfwTest "cursor pos"                 $ test_cursor_pos p'win+      , glfwTest "glfwPollEvents"               test_glfwPollEvents+      , glfwTest "glfwWaitEvents"               test_glfwWaitEvents+      , glfwTest "glfwWaitEventsTimeout"        test_glfwWaitEventsTimeout+      ]+    , testGroup "Input handling"+      [ glfwTest "glfwJoystickPresent"    test_glfwJoystickPresent+      , glfwTest "glfwGetJoystickAxes"    test_glfwGetJoystickAxes+      , glfwTest "glfwGetJoystickButtons" test_glfwGetJoystickButtons+      , glfwTest "glfwGetJoystickHats"    test_glfwGetJoystickHats+      , glfwTest "glfwGetJoystickName"    test_glfwGetJoystickName+      , glfwTest "glfwGetJoystickGUID"    test_glfwGetJoystickGUID+      , glfwTest "glfwGetGamepadState"    test_glfwGetGamepadState+      , glfwTest "glfwGetKeyName"         test_glfwGetKeyName+      , glfwTest "glfwGetKeyScancode"     test_glfwGetKeyScancode+      ]+    , testGroup "Time"+      [ glfwTest "glfwGetTime"               test_glfwGetTime+      , glfwTest "glfwSetTime"               test_glfwSetTime+      , glfwTest "glfwGetTimerValue"         test_glfwGetTimerValue+      , glfwTest "glfwSetTimerFrequency"     test_glfwGetTimerFrequency+      ]+    , testGroup "Context"+      [ glfwTest "glfwGetCurrentContext"  $ test_glfwGetCurrentContext p'win+      , glfwTest "glfwSwapBuffers"        $ test_glfwSwapBuffers p'win+      , glfwTest "glfwSwapInterval"         test_glfwSwapInterval+      , glfwTest "glfwExtensionSupported"   test_glfwExtensionSupported+      ]+    , testGroup "Clipboard"+      [ glfwTest "clipboard" $ test_clipboard p'win+      ]+    , testGroup "Vulkan"+      [ glfwTest "glfwVulkanSupported"                          test_glfwVulkanSupported+      , glfwTest "glfwGetRequiredInstanceExtensions"            test_glfwGetRequiredInstanceExtensions+      , glfwTest "glfwGetInstanceProcAddress"                   test_glfwGetInstanceProcAddress+      , glfwTest "glfwGetPhysicalDevicePresentationSupport"     test_glfwGetPhysicalDevicePresentationSupport+      , glfwTest "glfwCreateWindowSurface"                    $ test_glfwCreateWindowSurface p'win+      ]+    ]++--------------------------------------------------------------------------------++test_glfwGetVersion :: IO ()+test_glfwGetVersion =+    alloca $ \p'v0 ->+    alloca $ \p'v1 ->+    alloca $ \p'v2 -> do+        c'glfwGetVersion p'v0 p'v1 p'v2+        v0 <- peek p'v0+        v1 <- peek p'v1+        v2 <- peek p'v2+        v0 @?= fromIntegral versionMajor+        v1 @?= fromIntegral versionMinor+        v2 @?= fromIntegral versionRevision++test_glfwGetVersionString :: IO ()+test_glfwGetVersionString = do+    p'vs <- c'glfwGetVersionString+    if p'vs == nullPtr+      then assertFailure ""+      else do+          vs <- peekCString p'vs+          assertBool "" $ v `isPrefixOf` vs+        where+          v = intercalate "." $ map show [versionMajor, versionMinor, versionRevision]++test_glfwGetError :: IO ()+test_glfwGetError =+  alloca $ \p'err ->+  c'glfwGetError p'err >>= assertEqual "Discovered GLFW error!" c'GLFW_NO_ERROR++test_glfwRawMouseMotionSupported :: IO ()+test_glfwRawMouseMotionSupported = c'glfwRawMouseMotionSupported >> return ()++--------------------------------------------------------------------------------++test_glfwGetMonitors :: IO ()+test_glfwGetMonitors =+    alloca $ \p'n -> do+        p'mons <- c'glfwGetMonitors p'n+        n <- peek p'n+        if p'mons == nullPtr || n <= 0+          then assertFailure ""+          else do+              mons <- peekArray (fromIntegral n) p'mons+              assertBool "" $ not $ null mons++test_glfwGetPrimaryMonitor :: IO ()+test_glfwGetPrimaryMonitor = do+    p'mon <- c'glfwGetPrimaryMonitor+    assertBool "" $ p'mon /= nullPtr++test_glfwGetMonitorContentScale :: Ptr C'GLFWmonitor -> IO ()+test_glfwGetMonitorContentScale p'mon =+    alloca $ \p'x ->+    alloca $ \p'y -> do+        c'glfwGetMonitorContentScale p'mon p'x p'y+        x <- peek p'x+        y <- peek p'y+        assertBool "Monitor content scale x is defined" $ x > 0+        assertBool "Monitor content scale y is defined" $ y > 0++test_glfwGetMonitorPos :: Ptr C'GLFWmonitor -> IO ()+test_glfwGetMonitorPos p'mon =+    alloca $ \p'x ->+    alloca $ \p'y -> do+        c'glfwGetMonitorPos p'mon p'x p'y+        x <- peek p'x+        y <- peek p'y+        assertBool "" $ x >= 0+        assertBool "" $ y >= 0++test_glfwGetMonitorPhysicalSize :: Ptr C'GLFWmonitor -> IO ()+test_glfwGetMonitorPhysicalSize p'mon =+    alloca $ \p'w ->+    alloca $ \p'h -> do+        c'glfwGetMonitorPhysicalSize p'mon p'w p'h+        w <- peek p'w+        h <- peek p'h+        assertBool "" $ w `between` (0, 1000)+        assertBool "" $ h `between` (0,  500)++test_glfwGetMonitorName :: Ptr C'GLFWmonitor -> IO ()+test_glfwGetMonitorName p'mon = do+    p'name <- c'glfwGetMonitorName p'mon+    if p'name == nullPtr+      then assertFailure ""+      else do+          name <- peekCString p'name+          assertBool "" $ length name `between` (0, 20)+          assertBool "" $ all isAscii name++test_glfwGetMonitorWorkarea :: Ptr C'GLFWmonitor -> IO ()+test_glfwGetMonitorWorkarea p'mon =+    alloca $ \p'xpos ->+    alloca $ \p'ypos ->+    alloca $ \p'w ->+    alloca $ \p'h -> do+        c'glfwGetMonitorWorkarea p'mon p'xpos p'ypos p'w p'h+        xpos <- peek p'xpos+        ypos <- peek p'ypos+        w <- peek p'w+        h <- peek p'h+        assertBool "Workarea xpos not negative" $ xpos >= 0+        assertBool "Workarea ypos not negative" $ ypos >= 0+        assertBool "Workarea width is positive" $ w > 0+        assertBool "Workarea height is positive" $ h > 0++test_glfwGetVideoModes :: Ptr C'GLFWmonitor -> IO ()+test_glfwGetVideoModes p'mon =+    alloca $ \p'n -> do+        p'vms <- c'glfwGetVideoModes p'mon p'n+        n <- fromIntegral `fmap` peek p'n+        if p'vms == nullPtr || n <= 0+          then assertFailure ""+          else do+              vms <- peekArray n p'vms+              assertBool "" $ all videoModeLooksValid vms++test_glfwGetVideoMode :: Ptr C'GLFWmonitor -> IO ()+test_glfwGetVideoMode p'mon = do+    p'vm <- c'glfwGetVideoMode p'mon+    if p'vm == nullPtr+      then assertFailure ""+      else do+          vm <- peek p'vm+          assertBool "" $ videoModeLooksValid vm++test_glfwGetGammaRamp :: Ptr C'GLFWmonitor -> IO ()+test_glfwGetGammaRamp p'mon = do+    p'gr <- c'glfwGetGammaRamp p'mon+    if p'gr == nullPtr+      then assertFailure ""+      else do+          gr <- peek p'gr+          let p'rs = c'GLFWgammaramp'red   gr+              p'gs = c'GLFWgammaramp'green gr+              p'bs = c'GLFWgammaramp'blue  gr+              cn   = c'GLFWgammaramp'size  gr+              n    = fromIntegral cn+          if nullPtr `elem` [p'rs, p'gs, p'bs]+            then assertFailure ""+            else do+                rs <- peekArray n p'rs+                gs <- peekArray n p'gs+                bs <- peekArray n p'bs+                let rsl = length rs+                    gsl = length gs+                    bsl = length bs+                assertBool "" $ rsl > 0 && rsl == gsl && gsl == bsl++--------------------------------------------------------------------------------++test_glfwDefaultWindowHints :: IO ()+test_glfwDefaultWindowHints =+    c'glfwDefaultWindowHints++test_window_close_flag :: Ptr C'GLFWwindow -> IO ()+test_window_close_flag p'win = do+    r0 <- c'glfwWindowShouldClose p'win+    r0 @?= c'GLFW_FALSE++    c'glfwSetWindowShouldClose p'win c'GLFW_TRUE+    r1 <- c'glfwWindowShouldClose p'win+    r1 @?= c'GLFW_TRUE++    c'glfwSetWindowShouldClose p'win c'GLFW_FALSE+    r2 <- c'glfwWindowShouldClose p'win+    r2 @?= c'GLFW_FALSE++test_glfwSetWindowTitle :: Ptr C'GLFWwindow -> IO ()+test_glfwSetWindowTitle p'win =+    withCString "some new title" $+      c'glfwSetWindowTitle p'win++-- This is a little strange. Depending on your window manager, etc, after+-- setting the window position to (x,y), the actual new window position might+-- be (x+5,y+5) due to borders. So we just check for consistency.+test_window_pos :: Ptr C'GLFWwindow -> IO ()+test_window_pos p'win = do+    let x = 17+        y = 37+        xoff = 53+        yoff = 149+    (x0, y0, dx0, dy0) <- setGet  x        y+    (x1, y1, dx1, dy1) <- setGet (x+xoff) (y+yoff)+    dx0 @?= dx1+    dy0 @?= dy1+    x1 - x0 @?= xoff+    y1 - y0 @?= yoff+  where+    setGet :: Int -> Int -> IO (Int, Int, Int, Int)+    setGet x0 y0 = do+        c'glfwSetWindowPos p'win (fromIntegral x0) (fromIntegral y0)+        c'glfwSwapBuffers p'win+        giveItTime+        alloca $ \p'x1 ->+          alloca $ \p'y1 -> do+              c'glfwGetWindowPos p'win p'x1 p'y1+              x1 <- fromIntegral `fmap` peek p'x1+              y1 <- fromIntegral `fmap` peek p'y1+              let (dx, dy) = (x0-x1, y0-y1)+              return (x1, y1, dx, dy)++test_window_size :: Ptr C'GLFWwindow -> IO ()+test_window_size p'win = do+    let w = 177+        h = 372+    c'glfwSetWindowSize p'win w h+    giveItTime+    alloca $ \p'w' ->+      alloca $ \p'h' -> do+          c'glfwGetWindowSize p'win p'w' p'h'+          w' <- fromIntegral `fmap` peek p'w'+          h' <- fromIntegral `fmap` peek p'h'+          w' @?= w+          h' @?= h++-- Really all we can say here is that we likely have a title bar, so just check+-- that the 'frame' around the top edge is > 0.+test_glfwGetWindowFrameSize :: Ptr C'GLFWwindow -> IO ()+test_glfwGetWindowFrameSize p'win =+    alloca $ \p'win_frame_top -> do+        c'glfwGetWindowFrameSize p'win nullPtr p'win_frame_top nullPtr nullPtr+        top <- peek p'win_frame_top+        assertBool "Window has no frame width up top!" $ top > 0++test_glfwGetFramebufferSize :: Ptr C'GLFWwindow -> IO ()+test_glfwGetFramebufferSize p'win =+    alloca $ \p'w  ->+    alloca $ \p'h  ->+    alloca $ \p'fw ->+    alloca $ \p'fh -> do+        c'glfwGetWindowSize      p'win p'w  p'h+        c'glfwGetFramebufferSize p'win p'fw p'fh+        w  <- peek p'w+        h  <- peek p'h+        fw <- peek p'fw+        fh <- peek p'fh+        ((fw `mod` w) == 0) @? "Framebuffer width multiple of window's"+        ((fh `mod` h) == 0) @? "Framebuffer height multiple of window's"++test_iconification :: Ptr C'GLFWwindow -> IO ()+test_iconification p'win = do+    c'glfwShowWindow p'win+    r0 <- c'glfwGetWindowAttrib p'win c'GLFW_ICONIFIED+    r0 @?= c'GLFW_FALSE++    c'glfwIconifyWindow p'win+    giveItTime++    r1 <- c'glfwGetWindowAttrib p'win c'GLFW_ICONIFIED+    r1 @?= c'GLFW_TRUE++    c'glfwRestoreWindow p'win+    c'glfwHideWindow p'win++-- test_show_hide :: Ptr C'GLFWwindow -> IO ()+-- test_show_hide p'win = do+--     v0 <- c'glfwGetWindowAttrib p'win c'GLFW_VISIBLE+--     v0 @?= c'GLFW_FALSE++--     c'glfwShowWindow p'win+--     giveItTime+--     v1 <- c'glfwGetWindowAttrib p'win c'GLFW_VISIBLE+--     v1 @?= c'GLFW_TRUE++--     c'glfwHideWindow p'win+--     giveItTime+--     v2 <- c'glfwGetWindowAttrib p'win c'GLFW_VISIBLE+--     v2 @?= c'GLFW_FALSE++test_glfwGetWindowContentScale :: Ptr C'GLFWwindow -> IO ()+test_glfwGetWindowContentScale p'win =+    alloca $ \p'x ->+    alloca $ \p'y -> do+        c'glfwGetWindowContentScale p'win p'x p'y+        x <- peek p'x+        y <- peek p'y+        assertBool "Window content scale x is defined" $ x > 0+        assertBool "Window content scale y is defined" $ y > 0++test_glfwGetWindowMonitor :: Ptr C'GLFWwindow -> Ptr C'GLFWmonitor -> IO ()+test_glfwGetWindowMonitor p'win _ = do+    p'mon <- c'glfwGetWindowMonitor p'win+    p'mon @?= nullPtr++test_glfwSetWindowMonitor :: Ptr C'GLFWwindow -> Ptr C'GLFWmonitor -> IO ()+test_glfwSetWindowMonitor p'win _ = do+    c'glfwSetWindowMonitor p'win nullPtr 0 0 100 100 60++test_glfwSetWindowIcon :: Ptr C'GLFWwindow -> IO ()+test_glfwSetWindowIcon p'win = do+    c'glfwSetWindowIcon p'win 0 nullPtr++test_glfwSetWindowOpacity :: Ptr C'GLFWwindow -> IO ()+test_glfwSetWindowOpacity p'win = do+    let desiredOpacity = 0.27+    c'glfwSetWindowOpacity p'win desiredOpacity+    newOpacity <- c'glfwGetWindowOpacity p'win+    assertBool "Opacity is roughly the same." $+        abs (desiredOpacity - newOpacity) < 0.01+    c'glfwSetWindowOpacity p'win 1.0++test_glfwSetWindowSizeLimits :: Ptr C'GLFWwindow -> IO ()+test_glfwSetWindowSizeLimits p'win = do+    c'glfwSetWindowSizeLimits p'win 640 480 1024 768++test_glfwSetWindowAspectRatio :: Ptr C'GLFWwindow -> IO ()+test_glfwSetWindowAspectRatio p'win = do+    c'glfwSetWindowAspectRatio p'win c'GLFW_DONT_CARE c'GLFW_DONT_CARE++test_glfwFocusWindow :: Ptr C'GLFWwindow -> IO ()+test_glfwFocusWindow = c'glfwFocusWindow++test_glfwRequestWindowAttention :: Ptr C'GLFWwindow -> IO ()+test_glfwRequestWindowAttention = c'glfwRequestWindowAttention++-- NOTE: This test seems to fail in X11. This might be due to the asynchronous+-- nature of focus events in X. We may be able to fix it by waiting for the focus+-- event before setting the cursor position.+test_cursor_pos :: Ptr C'GLFWwindow -> IO ()+test_cursor_pos p'win =+    alloca $ \p'w   ->+    alloca $ \p'h   ->+    alloca $ \p'cx' ->+    alloca $ \p'cy' -> do+        c'glfwShowWindow p'win+        c'glfwGetWindowSize p'win p'w p'h+        w <- peek p'w+        h <- peek p'h++        -- Make sure we use integral coordinates here so that we don't run into+        -- platform-dependent differences.+        let cx :: CDouble+            cy :: CDouble+            (cx, cy) = (fromIntegral $ w `div` 2, fromIntegral $ h `div` 2)++        -- !HACK! Poll events seems to be necessary on OS X,+        -- before /and/ after glfwSetCursorPos, otherwise, the+        -- windowing system likely never receives the cursor update. This is+        -- reflected in the C version of GLFW as well, we just call it here in+        -- order to have a more robust test.++        c'glfwPollEvents++        c'glfwSetCursorPos p'win cx cy++        c'glfwPollEvents -- !HACK! see comment above++        c'glfwGetCursorPos p'win p'cx' p'cy'+        cx' <- peek p'cx'+        cy' <- peek p'cy'+        cx' @?= cx+        cy' @?= cy+        c'glfwHideWindow p'win++test_glfwGetWindowAttrib :: Ptr C'GLFWwindow -> IO ()+test_glfwGetWindowAttrib p'win = do+    let pairs =+          [ ( c'GLFW_FOCUSED,    c'GLFW_FALSE        )+          , ( c'GLFW_ICONIFIED,  c'GLFW_FALSE        )+          , ( c'GLFW_RESIZABLE,  c'GLFW_TRUE         )+          , ( c'GLFW_DECORATED,  c'GLFW_TRUE         )+          , ( c'GLFW_CLIENT_API, c'GLFW_OPENGL_API )+          ]+    rs <- mapM (c'glfwGetWindowAttrib p'win . fst) pairs+    rs @?= map snd pairs++test_glfwSetWindowAttrib :: Ptr C'GLFWwindow -> IO ()+test_glfwSetWindowAttrib p'win = do+    c'glfwSetWindowAttrib p'win c'GLFW_RESIZABLE c'GLFW_FALSE+    norsz <- c'glfwGetWindowAttrib p'win c'GLFW_RESIZABLE+    norsz @?= c'GLFW_FALSE++    c'glfwSetWindowAttrib p'win c'GLFW_RESIZABLE c'GLFW_TRUE+    rsz <- c'glfwGetWindowAttrib p'win c'GLFW_RESIZABLE+    rsz @?= c'GLFW_TRUE++test_glfwMaximizeWindow :: Ptr C'GLFWwindow -> IO ()+test_glfwMaximizeWindow p'win = do+    c'glfwShowWindow p'win+    startsMaximized <- c'glfwGetWindowAttrib p'win c'GLFW_MAXIMIZED+    startsMaximized @?= c'GLFW_FALSE++    c'glfwMaximizeWindow p'win+    giveItTime++    isMaximized <- c'glfwGetWindowAttrib p'win c'GLFW_MAXIMIZED+    isMaximized @?= c'GLFW_TRUE+    c'glfwHideWindow p'win++test_glfwPollEvents :: IO ()+test_glfwPollEvents = c'glfwPollEvents++test_glfwWaitEvents :: IO ()+test_glfwWaitEvents = c'glfwPostEmptyEvent >> c'glfwWaitEvents++test_glfwWaitEventsTimeout :: IO ()+test_glfwWaitEventsTimeout =+    -- to not slow down the test too much we set the timeout to 0.001 second :+    c'glfwWaitEventsTimeout 0.001++--------------------------------------------------------------------------------++test_glfwJoystickPresent :: IO ()+test_glfwJoystickPresent = do+    _ <- c'glfwJoystickPresent c'GLFW_JOYSTICK_1+    r <- c'glfwJoystickPresent c'GLFW_JOYSTICK_16+    r @?= c'GLFW_FALSE++test_glfwGetJoystickAxes :: IO ()+test_glfwGetJoystickAxes =+    forM_ joysticks $ \js ->+      alloca $ \p'n -> do+          p'axes <- c'glfwGetJoystickAxes js p'n+          when (p'axes /= nullPtr) $ do+              n <- fromIntegral `fmap` peek p'n+              if n <= 0+                then assertFailure ""+                else do+                    axes <- peekArray n p'axes+                    length axes @?= n++test_glfwGetJoystickButtons :: IO ()+test_glfwGetJoystickButtons =+    forM_ joysticks $ \js ->+      alloca $ \p'n -> do+          p'buttons <- c'glfwGetJoystickButtons js p'n+          when (p'buttons /= nullPtr) $ do+              n <- fromIntegral `fmap` peek p'n+              if n <= 0+                then assertFailure ""+                else do+                    buttons <- peekArray n p'buttons+                    length buttons @?= n++test_glfwGetJoystickHats :: IO ()+test_glfwGetJoystickHats =+    forM_ joysticks $ \js ->+        alloca $ \p'n -> do+            p'hats <- c'glfwGetJoystickHats js p'n+            when (p'hats /= nullPtr) $ do+                n <- fromIntegral `fmap` peek p'n+                if n <= 0+                  then assertFailure "No joystick hats??"+                  else do+                      hats <- peekArray n p'hats+                      length hats @?= n+                      forM_ hats $ assertEqual "Hat is centered" c'GLFW_HAT_CENTERED++test_glfwGetJoystickName :: IO ()+test_glfwGetJoystickName =+    forM_ joysticks $ \js -> do+        p'name <- c'glfwGetJoystickName js+        when (p'name /= nullPtr) $ do+            name <- peekCString p'name+            assertBool "" $ not $ null name++test_glfwGetJoystickGUID :: IO ()+test_glfwGetJoystickGUID =+    forM_ joysticks $ \js -> do+        p'guid <- c'glfwGetJoystickGUID js+        when (p'guid /= nullPtr) $ do+            guid <- peekCString p'guid+            assertBool "" $ not $ null guid++test_glfwGetGamepadState :: IO ()+test_glfwGetGamepadState =+    forM_ joysticks $ \js ->+        alloca $ \p'gp -> do+            gotMapping <- c'glfwGetGamepadState js p'gp+            when (gotMapping == c'GLFW_TRUE) $ do+                assertBool "Gamepad state is valid" (p'gp /= nullPtr)++                c'glfwJoystickIsGamepad js+                  >>= assertEqual "Is gamepad" c'GLFW_TRUE++                c'glfwGetGamepadName js+                  >>= peekCString+                  >>= assertBool "Gamepad has name" . not . null++                gp <- peek p'gp+                forM_ (c'GLFWgamepadstate'buttons gp) $+                  assertEqual "Button not pressed" c'GLFW_RELEASE++test_glfwGetKeyName :: IO ()+test_glfwGetKeyName =+    forM_ [c'GLFW_KEY_SLASH, c'GLFW_KEY_PERIOD] $ \k -> do+        p'name <- c'glfwGetKeyName k 0+        when (p'name /= nullPtr) $ do+            name <- peekCString p'name+            assertBool "" $ not $ null name++test_glfwGetKeyScancode :: IO ()+test_glfwGetKeyScancode = do+    forM_ [c'GLFW_KEY_SLASH, c'GLFW_KEY_PERIOD] $ \k -> do+        sc <- c'glfwGetKeyScancode k+        assertBool (mconcat ["Key ", show k, " scancode not found."]) (sc > 0)++    -- According to the docs this should work but it returns 0. This is a GLFW+    -- bug (at least on OS X).+    -- c'glfwGetKeyScancode c'GLFW_KEY_UNKNOWN >>= assertEqual "" (-1)++--------------------------------------------------------------------------------++test_glfwGetTime :: IO ()+test_glfwGetTime = do+    t <- c'glfwGetTime+    assertBool "" $ t > 0++test_glfwSetTime :: IO ()+test_glfwSetTime = do+    let t = 37 :: Double+    c'glfwSetTime (realToFrac t)+    t' <- realToFrac `fmap` c'glfwGetTime+    assertBool "" $ t' `between` (t, t+10)++test_glfwGetTimerValue :: IO ()+test_glfwGetTimerValue = do+    val <- c'glfwGetTimerValue+    assertBool "" $ val > 0++test_glfwGetTimerFrequency :: IO ()+test_glfwGetTimerFrequency = do+    freq <- c'glfwGetTimerFrequency+    assertBool "" $ freq > 0++--------------------------------------------------------------------------------++test_glfwGetCurrentContext :: Ptr C'GLFWwindow -> IO ()+test_glfwGetCurrentContext p'win = do+    p'win' <- c'glfwGetCurrentContext+    p'win' @?= p'win++test_glfwSwapBuffers :: Ptr C'GLFWwindow -> IO ()+test_glfwSwapBuffers =+    c'glfwSwapBuffers++test_glfwSwapInterval :: IO ()+test_glfwSwapInterval =+    c'glfwSwapInterval 1++test_glfwExtensionSupported :: IO ()+test_glfwExtensionSupported = do+    let pairs =+          [ ( "GL_ARB_multisample", c'GLFW_TRUE  )+          , ( "bogus",              c'GLFW_FALSE )+          ]+    rs <- forM (map fst pairs) $ \ext ->+      withCString ext c'glfwExtensionSupported+    rs @?= map snd pairs++--------------------------------------------------------------------------------++test_clipboard :: Ptr C'GLFWwindow -> IO ()+test_clipboard p'win = do+    rs <- mapM setGet ss+    rs @?= ss+  where+    ss =+      [ "abc 123 ???"+      , "xyz 456 !!!"+      ]+    setGet s = do+        withCString s $ c'glfwSetClipboardString p'win+        threadDelay 100000  -- Give it a little time+        p's' <- c'glfwGetClipboardString p'win++        -- See if we generated a known error for the clipboard, which would+        -- indicate that the format is not supported.+        errResult <- c'glfwGetError nullPtr+        if errResult == c'GLFW_FORMAT_UNAVAILABLE+          then return s+          else if errResult == c'GLFW_NO_ERROR then do+            if p's' == nullPtr+              then return ""+              else peekCString p's'+          else do+            assertFailure "Unexpected error from clipboard"++--------------------------------------------------------------------------------++test_glfwVulkanSupported :: IO ()+test_glfwVulkanSupported =+    -- Just test that it doesn't error. If it does, then we have a problem, but+    -- some platforms (like OS X) don't actually support vulkan.+    c'glfwVulkanSupported >> return ()++test_glfwGetRequiredInstanceExtensions :: IO ()+test_glfwGetRequiredInstanceExtensions = do+    support <- c'glfwVulkanSupported+    when (support == c'GLFW_TRUE) $+        alloca $ \p'count -> do+            p'exts <- c'glfwGetRequiredInstanceExtensions p'count+            when (p'exts /= nullPtr) $ do+                count <- peek p'count+                assertBool "Got at least some extensions" $ count > 0++test_glfwGetInstanceProcAddress :: IO ()+test_glfwGetInstanceProcAddress = do+    support <- c'glfwVulkanSupported+    when (support == c'GLFW_TRUE) $ do+        shouldBeNull <- withCString "notafunction" $+                        \s -> c'glfwGetInstanceProcAddress nullPtr s+        shouldBeNull @?= nullFunPtr+        assertBool "Function pointer is defined!" $+          p'glfwGetInstanceProcAddress /= nullFunPtr++test_glfwGetPhysicalDevicePresentationSupport :: IO ()+test_glfwGetPhysicalDevicePresentationSupport = do+    -- We don't really have the proper types to test this function+    support <- c'glfwVulkanSupported+    when (support == c'GLFW_TRUE) $ do+        shouldBeFalse <-+            c'glfwGetPhysicalDevicePresentationSupport nullPtr nullPtr 0+        shouldBeFalse @?= c'GLFW_FALSE++        -- If we pass a nullptr for the instance here then we better get a+        -- GLFW_API_UNAVAILABLE error since we didn't create the instance with+        -- the proper extensions...+        alloca $ \p'errMsg ->+            c'glfwGetError p'errMsg >>=+                assertEqual "Got proper vulkan error" c'GLFW_API_UNAVAILABLE++        assertBool "Function pointer is defined!" $+          p'glfwGetPhysicalDevicePresentationSupport /= nullFunPtr++test_glfwCreateWindowSurface :: Ptr C'GLFWwindow -> IO ()+test_glfwCreateWindowSurface p'win = do+    -- We don't really have the proper types to test this function+    support <- c'glfwVulkanSupported+    when (support == c'GLFW_TRUE) $ do+        alloca $ \p'surface -> do+          let resPtr = p'surface :: Ptr ()+          shouldNotBeSuccessful <-+            c'glfwCreateWindowSurface nullPtr p'win nullPtr resPtr+          assertBool "c'glfwCreateSurface was successful??" $+            shouldNotBeSuccessful /= 0++        -- The window that we pass here was not created with GLFW_NO_API, so+        -- the proper error received here seems to be GLFW_INVALID_VALUE+        alloca $ \p'errMsg ->+            c'glfwGetError p'errMsg >>=+                assertEqual "Got proper vulkan error" c'GLFW_INVALID_VALUE++        assertBool "Function pointer is defined!" $+          p'glfwCreateWindowSurface /= nullFunPtr++{-# ANN module "HLint: ignore Use camelCase" #-}
bindings-GLFW.cabal view
@@ -1,233 +1,233 @@-name:         bindings-GLFW
-version:      3.3.2.0
-category:     Graphics
-
-author:       Brian Lewis <brian@lorf.org>
-maintainer:   Brian Lewis <brian@lorf.org>
-            , Schell Scivally <efsubenovex@gmail.com>
-            , Javier Jaramago <jaramago.fernandez.javier@gmail.com>
-            , Pavel Krajcevski <krajcevski@gmail.com>
-
-license:      BSD3
-license-file: LICENSE
-
-synopsis:     Low-level bindings to GLFW OpenGL library
-description:
-  Low-level bindings to GLFW (<http://www.glfw.org/>), an open source,
-  multi-platform library for creating windows with OpenGL contexts and managing
-  input and events.
-  .
-  The binding is to GLFW 3.3, released 2019-04-15
-  (<http://www.glfw.org/Version-3.3-released.html>
-  <http://www.glfw.org/changelog.html>).
-  .
-  /These bindings are too low-level for normal use./ For higher-level bindings,
-  see GLFW-b (<http://hackage.haskell.org/package/GLFW-b>).
-  .
-  If you've used GLFW before, you were probably using 2.7.x. There are some
-  significant differences in 3.x.x. Please see the transition guide
-  (<http://www.glfw.org/docs/3.3/moving.html>).
-
-cabal-version: >= 1.10
-build-type:    Simple
-
---------------------------------------------------------------------------------
-
-extra-source-files:
-  README.md
-
-  glfw/deps/glad/*.h
-  glfw/deps/mingw/*.h
-
-  glfw/include/GLFW/*.h
-
-  glfw/src/*.c
-  glfw/src/*.h
-  glfw/src/*.m
-
---------------------------------------------------------------------------------
-
-flag system-GLFW
-  description: Use the system-wide GLFW instead of the bundled copy.
-  default: False
-
-flag MacOSXUseChdir
-  description:
-    Mac OS X only. Determines whether 'init' changes the current directory of
-    bundled applications to the 'Contents/Resources' directory.
-  default: True
-
-flag MacOSXUseMenubar
-  description:
-    Mac OS X only. Determines whether the first call to 'createWindow' sets up
-    a minimal menu bar.
-  default: True
-
-flag MacOSXUseRetina
-  description:
-    Mac OS X only. Determines whether windows use the full resolution of
-    Retina displays (recommended).
-  default: True
-
-flag X
-  description:
-    Linux only. Determines whether to target the X11 display server.
-  default: True
-
-flag Wayland
-  description:
-    Linux only. Determines whether to target the Wayland display server.
-  default: False
-
-flag OSMesa
-  description:
-    Linux only. Determines whether or not to use the Mesa 3D rendering context.
-  default: False
-
-flag ExposeNative
-  description:
-    Whether or not to use the native access functions. You most likely do not
-    want to do this. You may if you're coding for the Rift, perhaps.
-  default: False
-
---------------------------------------------------------------------------------
-
-library
-  default-language: Haskell2010
-
-  ghc-options: -Wall
-  if impl(ghc >= 6.8)
-    ghc-options: -fwarn-tabs
-
-  cc-options: -DNDEBUG
-
-  exposed-modules:
-    Bindings.GLFW
-
-  build-tools:
-    hsc2hs
-
-  build-depends:
-    base          < 5,
-    bindings-DSL == 1.0.*
-
-  if flag(system-glfw)
-    pkgconfig-depends:
-      glfw3 == 3.3.*
-  else
-    include-dirs:
-      glfw/include/GLFW
-      glfw/include/
-      glfw/deps
-      glfw/src
-
-    c-sources:
-      glfw/src/context.c
-      glfw/src/egl_context.c
-      glfw/src/init.c
-      glfw/src/input.c
-      glfw/src/monitor.c
-      glfw/src/osmesa_context.c
-      glfw/src/vulkan.c
-      glfw/src/window.c
-      glfw/deps/glad_gl.c
-      glfw/deps/glad_vulkan.c
-
-    if os(linux) || os(freebsd)
-      c-sources:
-        glfw/src/glx_context.c
-        glfw/src/xkb_unicode.c
-        glfw/src/linux_joystick.c
-        glfw/src/posix_time.c
-        glfw/src/posix_thread.c
-      if flag(X)
-        cc-options: -DBINDINGS_GLFW_USE_X11 -D_GLFW_X11
-        c-sources:
-          glfw/src/x11_init.c
-          glfw/src/x11_monitor.c
-          glfw/src/x11_window.c
-      if flag(Wayland)
-        cc-options: -DBINDINGS_GLFW_USE_WAYLAND -D_GLFW_WAYLAND
-        c-sources:
-          glfw/src/wl_init.c
-          glfw/src/wl_monitor.c
-          glfw/src/wl_window.c
-      if flag(OSMesa)
-        cc-options: -DBINDINGS_GLFW_USE_OSMESA -D_GLFW_OSMESA
-        c-sources:
-          glfw/src/null_init.c
-          glfw/src/null_joystick.c
-          glfw/src/null_monitor.c
-          glfw/src/null_window.c
-
-      extra-libraries:
-        GL
-        X11
-        Xi
-        Xrandr
-        Xxf86vm
-        Xcursor
-        Xinerama
-        pthread
-
-    if os(darwin)
-      c-sources:
-         glfw/src/cocoa_time.c
-         glfw/src/posix_thread.c
-         glfw/src/cocoa_init.m
-         glfw/src/cocoa_joystick.m
-         glfw/src/cocoa_monitor.m
-         glfw/src/cocoa_window.m
-         glfw/src/nsgl_context.m
-      cc-options: -D_GLFW_COCOA
-      if !flag(MacOSXUseChdir)
-        cc-options: -UGLFW_USE_CHDIR
-      if !flag(MacOSXUseMenubar)
-        cc-options: -UGLFW_USE_MENUBAR
-      if !flag(MacOSXUseRetina)
-        cc-options: -UGLFW_USE_RETINA
-      frameworks: AGL Cocoa OpenGL IOKit CoreFoundation CoreVideo
-
-    if os(mingw32)
-      include-dirs:
-        glfw/deps
-      c-sources:
-        glfw/src/win32_init.c
-        glfw/src/win32_joystick.c
-        glfw/src/win32_monitor.c
-        glfw/src/win32_time.c
-        glfw/src/win32_window.c
-        glfw/src/win32_thread.c
-        glfw/src/wgl_context.c
-      extra-libraries:
-        opengl32
-        Gdi32
-      cc-options: -D_GLFW_WIN32
-
-  if flag(ExposeNative)
-    cc-options: -DExposeNative
---------------------------------------------------------------------------------
-
-test-suite main
-  default-language: Haskell2010
-
-  ghc-options: -Wall
-  if impl(ghc >= 6.8)
-    ghc-options: -fwarn-tabs
-
-  type: exitcode-stdio-1.0
-  main-is: Test.hs
-  frameworks: AGL Cocoa OpenGL IOKit CoreFoundation CoreVideo
-
-  build-depends:
-    bindings-GLFW,
-    HUnit                >= 1.3 && <1.7,
-    base                  < 5,
-    test-framework       == 0.8.*,
-    test-framework-hunit == 0.3.*
-
---------------------------------------------------------------------------------
-
-source-repository head
-  type:     git
-  location: git://github.com/bsl/bindings-GLFW.git
+name:         bindings-GLFW+version:      3.3.9.0+category:     Graphics++author:       Brian Lewis <brian@lorf.org>+maintainer:   Brian Lewis <brian@lorf.org>+            , Schell Scivally <efsubenovex@gmail.com>+            , Javier Jaramago <jaramago.fernandez.javier@gmail.com>+            , Pavel Krajcevski <krajcevski@gmail.com>++license:      BSD3+license-file: LICENSE++synopsis:     Low-level bindings to GLFW OpenGL library+description:+  Low-level bindings to GLFW (<http://www.glfw.org/>), an open source,+  multi-platform library for creating windows with OpenGL contexts and managing+  input and events.+  .+  The binding is to GLFW 3.3, released 2019-04-15+  (<http://www.glfw.org/Version-3.3-released.html>+  <http://www.glfw.org/changelog.html>).+  .+  /These bindings are too low-level for normal use./ For higher-level bindings,+  see GLFW-b (<http://hackage.haskell.org/package/GLFW-b>).+  .+  If you've used GLFW before, you were probably using 2.7.x. There are some+  significant differences in 3.x.x. Please see the transition guide+  (<http://www.glfw.org/docs/3.3/moving.html>).++cabal-version: >= 1.10+build-type:    Simple++--------------------------------------------------------------------------------++extra-source-files:+  README.md++  glfw/deps/glad/*.h+  glfw/deps/mingw/*.h++  glfw/include/GLFW/*.h++  glfw/src/*.c+  glfw/src/*.h+  glfw/src/*.m++--------------------------------------------------------------------------------++flag system-GLFW+  description: Use the system-wide GLFW instead of the bundled copy.+  default: False++flag MacOSXUseChdir+  description:+    Mac OS X only. Determines whether 'init' changes the current directory of+    bundled applications to the 'Contents/Resources' directory.+  default: True++flag MacOSXUseMenubar+  description:+    Mac OS X only. Determines whether the first call to 'createWindow' sets up+    a minimal menu bar.+  default: True++flag MacOSXUseRetina+  description:+    Mac OS X only. Determines whether windows use the full resolution of+    Retina displays (recommended).+  default: True++flag X+  description:+    Linux only. Determines whether to target the X11 display server.+  default: True++flag Wayland+  description:+    Linux only. Determines whether to target the Wayland display server.+  default: False++flag OSMesa+  description:+    Linux only. Determines whether or not to use the Mesa 3D rendering context.+  default: False++flag ExposeNative+  description:+    Whether or not to use the native access functions. You most likely do not+    want to do this. You may if you're coding for the Rift, perhaps.+  default: False++--------------------------------------------------------------------------------++library+  default-language: Haskell2010++  ghc-options: -Wall+  if impl(ghc >= 6.8)+    ghc-options: -fwarn-tabs++  cc-options: -DNDEBUG++  exposed-modules:+    Bindings.GLFW++  build-tools:+    hsc2hs++  build-depends:+    base          < 5,+    bindings-DSL == 1.0.*++  if flag(system-glfw)+    pkgconfig-depends:+      glfw3 == 3.3.*+  else+    include-dirs:+      glfw/include/GLFW+      glfw/include/+      glfw/deps+      glfw/src++    c-sources:+      glfw/src/context.c+      glfw/src/egl_context.c+      glfw/src/init.c+      glfw/src/input.c+      glfw/src/monitor.c+      glfw/src/osmesa_context.c+      glfw/src/vulkan.c+      glfw/src/window.c+      glfw/deps/glad_gl.c+      glfw/deps/glad_vulkan.c++    if os(linux) || os(freebsd)+      c-sources:+        glfw/src/glx_context.c+        glfw/src/xkb_unicode.c+        glfw/src/linux_joystick.c+        glfw/src/posix_time.c+        glfw/src/posix_thread.c+      if flag(X)+        cc-options: -DBINDINGS_GLFW_USE_X11 -D_GLFW_X11+        c-sources:+          glfw/src/x11_init.c+          glfw/src/x11_monitor.c+          glfw/src/x11_window.c+      if flag(Wayland)+        cc-options: -DBINDINGS_GLFW_USE_WAYLAND -D_GLFW_WAYLAND+        c-sources:+          glfw/src/wl_init.c+          glfw/src/wl_monitor.c+          glfw/src/wl_window.c+      if flag(OSMesa)+        cc-options: -DBINDINGS_GLFW_USE_OSMESA -D_GLFW_OSMESA+        c-sources:+          glfw/src/null_init.c+          glfw/src/null_joystick.c+          glfw/src/null_monitor.c+          glfw/src/null_window.c++      extra-libraries:+        GL+        X11+        Xi+        Xrandr+        Xxf86vm+        Xcursor+        Xinerama+        pthread++    if os(darwin)+      c-sources:+         glfw/src/cocoa_time.c+         glfw/src/posix_thread.c+         glfw/src/cocoa_init.m+         glfw/src/cocoa_joystick.m+         glfw/src/cocoa_monitor.m+         glfw/src/cocoa_window.m+         glfw/src/nsgl_context.m+      cc-options: -D_GLFW_COCOA+      if !flag(MacOSXUseChdir)+        cc-options: -UGLFW_USE_CHDIR+      if !flag(MacOSXUseMenubar)+        cc-options: -UGLFW_USE_MENUBAR+      if !flag(MacOSXUseRetina)+        cc-options: -UGLFW_USE_RETINA+      frameworks: AGL Cocoa OpenGL IOKit CoreFoundation CoreVideo++    if os(mingw32)+      include-dirs:+        glfw/deps+      c-sources:+        glfw/src/win32_init.c+        glfw/src/win32_joystick.c+        glfw/src/win32_monitor.c+        glfw/src/win32_time.c+        glfw/src/win32_window.c+        glfw/src/win32_thread.c+        glfw/src/wgl_context.c+      extra-libraries:+        opengl32+        Gdi32+      cc-options: -D_GLFW_WIN32++  if flag(ExposeNative)+    cc-options: -DExposeNative+--------------------------------------------------------------------------------++test-suite main+  default-language: Haskell2010++  ghc-options: -Wall+  if impl(ghc >= 6.8)+    ghc-options: -fwarn-tabs++  type: exitcode-stdio-1.0+  main-is: Test.hs+  frameworks: AGL Cocoa OpenGL IOKit CoreFoundation CoreVideo++  build-depends:+    bindings-GLFW,+    HUnit                >= 1.3 && <1.7,+    base                  < 5,+    test-framework       == 0.8.*,+    test-framework-hunit == 0.3.*++--------------------------------------------------------------------------------++source-repository head+  type:     git+  location: git://github.com/bsl/bindings-GLFW.git
glfw/deps/glad/vk_platform.h view
@@ -2,19 +2,9 @@ /* 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+** Copyright 2014-2022 The Khronos Group Inc. **-** 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.+** SPDX-License-Identifier: Apache-2.0 */  @@ -52,7 +42,7 @@     #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"+    #error "Vulkan is not 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 */@@ -68,7 +58,9 @@     #define VKAPI_PTR #endif -#include <stddef.h>+#if !defined(VK_NO_STDDEF_H)+    #include <stddef.h>+#endif /* !defined(VK_NO_STDDEF_H) */  #if !defined(VK_NO_STDINT_H)     #if defined(_MSC_VER) && (_MSC_VER < 1600)
glfw/deps/glad/vulkan.h view
@@ -1,3476 +1,5504 @@ /**- * 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);---+ * Loader generated by glad 2.0.0-beta on Wed Jul 13 21:24:58 2022+ *+ * Generator: C/C+++ * Specification: vk+ * Extensions: 4+ *+ * APIs:+ *  - vulkan=1.3+ *+ * Options:+ *  - ALIAS = False+ *  - DEBUG = False+ *  - HEADER_ONLY = False+ *  - LOADER = False+ *  - MX = False+ *  - MX_GLOBAL = False+ *  - ON_DEMAND = False+ *+ * Commandline:+ *    --api='vulkan=1.3' --extensions='VK_EXT_debug_report,VK_KHR_portability_enumeration,VK_KHR_surface,VK_KHR_swapchain' c+ *+ * Online:+ *    http://glad.sh/#api=vulkan%3D1.3&extensions=VK_EXT_debug_report%2CVK_KHR_portability_enumeration%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)++#define GLAD_GENERATOR_VERSION "2.0.0-beta"++typedef void (*GLADapiproc)(void);++typedef GLADapiproc (*GLADloadfunc)(const char *name);+typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name);++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 10+#define VK_FALSE 0+#define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration"+#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1+#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_DRIVER_INFO_SIZE 256+#define VK_MAX_DRIVER_NAME_SIZE 256+#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 (~1U)+#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 "vk_platform.h"+/* DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead. */+#define VK_MAKE_VERSION(major, minor, patch) \+    ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))+/* DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead. */+#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)+/* DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead. */+#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU)+/* DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead. */+#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)+#define VK_MAKE_API_VERSION(variant, major, minor, patch) \+    ((((uint32_t)(variant)) << 29) | (((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))+#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29)+#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22) & 0x7FU)+#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU)+#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)+/* 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_API_VERSION(0, 1, 0, 0)/* Patch version should always be set to 0 */+/* Vulkan 1.1 version number */+#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)/* Patch version should always be set to 0 */+/* Vulkan 1.2 version number */+#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)/* Patch version should always be set to 0 */+/* Vulkan 1.3 version number */+#define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0)/* Patch version should always be set to 0 */+/* Version of this file */+#define VK_HEADER_VERSION 220+/* Complete version of this file */+#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION)+#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;+#ifndef VK_USE_64_BIT_PTR_DEFINES+    #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)+        #define VK_USE_64_BIT_PTR_DEFINES 1+    #else+        #define VK_USE_64_BIT_PTR_DEFINES 0+    #endif+#endif+#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE+    #if (VK_USE_64_BIT_PTR_DEFINES==1)+        #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L))+            #define VK_NULL_HANDLE nullptr+        #else+            #define VK_NULL_HANDLE ((void*)0)+        #endif+    #else+        #define VK_NULL_HANDLE 0ULL+    #endif+#endif+#ifndef VK_NULL_HANDLE+    #define VK_NULL_HANDLE 0+#endif+#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE+    #if (VK_USE_64_BIT_PTR_DEFINES==1)+        #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+++++++++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(VkPrivateDataSlot)+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,+    VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF+} VkAttachmentLoadOp;+typedef enum VkAttachmentStoreOp {+    VK_ATTACHMENT_STORE_OP_STORE = 0,+    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,+    VK_ATTACHMENT_STORE_OP_NONE = 1000301000,+    VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF+} VkBorderColor;+typedef enum VkFramebufferCreateFlagBits {+    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1,+    VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkFramebufferCreateFlagBits;+typedef enum VkPipelineCacheHeaderVersion {+    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,+    VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF+} VkPipelineCacheHeaderVersion;+typedef enum VkPipelineCacheCreateFlagBits {+    VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 1,+    VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkPipelineCacheCreateFlagBits;+typedef enum VkPipelineShaderStageCreateFlagBits {+    VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = 1,+    VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 2,+    VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkPipelineShaderStageCreateFlagBits;+typedef enum VkDescriptorSetLayoutCreateFlagBits {+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2,+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkDescriptorSetLayoutCreateFlagBits;+typedef enum VkInstanceCreateFlagBits {+    VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 1,+    VK_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkInstanceCreateFlagBits;+typedef enum VkDeviceQueueCreateFlagBits {+    VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1,+    VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16,+    VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072,+    VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkCommandPoolCreateFlagBits;+typedef enum VkCommandPoolResetFlagBits {+    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1,+    VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkCommandPoolResetFlagBits;+typedef enum VkCommandBufferResetFlagBits {+    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1,+    VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkCommandBufferResetFlagBits;+typedef enum VkCommandBufferLevel {+    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,+    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,+    VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK = 1000138000,+    VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF+} 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_CULL_MODE = 1000267000,+    VK_DYNAMIC_STATE_FRONT_FACE = 1000267001,+    VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = 1000267002,+    VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT = 1000267003,+    VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT = 1000267004,+    VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = 1000267005,+    VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE = 1000267006,+    VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE = 1000267007,+    VK_DYNAMIC_STATE_DEPTH_COMPARE_OP = 1000267008,+    VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = 1000267009,+    VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE = 1000267010,+    VK_DYNAMIC_STATE_STENCIL_OP = 1000267011,+    VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001,+    VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002,+    VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004,+    VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF+} VkDynamicState;+typedef enum VkFenceCreateFlagBits {+    VK_FENCE_CREATE_SIGNALED_BIT = 1,+    VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkFenceCreateFlagBits;+typedef enum VkPolygonMode {+    VK_POLYGON_MODE_FILL = 0,+    VK_POLYGON_MODE_LINE = 1,+    VK_POLYGON_MODE_POINT = 2,+    VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_FORMAT_G8_B8R8_2PLANE_444_UNORM = 1000330000,+    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001,+    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002,+    VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003,+    VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000,+    VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001,+    VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000,+    VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001,+    VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002,+    VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003,+    VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004,+    VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005,+    VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006,+    VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007,+    VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008,+    VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009,+    VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010,+    VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011,+    VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012,+    VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013,+    VK_FORMAT_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536,+    VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkFormatFeatureFlagBits;+typedef enum VkFrontFace {+    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,+    VK_FRONT_FACE_CLOCKWISE = 1,+    VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_IMAGE_ASPECT_NONE = 0,+    VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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_DEPTH_ATTACHMENT_OPTIMAL = 1000241000,+    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001,+    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002,+    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003,+    VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000,+    VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001,+    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,+    VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF+} VkImageLayout;+typedef enum VkImageTiling {+    VK_IMAGE_TILING_OPTIMAL = 0,+    VK_IMAGE_TILING_LINEAR = 1,+    VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF+} VkImageTiling;+typedef enum VkImageType {+    VK_IMAGE_TYPE_1D = 0,+    VK_IMAGE_TYPE_2D = 1,+    VK_IMAGE_TYPE_3D = 2,+    VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF+} VkImageViewType;+typedef enum VkSharingMode {+    VK_SHARING_MODE_EXCLUSIVE = 0,+    VK_SHARING_MODE_CONCURRENT = 1,+    VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF+} VkSharingMode;+typedef enum VkIndexType {+    VK_INDEX_TYPE_UINT16 = 0,+    VK_INDEX_TYPE_UINT32 = 1,+    VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF+} VkLogicOp;+typedef enum VkMemoryHeapFlagBits {+    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1,+    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2,+    VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_ACCESS_NONE = 0,+    VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF+} VkPhysicalDeviceType;+typedef enum VkPipelineBindPoint {+    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,+    VK_PIPELINE_BIND_POINT_COMPUTE = 1,+    VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF+} 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_BIT = 16,+    VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,+    VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 256,+    VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 512,+    VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF+} VkPrimitiveTopology;+typedef enum VkQueryControlFlagBits {+    VK_QUERY_CONTROL_PRECISE_BIT = 1,+    VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkQueryResultFlagBits;+typedef enum VkQueryType {+    VK_QUERY_TYPE_OCCLUSION = 0,+    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,+    VK_QUERY_TYPE_TIMESTAMP = 2,+    VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkQueueFlagBits;+typedef enum VkSubpassContents {+    VK_SUBPASS_CONTENTS_INLINE = 0,+    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,+    VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF+} 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_UNKNOWN = -13,+    VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,+    VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,+    VK_ERROR_FRAGMENTATION = -1000161000,+    VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,+    VK_PIPELINE_COMPILE_REQUIRED = 1000297000,+    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,+    VK_RESULT_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkShaderStageFlagBits;+typedef enum VkSparseMemoryBindFlagBits {+    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1,+    VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkSparseMemoryBindFlagBits;+typedef enum VkStencilFaceFlagBits {+    VK_STENCIL_FACE_FRONT_BIT = 1,+    VK_STENCIL_FACE_BACK_BIT = 2,+    VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003,+    VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK,+    VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF+} 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_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000,+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001,+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002,+    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003,+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004,+    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005,+    VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,+    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,+    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,+    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,+    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002,+    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,+    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004,+    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,+    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001,+    VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,+    VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,+    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54,+    VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000,+    VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001,+    VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000,+    VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 = 1000314000,+    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 = 1000314001,+    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 = 1000314002,+    VK_STRUCTURE_TYPE_DEPENDENCY_INFO = 1000314003,+    VK_STRUCTURE_TYPE_SUBMIT_INFO_2 = 1000314004,+    VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO = 1000314005,+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO = 1000314006,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000,+    VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000,+    VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001,+    VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002,+    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003,+    VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 = 1000337004,+    VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 = 1000337005,+    VK_STRUCTURE_TYPE_BUFFER_COPY_2 = 1000337006,+    VK_STRUCTURE_TYPE_IMAGE_COPY_2 = 1000337007,+    VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008,+    VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009,+    VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000,+    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001,+    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002,+    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000,+    VK_STRUCTURE_TYPE_RENDERING_INFO = 1000044000,+    VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO = 1000044001,+    VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO = 1000044002,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003,+    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001,+    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000,+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001,+    VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002,+    VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003,+    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,+    VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF+} VkSystemAllocationScope;+typedef enum VkInternalAllocationType {+    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,+    VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,+    VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF+} VkSamplerAddressMode;+typedef enum VkFilter {+    VK_FILTER_NEAREST = 0,+    VK_FILTER_LINEAR = 1,+    VK_FILTER_MAX_ENUM = 0x7FFFFFFF+} VkFilter;+typedef enum VkSamplerMipmapMode {+    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,+    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,+    VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF+} VkSamplerMipmapMode;+typedef enum VkVertexInputRate {+    VK_VERTEX_INPUT_RATE_VERTEX = 0,+    VK_VERTEX_INPUT_RATE_INSTANCE = 1,+    VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_PIPELINE_STAGE_NONE = 0,+    VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkSampleCountFlagBits;+typedef enum VkAttachmentDescriptionFlagBits {+    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1,+    VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkAttachmentDescriptionFlagBits;+typedef enum VkDescriptorPoolCreateFlagBits {+    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1,+    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2,+    VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkDescriptorPoolCreateFlagBits;+typedef enum VkDependencyFlagBits {+    VK_DEPENDENCY_BY_REGION_BIT = 1,+    VK_DEPENDENCY_DEVICE_GROUP_BIT = 4,+    VK_DEPENDENCY_VIEW_LOCAL_BIT = 2,+    VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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_PRIVATE_DATA_SLOT = 1000295000,+    VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,+    VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,+    VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,+    VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF+} VkObjectType;+typedef enum VkEventCreateFlagBits {+    VK_EVENT_CREATE_DEVICE_ONLY_BIT = 1,+    VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkEventCreateFlagBits;+typedef enum VkDescriptorUpdateTemplateType {+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0,+    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF+} VkDescriptorUpdateTemplateType;+typedef enum VkPointClippingBehavior {+    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,+    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,+    VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF+} VkPointClippingBehavior;+typedef enum VkResolveModeFlagBits {+    VK_RESOLVE_MODE_NONE = 0,+    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1,+    VK_RESOLVE_MODE_AVERAGE_BIT = 2,+    VK_RESOLVE_MODE_MIN_BIT = 4,+    VK_RESOLVE_MODE_MAX_BIT = 8,+    VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkResolveModeFlagBits;+typedef enum VkDescriptorBindingFlagBits {+    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1,+    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2,+    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4,+    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8,+    VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkDescriptorBindingFlagBits;+typedef enum VkSemaphoreType {+    VK_SEMAPHORE_TYPE_BINARY = 0,+    VK_SEMAPHORE_TYPE_TIMELINE = 1,+    VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF+} VkSemaphoreType;+typedef enum VkPipelineCreationFeedbackFlagBits {+    VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 1,+    VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT,+    VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 2,+    VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT,+    VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 4,+    VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT,+    VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkPipelineCreationFeedbackFlagBits;+typedef enum VkSemaphoreWaitFlagBits {+    VK_SEMAPHORE_WAIT_ANY_BIT = 1,+    VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkSemaphoreWaitFlagBits;+typedef enum VkToolPurposeFlagBits {+    VK_TOOL_PURPOSE_VALIDATION_BIT = 1,+    VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = VK_TOOL_PURPOSE_VALIDATION_BIT,+    VK_TOOL_PURPOSE_PROFILING_BIT = 2,+    VK_TOOL_PURPOSE_PROFILING_BIT_EXT = VK_TOOL_PURPOSE_PROFILING_BIT,+    VK_TOOL_PURPOSE_TRACING_BIT = 4,+    VK_TOOL_PURPOSE_TRACING_BIT_EXT = VK_TOOL_PURPOSE_TRACING_BIT,+    VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = 8,+    VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT,+    VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 16,+    VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT,+    VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkToolPurposeFlagBits;+typedef uint64_t VkAccessFlagBits2;+static const VkAccessFlagBits2 VK_ACCESS_2_NONE = 0;+static const VkAccessFlagBits2 VK_ACCESS_2_NONE_KHR = 0;+static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT = 1;+static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 1;+static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT = 2;+static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT_KHR = 2;+static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = 4;+static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 4;+static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT = 8;+static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 8;+static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT = 16;+static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 16;+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT = 32;+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT_KHR = 32;+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT = 64;+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 64;+static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT = 128;+static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 128;+static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = 256;+static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 256;+static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512;+static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 512;+static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024;+static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 1024;+static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT = 2048;+static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 2048;+static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT = 4096;+static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 4096;+static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT = 8192;+static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT_KHR = 8192;+static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT = 16384;+static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT_KHR = 16384;+static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT = 32768;+static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT_KHR = 32768;+static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT = 65536;+static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 65536;+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT = 4294967296;+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 4294967296;+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT = 8589934592;+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 8589934592;+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 17179869184;+static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 17179869184;++typedef uint64_t VkPipelineStageFlagBits2;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE = 0;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE_KHR = 0;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 1;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 1;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 2;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 2;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 4;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 4;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 8;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 8;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 16;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 16;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 32;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 32;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 64;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 64;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 128;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 128;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT = 256;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 256;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = 512;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 512;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = 1024;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 1024;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT = 2048;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 2048;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT = 4096;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 4096;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT = 4096;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 4096;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT = 8192;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 8192;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT = 16384;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 16384;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = 32768;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 32768;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT = 65536;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 65536;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT = 4294967296;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 4294967296;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT = 8589934592;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 8589934592;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT = 17179869184;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 17179869184;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT = 34359738368;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 34359738368;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT = 68719476736;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 68719476736;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = 137438953472;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 137438953472;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 274877906944;+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 274877906944;++typedef uint64_t VkFormatFeatureFlagBits2;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 1;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 1;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 2;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 2;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 4;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 4;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 8;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 8;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 16;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 16;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 32;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 64;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 64;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 128;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 128;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 256;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 256;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 512;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 512;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 1024;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 1024;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 2048;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 2048;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 4096;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 8192;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 16384;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 16384;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 32768;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 32768;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 65536;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 131072;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT = 4194304;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 4194304;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 8388608;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 2147483648;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 2147483648;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = 4294967296;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 4294967296;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 8589934592;+static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 8589934592;++typedef enum VkRenderingFlagBits {+    VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 1,+    VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT,+    VK_RENDERING_SUSPENDING_BIT = 2,+    VK_RENDERING_SUSPENDING_BIT_KHR = VK_RENDERING_SUSPENDING_BIT,+    VK_RENDERING_RESUMING_BIT = 4,+    VK_RENDERING_RESUMING_BIT_KHR = VK_RENDERING_RESUMING_BIT,+    VK_RENDERING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkRenderingFlagBits;+typedef enum VkColorSpaceKHR {+    VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,+    VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,+    VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF+} 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,+    VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF+} 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,+    VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF+} 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,+    VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF+} 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,+    VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF+} 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_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,+    VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF+} 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,+    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16,+    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkExternalSemaphoreHandleTypeFlagBits;+typedef enum VkExternalSemaphoreFeatureFlagBits {+    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1,+    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2,+    VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkExternalSemaphoreFeatureFlagBits;+typedef enum VkSemaphoreImportFlagBits {+    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1,+    VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkExternalFenceHandleTypeFlagBits;+typedef enum VkExternalFenceFeatureFlagBits {+    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1,+    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2,+    VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkExternalFenceFeatureFlagBits;+typedef enum VkFenceImportFlagBits {+    VK_FENCE_IMPORT_TEMPORARY_BIT = 1,+    VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkPeerMemoryFeatureFlagBits;+typedef enum VkMemoryAllocateFlagBits {+    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1,+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2,+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4,+    VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF+} VkDeviceGroupPresentModeFlagBitsKHR;+typedef enum VkSwapchainCreateFlagBitsKHR {+    VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1,+    VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2,+    VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF+} 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,+    VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkSubgroupFeatureFlagBits;+typedef enum VkTessellationDomainOrigin {+    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,+    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,+    VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF+} 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,+    VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF+} VkSamplerYcbcrModelConversion;+typedef enum VkSamplerYcbcrRange {+    VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,+    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,+    VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF+} VkSamplerYcbcrRange;+typedef enum VkChromaLocation {+    VK_CHROMA_LOCATION_COSITED_EVEN = 0,+    VK_CHROMA_LOCATION_MIDPOINT = 1,+    VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF+} VkChromaLocation;+typedef enum VkSamplerReductionMode {+    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,+    VK_SAMPLER_REDUCTION_MODE_MIN = 1,+    VK_SAMPLER_REDUCTION_MODE_MAX = 2,+    VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF+} VkSamplerReductionMode;+typedef enum VkShaderFloatControlsIndependence {+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF+} VkShaderFloatControlsIndependence;+typedef enum VkSubmitFlagBits {+    VK_SUBMIT_PROTECTED_BIT = 1,+    VK_SUBMIT_PROTECTED_BIT_KHR = VK_SUBMIT_PROTECTED_BIT,+    VK_SUBMIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF+} VkSubmitFlagBits;+typedef enum VkVendorId {+    VK_VENDOR_ID_VIV = 0x10001,+    VK_VENDOR_ID_VSI = 0x10002,+    VK_VENDOR_ID_KAZAN = 0x10003,+    VK_VENDOR_ID_CODEPLAY = 0x10004,+    VK_VENDOR_ID_MESA = 0x10005,+    VK_VENDOR_ID_POCL = 0x10006,+    VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF+} VkVendorId;+typedef enum VkDriverId {+    VK_DRIVER_ID_AMD_PROPRIETARY = 1,+    VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,+    VK_DRIVER_ID_MESA_RADV = 3,+    VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,+    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,+    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,+    VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,+    VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,+    VK_DRIVER_ID_ARM_PROPRIETARY = 9,+    VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,+    VK_DRIVER_ID_GGP_PROPRIETARY = 11,+    VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,+    VK_DRIVER_ID_MESA_LLVMPIPE = 13,+    VK_DRIVER_ID_MOLTENVK = 14,+    VK_DRIVER_ID_COREAVI_PROPRIETARY = 15,+    VK_DRIVER_ID_JUICE_PROPRIETARY = 16,+    VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17,+    VK_DRIVER_ID_MESA_TURNIP = 18,+    VK_DRIVER_ID_MESA_V3DV = 19,+    VK_DRIVER_ID_MESA_PANVK = 20,+    VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21,+    VK_DRIVER_ID_MESA_VENUS = 22,+    VK_DRIVER_ID_MESA_DOZEN = 23,+    VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF+} VkDriverId;+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 VkPipelineCacheHeaderVersionOne {+    uint32_t                 headerSize;+    VkPipelineCacheHeaderVersion   headerVersion;+    uint32_t                 vendorID;+    uint32_t                 deviceID;+    uint8_t                  pipelineCacheUUID [ VK_UUID_SIZE ];+} VkPipelineCacheHeaderVersionOne;++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 VkDevicePrivateDataCreateInfo {+    VkStructureType   sType;+    const  void *                             pNext;+    uint32_t                                 privateDataSlotRequestCount;+} VkDevicePrivateDataCreateInfo;++typedef struct VkConformanceVersion {+    uint8_t                            major;+    uint8_t                            minor;+    uint8_t                            subminor;+    uint8_t                            patch;+} VkConformanceVersion;++typedef struct VkPhysicalDeviceDriverProperties {+    VkStructureType   sType;+    void *                             pNext;+    VkDriverId                    driverID;+    char                          driverName [ VK_MAX_DRIVER_NAME_SIZE ];+    char                          driverInfo [ VK_MAX_DRIVER_INFO_SIZE ];+    VkConformanceVersion          conformanceVersion;+} VkPhysicalDeviceDriverProperties;++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 struct VkSamplerReductionModeCreateInfo {+    VkStructureType   sType;+    const  void *                       pNext;+    VkSamplerReductionMode             reductionMode;+} VkSamplerReductionModeCreateInfo;++typedef struct VkPhysicalDeviceInlineUniformBlockProperties {+    VkStructureType   sType;+    void *                   pNext;+    uint32_t                 maxInlineUniformBlockSize;+    uint32_t                 maxPerStageDescriptorInlineUniformBlocks;+    uint32_t                 maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;+    uint32_t                 maxDescriptorSetInlineUniformBlocks;+    uint32_t                 maxDescriptorSetUpdateAfterBindInlineUniformBlocks;+} VkPhysicalDeviceInlineUniformBlockProperties;++typedef struct VkWriteDescriptorSetInlineUniformBlock {+    VkStructureType   sType;+    const  void *  pNext;+    uint32_t                      dataSize;+    const  void *   pData;+} VkWriteDescriptorSetInlineUniformBlock;++typedef struct VkDescriptorPoolInlineUniformBlockCreateInfo {+    VkStructureType   sType;+    const  void *  pNext;+    uint32_t                      maxInlineUniformBlockBindings;+} VkDescriptorPoolInlineUniformBlockCreateInfo;++typedef struct VkImageFormatListCreateInfo {+    VkStructureType   sType;+    const  void *                             pNext;+    uint32_t                 viewFormatCount;+    const  VkFormat *   pViewFormats;+} VkImageFormatListCreateInfo;++typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {+    VkStructureType   sType;+    const  void *                             pNext;+    uint32_t                 descriptorSetCount;+    const  uint32_t *  pDescriptorCounts;+} VkDescriptorSetVariableDescriptorCountAllocateInfo;++typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport {+    VkStructureType   sType;+    void *             pNext;+    uint32_t           maxVariableDescriptorCount;+} VkDescriptorSetVariableDescriptorCountLayoutSupport;++typedef struct VkSubpassBeginInfo {+    VkStructureType   sType;+    const  void *             pNext;+    VkSubpassContents        contents;+} VkSubpassBeginInfo;++typedef struct VkSubpassEndInfo {+    VkStructureType   sType;+    const  void *             pNext;+} VkSubpassEndInfo;++typedef struct VkPhysicalDeviceTimelineSemaphoreProperties {+    VkStructureType   sType;+    void *                   pNext;+    uint64_t                 maxTimelineSemaphoreValueDifference;+} VkPhysicalDeviceTimelineSemaphoreProperties;++typedef struct VkSemaphoreTypeCreateInfo {+    VkStructureType   sType;+    const  void *             pNext;+    VkSemaphoreType          semaphoreType;+    uint64_t                 initialValue;+} VkSemaphoreTypeCreateInfo;++typedef struct VkTimelineSemaphoreSubmitInfo {+    VkStructureType   sType;+    const  void *                       pNext;+    uint32_t           waitSemaphoreValueCount;+    const  uint64_t *  pWaitSemaphoreValues;+    uint32_t           signalSemaphoreValueCount;+    const  uint64_t *  pSignalSemaphoreValues;+} VkTimelineSemaphoreSubmitInfo;++typedef struct VkSemaphoreSignalInfo {+    VkStructureType   sType;+    const  void *             pNext;+    VkSemaphore              semaphore;+    uint64_t                 value;+} VkSemaphoreSignalInfo;++typedef struct VkBufferDeviceAddressInfo {+    VkStructureType   sType;+    const  void *                                             pNext;+    VkBuffer                                                 buffer;+} VkBufferDeviceAddressInfo;++typedef struct VkBufferOpaqueCaptureAddressCreateInfo {+    VkStructureType   sType;+    const  void *                       pNext;+    uint64_t                           opaqueCaptureAddress;+} VkBufferOpaqueCaptureAddressCreateInfo;++typedef struct VkRenderPassAttachmentBeginInfo {+    VkStructureType   sType;+    const  void *                               pNext;+    uint32_t                   attachmentCount;+    const  VkImageView *  pAttachments;+} VkRenderPassAttachmentBeginInfo;++typedef struct VkAttachmentReferenceStencilLayout {+    VkStructureType sType;+    void *     pNext;+    VkImageLayout                    stencilLayout;+} VkAttachmentReferenceStencilLayout;++typedef struct VkAttachmentDescriptionStencilLayout {+    VkStructureType sType;+    void *     pNext;+    VkImageLayout                    stencilInitialLayout;+    VkImageLayout                    stencilFinalLayout;+} VkAttachmentDescriptionStencilLayout;++typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo {+    VkStructureType   sType;+    void *   pNext;+    uint32_t                 requiredSubgroupSize;+} VkPipelineShaderStageRequiredSubgroupSizeCreateInfo;++typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo {+    VkStructureType   sType;+    const  void *                    pNext;+    uint64_t                        opaqueCaptureAddress;+} VkMemoryOpaqueCaptureAddressAllocateInfo;++typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo {+    VkStructureType   sType;+    const  void *                       pNext;+    VkDeviceMemory                     memory;+} VkDeviceMemoryOpaqueCaptureAddressInfo;++typedef struct VkCommandBufferSubmitInfo {+    VkStructureType        sType;+    const  void *                                                                 pNext;+    VkCommandBuffer                                                              commandBuffer;+    uint32_t                                                                     deviceMask;+} VkCommandBufferSubmitInfo;++typedef struct VkPipelineRenderingCreateInfo {+    VkStructureType   sType;+    const  void *                                                 pNext;+    uint32_t                                                                     viewMask;+    uint32_t                                                     colorAttachmentCount;+    const  VkFormat *            pColorAttachmentFormats;+    VkFormat                                               depthAttachmentFormat;+    VkFormat                                               stencilAttachmentFormat;+} VkPipelineRenderingCreateInfo;++typedef struct VkRenderingAttachmentInfo {+    VkStructureType         sType;+    const  void *                                                 pNext;+    VkImageView                                                  imageView;+    VkImageLayout                                                                imageLayout;+    VkResolveModeFlagBits                                        resolveMode;+    VkImageView                                                  resolveImageView;+    VkImageLayout                                                                resolveImageLayout;+    VkAttachmentLoadOp                                                           loadOp;+    VkAttachmentStoreOp                                                          storeOp;+    VkClearValue                                                                 clearValue;+} VkRenderingAttachmentInfo;++typedef uint32_t VkSampleMask;+typedef uint32_t VkBool32;+typedef uint32_t VkFlags;+typedef uint64_t VkFlags64;+typedef uint64_t VkDeviceSize;+typedef uint64_t VkDeviceAddress;+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 VkPrivateDataSlotCreateFlags;+typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;+typedef VkFlags VkPipelineCreationFeedbackFlags;+typedef VkFlags VkSemaphoreWaitFlags;+typedef VkFlags64 VkAccessFlags2;+typedef VkFlags64 VkPipelineStageFlags2;+typedef VkFlags64 VkFormatFeatureFlags2;+typedef VkFlags VkRenderingFlags;+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 VkFlags VkDescriptorBindingFlags;+typedef VkFlags VkResolveModeFlags;+typedef VkFlags VkToolPurposeFlags;+typedef VkFlags VkSubmitFlags;+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 VkPrivateDataSlotCreateInfo {+    VkStructureType   sType;+    const  void *                             pNext;+    VkPrivateDataSlotCreateFlags          flags;+} VkPrivateDataSlotCreateInfo;++typedef struct VkPhysicalDevicePrivateDataFeatures {+    VkStructureType   sType;+    void *                                   pNext;+    VkBool32                                 privateData;+} VkPhysicalDevicePrivateDataFeatures;++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 VkPhysicalDeviceVariablePointersFeatures  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;+    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 VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {+    VkStructureType   sType;+    void *                           pNext;+    VkBool32   shaderSubgroupExtendedTypes;+} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;++typedef struct VkDeviceBufferMemoryRequirements {+    VkStructureType   sType;+    const  void *                                                            pNext;+    const  VkBufferCreateInfo *                                                              pCreateInfo;+} VkDeviceBufferMemoryRequirements;++typedef struct VkDeviceImageMemoryRequirements {+    VkStructureType   sType;+    const  void *                                                           pNext;+    const  VkImageCreateInfo *                                                              pCreateInfo;+    VkImageAspectFlagBits                                                  planeAspect;+} VkDeviceImageMemoryRequirements;++typedef struct VkMemoryRequirements2 {+    VkStructureType   sType;+    void *  pNext;+    VkMemoryRequirements                                                   memoryRequirements;+} VkMemoryRequirements2;++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 VkPhysicalDeviceSamplerFilterMinmaxProperties {+    VkStructureType   sType;+    void *                   pNext;+    VkBool32                 filterMinmaxSingleComponentFormats;+    VkBool32                 filterMinmaxImageComponentMapping;+} VkPhysicalDeviceSamplerFilterMinmaxProperties;++typedef struct VkPhysicalDeviceInlineUniformBlockFeatures {+    VkStructureType   sType;+    void *   pNext;+    VkBool32                 inlineUniformBlock;+    VkBool32                 descriptorBindingInlineUniformBlockUpdateAfterBind;+} VkPhysicalDeviceInlineUniformBlockFeatures;++typedef struct VkPhysicalDeviceMaintenance3Properties {+    VkStructureType   sType;+    void *                             pNext;+    uint32_t                           maxPerSetDescriptors;+    VkDeviceSize                       maxMemoryAllocationSize;+} VkPhysicalDeviceMaintenance3Properties;++typedef struct VkPhysicalDeviceMaintenance4Features {+    VkStructureType   sType;+    void *                             pNext;+    VkBool32                                           maintenance4;+} VkPhysicalDeviceMaintenance4Features;++typedef struct VkPhysicalDeviceMaintenance4Properties {+    VkStructureType   sType;+    void *                             pNext;+    VkDeviceSize                       maxBufferSize;+} VkPhysicalDeviceMaintenance4Properties;++typedef struct VkDescriptorSetLayoutSupport {+    VkStructureType   sType;+    void *             pNext;+    VkBool32           supported;+} VkDescriptorSetLayoutSupport;++typedef struct VkPhysicalDeviceShaderDrawParametersFeatures {+    VkStructureType   sType;+    void *                             pNext;+    VkBool32                           shaderDrawParameters;+} VkPhysicalDeviceShaderDrawParametersFeatures;++typedef struct VkPhysicalDeviceShaderDrawParametersFeatures  VkPhysicalDeviceShaderDrawParameterFeatures;++typedef struct VkPhysicalDeviceShaderFloat16Int8Features {+    VkStructureType   sType;+    void *       pNext;+    VkBool32                           shaderFloat16;+    VkBool32                           shaderInt8;+} VkPhysicalDeviceShaderFloat16Int8Features;++typedef struct VkPhysicalDeviceFloatControlsProperties {+    VkStructureType   sType;+    void *                             pNext;+    VkShaderFloatControlsIndependence   denormBehaviorIndependence;+    VkShaderFloatControlsIndependence   roundingModeIndependence;+    VkBool32                           shaderSignedZeroInfNanPreserveFloat16;+    VkBool32                           shaderSignedZeroInfNanPreserveFloat32;+    VkBool32                           shaderSignedZeroInfNanPreserveFloat64;+    VkBool32                           shaderDenormPreserveFloat16;+    VkBool32                           shaderDenormPreserveFloat32;+    VkBool32                           shaderDenormPreserveFloat64;+    VkBool32                           shaderDenormFlushToZeroFloat16;+    VkBool32                           shaderDenormFlushToZeroFloat32;+    VkBool32                           shaderDenormFlushToZeroFloat64;+    VkBool32                           shaderRoundingModeRTEFloat16;+    VkBool32                           shaderRoundingModeRTEFloat32;+    VkBool32                           shaderRoundingModeRTEFloat64;+    VkBool32                           shaderRoundingModeRTZFloat16;+    VkBool32                           shaderRoundingModeRTZFloat32;+    VkBool32                           shaderRoundingModeRTZFloat64;+} VkPhysicalDeviceFloatControlsProperties;++typedef struct VkPhysicalDeviceHostQueryResetFeatures {+    VkStructureType   sType;+    void *         pNext;+    VkBool32                             hostQueryReset;+} VkPhysicalDeviceHostQueryResetFeatures;++typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {+    VkStructureType   sType;+    void *                             pNext;+    VkBool32                 shaderInputAttachmentArrayDynamicIndexing;+    VkBool32                 shaderUniformTexelBufferArrayDynamicIndexing;+    VkBool32                 shaderStorageTexelBufferArrayDynamicIndexing;+    VkBool32                 shaderUniformBufferArrayNonUniformIndexing;+    VkBool32                 shaderSampledImageArrayNonUniformIndexing;+    VkBool32                 shaderStorageBufferArrayNonUniformIndexing;+    VkBool32                 shaderStorageImageArrayNonUniformIndexing;+    VkBool32                 shaderInputAttachmentArrayNonUniformIndexing;+    VkBool32                 shaderUniformTexelBufferArrayNonUniformIndexing;+    VkBool32                 shaderStorageTexelBufferArrayNonUniformIndexing;+    VkBool32                 descriptorBindingUniformBufferUpdateAfterBind;+    VkBool32                 descriptorBindingSampledImageUpdateAfterBind;+    VkBool32                 descriptorBindingStorageImageUpdateAfterBind;+    VkBool32                 descriptorBindingStorageBufferUpdateAfterBind;+    VkBool32                 descriptorBindingUniformTexelBufferUpdateAfterBind;+    VkBool32                 descriptorBindingStorageTexelBufferUpdateAfterBind;+    VkBool32                 descriptorBindingUpdateUnusedWhilePending;+    VkBool32                 descriptorBindingPartiallyBound;+    VkBool32                 descriptorBindingVariableDescriptorCount;+    VkBool32                 runtimeDescriptorArray;+} VkPhysicalDeviceDescriptorIndexingFeatures;++typedef struct VkPhysicalDeviceDescriptorIndexingProperties {+    VkStructureType   sType;+    void *                             pNext;+    uint32_t                 maxUpdateAfterBindDescriptorsInAllPools;+    VkBool32                 shaderUniformBufferArrayNonUniformIndexingNative;+    VkBool32                 shaderSampledImageArrayNonUniformIndexingNative;+    VkBool32                 shaderStorageBufferArrayNonUniformIndexingNative;+    VkBool32                 shaderStorageImageArrayNonUniformIndexingNative;+    VkBool32                 shaderInputAttachmentArrayNonUniformIndexingNative;+    VkBool32                 robustBufferAccessUpdateAfterBind;+    VkBool32                 quadDivergentImplicitLod;+    uint32_t                 maxPerStageDescriptorUpdateAfterBindSamplers;+    uint32_t                 maxPerStageDescriptorUpdateAfterBindUniformBuffers;+    uint32_t                 maxPerStageDescriptorUpdateAfterBindStorageBuffers;+    uint32_t                 maxPerStageDescriptorUpdateAfterBindSampledImages;+    uint32_t                 maxPerStageDescriptorUpdateAfterBindStorageImages;+    uint32_t                 maxPerStageDescriptorUpdateAfterBindInputAttachments;+    uint32_t                 maxPerStageUpdateAfterBindResources;+    uint32_t                 maxDescriptorSetUpdateAfterBindSamplers;+    uint32_t                 maxDescriptorSetUpdateAfterBindUniformBuffers;+    uint32_t                 maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;+    uint32_t                 maxDescriptorSetUpdateAfterBindStorageBuffers;+    uint32_t                 maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;+    uint32_t                 maxDescriptorSetUpdateAfterBindSampledImages;+    uint32_t                 maxDescriptorSetUpdateAfterBindStorageImages;+    uint32_t                 maxDescriptorSetUpdateAfterBindInputAttachments;+} VkPhysicalDeviceDescriptorIndexingProperties;++typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {+    VkStructureType   sType;+    const  void *                                                         pNext;+    uint32_t                                             bindingCount;+    const  VkDescriptorBindingFlags *  pBindingFlags;+} VkDescriptorSetLayoutBindingFlagsCreateInfo;++typedef struct VkAttachmentDescription2 {+    VkStructureType   sType;+    const  void *             pNext;+    VkAttachmentDescriptionFlags   flags;+    VkFormat                                       format;+    VkSampleCountFlagBits                          samples;+    VkAttachmentLoadOp                             loadOp;+    VkAttachmentStoreOp                            storeOp;+    VkAttachmentLoadOp                             stencilLoadOp;+    VkAttachmentStoreOp                            stencilStoreOp;+    VkImageLayout                                  initialLayout;+    VkImageLayout                                  finalLayout;+} VkAttachmentDescription2;++typedef struct VkAttachmentReference2 {+    VkStructureType   sType;+    const  void *  pNext;+    uint32_t                            attachment;+    VkImageLayout                       layout;+    VkImageAspectFlags   aspectMask;+} VkAttachmentReference2;++typedef struct VkSubpassDescription2 {+    VkStructureType   sType;+    const  void *                            pNext;+    VkSubpassDescriptionFlags                     flags;+    VkPipelineBindPoint                                           pipelineBindPoint;+    uint32_t                                                      viewMask;+    uint32_t                                      inputAttachmentCount;+    const  VkAttachmentReference2 *     pInputAttachments;+    uint32_t                                      colorAttachmentCount;+    const  VkAttachmentReference2 *     pColorAttachments;+    const  VkAttachmentReference2 *  pResolveAttachments;+    const  VkAttachmentReference2 *                pDepthStencilAttachment;+    uint32_t                                      preserveAttachmentCount;+    const  uint32_t *                pPreserveAttachments;+} VkSubpassDescription2;++typedef struct VkSubpassDependency2 {+    VkStructureType   sType;+    const  void *  pNext;+    uint32_t                            srcSubpass;+    uint32_t                            dstSubpass;+    VkPipelineStageFlags   srcStageMask;+    VkPipelineStageFlags   dstStageMask;+    VkAccessFlags       srcAccessMask;+    VkAccessFlags       dstAccessMask;+    VkDependencyFlags   dependencyFlags;+    int32_t                             viewOffset;+} VkSubpassDependency2;++typedef struct VkRenderPassCreateInfo2 {+    VkStructureType   sType;+    const  void *                                               pNext;+    VkRenderPassCreateFlags                    flags;+    uint32_t                                   attachmentCount;+    const  VkAttachmentDescription2 *     pAttachments;+    uint32_t                                                   subpassCount;+    const  VkSubpassDescription2 *           pSubpasses;+    uint32_t                                   dependencyCount;+    const  VkSubpassDependency2 *         pDependencies;+    uint32_t                                   correlatedViewMaskCount;+    const  uint32_t *             pCorrelatedViewMasks;+} VkRenderPassCreateInfo2;++typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {+    VkStructureType   sType;+    void *                   pNext;+    VkBool32                 timelineSemaphore;+} VkPhysicalDeviceTimelineSemaphoreFeatures;++typedef struct VkSemaphoreWaitInfo {+    VkStructureType   sType;+    const  void *             pNext;+    VkSemaphoreWaitFlags   flags;+    uint32_t                 semaphoreCount;+    const  VkSemaphore *  pSemaphores;+    const  uint64_t *     pValues;+} VkSemaphoreWaitInfo;++typedef struct VkPhysicalDevice8BitStorageFeatures {+    VkStructureType   sType;+    void *       pNext;+    VkBool32                           storageBuffer8BitAccess;+    VkBool32                           uniformAndStorageBuffer8BitAccess;+    VkBool32                           storagePushConstant8;+} VkPhysicalDevice8BitStorageFeatures;++typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {+    VkStructureType   sType;+    void *       pNext;+    VkBool32                           vulkanMemoryModel;+    VkBool32                           vulkanMemoryModelDeviceScope;+    VkBool32                           vulkanMemoryModelAvailabilityVisibilityChains;+} VkPhysicalDeviceVulkanMemoryModelFeatures;++typedef struct VkPhysicalDeviceShaderAtomicInt64Features {+    VkStructureType   sType;+    void *                                pNext;+    VkBool32                              shaderBufferInt64Atomics;+    VkBool32                              shaderSharedInt64Atomics;+} VkPhysicalDeviceShaderAtomicInt64Features;++typedef struct VkPhysicalDeviceDepthStencilResolveProperties {+    VkStructureType   sType;+    void *                                 pNext;+    VkResolveModeFlags                     supportedDepthResolveModes;+    VkResolveModeFlags                     supportedStencilResolveModes;+    VkBool32                               independentResolveNone;+    VkBool32                               independentResolve;+} VkPhysicalDeviceDepthStencilResolveProperties;++typedef struct VkSubpassDescriptionDepthStencilResolve {+    VkStructureType   sType;+    const  void *                               pNext;+    VkResolveModeFlagBits                depthResolveMode;+    VkResolveModeFlagBits                stencilResolveMode;+    const  VkAttachmentReference2 *             pDepthStencilResolveAttachment;+} VkSubpassDescriptionDepthStencilResolve;++typedef struct VkImageStencilUsageCreateInfo {+    VkStructureType   sType;+    const  void *  pNext;+    VkImageUsageFlags   stencilUsage;+} VkImageStencilUsageCreateInfo;++typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {+    VkStructureType   sType;+    void *                                pNext;+    VkBool32                              scalarBlockLayout;+} VkPhysicalDeviceScalarBlockLayoutFeatures;++typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {+    VkStructureType   sType;+    void *                                pNext;+    VkBool32                              uniformBufferStandardLayout;+} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;++typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {+    VkStructureType   sType;+    void *         pNext;+    VkBool32                             bufferDeviceAddress;+    VkBool32                             bufferDeviceAddressCaptureReplay;+    VkBool32                             bufferDeviceAddressMultiDevice;+} VkPhysicalDeviceBufferDeviceAddressFeatures;++typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {+    VkStructureType   sType;+    void *                                     pNext;+    VkBool32                                   imagelessFramebuffer;+} VkPhysicalDeviceImagelessFramebufferFeatures;++typedef struct VkFramebufferAttachmentImageInfo {+    VkStructureType   sType;+    const  void *                               pNext;+    VkImageCreateFlags         flags;+    VkImageUsageFlags                          usage;+    uint32_t                                   width;+    uint32_t                                   height;+    uint32_t                                   layerCount;+    uint32_t                   viewFormatCount;+    const  VkFormat *     pViewFormats;+} VkFramebufferAttachmentImageInfo;++typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures {+    VkStructureType   sType;+    void *   pNext;+    VkBool32                 textureCompressionASTC_HDR;+} VkPhysicalDeviceTextureCompressionASTCHDRFeatures;++typedef struct VkPipelineCreationFeedback {+    VkPipelineCreationFeedbackFlags       flags;+    uint64_t                              duration;+} VkPipelineCreationFeedback;++typedef struct VkPipelineCreationFeedbackCreateInfo {+    VkStructureType   sType;+    const  void *          pNext;+    VkPipelineCreationFeedback *          pPipelineCreationFeedback;+    uint32_t              pipelineStageCreationFeedbackCount;+    VkPipelineCreationFeedback *  pPipelineStageCreationFeedbacks;+} VkPipelineCreationFeedbackCreateInfo;++typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {+    VkStructureType sType;+    void *     pNext;+    VkBool32                         separateDepthStencilLayouts;+} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;++typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures {+    VkStructureType   sType;+    void *       pNext;+    VkBool32                     shaderDemoteToHelperInvocation;+} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;++typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties {+    VkStructureType   sType;+    void *               pNext;+    VkDeviceSize                         storageTexelBufferOffsetAlignmentBytes;+    VkBool32                           storageTexelBufferOffsetSingleTexelAlignment;+    VkDeviceSize                         uniformTexelBufferOffsetAlignmentBytes;+    VkBool32                           uniformTexelBufferOffsetSingleTexelAlignment;+} VkPhysicalDeviceTexelBufferAlignmentProperties;++typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures {+    VkStructureType   sType;+    void *   pNext;+    VkBool32                 subgroupSizeControl;+    VkBool32                 computeFullSubgroups;+} VkPhysicalDeviceSubgroupSizeControlFeatures;++typedef struct VkPhysicalDeviceSubgroupSizeControlProperties {+    VkStructureType   sType;+    void *                           pNext;+    uint32_t   minSubgroupSize;+    uint32_t   maxSubgroupSize;+    uint32_t   maxComputeWorkgroupSubgroups;+    VkShaderStageFlags           requiredSubgroupSizeStages;+} VkPhysicalDeviceSubgroupSizeControlProperties;++typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures {+    VkStructureType   sType;+    void *  pNext;+    VkBool32                pipelineCreationCacheControl;+} VkPhysicalDevicePipelineCreationCacheControlFeatures;++typedef struct VkPhysicalDeviceVulkan11Features {+    VkStructureType sType;+    void *     pNext;+    VkBool32                           storageBuffer16BitAccess;+    VkBool32                           uniformAndStorageBuffer16BitAccess;+    VkBool32                           storagePushConstant16;+    VkBool32                           storageInputOutput16;+    VkBool32                           multiview;+    VkBool32                           multiviewGeometryShader;+    VkBool32                           multiviewTessellationShader;+    VkBool32                           variablePointersStorageBuffer;+    VkBool32                           variablePointers;+    VkBool32                           protectedMemory;+    VkBool32                           samplerYcbcrConversion;+    VkBool32                           shaderDrawParameters;+} VkPhysicalDeviceVulkan11Features;++typedef struct VkPhysicalDeviceVulkan11Properties {+    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;+    uint32_t                        subgroupSize;+    VkShaderStageFlags              subgroupSupportedStages;+    VkSubgroupFeatureFlags          subgroupSupportedOperations;+    VkBool32                        subgroupQuadOperationsInAllStages;+    VkPointClippingBehavior       pointClippingBehavior;+    uint32_t                           maxMultiviewViewCount;+    uint32_t                           maxMultiviewInstanceIndex;+    VkBool32                      protectedNoFault;+    uint32_t                           maxPerSetDescriptors;+    VkDeviceSize                       maxMemoryAllocationSize;+} VkPhysicalDeviceVulkan11Properties;++typedef struct VkPhysicalDeviceVulkan12Features {+    VkStructureType sType;+    void *     pNext;+    VkBool32                           samplerMirrorClampToEdge;+    VkBool32                           drawIndirectCount;+    VkBool32                           storageBuffer8BitAccess;+    VkBool32                           uniformAndStorageBuffer8BitAccess;+    VkBool32                           storagePushConstant8;+    VkBool32                           shaderBufferInt64Atomics;+    VkBool32                           shaderSharedInt64Atomics;+    VkBool32                           shaderFloat16;+    VkBool32                           shaderInt8;+    VkBool32                           descriptorIndexing;+    VkBool32                           shaderInputAttachmentArrayDynamicIndexing;+    VkBool32                           shaderUniformTexelBufferArrayDynamicIndexing;+    VkBool32                           shaderStorageTexelBufferArrayDynamicIndexing;+    VkBool32                           shaderUniformBufferArrayNonUniformIndexing;+    VkBool32                           shaderSampledImageArrayNonUniformIndexing;+    VkBool32                           shaderStorageBufferArrayNonUniformIndexing;+    VkBool32                           shaderStorageImageArrayNonUniformIndexing;+    VkBool32                           shaderInputAttachmentArrayNonUniformIndexing;+    VkBool32                           shaderUniformTexelBufferArrayNonUniformIndexing;+    VkBool32                           shaderStorageTexelBufferArrayNonUniformIndexing;+    VkBool32                           descriptorBindingUniformBufferUpdateAfterBind;+    VkBool32                           descriptorBindingSampledImageUpdateAfterBind;+    VkBool32                           descriptorBindingStorageImageUpdateAfterBind;+    VkBool32                           descriptorBindingStorageBufferUpdateAfterBind;+    VkBool32                           descriptorBindingUniformTexelBufferUpdateAfterBind;+    VkBool32                           descriptorBindingStorageTexelBufferUpdateAfterBind;+    VkBool32                           descriptorBindingUpdateUnusedWhilePending;+    VkBool32                           descriptorBindingPartiallyBound;+    VkBool32                           descriptorBindingVariableDescriptorCount;+    VkBool32                           runtimeDescriptorArray;+    VkBool32                           samplerFilterMinmax;+    VkBool32                           scalarBlockLayout;+    VkBool32                           imagelessFramebuffer;+    VkBool32                           uniformBufferStandardLayout;+    VkBool32                           shaderSubgroupExtendedTypes;+    VkBool32                           separateDepthStencilLayouts;+    VkBool32                           hostQueryReset;+    VkBool32                           timelineSemaphore;+    VkBool32                           bufferDeviceAddress;+    VkBool32                           bufferDeviceAddressCaptureReplay;+    VkBool32                           bufferDeviceAddressMultiDevice;+    VkBool32                           vulkanMemoryModel;+    VkBool32                           vulkanMemoryModelDeviceScope;+    VkBool32                           vulkanMemoryModelAvailabilityVisibilityChains;+    VkBool32                           shaderOutputViewportIndex;+    VkBool32                           shaderOutputLayer;+    VkBool32                           subgroupBroadcastDynamicId;+} VkPhysicalDeviceVulkan12Features;++typedef struct VkPhysicalDeviceVulkan12Properties {+    VkStructureType sType;+    void *     pNext;+    VkDriverId                         driverID;+    char                               driverName [ VK_MAX_DRIVER_NAME_SIZE ];+    char                               driverInfo [ VK_MAX_DRIVER_INFO_SIZE ];+    VkConformanceVersion               conformanceVersion;+    VkShaderFloatControlsIndependence denormBehaviorIndependence;+    VkShaderFloatControlsIndependence roundingModeIndependence;+    VkBool32                           shaderSignedZeroInfNanPreserveFloat16;+    VkBool32                           shaderSignedZeroInfNanPreserveFloat32;+    VkBool32                           shaderSignedZeroInfNanPreserveFloat64;+    VkBool32                           shaderDenormPreserveFloat16;+    VkBool32                           shaderDenormPreserveFloat32;+    VkBool32                           shaderDenormPreserveFloat64;+    VkBool32                           shaderDenormFlushToZeroFloat16;+    VkBool32                           shaderDenormFlushToZeroFloat32;+    VkBool32                           shaderDenormFlushToZeroFloat64;+    VkBool32                           shaderRoundingModeRTEFloat16;+    VkBool32                           shaderRoundingModeRTEFloat32;+    VkBool32                           shaderRoundingModeRTEFloat64;+    VkBool32                           shaderRoundingModeRTZFloat16;+    VkBool32                           shaderRoundingModeRTZFloat32;+    VkBool32                           shaderRoundingModeRTZFloat64;+    uint32_t                           maxUpdateAfterBindDescriptorsInAllPools;+    VkBool32                           shaderUniformBufferArrayNonUniformIndexingNative;+    VkBool32                           shaderSampledImageArrayNonUniformIndexingNative;+    VkBool32                           shaderStorageBufferArrayNonUniformIndexingNative;+    VkBool32                           shaderStorageImageArrayNonUniformIndexingNative;+    VkBool32                           shaderInputAttachmentArrayNonUniformIndexingNative;+    VkBool32                           robustBufferAccessUpdateAfterBind;+    VkBool32                           quadDivergentImplicitLod;+    uint32_t                           maxPerStageDescriptorUpdateAfterBindSamplers;+    uint32_t                           maxPerStageDescriptorUpdateAfterBindUniformBuffers;+    uint32_t                           maxPerStageDescriptorUpdateAfterBindStorageBuffers;+    uint32_t                           maxPerStageDescriptorUpdateAfterBindSampledImages;+    uint32_t                           maxPerStageDescriptorUpdateAfterBindStorageImages;+    uint32_t                           maxPerStageDescriptorUpdateAfterBindInputAttachments;+    uint32_t                           maxPerStageUpdateAfterBindResources;+    uint32_t                           maxDescriptorSetUpdateAfterBindSamplers;+    uint32_t                           maxDescriptorSetUpdateAfterBindUniformBuffers;+    uint32_t                           maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;+    uint32_t                           maxDescriptorSetUpdateAfterBindStorageBuffers;+    uint32_t                           maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;+    uint32_t                           maxDescriptorSetUpdateAfterBindSampledImages;+    uint32_t                           maxDescriptorSetUpdateAfterBindStorageImages;+    uint32_t                           maxDescriptorSetUpdateAfterBindInputAttachments;+    VkResolveModeFlags                 supportedDepthResolveModes;+    VkResolveModeFlags                 supportedStencilResolveModes;+    VkBool32                           independentResolveNone;+    VkBool32                           independentResolve;+    VkBool32                           filterMinmaxSingleComponentFormats;+    VkBool32                           filterMinmaxImageComponentMapping;+    uint64_t                           maxTimelineSemaphoreValueDifference;+    VkSampleCountFlags   framebufferIntegerColorSampleCounts;+} VkPhysicalDeviceVulkan12Properties;++typedef struct VkPhysicalDeviceVulkan13Features {+    VkStructureType sType;+    void *             pNext;+    VkBool32                           robustImageAccess;+    VkBool32                           inlineUniformBlock;+    VkBool32                           descriptorBindingInlineUniformBlockUpdateAfterBind;+    VkBool32                           pipelineCreationCacheControl;+    VkBool32                           privateData;+    VkBool32                           shaderDemoteToHelperInvocation;+    VkBool32                           shaderTerminateInvocation;+    VkBool32                           subgroupSizeControl;+    VkBool32                           computeFullSubgroups;+    VkBool32                           synchronization2;+    VkBool32                           textureCompressionASTC_HDR;+    VkBool32                           shaderZeroInitializeWorkgroupMemory;+    VkBool32                           dynamicRendering;+    VkBool32                           shaderIntegerDotProduct;+    VkBool32                           maintenance4;+} VkPhysicalDeviceVulkan13Features;++typedef struct VkPhysicalDeviceVulkan13Properties {+    VkStructureType sType;+    void *                           pNext;+    uint32_t   minSubgroupSize;+    uint32_t   maxSubgroupSize;+    uint32_t   maxComputeWorkgroupSubgroups;+    VkShaderStageFlags           requiredSubgroupSizeStages;+    uint32_t                         maxInlineUniformBlockSize;+    uint32_t                         maxPerStageDescriptorInlineUniformBlocks;+    uint32_t                         maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;+    uint32_t                         maxDescriptorSetInlineUniformBlocks;+    uint32_t                         maxDescriptorSetUpdateAfterBindInlineUniformBlocks;+    uint32_t                         maxInlineUniformTotalSize;+    VkBool32                     integerDotProduct8BitUnsignedAccelerated;+    VkBool32                     integerDotProduct8BitSignedAccelerated;+    VkBool32                     integerDotProduct8BitMixedSignednessAccelerated;+    VkBool32                     integerDotProduct4x8BitPackedUnsignedAccelerated;+    VkBool32                     integerDotProduct4x8BitPackedSignedAccelerated;+    VkBool32                     integerDotProduct4x8BitPackedMixedSignednessAccelerated;+    VkBool32                     integerDotProduct16BitUnsignedAccelerated;+    VkBool32                     integerDotProduct16BitSignedAccelerated;+    VkBool32                     integerDotProduct16BitMixedSignednessAccelerated;+    VkBool32                     integerDotProduct32BitUnsignedAccelerated;+    VkBool32                     integerDotProduct32BitSignedAccelerated;+    VkBool32                     integerDotProduct32BitMixedSignednessAccelerated;+    VkBool32                     integerDotProduct64BitUnsignedAccelerated;+    VkBool32                     integerDotProduct64BitSignedAccelerated;+    VkBool32                     integerDotProduct64BitMixedSignednessAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating8BitSignedAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating16BitSignedAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating32BitSignedAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating64BitSignedAccelerated;+    VkBool32                     integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;+    VkDeviceSize                  storageTexelBufferOffsetAlignmentBytes;+    VkBool32                    storageTexelBufferOffsetSingleTexelAlignment;+    VkDeviceSize                  uniformTexelBufferOffsetAlignmentBytes;+    VkBool32                    uniformTexelBufferOffsetSingleTexelAlignment;+    VkDeviceSize                     maxBufferSize;+} VkPhysicalDeviceVulkan13Properties;++typedef struct VkPhysicalDeviceToolProperties {+    VkStructureType   sType;+    void *  pNext;+    char                    name [ VK_MAX_EXTENSION_NAME_SIZE ];+    char                    version [ VK_MAX_EXTENSION_NAME_SIZE ];+    VkToolPurposeFlags      purposes;+    char                    description [ VK_MAX_DESCRIPTION_SIZE ];+    char                    layer [ VK_MAX_EXTENSION_NAME_SIZE ];+} VkPhysicalDeviceToolProperties;++typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {+    VkStructureType   sType;+    void *           pNext;+    VkBool32         shaderZeroInitializeWorkgroupMemory;+} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;++typedef struct VkPhysicalDeviceImageRobustnessFeatures {+    VkStructureType   sType;+    void *               pNext;+    VkBool32                             robustImageAccess;+} VkPhysicalDeviceImageRobustnessFeatures;++typedef struct VkBufferCopy2 {+    VkStructureType   sType;+    const  void *         pNext;+    VkDeviceSize                         srcOffset;+    VkDeviceSize                         dstOffset;+    VkDeviceSize   size;+} VkBufferCopy2;++typedef struct VkImageCopy2 {+    VkStructureType   sType;+    const  void *         pNext;+    VkImageSubresourceLayers             srcSubresource;+    VkOffset3D                           srcOffset;+    VkImageSubresourceLayers             dstSubresource;+    VkOffset3D                           dstOffset;+    VkExtent3D                           extent;+} VkImageCopy2;++typedef struct VkImageBlit2 {+    VkStructureType   sType;+    const  void *         pNext;+    VkImageSubresourceLayers             srcSubresource;+    VkOffset3D                           srcOffsets [2];+    VkImageSubresourceLayers             dstSubresource;+    VkOffset3D                           dstOffsets [2];+} VkImageBlit2;++typedef struct VkBufferImageCopy2 {+    VkStructureType   sType;+    const  void *         pNext;+    VkDeviceSize                         bufferOffset;+    uint32_t                             bufferRowLength;+    uint32_t                             bufferImageHeight;+    VkImageSubresourceLayers             imageSubresource;+    VkOffset3D                           imageOffset;+    VkExtent3D                           imageExtent;+} VkBufferImageCopy2;++typedef struct VkImageResolve2 {+    VkStructureType   sType;+    const  void *         pNext;+    VkImageSubresourceLayers             srcSubresource;+    VkOffset3D                           srcOffset;+    VkImageSubresourceLayers             dstSubresource;+    VkOffset3D                           dstOffset;+    VkExtent3D                           extent;+} VkImageResolve2;++typedef struct VkCopyBufferInfo2 {+    VkStructureType   sType;+    const  void *         pNext;+    VkBuffer                             srcBuffer;+    VkBuffer                             dstBuffer;+    uint32_t                             regionCount;+    const  VkBufferCopy2 *  pRegions;+} VkCopyBufferInfo2;++typedef struct VkCopyImageInfo2 {+    VkStructureType   sType;+    const  void *         pNext;+    VkImage                              srcImage;+    VkImageLayout                        srcImageLayout;+    VkImage                              dstImage;+    VkImageLayout                        dstImageLayout;+    uint32_t                             regionCount;+    const  VkImageCopy2 *  pRegions;+} VkCopyImageInfo2;++typedef struct VkBlitImageInfo2 {+    VkStructureType   sType;+    const  void *             pNext;+    VkImage                                  srcImage;+    VkImageLayout                            srcImageLayout;+    VkImage                                  dstImage;+    VkImageLayout                            dstImageLayout;+    uint32_t                                 regionCount;+    const  VkImageBlit2 *   pRegions;+    VkFilter                                 filter;+} VkBlitImageInfo2;++typedef struct VkCopyBufferToImageInfo2 {+    VkStructureType   sType;+    const  void *                  pNext;+    VkBuffer                                      srcBuffer;+    VkImage                                       dstImage;+    VkImageLayout                                 dstImageLayout;+    uint32_t                                      regionCount;+    const  VkBufferImageCopy2 *  pRegions;+} VkCopyBufferToImageInfo2;++typedef struct VkCopyImageToBufferInfo2 {+    VkStructureType   sType;+    const  void *                    pNext;+    VkImage                                         srcImage;+    VkImageLayout                                   srcImageLayout;+    VkBuffer                                        dstBuffer;+    uint32_t                                        regionCount;+    const  VkBufferImageCopy2 *    pRegions;+} VkCopyImageToBufferInfo2;++typedef struct VkResolveImageInfo2 {+    VkStructureType   sType;+    const  void *                 pNext;+    VkImage                                      srcImage;+    VkImageLayout                                srcImageLayout;+    VkImage                                      dstImage;+    VkImageLayout                                dstImageLayout;+    uint32_t                                     regionCount;+    const  VkImageResolve2 *    pRegions;+} VkResolveImageInfo2;++typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures {+    VkStructureType sType;+    void *     pNext;+    VkBool32                                         shaderTerminateInvocation;+} VkPhysicalDeviceShaderTerminateInvocationFeatures;++typedef struct VkMemoryBarrier2 {+    VkStructureType   sType;+    const  void *                             pNext;+    VkPipelineStageFlags2    srcStageMask;+    VkAccessFlags2           srcAccessMask;+    VkPipelineStageFlags2    dstStageMask;+    VkAccessFlags2           dstAccessMask;+} VkMemoryBarrier2;++typedef struct VkImageMemoryBarrier2 {+    VkStructureType   sType;+    const  void *                             pNext;+    VkPipelineStageFlags2    srcStageMask;+    VkAccessFlags2           srcAccessMask;+    VkPipelineStageFlags2    dstStageMask;+    VkAccessFlags2           dstAccessMask;+    VkImageLayout                            oldLayout;+    VkImageLayout                            newLayout;+    uint32_t                                 srcQueueFamilyIndex;+    uint32_t                                 dstQueueFamilyIndex;+    VkImage                                  image;+    VkImageSubresourceRange                  subresourceRange;+} VkImageMemoryBarrier2;++typedef struct VkBufferMemoryBarrier2 {+    VkStructureType   sType;+    const  void *                             pNext;+    VkPipelineStageFlags2    srcStageMask;+    VkAccessFlags2           srcAccessMask;+    VkPipelineStageFlags2    dstStageMask;+    VkAccessFlags2           dstAccessMask;+    uint32_t                                 srcQueueFamilyIndex;+    uint32_t                                 dstQueueFamilyIndex;+    VkBuffer                                 buffer;+    VkDeviceSize                             offset;+    VkDeviceSize                             size;+} VkBufferMemoryBarrier2;++typedef struct VkDependencyInfo {+    VkStructureType   sType;+    const  void *                                                   pNext;+    VkDependencyFlags                              dependencyFlags;+    uint32_t                                       memoryBarrierCount;+    const  VkMemoryBarrier2 *              pMemoryBarriers;+    uint32_t                                       bufferMemoryBarrierCount;+    const  VkBufferMemoryBarrier2 *  pBufferMemoryBarriers;+    uint32_t                                       imageMemoryBarrierCount;+    const  VkImageMemoryBarrier2 *    pImageMemoryBarriers;+} VkDependencyInfo;++typedef struct VkSemaphoreSubmitInfo {+    VkStructureType             sType;+    const  void *                                                                 pNext;+    VkSemaphore                                                                  semaphore;+    uint64_t                                                                     value;+    VkPipelineStageFlags2                                        stageMask;+    uint32_t                                                                     deviceIndex;+} VkSemaphoreSubmitInfo;++typedef struct VkSubmitInfo2 {+    VkStructureType                     sType;+    const  void *                                                                 pNext;+    VkSubmitFlags                                                flags;+    uint32_t                                                     waitSemaphoreInfoCount;+    const  VkSemaphoreSubmitInfo *                   pWaitSemaphoreInfos;+    uint32_t                                                     commandBufferInfoCount;+    const  VkCommandBufferSubmitInfo *               pCommandBufferInfos;+    uint32_t                                                     signalSemaphoreInfoCount;+    const  VkSemaphoreSubmitInfo *                 pSignalSemaphoreInfos;+} VkSubmitInfo2;++typedef struct VkPhysicalDeviceSynchronization2Features {+    VkStructureType   sType;+    void *         pNext;+    VkBool32                             synchronization2;+} VkPhysicalDeviceSynchronization2Features;++typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures {+    VkStructureType   sType;+    void *                pNext;+    VkBool32                              shaderIntegerDotProduct;+} VkPhysicalDeviceShaderIntegerDotProductFeatures;++typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties {+    VkStructureType   sType;+    void *                pNext;+    VkBool32          integerDotProduct8BitUnsignedAccelerated;+    VkBool32          integerDotProduct8BitSignedAccelerated;+    VkBool32          integerDotProduct8BitMixedSignednessAccelerated;+    VkBool32          integerDotProduct4x8BitPackedUnsignedAccelerated;+    VkBool32          integerDotProduct4x8BitPackedSignedAccelerated;+    VkBool32          integerDotProduct4x8BitPackedMixedSignednessAccelerated;+    VkBool32          integerDotProduct16BitUnsignedAccelerated;+    VkBool32          integerDotProduct16BitSignedAccelerated;+    VkBool32          integerDotProduct16BitMixedSignednessAccelerated;+    VkBool32          integerDotProduct32BitUnsignedAccelerated;+    VkBool32          integerDotProduct32BitSignedAccelerated;+    VkBool32          integerDotProduct32BitMixedSignednessAccelerated;+    VkBool32          integerDotProduct64BitUnsignedAccelerated;+    VkBool32          integerDotProduct64BitSignedAccelerated;+    VkBool32          integerDotProduct64BitMixedSignednessAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating8BitSignedAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating16BitSignedAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating32BitSignedAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating64BitSignedAccelerated;+    VkBool32          integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;+} VkPhysicalDeviceShaderIntegerDotProductProperties;++typedef struct VkFormatProperties3 {+    VkStructureType   sType;+    void *                             pNext;+    VkFormatFeatureFlags2              linearTilingFeatures;+    VkFormatFeatureFlags2              optimalTilingFeatures;+    VkFormatFeatureFlags2              bufferFeatures;+} VkFormatProperties3;++typedef struct VkRenderingInfo {+    VkStructureType                    sType;+    const  void *                                                 pNext;+    VkRenderingFlags                                             flags;+    VkRect2D                                                                     renderArea;+    uint32_t                                                                     layerCount;+    uint32_t                                                                     viewMask;+    uint32_t                                                     colorAttachmentCount;+    const  VkRenderingAttachmentInfo *                 pColorAttachments;+    const  VkRenderingAttachmentInfo *                            pDepthAttachment;+    const  VkRenderingAttachmentInfo *                            pStencilAttachment;+} VkRenderingInfo;++typedef struct VkPhysicalDeviceDynamicRenderingFeatures {+    VkStructureType   sType;+    void *                                 pNext;+    VkBool32                                                                     dynamicRendering;+} VkPhysicalDeviceDynamicRenderingFeatures;++typedef struct VkCommandBufferInheritanceRenderingInfo {+    VkStructureType   sType;+    const  void *                                                 pNext;+    VkRenderingFlags                                             flags;+    uint32_t                                                                     viewMask;+    uint32_t                                                     colorAttachmentCount;+    const  VkFormat *                                  pColorAttachmentFormats;+    VkFormat                                                                     depthAttachmentFormat;+    VkFormat                                                                     stencilAttachmentFormat;+    VkSampleCountFlagBits                                        rasterizationSamples;+} VkCommandBufferInheritanceRenderingInfo;++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;++typedef struct VkFramebufferAttachmentsCreateInfo {+    VkStructureType   sType;+    const  void *                               pNext;+    uint32_t                   attachmentImageInfoCount;+    const  VkFramebufferAttachmentImageInfo *  pAttachmentImageInfos;+} VkFramebufferAttachmentsCreateInfo;++++#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_VERSION_1_2 1+GLAD_API_CALL int GLAD_VK_VERSION_1_2;+#define VK_VERSION_1_3 1+GLAD_API_CALL int GLAD_VK_VERSION_1_3;+#define VK_EXT_debug_report 1+GLAD_API_CALL int GLAD_VK_EXT_debug_report;+#define VK_KHR_portability_enumeration 1+GLAD_API_CALL int GLAD_VK_KHR_portability_enumeration;+#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_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo * pRenderPassBegin, const VkSubpassBeginInfo * pSubpassBeginInfo);+typedef void (GLAD_API_PTR *PFN_vkCmdBeginRendering)(VkCommandBuffer commandBuffer, const VkRenderingInfo * pRenderingInfo);+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_vkCmdBindVertexBuffers2)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer * pBuffers, const VkDeviceSize * pOffsets, const VkDeviceSize * pSizes, const VkDeviceSize * pStrides);+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_vkCmdBlitImage2)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2 * pBlitImageInfo);+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_vkCmdCopyBuffer2)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2 * pCopyBufferInfo);+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_vkCmdCopyBufferToImage2)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo);+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_vkCmdCopyImage2)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2 * pCopyImageInfo);+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_vkCmdCopyImageToBuffer2)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo);+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_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, 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_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, 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_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo * pSubpassEndInfo);+typedef void (GLAD_API_PTR *PFN_vkCmdEndRendering)(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_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo * pSubpassBeginInfo, const VkSubpassEndInfo * pSubpassEndInfo);+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_vkCmdPipelineBarrier2)(VkCommandBuffer commandBuffer, const VkDependencyInfo * pDependencyInfo);+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_vkCmdResetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 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_vkCmdResolveImage2)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2 * pResolveImageInfo);+typedef void (GLAD_API_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants [4]);+typedef void (GLAD_API_PTR *PFN_vkCmdSetCullMode)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);+typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);+typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBiasEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);+typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);+typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthBoundsTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);+typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthCompareOp)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);+typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);+typedef void (GLAD_API_PTR *PFN_vkCmdSetDepthWriteEnable)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);+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_vkCmdSetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo * pDependencyInfo);+typedef void (GLAD_API_PTR *PFN_vkCmdSetFrontFace)(VkCommandBuffer commandBuffer, VkFrontFace frontFace);+typedef void (GLAD_API_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);+typedef void (GLAD_API_PTR *PFN_vkCmdSetPrimitiveRestartEnable)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable);+typedef void (GLAD_API_PTR *PFN_vkCmdSetPrimitiveTopology)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);+typedef void (GLAD_API_PTR *PFN_vkCmdSetRasterizerDiscardEnable)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);+typedef void (GLAD_API_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D * pScissors);+typedef void (GLAD_API_PTR *PFN_vkCmdSetScissorWithCount)(VkCommandBuffer commandBuffer, 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_vkCmdSetStencilOp)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);+typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);+typedef void (GLAD_API_PTR *PFN_vkCmdSetStencilTestEnable)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);+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_vkCmdSetViewportWithCount)(VkCommandBuffer commandBuffer, 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_vkCmdWaitEvents2)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent * pEvents, const VkDependencyInfo * pDependencyInfos);+typedef void (GLAD_API_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);+typedef void (GLAD_API_PTR *PFN_vkCmdWriteTimestamp2)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, 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_vkCreatePrivateDataSlot)(VkDevice device, const VkPrivateDataSlotCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkPrivateDataSlot * pPrivateDataSlot);+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_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2 * 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_vkDestroyPrivateDataSlot)(VkDevice device, VkPrivateDataSlot privateDataSlot, 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 VkDeviceAddress (GLAD_API_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo * pInfo);+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 uint64_t (GLAD_API_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo * pInfo);+typedef void (GLAD_API_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo * pCreateInfo, VkDescriptorSetLayoutSupport * pSupport);+typedef void (GLAD_API_PTR *PFN_vkGetDeviceBufferMemoryRequirements)(VkDevice device, const VkDeviceBufferMemoryRequirements * pInfo, VkMemoryRequirements2 * pMemoryRequirements);+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_vkGetDeviceImageMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements * pInfo, VkMemoryRequirements2 * pMemoryRequirements);+typedef void (GLAD_API_PTR *PFN_vkGetDeviceImageSparseMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements * pInfo, uint32_t * pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements);+typedef void (GLAD_API_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize * pCommittedMemoryInBytes);+typedef uint64_t (GLAD_API_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo);+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_vkGetPhysicalDeviceToolProperties)(VkPhysicalDevice physicalDevice, uint32_t * pToolCount, VkPhysicalDeviceToolProperties * pToolProperties);+typedef VkResult (GLAD_API_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t * pDataSize, void * pData);+typedef void (GLAD_API_PTR *PFN_vkGetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t * 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_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t * pValue);+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_vkQueueSubmit2)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2 * 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 void (GLAD_API_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);+typedef VkResult (GLAD_API_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);+typedef VkResult (GLAD_API_PTR *PFN_vkSetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data);+typedef VkResult (GLAD_API_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo * pSignalInfo);+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);+typedef VkResult (GLAD_API_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo * pWaitInfo, 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_vkCmdBeginRenderPass2 glad_vkCmdBeginRenderPass2;+#define vkCmdBeginRenderPass2 glad_vkCmdBeginRenderPass2+GLAD_API_CALL PFN_vkCmdBeginRendering glad_vkCmdBeginRendering;+#define vkCmdBeginRendering glad_vkCmdBeginRendering+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_vkCmdBindVertexBuffers2 glad_vkCmdBindVertexBuffers2;+#define vkCmdBindVertexBuffers2 glad_vkCmdBindVertexBuffers2+GLAD_API_CALL PFN_vkCmdBlitImage glad_vkCmdBlitImage;+#define vkCmdBlitImage glad_vkCmdBlitImage+GLAD_API_CALL PFN_vkCmdBlitImage2 glad_vkCmdBlitImage2;+#define vkCmdBlitImage2 glad_vkCmdBlitImage2+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_vkCmdCopyBuffer2 glad_vkCmdCopyBuffer2;+#define vkCmdCopyBuffer2 glad_vkCmdCopyBuffer2+GLAD_API_CALL PFN_vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage;+#define vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage+GLAD_API_CALL PFN_vkCmdCopyBufferToImage2 glad_vkCmdCopyBufferToImage2;+#define vkCmdCopyBufferToImage2 glad_vkCmdCopyBufferToImage2+GLAD_API_CALL PFN_vkCmdCopyImage glad_vkCmdCopyImage;+#define vkCmdCopyImage glad_vkCmdCopyImage+GLAD_API_CALL PFN_vkCmdCopyImage2 glad_vkCmdCopyImage2;+#define vkCmdCopyImage2 glad_vkCmdCopyImage2+GLAD_API_CALL PFN_vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer;+#define vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer+GLAD_API_CALL PFN_vkCmdCopyImageToBuffer2 glad_vkCmdCopyImageToBuffer2;+#define vkCmdCopyImageToBuffer2 glad_vkCmdCopyImageToBuffer2+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_vkCmdDrawIndexedIndirectCount glad_vkCmdDrawIndexedIndirectCount;+#define vkCmdDrawIndexedIndirectCount glad_vkCmdDrawIndexedIndirectCount+GLAD_API_CALL PFN_vkCmdDrawIndirect glad_vkCmdDrawIndirect;+#define vkCmdDrawIndirect glad_vkCmdDrawIndirect+GLAD_API_CALL PFN_vkCmdDrawIndirectCount glad_vkCmdDrawIndirectCount;+#define vkCmdDrawIndirectCount glad_vkCmdDrawIndirectCount+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_vkCmdEndRenderPass2 glad_vkCmdEndRenderPass2;+#define vkCmdEndRenderPass2 glad_vkCmdEndRenderPass2+GLAD_API_CALL PFN_vkCmdEndRendering glad_vkCmdEndRendering;+#define vkCmdEndRendering glad_vkCmdEndRendering+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_vkCmdNextSubpass2 glad_vkCmdNextSubpass2;+#define vkCmdNextSubpass2 glad_vkCmdNextSubpass2+GLAD_API_CALL PFN_vkCmdPipelineBarrier glad_vkCmdPipelineBarrier;+#define vkCmdPipelineBarrier glad_vkCmdPipelineBarrier+GLAD_API_CALL PFN_vkCmdPipelineBarrier2 glad_vkCmdPipelineBarrier2;+#define vkCmdPipelineBarrier2 glad_vkCmdPipelineBarrier2+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_vkCmdResetEvent2 glad_vkCmdResetEvent2;+#define vkCmdResetEvent2 glad_vkCmdResetEvent2+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_vkCmdResolveImage2 glad_vkCmdResolveImage2;+#define vkCmdResolveImage2 glad_vkCmdResolveImage2+GLAD_API_CALL PFN_vkCmdSetBlendConstants glad_vkCmdSetBlendConstants;+#define vkCmdSetBlendConstants glad_vkCmdSetBlendConstants+GLAD_API_CALL PFN_vkCmdSetCullMode glad_vkCmdSetCullMode;+#define vkCmdSetCullMode glad_vkCmdSetCullMode+GLAD_API_CALL PFN_vkCmdSetDepthBias glad_vkCmdSetDepthBias;+#define vkCmdSetDepthBias glad_vkCmdSetDepthBias+GLAD_API_CALL PFN_vkCmdSetDepthBiasEnable glad_vkCmdSetDepthBiasEnable;+#define vkCmdSetDepthBiasEnable glad_vkCmdSetDepthBiasEnable+GLAD_API_CALL PFN_vkCmdSetDepthBounds glad_vkCmdSetDepthBounds;+#define vkCmdSetDepthBounds glad_vkCmdSetDepthBounds+GLAD_API_CALL PFN_vkCmdSetDepthBoundsTestEnable glad_vkCmdSetDepthBoundsTestEnable;+#define vkCmdSetDepthBoundsTestEnable glad_vkCmdSetDepthBoundsTestEnable+GLAD_API_CALL PFN_vkCmdSetDepthCompareOp glad_vkCmdSetDepthCompareOp;+#define vkCmdSetDepthCompareOp glad_vkCmdSetDepthCompareOp+GLAD_API_CALL PFN_vkCmdSetDepthTestEnable glad_vkCmdSetDepthTestEnable;+#define vkCmdSetDepthTestEnable glad_vkCmdSetDepthTestEnable+GLAD_API_CALL PFN_vkCmdSetDepthWriteEnable glad_vkCmdSetDepthWriteEnable;+#define vkCmdSetDepthWriteEnable glad_vkCmdSetDepthWriteEnable+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_vkCmdSetEvent2 glad_vkCmdSetEvent2;+#define vkCmdSetEvent2 glad_vkCmdSetEvent2+GLAD_API_CALL PFN_vkCmdSetFrontFace glad_vkCmdSetFrontFace;+#define vkCmdSetFrontFace glad_vkCmdSetFrontFace+GLAD_API_CALL PFN_vkCmdSetLineWidth glad_vkCmdSetLineWidth;+#define vkCmdSetLineWidth glad_vkCmdSetLineWidth+GLAD_API_CALL PFN_vkCmdSetPrimitiveRestartEnable glad_vkCmdSetPrimitiveRestartEnable;+#define vkCmdSetPrimitiveRestartEnable glad_vkCmdSetPrimitiveRestartEnable+GLAD_API_CALL PFN_vkCmdSetPrimitiveTopology glad_vkCmdSetPrimitiveTopology;+#define vkCmdSetPrimitiveTopology glad_vkCmdSetPrimitiveTopology+GLAD_API_CALL PFN_vkCmdSetRasterizerDiscardEnable glad_vkCmdSetRasterizerDiscardEnable;+#define vkCmdSetRasterizerDiscardEnable glad_vkCmdSetRasterizerDiscardEnable+GLAD_API_CALL PFN_vkCmdSetScissor glad_vkCmdSetScissor;+#define vkCmdSetScissor glad_vkCmdSetScissor+GLAD_API_CALL PFN_vkCmdSetScissorWithCount glad_vkCmdSetScissorWithCount;+#define vkCmdSetScissorWithCount glad_vkCmdSetScissorWithCount+GLAD_API_CALL PFN_vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask;+#define vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask+GLAD_API_CALL PFN_vkCmdSetStencilOp glad_vkCmdSetStencilOp;+#define vkCmdSetStencilOp glad_vkCmdSetStencilOp+GLAD_API_CALL PFN_vkCmdSetStencilReference glad_vkCmdSetStencilReference;+#define vkCmdSetStencilReference glad_vkCmdSetStencilReference+GLAD_API_CALL PFN_vkCmdSetStencilTestEnable glad_vkCmdSetStencilTestEnable;+#define vkCmdSetStencilTestEnable glad_vkCmdSetStencilTestEnable+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_vkCmdSetViewportWithCount glad_vkCmdSetViewportWithCount;+#define vkCmdSetViewportWithCount glad_vkCmdSetViewportWithCount+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_vkCmdWaitEvents2 glad_vkCmdWaitEvents2;+#define vkCmdWaitEvents2 glad_vkCmdWaitEvents2+GLAD_API_CALL PFN_vkCmdWriteTimestamp glad_vkCmdWriteTimestamp;+#define vkCmdWriteTimestamp glad_vkCmdWriteTimestamp+GLAD_API_CALL PFN_vkCmdWriteTimestamp2 glad_vkCmdWriteTimestamp2;+#define vkCmdWriteTimestamp2 glad_vkCmdWriteTimestamp2+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_vkCreatePrivateDataSlot glad_vkCreatePrivateDataSlot;+#define vkCreatePrivateDataSlot glad_vkCreatePrivateDataSlot+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_vkCreateRenderPass2 glad_vkCreateRenderPass2;+#define vkCreateRenderPass2 glad_vkCreateRenderPass2+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_vkDestroyPrivateDataSlot glad_vkDestroyPrivateDataSlot;+#define vkDestroyPrivateDataSlot glad_vkDestroyPrivateDataSlot+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_vkGetBufferDeviceAddress glad_vkGetBufferDeviceAddress;+#define vkGetBufferDeviceAddress glad_vkGetBufferDeviceAddress+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_vkGetBufferOpaqueCaptureAddress glad_vkGetBufferOpaqueCaptureAddress;+#define vkGetBufferOpaqueCaptureAddress glad_vkGetBufferOpaqueCaptureAddress+GLAD_API_CALL PFN_vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport;+#define vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport+GLAD_API_CALL PFN_vkGetDeviceBufferMemoryRequirements glad_vkGetDeviceBufferMemoryRequirements;+#define vkGetDeviceBufferMemoryRequirements glad_vkGetDeviceBufferMemoryRequirements+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_vkGetDeviceImageMemoryRequirements glad_vkGetDeviceImageMemoryRequirements;+#define vkGetDeviceImageMemoryRequirements glad_vkGetDeviceImageMemoryRequirements+GLAD_API_CALL PFN_vkGetDeviceImageSparseMemoryRequirements glad_vkGetDeviceImageSparseMemoryRequirements;+#define vkGetDeviceImageSparseMemoryRequirements glad_vkGetDeviceImageSparseMemoryRequirements+GLAD_API_CALL PFN_vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment;+#define vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment+GLAD_API_CALL PFN_vkGetDeviceMemoryOpaqueCaptureAddress glad_vkGetDeviceMemoryOpaqueCaptureAddress;+#define vkGetDeviceMemoryOpaqueCaptureAddress glad_vkGetDeviceMemoryOpaqueCaptureAddress+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_vkGetPhysicalDeviceToolProperties glad_vkGetPhysicalDeviceToolProperties;+#define vkGetPhysicalDeviceToolProperties glad_vkGetPhysicalDeviceToolProperties+GLAD_API_CALL PFN_vkGetPipelineCacheData glad_vkGetPipelineCacheData;+#define vkGetPipelineCacheData glad_vkGetPipelineCacheData+GLAD_API_CALL PFN_vkGetPrivateData glad_vkGetPrivateData;+#define vkGetPrivateData glad_vkGetPrivateData+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_vkGetSemaphoreCounterValue glad_vkGetSemaphoreCounterValue;+#define vkGetSemaphoreCounterValue glad_vkGetSemaphoreCounterValue+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_vkQueueSubmit2 glad_vkQueueSubmit2;+#define vkQueueSubmit2 glad_vkQueueSubmit2+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_vkResetQueryPool glad_vkResetQueryPool;+#define vkResetQueryPool glad_vkResetQueryPool+GLAD_API_CALL PFN_vkSetEvent glad_vkSetEvent;+#define vkSetEvent glad_vkSetEvent+GLAD_API_CALL PFN_vkSetPrivateData glad_vkSetPrivateData;+#define vkSetPrivateData glad_vkSetPrivateData+GLAD_API_CALL PFN_vkSignalSemaphore glad_vkSignalSemaphore;+#define vkSignalSemaphore glad_vkSignalSemaphore+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 PFN_vkWaitSemaphores glad_vkWaitSemaphores;+#define vkWaitSemaphores glad_vkWaitSemaphores++++++GLAD_API_CALL int gladLoadVulkanUserPtr( VkPhysicalDevice physical_device, GLADuserptrloadfunc load, void *userptr);+GLAD_API_CALL int gladLoadVulkan( VkPhysicalDevice physical_device, GLADloadfunc load);   
glfw/deps/glad_vulkan.c view
@@ -14,10 +14,18 @@  #endif /* GLAD_IMPL_UTIL_C_ */ +#ifdef __cplusplus+extern "C" {+#endif ++ int GLAD_VK_VERSION_1_0 = 0; int GLAD_VK_VERSION_1_1 = 0;+int GLAD_VK_VERSION_1_2 = 0;+int GLAD_VK_VERSION_1_3 = 0; int GLAD_VK_EXT_debug_report = 0;+int GLAD_VK_KHR_portability_enumeration = 0; int GLAD_VK_KHR_surface = 0; int GLAD_VK_KHR_swapchain = 0; @@ -35,18 +43,26 @@ PFN_vkBindImageMemory2 glad_vkBindImageMemory2 = NULL; PFN_vkCmdBeginQuery glad_vkCmdBeginQuery = NULL; PFN_vkCmdBeginRenderPass glad_vkCmdBeginRenderPass = NULL;+PFN_vkCmdBeginRenderPass2 glad_vkCmdBeginRenderPass2 = NULL;+PFN_vkCmdBeginRendering glad_vkCmdBeginRendering = NULL; PFN_vkCmdBindDescriptorSets glad_vkCmdBindDescriptorSets = NULL; PFN_vkCmdBindIndexBuffer glad_vkCmdBindIndexBuffer = NULL; PFN_vkCmdBindPipeline glad_vkCmdBindPipeline = NULL; PFN_vkCmdBindVertexBuffers glad_vkCmdBindVertexBuffers = NULL;+PFN_vkCmdBindVertexBuffers2 glad_vkCmdBindVertexBuffers2 = NULL; PFN_vkCmdBlitImage glad_vkCmdBlitImage = NULL;+PFN_vkCmdBlitImage2 glad_vkCmdBlitImage2 = NULL; PFN_vkCmdClearAttachments glad_vkCmdClearAttachments = NULL; PFN_vkCmdClearColorImage glad_vkCmdClearColorImage = NULL; PFN_vkCmdClearDepthStencilImage glad_vkCmdClearDepthStencilImage = NULL; PFN_vkCmdCopyBuffer glad_vkCmdCopyBuffer = NULL;+PFN_vkCmdCopyBuffer2 glad_vkCmdCopyBuffer2 = NULL; PFN_vkCmdCopyBufferToImage glad_vkCmdCopyBufferToImage = NULL;+PFN_vkCmdCopyBufferToImage2 glad_vkCmdCopyBufferToImage2 = NULL; PFN_vkCmdCopyImage glad_vkCmdCopyImage = NULL;+PFN_vkCmdCopyImage2 glad_vkCmdCopyImage2 = NULL; PFN_vkCmdCopyImageToBuffer glad_vkCmdCopyImageToBuffer = NULL;+PFN_vkCmdCopyImageToBuffer2 glad_vkCmdCopyImageToBuffer2 = NULL; PFN_vkCmdCopyQueryPoolResults glad_vkCmdCopyQueryPoolResults = NULL; PFN_vkCmdDispatch glad_vkCmdDispatch = NULL; PFN_vkCmdDispatchBase glad_vkCmdDispatchBase = NULL;@@ -54,31 +70,56 @@ PFN_vkCmdDraw glad_vkCmdDraw = NULL; PFN_vkCmdDrawIndexed glad_vkCmdDrawIndexed = NULL; PFN_vkCmdDrawIndexedIndirect glad_vkCmdDrawIndexedIndirect = NULL;+PFN_vkCmdDrawIndexedIndirectCount glad_vkCmdDrawIndexedIndirectCount = NULL; PFN_vkCmdDrawIndirect glad_vkCmdDrawIndirect = NULL;+PFN_vkCmdDrawIndirectCount glad_vkCmdDrawIndirectCount = NULL; PFN_vkCmdEndQuery glad_vkCmdEndQuery = NULL; PFN_vkCmdEndRenderPass glad_vkCmdEndRenderPass = NULL;+PFN_vkCmdEndRenderPass2 glad_vkCmdEndRenderPass2 = NULL;+PFN_vkCmdEndRendering glad_vkCmdEndRendering = NULL; PFN_vkCmdExecuteCommands glad_vkCmdExecuteCommands = NULL; PFN_vkCmdFillBuffer glad_vkCmdFillBuffer = NULL; PFN_vkCmdNextSubpass glad_vkCmdNextSubpass = NULL;+PFN_vkCmdNextSubpass2 glad_vkCmdNextSubpass2 = NULL; PFN_vkCmdPipelineBarrier glad_vkCmdPipelineBarrier = NULL;+PFN_vkCmdPipelineBarrier2 glad_vkCmdPipelineBarrier2 = NULL; PFN_vkCmdPushConstants glad_vkCmdPushConstants = NULL; PFN_vkCmdResetEvent glad_vkCmdResetEvent = NULL;+PFN_vkCmdResetEvent2 glad_vkCmdResetEvent2 = NULL; PFN_vkCmdResetQueryPool glad_vkCmdResetQueryPool = NULL; PFN_vkCmdResolveImage glad_vkCmdResolveImage = NULL;+PFN_vkCmdResolveImage2 glad_vkCmdResolveImage2 = NULL; PFN_vkCmdSetBlendConstants glad_vkCmdSetBlendConstants = NULL;+PFN_vkCmdSetCullMode glad_vkCmdSetCullMode = NULL; PFN_vkCmdSetDepthBias glad_vkCmdSetDepthBias = NULL;+PFN_vkCmdSetDepthBiasEnable glad_vkCmdSetDepthBiasEnable = NULL; PFN_vkCmdSetDepthBounds glad_vkCmdSetDepthBounds = NULL;+PFN_vkCmdSetDepthBoundsTestEnable glad_vkCmdSetDepthBoundsTestEnable = NULL;+PFN_vkCmdSetDepthCompareOp glad_vkCmdSetDepthCompareOp = NULL;+PFN_vkCmdSetDepthTestEnable glad_vkCmdSetDepthTestEnable = NULL;+PFN_vkCmdSetDepthWriteEnable glad_vkCmdSetDepthWriteEnable = NULL; PFN_vkCmdSetDeviceMask glad_vkCmdSetDeviceMask = NULL; PFN_vkCmdSetEvent glad_vkCmdSetEvent = NULL;+PFN_vkCmdSetEvent2 glad_vkCmdSetEvent2 = NULL;+PFN_vkCmdSetFrontFace glad_vkCmdSetFrontFace = NULL; PFN_vkCmdSetLineWidth glad_vkCmdSetLineWidth = NULL;+PFN_vkCmdSetPrimitiveRestartEnable glad_vkCmdSetPrimitiveRestartEnable = NULL;+PFN_vkCmdSetPrimitiveTopology glad_vkCmdSetPrimitiveTopology = NULL;+PFN_vkCmdSetRasterizerDiscardEnable glad_vkCmdSetRasterizerDiscardEnable = NULL; PFN_vkCmdSetScissor glad_vkCmdSetScissor = NULL;+PFN_vkCmdSetScissorWithCount glad_vkCmdSetScissorWithCount = NULL; PFN_vkCmdSetStencilCompareMask glad_vkCmdSetStencilCompareMask = NULL;+PFN_vkCmdSetStencilOp glad_vkCmdSetStencilOp = NULL; PFN_vkCmdSetStencilReference glad_vkCmdSetStencilReference = NULL;+PFN_vkCmdSetStencilTestEnable glad_vkCmdSetStencilTestEnable = NULL; PFN_vkCmdSetStencilWriteMask glad_vkCmdSetStencilWriteMask = NULL; PFN_vkCmdSetViewport glad_vkCmdSetViewport = NULL;+PFN_vkCmdSetViewportWithCount glad_vkCmdSetViewportWithCount = NULL; PFN_vkCmdUpdateBuffer glad_vkCmdUpdateBuffer = NULL; PFN_vkCmdWaitEvents glad_vkCmdWaitEvents = NULL;+PFN_vkCmdWaitEvents2 glad_vkCmdWaitEvents2 = NULL; PFN_vkCmdWriteTimestamp glad_vkCmdWriteTimestamp = NULL;+PFN_vkCmdWriteTimestamp2 glad_vkCmdWriteTimestamp2 = NULL; PFN_vkCreateBuffer glad_vkCreateBuffer = NULL; PFN_vkCreateBufferView glad_vkCreateBufferView = NULL; PFN_vkCreateCommandPool glad_vkCreateCommandPool = NULL;@@ -97,8 +138,10 @@ PFN_vkCreateInstance glad_vkCreateInstance = NULL; PFN_vkCreatePipelineCache glad_vkCreatePipelineCache = NULL; PFN_vkCreatePipelineLayout glad_vkCreatePipelineLayout = NULL;+PFN_vkCreatePrivateDataSlot glad_vkCreatePrivateDataSlot = NULL; PFN_vkCreateQueryPool glad_vkCreateQueryPool = NULL; PFN_vkCreateRenderPass glad_vkCreateRenderPass = NULL;+PFN_vkCreateRenderPass2 glad_vkCreateRenderPass2 = NULL; PFN_vkCreateSampler glad_vkCreateSampler = NULL; PFN_vkCreateSamplerYcbcrConversion glad_vkCreateSamplerYcbcrConversion = NULL; PFN_vkCreateSemaphore glad_vkCreateSemaphore = NULL;@@ -122,6 +165,7 @@ PFN_vkDestroyPipeline glad_vkDestroyPipeline = NULL; PFN_vkDestroyPipelineCache glad_vkDestroyPipelineCache = NULL; PFN_vkDestroyPipelineLayout glad_vkDestroyPipelineLayout = NULL;+PFN_vkDestroyPrivateDataSlot glad_vkDestroyPrivateDataSlot = NULL; PFN_vkDestroyQueryPool glad_vkDestroyQueryPool = NULL; PFN_vkDestroyRenderPass glad_vkDestroyRenderPass = NULL; PFN_vkDestroySampler glad_vkDestroySampler = NULL;@@ -143,13 +187,19 @@ PFN_vkFreeCommandBuffers glad_vkFreeCommandBuffers = NULL; PFN_vkFreeDescriptorSets glad_vkFreeDescriptorSets = NULL; PFN_vkFreeMemory glad_vkFreeMemory = NULL;+PFN_vkGetBufferDeviceAddress glad_vkGetBufferDeviceAddress = NULL; PFN_vkGetBufferMemoryRequirements glad_vkGetBufferMemoryRequirements = NULL; PFN_vkGetBufferMemoryRequirements2 glad_vkGetBufferMemoryRequirements2 = NULL;+PFN_vkGetBufferOpaqueCaptureAddress glad_vkGetBufferOpaqueCaptureAddress = NULL; PFN_vkGetDescriptorSetLayoutSupport glad_vkGetDescriptorSetLayoutSupport = NULL;+PFN_vkGetDeviceBufferMemoryRequirements glad_vkGetDeviceBufferMemoryRequirements = NULL; PFN_vkGetDeviceGroupPeerMemoryFeatures glad_vkGetDeviceGroupPeerMemoryFeatures = NULL; PFN_vkGetDeviceGroupPresentCapabilitiesKHR glad_vkGetDeviceGroupPresentCapabilitiesKHR = NULL; PFN_vkGetDeviceGroupSurfacePresentModesKHR glad_vkGetDeviceGroupSurfacePresentModesKHR = NULL;+PFN_vkGetDeviceImageMemoryRequirements glad_vkGetDeviceImageMemoryRequirements = NULL;+PFN_vkGetDeviceImageSparseMemoryRequirements glad_vkGetDeviceImageSparseMemoryRequirements = NULL; PFN_vkGetDeviceMemoryCommitment glad_vkGetDeviceMemoryCommitment = NULL;+PFN_vkGetDeviceMemoryOpaqueCaptureAddress glad_vkGetDeviceMemoryOpaqueCaptureAddress = NULL; PFN_vkGetDeviceProcAddr glad_vkGetDeviceProcAddr = NULL; PFN_vkGetDeviceQueue glad_vkGetDeviceQueue = NULL; PFN_vkGetDeviceQueue2 glad_vkGetDeviceQueue2 = NULL;@@ -183,9 +233,12 @@ PFN_vkGetPhysicalDeviceSurfaceFormatsKHR glad_vkGetPhysicalDeviceSurfaceFormatsKHR = NULL; PFN_vkGetPhysicalDeviceSurfacePresentModesKHR glad_vkGetPhysicalDeviceSurfacePresentModesKHR = NULL; PFN_vkGetPhysicalDeviceSurfaceSupportKHR glad_vkGetPhysicalDeviceSurfaceSupportKHR = NULL;+PFN_vkGetPhysicalDeviceToolProperties glad_vkGetPhysicalDeviceToolProperties = NULL; PFN_vkGetPipelineCacheData glad_vkGetPipelineCacheData = NULL;+PFN_vkGetPrivateData glad_vkGetPrivateData = NULL; PFN_vkGetQueryPoolResults glad_vkGetQueryPoolResults = NULL; PFN_vkGetRenderAreaGranularity glad_vkGetRenderAreaGranularity = NULL;+PFN_vkGetSemaphoreCounterValue glad_vkGetSemaphoreCounterValue = NULL; PFN_vkGetSwapchainImagesKHR glad_vkGetSwapchainImagesKHR = NULL; PFN_vkInvalidateMappedMemoryRanges glad_vkInvalidateMappedMemoryRanges = NULL; PFN_vkMapMemory glad_vkMapMemory = NULL;@@ -193,216 +246,277 @@ PFN_vkQueueBindSparse glad_vkQueueBindSparse = NULL; PFN_vkQueuePresentKHR glad_vkQueuePresentKHR = NULL; PFN_vkQueueSubmit glad_vkQueueSubmit = NULL;+PFN_vkQueueSubmit2 glad_vkQueueSubmit2 = 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_vkResetQueryPool glad_vkResetQueryPool = NULL; PFN_vkSetEvent glad_vkSetEvent = NULL;+PFN_vkSetPrivateData glad_vkSetPrivateData = NULL;+PFN_vkSignalSemaphore glad_vkSignalSemaphore = 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;+PFN_vkWaitSemaphores glad_vkWaitSemaphores = 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);+    glad_vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers) load(userptr, "vkAllocateCommandBuffers");+    glad_vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets) load(userptr, "vkAllocateDescriptorSets");+    glad_vkAllocateMemory = (PFN_vkAllocateMemory) load(userptr, "vkAllocateMemory");+    glad_vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer) load(userptr, "vkBeginCommandBuffer");+    glad_vkBindBufferMemory = (PFN_vkBindBufferMemory) load(userptr, "vkBindBufferMemory");+    glad_vkBindImageMemory = (PFN_vkBindImageMemory) load(userptr, "vkBindImageMemory");+    glad_vkCmdBeginQuery = (PFN_vkCmdBeginQuery) load(userptr, "vkCmdBeginQuery");+    glad_vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass) load(userptr, "vkCmdBeginRenderPass");+    glad_vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets) load(userptr, "vkCmdBindDescriptorSets");+    glad_vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer) load(userptr, "vkCmdBindIndexBuffer");+    glad_vkCmdBindPipeline = (PFN_vkCmdBindPipeline) load(userptr, "vkCmdBindPipeline");+    glad_vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers) load(userptr, "vkCmdBindVertexBuffers");+    glad_vkCmdBlitImage = (PFN_vkCmdBlitImage) load(userptr, "vkCmdBlitImage");+    glad_vkCmdClearAttachments = (PFN_vkCmdClearAttachments) load(userptr, "vkCmdClearAttachments");+    glad_vkCmdClearColorImage = (PFN_vkCmdClearColorImage) load(userptr, "vkCmdClearColorImage");+    glad_vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage) load(userptr, "vkCmdClearDepthStencilImage");+    glad_vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer) load(userptr, "vkCmdCopyBuffer");+    glad_vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage) load(userptr, "vkCmdCopyBufferToImage");+    glad_vkCmdCopyImage = (PFN_vkCmdCopyImage) load(userptr, "vkCmdCopyImage");+    glad_vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer) load(userptr, "vkCmdCopyImageToBuffer");+    glad_vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults) load(userptr, "vkCmdCopyQueryPoolResults");+    glad_vkCmdDispatch = (PFN_vkCmdDispatch) load(userptr, "vkCmdDispatch");+    glad_vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect) load(userptr, "vkCmdDispatchIndirect");+    glad_vkCmdDraw = (PFN_vkCmdDraw) load(userptr, "vkCmdDraw");+    glad_vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed) load(userptr, "vkCmdDrawIndexed");+    glad_vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect) load(userptr, "vkCmdDrawIndexedIndirect");+    glad_vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect) load(userptr, "vkCmdDrawIndirect");+    glad_vkCmdEndQuery = (PFN_vkCmdEndQuery) load(userptr, "vkCmdEndQuery");+    glad_vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass) load(userptr, "vkCmdEndRenderPass");+    glad_vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands) load(userptr, "vkCmdExecuteCommands");+    glad_vkCmdFillBuffer = (PFN_vkCmdFillBuffer) load(userptr, "vkCmdFillBuffer");+    glad_vkCmdNextSubpass = (PFN_vkCmdNextSubpass) load(userptr, "vkCmdNextSubpass");+    glad_vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier) load(userptr, "vkCmdPipelineBarrier");+    glad_vkCmdPushConstants = (PFN_vkCmdPushConstants) load(userptr, "vkCmdPushConstants");+    glad_vkCmdResetEvent = (PFN_vkCmdResetEvent) load(userptr, "vkCmdResetEvent");+    glad_vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool) load(userptr, "vkCmdResetQueryPool");+    glad_vkCmdResolveImage = (PFN_vkCmdResolveImage) load(userptr, "vkCmdResolveImage");+    glad_vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants) load(userptr, "vkCmdSetBlendConstants");+    glad_vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias) load(userptr, "vkCmdSetDepthBias");+    glad_vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds) load(userptr, "vkCmdSetDepthBounds");+    glad_vkCmdSetEvent = (PFN_vkCmdSetEvent) load(userptr, "vkCmdSetEvent");+    glad_vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth) load(userptr, "vkCmdSetLineWidth");+    glad_vkCmdSetScissor = (PFN_vkCmdSetScissor) load(userptr, "vkCmdSetScissor");+    glad_vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask) load(userptr, "vkCmdSetStencilCompareMask");+    glad_vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference) load(userptr, "vkCmdSetStencilReference");+    glad_vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask) load(userptr, "vkCmdSetStencilWriteMask");+    glad_vkCmdSetViewport = (PFN_vkCmdSetViewport) load(userptr, "vkCmdSetViewport");+    glad_vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer) load(userptr, "vkCmdUpdateBuffer");+    glad_vkCmdWaitEvents = (PFN_vkCmdWaitEvents) load(userptr, "vkCmdWaitEvents");+    glad_vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp) load(userptr, "vkCmdWriteTimestamp");+    glad_vkCreateBuffer = (PFN_vkCreateBuffer) load(userptr, "vkCreateBuffer");+    glad_vkCreateBufferView = (PFN_vkCreateBufferView) load(userptr, "vkCreateBufferView");+    glad_vkCreateCommandPool = (PFN_vkCreateCommandPool) load(userptr, "vkCreateCommandPool");+    glad_vkCreateComputePipelines = (PFN_vkCreateComputePipelines) load(userptr, "vkCreateComputePipelines");+    glad_vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool) load(userptr, "vkCreateDescriptorPool");+    glad_vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout) load(userptr, "vkCreateDescriptorSetLayout");+    glad_vkCreateDevice = (PFN_vkCreateDevice) load(userptr, "vkCreateDevice");+    glad_vkCreateEvent = (PFN_vkCreateEvent) load(userptr, "vkCreateEvent");+    glad_vkCreateFence = (PFN_vkCreateFence) load(userptr, "vkCreateFence");+    glad_vkCreateFramebuffer = (PFN_vkCreateFramebuffer) load(userptr, "vkCreateFramebuffer");+    glad_vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines) load(userptr, "vkCreateGraphicsPipelines");+    glad_vkCreateImage = (PFN_vkCreateImage) load(userptr, "vkCreateImage");+    glad_vkCreateImageView = (PFN_vkCreateImageView) load(userptr, "vkCreateImageView");+    glad_vkCreateInstance = (PFN_vkCreateInstance) load(userptr, "vkCreateInstance");+    glad_vkCreatePipelineCache = (PFN_vkCreatePipelineCache) load(userptr, "vkCreatePipelineCache");+    glad_vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout) load(userptr, "vkCreatePipelineLayout");+    glad_vkCreateQueryPool = (PFN_vkCreateQueryPool) load(userptr, "vkCreateQueryPool");+    glad_vkCreateRenderPass = (PFN_vkCreateRenderPass) load(userptr, "vkCreateRenderPass");+    glad_vkCreateSampler = (PFN_vkCreateSampler) load(userptr, "vkCreateSampler");+    glad_vkCreateSemaphore = (PFN_vkCreateSemaphore) load(userptr, "vkCreateSemaphore");+    glad_vkCreateShaderModule = (PFN_vkCreateShaderModule) load(userptr, "vkCreateShaderModule");+    glad_vkDestroyBuffer = (PFN_vkDestroyBuffer) load(userptr, "vkDestroyBuffer");+    glad_vkDestroyBufferView = (PFN_vkDestroyBufferView) load(userptr, "vkDestroyBufferView");+    glad_vkDestroyCommandPool = (PFN_vkDestroyCommandPool) load(userptr, "vkDestroyCommandPool");+    glad_vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool) load(userptr, "vkDestroyDescriptorPool");+    glad_vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout) load(userptr, "vkDestroyDescriptorSetLayout");+    glad_vkDestroyDevice = (PFN_vkDestroyDevice) load(userptr, "vkDestroyDevice");+    glad_vkDestroyEvent = (PFN_vkDestroyEvent) load(userptr, "vkDestroyEvent");+    glad_vkDestroyFence = (PFN_vkDestroyFence) load(userptr, "vkDestroyFence");+    glad_vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer) load(userptr, "vkDestroyFramebuffer");+    glad_vkDestroyImage = (PFN_vkDestroyImage) load(userptr, "vkDestroyImage");+    glad_vkDestroyImageView = (PFN_vkDestroyImageView) load(userptr, "vkDestroyImageView");+    glad_vkDestroyInstance = (PFN_vkDestroyInstance) load(userptr, "vkDestroyInstance");+    glad_vkDestroyPipeline = (PFN_vkDestroyPipeline) load(userptr, "vkDestroyPipeline");+    glad_vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache) load(userptr, "vkDestroyPipelineCache");+    glad_vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout) load(userptr, "vkDestroyPipelineLayout");+    glad_vkDestroyQueryPool = (PFN_vkDestroyQueryPool) load(userptr, "vkDestroyQueryPool");+    glad_vkDestroyRenderPass = (PFN_vkDestroyRenderPass) load(userptr, "vkDestroyRenderPass");+    glad_vkDestroySampler = (PFN_vkDestroySampler) load(userptr, "vkDestroySampler");+    glad_vkDestroySemaphore = (PFN_vkDestroySemaphore) load(userptr, "vkDestroySemaphore");+    glad_vkDestroyShaderModule = (PFN_vkDestroyShaderModule) load(userptr, "vkDestroyShaderModule");+    glad_vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle) load(userptr, "vkDeviceWaitIdle");+    glad_vkEndCommandBuffer = (PFN_vkEndCommandBuffer) load(userptr, "vkEndCommandBuffer");+    glad_vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties) load(userptr, "vkEnumerateDeviceExtensionProperties");+    glad_vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties) load(userptr, "vkEnumerateDeviceLayerProperties");+    glad_vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties) load(userptr, "vkEnumerateInstanceExtensionProperties");+    glad_vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties) load(userptr, "vkEnumerateInstanceLayerProperties");+    glad_vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices) load(userptr, "vkEnumeratePhysicalDevices");+    glad_vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges) load(userptr, "vkFlushMappedMemoryRanges");+    glad_vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers) load(userptr, "vkFreeCommandBuffers");+    glad_vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets) load(userptr, "vkFreeDescriptorSets");+    glad_vkFreeMemory = (PFN_vkFreeMemory) load(userptr, "vkFreeMemory");+    glad_vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements) load(userptr, "vkGetBufferMemoryRequirements");+    glad_vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment) load(userptr, "vkGetDeviceMemoryCommitment");+    glad_vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr) load(userptr, "vkGetDeviceProcAddr");+    glad_vkGetDeviceQueue = (PFN_vkGetDeviceQueue) load(userptr, "vkGetDeviceQueue");+    glad_vkGetEventStatus = (PFN_vkGetEventStatus) load(userptr, "vkGetEventStatus");+    glad_vkGetFenceStatus = (PFN_vkGetFenceStatus) load(userptr, "vkGetFenceStatus");+    glad_vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements) load(userptr, "vkGetImageMemoryRequirements");+    glad_vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements) load(userptr, "vkGetImageSparseMemoryRequirements");+    glad_vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout) load(userptr, "vkGetImageSubresourceLayout");+    glad_vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr) load(userptr, "vkGetInstanceProcAddr");+    glad_vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures) load(userptr, "vkGetPhysicalDeviceFeatures");+    glad_vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties) load(userptr, "vkGetPhysicalDeviceFormatProperties");+    glad_vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties) load(userptr, "vkGetPhysicalDeviceImageFormatProperties");+    glad_vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties) load(userptr, "vkGetPhysicalDeviceMemoryProperties");+    glad_vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties) load(userptr, "vkGetPhysicalDeviceProperties");+    glad_vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties) load(userptr, "vkGetPhysicalDeviceQueueFamilyProperties");+    glad_vkGetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties) load(userptr, "vkGetPhysicalDeviceSparseImageFormatProperties");+    glad_vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData) load(userptr, "vkGetPipelineCacheData");+    glad_vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults) load(userptr, "vkGetQueryPoolResults");+    glad_vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity) load(userptr, "vkGetRenderAreaGranularity");+    glad_vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges) load(userptr, "vkInvalidateMappedMemoryRanges");+    glad_vkMapMemory = (PFN_vkMapMemory) load(userptr, "vkMapMemory");+    glad_vkMergePipelineCaches = (PFN_vkMergePipelineCaches) load(userptr, "vkMergePipelineCaches");+    glad_vkQueueBindSparse = (PFN_vkQueueBindSparse) load(userptr, "vkQueueBindSparse");+    glad_vkQueueSubmit = (PFN_vkQueueSubmit) load(userptr, "vkQueueSubmit");+    glad_vkQueueWaitIdle = (PFN_vkQueueWaitIdle) load(userptr, "vkQueueWaitIdle");+    glad_vkResetCommandBuffer = (PFN_vkResetCommandBuffer) load(userptr, "vkResetCommandBuffer");+    glad_vkResetCommandPool = (PFN_vkResetCommandPool) load(userptr, "vkResetCommandPool");+    glad_vkResetDescriptorPool = (PFN_vkResetDescriptorPool) load(userptr, "vkResetDescriptorPool");+    glad_vkResetEvent = (PFN_vkResetEvent) load(userptr, "vkResetEvent");+    glad_vkResetFences = (PFN_vkResetFences) load(userptr, "vkResetFences");+    glad_vkSetEvent = (PFN_vkSetEvent) load(userptr, "vkSetEvent");+    glad_vkUnmapMemory = (PFN_vkUnmapMemory) load(userptr, "vkUnmapMemory");+    glad_vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets) load(userptr, "vkUpdateDescriptorSets");+    glad_vkWaitForFences = (PFN_vkWaitForFences) load(userptr, "vkWaitForFences"); } 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);+    glad_vkBindBufferMemory2 = (PFN_vkBindBufferMemory2) load(userptr, "vkBindBufferMemory2");+    glad_vkBindImageMemory2 = (PFN_vkBindImageMemory2) load(userptr, "vkBindImageMemory2");+    glad_vkCmdDispatchBase = (PFN_vkCmdDispatchBase) load(userptr, "vkCmdDispatchBase");+    glad_vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask) load(userptr, "vkCmdSetDeviceMask");+    glad_vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate) load(userptr, "vkCreateDescriptorUpdateTemplate");+    glad_vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion) load(userptr, "vkCreateSamplerYcbcrConversion");+    glad_vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate) load(userptr, "vkDestroyDescriptorUpdateTemplate");+    glad_vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion) load(userptr, "vkDestroySamplerYcbcrConversion");+    glad_vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion) load(userptr, "vkEnumerateInstanceVersion");+    glad_vkEnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups) load(userptr, "vkEnumeratePhysicalDeviceGroups");+    glad_vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2) load(userptr, "vkGetBufferMemoryRequirements2");+    glad_vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport) load(userptr, "vkGetDescriptorSetLayoutSupport");+    glad_vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures) load(userptr, "vkGetDeviceGroupPeerMemoryFeatures");+    glad_vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2) load(userptr, "vkGetDeviceQueue2");+    glad_vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2) load(userptr, "vkGetImageMemoryRequirements2");+    glad_vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2) load(userptr, "vkGetImageSparseMemoryRequirements2");+    glad_vkGetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties) load(userptr, "vkGetPhysicalDeviceExternalBufferProperties");+    glad_vkGetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties) load(userptr, "vkGetPhysicalDeviceExternalFenceProperties");+    glad_vkGetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties) load(userptr, "vkGetPhysicalDeviceExternalSemaphoreProperties");+    glad_vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2) load(userptr, "vkGetPhysicalDeviceFeatures2");+    glad_vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2) load(userptr, "vkGetPhysicalDeviceFormatProperties2");+    glad_vkGetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2) load(userptr, "vkGetPhysicalDeviceImageFormatProperties2");+    glad_vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2) load(userptr, "vkGetPhysicalDeviceMemoryProperties2");+    glad_vkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2) load(userptr, "vkGetPhysicalDeviceProperties2");+    glad_vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2) load(userptr, "vkGetPhysicalDeviceQueueFamilyProperties2");+    glad_vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2) load(userptr, "vkGetPhysicalDeviceSparseImageFormatProperties2");+    glad_vkTrimCommandPool = (PFN_vkTrimCommandPool) load(userptr, "vkTrimCommandPool");+    glad_vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate) load(userptr, "vkUpdateDescriptorSetWithTemplate"); }+static void glad_vk_load_VK_VERSION_1_2( GLADuserptrloadfunc load, void* userptr) {+    if(!GLAD_VK_VERSION_1_2) return;+    glad_vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2) load(userptr, "vkCmdBeginRenderPass2");+    glad_vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount) load(userptr, "vkCmdDrawIndexedIndirectCount");+    glad_vkCmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount) load(userptr, "vkCmdDrawIndirectCount");+    glad_vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2) load(userptr, "vkCmdEndRenderPass2");+    glad_vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2) load(userptr, "vkCmdNextSubpass2");+    glad_vkCreateRenderPass2 = (PFN_vkCreateRenderPass2) load(userptr, "vkCreateRenderPass2");+    glad_vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress) load(userptr, "vkGetBufferDeviceAddress");+    glad_vkGetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress) load(userptr, "vkGetBufferOpaqueCaptureAddress");+    glad_vkGetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress) load(userptr, "vkGetDeviceMemoryOpaqueCaptureAddress");+    glad_vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue) load(userptr, "vkGetSemaphoreCounterValue");+    glad_vkResetQueryPool = (PFN_vkResetQueryPool) load(userptr, "vkResetQueryPool");+    glad_vkSignalSemaphore = (PFN_vkSignalSemaphore) load(userptr, "vkSignalSemaphore");+    glad_vkWaitSemaphores = (PFN_vkWaitSemaphores) load(userptr, "vkWaitSemaphores");+}+static void glad_vk_load_VK_VERSION_1_3( GLADuserptrloadfunc load, void* userptr) {+    if(!GLAD_VK_VERSION_1_3) return;+    glad_vkCmdBeginRendering = (PFN_vkCmdBeginRendering) load(userptr, "vkCmdBeginRendering");+    glad_vkCmdBindVertexBuffers2 = (PFN_vkCmdBindVertexBuffers2) load(userptr, "vkCmdBindVertexBuffers2");+    glad_vkCmdBlitImage2 = (PFN_vkCmdBlitImage2) load(userptr, "vkCmdBlitImage2");+    glad_vkCmdCopyBuffer2 = (PFN_vkCmdCopyBuffer2) load(userptr, "vkCmdCopyBuffer2");+    glad_vkCmdCopyBufferToImage2 = (PFN_vkCmdCopyBufferToImage2) load(userptr, "vkCmdCopyBufferToImage2");+    glad_vkCmdCopyImage2 = (PFN_vkCmdCopyImage2) load(userptr, "vkCmdCopyImage2");+    glad_vkCmdCopyImageToBuffer2 = (PFN_vkCmdCopyImageToBuffer2) load(userptr, "vkCmdCopyImageToBuffer2");+    glad_vkCmdEndRendering = (PFN_vkCmdEndRendering) load(userptr, "vkCmdEndRendering");+    glad_vkCmdPipelineBarrier2 = (PFN_vkCmdPipelineBarrier2) load(userptr, "vkCmdPipelineBarrier2");+    glad_vkCmdResetEvent2 = (PFN_vkCmdResetEvent2) load(userptr, "vkCmdResetEvent2");+    glad_vkCmdResolveImage2 = (PFN_vkCmdResolveImage2) load(userptr, "vkCmdResolveImage2");+    glad_vkCmdSetCullMode = (PFN_vkCmdSetCullMode) load(userptr, "vkCmdSetCullMode");+    glad_vkCmdSetDepthBiasEnable = (PFN_vkCmdSetDepthBiasEnable) load(userptr, "vkCmdSetDepthBiasEnable");+    glad_vkCmdSetDepthBoundsTestEnable = (PFN_vkCmdSetDepthBoundsTestEnable) load(userptr, "vkCmdSetDepthBoundsTestEnable");+    glad_vkCmdSetDepthCompareOp = (PFN_vkCmdSetDepthCompareOp) load(userptr, "vkCmdSetDepthCompareOp");+    glad_vkCmdSetDepthTestEnable = (PFN_vkCmdSetDepthTestEnable) load(userptr, "vkCmdSetDepthTestEnable");+    glad_vkCmdSetDepthWriteEnable = (PFN_vkCmdSetDepthWriteEnable) load(userptr, "vkCmdSetDepthWriteEnable");+    glad_vkCmdSetEvent2 = (PFN_vkCmdSetEvent2) load(userptr, "vkCmdSetEvent2");+    glad_vkCmdSetFrontFace = (PFN_vkCmdSetFrontFace) load(userptr, "vkCmdSetFrontFace");+    glad_vkCmdSetPrimitiveRestartEnable = (PFN_vkCmdSetPrimitiveRestartEnable) load(userptr, "vkCmdSetPrimitiveRestartEnable");+    glad_vkCmdSetPrimitiveTopology = (PFN_vkCmdSetPrimitiveTopology) load(userptr, "vkCmdSetPrimitiveTopology");+    glad_vkCmdSetRasterizerDiscardEnable = (PFN_vkCmdSetRasterizerDiscardEnable) load(userptr, "vkCmdSetRasterizerDiscardEnable");+    glad_vkCmdSetScissorWithCount = (PFN_vkCmdSetScissorWithCount) load(userptr, "vkCmdSetScissorWithCount");+    glad_vkCmdSetStencilOp = (PFN_vkCmdSetStencilOp) load(userptr, "vkCmdSetStencilOp");+    glad_vkCmdSetStencilTestEnable = (PFN_vkCmdSetStencilTestEnable) load(userptr, "vkCmdSetStencilTestEnable");+    glad_vkCmdSetViewportWithCount = (PFN_vkCmdSetViewportWithCount) load(userptr, "vkCmdSetViewportWithCount");+    glad_vkCmdWaitEvents2 = (PFN_vkCmdWaitEvents2) load(userptr, "vkCmdWaitEvents2");+    glad_vkCmdWriteTimestamp2 = (PFN_vkCmdWriteTimestamp2) load(userptr, "vkCmdWriteTimestamp2");+    glad_vkCreatePrivateDataSlot = (PFN_vkCreatePrivateDataSlot) load(userptr, "vkCreatePrivateDataSlot");+    glad_vkDestroyPrivateDataSlot = (PFN_vkDestroyPrivateDataSlot) load(userptr, "vkDestroyPrivateDataSlot");+    glad_vkGetDeviceBufferMemoryRequirements = (PFN_vkGetDeviceBufferMemoryRequirements) load(userptr, "vkGetDeviceBufferMemoryRequirements");+    glad_vkGetDeviceImageMemoryRequirements = (PFN_vkGetDeviceImageMemoryRequirements) load(userptr, "vkGetDeviceImageMemoryRequirements");+    glad_vkGetDeviceImageSparseMemoryRequirements = (PFN_vkGetDeviceImageSparseMemoryRequirements) load(userptr, "vkGetDeviceImageSparseMemoryRequirements");+    glad_vkGetPhysicalDeviceToolProperties = (PFN_vkGetPhysicalDeviceToolProperties) load(userptr, "vkGetPhysicalDeviceToolProperties");+    glad_vkGetPrivateData = (PFN_vkGetPrivateData) load(userptr, "vkGetPrivateData");+    glad_vkQueueSubmit2 = (PFN_vkQueueSubmit2) load(userptr, "vkQueueSubmit2");+    glad_vkSetPrivateData = (PFN_vkSetPrivateData) load(userptr, "vkSetPrivateData");+} 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);+    glad_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT) load(userptr, "vkCreateDebugReportCallbackEXT");+    glad_vkDebugReportMessageEXT = (PFN_vkDebugReportMessageEXT) load(userptr, "vkDebugReportMessageEXT");+    glad_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT) load(userptr, "vkDestroyDebugReportCallbackEXT"); } 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);+    glad_vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR) load(userptr, "vkDestroySurfaceKHR");+    glad_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) load(userptr, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");+    glad_vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) load(userptr, "vkGetPhysicalDeviceSurfaceFormatsKHR");+    glad_vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) load(userptr, "vkGetPhysicalDeviceSurfacePresentModesKHR");+    glad_vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR) load(userptr, "vkGetPhysicalDeviceSurfaceSupportKHR"); } 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);+    glad_vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR) load(userptr, "vkAcquireNextImage2KHR");+    glad_vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) load(userptr, "vkAcquireNextImageKHR");+    glad_vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) load(userptr, "vkCreateSwapchainKHR");+    glad_vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) load(userptr, "vkDestroySwapchainKHR");+    glad_vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR) load(userptr, "vkGetDeviceGroupPresentCapabilitiesKHR");+    glad_vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR) load(userptr, "vkGetDeviceGroupSurfacePresentModesKHR");+    glad_vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR) load(userptr, "vkGetPhysicalDevicePresentRectanglesKHR");+    glad_vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) load(userptr, "vkGetSwapchainImagesKHR");+    glad_vkQueuePresentKHR = (PFN_vkQueuePresentKHR) load(userptr, "vkQueuePresentKHR"); }  @@ -411,47 +525,49 @@     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;+    uint32_t max_extension_count = 0;+    uint32_t total_extension_count = 0;+    char **extensions = NULL;+    VkExtensionProperties *ext_properties = NULL;     VkResult result; -    if (vkEnumerateInstanceExtensionProperties == NULL || (physical_device != NULL && vkEnumerateDeviceExtensionProperties == NULL)) {+    if (glad_vkEnumerateInstanceExtensionProperties == NULL || (physical_device != NULL && glad_vkEnumerateDeviceExtensionProperties == NULL)) {         return 0;     } -    result = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, NULL);+    result = glad_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);+        result = glad_vkEnumerateDeviceExtensionProperties(physical_device, NULL, &device_extension_count, NULL);         if (result != VK_SUCCESS) {             return 0;         }     }      total_extension_count = instance_extension_count + device_extension_count;+    if (total_extension_count <= 0) {+        return 0;+    }+     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;+        goto glad_vk_get_extensions_error;     } -    result = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, ext_properties);+    result = glad_vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, ext_properties);     if (result != VK_SUCCESS) {-        free((void*) ext_properties);-        return 0;+        goto glad_vk_get_extensions_error;     }      extensions = (char**) calloc(total_extension_count, sizeof(char*));     if (extensions == NULL) {-        free((void*) ext_properties);-        return 0;+        goto glad_vk_get_extensions_error;     }      for (i = 0; i < instance_extension_count; ++i) {@@ -459,17 +575,16 @@          size_t extension_name_length = strlen(ext.extensionName) + 1;         extensions[i] = (char*) malloc(extension_name_length * sizeof(char));+        if (extensions[i] == NULL) {+            goto glad_vk_get_extensions_error;+        }         memcpy(extensions[i], ext.extensionName, extension_name_length * sizeof(char));     }      if (physical_device != NULL) {-        result = vkEnumerateDeviceExtensionProperties(physical_device, NULL, &device_extension_count, ext_properties);+        result = glad_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;+            goto glad_vk_get_extensions_error;         }          for (i = 0; i < device_extension_count; ++i) {@@ -477,6 +592,9 @@              size_t extension_name_length = strlen(ext.extensionName) + 1;             extensions[instance_extension_count + i] = (char*) malloc(extension_name_length * sizeof(char));+            if (extensions[instance_extension_count + i] == NULL) {+                goto glad_vk_get_extensions_error;+            }             memcpy(extensions[instance_extension_count + i], ext.extensionName, extension_name_length * sizeof(char));         }     }@@ -487,6 +605,16 @@     *out_extensions = extensions;      return 1;++glad_vk_get_extensions_error:+    free((void*) ext_properties);+    if (extensions != NULL) {+        for (i = 0; i < total_extension_count; ++i) {+            free((void*) extensions[i]);+        }+        free(extensions);+    }+    return 0; }  static void glad_vk_free_extensions(uint32_t extension_count, char **extensions) {@@ -503,7 +631,7 @@     uint32_t i;      for (i = 0; i < extension_count; ++i) {-        if(strcmp(name, extensions[i]) == 0) {+        if(extensions[i] != NULL && strcmp(name, extensions[i]) == 0) {             return 1;         }     }@@ -511,7 +639,7 @@     return 0; } -static GLADapiproc glad_vk_get_proc_from_userptr(const char* name, void *userptr) {+static GLADapiproc glad_vk_get_proc_from_userptr(void *userptr, const char* name) {     return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name); } @@ -521,9 +649,12 @@     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_portability_enumeration = glad_vk_has_extension("VK_KHR_portability_enumeration", 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); +    (void) glad_vk_has_extension;+     glad_vk_free_extensions(extension_count, extensions);      return 1;@@ -534,11 +665,11 @@     int minor = 0;  #ifdef VK_VERSION_1_1-    if (vkEnumerateInstanceVersion  != NULL) {+    if (glad_vkEnumerateInstanceVersion != NULL) {         uint32_t version;         VkResult result; -        result = vkEnumerateInstanceVersion(&version);+        result = glad_vkEnumerateInstanceVersion(&version);         if (result == VK_SUCCESS) {             major = (int) VK_VERSION_MAJOR(version);             minor = (int) VK_VERSION_MINOR(version);@@ -546,9 +677,9 @@     } #endif -    if (physical_device != NULL && vkGetPhysicalDeviceProperties  != NULL) {+    if (physical_device != NULL && glad_vkGetPhysicalDeviceProperties != NULL) {         VkPhysicalDeviceProperties properties;-        vkGetPhysicalDeviceProperties(physical_device, &properties);+        glad_vkGetPhysicalDeviceProperties(physical_device, &properties);          major = (int) VK_VERSION_MAJOR(properties.apiVersion);         minor = (int) VK_VERSION_MINOR(properties.apiVersion);@@ -556,6 +687,8 @@      GLAD_VK_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1;     GLAD_VK_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1;+    GLAD_VK_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1;+    GLAD_VK_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1;      return GLAD_MAKE_VERSION(major, minor); }@@ -564,7 +697,7 @@     int version;  #ifdef VK_VERSION_1_1-    vkEnumerateInstanceVersion  = (PFN_vkEnumerateInstanceVersion) load("vkEnumerateInstanceVersion", userptr);+    glad_vkEnumerateInstanceVersion  = (PFN_vkEnumerateInstanceVersion) load(userptr, "vkEnumerateInstanceVersion"); #endif     version = glad_vk_find_core_vulkan( physical_device);     if (!version) {@@ -573,6 +706,8 @@      glad_vk_load_VK_VERSION_1_0(load, userptr);     glad_vk_load_VK_VERSION_1_1(load, userptr);+    glad_vk_load_VK_VERSION_1_2(load, userptr);+    glad_vk_load_VK_VERSION_1_3(load, userptr);      if (!glad_vk_find_extensions_vulkan( physical_device)) return 0;     glad_vk_load_VK_EXT_debug_report(load, userptr);@@ -590,4 +725,9 @@   +  ++#ifdef __cplusplus+}+#endif
glfw/include/GLFW/glfw3native.h view
@@ -74,6 +74,16 @@  *  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.+ *+ *  If you do not want the platform-specific headers to be included, define+ *  `GLFW_NATIVE_INCLUDE_NONE` before including the @ref glfw3native.h header.+ *+ *  @code+ *  #define GLFW_EXPOSE_NATIVE_WIN32+ *  #define GLFW_EXPOSE_NATIVE_WGL+ *  #define GLFW_NATIVE_INCLUDE_NONE+ *  #include <GLFW/glfw3native.h>+ *  @endcode  */  @@ -81,46 +91,73 @@  * 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+#if !defined(GLFW_NATIVE_INCLUDE_NONE)++ #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_KHR_debug 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>  #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;++ #if defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL)+  #if defined(__OBJC__)+   #import <Cocoa/Cocoa.h>+  #else+   #include <ApplicationServices/ApplicationServices.h>+   #include <objc/objc.h>+  #endif  #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+ #if defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX)+  #include <X11/Xlib.h>+  #include <X11/extensions/Xrandr.h>+ #endif + #if 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)+  /* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by+   * default it also acts as an OpenGL header+   * However, glx.h will include gl.h, which will define it unconditionally+   */+  #if defined(GLFW_GLAPIENTRY_DEFINED)+   #undef GLAPIENTRY+   #undef GLFW_GLAPIENTRY_DEFINED+  #endif+  #include <GL/glx.h>+ #endif+ #if defined(GLFW_EXPOSE_NATIVE_EGL)+  #include <EGL/egl.h>+ #endif+ #if defined(GLFW_EXPOSE_NATIVE_OSMESA)+  /* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by+   * default it also acts as an OpenGL header+   * However, osmesa.h will include gl.h, which will define it unconditionally+   */+  #if defined(GLFW_GLAPIENTRY_DEFINED)+   #undef GLAPIENTRY+   #undef GLFW_GLAPIENTRY_DEFINED+  #endif+  #include <GL/osmesa.h>+ #endif++#endif /*GLFW_NATIVE_INCLUDE_NONE*/++ /*************************************************************************  * Functions  *************************************************************************/@@ -132,6 +169,8 @@  *  of the specified monitor, or `NULL` 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.  Access is not  *  synchronized.  *@@ -147,6 +186,8 @@  *  `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` 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.  Access is not  *  synchronized.  *@@ -161,6 +202,16 @@  *  @return The `HWND` of the specified window, or `NULL` if an  *  [error](@ref error_handling) occurred.  *+ *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.+ *+ *  @remark The `HDC` associated with the window can be queried with the+ *  [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc)+ *  function.+ *  @code+ *  HDC dc = GetDC(glfwGetWin32Window(window));+ *  @endcode+ *  This DC is private and does not need to be released.+ *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.  *@@ -177,6 +228,17 @@  *  @return The `HGLRC` of the specified window, or `NULL` if an  *  [error](@ref error_handling) occurred.  *+ *  @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref+ *  GLFW_NOT_INITIALIZED.+ *+ *  @remark The `HDC` associated with the window can be queried with the+ *  [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc)+ *  function.+ *  @code+ *  HDC dc = GetDC(glfwGetWin32Window(window));+ *  @endcode+ *  This DC is private and does not need to be released.+ *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.  *@@ -193,6 +255,8 @@  *  @return The `CGDirectDisplayID` of the specified monitor, or  *  `kCGNullDirectDisplay` 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.  Access is not  *  synchronized.  *@@ -207,6 +271,8 @@  *  @return The `NSWindow` of the specified window, or `nil` 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.  Access is not  *  synchronized.  *@@ -223,6 +289,9 @@  *  @return The `NSOpenGLContext` of the specified window, or `nil` if an  *  [error](@ref error_handling) occurred.  *+ *  @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref+ *  GLFW_NOT_INITIALIZED.+ *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.  *@@ -239,6 +308,8 @@  *  @return The `Display` used by GLFW, or `NULL` 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.  Access is not  *  synchronized.  *@@ -253,6 +324,8 @@  *  @return The `RRCrtc` of the specified monitor, or `None` 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.  Access is not  *  synchronized.  *@@ -267,6 +340,8 @@  *  @return The `RROutput` of the specified monitor, or `None` 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.  Access is not  *  synchronized.  *@@ -281,6 +356,8 @@  *  @return The `Window` of the specified window, or `None` 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.  Access is not  *  synchronized.  *@@ -347,6 +424,9 @@  *  @return The `GLXContext` of the specified window, or `NULL` if an  *  [error](@ref error_handling) occurred.  *+ *  @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref+ *  GLFW_NOT_INITIALIZED.+ *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.  *@@ -361,6 +441,9 @@  *  @return The `GLXWindow` of the specified window, or `None` if an  *  [error](@ref error_handling) occurred.  *+ *  @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref+ *  GLFW_NOT_INITIALIZED.+ *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.  *@@ -377,6 +460,8 @@  *  @return The `struct wl_display*` used by GLFW, or `NULL` 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.  Access is not  *  synchronized.  *@@ -391,6 +476,8 @@  *  @return The `struct wl_output*` of the specified monitor, or `NULL` 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.  Access is not  *  synchronized.  *@@ -405,6 +492,8 @@  *  @return The main `struct wl_surface*` of the specified window, or `NULL` 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.  Access is not  *  synchronized.  *@@ -421,6 +510,11 @@  *  @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an  *  [error](@ref error_handling) occurred.  *+ *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.+ *+ *  @remark Because EGL is initialized on demand, this function will return+ *  `EGL_NO_DISPLAY` until the first context has been created via EGL.+ *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.  *@@ -435,6 +529,9 @@  *  @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an  *  [error](@ref error_handling) occurred.  *+ *  @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref+ *  GLFW_NOT_INITIALIZED.+ *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.  *@@ -449,6 +546,9 @@  *  @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an  *  [error](@ref error_handling) occurred.  *+ *  @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref+ *  GLFW_NOT_INITIALIZED.+ *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.  *@@ -472,6 +572,9 @@  *  @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an  *  [error](@ref error_handling) occurred.  *+ *  @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref+ *  GLFW_NOT_INITIALIZED.+ *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.  *@@ -493,6 +596,9 @@  *  @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an  *  [error](@ref error_handling) occurred.  *+ *  @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref+ *  GLFW_NOT_INITIALIZED.+ *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.  *@@ -506,6 +612,9 @@  *  *  @return The `OSMesaContext` of the specified window, or `NULL` if an  *  [error](@ref error_handling) occurred.+ *+ *  @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref+ *  GLFW_NOT_INITIALIZED.  *  *  @thread_safety This function may be called from any thread.  Access is not  *  synchronized.
glfw/src/linux_joystick.h view
@@ -32,6 +32,7 @@ #define _GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE _GLFWlibraryLinux  linjs  #define _GLFW_PLATFORM_MAPPING_NAME "Linux"+#define GLFW_BUILD_LINUX_MAPPINGS  // Linux-specific joystick data //@@ -52,6 +53,7 @@     int                     inotify;     int                     watch;     regex_t                 regex;+    GLFWbool                regexCompiled;     GLFWbool                dropped; } _GLFWlibraryLinux; 
glfw/src/osmesa_context.h view
@@ -66,7 +66,6 @@     int                 width;     int                 height;     void*               buffer;- } _GLFWcontextOSMesa;  // OSMesa-specific global data@@ -82,7 +81,6 @@     PFN_OSMesaGetColorBuffer        GetColorBuffer;     PFN_OSMesaGetDepthBuffer        GetDepthBuffer;     PFN_OSMesaGetProcAddress        GetProcAddress;- } _GLFWlibraryOSMesa;  
glfw/src/posix_thread.h view
@@ -37,7 +37,6 @@ {     GLFWbool        allocated;     pthread_key_t   key;- } _GLFWtlsPOSIX;  // POSIX-specific mutex data@@ -46,6 +45,5 @@ {     GLFWbool        allocated;     pthread_mutex_t handle;- } _GLFWmutexPOSIX; 
glfw/src/posix_time.h view
@@ -36,7 +36,6 @@ {     GLFWbool    monotonic;     uint64_t    frequency;- } _GLFWtimerPOSIX;  
glfw/src/xkb_unicode.h view
@@ -24,5 +24,7 @@ // //======================================================================== -long _glfwKeySym2Unicode(unsigned int keysym);+#define GLFW_INVALID_CODEPOINT 0xffffffffu++uint32_t _glfwKeySym2Unicode(unsigned int keysym);